diff --git a/.gn b/.gn
index 6dac08f3..adcd41e0 100644
--- a/.gn
+++ b/.gn
@@ -37,7 +37,6 @@
 
   #"//content/*",  # A whole lot of errors.
   "//content/gpu/*",
-  "//content/plugin/*",
   "//content/public/*",
   "//content/renderer/*",
 
diff --git a/DEPS b/DEPS
index 55ab2fe..d76ab4e 100644
--- a/DEPS
+++ b/DEPS
@@ -39,11 +39,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': '175cf0e51b9fbb075588c4d29e7e4257cea6f4ad',
+  'skia_revision': '3b37545bc594a96de45eba62dea0ce478750f2a9',
   # 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': 'eb62d68daa2ac84873dc41bc79fb129479bf2666',
+  'v8_revision': 'ca4a86f46f3af38ec8b65a2046eabdee68f4c880',
   # 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.
@@ -87,7 +87,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling NaCl
   # and whatever else without interference from each other.
-  'nacl_revision': '105c60962211bb902cb6da0d714d1096f8dabc04',
+  'nacl_revision': 'bdf73e78fc501ba9d914f23d2686e1add56566f9',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling dEQP
   # and whatever else without interference from each other.
@@ -100,7 +100,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': '9f41b8df8242a3e553009ca2500c180377555df8',
+  'catapult_revision': '6704711c18be5be939b32012ef8fb82d93e323af',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -154,7 +154,7 @@
     Var('chromium_git') + '/external/snappy.git' + '@' + '762bb32f0c9d2f31ba4958c7c0933d22e80c20bf',
 
   'src/tools/gyp':
-    Var('chromium_git') + '/external/gyp.git' + '@' + '697933c2e3b3ffdd6949df3c2fa3613489e01175',
+    Var('chromium_git') + '/external/gyp.git' + '@' + '4ec6c4e3a94bd04a6da2858163d40b2429b8aad1',
 
   'src/tools/swarming_client':
    Var('chromium_git') + '/external/swarming.client.git' + '@' +  Var('swarming_revision'),
diff --git a/WATCHLISTS b/WATCHLISTS
index d2d9e098..d50618f 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -1514,10 +1514,7 @@
                    'rouslan+spell@chromium.org'],
     'streams': ['zork+watch@chromium.org'],
     'styleguide': ['danakj+watch@chromium.org', 'jbroman+cpp@chromium.org'],
-    'sync': ['tim+watch@chromium.org',
-             'maxbogue+watch@chromium.org',
-             'plaree+watch@chromium.org',
-             'zea+watch@chromium.org'],
+    'sync': ['sync-reviews@chromium.org'],
     'syncfs': ['kinuko+fileapi@chromium.org',
                'nhiroki@chromium.org',
                'tzik@chromium.org'],
diff --git a/android_webview/OWNERS b/android_webview/OWNERS
index ec9174a..e499c6a7 100644
--- a/android_webview/OWNERS
+++ b/android_webview/OWNERS
@@ -1,5 +1,4 @@
 boliu@chromium.org
 michaelbai@chromium.org
-mnaganov@chromium.org
 sgurun@chromium.org
 torne@chromium.org
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
index 85cb2940..fabd6a5 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -125,19 +125,14 @@
 
 void BrowserViewRenderer::TrimMemory() {
   DCHECK(ui_task_runner_->BelongsToCurrentThread());
-  // Nothing to drop.
-  if (!compositor_ || !hardware_enabled_)
-    return;
-
   TRACE_EVENT0("android_webview", "BrowserViewRenderer::TrimMemory");
-
   // Just set the memory limit to 0 and drop all tiles. This will be reset to
   // normal levels in the next DrawGL call.
   // TODO(hush): need to setMemoryPolicy to 0 for non-current compositors too.
   // But WebView only has non-current compositors temporarily. So don't have to
   // do it now.
   if (!offscreen_pre_raster_)
-    compositor_->SetMemoryPolicy(0u);
+    ReleaseHardware();
 }
 
 void BrowserViewRenderer::UpdateMemoryPolicy() {
@@ -404,11 +399,8 @@
 
 void BrowserViewRenderer::OnDetachedFromWindow() {
   TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow");
-  hardware_enabled_ = false;
   attached_to_window_ = false;
-  ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI());
-  ReturnResourceFromParent();
-  UpdateMemoryPolicy();
+  ReleaseHardware();
   UpdateCompositorIsActive();
 }
 
@@ -425,6 +417,14 @@
   compositor_->OnComputeScroll(animation_time);
 }
 
+void BrowserViewRenderer::ReleaseHardware() {
+  ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI());
+  ReturnResourceFromParent();
+  DCHECK(shared_renderer_state_->ReturnedResourcesEmptyOnUI());
+  hardware_enabled_ = false;
+  UpdateMemoryPolicy();
+}
+
 bool BrowserViewRenderer::IsVisible() const {
   // Ignore |window_visible_| if |attached_to_window_| is false.
   return view_visible_ && (!attached_to_window_ || window_visible_);
diff --git a/android_webview/browser/browser_view_renderer.h b/android_webview/browser/browser_view_renderer.h
index b060a06..3d06452 100644
--- a/android_webview/browser/browser_view_renderer.h
+++ b/android_webview/browser/browser_view_renderer.h
@@ -135,6 +135,7 @@
 
   void ReturnUnusedResource(std::unique_ptr<ChildFrame> frame);
   void ReturnResourceFromParent();
+  void ReleaseHardware();
 
   gfx::Vector2d max_scroll_offset() const;
 
diff --git a/android_webview/tools/apk_merger.py b/android_webview/tools/apk_merger.py
index 7851fe5c..b07371b 100755
--- a/android_webview/tools/apk_merger.py
+++ b/android_webview/tools/apk_merger.py
@@ -15,6 +15,7 @@
 import tempfile
 import argparse
 import subprocess
+import re
 
 SRC_DIR = os.path.join(os.path.dirname(__file__), '..', '..')
 SRC_DIR = os.path.abspath(SRC_DIR)
@@ -141,14 +142,87 @@
   except build_utils.CalledProcessError as e:
     raise ApkMergeFailure('Failed to align APK: ' + e.output)
 
+def GetSecondaryAbi(apk_zipfile, shared_library):
+  ret = ''
+  for name in apk_zipfile.namelist():
+    if os.path.basename(name) == shared_library:
+      abi = re.search('(^lib/)(.+)(/' + shared_library + '$)', name).group(2)
+      # Intentionally not to add 64bit abi because they are not used.
+      if abi == 'armeabi-v7a' or abi == 'armeabi':
+        ret = 'arm64-v8a'
+      elif abi == 'mips':
+        ret = 'mips64'
+      elif abi == 'x86':
+        ret = 'x86_64'
+      else:
+        raise ApkMergeFailure('Unsupported abi ' + abi)
+  if ret == '':
+    raise ApkMergeFailure('Failed to find secondary abi')
+  return ret
+
+
+def MergeBinaries(apk, out_apk, secondary_abi_out_dir, shared_library):
+  shutil.copyfile(apk, out_apk)
+  with zipfile.ZipFile(out_apk, 'a') as apk_zip:
+    secondary_abi = GetSecondaryAbi(apk_zip, shared_library)
+    build_utils.AddToZipHermetic(
+        apk_zip,
+        'lib/%s/%s' % (secondary_abi, shared_library),
+        src_path = os.path.join(secondary_abi_out_dir, shared_library),
+        compress = False)
+    build_utils.AddToZipHermetic(
+        apk_zip,
+        'assets/%s' % 'snapshot_blob_64.bin',
+        src_path = os.path.join(secondary_abi_out_dir, 'snapshot_blob.bin'),
+        compress = False)
+    build_utils.AddToZipHermetic(
+        apk_zip,
+        'assets/%s' % 'natives_blob_64.bin',
+        src_path = os.path.join(secondary_abi_out_dir, 'natives_blob.bin'),
+        compress = False)
+
+
+def MergeApk(args, tmp_apk, tmp_dir_32, tmp_dir_64):
+  # Expected files to copy from 32- to 64-bit APK together with an extra flag
+  # setting the compression level of the file
+  expected_files = {'snapshot_blob_32.bin': ['-0'],
+                    'natives_blob_32.bin': ['-0'],
+                    args.shared_library: []}
+
+  if args.uncompress_shared_libraries:
+    expected_files[args.shared_library] += ['-0']
+
+  shutil.copyfile(args.apk_64bit, tmp_apk)
+
+  # need to unpack APKs to compare their contents
+  UnpackApk(args.apk_64bit, tmp_dir_64)
+  UnpackApk(args.apk_32bit, tmp_dir_32)
+
+  # TODO(sgurun) remove WebViewPlatformBridge.apk from this list crbug/580678
+  dcmp = filecmp.dircmp(
+      tmp_dir_64,
+      tmp_dir_32,
+      ignore=['META-INF', 'AndroidManifest.xml', 'WebViewPlatformBridge.apk'])
+
+  diff_files = GetDiffFiles(dcmp, tmp_dir_32)
+
+  # Check that diff_files match exactly those files we want to insert into
+  # the 64-bit APK.
+  CheckFilesExpected(diff_files, expected_files)
+
+  RemoveMetafiles(tmp_apk)
+
+  AddDiffFiles(diff_files, tmp_dir_32, tmp_apk, expected_files)
+
 
 def main():
   parser = argparse.ArgumentParser(
       description='Merge a 32-bit APK into a 64-bit APK')
   # Using type=os.path.abspath converts file paths to absolute paths so that
   # we can change working directory without affecting these paths
-  parser.add_argument('--apk_32bit', required=True, type=os.path.abspath)
-  parser.add_argument('--apk_64bit', required=True, type=os.path.abspath)
+  parser.add_argument('--apk_32bit', type=os.path.abspath)
+  parser.add_argument('--apk_64bit', type=os.path.abspath)
+  parser.add_argument('--secondary_abi_out_dir', type=os.path.abspath)
   parser.add_argument('--out_apk', required=True, type=os.path.abspath)
   parser.add_argument('--zipalign_path', required=True, type=os.path.abspath)
   parser.add_argument('--keystore_path', required=True, type=os.path.abspath)
@@ -166,37 +240,18 @@
   signed_tmp_apk = os.path.join(tmp_dir, 'signed.apk')
   new_apk = args.out_apk
 
-  # Expected files to copy from 32- to 64-bit APK together with an extra flag
-  # setting the compression level of the file
-  expected_files = {'snapshot_blob_32.bin': ['-0'],
-                    'natives_blob_32.bin': ['-0'],
-                    args.shared_library: []}
-
-  if args.uncompress_shared_libraries:
-    expected_files[args.shared_library] += ['-0']
-
   try:
-    shutil.copyfile(args.apk_64bit, tmp_apk)
+    # Currently we only support merge 64-bit binaries to 32bit APK.
+    if args.secondary_abi_out_dir:
+      if not args.apk_32bit:
+        raise ExceptionApkMergeFailure('--apk_32bit should be specified')
+      MergeBinaries(args.apk_32bit,
+                    tmp_apk,
+                    args.secondary_abi_out_dir,
+                    args.shared_library)
+    else:
+      MergeApk(args, tmp_apk, tmp_dir_32, tmp_dir_64)
 
-    # need to unpack APKs to compare their contents
-    UnpackApk(args.apk_64bit, tmp_dir_64)
-    UnpackApk(args.apk_32bit, tmp_dir_32)
-
-    # TODO(sgurun) remove WebViewPlatformBridge.apk from this list crbug/580678
-    dcmp = filecmp.dircmp(
-        tmp_dir_64,
-        tmp_dir_32,
-        ignore=['META-INF', 'AndroidManifest.xml', 'WebViewPlatformBridge.apk'])
-
-    diff_files = GetDiffFiles(dcmp, tmp_dir_32)
-
-    # Check that diff_files match exactly those files we want to insert into
-    # the 64-bit APK.
-    CheckFilesExpected(diff_files, expected_files)
-
-    RemoveMetafiles(tmp_apk)
-
-    AddDiffFiles(diff_files, tmp_dir_32, tmp_apk, expected_files)
 
     SignAndAlignApk(tmp_apk, signed_tmp_apk, new_apk, args.zipalign_path,
                     args.keystore_path, args.key_name, args.key_password,
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc
index 7dbff29..7b33091 100644
--- a/ash/mus/shelf_delegate_mus.cc
+++ b/ash/mus/shelf_delegate_mus.cc
@@ -130,6 +130,14 @@
   NOTIMPLEMENTED();
 }
 
+void ShelfDelegateMus::OnShelfAlignmentChanged(Shelf* shelf) {
+  NOTIMPLEMENTED();
+}
+
+void ShelfDelegateMus::OnShelfAutoHideBehaviorChanged(Shelf* shelf) {
+  NOTIMPLEMENTED();
+}
+
 ShelfID ShelfDelegateMus::GetShelfIDForAppID(const std::string& app_id) {
   NOTIMPLEMENTED();
   return 0;
diff --git a/ash/mus/shelf_delegate_mus.h b/ash/mus/shelf_delegate_mus.h
index 333a84d..2c00265 100644
--- a/ash/mus/shelf_delegate_mus.h
+++ b/ash/mus/shelf_delegate_mus.h
@@ -27,6 +27,8 @@
   // ShelfDelegate:
   void OnShelfCreated(Shelf* shelf) override;
   void OnShelfDestroyed(Shelf* shelf) override;
+  void OnShelfAlignmentChanged(Shelf* shelf) override;
+  void OnShelfAutoHideBehaviorChanged(Shelf* shelf) override;
   ShelfID GetShelfIDForAppID(const std::string& app_id) override;
   bool HasShelfIDToAppIDMapping(ShelfID id) const override;
   const std::string& GetAppIDForShelfID(ShelfID id) override;
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc
index 4d1c863..d2f1d0b 100644
--- a/ash/root_window_controller_unittest.cc
+++ b/ash/root_window_controller_unittest.cc
@@ -664,13 +664,6 @@
 
 // Make sure that an event handler exists for entire display area.
 TEST_F(NoSessionRootWindowControllerTest, Event) {
-  // Hide the shelf since it might otherwise get an event target.
-  RootWindowController* controller = Shell::GetPrimaryRootWindowController();
-  ShelfLayoutManager* shelf_layout_manager =
-      controller->GetShelfLayoutManager();
-  shelf_layout_manager->SetAutoHideBehavior(
-      ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
-
   aura::Window* root = Shell::GetPrimaryRootWindow();
   const gfx::Size size = root->bounds().size();
   aura::Window* event_target = root->GetEventHandlerForPoint(gfx::Point(0, 0));
diff --git a/ash/shelf/shelf.cc b/ash/shelf/shelf.cc
index 538510e5..8d96506 100644
--- a/ash/shelf/shelf.cc
+++ b/ash/shelf/shelf.cc
@@ -42,15 +42,15 @@
 Shelf::Shelf(ShelfModel* shelf_model,
              ShelfDelegate* shelf_delegate,
              ShelfWidget* shelf_widget)
-    : shelf_view_(NULL),
-      alignment_(shelf_widget->GetAlignment()),
+    : shelf_view_(nullptr),
+      alignment_(SHELF_ALIGNMENT_BOTTOM),
+      auto_hide_behavior_(SHELF_AUTO_HIDE_BEHAVIOR_NEVER),
       delegate_(shelf_delegate),
       shelf_widget_(shelf_widget) {
   shelf_view_ = new ShelfView(shelf_model, delegate_, this);
   shelf_view_->Init();
   shelf_widget_->GetContentsView()->AddChildView(shelf_view_);
   shelf_widget_->GetNativeView()->SetName(kNativeViewName);
-  delegate_->OnShelfCreated(this);
 }
 
 Shelf::~Shelf() {
@@ -65,25 +65,44 @@
 // static
 Shelf* Shelf::ForWindow(const aura::Window* window) {
   ShelfWidget* shelf_widget = RootWindowController::ForWindow(window)->shelf();
-  return shelf_widget ? shelf_widget->shelf() : NULL;
+  return shelf_widget ? shelf_widget->shelf() : nullptr;
 }
 
 void Shelf::SetAlignment(ShelfAlignment alignment) {
+  if (alignment_ == alignment)
+    return;
+
   alignment_ = alignment;
   shelf_view_->OnShelfAlignmentChanged();
+  shelf_widget_->OnShelfAlignmentChanged();
+  delegate_->OnShelfAlignmentChanged(this);
+  Shell::GetInstance()->OnShelfAlignmentChanged(
+      shelf_widget_->GetNativeWindow()->GetRootWindow());
   // ShelfLayoutManager will resize the shelf.
 }
 
+ShelfAlignment Shelf::GetAlignment() const {
+  // Bottom alignment is forced when the screen is locked or a user gets added.
+  bool locked = shelf_widget_->shelf_layout_manager()->IsAlignmentLocked();
+  return locked ? SHELF_ALIGNMENT_BOTTOM : alignment_;
+}
+
 bool Shelf::IsHorizontalAlignment() const {
   return alignment_ == SHELF_ALIGNMENT_BOTTOM;
 }
 
-void Shelf::SetAutoHideBehavior(ShelfAutoHideBehavior behavior) {
-  shelf_widget_->shelf_layout_manager()->SetAutoHideBehavior(behavior);
+void Shelf::SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide_behavior) {
+  if (auto_hide_behavior_ == auto_hide_behavior)
+    return;
+
+  auto_hide_behavior_ = auto_hide_behavior;
+  delegate_->OnShelfAutoHideBehaviorChanged(this);
+  Shell::GetInstance()->OnShelfAutoHideBehaviorChanged(
+      shelf_widget_->GetNativeWindow()->GetRootWindow());
 }
 
 ShelfAutoHideBehavior Shelf::GetAutoHideBehavior() const {
-  return shelf_widget_->shelf_layout_manager()->auto_hide_behavior();
+  return auto_hide_behavior_;
 }
 
 gfx::Rect Shelf::GetScreenBoundsOfItemIconForWindow(
diff --git a/ash/shelf/shelf.h b/ash/shelf/shelf.h
index 374534c..20a677c 100644
--- a/ash/shelf/shelf.h
+++ b/ash/shelf/shelf.h
@@ -57,11 +57,19 @@
   static Shelf* ForWindow(const aura::Window* window);
 
   void SetAlignment(ShelfAlignment alignment);
-  ShelfAlignment alignment() const { return alignment_; }
+  ShelfAlignment GetAlignment() const;
   bool IsHorizontalAlignment() const;
 
+  // TODO(msw): Remove this accessor, kept temporarily to simplify changes.
+  ShelfAlignment alignment() const { return GetAlignment(); }
+
   // Sets the ShelfAutoHideBehavior. See enum description for details.
-  void SetAutoHideBehavior(ShelfAutoHideBehavior behavior);
+  void SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide_behavior);
+  ShelfAutoHideBehavior auto_hide_behavior() const {
+    return auto_hide_behavior_;
+  }
+
+  // TODO(msw): Remove this accessor, kept temporarily to simplify changes.
   ShelfAutoHideBehavior GetAutoHideBehavior() const;
 
   // A helper functions that chooses values specific to a shelf alignment.
@@ -140,6 +148,7 @@
   ShelfView* shelf_view_;
 
   ShelfAlignment alignment_;
+  ShelfAutoHideBehavior auto_hide_behavior_;
 
   ShelfDelegate* delegate_;
 
diff --git a/ash/shelf/shelf_alignment_menu.cc b/ash/shelf/shelf_alignment_menu.cc
index 8a9d8932..f274ced 100644
--- a/ash/shelf/shelf_alignment_menu.cc
+++ b/ash/shelf/shelf_alignment_menu.cc
@@ -6,9 +6,7 @@
 
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/shelf/shelf.h"
-#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_types.h"
-#include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "grit/ash_strings.h"
 #include "ui/aura/window.h"
@@ -51,19 +49,18 @@
 
 void ShelfAlignmentMenu::ExecuteCommand(int command_id, int event_flags) {
   Shell* shell = Shell::GetInstance();
-  ShelfLayoutManager* manager = shelf_->shelf_widget()->shelf_layout_manager();
   switch (static_cast<MenuItem>(command_id)) {
     case MENU_ALIGN_LEFT:
       shell->metrics()->RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_LEFT);
-      manager->SetAlignment(SHELF_ALIGNMENT_LEFT);
+      shelf_->SetAlignment(SHELF_ALIGNMENT_LEFT);
       break;
     case MENU_ALIGN_BOTTOM:
       shell->metrics()->RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_BOTTOM);
-      manager->SetAlignment(SHELF_ALIGNMENT_BOTTOM);
+      shelf_->SetAlignment(SHELF_ALIGNMENT_BOTTOM);
       break;
     case MENU_ALIGN_RIGHT:
       shell->metrics()->RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_RIGHT);
-      manager->SetAlignment(SHELF_ALIGNMENT_RIGHT);
+      shelf_->SetAlignment(SHELF_ALIGNMENT_RIGHT);
       break;
   }
 }
diff --git a/ash/shelf/shelf_delegate.h b/ash/shelf/shelf_delegate.h
index 32f08a3a..16e041c4 100644
--- a/ash/shelf/shelf_delegate.h
+++ b/ash/shelf/shelf_delegate.h
@@ -25,6 +25,12 @@
   // exists.
   virtual void OnShelfDestroyed(Shelf* shelf) = 0;
 
+  // Called when |shelf|'s alignment changes.
+  virtual void OnShelfAlignmentChanged(Shelf* shelf) = 0;
+
+  // Called when |shelf|'s auto-hide behavior changes.
+  virtual void OnShelfAutoHideBehaviorChanged(Shelf* shelf) = 0;
+
   // Get the shelf ID from an application ID.
   virtual ShelfID GetShelfIDForAppID(const std::string& app_id) = 0;
 
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index d606508..5dc36f4 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -187,8 +187,6 @@
     : SnapToPixelLayoutManager(shelf->GetNativeView()->parent()),
       root_window_(shelf->GetNativeView()->GetRootWindow()),
       updating_bounds_(false),
-      auto_hide_behavior_(SHELF_AUTO_HIDE_BEHAVIOR_NEVER),
-      alignment_(SHELF_ALIGNMENT_BOTTOM),
       shelf_(shelf),
       workspace_controller_(NULL),
       window_overlaps_shelf_(false),
@@ -217,16 +215,6 @@
       session_state_delegate()->RemoveSessionStateObserver(this);
 }
 
-void ShelfLayoutManager::SetAutoHideBehavior(ShelfAutoHideBehavior behavior) {
-  if (auto_hide_behavior_ == behavior)
-    return;
-  auto_hide_behavior_ = behavior;
-  UpdateVisibilityState();
-  FOR_EACH_OBSERVER(ShelfLayoutManagerObserver, observers_,
-                    OnAutoHideBehaviorChanged(root_window_,
-                                              auto_hide_behavior_));
-}
-
 void ShelfLayoutManager::PrepareForShutdown() {
   // Clear all event filters, otherwise sometimes those filters may catch
   // synthesized mouse event and cause crashes during the shutdown.
@@ -247,30 +235,6 @@
         state_.auto_hide_state == SHELF_AUTO_HIDE_SHOWN));
 }
 
-void ShelfLayoutManager::SetAlignment(ShelfAlignment alignment) {
-  if (alignment_ == alignment)
-    return;
-
-  alignment_ = alignment;
-  // The shelf will itself move to the bottom while locked or obscured by user
-  // login. If a request is sent to move while being obscured, we postpone the
-  // move until the user session is resumed.
-  if (!IsAlignmentLocked()) {
-    shelf_->SetAlignment(alignment);
-    LayoutShelf();
-    Shell::GetInstance()->OnShelfAlignmentChanged(
-        shelf_->GetNativeWindow()->GetRootWindow());
-  }
-}
-
-ShelfAlignment ShelfLayoutManager::GetAlignment() const {
-  // When the screen is locked or a user gets added, the shelf is forced into
-  // bottom alignment.
-  if (IsAlignmentLocked())
-    return SHELF_ALIGNMENT_BOTTOM;
-  return alignment_;
-}
-
 gfx::Rect ShelfLayoutManager::GetIdealBounds() {
   gfx::Rect rect(ScreenUtil::GetDisplayBoundsInParent(shelf_->GetNativeView()));
   return SelectValueForShelfAlignment(
@@ -281,11 +245,11 @@
 }
 
 void ShelfLayoutManager::LayoutShelf() {
-  TargetBounds target_bounds;
-  CalculateTargetBounds(state_, &target_bounds);
-  UpdateBoundsAndOpacity(target_bounds, false, NULL);
-
   if (shelf_->shelf()) {
+    TargetBounds target_bounds;
+    CalculateTargetBounds(state_, &target_bounds);
+    UpdateBoundsAndOpacity(target_bounds, false, NULL);
+
     // Update insets in ShelfWindowTargeter when shelf bounds change.
     FOR_EACH_OBSERVER(ShelfLayoutManagerObserver, observers_,
                       WillChangeVisibilityState(visibility_state()));
@@ -293,7 +257,7 @@
 }
 
 ShelfVisibilityState ShelfLayoutManager::CalculateShelfVisibility() {
-  switch(auto_hide_behavior_) {
+  switch (auto_hide_behavior()) {
     case SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
       return SHELF_AUTO_HIDE;
     case SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
@@ -306,8 +270,8 @@
 
 void ShelfLayoutManager::UpdateVisibilityState() {
   // Bail out early when there is no |workspace_controller_|, which happens
-  // during shutdown after PrepareForShutdown.
-  if (!workspace_controller_)
+  // during shutdown after PrepareForShutdown. Also bail before a shelf exists.
+  if (!workspace_controller_ || !shelf_->shelf())
     return;
 
   if (state_.is_screen_locked || state_.is_adding_user_screen) {
@@ -467,7 +431,7 @@
   // |gesture_drag_status_| to GESTURE_DRAG_COMPLETE_IN_PROGRESS to set the auto
   // hide state to |gesture_drag_auto_hide_state_|.
   gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS;
-  if (auto_hide_behavior_ != new_auto_hide_behavior)
+  if (auto_hide_behavior() != new_auto_hide_behavior)
     SetAutoHideBehavior(new_auto_hide_behavior);
   else
     UpdateVisibilityState();
@@ -511,6 +475,15 @@
   UpdateShelfVisibilityAfterLoginUIChange();
 }
 
+void ShelfLayoutManager::OnShelfAlignmentChanged(aura::Window* root_window) {
+  LayoutShelf();
+}
+
+void ShelfLayoutManager::OnShelfAutoHideBehaviorChanged(
+    aura::Window* root_window) {
+  UpdateVisibilityState();
+}
+
 void ShelfLayoutManager::OnWindowActivated(
     aura::client::ActivationChangeObserver::ActivationReason reason,
     aura::Window* gained_active,
@@ -522,6 +495,25 @@
   return GetAlignment() == SHELF_ALIGNMENT_BOTTOM;
 }
 
+bool ShelfLayoutManager::IsAlignmentLocked() const {
+  if (state_.is_screen_locked)
+    return true;
+  // The session state becomes active at the start of transitioning to a user
+  // session, however the session is considered blocked until the full UI is
+  // ready. Exit early to allow for proper layout.
+  SessionStateDelegate* session_state_delegate =
+      Shell::GetInstance()->session_state_delegate();
+  if (session_state_delegate->GetSessionState() ==
+      SessionStateDelegate::SESSION_STATE_ACTIVE) {
+    return false;
+  }
+  if (session_state_delegate->IsUserSessionBlocked() ||
+      state_.is_adding_user_screen) {
+    return true;
+  }
+  return false;
+}
+
 void ShelfLayoutManager::SetChromeVoxPanelHeight(int height) {
   chromevox_panel_height_ = height;
   LayoutShelf();
@@ -1125,30 +1117,11 @@
 }
 
 void ShelfLayoutManager::UpdateShelfVisibilityAfterLoginUIChange() {
-  shelf_->SetAlignment(GetAlignment());
   UpdateVisibilityState();
   LayoutShelf();
+  // The shelf alignment may have changed when it was unlocked.
   Shell::GetInstance()->OnShelfAlignmentChanged(
       shelf_->GetNativeWindow()->GetRootWindow());
 }
 
-bool ShelfLayoutManager::IsAlignmentLocked() const {
-  if (state_.is_screen_locked)
-    return true;
-  // The session state becomes active at the start of transitioning to a user
-  // session, however the session is considered blocked until the full UI is
-  // ready. Exit early to allow for proper layout.
-  SessionStateDelegate* session_state_delegate =
-      Shell::GetInstance()->session_state_delegate();
-  if (session_state_delegate->GetSessionState() ==
-      SessionStateDelegate::SESSION_STATE_ACTIVE) {
-    return false;
-  }
-  if (session_state_delegate->IsUserSessionBlocked() ||
-      state_.is_adding_user_screen) {
-    return true;
-  }
-  return false;
-}
-
 }  // namespace ash
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h
index 7628b134..bfeda23c 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -84,19 +84,6 @@
   explicit ShelfLayoutManager(ShelfWidget* shelf);
   ~ShelfLayoutManager() override;
 
-  // Sets the ShelfAutoHideBehavior. See enum description for details.
-  void SetAutoHideBehavior(ShelfAutoHideBehavior behavior);
-  ShelfAutoHideBehavior auto_hide_behavior() const {
-    return auto_hide_behavior_;
-  }
-
-  // Sets the alignment; changes are delayed if the screen is locked.
-  void SetAlignment(ShelfAlignment alignment);
-
-  // Returns the desired alignment for the current state, either the user's
-  // selected alignment or SHELF_ALIGNMENT_BOTTOM when the screen is locked.
-  ShelfAlignment GetAlignment() const;
-
   void set_workspace_controller(WorkspaceController* controller) {
     workspace_controller_ = controller;
   }
@@ -168,6 +155,8 @@
 
   // Overridden from ash::ShellObserver:
   void OnLockStateChanged(bool locked) override;
+  void OnShelfAlignmentChanged(aura::Window* root_window) override;
+  void OnShelfAutoHideBehaviorChanged(aura::Window* root_window) override;
 
   // Overriden from aura::client::ActivationChangeObserver:
   void OnWindowActivated(
@@ -181,10 +170,22 @@
   // Overridden from ash::SessionStateObserver:
   void SessionStateChanged(SessionStateDelegate::SessionState state) override;
 
-  // TODO(harrym|oshima): These templates will be moved to
-  // new Shelf class.
-  // A helper function that provides a shortcut for choosing
-  // values specific to a shelf alignment.
+  // TODO(msw): Remove these accessors, kept temporarily to simplify changes.
+  void SetAutoHideBehavior(ShelfAutoHideBehavior behavior) {
+    shelf_->shelf()->SetAutoHideBehavior(behavior);
+  }
+  ShelfAutoHideBehavior auto_hide_behavior() const {
+    return shelf_->shelf()->GetAutoHideBehavior();
+  }
+
+  // TODO(msw): Remove these accessors, kept temporarily to simplify changes.
+  void SetAlignment(ShelfAlignment alignment) {
+    shelf_->shelf()->SetAlignment(alignment);
+  }
+  ShelfAlignment GetAlignment() const { return shelf_->GetAlignment(); }
+
+  // TODO(harrym|oshima): These templates will be moved to a new Shelf class.
+  // A helper function for choosing values specific to a shelf alignment.
   template <typename T>
   T SelectValueForShelfAlignment(T bottom, T left, T right) const {
     switch (GetAlignment()) {
@@ -207,6 +208,11 @@
   // Is the shelf's alignment horizontal?
   bool IsHorizontalAlignment() const;
 
+  // Returns true when the alignment is locked. This can be caused by the screen
+  // being locked, or when adding a user. Returns false when transitioning to a
+  // user session, and while the session is active.
+  bool IsAlignmentLocked() const;
+
   // Set the height of the ChromeVox panel, which takes away space from the
   // available work area from the top of the screen.
   void SetChromeVoxPanelHeight(int height);
@@ -321,11 +327,6 @@
   // Called when the LoginUI changes from visible to invisible.
   void UpdateShelfVisibilityAfterLoginUIChange();
 
-  // Returns true when |alignment_| is locked. This can be caused by the screen
-  // being locked, or when adding a user. Returns false when transitioning to a
-  // user session, and while the session is active.
-  bool IsAlignmentLocked() const;
-
   // The RootWindow is cached so that we don't invoke Shell::GetInstance() from
   // our destructor. We avoid that as at the time we're deleted Shell is being
   // deleted too.
@@ -335,12 +336,6 @@
   // UpdateBoundsAndOpacity() again from SetChildBounds().
   bool updating_bounds_;
 
-  // See description above setter.
-  ShelfAutoHideBehavior auto_hide_behavior_;
-
-  // See description above getter.
-  ShelfAlignment alignment_;
-
   // Current state.
   State state_;
 
diff --git a/ash/shelf/shelf_layout_manager_observer.h b/ash/shelf/shelf_layout_manager_observer.h
index 8a2d583..e8c552b 100644
--- a/ash/shelf/shelf_layout_manager_observer.h
+++ b/ash/shelf/shelf_layout_manager_observer.h
@@ -28,10 +28,6 @@
   // Called when the auto hide state is changed.
   virtual void OnAutoHideStateChanged(ShelfAutoHideState new_state) {}
 
-  // Called when the auto hide behavior is changed.
-  virtual void OnAutoHideBehaviorChanged(aura::Window* root_window,
-                                         ShelfAutoHideBehavior new_behavior) {}
-
   // Called when shelf background animation is started.
   virtual void OnBackgroundUpdated(
       ShelfBackgroundType background_type,
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 76655c3b..2888436d 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -250,6 +250,10 @@
 
   void OnShelfDestroyed(Shelf* shelf) override {}
 
+  void OnShelfAlignmentChanged(Shelf* shelf) override {}
+
+  void OnShelfAutoHideBehaviorChanged(Shelf* shelf) override {}
+
   ShelfID GetShelfIDForAppID(const std::string& app_id) override {
     ShelfID id = 0;
     EXPECT_TRUE(base::StringToInt(app_id, &id));
diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc
index 685a434..4cb1649a 100644
--- a/ash/shelf/shelf_widget.cc
+++ b/ash/shelf/shelf_widget.cc
@@ -722,18 +722,17 @@
       return false;
   }
 
-  DCHECK(false);
+  NOTREACHED();
   return false;
 }
 
 ShelfAlignment ShelfWidget::GetAlignment() const {
-  return shelf_layout_manager_->GetAlignment();
+  // TODO(msw): This should not be called before |shelf_| is created.
+  return shelf_ ? shelf_->GetAlignment() : SHELF_ALIGNMENT_BOTTOM;
 }
 
-void ShelfWidget::SetAlignment(ShelfAlignment alignment) {
-  if (shelf_)
-    shelf_->SetAlignment(alignment);
-  status_area_widget_->SetShelfAlignment(alignment);
+void ShelfWidget::OnShelfAlignmentChanged() {
+  status_area_widget_->SetShelfAlignment(GetAlignment());
   delegate_view_->SchedulePaint();
 }
 
@@ -755,13 +754,10 @@
     return;
 
   Shell* shell = Shell::GetInstance();
-  // This needs to be called before shelf_model().
-  ShelfDelegate* shelf_delegate = shell->GetShelfDelegate();
-  if (!shelf_delegate)
-    return;  // Not ready to create Shelf.
+  ShelfDelegate* delegate = shell->GetShelfDelegate();
+  shelf_.reset(new Shelf(shell->shelf_model(), delegate, this));
+  delegate->OnShelfCreated(shelf_.get());
 
-  shelf_.reset(
-      new Shelf(shell->shelf_model(), shell->GetShelfDelegate(), this));
   SetFocusCycler(shell->focus_cycler());
 
   // Inform the root window controller.
diff --git a/ash/shelf/shelf_widget.h b/ash/shelf/shelf_widget.h
index 9872705..ddaa2bc5 100644
--- a/ash/shelf/shelf_widget.h
+++ b/ash/shelf/shelf_widget.h
@@ -32,12 +32,11 @@
               WorkspaceController* workspace_controller);
   ~ShelfWidget() override;
 
-  // Returns if shelf alignment option is enabled, and the user is able
-  // to adjust the alignment (guest and supervised mode users cannot for
-  // example).
+  // Returns if shelf alignment option is enabled, and the user is able to
+  // adjust the alignment (guest and supervised mode users cannot for example).
   static bool ShelfAlignmentAllowed();
 
-  void SetAlignment(ShelfAlignment alignmnet);
+  void OnShelfAlignmentChanged();
   ShelfAlignment GetAlignment() const;
 
   // Sets the shelf's background type.
diff --git a/ash/shelf/shelf_widget_unittest.cc b/ash/shelf/shelf_widget_unittest.cc
index a99e41f..c1f7780 100644
--- a/ash/shelf/shelf_widget_unittest.cc
+++ b/ash/shelf/shelf_widget_unittest.cc
@@ -6,16 +6,14 @@
 
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf.h"
-#include "ash/shelf/shelf_button.h"
+#include "ash/shelf/shelf_delegate.h"
 #include "ash/shelf/shelf_layout_manager.h"
-#include "ash/shelf/shelf_model.h"
 #include "ash/shelf/shelf_view.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/ash_test_helper.h"
 #include "ash/test/shelf_test_api.h"
 #include "ash/test/shelf_view_test_api.h"
-#include "ash/test/test_shelf_delegate.h"
 #include "ash/test/test_shell_delegate.h"
 #include "ash/wm/window_util.h"
 #include "ui/aura/window_event_dispatcher.h"
@@ -319,9 +317,41 @@
 
 namespace {
 
-// A TestShellDelegate that attempts to set an initial shelf auto hide behavior
-// when creating a ShelfDelegate, which simulates ChromeLauncherController's
-// behavior.
+// A TestShelfDelegate that sets the shelf alignment and auto hide behavior in
+// OnShelfCreated, to simulate ChromeLauncherController's behavior.
+class TestShelfDelegate : public ShelfDelegate {
+ public:
+  TestShelfDelegate(ShelfAlignment initial_alignment,
+                    ShelfAutoHideBehavior initial_auto_hide_behavior)
+      : initial_alignment_(initial_alignment),
+        initial_auto_hide_behavior_(initial_auto_hide_behavior) {}
+  ~TestShelfDelegate() override {}
+
+  // ShelfDelegate implementation.
+  void OnShelfCreated(Shelf* shelf) override {
+    shelf->SetAlignment(initial_alignment_);
+    shelf->SetAutoHideBehavior(initial_auto_hide_behavior_);
+  }
+  void OnShelfDestroyed(Shelf* shelf) override {}
+  void OnShelfAlignmentChanged(Shelf* shelf) override {}
+  void OnShelfAutoHideBehaviorChanged(Shelf* shelf) override {}
+  ShelfID GetShelfIDForAppID(const std::string& app_id) override { return 0; }
+  bool HasShelfIDToAppIDMapping(ShelfID id) const override { return false; }
+  const std::string& GetAppIDForShelfID(ShelfID id) override {
+    return base::EmptyString();
+  }
+  void PinAppWithID(const std::string& app_id) override {}
+  bool IsAppPinned(const std::string& app_id) override { return false; }
+  void UnpinAppWithID(const std::string& app_id) override {}
+
+ private:
+  ShelfAlignment initial_alignment_;
+  ShelfAutoHideBehavior initial_auto_hide_behavior_;
+
+  DISALLOW_COPY_AND_ASSIGN(TestShelfDelegate);
+};
+
+// A TestShellDelegate that creates a TestShelfDelegate with initial values.
 class ShelfWidgetTestShellDelegate : public test::TestShellDelegate {
  public:
   ShelfWidgetTestShellDelegate() {}
@@ -329,18 +359,21 @@
 
   // test::TestShellDelegate
   ShelfDelegate* CreateShelfDelegate(ShelfModel* model) override {
-    ShelfDelegate* shelf_delegate = new test::TestShelfDelegate(model);
-    Shell::GetInstance()->SetShelfAutoHideBehavior(
-        initial_auto_hide_behavior_, Shell::GetPrimaryRootWindow());
-    return shelf_delegate;
+    return new TestShelfDelegate(initial_alignment_,
+                                 initial_auto_hide_behavior_);
   }
 
-  void set_initial_auto_hide_behavior(ash::ShelfAutoHideBehavior behavior) {
+  void set_initial_alignment(ShelfAlignment alignment) {
+    initial_alignment_ = alignment;
+  }
+
+  void set_initial_auto_hide_behavior(ShelfAutoHideBehavior behavior) {
     initial_auto_hide_behavior_ = behavior;
   }
 
  private:
-  ash::ShelfAutoHideBehavior initial_auto_hide_behavior_ =
+  ShelfAlignment initial_alignment_ = SHELF_ALIGNMENT_BOTTOM;
+  ShelfAutoHideBehavior initial_auto_hide_behavior_ =
       SHELF_AUTO_HIDE_BEHAVIOR_NEVER;
   DISALLOW_COPY_AND_ASSIGN(ShelfWidgetTestShellDelegate);
 };
@@ -358,10 +391,12 @@
     ShelfWidgetTest::SetUp();
   }
 
-  void TestCreateShelfWithInitialAutoHideBehavior(
-      ash::ShelfAutoHideBehavior initial_auto_hide_behavior,
+  void TestCreateShelfWithInitialValues(
+      ShelfAlignment initial_alignment,
+      ShelfAutoHideBehavior initial_auto_hide_behavior,
       ShelfVisibilityState expected_shelf_visibility_state,
       ShelfAutoHideState expected_shelf_auto_hide_state) {
+    shelf_widget_test_shell_delegate_->set_initial_alignment(initial_alignment);
     shelf_widget_test_shell_delegate_->set_initial_auto_hide_behavior(
         initial_auto_hide_behavior);
     SetUserLoggedIn(true);
@@ -375,6 +410,9 @@
         shelf_widget->shelf_layout_manager();
     ASSERT_NE(nullptr, shelf_layout_manager);
 
+    EXPECT_EQ(initial_alignment, shelf_layout_manager->GetAlignment());
+    EXPECT_EQ(initial_auto_hide_behavior,
+              shelf_layout_manager->auto_hide_behavior());
     EXPECT_EQ(expected_shelf_visibility_state,
               shelf_layout_manager->visibility_state());
     EXPECT_EQ(expected_shelf_auto_hide_state,
@@ -389,18 +427,24 @@
 }  // namespace
 
 TEST_F(ShelfWidgetTestWithDelegate, CreateAutoHideAlwaysShelf) {
-  TestCreateShelfWithInitialAutoHideBehavior(
-      SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, SHELF_AUTO_HIDE, SHELF_AUTO_HIDE_HIDDEN);
+  // The actual auto hide state is shown because there are no open windows.
+  TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_BOTTOM,
+                                   SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+                                   SHELF_AUTO_HIDE, SHELF_AUTO_HIDE_SHOWN);
 }
 
 TEST_F(ShelfWidgetTestWithDelegate, CreateAutoHideNeverShelf) {
-  TestCreateShelfWithInitialAutoHideBehavior(
-      SHELF_AUTO_HIDE_BEHAVIOR_NEVER, SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
+  // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
+  TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_LEFT,
+                                   SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+                                   SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
 }
 
 TEST_F(ShelfWidgetTestWithDelegate, CreateAutoHideAlwaysHideShelf) {
-  TestCreateShelfWithInitialAutoHideBehavior(
-      SHELF_AUTO_HIDE_ALWAYS_HIDDEN, SHELF_HIDDEN, SHELF_AUTO_HIDE_HIDDEN);
+  // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
+  TestCreateShelfWithInitialValues(SHELF_ALIGNMENT_RIGHT,
+                                   SHELF_AUTO_HIDE_ALWAYS_HIDDEN, SHELF_HIDDEN,
+                                   SHELF_AUTO_HIDE_HIDDEN);
 }
 
 }  // namespace ash
diff --git a/ash/shell.cc b/ash/shell.cc
index 2e100f0..66a9b622 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -40,10 +40,10 @@
 #include "ash/root_window_controller.h"
 #include "ash/session/session_state_delegate.h"
 #include "ash/shelf/app_list_shelf_item_delegate.h"
+#include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_delegate.h"
 #include "ash/shelf/shelf_item_delegate.h"
 #include "ash/shelf/shelf_item_delegate_manager.h"
-#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_model.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shelf/shelf_window_watcher.h"
@@ -511,25 +511,21 @@
 
 void Shell::SetShelfAutoHideBehavior(ShelfAutoHideBehavior behavior,
                                      aura::Window* root_window) {
-  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
-  shelf_widget->shelf_layout_manager()->SetAutoHideBehavior(behavior);
+  Shelf::ForWindow(root_window)->SetAutoHideBehavior(behavior);
 }
 
 ShelfAutoHideBehavior Shell::GetShelfAutoHideBehavior(
     aura::Window* root_window) const {
-  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
-  return shelf_widget->shelf_layout_manager()->auto_hide_behavior();
+  return Shelf::ForWindow(root_window)->GetAutoHideBehavior();
 }
 
 void Shell::SetShelfAlignment(ShelfAlignment alignment,
                               aura::Window* root_window) {
-  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
-  shelf_widget->shelf_layout_manager()->SetAlignment(alignment);
+  Shelf::ForWindow(root_window)->SetAlignment(alignment);
 }
 
 ShelfAlignment Shell::GetShelfAlignment(const aura::Window* root_window) const {
-  ShelfWidget* shelf_widget = GetRootWindowController(root_window)->shelf();
-  return shelf_widget->shelf_layout_manager()->GetAlignment();
+  return Shelf::ForWindow(root_window)->GetAlignment();
 }
 
 void Shell::OnShelfAlignmentChanged(aura::Window* root_window) {
@@ -537,6 +533,11 @@
                     OnShelfAlignmentChanged(root_window));
 }
 
+void Shell::OnShelfAutoHideBehaviorChanged(aura::Window* root_window) {
+  FOR_EACH_OBSERVER(ShellObserver, observers_,
+                    OnShelfAutoHideBehaviorChanged(root_window));
+}
+
 void Shell::NotifyFullscreenStateChange(bool is_fullscreen,
                                         aura::Window* root_window) {
   FOR_EACH_OBSERVER(ShellObserver, observers_, OnFullscreenStateChanged(
@@ -587,7 +588,6 @@
 
 ShelfDelegate* Shell::GetShelfDelegate() {
   if (!shelf_delegate_) {
-    shelf_model_.reset(new ShelfModel);
     // Creates ShelfItemDelegateManager before ShelfDelegate.
     shelf_item_delegate_manager_.reset(
         new ShelfItemDelegateManager(shelf_model_.get()));
@@ -642,6 +642,7 @@
     : target_root_window_(nullptr),
       scoped_target_root_window_(nullptr),
       delegate_(delegate),
+      shelf_model_(new ShelfModel),
       window_positioner_(new WindowPositioner),
       activation_client_(nullptr),
 #if defined(OS_CHROMEOS)
diff --git a/ash/shell.h b/ash/shell.h
index c71e003..d52edc6 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -470,6 +470,9 @@
   // Called when the alignment for a shelf changes.
   void OnShelfAlignmentChanged(aura::Window* root_window);
 
+  // Called when the auto-hide behavior for a shelf changes.
+  void OnShelfAutoHideBehaviorChanged(aura::Window* root_window);
+
   // Notifies |observers_| when entering or exiting fullscreen mode in
   // |root_window|.
   void NotifyFullscreenStateChange(bool is_fullscreen,
diff --git a/ash/shell/shelf_delegate_impl.cc b/ash/shell/shelf_delegate_impl.cc
index b77da8bc..48e7e3be 100644
--- a/ash/shell/shelf_delegate_impl.cc
+++ b/ash/shell/shelf_delegate_impl.cc
@@ -11,14 +11,15 @@
 
 ShelfDelegateImpl::ShelfDelegateImpl() {}
 
-ShelfDelegateImpl::~ShelfDelegateImpl() {
-}
+ShelfDelegateImpl::~ShelfDelegateImpl() {}
 
-void ShelfDelegateImpl::OnShelfCreated(Shelf* shelf) {
-}
+void ShelfDelegateImpl::OnShelfCreated(Shelf* shelf) {}
 
-void ShelfDelegateImpl::OnShelfDestroyed(Shelf* shelf) {
-}
+void ShelfDelegateImpl::OnShelfDestroyed(Shelf* shelf) {}
+
+void ShelfDelegateImpl::OnShelfAlignmentChanged(Shelf* shelf) {}
+
+void ShelfDelegateImpl::OnShelfAutoHideBehaviorChanged(Shelf* shelf) {}
 
 ShelfID ShelfDelegateImpl::GetShelfIDForAppID(const std::string& app_id) {
   return 0;
@@ -32,15 +33,13 @@
   return base::EmptyString();
 }
 
-void ShelfDelegateImpl::PinAppWithID(const std::string& app_id) {
-}
+void ShelfDelegateImpl::PinAppWithID(const std::string& app_id) {}
 
 bool ShelfDelegateImpl::IsAppPinned(const std::string& app_id) {
   return false;
 }
 
-void ShelfDelegateImpl::UnpinAppWithID(const std::string& app_id) {
-}
+void ShelfDelegateImpl::UnpinAppWithID(const std::string& app_id) {}
 
 }  // namespace shell
 }  // namespace ash
diff --git a/ash/shell/shelf_delegate_impl.h b/ash/shell/shelf_delegate_impl.h
index b80021ba5..6691b1e3 100644
--- a/ash/shell/shelf_delegate_impl.h
+++ b/ash/shell/shelf_delegate_impl.h
@@ -20,6 +20,8 @@
   // ShelfDelegate overrides:
   void OnShelfCreated(Shelf* shelf) override;
   void OnShelfDestroyed(Shelf* shelf) override;
+  void OnShelfAlignmentChanged(Shelf* shelf) override;
+  void OnShelfAutoHideBehaviorChanged(Shelf* shelf) override;
   ShelfID GetShelfIDForAppID(const std::string& app_id) override;
   bool HasShelfIDToAppIDMapping(ShelfID id) const override;
   const std::string& GetAppIDForShelfID(ShelfID id) override;
diff --git a/ash/shell_observer.h b/ash/shell_observer.h
index da53428..e4d23a1 100644
--- a/ash/shell_observer.h
+++ b/ash/shell_observer.h
@@ -41,6 +41,9 @@
   // Invoked when the shelf alignment in |root_window| is changed.
   virtual void OnShelfAlignmentChanged(aura::Window* root_window) {}
 
+  // Invoked when the shelf auto-hide behavior in |root_window| is changed.
+  virtual void OnShelfAutoHideBehaviorChanged(aura::Window* root_window) {}
+
   // Invoked when the projection touch HUD is toggled.
   virtual void OnTouchHudProjectionToggled(bool enabled) {}
 
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index b85871b4..5bdcb1cb 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ግራ</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">ማስጀመሪያ</translation>
+<translation id="1525508553941733066">አሰናብት</translation>
 <translation id="15373452373711364">ትልቅ የመዳፊት ጠቋሚ</translation>
 <translation id="1550523713251050646">ለተጨማሪ አማራጮች ጠቅ ያድርጉ</translation>
 <translation id="1602076796624386989">የተንቀሳቃሽ ስልክ ውሂብን ያንቁ</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 207c9ed..3f952ce 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">اليسار</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">المشغّل</translation>
+<translation id="1525508553941733066">رفض</translation>
 <translation id="15373452373711364">مؤشر الماوس الكبير</translation>
 <translation id="1550523713251050646">انقر للحصول على المزيد من الخيارات</translation>
 <translation id="1602076796624386989">تمكين بيانات الجوال</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 93c8cf6..2fd4c35 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Наляво</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Стартов панел</translation>
+<translation id="1525508553941733066">ОТХВЪРЛЯНЕ</translation>
 <translation id="15373452373711364">Голям курсор на мишката</translation>
 <translation id="1550523713251050646">Кликнете за още опции</translation>
 <translation id="1602076796624386989">Активиране на мобилните данни</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 1c2934f..3846aaa 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">বাম</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">লঞ্চার</translation>
+<translation id="1525508553941733066">খারিজ করুন</translation>
 <translation id="15373452373711364">বড় মাউস কার্সার</translation>
 <translation id="1550523713251050646">আরো বিকল্পের জন্য ক্লিক করুন</translation>
 <translation id="1602076796624386989">মোবাইল ডেটা সক্রিয় করুন</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index 1bd2b9d..b65270c 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">A l'esquerra</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Menú d'aplicacions</translation>
+<translation id="1525508553941733066">IGNORA</translation>
 <translation id="15373452373711364">Cursor del ratolí gran</translation>
 <translation id="1550523713251050646">Feu clic per veure més opcions</translation>
 <translation id="1602076796624386989">Activa les dades mòbils</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index b718e74..1a1b8fc4 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Doleva</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Spouštěč</translation>
+<translation id="1525508553941733066">ZAVŘÍT</translation>
 <translation id="15373452373711364">Velký kurzor myši</translation>
 <translation id="1550523713251050646">Kliknutím zobrazíte další možnosti</translation>
 <translation id="1602076796624386989">Povolit mobilní datové připojení</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 718fb62f7..f231768 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Venstre</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Applikationsliste</translation>
+<translation id="1525508553941733066">AFVIS</translation>
 <translation id="15373452373711364">Stor musemarkør</translation>
 <translation id="1550523713251050646">Klik for at se flere muligheder</translation>
 <translation id="1602076796624386989">Aktivér mobildata</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index ebb7c6da..703529b 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Links</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Übersicht</translation>
+<translation id="1525508553941733066">SCHLIESSEN</translation>
 <translation id="15373452373711364">Großer Cursor</translation>
 <translation id="1550523713251050646">Für weitere Optionen klicken</translation>
 <translation id="1602076796624386989">Mobilfunk aktivieren</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index c8bd7925..39f4388 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Αριστερά</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Λειτουργία εκκίνησης</translation>
+<translation id="1525508553941733066">ΑΠΟΡΡΙΨΗ</translation>
 <translation id="15373452373711364">Μεγάλος δείκτης ποντικιού</translation>
 <translation id="1550523713251050646">Κάντε κλικ για περισσότερες επιλογές</translation>
 <translation id="1602076796624386989">Ενεργοποίηση δεδομένων κινητής τηλεφωνίας</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index fc787b1..556b57b 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Left</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Launcher</translation>
+<translation id="1525508553941733066">DISMISS</translation>
 <translation id="15373452373711364">Large mouse cursor</translation>
 <translation id="1550523713251050646">Click for more options</translation>
 <translation id="1602076796624386989">Enable mobile data</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index 3d20e68..430dd62 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Izquierda</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Selector</translation>
+<translation id="1525508553941733066">IGNORAR</translation>
 <translation id="15373452373711364">Cursor del mouse grande</translation>
 <translation id="1550523713251050646">Haz clic para obtener más opciones</translation>
 <translation id="1602076796624386989">Habilitar datos de dispositivos móviles</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 9842ac2..c14a7eb 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Izquierda</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Menú de aplicaciones</translation>
+<translation id="1525508553941733066">IGNORAR</translation>
 <translation id="15373452373711364">Cursor del ratón grande</translation>
 <translation id="1550523713251050646">Haz clic aquí para obtener más opciones</translation>
 <translation id="1602076796624386989">Habilitar datos móviles</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index b4111d6..6115a6f9 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Vasakule</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Käivitaja</translation>
+<translation id="1525508553941733066">LOOBU</translation>
 <translation id="15373452373711364">Suur hiirekursor</translation>
 <translation id="1550523713251050646">Klõpsake lisavalikute nägemiseks</translation>
 <translation id="1602076796624386989">Luba mobiilne andmeside</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 2bf4e995..46090d1f 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">چپ</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">راه‌انداز</translation>
+<translation id="1525508553941733066">رد کردن</translation>
 <translation id="15373452373711364">نشانگر موشواره بزرگ</translation>
 <translation id="1550523713251050646">برای گزینه‌های بیشتر کلیک کنید</translation>
 <translation id="1602076796624386989">فعال کردن داده‌های تلفن همراه</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 73ab07d..7f5cfee 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Vasemmalle</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Käynnistysohjelma</translation>
+<translation id="1525508553941733066">HYLKÄÄ</translation>
 <translation id="15373452373711364">Suuri hiiren osoitin</translation>
 <translation id="1550523713251050646">Näet lisävaihtoehtoja klikkaamalla tätä.</translation>
 <translation id="1602076796624386989">Ota mobiilitiedonsiirto käyttöön</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index 436630c..89b78308 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Kaliwa</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Launcher</translation>
+<translation id="1525508553941733066">I-DISMISS</translation>
 <translation id="15373452373711364">Malaking mouse cursor</translation>
 <translation id="1550523713251050646">Mag-click para sa higit pang mga opsyon</translation>
 <translation id="1602076796624386989">Paganahin ang mobile data</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index e156dd2f..cdb39f1 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Vers la gauche</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Lanceur d'applications</translation>
+<translation id="1525508553941733066">IGNORER</translation>
 <translation id="15373452373711364">Grand curseur</translation>
 <translation id="1550523713251050646">Cliquez pour obtenir plus d'options.</translation>
 <translation id="1602076796624386989">Activer les données mobiles</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index ef64508..695ff4b 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ડાબું</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">લૉન્ચર</translation>
+<translation id="1525508553941733066">છોડી દો</translation>
 <translation id="15373452373711364">મોટું માઉસ કર્સર</translation>
 <translation id="1550523713251050646">વધુ વિકલ્પો માટે ક્લિક કરો</translation>
 <translation id="1602076796624386989">મોબાઇલ ડેટા સક્ષમ કરો</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 426c64d0..629c921 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">बाएं</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">लॉन्चर</translation>
+<translation id="1525508553941733066">ख़ारिज करें</translation>
 <translation id="15373452373711364">बड़ा माउस कर्सर</translation>
 <translation id="1550523713251050646">अधिक विकल्पों के लिए क्लिक करें</translation>
 <translation id="1602076796624386989">मोबाइल डेटा सक्षम करें</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index fc90e6d..579e30d 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Ulijevo</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Pokretač</translation>
+<translation id="1525508553941733066">ODBACI</translation>
 <translation id="15373452373711364">Veliki pokazivač miša</translation>
 <translation id="1550523713251050646">Kliknite za više opcija</translation>
 <translation id="1602076796624386989">Omogući mobilne podatke</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 40c72b74..c8af720b 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Balra</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Indító</translation>
+<translation id="1525508553941733066">ELVETÉS</translation>
 <translation id="15373452373711364">Nagy egérmutató</translation>
 <translation id="1550523713251050646">Kattintson további lehetőségekért</translation>
 <translation id="1602076796624386989">Mobiladatok engedélyezése</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 6238925..2d35250f 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Kiri</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Peluncur</translation>
+<translation id="1525508553941733066">TUTUP</translation>
 <translation id="15373452373711364">Kursor mouse besar</translation>
 <translation id="1550523713251050646">Klik untuk opsi lainnya</translation>
 <translation id="1602076796624386989">Aktifkan data seluler</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 669c6f8..8d9b173 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Sinistra</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Avvio applicazioni</translation>
+<translation id="1525508553941733066">IGNORA</translation>
 <translation id="15373452373711364">Puntatore del mouse grande</translation>
 <translation id="1550523713251050646">Fai clic per visualizzare altre opzioni</translation>
 <translation id="1602076796624386989">Attiva dati mobili</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 1508cb0..1a22e9c2 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">שמאלה</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">מפעיל</translation>
+<translation id="1525508553941733066">דחה</translation>
 <translation id="15373452373711364">סמן עכבר גדול</translation>
 <translation id="1550523713251050646">לחץ לקבלת אפשרויות נוספות</translation>
 <translation id="1602076796624386989">הפעל נתונים לנייד</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 9ee2116..8aada20 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">左</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" />(HDMI / DP)</translation>
 <translation id="1510238584712386396">ランチャー</translation>
+<translation id="1525508553941733066">閉じる</translation>
 <translation id="15373452373711364">大きいマウス カーソル</translation>
 <translation id="1550523713251050646">クリックするとその他のオプションが表示されます</translation>
 <translation id="1602076796624386989">モバイル データを有効にする</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index c046bc5..8788e6a 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ಎಡಕ್ಕೆ</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">ಲಾಂಚರ್</translation>
+<translation id="1525508553941733066">ವಜಾಗೊಳಿಸಿ</translation>
 <translation id="15373452373711364">ದೊಡ್ಡ ಮೌಸ್ ಕರ್ಸರ್</translation>
 <translation id="1550523713251050646">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳಿಗೆ ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="1602076796624386989">ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index f7badd3..00230e87 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">왼쪽</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" />(HDMI/DP)</translation>
 <translation id="1510238584712386396">실행기</translation>
+<translation id="1525508553941733066">닫기</translation>
 <translation id="15373452373711364">큰 마우스 커서</translation>
 <translation id="1550523713251050646">더 많은 옵션을 확인하려면 클릭하세요.</translation>
 <translation id="1602076796624386989">모바일 데이터 사용</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 7918387..d8b0204 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Kairė</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI / DP)</translation>
 <translation id="1510238584712386396">Paleidimo priemonė</translation>
+<translation id="1525508553941733066">ATSISAKYTI</translation>
 <translation id="15373452373711364">Didelis pelės žymeklis</translation>
 <translation id="1550523713251050646">Spustelėkite, jei reikia daugiau parinkčių</translation>
 <translation id="1602076796624386989">Įgalinti duomenis mobiliesiems</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 36a860b..1756f0f 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Pa kreisi</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Lietojumprogrammu palaidējs</translation>
+<translation id="1525508553941733066">NERĀDĪT</translation>
 <translation id="15373452373711364">Liels peles kursors</translation>
 <translation id="1550523713251050646">Noklikšķiniet, lai skatītu citas iespējas.</translation>
 <translation id="1602076796624386989">Iespējot mobilo datu pārraidi</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index f692bff9..99e3c0c 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ഇടത്</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">ലോഞ്ചർ</translation>
+<translation id="1525508553941733066">നിരാകരിക്കുക</translation>
 <translation id="15373452373711364">വലിയ മൗസ് കഴ്‌സർ</translation>
 <translation id="1550523713251050646">കൂടുതൽ ഓപ്‌ഷനുകൾക്ക് ക്ലിക്കുചെയ്യുക</translation>
 <translation id="1602076796624386989">മൊബൈൽ ഡാറ്റ പ്രാപ്‌തമാക്കുക</translation>
@@ -217,7 +218,7 @@
 <translation id="7982789257301363584">നെറ്റ്വര്‍ക്ക്</translation>
 <translation id="8054466585765276473">ബാറ്ററി സമയം കണക്കാക്കുന്നു.</translation>
 <translation id="8103386449138765447">SMS സന്ദേശങ്ങൾ: <ph name="MESSAGE_COUNT" /></translation>
-<translation id="8190698733819146287">ഭാഷകള്‍‌ ഇച്ഛാനുസൃതമാക്കി നല്‍‌കുക...</translation>
+<translation id="8190698733819146287">ഭാഷകൾ‌ ഇച്ഛാനുസൃതമാക്കി നല്‍‌കുക...</translation>
 <translation id="8206859287963243715">സെല്ലുലാര്‍‌</translation>
 <translation id="8308637677604853869">മുൻ മെനു</translation>
 <translation id="8356164830168736643"><ph name="WINDOW_TITLE" /> അടയ്‌ക്കുക</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index bcc64de..1860cc7c 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">डावे</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">लाँचर</translation>
+<translation id="1525508553941733066">डिसमिस करा</translation>
 <translation id="15373452373711364">मोठा माउस कर्सर</translation>
 <translation id="1550523713251050646">अधिक पर्यायांसाठी क्लिक करा</translation>
 <translation id="1602076796624386989">मोबाइल डेटा सक्षम करा</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 5f64af3..3d9e7de 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Kiri</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Pelancar</translation>
+<translation id="1525508553941733066">KETEPIKAN</translation>
 <translation id="15373452373711364">Kursor tetikus besar</translation>
 <translation id="1550523713251050646">Klik untuk mendapatkan lagi pilihan</translation>
 <translation id="1602076796624386989">Dayakan data mudah alih</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index c7fc4f76..425219f 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Links</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Opstartprogramma</translation>
+<translation id="1525508553941733066">SLUITEN</translation>
 <translation id="15373452373711364">Grote muisaanwijzer</translation>
 <translation id="1550523713251050646">Klik voor meer opties</translation>
 <translation id="1602076796624386989">Mobiele gegevens inschakelen</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 27db2de..974c74a 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">W lewo</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Program uruchamiający</translation>
+<translation id="1525508553941733066">ZAMKNIJ</translation>
 <translation id="15373452373711364">Duży kursor myszy</translation>
 <translation id="1550523713251050646">Kliknij, by wyświetlić więcej opcji</translation>
 <translation id="1602076796624386989">Włącz komórkową transmisję danych</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index 24f8a247..a8dc256 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Para a esquerda</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Iniciador</translation>
+<translation id="1525508553941733066">DISPENSAR</translation>
 <translation id="15373452373711364">Cursor grande do mouse</translation>
 <translation id="1550523713251050646">Clique para ver mais opções</translation>
 <translation id="1602076796624386989">Ativar dados móveis</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 4c4dd74b..89f1f3a 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Esquerda</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Iniciador</translation>
+<translation id="1525508553941733066">IGNORAR</translation>
 <translation id="15373452373711364">Cursor do rato grande</translation>
 <translation id="1550523713251050646">Clicar para obter mais opções</translation>
 <translation id="1602076796624386989">Ativar dados móveis</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 4c5ee54..ee1e27a 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Stânga</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Lansator</translation>
+<translation id="1525508553941733066">ÎNCHIDE</translation>
 <translation id="15373452373711364">Cursor de mouse mare</translation>
 <translation id="1550523713251050646">Dă clic pentru mai multe opțiuni</translation>
 <translation id="1602076796624386989">Activați datele mobile</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index ca77acd..3b1f056 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Слева</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Панель запуска</translation>
+<translation id="1525508553941733066">ЗАКРЫТЬ</translation>
 <translation id="15373452373711364">Большой курсор мыши</translation>
 <translation id="1550523713251050646">Чтобы изменить источник питания, нажмите здесь.</translation>
 <translation id="1602076796624386989">Включить мобильную передачу данных</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 90331e04..5abfc4f 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Doľava</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Spúšťač</translation>
+<translation id="1525508553941733066">ZATVORIŤ</translation>
 <translation id="15373452373711364">Veľký kurzor myši</translation>
 <translation id="1550523713251050646">Kliknutím zobrazíte ďalšie možnosti</translation>
 <translation id="1602076796624386989">Povoliť mobilné dátové pripojenie</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 2dd3b62..09d729b 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">V levo</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Zaganjalnik</translation>
+<translation id="1525508553941733066">OPUSTI</translation>
 <translation id="15373452373711364">Velik miškin kazalec</translation>
 <translation id="1550523713251050646">Kliknite za več možnosti</translation>
 <translation id="1602076796624386989">Omogoči mobilno podatkovno povezavo</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index b4d872b..358c387 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Улево</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Покретач</translation>
+<translation id="1525508553941733066">ОДБАЦИ</translation>
 <translation id="15373452373711364">Велики курсор</translation>
 <translation id="1550523713251050646">Кликните за више опција</translation>
 <translation id="1602076796624386989">Омогући податке за мобилне уређаје</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index ed6e3b6..6e943443 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Vänster</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Startprogram</translation>
+<translation id="1525508553941733066">IGNORERA</translation>
 <translation id="15373452373711364">Stor muspekare</translation>
 <translation id="1550523713251050646">Klicka här för fler alternativ</translation>
 <translation id="1602076796624386989">Aktivera mobildata</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index f422ff4..c79e9cda 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Kushoto</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Kizindua</translation>
+<translation id="1525508553941733066">ONDOA</translation>
 <translation id="15373452373711364">Kishale kikubwa cha kipanya</translation>
 <translation id="1550523713251050646">Bofya ili upate chaguo zaidi</translation>
 <translation id="1602076796624386989">Wezesha data ya simu</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index d8eeb07..7001ef6 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">இடது</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">துவக்கி</translation>
+<translation id="1525508553941733066">நிராகரி</translation>
 <translation id="15373452373711364">பெரிய மவுஸ் இடஞ்சுட்டி</translation>
 <translation id="1550523713251050646">மேலும் விருப்பங்களுக்குக் கிளிக் செய்யவும்</translation>
 <translation id="1602076796624386989">மொபைல் தரவை இயக்கு</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 53bd3a70..3355c8a 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ఎడమ</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">లాంచర్</translation>
+<translation id="1525508553941733066">తీసివేయి</translation>
 <translation id="15373452373711364">పెద్ద మౌస్ కర్సర్</translation>
 <translation id="1550523713251050646">మరిన్ని ఎంపికల కోసం క్లిక్ చేయండి</translation>
 <translation id="1602076796624386989">మొబైల్ డేటాను ప్రారంభించు</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index f538d2eb..5f3f551e 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">ซ้าย</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">ตัวเรียกใช้งาน</translation>
+<translation id="1525508553941733066">ปิด</translation>
 <translation id="15373452373711364">เคอร์เซอร์เมาส์ขนาดใหญ่</translation>
 <translation id="1550523713251050646">คลิกเพื่อดูตัวเลือกเพิ่มเติม</translation>
 <translation id="1602076796624386989">เปิดใช้งานข้อมูลมือถือ</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index e45f3c4c..2ade33c4 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Sola</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Başlatıcı</translation>
+<translation id="1525508553941733066">KAPAT</translation>
 <translation id="15373452373711364">Büyük fare imleci</translation>
 <translation id="1550523713251050646">Daha fazla seçenek için tıklayın</translation>
 <translation id="1602076796624386989">Mobil verileri etkinleştir</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 04a9416..30504e0 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Ліворуч</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Панель запуску</translation>
+<translation id="1525508553941733066">ЗАКРИТИ</translation>
 <translation id="15373452373711364">Великий курсор миші</translation>
 <translation id="1550523713251050646">Натисніть, щоб побачити більше опцій</translation>
 <translation id="1602076796624386989">Увімкнути передавання мобільних даних</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 2bf2c84..2744aab8 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">Trái</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">Trình chạy</translation>
+<translation id="1525508553941733066">LOẠI BỎ</translation>
 <translation id="15373452373711364">Con trỏ chuột lớn</translation>
 <translation id="1550523713251050646">Nhấp để xem các tùy chọn khác</translation>
 <translation id="1602076796624386989">Bật dữ liệu di động</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 019e28ef..6ca2a30 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">向左</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">启动器</translation>
+<translation id="1525508553941733066">关闭</translation>
 <translation id="15373452373711364">大号鼠标光标</translation>
 <translation id="1550523713251050646">点击即可查看更多选项</translation>
 <translation id="1602076796624386989">启用移动数据</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 2448e37..eaeb2df 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -20,6 +20,7 @@
 <translation id="1467432559032391204">向左</translation>
 <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation>
 <translation id="1510238584712386396">啟動器</translation>
+<translation id="1525508553941733066">關閉</translation>
 <translation id="15373452373711364">大型滑鼠游標</translation>
 <translation id="1550523713251050646">按一下即可查看更多選項</translation>
 <translation id="1602076796624386989">啟用行動數據</translation>
diff --git a/ash/test/test_shelf_delegate.cc b/ash/test/test_shelf_delegate.cc
index 232c46c..affed05 100644
--- a/ash/test/test_shelf_delegate.cc
+++ b/ash/test/test_shelf_delegate.cc
@@ -90,11 +90,13 @@
     RemoveShelfItemForWindow(params.target);
 }
 
-void TestShelfDelegate::OnShelfCreated(Shelf* shelf) {
-}
+void TestShelfDelegate::OnShelfCreated(Shelf* shelf) {}
 
-void TestShelfDelegate::OnShelfDestroyed(Shelf* shelf) {
-}
+void TestShelfDelegate::OnShelfDestroyed(Shelf* shelf) {}
+
+void TestShelfDelegate::OnShelfAlignmentChanged(Shelf* shelf) {}
+
+void TestShelfDelegate::OnShelfAutoHideBehaviorChanged(Shelf* shelf) {}
 
 ShelfID TestShelfDelegate::GetShelfIDForAppID(const std::string& app_id) {
   for (auto const& iter : shelf_id_to_app_id_map_) {
diff --git a/ash/test/test_shelf_delegate.h b/ash/test/test_shelf_delegate.h
index 4c7bc93..bba29b0 100644
--- a/ash/test/test_shelf_delegate.h
+++ b/ash/test/test_shelf_delegate.h
@@ -53,6 +53,8 @@
   // ShelfDelegate implementation.
   void OnShelfCreated(Shelf* shelf) override;
   void OnShelfDestroyed(Shelf* shelf) override;
+  void OnShelfAlignmentChanged(Shelf* shelf) override;
+  void OnShelfAutoHideBehaviorChanged(Shelf* shelf) override;
   ShelfID GetShelfIDForAppID(const std::string& app_id) override;
   bool HasShelfIDToAppIDMapping(ShelfID id) const override;
   const std::string& GetAppIDForShelfID(ShelfID id) override;
diff --git a/base/BUILD.gn b/base/BUILD.gn
index dcef582..0a0a6497 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -28,7 +28,8 @@
 
 declare_args() {
   # Override this value to give a specific build date.
-  # See //base/build_time.cc for more details.
+  # See //base/build_time.cc and //build/write_build_date_header.py for more
+  # details and the expected format.
   override_build_date = "N/A"
 }
 
diff --git a/base/allocator/allocator_shim_unittest.cc b/base/allocator/allocator_shim_unittest.cc
index 4e987b6..e526bb88 100644
--- a/base/allocator/allocator_shim_unittest.cc
+++ b/base/allocator/allocator_shim_unittest.cc
@@ -9,11 +9,11 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <memory>
 #include <new>
 #include <vector>
 
 #include "base/atomicops.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/platform_thread.h"
 #include "base/threading/thread_local.h"
@@ -126,7 +126,7 @@
   size_t reallocs_intercepted_by_size[kMaxSizeTracked];
   size_t reallocs_intercepted_by_addr[kMaxSizeTracked];
   size_t frees_intercepted_by_addr[kMaxSizeTracked];
-  scoped_ptr<ThreadLocalBoolean> did_fail_realloc_0x42_once;
+  std::unique_ptr<ThreadLocalBoolean> did_fail_realloc_0x42_once;
   subtle::Atomic32 num_new_handler_calls;
 
  private:
diff --git a/base/android/application_status_listener_unittest.cc b/base/android/application_status_listener_unittest.cc
index ce78bf9..896bbe8 100644
--- a/base/android/application_status_listener_unittest.cc
+++ b/base/android/application_status_listener_unittest.cc
@@ -3,10 +3,12 @@
 // found in the LICENSE file.
 
 #include "base/android/application_status_listener.h"
+
+#include <memory>
+
 #include "base/bind.h"
 #include "base/callback_forward.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/synchronization/waitable_event.h"
@@ -92,7 +94,7 @@
   base::WaitableEvent event_;
   base::Thread thread_;
   base::MessageLoop main_;
-  scoped_ptr<ApplicationStatusListener> listener_;
+  std::unique_ptr<ApplicationStatusListener> listener_;
 };
 
 }  // namespace
diff --git a/base/android/java_handler_thread.h b/base/android/java_handler_thread.h
index 07715a87..1709ff4f 100644
--- a/base/android/java_handler_thread.h
+++ b/base/android/java_handler_thread.h
@@ -7,8 +7,9 @@
 
 #include <jni.h>
 
+#include <memory>
+
 #include "base/android/scoped_java_ref.h"
-#include "base/memory/scoped_ptr.h"
 
 namespace base {
 
@@ -43,7 +44,7 @@
   static bool RegisterBindings(JNIEnv* env);
 
  private:
-  scoped_ptr<base::MessageLoop> message_loop_;
+  std::unique_ptr<base::MessageLoop> message_loop_;
   ScopedJavaGlobalRef<jobject> java_thread_;
 };
 
diff --git a/base/android/record_histogram.cc b/base/android/record_histogram.cc
index 8194dc1..6348d4930 100644
--- a/base/android/record_histogram.cc
+++ b/base/android/record_histogram.cc
@@ -314,7 +314,7 @@
     return 0;
   }
 
-  scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
   return samples->GetCount(static_cast<int>(sample));
 }
 
diff --git a/base/base_paths_posix.cc b/base/base_paths_posix.cc
index a436a4d..a60e112 100644
--- a/base/base_paths_posix.cc
+++ b/base/base_paths_posix.cc
@@ -6,18 +6,19 @@
 // don't have their own base_paths_OS.cc implementation (i.e. all but Mac and
 // Android).
 
+#include "base/base_paths.h"
+
 #include <limits.h>
 #include <stddef.h>
 
+#include <memory>
 #include <ostream>
 #include <string>
 
-#include "base/base_paths.h"
 #include "base/environment.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/nix/xdg_util.h"
 #include "base/path_service.h"
 #include "base/process/process_metrics.h"
@@ -79,7 +80,7 @@
     case base::DIR_SOURCE_ROOT: {
       // Allow passing this in the environment, for more flexibility in build
       // tree configurations (sub-project builds, gyp --output_dir, etc.)
-      scoped_ptr<base::Environment> env(base::Environment::Create());
+      std::unique_ptr<base::Environment> env(base::Environment::Create());
       std::string cr_source_root;
       if (env->GetVar("CR_SOURCE_ROOT", &cr_source_root)) {
         path = FilePath(cr_source_root);
@@ -106,7 +107,7 @@
       *result = base::nix::GetXDGUserDirectory("DESKTOP", "Desktop");
       return true;
     case base::DIR_CACHE: {
-      scoped_ptr<base::Environment> env(base::Environment::Create());
+      std::unique_ptr<base::Environment> env(base::Environment::Create());
       FilePath cache_dir(base::nix::GetXDGDirectory(env.get(), "XDG_CACHE_HOME",
                                                     ".cache"));
       *result = cache_dir;
diff --git a/base/base_paths_win.cc b/base/base_paths_win.cc
index 7102f74..86ca450 100644
--- a/base/base_paths_win.cc
+++ b/base/base_paths_win.cc
@@ -70,7 +70,7 @@
 #if !defined(_WIN64)
       if (base::win::OSInfo::GetInstance()->wow64_status() ==
           base::win::OSInfo::WOW64_ENABLED) {
-        scoped_ptr<base::Environment> env(base::Environment::Create());
+        std::unique_ptr<base::Environment> env(base::Environment::Create());
         std::string programfiles_w6432;
         // 32-bit process running in WOW64 sets ProgramW6432 environment
         // variable. See
diff --git a/base/bind_helpers.h b/base/bind_helpers.h
index d19c749..590d788 100644
--- a/base/bind_helpers.h
+++ b/base/bind_helpers.h
@@ -121,10 +121,11 @@
 //
 // EXAMPLE OF Passed():
 //
-//   void TakesOwnership(scoped_ptr<Foo> arg) { }
-//   scoped_ptr<Foo> CreateFoo() { return scoped_ptr<Foo>(new Foo()); }
+//   void TakesOwnership(std::unique_ptr<Foo> arg) { }
+//   std::unique_ptr<Foo> CreateFoo() { return std::unique_ptr<Foo>(new Foo());
+//   }
 //
-//   scoped_ptr<Foo> f(new Foo());
+//   std::unique_ptr<Foo> f(new Foo());
 //
 //   // |cb| is given ownership of Foo(). |f| is now NULL.
 //   // You can use std::move(f) in place of &f, but it's more verbose.
@@ -353,7 +354,7 @@
 
 // An alternate implementation is to avoid the destructive copy, and instead
 // specialize ParamTraits<> for OwnedWrapper<> to change the StorageType to
-// a class that is essentially a scoped_ptr<>.
+// a class that is essentially a std::unique_ptr<>.
 //
 // The current implementation has the benefit though of leaving ParamTraits<>
 // fully in callback_internal.h as well as avoiding type conversions during
diff --git a/base/bind_unittest.cc b/base/bind_unittest.cc
index daf8c12..f8278011 100644
--- a/base/bind_unittest.cc
+++ b/base/bind_unittest.cc
@@ -10,8 +10,8 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "build/build_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -817,7 +817,7 @@
 };
 
 using MoveOnlyTypesToTest =
-    ::testing::Types<scoped_ptr<DeleteCounter>,
+    ::testing::Types<std::unique_ptr<DeleteCounter>,
                      std::unique_ptr<DeleteCounter>,
                      std::unique_ptr<DeleteCounter, CustomDeleter>>;
 TYPED_TEST_CASE(BindMoveOnlyTypeTest, MoveOnlyTypesToTest);
@@ -874,23 +874,23 @@
   EXPECT_EQ(1, deletes);
 }
 
-void VerifyVector(const std::vector<scoped_ptr<int>>& v) {
+void VerifyVector(const std::vector<std::unique_ptr<int>>& v) {
   ASSERT_EQ(1u, v.size());
   EXPECT_EQ(12345, *v[0]);
 }
 
-std::vector<scoped_ptr<int>> AcceptAndReturnMoveOnlyVector(
-    std::vector<scoped_ptr<int>> v) {
+std::vector<std::unique_ptr<int>> AcceptAndReturnMoveOnlyVector(
+    std::vector<std::unique_ptr<int>> v) {
   VerifyVector(v);
   return v;
 }
 
 // Test that a vector containing move-only types can be used with Callback.
 TEST_F(BindTest, BindMoveOnlyVector) {
-  using MoveOnlyVector = std::vector<scoped_ptr<int>>;
+  using MoveOnlyVector = std::vector<std::unique_ptr<int>>;
 
   MoveOnlyVector v;
-  v.push_back(make_scoped_ptr(new int(12345)));
+  v.push_back(WrapUnique(new int(12345)));
 
   // Early binding should work:
   base::Callback<MoveOnlyVector()> bound_cb =
diff --git a/base/build_time.cc b/base/build_time.cc
index 6f496f2..834b041 100644
--- a/base/build_time.cc
+++ b/base/build_time.cc
@@ -14,9 +14,10 @@
 
 Time GetBuildTime() {
   Time integral_build_time;
-  // BUILD_DATE is exactly "Mmm DD YYYY".
-  const char kDateTime[] = BUILD_DATE " 05:00:00";
-  bool result = Time::FromUTCString(kDateTime, &integral_build_time);
+  // BUILD_DATE is exactly "Mmm DD YYYY HH:MM:SS".
+  // See //build/write_build_date_header.py. "HH:MM:SS" is normally expected to
+  // be "05:00:00" but is not enforced here.
+  bool result = Time::FromUTCString(BUILD_DATE, &integral_build_time);
   DCHECK(result);
   return integral_build_time;
 }
diff --git a/base/build_time_unittest.cc b/base/build_time_unittest.cc
index 30d541a..3a357363 100644
--- a/base/build_time_unittest.cc
+++ b/base/build_time_unittest.cc
@@ -11,20 +11,27 @@
 TEST(BuildTime, DateLooksValid) {
   char build_date[] = BUILD_DATE;
 
-  EXPECT_EQ(11u, strlen(build_date));
+  EXPECT_EQ(20u, strlen(build_date));
   EXPECT_EQ(' ', build_date[3]);
   EXPECT_EQ(' ', build_date[6]);
-}
-
-TEST(BuildTime, TimeLooksValid) {
-  char build_time[] = "00:00:00";
-
-  EXPECT_EQ(8u, strlen(build_time));
-  EXPECT_EQ(':', build_time[2]);
-  EXPECT_EQ(':', build_time[5]);
+  EXPECT_EQ(' ', build_date[11]);
+  EXPECT_EQ('0', build_date[12]);
+  EXPECT_EQ('5', build_date[13]);
+  EXPECT_EQ(':', build_date[14]);
+  EXPECT_EQ('0', build_date[15]);
+  EXPECT_EQ('0', build_date[16]);
+  EXPECT_EQ(':', build_date[17]);
+  EXPECT_EQ('0', build_date[18]);
+  EXPECT_EQ('0', build_date[19]);
 }
 
 TEST(BuildTime, InThePast) {
-  EXPECT_TRUE(base::GetBuildTime() < base::Time::Now());
-  EXPECT_TRUE(base::GetBuildTime() < base::Time::NowFromSystemTime());
+  EXPECT_LT(base::GetBuildTime(), base::Time::Now());
+  EXPECT_LT(base::GetBuildTime(), base::Time::NowFromSystemTime());
+}
+
+TEST(BuildTime, NotTooFar) {
+  // BuildTime must be less than 45 days old.
+  base::Time cutoff(base::Time::Now() - base::TimeDelta::FromDays(45));
+  EXPECT_GT(base::GetBuildTime(), cutoff);
 }
diff --git a/base/callback.h b/base/callback.h
index c04e90d..abb907b 100644
--- a/base/callback.h
+++ b/base/callback.h
@@ -187,8 +187,8 @@
 //
 // PASSING PARAMETERS AS A scoped_ptr
 //
-//   void TakesOwnership(scoped_ptr<Foo> arg) {}
-//   scoped_ptr<Foo> f(new Foo);
+//   void TakesOwnership(std::unique_ptr<Foo> arg) {}
+//   std::unique_ptr<Foo> f(new Foo);
 //   // f becomes null during the following call.
 //   base::Closure cb = base::Bind(&TakesOwnership, base::Passed(&f));
 //
diff --git a/base/callback_internal.h b/base/callback_internal.h
index 16705578..7bff0ba 100644
--- a/base/callback_internal.h
+++ b/base/callback_internal.h
@@ -18,7 +18,6 @@
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 
 namespace base {
 namespace internal {
diff --git a/base/callback_list.h b/base/callback_list.h
index 7d6a478..848c900 100644
--- a/base/callback_list.h
+++ b/base/callback_list.h
@@ -6,13 +6,13 @@
 #define BASE_CALLBACK_LIST_H_
 
 #include <list>
+#include <memory>
 
 #include "base/callback.h"
 #include "base/callback_internal.h"
 #include "base/compiler_specific.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 
 // OVERVIEW:
 //
@@ -29,7 +29,7 @@
 //
 //   typedef base::Callback<void(const Foo&)> OnFooCallback;
 //
-//   scoped_ptr<base::CallbackList<void(const Foo&)>::Subscription>
+//   std::unique_ptr<base::CallbackList<void(const Foo&)>::Subscription>
 //   RegisterCallback(const OnFooCallback& cb) {
 //     return callback_list_.Add(cb);
 //   }
@@ -62,7 +62,7 @@
 //     // Do something.
 //   }
 //
-//   scoped_ptr<base::CallbackList<void(const Foo&)>::Subscription>
+//   std::unique_ptr<base::CallbackList<void(const Foo&)>::Subscription>
 //       foo_subscription_;
 //
 //   DISALLOW_COPY_AND_ASSIGN(MyWidgetListener);
@@ -103,9 +103,9 @@
   // Add a callback to the list. The callback will remain registered until the
   // returned Subscription is destroyed, which must occur before the
   // CallbackList is destroyed.
-  scoped_ptr<Subscription> Add(const CallbackType& cb) WARN_UNUSED_RESULT {
+  std::unique_ptr<Subscription> Add(const CallbackType& cb) WARN_UNUSED_RESULT {
     DCHECK(!cb.is_null());
-    return scoped_ptr<Subscription>(
+    return std::unique_ptr<Subscription>(
         new Subscription(this, callbacks_.insert(callbacks_.end(), cb)));
   }
 
diff --git a/base/callback_list_unittest.cc b/base/callback_list_unittest.cc
index 010efc54f..62081e9 100644
--- a/base/callback_list_unittest.cc
+++ b/base/callback_list_unittest.cc
@@ -4,12 +4,12 @@
 
 #include "base/callback_list.h"
 
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -38,7 +38,7 @@
     removal_subscription_.reset();
   }
   void SetSubscriptionToRemove(
-      scoped_ptr<CallbackList<void(void)>::Subscription> sub) {
+      std::unique_ptr<CallbackList<void(void)>::Subscription> sub) {
     removal_subscription_ = std::move(sub);
   }
 
@@ -46,7 +46,7 @@
 
  private:
   int total_;
-  scoped_ptr<CallbackList<void(void)>::Subscription> removal_subscription_;
+  std::unique_ptr<CallbackList<void(void)>::Subscription> removal_subscription_;
   DISALLOW_COPY_AND_ASSIGN(Remover);
 };
 
@@ -74,7 +74,7 @@
   bool added_;
   int total_;
   CallbackList<void(void)>* cb_reg_;
-  scoped_ptr<CallbackList<void(void)>::Subscription> subscription_;
+  std::unique_ptr<CallbackList<void(void)>::Subscription> subscription_;
   DISALLOW_COPY_AND_ASSIGN(Adder);
 };
 
@@ -118,42 +118,43 @@
   Summer s;
 
   CallbackList<void(int)> c1;
-  scoped_ptr<CallbackList<void(int)>::Subscription> subscription1 =
+  std::unique_ptr<CallbackList<void(int)>::Subscription> subscription1 =
       c1.Add(Bind(&Summer::AddOneParam, Unretained(&s)));
 
   c1.Notify(1);
   EXPECT_EQ(1, s.value());
 
   CallbackList<void(int, int)> c2;
-  scoped_ptr<CallbackList<void(int, int)>::Subscription> subscription2 =
+  std::unique_ptr<CallbackList<void(int, int)>::Subscription> subscription2 =
       c2.Add(Bind(&Summer::AddTwoParam, Unretained(&s)));
 
   c2.Notify(1, 2);
   EXPECT_EQ(3, s.value());
 
   CallbackList<void(int, int, int)> c3;
-  scoped_ptr<CallbackList<void(int, int, int)>::Subscription>
+  std::unique_ptr<CallbackList<void(int, int, int)>::Subscription>
       subscription3 = c3.Add(Bind(&Summer::AddThreeParam, Unretained(&s)));
 
   c3.Notify(1, 2, 3);
   EXPECT_EQ(6, s.value());
 
   CallbackList<void(int, int, int, int)> c4;
-  scoped_ptr<CallbackList<void(int, int, int, int)>::Subscription>
+  std::unique_ptr<CallbackList<void(int, int, int, int)>::Subscription>
       subscription4 = c4.Add(Bind(&Summer::AddFourParam, Unretained(&s)));
 
   c4.Notify(1, 2, 3, 4);
   EXPECT_EQ(10, s.value());
 
   CallbackList<void(int, int, int, int, int)> c5;
-  scoped_ptr<CallbackList<void(int, int, int, int, int)>::Subscription>
+  std::unique_ptr<CallbackList<void(int, int, int, int, int)>::Subscription>
       subscription5 = c5.Add(Bind(&Summer::AddFiveParam, Unretained(&s)));
 
   c5.Notify(1, 2, 3, 4, 5);
   EXPECT_EQ(15, s.value());
 
   CallbackList<void(int, int, int, int, int, int)> c6;
-  scoped_ptr<CallbackList<void(int, int, int, int, int, int)>::Subscription>
+  std::unique_ptr<
+      CallbackList<void(int, int, int, int, int, int)>::Subscription>
       subscription6 = c6.Add(Bind(&Summer::AddSixParam, Unretained(&s)));
 
   c6.Notify(1, 2, 3, 4, 5, 6);
@@ -166,9 +167,9 @@
   CallbackList<void(void)> cb_reg;
   Listener a, b, c;
 
-  scoped_ptr<CallbackList<void(void)>::Subscription> a_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> a_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&a)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> b_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> b_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&b)));
 
   EXPECT_TRUE(a_subscription.get());
@@ -181,7 +182,7 @@
 
   b_subscription.reset();
 
-  scoped_ptr<CallbackList<void(void)>::Subscription> c_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> c_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&c)));
 
   cb_reg.Notify();
@@ -201,9 +202,9 @@
   CallbackList<void(int)> cb_reg;
   Listener a(1), b(-1), c(1);
 
-  scoped_ptr<CallbackList<void(int)>::Subscription> a_subscription =
+  std::unique_ptr<CallbackList<void(int)>::Subscription> a_subscription =
       cb_reg.Add(Bind(&Listener::IncrementByMultipleOfScaler, Unretained(&a)));
-  scoped_ptr<CallbackList<void(int)>::Subscription> b_subscription =
+  std::unique_ptr<CallbackList<void(int)>::Subscription> b_subscription =
       cb_reg.Add(Bind(&Listener::IncrementByMultipleOfScaler, Unretained(&b)));
 
   EXPECT_TRUE(a_subscription.get());
@@ -216,7 +217,7 @@
 
   b_subscription.reset();
 
-  scoped_ptr<CallbackList<void(int)>::Subscription> c_subscription =
+  std::unique_ptr<CallbackList<void(int)>::Subscription> c_subscription =
       cb_reg.Add(Bind(&Listener::IncrementByMultipleOfScaler, Unretained(&c)));
 
   cb_reg.Notify(10);
@@ -237,15 +238,15 @@
   Listener a, b;
   Remover remover_1, remover_2;
 
-  scoped_ptr<CallbackList<void(void)>::Subscription> remover_1_sub =
-      cb_reg.Add(Bind(&Remover::IncrementTotalAndRemove,
-          Unretained(&remover_1)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> remover_2_sub =
-      cb_reg.Add(Bind(&Remover::IncrementTotalAndRemove,
-          Unretained(&remover_2)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> a_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> remover_1_sub =
+      cb_reg.Add(
+          Bind(&Remover::IncrementTotalAndRemove, Unretained(&remover_1)));
+  std::unique_ptr<CallbackList<void(void)>::Subscription> remover_2_sub =
+      cb_reg.Add(
+          Bind(&Remover::IncrementTotalAndRemove, Unretained(&remover_2)));
+  std::unique_ptr<CallbackList<void(void)>::Subscription> a_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&a)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> b_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> b_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&b)));
 
   // |remover_1| will remove itself.
@@ -278,9 +279,9 @@
   CallbackList<void(void)> cb_reg;
   Adder a(&cb_reg);
   Listener b;
-  scoped_ptr<CallbackList<void(void)>::Subscription> a_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> a_subscription =
       cb_reg.Add(Bind(&Adder::AddCallback, Unretained(&a)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> b_subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> b_subscription =
       cb_reg.Add(Bind(&Listener::IncrementTotal, Unretained(&b)));
 
   cb_reg.Notify();
@@ -308,7 +309,7 @@
   cb_reg.set_removal_callback(
       Bind(&Counter::Increment, Unretained(&remove_count)));
 
-  scoped_ptr<CallbackList<void(void)>::Subscription> subscription =
+  std::unique_ptr<CallbackList<void(void)>::Subscription> subscription =
       cb_reg.Add(Bind(&DoNothing));
 
   // Removing a subscription outside of iteration signals the callback.
@@ -318,12 +319,12 @@
 
   // Configure two subscriptions to remove themselves.
   Remover remover_1, remover_2;
-  scoped_ptr<CallbackList<void(void)>::Subscription> remover_1_sub =
-      cb_reg.Add(Bind(&Remover::IncrementTotalAndRemove,
-          Unretained(&remover_1)));
-  scoped_ptr<CallbackList<void(void)>::Subscription> remover_2_sub =
-      cb_reg.Add(Bind(&Remover::IncrementTotalAndRemove,
-          Unretained(&remover_2)));
+  std::unique_ptr<CallbackList<void(void)>::Subscription> remover_1_sub =
+      cb_reg.Add(
+          Bind(&Remover::IncrementTotalAndRemove, Unretained(&remover_1)));
+  std::unique_ptr<CallbackList<void(void)>::Subscription> remover_2_sub =
+      cb_reg.Add(
+          Bind(&Remover::IncrementTotalAndRemove, Unretained(&remover_2)));
   remover_1.SetSubscriptionToRemove(std::move(remover_1_sub));
   remover_2.SetSubscriptionToRemove(std::move(remover_2_sub));
 
diff --git a/base/callback_list_unittest.nc b/base/callback_list_unittest.nc
index ef193f4..0ddc135 100644
--- a/base/callback_list_unittest.nc
+++ b/base/callback_list_unittest.nc
@@ -7,12 +7,12 @@
 
 #include "base/callback_list.h"
 
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 
 namespace base {
 
@@ -26,9 +26,9 @@
  public:
   FooListener() {}
 
-  void GotAScopedFoo(scoped_ptr<Foo> f) { foo_ = std::move(f); }
+  void GotAScopedFoo(std::unique_ptr<Foo> f) { foo_ = std::move(f); }
 
-  scoped_ptr<Foo> foo_;
+  std::unique_ptr<Foo> foo_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(FooListener);
@@ -45,10 +45,10 @@
 // first callback has been run.
 void WontCompile() {
   FooListener f;
-  CallbackList<void(scoped_ptr<Foo>)> c1;
-  scoped_ptr<CallbackList<void(scoped_ptr<Foo>)>::Subscription> sub =
+  CallbackList<void(std::unique_ptr<Foo>)> c1;
+  std::unique_ptr<CallbackList<void(std::unique_ptr<Foo>)>::Subscription> sub =
       c1.Add(Bind(&FooListener::GotAScopedFoo, Unretained(&f)));
-  c1.Notify(scoped_ptr<Foo>(new Foo()));
+  c1.Notify(std::unique_ptr<Foo>(new Foo()));
 }
 
 #endif
diff --git a/base/callback_unittest.cc b/base/callback_unittest.cc
index 1f492d42..176ea06 100644
--- a/base/callback_unittest.cc
+++ b/base/callback_unittest.cc
@@ -2,12 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/bind.h"
 #include "base/callback.h"
+
+#include <memory>
+
+#include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/callback_internal.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
diff --git a/base/command_line_unittest.cc b/base/command_line_unittest.cc
index 967ce1c5..bcfc6c5 100644
--- a/base/command_line_unittest.cc
+++ b/base/command_line_unittest.cc
@@ -2,13 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/command_line.h"
+
+#include <memory>
 #include <string>
 #include <vector>
 
-#include "base/command_line.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -390,7 +391,8 @@
 
 // Test that copies of CommandLine have a valid StringPiece map.
 TEST(CommandLineTest, Copy) {
-  scoped_ptr<CommandLine> initial(new CommandLine(CommandLine::NO_PROGRAM));
+  std::unique_ptr<CommandLine> initial(
+      new CommandLine(CommandLine::NO_PROGRAM));
   initial->AppendSwitch("a");
   initial->AppendSwitch("bbbbbbbbbbbbbbb");
   initial->AppendSwitch("c");
diff --git a/base/containers/mru_cache_unittest.cc b/base/containers/mru_cache_unittest.cc
index d38337e..99b14d1 100644
--- a/base/containers/mru_cache_unittest.cc
+++ b/base/containers/mru_cache_unittest.cc
@@ -2,12 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/containers/mru_cache.h"
+
 #include <stddef.h>
 
-#include "base/containers/mru_cache.h"
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+namespace base {
+
 namespace {
 
 int cached_item_live_count = 0;
@@ -188,15 +193,15 @@
 
 // Make sure that the owning version release its pointers properly.
 TEST(MRUCacheTest, Owning) {
-  using Cache = base::MRUCache<int, scoped_ptr<CachedItem>>;
+  using Cache = base::MRUCache<int, std::unique_ptr<CachedItem>>;
   Cache cache(Cache::NO_AUTO_EVICT);
 
   int initial_count = cached_item_live_count;
 
   // First insert and item and then overwrite it.
   static const int kItem1Key = 1;
-  cache.Put(kItem1Key, make_scoped_ptr(new CachedItem(20)));
-  cache.Put(kItem1Key, make_scoped_ptr(new CachedItem(22)));
+  cache.Put(kItem1Key, WrapUnique(new CachedItem(20)));
+  cache.Put(kItem1Key, WrapUnique(new CachedItem(22)));
 
   // There should still be one item, and one extra live item.
   Cache::iterator iter = cache.Get(kItem1Key);
@@ -212,8 +217,8 @@
   // go away.
   {
     Cache cache2(Cache::NO_AUTO_EVICT);
-    cache2.Put(1, make_scoped_ptr(new CachedItem(20)));
-    cache2.Put(2, make_scoped_ptr(new CachedItem(20)));
+    cache2.Put(1, WrapUnique(new CachedItem(20)));
+    cache2.Put(2, WrapUnique(new CachedItem(20)));
   }
 
   // There should be no objects leaked.
@@ -222,8 +227,8 @@
   // Check that Clear() also frees things correctly.
   {
     Cache cache2(Cache::NO_AUTO_EVICT);
-    cache2.Put(1, make_scoped_ptr(new CachedItem(20)));
-    cache2.Put(2, make_scoped_ptr(new CachedItem(20)));
+    cache2.Put(1, WrapUnique(new CachedItem(20)));
+    cache2.Put(2, WrapUnique(new CachedItem(20)));
     EXPECT_EQ(initial_count + 2, cached_item_live_count);
     cache2.Clear();
     EXPECT_EQ(initial_count, cached_item_live_count);
@@ -231,7 +236,7 @@
 }
 
 TEST(MRUCacheTest, AutoEvict) {
-  using Cache = base::MRUCache<int, scoped_ptr<CachedItem>>;
+  using Cache = base::MRUCache<int, std::unique_ptr<CachedItem>>;
   static const Cache::size_type kMaxSize = 3;
 
   int initial_count = cached_item_live_count;
@@ -240,10 +245,10 @@
     Cache cache(kMaxSize);
 
     static const int kItem1Key = 1, kItem2Key = 2, kItem3Key = 3, kItem4Key = 4;
-    cache.Put(kItem1Key, make_scoped_ptr(new CachedItem(20)));
-    cache.Put(kItem2Key, make_scoped_ptr(new CachedItem(21)));
-    cache.Put(kItem3Key, make_scoped_ptr(new CachedItem(22)));
-    cache.Put(kItem4Key, make_scoped_ptr(new CachedItem(23)));
+    cache.Put(kItem1Key, WrapUnique(new CachedItem(20)));
+    cache.Put(kItem2Key, WrapUnique(new CachedItem(21)));
+    cache.Put(kItem3Key, WrapUnique(new CachedItem(22)));
+    cache.Put(kItem4Key, WrapUnique(new CachedItem(23)));
 
     // The cache should only have kMaxSize items in it even though we inserted
     // more.
@@ -375,3 +380,5 @@
     EXPECT_EQ(item1.value, iter->second.value);
   }
 }
+
+}  // namespace base
diff --git a/base/containers/scoped_ptr_hash_map.h b/base/containers/scoped_ptr_hash_map.h
index dd100c6..f513f06 100644
--- a/base/containers/scoped_ptr_hash_map.h
+++ b/base/containers/scoped_ptr_hash_map.h
@@ -8,19 +8,19 @@
 #include <stddef.h>
 
 #include <algorithm>
+#include <memory>
 #include <utility>
 
 #include "base/containers/hash_tables.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/stl_util.h"
 
 namespace base {
 
 // Deprecated. Use std::unordered_map instead. https://crbug.com/579229
 //
-// This type acts like a hash_map<K, scoped_ptr<V, D> >, based on top of
+// This type acts like a hash_map<K, std::unique_ptr<V, D> >, based on top of
 // base::hash_map. The ScopedPtrHashMap has ownership of all values in the data
 // structure.
 template <typename Key, typename ScopedPtr>
diff --git a/base/containers/scoped_ptr_hash_map_unittest.cc b/base/containers/scoped_ptr_hash_map_unittest.cc
index 38fc91a..eddabaf 100644
--- a/base/containers/scoped_ptr_hash_map_unittest.cc
+++ b/base/containers/scoped_ptr_hash_map_unittest.cc
@@ -4,7 +4,9 @@
 
 #include "base/containers/scoped_ptr_hash_map.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
+#include "base/memory/ptr_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -56,8 +58,9 @@
   DeleteCounter::ResetCounter();
   CountingDeleter::ResetCounter();
   {
-    ScopedPtrHashMap<int, scoped_ptr<DeleteCounter, CountingDeleter>> map;
-    map.set(key, scoped_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
+    ScopedPtrHashMap<int, std::unique_ptr<DeleteCounter, CountingDeleter>> map;
+    map.set(key,
+            std::unique_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
   }
   EXPECT_EQ(1, DeleteCounter::delete_count());
   EXPECT_EQ(1, CountingDeleter::count());
@@ -66,9 +69,9 @@
   DeleteCounter::ResetCounter();
   CountingDeleter::ResetCounter();
   {
-    ScopedPtrHashMap<int, scoped_ptr<DeleteCounter, CountingDeleter>> map;
-    map.erase(map.set(
-        key, scoped_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter)));
+    ScopedPtrHashMap<int, std::unique_ptr<DeleteCounter, CountingDeleter>> map;
+    map.erase(map.set(key, std::unique_ptr<DeleteCounter, CountingDeleter>(
+                               new DeleteCounter)));
     EXPECT_EQ(1, DeleteCounter::delete_count());
     EXPECT_EQ(1, CountingDeleter::count());
   }
@@ -79,10 +82,13 @@
   DeleteCounter::ResetCounter();
   CountingDeleter::ResetCounter();
   {
-    ScopedPtrHashMap<int, scoped_ptr<DeleteCounter, CountingDeleter>> map;
-    map.set(key, scoped_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
-    map.set(key, scoped_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
-    map.set(key, scoped_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
+    ScopedPtrHashMap<int, std::unique_ptr<DeleteCounter, CountingDeleter>> map;
+    map.set(key,
+            std::unique_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
+    map.set(key,
+            std::unique_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
+    map.set(key,
+            std::unique_ptr<DeleteCounter, CountingDeleter>(new DeleteCounter));
     EXPECT_EQ(2, DeleteCounter::delete_count());
     EXPECT_EQ(2, CountingDeleter::count());
   }
@@ -93,9 +99,9 @@
 // Test that using a value type from a namespace containing an ignore_result
 // function compiles correctly.
 TEST(ScopedPtrHashMapTest, IgnoreResultCompile) {
-  ScopedPtrHashMap<int, scoped_ptr<namespace_with_ignore_result::Value>>
+  ScopedPtrHashMap<int, std::unique_ptr<namespace_with_ignore_result::Value>>
       scoped_map;
-  scoped_map.add(1, make_scoped_ptr(new namespace_with_ignore_result::Value));
+  scoped_map.add(1, WrapUnique(new namespace_with_ignore_result::Value));
 }
 
 }  // namespace
diff --git a/base/debug/asan_invalid_access.cc b/base/debug/asan_invalid_access.cc
index ba0a10b..ba222ae 100644
--- a/base/debug/asan_invalid_access.cc
+++ b/base/debug/asan_invalid_access.cc
@@ -2,12 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/debug/asan_invalid_access.h"
+
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/debug/alias.h"
-#include "base/debug/asan_invalid_access.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
 
 #if defined(OS_WIN)
@@ -61,7 +63,7 @@
 
 void AsanHeapOverflow() {
   // Declares the array as volatile to make sure it doesn't get optimized away.
-  scoped_ptr<volatile int[]> array(
+  std::unique_ptr<volatile int[]> array(
       const_cast<volatile int*>(new int[kArraySize]));
   int dummy = array[kArraySize];
   base::debug::Alias(&dummy);
@@ -69,7 +71,7 @@
 
 void AsanHeapUnderflow() {
   // Declares the array as volatile to make sure it doesn't get optimized away.
-  scoped_ptr<volatile int[]> array(
+  std::unique_ptr<volatile int[]> array(
       const_cast<volatile int*>(new int[kArraySize]));
   // We need to store the underflow address in a temporary variable as trying to
   // access array[-1] will trigger a warning C4245: "conversion from 'int' to
@@ -81,7 +83,7 @@
 
 void AsanHeapUseAfterFree() {
   // Declares the array as volatile to make sure it doesn't get optimized away.
-  scoped_ptr<volatile int[]> array(
+  std::unique_ptr<volatile int[]> array(
       const_cast<volatile int*>(new int[kArraySize]));
   volatile int* dangling = array.get();
   array.reset();
diff --git a/base/debug/close_handle_hook_win.cc b/base/debug/close_handle_hook_win.cc
index 6ff6fa2..168de67 100644
--- a/base/debug/close_handle_hook_win.cc
+++ b/base/debug/close_handle_hook_win.cc
@@ -9,11 +9,11 @@
 #include <stddef.h>
 
 #include <algorithm>
+#include <memory>
 #include <vector>
 
 #include "base/lazy_instance.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/win/iat_patch_function.h"
 #include "base/win/pe_image.h"
 #include "base/win/scoped_handle.h"
@@ -243,7 +243,7 @@
 void PatchLoadedModules(HandleHooks* hooks) {
   const DWORD kSize = 256;
   DWORD returned;
-  scoped_ptr<HMODULE[]> modules(new HMODULE[kSize]);
+  std::unique_ptr<HMODULE[]> modules(new HMODULE[kSize]);
   if (!EnumProcessModules(GetCurrentProcess(), modules.get(),
                           kSize * sizeof(HMODULE), &returned)) {
     return;
diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc
index cd6dc76..e92d5a5 100644
--- a/base/debug/debugger_posix.cc
+++ b/base/debug/debugger_posix.cc
@@ -3,8 +3,6 @@
 // found in the LICENSE file.
 
 #include "base/debug/debugger.h"
-#include "base/macros.h"
-#include "build/build_config.h"
 
 #include <errno.h>
 #include <fcntl.h>
@@ -16,8 +14,12 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <memory>
 #include <vector>
 
+#include "base/macros.h"
+#include "build/build_config.h"
+
 #if defined(__GLIBCXX__)
 #include <cxxabi.h>
 #endif
@@ -38,7 +40,6 @@
 
 #include "base/debug/alias.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/strings/string_piece.h"
 
diff --git a/base/debug/leak_tracker_unittest.cc b/base/debug/leak_tracker_unittest.cc
index 99df4c1..8b4c568 100644
--- a/base/debug/leak_tracker_unittest.cc
+++ b/base/debug/leak_tracker_unittest.cc
@@ -3,7 +3,9 @@
 // found in the LICENSE file.
 
 #include "base/debug/leak_tracker.h"
-#include "base/memory/scoped_ptr.h"
+
+#include <memory>
+
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -29,9 +31,9 @@
   EXPECT_EQ(-1, LeakTracker<ClassB>::NumLiveInstances());
 
   // Use scoped_ptr so compiler doesn't complain about unused variables.
-  scoped_ptr<ClassA> a1(new ClassA);
-  scoped_ptr<ClassB> b1(new ClassB);
-  scoped_ptr<ClassB> b2(new ClassB);
+  std::unique_ptr<ClassA> a1(new ClassA);
+  std::unique_ptr<ClassB> b1(new ClassB);
+  std::unique_ptr<ClassB> b2(new ClassB);
 
   EXPECT_EQ(-1, LeakTracker<ClassA>::NumLiveInstances());
   EXPECT_EQ(-1, LeakTracker<ClassB>::NumLiveInstances());
@@ -52,7 +54,7 @@
     EXPECT_EQ(1, LeakTracker<ClassA>::NumLiveInstances());
     EXPECT_EQ(2, LeakTracker<ClassB>::NumLiveInstances());
 
-    scoped_ptr<ClassA> a2(new ClassA);
+    std::unique_ptr<ClassA> a2(new ClassA);
 
     EXPECT_EQ(2, LeakTracker<ClassA>::NumLiveInstances());
     EXPECT_EQ(2, LeakTracker<ClassB>::NumLiveInstances());
@@ -72,10 +74,10 @@
 TEST(LeakTrackerTest, LinkedList) {
   EXPECT_EQ(0, LeakTracker<ClassB>::NumLiveInstances());
 
-  scoped_ptr<ClassA> a1(new ClassA);
-  scoped_ptr<ClassA> a2(new ClassA);
-  scoped_ptr<ClassA> a3(new ClassA);
-  scoped_ptr<ClassA> a4(new ClassA);
+  std::unique_ptr<ClassA> a1(new ClassA);
+  std::unique_ptr<ClassA> a2(new ClassA);
+  std::unique_ptr<ClassA> a3(new ClassA);
+  std::unique_ptr<ClassA> a4(new ClassA);
 
   EXPECT_EQ(4, LeakTracker<ClassA>::NumLiveInstances());
 
@@ -88,7 +90,7 @@
   EXPECT_EQ(2, LeakTracker<ClassA>::NumLiveInstances());
 
   // Append to the new tail of the list (a3).
-  scoped_ptr<ClassA> a5(new ClassA);
+  std::unique_ptr<ClassA> a5(new ClassA);
   EXPECT_EQ(3, LeakTracker<ClassA>::NumLiveInstances());
 
   a2.reset();
diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc
index 0551784e..fc3ee14 100644
--- a/base/debug/stack_trace_posix.cc
+++ b/base/debug/stack_trace_posix.cc
@@ -17,12 +17,11 @@
 #include <unistd.h>
 
 #include <map>
+#include <memory>
 #include <ostream>
 #include <string>
 #include <vector>
 
-#include "base/memory/free_deleter.h"
-
 #if defined(__GLIBCXX__)
 #include <cxxabi.h>
 #endif
@@ -38,7 +37,7 @@
 #include "base/debug/proc_maps_linux.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/free_deleter.h"
 #include "base/memory/singleton.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/posix/eintr_wrapper.h"
@@ -99,7 +98,7 @@
 
     // Try to demangle the mangled symbol candidate.
     int status = 0;
-    scoped_ptr<char, base::FreeDeleter> demangled_symbol(
+    std::unique_ptr<char, base::FreeDeleter> demangled_symbol(
         abi::__cxa_demangle(mangled_symbol.c_str(), NULL, 0, &status));
     if (status == 0) {  // Demangling is successful.
       // Remove the mangled symbol.
@@ -180,8 +179,8 @@
   // Below part is async-signal unsafe (uses malloc), so execute it only
   // when we are not executing the signal handler.
   if (in_signal_handler == 0) {
-    scoped_ptr<char*, FreeDeleter>
-        trace_symbols(backtrace_symbols(trace, size));
+    std::unique_ptr<char*, FreeDeleter> trace_symbols(
+        backtrace_symbols(trace, size));
     if (trace_symbols.get()) {
       for (size_t i = 0; i < size; ++i) {
         std::string trace_symbol = trace_symbols.get()[i];
diff --git a/base/debug/stack_trace_win.cc b/base/debug/stack_trace_win.cc
index 0596752..95da513 100644
--- a/base/debug/stack_trace_win.cc
+++ b/base/debug/stack_trace_win.cc
@@ -71,7 +71,7 @@
   // add the directory of the executable to symbol search path.
   // All following errors are non-fatal.
   const size_t kSymbolsArraySize = 1024;
-  scoped_ptr<wchar_t[]> symbols_path(new wchar_t[kSymbolsArraySize]);
+  std::unique_ptr<wchar_t[]> symbols_path(new wchar_t[kSymbolsArraySize]);
 
   // Note: The below function takes buffer size as number of characters,
   // not number of bytes!
diff --git a/base/environment.cc b/base/environment.cc
index adb7387..d14ce87 100644
--- a/base/environment.cc
+++ b/base/environment.cc
@@ -69,7 +69,7 @@
     if (value_length == 0)
       return false;
     if (result) {
-      scoped_ptr<wchar_t[]> value(new wchar_t[value_length]);
+      std::unique_ptr<wchar_t[]> value(new wchar_t[value_length]);
       ::GetEnvironmentVariable(UTF8ToWide(variable_name).c_str(), value.get(),
                                value_length);
       *result = WideToUTF8(value.get());
@@ -184,8 +184,8 @@
 
 #elif defined(OS_POSIX)
 
-scoped_ptr<char*[]> AlterEnvironment(const char* const* const env,
-                                     const EnvironmentMap& changes) {
+std::unique_ptr<char* []> AlterEnvironment(const char* const* const env,
+                                           const EnvironmentMap& changes) {
   std::string value_storage;  // Holds concatenated null-terminated strings.
   std::vector<size_t> result_indices;  // Line indices into value_storage.
 
@@ -218,7 +218,7 @@
   size_t pointer_count_required =
       result_indices.size() + 1 +  // Null-terminated array of pointers.
       (value_storage.size() + sizeof(char*) - 1) / sizeof(char*);  // Buffer.
-  scoped_ptr<char*[]> result(new char*[pointer_count_required]);
+  std::unique_ptr<char* []> result(new char*[pointer_count_required]);
 
   // The string storage goes after the array of pointers.
   char* storage_data = reinterpret_cast<char*>(
diff --git a/base/environment.h b/base/environment.h
index c8811e2..12eeaf7e 100644
--- a/base/environment.h
+++ b/base/environment.h
@@ -6,10 +6,10 @@
 #define BASE_ENVIRONMENT_H_
 
 #include <map>
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "build/build_config.h"
 
@@ -79,7 +79,7 @@
 // returned array will have appended to it the storage for the array itself so
 // there is only one pointer to manage, but this means that you can't copy the
 // array without keeping the original around.
-BASE_EXPORT scoped_ptr<char*[]> AlterEnvironment(
+BASE_EXPORT std::unique_ptr<char* []> AlterEnvironment(
     const char* const* env,
     const EnvironmentMap& changes);
 
diff --git a/base/environment_unittest.cc b/base/environment_unittest.cc
index 77e9717..ef264cf 100644
--- a/base/environment_unittest.cc
+++ b/base/environment_unittest.cc
@@ -3,7 +3,9 @@
 // found in the LICENSE file.
 
 #include "base/environment.h"
-#include "base/memory/scoped_ptr.h"
+
+#include <memory>
+
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
@@ -14,14 +16,14 @@
 
 TEST_F(EnvironmentTest, GetVar) {
   // Every setup should have non-empty PATH...
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   std::string env_value;
   EXPECT_TRUE(env->GetVar("PATH", &env_value));
   EXPECT_NE(env_value, "");
 }
 
 TEST_F(EnvironmentTest, GetVarReverse) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   const char kFooUpper[] = "FOO";
   const char kFooLower[] = "foo";
 
@@ -50,12 +52,12 @@
 
 TEST_F(EnvironmentTest, HasVar) {
   // Every setup should have PATH...
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   EXPECT_TRUE(env->HasVar("PATH"));
 }
 
 TEST_F(EnvironmentTest, SetVar) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
 
   const char kFooUpper[] = "FOO";
   const char kFooLower[] = "foo";
@@ -70,7 +72,7 @@
 }
 
 TEST_F(EnvironmentTest, UnSetVar) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
 
   const char kFooUpper[] = "FOO";
   const char kFooLower[] = "foo";
@@ -128,7 +130,7 @@
   const char* const empty[] = { NULL };
   const char* const a2[] = { "A=2", NULL };
   EnvironmentMap changes;
-  scoped_ptr<char*[]> e;
+  std::unique_ptr<char* []> e;
 
   e = AlterEnvironment(empty, changes);
   EXPECT_TRUE(e[0] == NULL);
diff --git a/base/feature_list.cc b/base/feature_list.cc
index 2e790986..da5efe0 100644
--- a/base/feature_list.cc
+++ b/base/feature_list.cc
@@ -143,7 +143,7 @@
 }
 
 // static
-void FeatureList::InitializeInstance(const std::string& enable_features,
+bool FeatureList::InitializeInstance(const std::string& enable_features,
                                      const std::string& disable_features) {
   // We want to initialize a new instance here to support command-line features
   // in testing better. For example, we initialize a dummy instance in
@@ -153,17 +153,20 @@
   // For example, we initialize an instance in chrome/browser/
   // chrome_browser_main.cc and do not override it in content/browser/
   // browser_main_loop.cc.
+  bool instance_existed_before = false;
   if (g_instance) {
     if (g_instance->initialized_from_command_line_)
-      return;
+      return false;
 
     delete g_instance;
     g_instance = nullptr;
+    instance_existed_before = true;
   }
 
-  scoped_ptr<base::FeatureList> feature_list(new base::FeatureList);
+  std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
   feature_list->InitializeFromCommandLine(enable_features, disable_features);
   base::FeatureList::SetInstance(std::move(feature_list));
+  return !instance_existed_before;
 }
 
 // static
@@ -172,7 +175,7 @@
 }
 
 // static
-void FeatureList::SetInstance(scoped_ptr<FeatureList> instance) {
+void FeatureList::SetInstance(std::unique_ptr<FeatureList> instance) {
   DCHECK(!g_instance);
   instance->FinalizeInitialization();
 
diff --git a/base/feature_list.h b/base/feature_list.h
index c4d6e83f..44aeb4b 100644
--- a/base/feature_list.h
+++ b/base/feature_list.h
@@ -6,13 +6,13 @@
 #define BASE_FEATURE_LIST_H_
 
 #include <map>
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/base_export.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/synchronization/lock.h"
 
@@ -147,10 +147,10 @@
 
   // Initializes and sets an instance of FeatureList with feature overrides via
   // command-line flags |enable_features| and |disable_features| if one has not
-  // already been set from command-line flags. No-op otherwise. See
-  // InitializeFromCommandLine for more details about |enable_features| and
-  // |disable_features| parameters.
-  static void InitializeInstance(const std::string& enable_features,
+  // already been set from command-line flags. Returns true if an instance did
+  // not previously exist. See InitializeFromCommandLine() for more details
+  // about |enable_features| and |disable_features| parameters.
+  static bool InitializeInstance(const std::string& enable_features,
                                  const std::string& disable_features);
 
   // Returns the singleton instance of FeatureList. Will return null until an
@@ -159,7 +159,7 @@
 
   // Registers the given |instance| to be the singleton feature list for this
   // process. This should only be called once and |instance| must not be null.
-  static void SetInstance(scoped_ptr<FeatureList> instance);
+  static void SetInstance(std::unique_ptr<FeatureList> instance);
 
   // Clears the previously-registered singleton instance for tests.
   static void ClearInstanceForTesting();
diff --git a/base/feature_list_unittest.cc b/base/feature_list_unittest.cc
index 58a7ebc..b49177f 100644
--- a/base/feature_list_unittest.cc
+++ b/base/feature_list_unittest.cc
@@ -11,6 +11,7 @@
 
 #include "base/format_macros.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/metrics/field_trial.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -42,11 +43,11 @@
 class FeatureListTest : public testing::Test {
  public:
   FeatureListTest() : feature_list_(nullptr) {
-    RegisterFeatureListInstance(make_scoped_ptr(new FeatureList));
+    RegisterFeatureListInstance(WrapUnique(new FeatureList));
   }
   ~FeatureListTest() override { ClearFeatureListInstance(); }
 
-  void RegisterFeatureListInstance(scoped_ptr<FeatureList> feature_list) {
+  void RegisterFeatureListInstance(std::unique_ptr<FeatureList> feature_list) {
     FeatureList::ClearInstanceForTesting();
     feature_list_ = feature_list.get();
     FeatureList::SetInstance(std::move(feature_list));
@@ -93,7 +94,7 @@
                                     test_case.disable_features));
 
     ClearFeatureListInstance();
-    scoped_ptr<FeatureList> feature_list(new FeatureList);
+    std::unique_ptr<FeatureList> feature_list(new FeatureList);
     feature_list->InitializeFromCommandLine(test_case.enable_features,
                                             test_case.disable_features);
     RegisterFeatureListInstance(std::move(feature_list));
@@ -149,7 +150,7 @@
     ClearFeatureListInstance();
 
     FieldTrialList field_trial_list(nullptr);
-    scoped_ptr<FeatureList> feature_list(new FeatureList);
+    std::unique_ptr<FeatureList> feature_list(new FeatureList);
 
     FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A");
     FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B");
@@ -181,7 +182,7 @@
 
 TEST_F(FeatureListTest, FieldTrialAssociateUseDefault) {
   FieldTrialList field_trial_list(nullptr);
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
 
   FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A");
   FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B");
@@ -212,7 +213,7 @@
   ClearFeatureListInstance();
 
   FieldTrialList field_trial_list(nullptr);
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
 
   // The feature is explicitly enabled on the command-line.
   feature_list->InitializeFromCommandLine(kFeatureOffByDefaultName, "");
@@ -236,7 +237,7 @@
   ClearFeatureListInstance();
 
   FieldTrialList field_trial_list(nullptr);
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
 
   // No features are overridden from the command line yet
   EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine(
@@ -311,7 +312,7 @@
     ClearFeatureListInstance();
 
     FieldTrialList field_trial_list(nullptr);
-    scoped_ptr<FeatureList> feature_list(new FeatureList);
+    std::unique_ptr<FeatureList> feature_list(new FeatureList);
     feature_list->InitializeFromCommandLine(test_case.enable_features,
                                             test_case.disable_features);
 
@@ -354,7 +355,7 @@
 TEST_F(FeatureListTest, GetFeatureOverrides) {
   ClearFeatureListInstance();
   FieldTrialList field_trial_list(nullptr);
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
   feature_list->InitializeFromCommandLine("A,X", "D");
 
   FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group");
@@ -375,7 +376,7 @@
 TEST_F(FeatureListTest, GetFeatureOverrides_UseDefault) {
   ClearFeatureListInstance();
   FieldTrialList field_trial_list(nullptr);
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
   feature_list->InitializeFromCommandLine("A,X", "D");
 
   FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group");
@@ -396,7 +397,7 @@
   ClearFeatureListInstance();
   FieldTrialList field_trial_list(nullptr);
   FieldTrialList::CreateFieldTrial("Trial", "Group");
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
   feature_list->InitializeFromCommandLine("A,OffByDefault<Trial,X", "D");
   RegisterFeatureListInstance(std::move(feature_list));
 
@@ -410,7 +411,7 @@
   FieldTrialList field_trial_list(nullptr);
   FieldTrialList::CreateFieldTrial("T1", "Group");
   FieldTrialList::CreateFieldTrial("T2", "Group");
-  scoped_ptr<FeatureList> feature_list(new FeatureList);
+  std::unique_ptr<FeatureList> feature_list(new FeatureList);
   feature_list->InitializeFromCommandLine(
       "A,*OffByDefault<T1,*OnByDefault<T2,X", "D");
   RegisterFeatureListInstance(std::move(feature_list));
@@ -427,7 +428,7 @@
 TEST_F(FeatureListTest, InitializeInstance) {
   ClearFeatureListInstance();
 
-  scoped_ptr<base::FeatureList> feature_list(new base::FeatureList);
+  std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
   FeatureList::SetInstance(std::move(feature_list));
   EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOnByDefault));
   EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
diff --git a/base/file_version_info_unittest.cc b/base/file_version_info_unittest.cc
index 4c0ba6ff..ac5320f 100644
--- a/base/file_version_info_unittest.cc
+++ b/base/file_version_info_unittest.cc
@@ -2,12 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/file_version_info.h"
+
 #include <stddef.h>
 
-#include "base/file_version_info.h"
+#include <memory>
+
 #include "base/files/file_path.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -60,7 +62,7 @@
   FilePath dll_path = GetTestDataPath();
   dll_path = dll_path.Append(kDLLName);
 
-  scoped_ptr<FileVersionInfo> version_info(
+  std::unique_ptr<FileVersionInfo> version_info(
       FileVersionInfo::CreateFileVersionInfo(dll_path));
 
   int j = 0;
@@ -101,7 +103,7 @@
     FilePath dll_path = GetTestDataPath();
     dll_path = dll_path.Append(kDLLNames[i]);
 
-    scoped_ptr<FileVersionInfo> version_info(
+    std::unique_ptr<FileVersionInfo> version_info(
         FileVersionInfo::CreateFileVersionInfo(dll_path));
 
     EXPECT_EQ(kExpected[i], version_info->is_official_build());
@@ -114,7 +116,7 @@
   FilePath dll_path = GetTestDataPath();
   dll_path = dll_path.AppendASCII("FileVersionInfoTest1.dll");
 
-  scoped_ptr<FileVersionInfo> version_info(
+  std::unique_ptr<FileVersionInfo> version_info(
       FileVersionInfo::CreateFileVersionInfo(dll_path));
 
   // Test few existing properties.
diff --git a/base/file_version_info_win.h b/base/file_version_info_win.h
index 9b59670..1e152a8 100644
--- a/base/file_version_info_win.h
+++ b/base/file_version_info_win.h
@@ -5,13 +5,13 @@
 #ifndef BASE_FILE_VERSION_INFO_WIN_H_
 #define BASE_FILE_VERSION_INFO_WIN_H_
 
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/file_version_info.h"
 #include "base/macros.h"
 #include "base/memory/free_deleter.h"
-#include "base/memory/scoped_ptr.h"
 
 struct tagVS_FIXEDFILEINFO;
 typedef tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO;
@@ -51,7 +51,7 @@
   VS_FIXEDFILEINFO* fixed_file_info() { return fixed_file_info_; }
 
  private:
-  scoped_ptr<char, base::FreeDeleter> data_;
+  std::unique_ptr<char, base::FreeDeleter> data_;
   WORD language_;
   WORD code_page_;
   // This is a pointer into the data_ if it exists. Otherwise NULL.
diff --git a/base/files/file_path_watcher_linux.cc b/base/files/file_path_watcher_linux.cc
index a75eaba..15285ae 100644
--- a/base/files/file_path_watcher_linux.cc
+++ b/base/files/file_path_watcher_linux.cc
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <map>
+#include <memory>
 #include <set>
 #include <utility>
 #include <vector>
@@ -27,7 +28,6 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/single_thread_task_runner.h"
 #include "base/stl_util.h"
diff --git a/base/files/file_path_watcher_unittest.cc b/base/files/file_path_watcher_unittest.cc
index a860b13..027e0c2 100644
--- a/base/files/file_path_watcher_unittest.cc
+++ b/base/files/file_path_watcher_unittest.cc
@@ -227,7 +227,7 @@
 // Basic test: Create the file and verify that we notice.
 TEST_F(FilePathWatcherTest, NewFile) {
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   ASSERT_TRUE(WriteFile(test_file(), "content"));
@@ -240,7 +240,7 @@
   ASSERT_TRUE(WriteFile(test_file(), "content"));
 
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   // Now make sure we get notified if the file is modified.
@@ -255,7 +255,7 @@
   ASSERT_TRUE(WriteFile(source_file, "content"));
 
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   // Now make sure we get notified if the file is modified.
@@ -268,7 +268,7 @@
   ASSERT_TRUE(WriteFile(test_file(), "content"));
 
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   // Now make sure we get notified if the file is deleted.
@@ -296,7 +296,7 @@
   FilePathWatcher* watcher() const { return watcher_.get(); }
 
  private:
-  scoped_ptr<FilePathWatcher> watcher_;
+  std::unique_ptr<FilePathWatcher> watcher_;
   MessageLoop* loop_;
 
   DISALLOW_COPY_AND_ASSIGN(Deleter);
@@ -306,7 +306,7 @@
 TEST_F(FilePathWatcherTest, DeleteDuringNotify) {
   FilePathWatcher* watcher = new FilePathWatcher;
   // Takes ownership of watcher.
-  scoped_ptr<Deleter> deleter(new Deleter(watcher, &loop_));
+  std::unique_ptr<Deleter> deleter(new Deleter(watcher, &loop_));
   ASSERT_TRUE(SetupWatch(test_file(), watcher, deleter.get(), false));
 
   ASSERT_TRUE(WriteFile(test_file(), "content"));
@@ -321,7 +321,7 @@
 // notification.
 // Flaky on MacOS (and ARM linux): http://crbug.com/85930
 TEST_F(FilePathWatcherTest, DISABLED_DestroyWithPendingNotification) {
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   FilePathWatcher* watcher = new FilePathWatcher;
   ASSERT_TRUE(SetupWatch(test_file(), watcher, delegate.get(), false));
   ASSERT_TRUE(WriteFile(test_file(), "content"));
@@ -331,8 +331,8 @@
 
 TEST_F(FilePathWatcherTest, MultipleWatchersSingleFile) {
   FilePathWatcher watcher1, watcher2;
-  scoped_ptr<TestDelegate> delegate1(new TestDelegate(collector()));
-  scoped_ptr<TestDelegate> delegate2(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate1(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate2(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher1, delegate1.get(), false));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher2, delegate2.get(), false));
 
@@ -348,7 +348,7 @@
   FilePathWatcher watcher;
   FilePath dir(temp_dir_.path().AppendASCII("dir"));
   FilePath file(dir.AppendASCII("file"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
 
   ASSERT_TRUE(base::CreateDirectory(dir));
@@ -381,7 +381,7 @@
 
   FilePathWatcher watcher;
   FilePath file(path.AppendASCII("file"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
 
   FilePath sub_path(temp_dir_.path());
@@ -411,7 +411,7 @@
   FilePath file(dir.AppendASCII("file"));
   ASSERT_TRUE(base::CreateDirectory(dir));
   ASSERT_TRUE(WriteFile(file, "content"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(file, &watcher, delegate.get(), false));
 
   ASSERT_TRUE(base::DeleteFile(dir, true));
@@ -423,7 +423,7 @@
 TEST_F(FilePathWatcherTest, DeleteAndRecreate) {
   ASSERT_TRUE(WriteFile(test_file(), "content"));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   ASSERT_TRUE(base::DeleteFile(test_file(), false));
@@ -441,7 +441,7 @@
   FilePath dir(temp_dir_.path().AppendASCII("dir"));
   FilePath file1(dir.AppendASCII("file1"));
   FilePath file2(dir.AppendASCII("file2"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(dir, &watcher, delegate.get(), false));
 
   ASSERT_TRUE(base::CreateDirectory(dir));
@@ -476,9 +476,9 @@
   FilePath dest(temp_dir_.path().AppendASCII("dest"));
   FilePath subdir(dir.AppendASCII("subdir"));
   FilePath file(subdir.AppendASCII("file"));
-  scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(file, &file_watcher, file_delegate.get(), false));
-  scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(subdir, &subdir_watcher, subdir_delegate.get(),
                          false));
 
@@ -499,7 +499,7 @@
 TEST_F(FilePathWatcherTest, RecursiveWatch) {
   FilePathWatcher watcher;
   FilePath dir(temp_dir_.path().AppendASCII("dir"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   bool setup_result = SetupWatch(dir, &watcher, delegate.get(), true);
   if (!FilePathWatcher::RecursiveWatchAvailable()) {
     ASSERT_FALSE(setup_result);
@@ -579,7 +579,7 @@
   FilePath test_dir(temp_dir_.path().AppendASCII("test_dir"));
   ASSERT_TRUE(base::CreateDirectory(test_dir));
   FilePath symlink(test_dir.AppendASCII("symlink"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(symlink, &watcher, delegate.get(), true));
 
   // Link creation.
@@ -626,9 +626,9 @@
   ASSERT_TRUE(base::CreateDirectory(source_subdir));
   ASSERT_TRUE(WriteFile(source_file, "content"));
 
-  scoped_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> file_delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(dest_file, &file_watcher, file_delegate.get(), false));
-  scoped_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> subdir_delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(dest_subdir, &subdir_watcher, subdir_delegate.get(),
                          false));
 
@@ -651,7 +651,7 @@
 TEST_F(FilePathWatcherTest, FileAttributesChanged) {
   ASSERT_TRUE(WriteFile(test_file(), "content"));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file(), &watcher, delegate.get(), false));
 
   // Now make sure we get notified if the file is modified.
@@ -665,7 +665,7 @@
 // Verify that creating a symlink is caught.
 TEST_F(FilePathWatcherTest, CreateLink) {
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // Note that we are watching the symlink
   ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
 
@@ -683,7 +683,7 @@
   ASSERT_TRUE(WriteFile(test_file(), "content"));
   ASSERT_TRUE(CreateSymbolicLink(test_file(), test_link()));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
 
   // Now make sure we get notified if the link is deleted.
@@ -698,7 +698,7 @@
   ASSERT_TRUE(WriteFile(test_file(), "content"));
   ASSERT_TRUE(CreateSymbolicLink(test_file(), test_link()));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // Note that we are watching the symlink.
   ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
 
@@ -713,7 +713,7 @@
 TEST_F(FilePathWatcherTest, CreateTargetLinkedFile) {
   ASSERT_TRUE(CreateSymbolicLink(test_file(), test_link()));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // Note that we are watching the symlink.
   ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
 
@@ -729,7 +729,7 @@
   ASSERT_TRUE(WriteFile(test_file(), "content"));
   ASSERT_TRUE(CreateSymbolicLink(test_file(), test_link()));
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // Note that we are watching the symlink.
   ASSERT_TRUE(SetupWatch(test_link(), &watcher, delegate.get(), false));
 
@@ -747,7 +747,7 @@
   FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
   FilePath file(dir.AppendASCII("file"));
   FilePath linkfile(link_dir.AppendASCII("file"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // dir/file should exist.
   ASSERT_TRUE(base::CreateDirectory(dir));
   ASSERT_TRUE(WriteFile(file, "content"));
@@ -776,7 +776,7 @@
   FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
   FilePath file(dir.AppendASCII("file"));
   FilePath linkfile(link_dir.AppendASCII("file"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   // Now create the link from dir.lnk pointing to dir but
   // neither dir nor dir/file exist yet.
   ASSERT_TRUE(CreateSymbolicLink(dir, link_dir));
@@ -806,7 +806,7 @@
   FilePath link_dir(temp_dir_.path().AppendASCII("dir.lnk"));
   FilePath file(dir.AppendASCII("file"));
   FilePath linkfile(link_dir.AppendASCII("file"));
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(base::CreateDirectory(dir));
   ASSERT_TRUE(CreateSymbolicLink(dir, link_dir));
   // Note that we are watching dir.lnk/file but the file doesn't exist yet.
@@ -883,7 +883,7 @@
   ASSERT_TRUE(WriteFile(test_file, "content"));
 
   FilePathWatcher watcher;
-  scoped_ptr<TestDelegate> delegate(new TestDelegate(collector()));
+  std::unique_ptr<TestDelegate> delegate(new TestDelegate(collector()));
   ASSERT_TRUE(SetupWatch(test_file, &watcher, delegate.get(), false));
 
   // We should not get notified in this case as it hasn't affected our ability
diff --git a/base/files/file_proxy.cc b/base/files/file_proxy.cc
index f157d4d..829f700 100644
--- a/base/files/file_proxy.cc
+++ b/base/files/file_proxy.cc
@@ -192,7 +192,7 @@
   }
 
  private:
-  scoped_ptr<char[]> buffer_;
+  std::unique_ptr<char[]> buffer_;
   int bytes_to_read_;
   int bytes_read_;
   DISALLOW_COPY_AND_ASSIGN(ReadHelper);
@@ -222,7 +222,7 @@
   }
 
  private:
-  scoped_ptr<char[]> buffer_;
+  std::unique_ptr<char[]> buffer_;
   int bytes_to_write_;
   int bytes_written_;
   DISALLOW_COPY_AND_ASSIGN(WriteHelper);
diff --git a/base/files/file_util.cc b/base/files/file_util.cc
index 3169370..80fa44f9 100644
--- a/base/files/file_util.cc
+++ b/base/files/file_util.cc
@@ -137,7 +137,7 @@
   }
 
   const size_t kBufferSize = 1 << 16;
-  scoped_ptr<char[]> buf(new char[kBufferSize]);
+  std::unique_ptr<char[]> buf(new char[kBufferSize]);
   size_t len;
   size_t size = 0;
   bool read_status = true;
diff --git a/base/files/file_util.h b/base/files/file_util.h
index 05b3cbf..8f7d53c 100644
--- a/base/files/file_util.h
+++ b/base/files/file_util.h
@@ -19,7 +19,6 @@
 #include "base/base_export.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "build/build_config.h"
 
diff --git a/base/files/file_util_posix.cc b/base/files/file_util_posix.cc
index 0e99b01..ca1c5250 100644
--- a/base/files/file_util_posix.cc
+++ b/base/files/file_util_posix.cc
@@ -27,7 +27,6 @@
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/path_service.h"
 #include "base/posix/eintr_wrapper.h"
diff --git a/base/files/important_file_writer.cc b/base/files/important_file_writer.cc
index a724dc36..922aa0fa 100644
--- a/base/files/important_file_writer.cc
+++ b/base/files/important_file_writer.cc
@@ -55,9 +55,10 @@
   DPLOG(WARNING) << "temp file failure: " << path.value() << " : " << message;
 }
 
-// Helper function to call WriteFileAtomically() with a scoped_ptr<std::string>.
+// Helper function to call WriteFileAtomically() with a
+// std::unique_ptr<std::string>.
 bool WriteScopedStringToFileAtomically(const FilePath& path,
-                                       scoped_ptr<std::string> data) {
+                                       std::unique_ptr<std::string> data) {
   return ImportantFileWriter::WriteFileAtomically(path, *data);
 }
 
@@ -157,7 +158,7 @@
   return timer_.IsRunning();
 }
 
-void ImportantFileWriter::WriteNow(scoped_ptr<std::string> data) {
+void ImportantFileWriter::WriteNow(std::unique_ptr<std::string> data) {
   DCHECK(CalledOnValidThread());
   if (!IsValueInRangeForNumericType<int32_t>(data->length())) {
     NOTREACHED();
@@ -192,7 +193,7 @@
 
 void ImportantFileWriter::DoScheduledWrite() {
   DCHECK(serializer_);
-  scoped_ptr<std::string> data(new std::string);
+  std::unique_ptr<std::string> data(new std::string);
   if (serializer_->SerializeData(data.get())) {
     WriteNow(std::move(data));
   } else {
diff --git a/base/files/important_file_writer.h b/base/files/important_file_writer.h
index b28231e..71067fb09 100644
--- a/base/files/important_file_writer.h
+++ b/base/files/important_file_writer.h
@@ -82,7 +82,7 @@
 
   // Save |data| to target filename. Does not block. If there is a pending write
   // scheduled by ScheduleWrite(), it is cancelled.
-  void WriteNow(scoped_ptr<std::string> data);
+  void WriteNow(std::unique_ptr<std::string> data);
 
   // Schedule a save to target filename. Data will be serialized and saved
   // to disk after the commit interval. If another ScheduleWrite is issued
diff --git a/base/files/important_file_writer_unittest.cc b/base/files/important_file_writer_unittest.cc
index 28e6001..61d5e53 100644
--- a/base/files/important_file_writer_unittest.cc
+++ b/base/files/important_file_writer_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/thread_task_runner_handle.h"
@@ -103,7 +104,7 @@
   ImportantFileWriter writer(file_, ThreadTaskRunnerHandle::Get());
   EXPECT_FALSE(PathExists(writer.path()));
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
-  writer.WriteNow(make_scoped_ptr(new std::string("foo")));
+  writer.WriteNow(WrapUnique(new std::string("foo")));
   RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
@@ -116,7 +117,7 @@
   EXPECT_FALSE(PathExists(writer.path()));
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
   successful_write_observer_.ObserveNextSuccessfulWrite(&writer);
-  writer.WriteNow(make_scoped_ptr(new std::string("foo")));
+  writer.WriteNow(WrapUnique(new std::string("foo")));
   RunLoop().RunUntilIdle();
 
   // Confirm that the observer is invoked.
@@ -127,7 +128,7 @@
   // Confirm that re-installing the observer works for another write.
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
   successful_write_observer_.ObserveNextSuccessfulWrite(&writer);
-  writer.WriteNow(make_scoped_ptr(new std::string("bar")));
+  writer.WriteNow(WrapUnique(new std::string("bar")));
   RunLoop().RunUntilIdle();
 
   EXPECT_TRUE(successful_write_observer_.GetAndResetObservationState());
@@ -137,7 +138,7 @@
   // Confirm that writing again without re-installing the observer doesn't
   // result in a notification.
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
-  writer.WriteNow(make_scoped_ptr(new std::string("baz")));
+  writer.WriteNow(WrapUnique(new std::string("baz")));
   RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(successful_write_observer_.GetAndResetObservationState());
diff --git a/base/files/memory_mapped_file_unittest.cc b/base/files/memory_mapped_file_unittest.cc
index f75686f..396ab72f 100644
--- a/base/files/memory_mapped_file_unittest.cc
+++ b/base/files/memory_mapped_file_unittest.cc
@@ -19,8 +19,8 @@
 namespace {
 
 // Create a temporary buffer and fill it with a watermark sequence.
-scoped_ptr<uint8_t[]> CreateTestBuffer(size_t size, size_t offset) {
-  scoped_ptr<uint8_t[]> buf(new uint8_t[size]);
+std::unique_ptr<uint8_t[]> CreateTestBuffer(size_t size, size_t offset) {
+  std::unique_ptr<uint8_t[]> buf(new uint8_t[size]);
   for (size_t i = 0; i < size; ++i)
     buf.get()[i] = static_cast<uint8_t>((offset + i) % 253);
   return buf;
@@ -28,7 +28,7 @@
 
 // Check that the watermark sequence is consistent with the |offset| provided.
 bool CheckBufferContents(const uint8_t* data, size_t size, size_t offset) {
-  scoped_ptr<uint8_t[]> test_data(CreateTestBuffer(size, offset));
+  std::unique_ptr<uint8_t[]> test_data(CreateTestBuffer(size, offset));
   return memcmp(test_data.get(), data, size) == 0;
 }
 
@@ -46,7 +46,7 @@
               File::FLAG_CREATE_ALWAYS | File::FLAG_READ | File::FLAG_WRITE);
     EXPECT_TRUE(file.IsValid());
 
-    scoped_ptr<uint8_t[]> test_data(CreateTestBuffer(size, 0));
+    std::unique_ptr<uint8_t[]> test_data(CreateTestBuffer(size, 0));
     size_t bytes_written =
         file.Write(0, reinterpret_cast<char*>(test_data.get()), size);
     EXPECT_EQ(size, bytes_written);
diff --git a/base/files/scoped_file.h b/base/files/scoped_file.h
index 106f6ad..68c04158 100644
--- a/base/files/scoped_file.h
+++ b/base/files/scoped_file.h
@@ -7,9 +7,10 @@
 
 #include <stdio.h>
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/scoped_generic.h"
 #include "build/build_config.h"
 
@@ -54,7 +55,7 @@
 #endif
 
 // Automatically closes |FILE*|s.
-typedef scoped_ptr<FILE, internal::ScopedFILECloser> ScopedFILE;
+typedef std::unique_ptr<FILE, internal::ScopedFILECloser> ScopedFILE;
 
 }  // namespace base
 
diff --git a/base/i18n/file_util_icu.cc b/base/i18n/file_util_icu.cc
index 4f4e69a..7b3375e9 100644
--- a/base/i18n/file_util_icu.cc
+++ b/base/i18n/file_util_icu.cc
@@ -8,12 +8,13 @@
 
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/files/file_path.h"
 #include "base/i18n/icu_string_conversions.h"
 #include "base/i18n/string_compare.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/strings/string_util.h"
 #include "base/strings/sys_string_conversions.h"
@@ -56,10 +57,10 @@
   ~IllegalCharacters() { }
 
   // set of characters considered invalid anywhere inside a filename.
-  scoped_ptr<icu::UnicodeSet> illegal_anywhere_;
+  std::unique_ptr<icu::UnicodeSet> illegal_anywhere_;
 
   // set of characters considered invalid at either end of a filename.
-  scoped_ptr<icu::UnicodeSet> illegal_at_ends_;
+  std::unique_ptr<icu::UnicodeSet> illegal_at_ends_;
 
   DISALLOW_COPY_AND_ASSIGN(IllegalCharacters);
 };
@@ -149,7 +150,8 @@
   UErrorCode error_code = U_ZERO_ERROR;
   // Use the default collator. The default locale should have been properly
   // set by the time this constructor is called.
-  scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(error_code));
+  std::unique_ptr<icu::Collator> collator(
+      icu::Collator::createInstance(error_code));
   DCHECK(U_SUCCESS(error_code));
   // Make it case-sensitive.
   collator->setStrength(icu::Collator::TERTIARY);
diff --git a/base/i18n/icu_string_conversions.cc b/base/i18n/icu_string_conversions.cc
index 68ce529..be82db2a 100644
--- a/base/i18n/icu_string_conversions.cc
+++ b/base/i18n/icu_string_conversions.cc
@@ -7,10 +7,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "third_party/icu/source/common/unicode/ucnv.h"
@@ -177,7 +177,7 @@
   size_t uchar_max_length = encoded.length() + 1;
 
   SetUpErrorHandlerForToUChars(on_error, converter, &status);
-  scoped_ptr<char16[]> buffer(new char16[uchar_max_length]);
+  std::unique_ptr<char16[]> buffer(new char16[uchar_max_length]);
   int actual_size = ucnv_toUChars(converter, buffer.get(),
       static_cast<int>(uchar_max_length), encoded.data(),
       static_cast<int>(encoded.length()), &status);
@@ -203,7 +203,7 @@
   UErrorCode status = U_ZERO_ERROR;
   size_t max_length = utf16.length() + 1;
   string16 normalized_utf16;
-  scoped_ptr<char16[]> buffer(new char16[max_length]);
+  std::unique_ptr<char16[]> buffer(new char16[max_length]);
   int actual_length = unorm_normalize(
       utf16.c_str(), utf16.length(), UNORM_NFC, 0,
       buffer.get(), static_cast<int>(max_length), &status);
diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc
index afadb256..05e14671 100644
--- a/base/i18n/icu_util.cc
+++ b/base/i18n/icu_util.cc
@@ -184,7 +184,7 @@
     return false;
   }
 
-  scoped_ptr<MemoryMappedFile> icudtl_mapped_file(new MemoryMappedFile());
+  std::unique_ptr<MemoryMappedFile> icudtl_mapped_file(new MemoryMappedFile());
   if (!icudtl_mapped_file->Initialize(File(data_fd), data_region)) {
     g_debug_icu_load = 2;  // To debug http://crbug.com/445616.
     LOG(ERROR) << "Couldn't mmap icu data file";
@@ -310,7 +310,7 @@
 // when requested.
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
   if (result)
-    scoped_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+    std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
 #endif
   return result;
 }
diff --git a/base/i18n/message_formatter.h b/base/i18n/message_formatter.h
index 4a5b92f..4394023 100644
--- a/base/i18n/message_formatter.h
+++ b/base/i18n/message_formatter.h
@@ -6,11 +6,12 @@
 #define BASE_I18N_MESSAGE_FORMATTER_H_
 
 #include <stdint.h>
+
+#include <memory>
 #include <string>
 
 #include "base/i18n/base_i18n_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_piece.h"
 #include "third_party/icu/source/common/unicode/uversion.h"
@@ -46,7 +47,7 @@
   MessageArg();
   // Tests if this argument has a value, and if so increments *count.
   bool has_value(int* count) const;
-  scoped_ptr<icu::Formattable> formattable;
+  std::unique_ptr<icu::Formattable> formattable;
   DISALLOW_COPY_AND_ASSIGN(MessageArg);
 };
 
diff --git a/base/i18n/message_formatter_unittest.cc b/base/i18n/message_formatter_unittest.cc
index 85e2e17..a6f46137 100644
--- a/base/i18n/message_formatter_unittest.cc
+++ b/base/i18n/message_formatter_unittest.cc
@@ -4,8 +4,9 @@
 
 #include "base/i18n/message_formatter.h"
 
+#include <memory>
+
 #include "base/i18n/rtl.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -36,8 +37,9 @@
 
 namespace {
 
-void AppendFormattedDateTime(const scoped_ptr<icu::DateFormat>& df,
-                             const Time& now, std::string* result) {
+void AppendFormattedDateTime(const std::unique_ptr<icu::DateFormat>& df,
+                             const Time& now,
+                             std::string* result) {
   icu::UnicodeString formatted;
   df->format(static_cast<UDate>(now.ToJsTime()), formatted).
       toUTF8String(*result);
@@ -119,7 +121,8 @@
 
   base::Time now = base::Time::Now();
   using icu::DateFormat;
-  scoped_ptr<DateFormat> df(DateFormat::createDateInstance(DateFormat::FULL));
+  std::unique_ptr<DateFormat> df(
+      DateFormat::createDateInstance(DateFormat::FULL));
   std::string second_sentence = " Today is ";
   AppendFormattedDateTime(df, now, &second_sentence);
 
@@ -141,8 +144,10 @@
       "The speed of the wind was {3,number,###.#} mph.");
 
   using icu::DateFormat;
-  scoped_ptr<DateFormat> tf(DateFormat::createTimeInstance(DateFormat::SHORT));
-  scoped_ptr<DateFormat> df(DateFormat::createDateInstance(DateFormat::MEDIUM));
+  std::unique_ptr<DateFormat> tf(
+      DateFormat::createTimeInstance(DateFormat::SHORT));
+  std::unique_ptr<DateFormat> df(
+      DateFormat::createDateInstance(DateFormat::MEDIUM));
 
   base::Time now = base::Time::Now();
   std::string expected = "At ";
diff --git a/base/i18n/number_formatting.cc b/base/i18n/number_formatting.cc
index 920ba96..6f454a08 100644
--- a/base/i18n/number_formatting.cc
+++ b/base/i18n/number_formatting.cc
@@ -6,10 +6,11 @@
 
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/format_macros.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -37,7 +38,7 @@
     DCHECK(U_SUCCESS(status));
   }
 
-  scoped_ptr<icu::NumberFormat> number_format;
+  std::unique_ptr<icu::NumberFormat> number_format;
 };
 
 LazyInstance<NumberFormatWrapper> g_number_format_int =
diff --git a/base/i18n/time_formatting.cc b/base/i18n/time_formatting.cc
index 321020c..666abd4 100644
--- a/base/i18n/time_formatting.cc
+++ b/base/i18n/time_formatting.cc
@@ -6,8 +6,9 @@
 
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "third_party/icu/source/i18n/unicode/datefmt.h"
@@ -53,7 +54,7 @@
   // use (some locales use '.' instead of ':'), and where to put the am/pm
   // marker.
   UErrorCode status = U_ZERO_ERROR;
-  scoped_ptr<icu::DateTimePatternGenerator> generator(
+  std::unique_ptr<icu::DateTimePatternGenerator> generator(
       icu::DateTimePatternGenerator::createInstance(status));
   DCHECK(U_SUCCESS(status));
   icu::UnicodeString generated_pattern =
@@ -72,7 +73,7 @@
 string16 TimeFormatTimeOfDay(const Time& time) {
   // We can omit the locale parameter because the default should match
   // Chrome's application locale.
-  scoped_ptr<icu::DateFormat> formatter(
+  std::unique_ptr<icu::DateFormat> formatter(
       icu::DateFormat::createTimeInstance(icu::DateFormat::kShort));
   return TimeFormat(formatter.get(), time);
 }
@@ -103,38 +104,39 @@
 }
 
 string16 TimeFormatShortDate(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(
+  std::unique_ptr<icu::DateFormat> formatter(
       icu::DateFormat::createDateInstance(icu::DateFormat::kMedium));
   return TimeFormat(formatter.get(), time);
 }
 
 string16 TimeFormatShortDateNumeric(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(
+  std::unique_ptr<icu::DateFormat> formatter(
       icu::DateFormat::createDateInstance(icu::DateFormat::kShort));
   return TimeFormat(formatter.get(), time);
 }
 
 string16 TimeFormatShortDateAndTime(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(
+  std::unique_ptr<icu::DateFormat> formatter(
       icu::DateFormat::createDateTimeInstance(icu::DateFormat::kShort));
   return TimeFormat(formatter.get(), time);
 }
 
 string16 TimeFormatShortDateAndTimeWithTimeZone(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(icu::DateFormat::createDateTimeInstance(
-      icu::DateFormat::kShort, icu::DateFormat::kLong));
+  std::unique_ptr<icu::DateFormat> formatter(
+      icu::DateFormat::createDateTimeInstance(icu::DateFormat::kShort,
+                                              icu::DateFormat::kLong));
   return TimeFormat(formatter.get(), time);
 }
 
 string16 TimeFormatFriendlyDateAndTime(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(
+  std::unique_ptr<icu::DateFormat> formatter(
       icu::DateFormat::createDateTimeInstance(icu::DateFormat::kFull));
   return TimeFormat(formatter.get(), time);
 }
 
 string16 TimeFormatFriendlyDate(const Time& time) {
-  scoped_ptr<icu::DateFormat> formatter(icu::DateFormat::createDateInstance(
-      icu::DateFormat::kFull));
+  std::unique_ptr<icu::DateFormat> formatter(
+      icu::DateFormat::createDateInstance(icu::DateFormat::kFull));
   return TimeFormat(formatter.get(), time);
 }
 
@@ -142,7 +144,7 @@
   // TODO(satorux,jshin): Rework this with ures_getByKeyWithFallback()
   // once it becomes public. The short time format can be found at
   // "calendar/gregorian/DateTimePatterns/3" in the resources.
-  scoped_ptr<icu::SimpleDateFormat> formatter(
+  std::unique_ptr<icu::SimpleDateFormat> formatter(
       static_cast<icu::SimpleDateFormat*>(
           icu::DateFormat::createTimeInstance(icu::DateFormat::kShort)));
   // Retrieve the short time format.
diff --git a/base/i18n/time_formatting_unittest.cc b/base/i18n/time_formatting_unittest.cc
index 665b715e..b07eb47 100644
--- a/base/i18n/time_formatting_unittest.cc
+++ b/base/i18n/time_formatting_unittest.cc
@@ -4,8 +4,9 @@
 
 #include "base/i18n/time_formatting.h"
 
+#include <memory>
+
 #include "base/i18n/rtl.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/icu_test_util.h"
 #include "base/time/time.h"
@@ -28,8 +29,8 @@
 // see https://en.wikipedia.org/wiki/Daylight_saving_time for details.
 base::string16 GetShortTimeZone(const Time& time) {
   UErrorCode status = U_ZERO_ERROR;
-  scoped_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
-  scoped_ptr<icu::TimeZoneFormat> zone_formatter(
+  std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+  std::unique_ptr<icu::TimeZoneFormat> zone_formatter(
       icu::TimeZoneFormat::createInstance(icu::Locale::getDefault(), status));
   EXPECT_TRUE(U_SUCCESS(status));
   icu::UnicodeString name;
diff --git a/base/i18n/timezone.cc b/base/i18n/timezone.cc
index fbc9949d..e881c9d 100644
--- a/base/i18n/timezone.cc
+++ b/base/i18n/timezone.cc
@@ -607,7 +607,7 @@
 }  // namespace
 
 std::string CountryCodeForCurrentTimezone() {
-  scoped_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+  std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
   icu::UnicodeString id;
   zone->getID(id);
   string16 olson_code(id.getBuffer(), id.length());
diff --git a/base/ios/device_util.mm b/base/ios/device_util.mm
index 44e7c6c90..5ec1e69 100644
--- a/base/ios/device_util.mm
+++ b/base/ios/device_util.mm
@@ -6,7 +6,6 @@
 
 #include <CommonCrypto/CommonDigest.h>
 #import <UIKit/UIKit.h>
-
 #include <ifaddrs.h>
 #include <net/if_dl.h>
 #include <stddef.h>
@@ -14,9 +13,10 @@
 #include <sys/socket.h>
 #include <sys/sysctl.h>
 
+#include <memory>
+
 #include "base/logging.h"
 #include "base/mac/scoped_cftyperef.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
diff --git a/base/json/json_file_value_serializer.cc b/base/json/json_file_value_serializer.cc
index 516f876..1a9b7a2 100644
--- a/base/json/json_file_value_serializer.cc
+++ b/base/json/json_file_value_serializer.cc
@@ -101,7 +101,7 @@
   }
 }
 
-scoped_ptr<base::Value> JSONFileValueDeserializer::Deserialize(
+std::unique_ptr<base::Value> JSONFileValueDeserializer::Deserialize(
     int* error_code,
     std::string* error_str) {
   std::string json_string;
diff --git a/base/json/json_file_value_serializer.h b/base/json/json_file_value_serializer.h
index f6b4e5f..67d2342 100644
--- a/base/json/json_file_value_serializer.h
+++ b/base/json/json_file_value_serializer.h
@@ -60,8 +60,8 @@
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
   // The caller takes ownership of the returned value.
-  scoped_ptr<base::Value> Deserialize(int* error_code,
-                                      std::string* error_message) override;
+  std::unique_ptr<base::Value> Deserialize(int* error_code,
+                                           std::string* error_message) override;
 
   // This enum is designed to safely overlap with JSONReader::JsonParseError.
   enum JsonFileError {
diff --git a/base/json/json_parser.cc b/base/json/json_parser.cc
index d2704710..801c84a 100644
--- a/base/json/json_parser.cc
+++ b/base/json/json_parser.cc
@@ -5,10 +5,10 @@
 #include "base/json/json_parser.h"
 
 #include <cmath>
+#include <memory>
 
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -44,7 +44,7 @@
 
     // First deep copy to convert JSONStringValue to std::string and swap that
     // copy with |other|, which contains the new contents of |this|.
-    scoped_ptr<DictionaryValue> copy(DeepCopy());
+    std::unique_ptr<DictionaryValue> copy(DeepCopy());
     copy->Swap(other);
 
     // Then erase the contents of the current dictionary and swap in the
@@ -58,7 +58,7 @@
   // the method below.
 
   bool RemoveWithoutPathExpansion(const std::string& key,
-                                  scoped_ptr<Value>* out) override {
+                                  std::unique_ptr<Value>* out) override {
     // If the caller won't take ownership of the removed value, just call up.
     if (!out)
       return DictionaryValue::RemoveWithoutPathExpansion(key, out);
@@ -67,7 +67,7 @@
 
     // Otherwise, remove the value while its still "owned" by this and copy it
     // to convert any JSONStringValues to std::string.
-    scoped_ptr<Value> out_owned;
+    std::unique_ptr<Value> out_owned;
     if (!DictionaryValue::RemoveWithoutPathExpansion(key, &out_owned))
       return false;
 
@@ -77,7 +77,7 @@
   }
 
  private:
-  scoped_ptr<std::string> json_;
+  std::unique_ptr<std::string> json_;
 
   DISALLOW_COPY_AND_ASSIGN(DictionaryHiddenRootValue);
 };
@@ -94,7 +94,7 @@
 
     // First deep copy to convert JSONStringValue to std::string and swap that
     // copy with |other|, which contains the new contents of |this|.
-    scoped_ptr<ListValue> copy(DeepCopy());
+    std::unique_ptr<ListValue> copy(DeepCopy());
     copy->Swap(other);
 
     // Then erase the contents of the current list and swap in the new contents,
@@ -104,7 +104,7 @@
     ListValue::Swap(copy.get());
   }
 
-  bool Remove(size_t index, scoped_ptr<Value>* out) override {
+  bool Remove(size_t index, std::unique_ptr<Value>* out) override {
     // If the caller won't take ownership of the removed value, just call up.
     if (!out)
       return ListValue::Remove(index, out);
@@ -113,7 +113,7 @@
 
     // Otherwise, remove the value while its still "owned" by this and copy it
     // to convert any JSONStringValues to std::string.
-    scoped_ptr<Value> out_owned;
+    std::unique_ptr<Value> out_owned;
     if (!ListValue::Remove(index, &out_owned))
       return false;
 
@@ -123,7 +123,7 @@
   }
 
  private:
-  scoped_ptr<std::string> json_;
+  std::unique_ptr<std::string> json_;
 
   DISALLOW_COPY_AND_ASSIGN(ListHiddenRootValue);
 };
@@ -204,7 +204,7 @@
 }
 
 Value* JSONParser::Parse(const StringPiece& input) {
-  scoped_ptr<std::string> input_copy;
+  std::unique_ptr<std::string> input_copy;
   // If the children of a JSON root can be detached, then hidden roots cannot
   // be used, so do not bother copying the input because StringPiece will not
   // be used anywhere.
@@ -235,7 +235,7 @@
   }
 
   // Parse the first and any nested tokens.
-  scoped_ptr<Value> root(ParseNextToken());
+  std::unique_ptr<Value> root(ParseNextToken());
   if (!root.get())
     return NULL;
 
@@ -499,7 +499,7 @@
     return NULL;
   }
 
-  scoped_ptr<DictionaryValue> dict(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> dict(new DictionaryValue);
 
   NextChar();
   Token token = GetNextToken();
@@ -563,7 +563,7 @@
     return NULL;
   }
 
-  scoped_ptr<ListValue> list(new ListValue);
+  std::unique_ptr<ListValue> list(new ListValue);
 
   NextChar();
   Token token = GetNextToken();
diff --git a/base/json/json_parser.h b/base/json/json_parser.h
index fc04594..304edd1a 100644
--- a/base/json/json_parser.h
+++ b/base/json/json_parser.h
@@ -133,7 +133,7 @@
     size_t length_;
 
     // The copied string representation. NULL until Convert() is called.
-    // Strong. scoped_ptr<T> has too much of an overhead here.
+    // Strong. std::unique_ptr<T> has too much of an overhead here.
     std::string* string_;
   };
 
diff --git a/base/json/json_parser_unittest.cc b/base/json/json_parser_unittest.cc
index da86b33..30255ca4 100644
--- a/base/json/json_parser_unittest.cc
+++ b/base/json/json_parser_unittest.cc
@@ -6,8 +6,9 @@
 
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -34,7 +35,7 @@
 
 TEST_F(JSONParserTest, NextChar) {
   std::string input("Hello world");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
 
   EXPECT_EQ('H', *parser->pos_);
   for (size_t i = 1; i < input.length(); ++i) {
@@ -45,8 +46,8 @@
 
 TEST_F(JSONParserTest, ConsumeString) {
   std::string input("\"test\",|");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
-  scoped_ptr<Value> value(parser->ConsumeString());
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<Value> value(parser->ConsumeString());
   EXPECT_EQ('"', *parser->pos_);
 
   TestLastThree(parser.get());
@@ -59,8 +60,8 @@
 
 TEST_F(JSONParserTest, ConsumeList) {
   std::string input("[true, false],|");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
-  scoped_ptr<Value> value(parser->ConsumeList());
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<Value> value(parser->ConsumeList());
   EXPECT_EQ(']', *parser->pos_);
 
   TestLastThree(parser.get());
@@ -73,8 +74,8 @@
 
 TEST_F(JSONParserTest, ConsumeDictionary) {
   std::string input("{\"abc\":\"def\"},|");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
-  scoped_ptr<Value> value(parser->ConsumeDictionary());
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<Value> value(parser->ConsumeDictionary());
   EXPECT_EQ('}', *parser->pos_);
 
   TestLastThree(parser.get());
@@ -90,8 +91,8 @@
 TEST_F(JSONParserTest, ConsumeLiterals) {
   // Literal |true|.
   std::string input("true,|");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
-  scoped_ptr<Value> value(parser->ConsumeLiteral());
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<Value> value(parser->ConsumeLiteral());
   EXPECT_EQ('e', *parser->pos_);
 
   TestLastThree(parser.get());
@@ -128,8 +129,8 @@
 TEST_F(JSONParserTest, ConsumeNumbers) {
   // Integer.
   std::string input("1234,|");
-  scoped_ptr<JSONParser> parser(NewTestParser(input));
-  scoped_ptr<Value> value(parser->ConsumeNumber());
+  std::unique_ptr<JSONParser> parser(NewTestParser(input));
+  std::unique_ptr<Value> value(parser->ConsumeNumber());
   EXPECT_EQ('4', *parser->pos_);
 
   TestLastThree(parser.get());
@@ -205,7 +206,7 @@
   // Error strings should not be modified in case of success.
   std::string error_message;
   int error_code = 0;
-  scoped_ptr<Value> root = JSONReader::ReadAndReturnError(
+  std::unique_ptr<Value> root = JSONReader::ReadAndReturnError(
       "[42]", JSON_PARSE_RFC, &error_code, &error_message);
   EXPECT_TRUE(error_message.empty());
   EXPECT_EQ(0, error_code);
@@ -309,7 +310,7 @@
       "[\"😇\",[],[],[],{\"google:suggesttype\":[]}]";
   std::string error_message;
   int error_code = 0;
-  scoped_ptr<Value> root = JSONReader::ReadAndReturnError(
+  std::unique_ptr<Value> root = JSONReader::ReadAndReturnError(
       kUtf8Data, JSON_PARSE_RFC, &error_code, &error_message);
   EXPECT_TRUE(root.get()) << error_message;
 }
diff --git a/base/json/json_reader.cc b/base/json/json_reader.cc
index 3ab5f75..983508c 100644
--- a/base/json/json_reader.cc
+++ b/base/json/json_reader.cc
@@ -6,6 +6,7 @@
 
 #include "base/json/json_parser.h"
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/values.h"
 
 namespace base {
@@ -43,27 +44,28 @@
 }
 
 // static
-scoped_ptr<Value> JSONReader::Read(const StringPiece& json) {
+std::unique_ptr<Value> JSONReader::Read(const StringPiece& json) {
   internal::JSONParser parser(JSON_PARSE_RFC);
-  return make_scoped_ptr(parser.Parse(json));
+  return WrapUnique(parser.Parse(json));
 }
 
 // static
-scoped_ptr<Value> JSONReader::Read(const StringPiece& json, int options) {
+std::unique_ptr<Value> JSONReader::Read(const StringPiece& json, int options) {
   internal::JSONParser parser(options);
-  return make_scoped_ptr(parser.Parse(json));
+  return WrapUnique(parser.Parse(json));
 }
 
 
 // static
-scoped_ptr<Value> JSONReader::ReadAndReturnError(const StringPiece& json,
-                                                 int options,
-                                                 int* error_code_out,
-                                                 std::string* error_msg_out,
-                                                 int* error_line_out,
-                                                 int* error_column_out) {
+std::unique_ptr<Value> JSONReader::ReadAndReturnError(
+    const StringPiece& json,
+    int options,
+    int* error_code_out,
+    std::string* error_msg_out,
+    int* error_line_out,
+    int* error_column_out) {
   internal::JSONParser parser(options);
-  scoped_ptr<Value> root(parser.Parse(json));
+  std::unique_ptr<Value> root(parser.Parse(json));
   if (!root) {
     if (error_code_out)
       *error_code_out = parser.error_code();
@@ -105,8 +107,8 @@
   }
 }
 
-scoped_ptr<Value> JSONReader::ReadToValue(const std::string& json) {
-  return make_scoped_ptr(parser_->Parse(json));
+std::unique_ptr<Value> JSONReader::ReadToValue(const std::string& json) {
+  return WrapUnique(parser_->Parse(json));
 }
 
 JSONReader::JsonParseError JSONReader::error_code() const {
diff --git a/base/json/json_reader.h b/base/json/json_reader.h
index c6bcb528..7b5b3b0 100644
--- a/base/json/json_reader.h
+++ b/base/json/json_reader.h
@@ -28,10 +28,10 @@
 #ifndef BASE_JSON_JSON_READER_H_
 #define BASE_JSON_JSON_READER_H_
 
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 
 namespace base {
@@ -93,30 +93,31 @@
 
   // Reads and parses |json|, returning a Value. The caller owns the returned
   // instance. If |json| is not a properly formed JSON string, returns NULL.
-  static scoped_ptr<Value> Read(const StringPiece& json);
+  static std::unique_ptr<Value> Read(const StringPiece& json);
 
   // Reads and parses |json|, returning a Value owned by the caller. The
   // parser respects the given |options|. If the input is not properly formed,
   // returns NULL.
-  static scoped_ptr<Value> Read(const StringPiece& json, int options);
+  static std::unique_ptr<Value> Read(const StringPiece& json, int options);
 
   // Reads and parses |json| like Read(). |error_code_out| and |error_msg_out|
   // are optional. If specified and NULL is returned, they will be populated
   // an error code and a formatted error message (including error location if
   // appropriate). Otherwise, they will be unmodified.
-  static scoped_ptr<Value> ReadAndReturnError(const StringPiece& json,
-                                              int options,  // JSONParserOptions
-                                              int* error_code_out,
-                                              std::string* error_msg_out,
-                                              int* error_line_out = nullptr,
-                                              int* error_column_out = nullptr);
+  static std::unique_ptr<Value> ReadAndReturnError(
+      const StringPiece& json,
+      int options,  // JSONParserOptions
+      int* error_code_out,
+      std::string* error_msg_out,
+      int* error_line_out = nullptr,
+      int* error_column_out = nullptr);
 
   // Converts a JSON parse error code into a human readable message.
   // Returns an empty string if error_code is JSON_NO_ERROR.
   static std::string ErrorCodeToString(JsonParseError error_code);
 
   // Parses an input string into a Value that is owned by the caller.
-  scoped_ptr<Value> ReadToValue(const std::string& json);
+  std::unique_ptr<Value> ReadToValue(const std::string& json);
 
   // Returns the error code if the last call to ReadToValue() failed.
   // Returns JSON_NO_ERROR otherwise.
@@ -127,7 +128,7 @@
   std::string GetErrorMessage() const;
 
  private:
-  scoped_ptr<internal::JSONParser> parser_;
+  std::unique_ptr<internal::JSONParser> parser_;
 };
 
 }  // namespace base
diff --git a/base/json/json_reader_unittest.cc b/base/json/json_reader_unittest.cc
index 21eec4a..1a62356 100644
--- a/base/json/json_reader_unittest.cc
+++ b/base/json/json_reader_unittest.cc
@@ -6,11 +6,12 @@
 
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/base_paths.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
@@ -22,7 +23,7 @@
 
 TEST(JSONReaderTest, Reading) {
   // some whitespace checking
-  scoped_ptr<Value> root = JSONReader().ReadToValue("   null   ");
+  std::unique_ptr<Value> root = JSONReader().ReadToValue("   null   ");
   ASSERT_TRUE(root.get());
   EXPECT_TRUE(root->IsType(Value::TYPE_NULL));
 
@@ -251,7 +252,7 @@
   EXPECT_EQ(3U, list->GetSize());
 
   // Test with trailing comma.  Should be parsed the same as above.
-  scoped_ptr<Value> root2 =
+  std::unique_ptr<Value> root2 =
       JSONReader::Read("[true, false, null, ]", JSON_ALLOW_TRAILING_COMMAS);
   EXPECT_TRUE(root->Equals(root2.get()));
 
@@ -553,7 +554,7 @@
       path.Append(FILE_PATH_LITERAL("bom_feff.json")), &input));
 
   JSONReader reader;
-  scoped_ptr<Value> root(reader.ReadToValue(input));
+  std::unique_ptr<Value> root(reader.ReadToValue(input));
   ASSERT_TRUE(root.get()) << reader.GetErrorMessage();
   EXPECT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
 }
@@ -561,15 +562,15 @@
 // Tests that the root of a JSON object can be deleted safely while its
 // children outlive it.
 TEST(JSONReaderTest, StringOptimizations) {
-  scoped_ptr<Value> dict_literal_0;
-  scoped_ptr<Value> dict_literal_1;
-  scoped_ptr<Value> dict_string_0;
-  scoped_ptr<Value> dict_string_1;
-  scoped_ptr<Value> list_value_0;
-  scoped_ptr<Value> list_value_1;
+  std::unique_ptr<Value> dict_literal_0;
+  std::unique_ptr<Value> dict_literal_1;
+  std::unique_ptr<Value> dict_string_0;
+  std::unique_ptr<Value> dict_string_1;
+  std::unique_ptr<Value> list_value_0;
+  std::unique_ptr<Value> list_value_1;
 
   {
-    scoped_ptr<Value> root = JSONReader::Read(
+    std::unique_ptr<Value> root = JSONReader::Read(
         "{"
         "  \"test\": {"
         "    \"foo\": true,"
diff --git a/base/json/json_string_value_serializer.cc b/base/json/json_string_value_serializer.cc
index af7e010..cd786db 100644
--- a/base/json/json_string_value_serializer.cc
+++ b/base/json/json_string_value_serializer.cc
@@ -48,7 +48,7 @@
 
 JSONStringValueDeserializer::~JSONStringValueDeserializer() {}
 
-scoped_ptr<Value> JSONStringValueDeserializer::Deserialize(
+std::unique_ptr<Value> JSONStringValueDeserializer::Deserialize(
     int* error_code,
     std::string* error_str) {
   return base::JSONReader::ReadAndReturnError(
diff --git a/base/json/json_string_value_serializer.h b/base/json/json_string_value_serializer.h
index 2459f48..a97da23 100644
--- a/base/json/json_string_value_serializer.h
+++ b/base/json/json_string_value_serializer.h
@@ -59,8 +59,8 @@
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
   // The caller takes ownership of the returned value.
-  scoped_ptr<base::Value> Deserialize(int* error_code,
-                                      std::string* error_message) override;
+  std::unique_ptr<base::Value> Deserialize(int* error_code,
+                                           std::string* error_message) override;
 
   void set_allow_trailing_comma(bool new_value) {
     allow_trailing_comma_ = new_value;
diff --git a/base/json/json_value_converter.h b/base/json/json_value_converter.h
index a1e0d5bb..4cca034f 100644
--- a/base/json/json_value_converter.h
+++ b/base/json/json_value_converter.h
@@ -7,13 +7,13 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/base_export.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "base/stl_util.h"
 #include "base/strings/string16.h"
@@ -131,7 +131,7 @@
 
  private:
   FieldType StructType::* field_pointer_;
-  scoped_ptr<ValueConverter<FieldType> > value_converter_;
+  std::unique_ptr<ValueConverter<FieldType>> value_converter_;
   DISALLOW_COPY_AND_ASSIGN(FieldConverter);
 };
 
@@ -266,7 +266,7 @@
       if (!list->Get(i, &element))
         continue;
 
-      scoped_ptr<Element> e(new Element);
+      std::unique_ptr<Element> e(new Element);
       if (basic_converter_.Convert(*element, e.get())) {
         field->push_back(e.release());
       } else {
@@ -300,7 +300,7 @@
       if (!list->Get(i, &element))
         continue;
 
-      scoped_ptr<NestedType> nested(new NestedType);
+      std::unique_ptr<NestedType> nested(new NestedType);
       if (converter_.Convert(*element, nested.get())) {
         field->push_back(nested.release());
       } else {
@@ -337,7 +337,7 @@
       if (!list->Get(i, &element))
         continue;
 
-      scoped_ptr<NestedType> nested(new NestedType);
+      std::unique_ptr<NestedType> nested(new NestedType);
       if ((*convert_func_)(element, nested.get())) {
         field->push_back(nested.release());
       } else {
diff --git a/base/json/json_value_converter_unittest.cc b/base/json/json_value_converter_unittest.cc
index 90386107..56ade24 100644
--- a/base/json/json_value_converter_unittest.cc
+++ b/base/json/json_value_converter_unittest.cc
@@ -4,11 +4,11 @@
 
 #include "base/json/json_value_converter.h"
 
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "base/strings/string_piece.h"
 #include "base/values.h"
@@ -106,7 +106,7 @@
       "  \"ints\": [1, 2]"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   SimpleMessage message;
   base::JSONValueConverter<SimpleMessage> converter;
   EXPECT_TRUE(converter.Convert(*value.get(), &message));
@@ -148,7 +148,7 @@
       "  }]\n"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   NestedMessage message;
   base::JSONValueConverter<NestedMessage> converter;
   EXPECT_TRUE(converter.Convert(*value.get(), &message));
@@ -190,7 +190,7 @@
       "  \"ints\": [1, 2]"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   SimpleMessage message;
   base::JSONValueConverter<SimpleMessage> converter;
   EXPECT_FALSE(converter.Convert(*value.get(), &message));
@@ -206,7 +206,7 @@
       "  \"ints\": [1, 2]"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   SimpleMessage message;
   base::JSONValueConverter<SimpleMessage> converter;
   // Convert() still succeeds even if the input doesn't have "bar" field.
@@ -229,7 +229,7 @@
       "  \"ints\": [1, 2]"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   SimpleMessage message;
   base::JSONValueConverter<SimpleMessage> converter;
   EXPECT_FALSE(converter.Convert(*value.get(), &message));
@@ -246,7 +246,7 @@
       "  \"ints\": [1, false]"
       "}\n";
 
-  scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
+  std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
   SimpleMessage message;
   base::JSONValueConverter<SimpleMessage> converter;
   EXPECT_FALSE(converter.Convert(*value.get(), &message));
diff --git a/base/json/json_value_serializer_unittest.cc b/base/json/json_value_serializer_unittest.cc
index a8531f08e..77d015c4 100644
--- a/base/json/json_value_serializer_unittest.cc
+++ b/base/json/json_value_serializer_unittest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
 #include <string>
 
 #include "base/files/file_util.h"
@@ -10,7 +11,6 @@
 #include "base/json/json_reader.h"
 #include "base/json/json_string_value_serializer.h"
 #include "base/json/json_writer.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -76,7 +76,7 @@
 }
 
 void ValidateJsonList(const std::string& json) {
-  scoped_ptr<Value> root = JSONReader::Read(json);
+  std::unique_ptr<Value> root = JSONReader::Read(json);
   ASSERT_TRUE(root.get() && root->IsType(Value::TYPE_LIST));
   ListValue* list = static_cast<ListValue*>(root.get());
   ASSERT_EQ(1U, list->GetSize());
@@ -94,7 +94,7 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value =
+  std::unique_ptr<Value> value =
       str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
@@ -113,7 +113,7 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value =
+  std::unique_ptr<Value> value =
       str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
@@ -130,7 +130,7 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value =
+  std::unique_ptr<Value> value =
       str_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_FALSE(value.get());
   ASSERT_NE(0, error_code);
@@ -158,7 +158,7 @@
 
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value =
+  std::unique_ptr<Value> value =
       file_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_TRUE(value.get());
   ASSERT_EQ(0, error_code);
@@ -183,7 +183,7 @@
   // This must fail without the proper flag.
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<Value> value =
+  std::unique_ptr<Value> value =
       file_deserializer.Deserialize(&error_code, &error_message);
   ASSERT_FALSE(value.get());
   ASSERT_NE(0, error_code);
@@ -198,8 +198,8 @@
 }
 
 TEST(JSONValueDeserializerTest, AllowTrailingComma) {
-  scoped_ptr<Value> root;
-  scoped_ptr<Value> root_expected;
+  std::unique_ptr<Value> root;
+  std::unique_ptr<Value> root_expected;
   static const char kTestWithCommas[] = "{\"key\": [true,],}";
   static const char kTestNoCommas[] = "{\"key\": [true]}";
 
@@ -217,7 +217,7 @@
   static const char kOriginalSerialization[] =
     "{\"bool\":true,\"double\":3.14,\"int\":42,\"list\":[1,2],\"null\":null}";
   JSONStringValueDeserializer deserializer(kOriginalSerialization);
-  scoped_ptr<Value> root = deserializer.Deserialize(NULL, NULL);
+  std::unique_ptr<Value> root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
   ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY));
 
@@ -327,7 +327,7 @@
 
   // escaped ascii text -> json
   JSONStringValueDeserializer deserializer(kExpected);
-  scoped_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
+  std::unique_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(deserial_root.get());
   DictionaryValue* dict_root =
       static_cast<DictionaryValue*>(deserial_root.get());
@@ -351,7 +351,7 @@
 
   // escaped ascii text -> json
   JSONStringValueDeserializer deserializer(kExpected);
-  scoped_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
+  std::unique_ptr<Value> deserial_root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(deserial_root.get());
   DictionaryValue* dict_root =
       static_cast<DictionaryValue*>(deserial_root.get());
@@ -378,7 +378,7 @@
   ValidateJsonList("[ 1 //// ,2\r\n ]");
 
   // It's ok to have a comment in a string.
-  scoped_ptr<Value> root = JSONReader::Read("[\"// ok\\n /* foo */ \"]");
+  std::unique_ptr<Value> root = JSONReader::Read("[\"// ok\\n /* foo */ \"]");
   ASSERT_TRUE(root.get() && root->IsType(Value::TYPE_LIST));
   ListValue* list = static_cast<ListValue*>(root.get());
   ASSERT_EQ(1U, list->GetSize());
@@ -413,7 +413,7 @@
   ASSERT_TRUE(PathExists(original_file_path));
 
   JSONFileValueDeserializer deserializer(original_file_path);
-  scoped_ptr<Value> root;
+  std::unique_ptr<Value> root;
   root = deserializer.Deserialize(NULL, NULL);
 
   ASSERT_TRUE(root.get());
@@ -461,7 +461,7 @@
   ASSERT_TRUE(PathExists(original_file_path));
 
   JSONFileValueDeserializer deserializer(original_file_path);
-  scoped_ptr<Value> root;
+  std::unique_ptr<Value> root;
   root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
 
@@ -486,7 +486,7 @@
       FILE_PATH_LITERAL("serializer_test_nowhitespace.json"));
   ASSERT_TRUE(PathExists(source_file_path));
   JSONFileValueDeserializer deserializer(source_file_path);
-  scoped_ptr<Value> root;
+  std::unique_ptr<Value> root;
   root = deserializer.Deserialize(NULL, NULL);
   ASSERT_TRUE(root.get());
 }
diff --git a/base/json/json_writer_unittest.cc b/base/json/json_writer_unittest.cc
index a62b3ba..37ad2686 100644
--- a/base/json/json_writer_unittest.cc
+++ b/base/json/json_writer_unittest.cc
@@ -3,6 +3,8 @@
 // found in the LICENSE file.
 
 #include "base/json/json_writer.h"
+
+#include "base/memory/ptr_util.h"
 #include "base/values.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -55,11 +57,11 @@
   // Writer unittests like empty list/dict nesting,
   // list list nesting, etc.
   DictionaryValue root_dict;
-  scoped_ptr<ListValue> list(new ListValue());
-  scoped_ptr<DictionaryValue> inner_dict(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> inner_dict(new DictionaryValue());
   inner_dict->SetInteger("inner int", 10);
   list->Append(std::move(inner_dict));
-  list->Append(make_scoped_ptr(new ListValue()));
+  list->Append(WrapUnique(new ListValue()));
   list->AppendBoolean(true);
   root_dict.Set("list", std::move(list));
 
@@ -91,7 +93,7 @@
   DictionaryValue period_dict;
   period_dict.SetIntegerWithoutPathExpansion("a.b", 3);
   period_dict.SetIntegerWithoutPathExpansion("c", 2);
-  scoped_ptr<DictionaryValue> period_dict2(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> period_dict2(new DictionaryValue());
   period_dict2->SetIntegerWithoutPathExpansion("g.h.i.j", 1);
   period_dict.SetWithoutPathExpansion("d.e.f", std::move(period_dict2));
   EXPECT_TRUE(JSONWriter::Write(period_dict, &output_js));
@@ -109,7 +111,7 @@
 
   // Binary values should return errors unless suppressed via the
   // OPTIONS_OMIT_BINARY_VALUES flag.
-  scoped_ptr<Value> root(BinaryValue::CreateWithCopiedBuffer("asdf", 4));
+  std::unique_ptr<Value> root(BinaryValue::CreateWithCopiedBuffer("asdf", 4));
   EXPECT_FALSE(JSONWriter::Write(*root, &output_js));
   EXPECT_TRUE(JSONWriter::WriteWithOptions(
       *root, JSONWriter::OPTIONS_OMIT_BINARY_VALUES, &output_js));
@@ -117,9 +119,9 @@
 
   ListValue binary_list;
   binary_list.Append(BinaryValue::CreateWithCopiedBuffer("asdf", 4));
-  binary_list.Append(make_scoped_ptr(new FundamentalValue(5)));
+  binary_list.Append(WrapUnique(new FundamentalValue(5)));
   binary_list.Append(BinaryValue::CreateWithCopiedBuffer("asdf", 4));
-  binary_list.Append(make_scoped_ptr(new FundamentalValue(2)));
+  binary_list.Append(WrapUnique(new FundamentalValue(2)));
   binary_list.Append(BinaryValue::CreateWithCopiedBuffer("asdf", 4));
   EXPECT_FALSE(JSONWriter::Write(binary_list, &output_js));
   EXPECT_TRUE(JSONWriter::WriteWithOptions(
@@ -128,13 +130,13 @@
 
   DictionaryValue binary_dict;
   binary_dict.Set(
-      "a", make_scoped_ptr(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
+      "a", WrapUnique(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
   binary_dict.SetInteger("b", 5);
   binary_dict.Set(
-      "c", make_scoped_ptr(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
+      "c", WrapUnique(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
   binary_dict.SetInteger("d", 2);
   binary_dict.Set(
-      "e", make_scoped_ptr(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
+      "e", WrapUnique(BinaryValue::CreateWithCopiedBuffer("asdf", 4)));
   EXPECT_FALSE(JSONWriter::Write(binary_dict, &output_js));
   EXPECT_TRUE(JSONWriter::WriteWithOptions(
       binary_dict, JSONWriter::OPTIONS_OMIT_BINARY_VALUES, &output_js));
diff --git a/base/linux_util.cc b/base/linux_util.cc
index 744a2311..74ac98f 100644
--- a/base/linux_util.cc
+++ b/base/linux_util.cc
@@ -13,11 +13,11 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/command_line.h"
 #include "base/files/file_util.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/process/launch.h"
 #include "base/strings/string_util.h"
@@ -155,7 +155,7 @@
   }
   closedir(task);
 
-  scoped_ptr<char[]> syscall_data(new char[expected_data.length()]);
+  std::unique_ptr<char[]> syscall_data(new char[expected_data.length()]);
   for (std::vector<pid_t>::const_iterator
        i = tids.begin(); i != tids.end(); ++i) {
     const pid_t current_tid = *i;
diff --git a/base/mac/dispatch_source_mach_unittest.cc b/base/mac/dispatch_source_mach_unittest.cc
index 82dc136..738a137 100644
--- a/base/mac/dispatch_source_mach_unittest.cc
+++ b/base/mac/dispatch_source_mach_unittest.cc
@@ -6,9 +6,10 @@
 
 #include <mach/mach.h>
 
+#include <memory>
+
 #include "base/logging.h"
 #include "base/mac/scoped_mach_port.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/test/test_timeouts.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -75,18 +76,17 @@
 TEST_F(DispatchSourceMachTest, NoMessagesAfterDestruction) {
   mach_port_t port = GetPort();
 
-  scoped_ptr<int> count(new int(0));
+  std::unique_ptr<int> count(new int(0));
   int* __block count_ptr = count.get();
 
-  scoped_ptr<DispatchSourceMach> source(new DispatchSourceMach(
-      "org.chromium.base.test.NoMessagesAfterDestruction",
-      port, ^{
-          mach_msg_empty_rcv_t msg = {{0}};
-          msg.header.msgh_size = sizeof(msg);
-          msg.header.msgh_local_port = port;
-          mach_msg_receive(&msg.header);
-          LOG(INFO) << "Receieve " << *count_ptr;
-          ++(*count_ptr);
+  std::unique_ptr<DispatchSourceMach> source(new DispatchSourceMach(
+      "org.chromium.base.test.NoMessagesAfterDestruction", port, ^{
+        mach_msg_empty_rcv_t msg = {{0}};
+        msg.header.msgh_size = sizeof(msg);
+        msg.header.msgh_local_port = port;
+        mach_msg_receive(&msg.header);
+        LOG(INFO) << "Receieve " << *count_ptr;
+        ++(*count_ptr);
       }));
   source->Resume();
 
@@ -107,7 +107,7 @@
     // pointer the handler dereferences. The test will crash if |count_ptr|
     // is being used after "free".
     if (i == 5) {
-      scoped_ptr<DispatchSourceMach>* source_ptr = &source;
+      std::unique_ptr<DispatchSourceMach>* source_ptr = &source;
       dispatch_async(queue, ^{
           source_ptr->reset();
           count_ptr = reinterpret_cast<int*>(0xdeaddead);
diff --git a/base/mac/mach_port_broker.h b/base/mac/mach_port_broker.h
index ba08b6f67..4554b6ae 100644
--- a/base/mac/mach_port_broker.h
+++ b/base/mac/mach_port_broker.h
@@ -8,13 +8,13 @@
 #include <mach/mach.h>
 
 #include <map>
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/mac/dispatch_source_mach.h"
 #include "base/mac/scoped_mach_port.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/process/port_provider_mac.h"
 #include "base/process/process_handle.h"
 #include "base/synchronization/lock.h"
@@ -91,7 +91,7 @@
   base::mac::ScopedMachReceiveRight server_port_;
 
   // The dispatch source and queue on which Mach messages will be received.
-  scoped_ptr<base::DispatchSourceMach> dispatch_source_;
+  std::unique_ptr<base::DispatchSourceMach> dispatch_source_;
 
   // Stores mach info for every process in the broker.
   typedef std::map<base::ProcessHandle, mach_port_t> MachMap;
diff --git a/base/mac/scoped_authorizationref.h b/base/mac/scoped_authorizationref.h
index 39afa8c..03cde8614 100644
--- a/base/mac/scoped_authorizationref.h
+++ b/base/mac/scoped_authorizationref.h
@@ -61,10 +61,9 @@
     authorization_ = temp;
   }
 
-  // ScopedAuthorizationRef::release() is like scoped_ptr<>::release.  It is
-  // NOT a wrapper for AuthorizationFree().  To force a
-  // ScopedAuthorizationRef object to call AuthorizationFree(), use
-  // ScopedAuthorizationRef::reset().
+  // ScopedAuthorizationRef::release() is like std::unique_ptr<>::release. It is
+  // NOT a wrapper for AuthorizationFree(). To force a ScopedAuthorizationRef
+  // object to call AuthorizationFree(), use ScopedAuthorizationRef::reset().
   AuthorizationRef release() WARN_UNUSED_RESULT {
     AuthorizationRef temp = authorization_;
     authorization_ = NULL;
diff --git a/base/mac/scoped_cftyperef.h b/base/mac/scoped_cftyperef.h
index 1be0fbe..ccbc5cf 100644
--- a/base/mac/scoped_cftyperef.h
+++ b/base/mac/scoped_cftyperef.h
@@ -11,10 +11,10 @@
 
 namespace base {
 
-// ScopedCFTypeRef<> is patterned after scoped_ptr<>, but maintains ownership
-// of a CoreFoundation object: any object that can be represented as a
-// CFTypeRef.  Style deviations here are solely for compatibility with
-// scoped_ptr<>'s interface, with which everyone is already familiar.
+// ScopedCFTypeRef<> is patterned after std::unique_ptr<>, but maintains
+// ownership of a CoreFoundation object: any object that can be represented
+// as a CFTypeRef.  Style deviations here are solely for compatibility with
+// std::unique_ptr<>'s interface, with which everyone is already familiar.
 //
 // By default, ScopedCFTypeRef<> takes ownership of an object (in the
 // constructor or in reset()) by taking over the caller's existing ownership
diff --git a/base/mac/scoped_launch_data.h b/base/mac/scoped_launch_data.h
index da62006..f4db3306 100644
--- a/base/mac/scoped_launch_data.h
+++ b/base/mac/scoped_launch_data.h
@@ -21,7 +21,7 @@
 
 }  // namespace internal
 
-// Just like scoped_ptr<> but for launch_data_t.
+// Just like std::unique_ptr<> but for launch_data_t.
 using ScopedLaunchData =
     ScopedGeneric<launch_data_t, internal::ScopedLaunchDataTraits>;
 
diff --git a/base/mac/scoped_nsobject.h b/base/mac/scoped_nsobject.h
index 04c5877..4b26acf7 100644
--- a/base/mac/scoped_nsobject.h
+++ b/base/mac/scoped_nsobject.h
@@ -19,10 +19,10 @@
 
 namespace base {
 
-// scoped_nsobject<> is patterned after scoped_ptr<>, but maintains ownership
-// of an NSObject subclass object.  Style deviations here are solely for
-// compatibility with scoped_ptr<>'s interface, with which everyone is already
-// familiar.
+// scoped_nsobject<> is patterned after std::unique_ptr<>, but maintains
+// ownership of an NSObject subclass object.  Style deviations here are solely
+// for compatibility with std::unique_ptr<>'s interface, with which everyone is
+// already familiar.
 //
 // scoped_nsobject<> takes ownership of an object (in the constructor or in
 // reset()) by taking over the caller's existing ownership claim.  The caller
diff --git a/base/mac/scoped_typeref.h b/base/mac/scoped_typeref.h
index 551ddf2..eed5afb 100644
--- a/base/mac/scoped_typeref.h
+++ b/base/mac/scoped_typeref.h
@@ -11,7 +11,7 @@
 
 namespace base {
 
-// ScopedTypeRef<> is patterned after scoped_ptr<>, but maintains a ownership
+// ScopedTypeRef<> is patterned after std::unique_ptr<>, but maintains ownership
 // of a reference to any type that is maintained by Retain and Release methods.
 //
 // The Traits structure must provide the Retain and Release methods for type T.
@@ -131,7 +131,7 @@
     object_ = temp;
   }
 
-  // ScopedTypeRef<>::release() is like scoped_ptr<>::release.  It is NOT
+  // ScopedTypeRef<>::release() is like std::unique_ptr<>::release.  It is NOT
   // a wrapper for Release().  To force a ScopedTypeRef<> object to call
   // Release(), use ScopedTypeRef<>::reset().
   T release() WARN_UNUSED_RESULT {
diff --git a/base/macros.h b/base/macros.h
index 46ee1dadb..554ea43 100644
--- a/base/macros.h
+++ b/base/macros.h
@@ -52,7 +52,7 @@
 // really sure you don't want to do anything with the return value of a function
 // that has been marked WARN_UNUSED_RESULT, wrap it with this. Example:
 //
-//   scoped_ptr<MyType> my_var = ...;
+//   std::unique_ptr<MyType> my_var = ...;
 //   if (TakeOwnership(my_var.get()) == SUCCESS)
 //     ignore_result(my_var.release());
 //
diff --git a/base/md5_unittest.cc b/base/md5_unittest.cc
index 3926b66..b27efe9f 100644
--- a/base/md5_unittest.cc
+++ b/base/md5_unittest.cc
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/md5.h"
+
 #include <string.h>
+
+#include <memory>
 #include <string>
 
-#include "base/memory/scoped_ptr.h"
-#include "base/md5.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -66,7 +68,7 @@
 
 TEST(MD5, MD5SumLongData) {
   const int length = 10 * 1024 * 1024 + 1;
-  scoped_ptr<char[]> data(new char[length]);
+  std::unique_ptr<char[]> data(new char[length]);
 
   for (int i = 0; i < length; ++i)
     data[i] = i & 0xFF;
@@ -108,7 +110,7 @@
   MD5Init(&ctx);
 
   const int length = 10 * 1024 * 1024 + 1;
-  scoped_ptr<char[]> data(new char[length]);
+  std::unique_ptr<char[]> data(new char[length]);
 
   for (int i = 0; i < length; ++i)
     data[i] = i & 0xFF;
diff --git a/base/memory/aligned_memory.h b/base/memory/aligned_memory.h
index bb7bd87..f6b8395 100644
--- a/base/memory/aligned_memory.h
+++ b/base/memory/aligned_memory.h
@@ -28,7 +28,7 @@
 //
 // Or using scoped_ptr:
 //
-//   scoped_ptr<float, AlignedFreeDeleter> my_array(
+//   std::unique_ptr<float, AlignedFreeDeleter> my_array(
 //       static_cast<float*>(AlignedAlloc(size, alignment)));
 
 #ifndef BASE_MEMORY_ALIGNED_MEMORY_H_
@@ -105,7 +105,7 @@
 }
 
 // Deleter for use with scoped_ptr. E.g., use as
-//   scoped_ptr<Foo, base::AlignedFreeDeleter> foo;
+//   std::unique_ptr<Foo, base::AlignedFreeDeleter> foo;
 struct AlignedFreeDeleter {
   inline void operator()(void* ptr) const {
     AlignedFree(ptr);
diff --git a/base/memory/aligned_memory_unittest.cc b/base/memory/aligned_memory_unittest.cc
index b89e341f..abe0cf3 100644
--- a/base/memory/aligned_memory_unittest.cc
+++ b/base/memory/aligned_memory_unittest.cc
@@ -3,7 +3,9 @@
 // found in the LICENSE file.
 
 #include "base/memory/aligned_memory.h"
-#include "base/memory/scoped_ptr.h"
+
+#include <memory>
+
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -92,7 +94,7 @@
 }
 
 TEST(AlignedMemoryTest, ScopedDynamicAllocation) {
-  scoped_ptr<float, base::AlignedFreeDeleter> p(
+  std::unique_ptr<float, base::AlignedFreeDeleter> p(
       static_cast<float*>(base::AlignedAlloc(8, 8)));
   EXPECT_TRUE(p.get());
   EXPECT_ALIGNED(p.get(), 8);
diff --git a/base/memory/discardable_memory_allocator.h b/base/memory/discardable_memory_allocator.h
index ea7947e..ad73f08 100644
--- a/base/memory/discardable_memory_allocator.h
+++ b/base/memory/discardable_memory_allocator.h
@@ -7,8 +7,9 @@
 
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/base_export.h"
-#include "base/memory/scoped_ptr.h"
 
 namespace base {
 class DiscardableMemory;
@@ -22,7 +23,7 @@
   // Ownership of |instance| remains with the caller.
   static void SetInstance(DiscardableMemoryAllocator* allocator);
 
-  virtual scoped_ptr<DiscardableMemory> AllocateLockedDiscardableMemory(
+  virtual std::unique_ptr<DiscardableMemory> AllocateLockedDiscardableMemory(
       size_t size) = 0;
 
  protected:
diff --git a/base/memory/memory_pressure_listener_unittest.cc b/base/memory/memory_pressure_listener_unittest.cc
index 38d429d3..acff1fd 100644
--- a/base/memory/memory_pressure_listener_unittest.cc
+++ b/base/memory/memory_pressure_listener_unittest.cc
@@ -46,8 +46,8 @@
   MOCK_METHOD1(OnMemoryPressure,
                void(MemoryPressureListener::MemoryPressureLevel));
 
-  scoped_ptr<MessageLoopForUI> message_loop_;
-  scoped_ptr<MemoryPressureListener> listener_;
+  std::unique_ptr<MessageLoopForUI> message_loop_;
+  std::unique_ptr<MemoryPressureListener> listener_;
 };
 
 TEST_F(MemoryPressureListenerTest, NotifyMemoryPressure) {
diff --git a/base/memory/memory_pressure_monitor_chromeos_unittest.cc b/base/memory/memory_pressure_monitor_chromeos_unittest.cc
index a82cef4b..4333cd9 100644
--- a/base/memory/memory_pressure_monitor_chromeos_unittest.cc
+++ b/base/memory/memory_pressure_monitor_chromeos_unittest.cc
@@ -74,9 +74,9 @@
 // for the correct behavior on event reposting as well as state updates.
 TEST(ChromeOSMemoryPressureMonitorTest, CheckMemoryPressure) {
   base::MessageLoopForUI message_loop;
-  scoped_ptr<TestMemoryPressureMonitor> monitor(
+  std::unique_ptr<TestMemoryPressureMonitor> monitor(
       new TestMemoryPressureMonitor);
-  scoped_ptr<MemoryPressureListener> listener(
+  std::unique_ptr<MemoryPressureListener> listener(
       new MemoryPressureListener(base::Bind(&OnMemoryPressure)));
   // Checking the memory pressure while 0% are used should not produce any
   // events.
diff --git a/base/memory/memory_pressure_monitor_mac.h b/base/memory/memory_pressure_monitor_mac.h
index 7604656..4e92204b 100644
--- a/base/memory/memory_pressure_monitor_mac.h
+++ b/base/memory/memory_pressure_monitor_mac.h
@@ -52,7 +52,7 @@
       MemoryPressureLevelForMacMemoryPressure(int mac_memory_pressure);
   static void NotifyMemoryPressureChanged(dispatch_source_s* event_source);
 
-  scoped_ptr<dispatch_source_s, DispatchSourceSDeleter>
+  std::unique_ptr<dispatch_source_s, DispatchSourceSDeleter>
       memory_level_event_source_;
 
   DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor);
diff --git a/base/memory/scoped_vector.h b/base/memory/scoped_vector.h
index 6730612..adbab8c 100644
--- a/base/memory/scoped_vector.h
+++ b/base/memory/scoped_vector.h
@@ -7,10 +7,10 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/move.h"
 #include "base/stl_util.h"
 
@@ -69,7 +69,7 @@
   reference back() { return v_.back(); }
 
   void push_back(T* elem) { v_.push_back(elem); }
-  void push_back(scoped_ptr<T> elem) { v_.push_back(elem.release()); }
+  void push_back(std::unique_ptr<T> elem) { v_.push_back(elem.release()); }
 
   void pop_back() {
     DCHECK(!empty());
@@ -110,7 +110,7 @@
     return v_.insert(position, x);
   }
 
-  iterator insert(iterator position, scoped_ptr<T> x) {
+  iterator insert(iterator position, std::unique_ptr<T> x) {
     return v_.insert(position, x.release());
   }
 
diff --git a/base/memory/scoped_vector_unittest.cc b/base/memory/scoped_vector_unittest.cc
index 8638ece..ea3dcdc 100644
--- a/base/memory/scoped_vector_unittest.cc
+++ b/base/memory/scoped_vector_unittest.cc
@@ -4,12 +4,12 @@
 
 #include "base/memory/scoped_vector.h"
 
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
@@ -112,7 +112,7 @@
 
  private:
   LifeCycleState life_cycle_state_;
-  scoped_ptr<LifeCycleObject> constructed_life_cycle_object_;
+  std::unique_ptr<LifeCycleObject> constructed_life_cycle_object_;
 
   DISALLOW_COPY_AND_ASSIGN(LifeCycleWatcher);
 };
@@ -325,7 +325,7 @@
 // Assertions for push_back(scoped_ptr).
 TEST(ScopedVectorTest, PushBackScopedPtr) {
   int delete_counter = 0;
-  scoped_ptr<DeleteCounter> elem(new DeleteCounter(&delete_counter));
+  std::unique_ptr<DeleteCounter> elem(new DeleteCounter(&delete_counter));
   EXPECT_EQ(0, delete_counter);
   {
     ScopedVector<DeleteCounter> v;
diff --git a/base/memory/shared_memory_mac_unittest.cc b/base/memory/shared_memory_mac_unittest.cc
index af120bf..c7d20ec 100644
--- a/base/memory/shared_memory_mac_unittest.cc
+++ b/base/memory/shared_memory_mac_unittest.cc
@@ -54,13 +54,13 @@
 }
 
 // Creates a new SharedMemory with the given |size|, filled with 'a'.
-scoped_ptr<SharedMemory> CreateSharedMemory(int size) {
+std::unique_ptr<SharedMemory> CreateSharedMemory(int size) {
   SharedMemoryHandle shm(size);
   if (!shm.IsValid()) {
     LOG(ERROR) << "Failed to make SharedMemoryHandle";
     return nullptr;
   }
-  scoped_ptr<SharedMemory> shared_memory(new SharedMemory(shm, false));
+  std::unique_ptr<SharedMemory> shared_memory(new SharedMemory(shm, false));
   shared_memory->Map(size);
   memset(shared_memory->memory(), 'a', size);
   return shared_memory;
@@ -230,7 +230,8 @@
 TEST_F(SharedMemoryMacMultiProcessTest, MachBasedSharedMemory) {
   SetUpChild("MachBasedSharedMemoryClient");
 
-  scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
+  std::unique_ptr<SharedMemory> shared_memory(
+      CreateSharedMemory(s_memory_size));
 
   // Send the underlying memory object to the client process.
   SendMachPort(client_port_.get(), shared_memory->handle().GetMemoryObject(),
@@ -331,7 +332,8 @@
 TEST_F(SharedMemoryMacMultiProcessTest, MachUnmapMap) {
   mach_msg_type_number_t active_name_count = GetActiveNameCount();
 
-  scoped_ptr<SharedMemory> shared_memory = CreateSharedMemory(s_memory_size);
+  std::unique_ptr<SharedMemory> shared_memory =
+      CreateSharedMemory(s_memory_size);
   ASSERT_TRUE(shared_memory->Unmap());
   ASSERT_TRUE(shared_memory->Map(s_memory_size));
   shared_memory.reset();
@@ -350,7 +352,7 @@
   EXPECT_EQ(active_name_count + 1, GetActiveNameCount());
 
   // Name count doesn't change when mapping the memory.
-  scoped_ptr<SharedMemory> shared_memory(new SharedMemory(shm, false));
+  std::unique_ptr<SharedMemory> shared_memory(new SharedMemory(shm, false));
   shared_memory->Map(s_memory_size);
   EXPECT_EQ(active_name_count + 1, GetActiveNameCount());
 
@@ -361,7 +363,8 @@
 
 // Tests that the read-only flag works.
 TEST_F(SharedMemoryMacMultiProcessTest, MachReadOnly) {
-  scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
+  std::unique_ptr<SharedMemory> shared_memory(
+      CreateSharedMemory(s_memory_size));
 
   SharedMemoryHandle shm2 = shared_memory->handle().Duplicate();
   ASSERT_TRUE(shm2.IsValid());
@@ -375,7 +378,8 @@
   mach_msg_type_number_t active_name_count = GetActiveNameCount();
 
   {
-    scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
+    std::unique_ptr<SharedMemory> shared_memory(
+        CreateSharedMemory(s_memory_size));
 
     SharedMemoryHandle shm2;
     ASSERT_TRUE(shared_memory->ShareToProcess(GetCurrentProcId(), &shm2));
@@ -393,7 +397,8 @@
 // Tests that the method ShareReadOnlyToProcess() creates a memory object that
 // is read only.
 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcessReadonly) {
-  scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
+  std::unique_ptr<SharedMemory> shared_memory(
+      CreateSharedMemory(s_memory_size));
 
   // Check the protection levels.
   int current_prot, max_prot;
@@ -435,7 +440,8 @@
   mach_msg_type_number_t active_name_count = GetActiveNameCount();
 
   {
-    scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
+    std::unique_ptr<SharedMemory> shared_memory(
+        CreateSharedMemory(s_memory_size));
 
     SharedMemoryHandle shm2;
     ASSERT_TRUE(
diff --git a/base/memory/shared_memory_unittest.cc b/base/memory/shared_memory_unittest.cc
index 059e0193..948a9d0d 100644
--- a/base/memory/shared_memory_unittest.cc
+++ b/base/memory/shared_memory_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/memory/shared_memory.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/atomicops.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/shared_memory.h"
 #include "base/memory/shared_memory_handle.h"
 #include "base/process/kill.h"
 #include "base/rand_util.h"
@@ -246,8 +248,8 @@
   int threadcounts[] = { 1, kNumThreads };
   for (size_t i = 0; i < arraysize(threadcounts); i++) {
     int numthreads = threadcounts[i];
-    scoped_ptr<PlatformThreadHandle[]> thread_handles;
-    scoped_ptr<MultipleThreadMain*[]> thread_delegates;
+    std::unique_ptr<PlatformThreadHandle[]> thread_handles;
+    std::unique_ptr<MultipleThreadMain* []> thread_delegates;
 
     thread_handles.reset(new PlatformThreadHandle[numthreads]);
     thread_delegates.reset(new MultipleThreadMain*[numthreads]);
@@ -279,8 +281,8 @@
   bool rv;
   const uint32_t kDataSize = 8192;
 
-  scoped_ptr<SharedMemory[]> memories(new SharedMemory[count]);
-  scoped_ptr<int*[]> pointers(new int*[count]);
+  std::unique_ptr<SharedMemory[]> memories(new SharedMemory[count]);
+  std::unique_ptr<int* []> pointers(new int*[count]);
   ASSERT_TRUE(memories.get());
   ASSERT_TRUE(pointers.get());
 
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc
index 9da7f63..421fde8 100644
--- a/base/memory/shared_memory_win.cc
+++ b/base/memory/shared_memory_win.cc
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/rand_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/base/memory/shared_memory_win_unittest.cc b/base/memory/shared_memory_win_unittest.cc
index a9199627..5fc132d2 100644
--- a/base/memory/shared_memory_win_unittest.cc
+++ b/base/memory/shared_memory_win_unittest.cc
@@ -5,9 +5,10 @@
 #include <windows.h>
 #include <sddl.h>
 
+#include <memory>
+
 #include "base/command_line.h"
 #include "base/memory/free_deleter.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/shared_memory.h"
 #include "base/process/process.h"
 #include "base/rand_util.h"
@@ -88,7 +89,8 @@
 void WriteHandleToPipe(HANDLE pipe, HANDLE handle) {
   uint32_t handle_as_int = base::win::HandleToUint32(handle);
 
-  scoped_ptr<char, base::FreeDeleter> buffer(static_cast<char*>(malloc(1000)));
+  std::unique_ptr<char, base::FreeDeleter> buffer(
+      static_cast<char*>(malloc(1000)));
   size_t index = 0;
   while (handle_as_int > 0) {
     buffer.get()[index] = handle_as_int % 10;
diff --git a/base/memory/weak_ptr_unittest.cc b/base/memory/weak_ptr_unittest.cc
index 5f9b6b6..df398d9 100644
--- a/base/memory/weak_ptr_unittest.cc
+++ b/base/memory/weak_ptr_unittest.cc
@@ -4,12 +4,12 @@
 
 #include "base/memory/weak_ptr.h"
 
+#include <memory>
 #include <string>
 
 #include "base/bind.h"
 #include "base/debug/leak_annotations.h"
 #include "base/location.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread.h"
@@ -327,7 +327,7 @@
   // Test that it is OK to create an object that supports WeakPtr on one thread,
   // but use it on another.  This tests that we do not trip runtime checks that
   // ensure that a WeakPtr is not used by multiple threads.
-  scoped_ptr<Target> target(OffThreadObjectCreator<Target>::NewObject());
+  std::unique_ptr<Target> target(OffThreadObjectCreator<Target>::NewObject());
   WeakPtr<Target> weak_ptr = target->AsWeakPtr();
   EXPECT_EQ(target.get(), weak_ptr.get());
 }
@@ -336,7 +336,7 @@
   // Test that it is OK to create an object that has a WeakPtr member on one
   // thread, but use it on another.  This tests that we do not trip runtime
   // checks that ensure that a WeakPtr is not used by multiple threads.
-  scoped_ptr<Arrow> arrow(OffThreadObjectCreator<Arrow>::NewObject());
+  std::unique_ptr<Arrow> arrow(OffThreadObjectCreator<Arrow>::NewObject());
   Target target;
   arrow->target = target.AsWeakPtr();
   EXPECT_EQ(&target, arrow->target.get());
@@ -409,7 +409,7 @@
   background.Start();
 
   Arrow arrow;
-  scoped_ptr<TargetWithFactory> target(new TargetWithFactory);
+  std::unique_ptr<TargetWithFactory> target(new TargetWithFactory);
 
   // Bind to main thread.
   arrow.target = target->factory.GetWeakPtr();
@@ -579,7 +579,7 @@
   // (introduces deadlock on Linux).
   ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
-  scoped_ptr<Target> target(new Target());
+  std::unique_ptr<Target> target(new Target());
 
   // Main thread creates an arrow referencing the Target.
   Arrow arrow;
@@ -603,7 +603,7 @@
   // (introduces deadlock on Linux).
   ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
-  scoped_ptr<Target> target(new Target());
+  std::unique_ptr<Target> target(new Target());
 
   // Main thread creates an arrow referencing the Target, and references it, so
   // that it becomes bound to the thread.
@@ -622,7 +622,7 @@
   // (introduces deadlock on Linux).
   ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
-  scoped_ptr<Target> target(new Target());
+  std::unique_ptr<Target> target(new Target());
 
   // Main thread creates an arrow referencing the Target.
   Arrow arrow;
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index 04aa9a8..01e7512 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -5,13 +5,14 @@
 #include "base/message_loop/message_loop.h"
 
 #include <algorithm>
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/message_loop/message_pump_default.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/statistics_recorder.h"
@@ -103,7 +104,7 @@
 }
 #endif  // !defined(OS_NACL_SFI)
 
-scoped_ptr<MessagePump> ReturnPump(scoped_ptr<MessagePump> pump) {
+std::unique_ptr<MessagePump> ReturnPump(std::unique_ptr<MessagePump> pump) {
   return pump;
 }
 
@@ -127,7 +128,7 @@
   BindToCurrentThread();
 }
 
-MessageLoop::MessageLoop(scoped_ptr<MessagePump> pump)
+MessageLoop::MessageLoop(std::unique_ptr<MessagePump> pump)
     : MessageLoop(TYPE_CUSTOM, Bind(&ReturnPump, Passed(&pump))) {
   BindToCurrentThread();
 }
@@ -206,7 +207,7 @@
 }
 
 // static
-scoped_ptr<MessagePump> MessageLoop::CreateMessagePumpForType(Type type) {
+std::unique_ptr<MessagePump> MessageLoop::CreateMessagePumpForType(Type type) {
 // TODO(rvargas): Get rid of the OS guards.
 #if defined(USE_GLIB) && !defined(OS_NACL)
   typedef MessagePumpGlib MessagePumpForUI;
@@ -215,21 +216,22 @@
 #endif
 
 #if defined(OS_IOS) || defined(OS_MACOSX)
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(MessagePumpMac::Create())
+#define MESSAGE_PUMP_UI std::unique_ptr<MessagePump>(MessagePumpMac::Create())
 #elif defined(OS_NACL)
 // Currently NaCl doesn't have a UI MessageLoop.
 // TODO(abarth): Figure out if we need this.
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>()
+#define MESSAGE_PUMP_UI std::unique_ptr<MessagePump>()
 #else
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(new MessagePumpForUI())
+#define MESSAGE_PUMP_UI std::unique_ptr<MessagePump>(new MessagePumpForUI())
 #endif
 
 #if defined(OS_MACOSX)
   // Use an OS native runloop on Mac to support timer coalescing.
-  #define MESSAGE_PUMP_DEFAULT \
-      scoped_ptr<MessagePump>(new MessagePumpCFRunLoop())
+#define MESSAGE_PUMP_DEFAULT \
+  std::unique_ptr<MessagePump>(new MessagePumpCFRunLoop())
 #else
-  #define MESSAGE_PUMP_DEFAULT scoped_ptr<MessagePump>(new MessagePumpDefault())
+#define MESSAGE_PUMP_DEFAULT \
+  std::unique_ptr<MessagePump>(new MessagePumpDefault())
 #endif
 
   if (type == MessageLoop::TYPE_UI) {
@@ -238,11 +240,11 @@
     return MESSAGE_PUMP_UI;
   }
   if (type == MessageLoop::TYPE_IO)
-    return scoped_ptr<MessagePump>(new MessagePumpForIO());
+    return std::unique_ptr<MessagePump>(new MessagePumpForIO());
 
 #if defined(OS_ANDROID)
   if (type == MessageLoop::TYPE_JAVA)
-    return scoped_ptr<MessagePump>(new MessagePumpForUI());
+    return std::unique_ptr<MessagePump>(new MessagePumpForUI());
 #endif
 
   DCHECK_EQ(MessageLoop::TYPE_DEFAULT, type);
@@ -375,9 +377,10 @@
 //------------------------------------------------------------------------------
 
 // static
-scoped_ptr<MessageLoop> MessageLoop::CreateUnbound(
-    Type type, MessagePumpFactoryCallback pump_factory) {
-  return make_scoped_ptr(new MessageLoop(type, pump_factory));
+std::unique_ptr<MessageLoop> MessageLoop::CreateUnbound(
+    Type type,
+    MessagePumpFactoryCallback pump_factory) {
+  return WrapUnique(new MessageLoop(type, pump_factory));
 }
 
 MessageLoop::MessageLoop(Type type, MessagePumpFactoryCallback pump_factory)
@@ -674,9 +677,8 @@
 //------------------------------------------------------------------------------
 // MessageLoopForUI
 
-MessageLoopForUI::MessageLoopForUI(scoped_ptr<MessagePump> pump)
-    : MessageLoop(TYPE_UI, Bind(&ReturnPump, Passed(&pump))) {
-}
+MessageLoopForUI::MessageLoopForUI(std::unique_ptr<MessagePump> pump)
+    : MessageLoop(TYPE_UI, Bind(&ReturnPump, Passed(&pump))) {}
 
 #if defined(OS_ANDROID)
 void MessageLoopForUI::Start() {
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h
index ce960e19..802fae0 100644
--- a/base/message_loop/message_loop.h
+++ b/base/message_loop/message_loop.h
@@ -5,6 +5,7 @@
 #ifndef BASE_MESSAGE_LOOP_MESSAGE_LOOP_H_
 #define BASE_MESSAGE_LOOP_MESSAGE_LOOP_H_
 
+#include <memory>
 #include <queue>
 #include <string>
 
@@ -15,7 +16,6 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/incoming_task_queue.h"
 #include "base/message_loop/message_loop_task_runner.h"
 #include "base/message_loop/message_pump.h"
@@ -115,7 +115,7 @@
   explicit MessageLoop(Type type = TYPE_DEFAULT);
   // Creates a TYPE_CUSTOM MessageLoop with the supplied MessagePump, which must
   // be non-NULL.
-  explicit MessageLoop(scoped_ptr<MessagePump> pump);
+  explicit MessageLoop(std::unique_ptr<MessagePump> pump);
 
   ~MessageLoop() override;
 
@@ -124,7 +124,7 @@
 
   static void EnableHistogrammer(bool enable_histogrammer);
 
-  typedef scoped_ptr<MessagePump> (MessagePumpFactory)();
+  typedef std::unique_ptr<MessagePump>(MessagePumpFactory)();
   // Uses the given base::MessagePumpForUIFactory to override the default
   // MessagePump implementation for 'TYPE_UI'. Returns true if the factory
   // was successfully registered.
@@ -132,7 +132,7 @@
 
   // Creates the default MessagePump based on |type|. Caller owns return
   // value.
-  static scoped_ptr<MessagePump> CreateMessagePumpForType(Type type);
+  static std::unique_ptr<MessagePump> CreateMessagePumpForType(Type type);
   // A DestructionObserver is notified when the current MessageLoop is being
   // destroyed.  These observers are notified prior to MessageLoop::current()
   // being changed to return NULL.  This gives interested parties the chance to
@@ -397,9 +397,9 @@
 
   //----------------------------------------------------------------------------
  protected:
-  scoped_ptr<MessagePump> pump_;
+  std::unique_ptr<MessagePump> pump_;
 
-  using MessagePumpFactoryCallback = Callback<scoped_ptr<MessagePump>()>;
+  using MessagePumpFactoryCallback = Callback<std::unique_ptr<MessagePump>()>;
 
   // Common protected constructor. Other constructors delegate the
   // initialization to this constructor.
@@ -430,7 +430,7 @@
   // thread the message loop runs on, before calling Run().
   // Before BindToCurrentThread() is called, only Post*Task() functions can
   // be called on the message loop.
-  static scoped_ptr<MessageLoop> CreateUnbound(
+  static std::unique_ptr<MessageLoop> CreateUnbound(
       Type type,
       MessagePumpFactoryCallback pump_factory);
 
@@ -538,7 +538,7 @@
 
   // The task runner associated with this message loop.
   scoped_refptr<SingleThreadTaskRunner> task_runner_;
-  scoped_ptr<ThreadTaskRunnerHandle> thread_task_runner_handle_;
+  std::unique_ptr<ThreadTaskRunnerHandle> thread_task_runner_handle_;
 
   template <class T, class R> friend class base::subtle::DeleteHelperInternal;
   template <class T, class R> friend class base::subtle::ReleaseHelperInternal;
@@ -567,7 +567,7 @@
   MessageLoopForUI() : MessageLoop(TYPE_UI) {
   }
 
-  explicit MessageLoopForUI(scoped_ptr<MessagePump> pump);
+  explicit MessageLoopForUI(std::unique_ptr<MessagePump> pump);
 
   // Returns the MessageLoopForUI of the current thread.
   static MessageLoopForUI* current() {
diff --git a/base/message_loop/message_loop_task_runner_unittest.cc b/base/message_loop/message_loop_task_runner_unittest.cc
index a0d84b7..51dfd11 100644
--- a/base/message_loop/message_loop_task_runner_unittest.cc
+++ b/base/message_loop/message_loop_task_runner_unittest.cc
@@ -4,10 +4,11 @@
 
 #include "base/message_loop/message_loop_task_runner.h"
 
+#include <memory>
+
 #include "base/atomic_sequence_num.h"
 #include "base/bind.h"
 #include "base/debug/leak_annotations.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/message_loop/message_loop_task_runner.h"
 #include "base/synchronization/waitable_event.h"
@@ -88,7 +89,7 @@
 
   static StaticAtomicSequenceNumber g_order;
 
-  scoped_ptr<MessageLoop> current_loop_;
+  std::unique_ptr<MessageLoop> current_loop_;
   Thread task_thread_;
 
  private:
@@ -303,8 +304,8 @@
     MessageLoopTaskRunnerThreadingTest* test_;
   };
 
-  scoped_ptr<Thread> io_thread_;
-  scoped_ptr<Thread> file_thread_;
+  std::unique_ptr<Thread> io_thread_;
+  std::unique_ptr<Thread> file_thread_;
 
  private:
   mutable MessageLoop loop_;
@@ -330,7 +331,7 @@
 }
 
 TEST_F(MessageLoopTaskRunnerThreadingTest, PostTaskAfterThreadExits) {
-  scoped_ptr<Thread> test_thread(
+  std::unique_ptr<Thread> test_thread(
       new Thread("MessageLoopTaskRunnerThreadingTest_Dummy"));
   test_thread->Start();
   scoped_refptr<SingleThreadTaskRunner> task_runner =
@@ -345,7 +346,7 @@
 TEST_F(MessageLoopTaskRunnerThreadingTest, PostTaskAfterThreadIsDeleted) {
   scoped_refptr<SingleThreadTaskRunner> task_runner;
   {
-    scoped_ptr<Thread> test_thread(
+    std::unique_ptr<Thread> test_thread(
         new Thread("MessageLoopTaskRunnerThreadingTest_Dummy"));
     test_thread->Start();
     task_runner = test_thread->task_runner();
diff --git a/base/message_loop/message_loop_test.cc b/base/message_loop/message_loop_test.cc
index ac50d64..c0e6481c 100644
--- a/base/message_loop/message_loop_test.cc
+++ b/base/message_loop/message_loop_test.cc
@@ -91,7 +91,7 @@
 }  // namespace
 
 void RunTest_PostTask(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
   // Add tests to message loop
   scoped_refptr<Foo> foo(new Foo());
@@ -121,7 +121,7 @@
 }
 
 void RunTest_PostDelayedTask_Basic(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that PostDelayedTask results in a delayed task.
@@ -144,7 +144,7 @@
 }
 
 void RunTest_PostDelayedTask_InDelayOrder(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that two tasks with different delays run in the right order.
@@ -169,7 +169,7 @@
 }
 
 void RunTest_PostDelayedTask_InPostOrder(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that two tasks with the same delay run in the order in which they
@@ -199,7 +199,7 @@
 }
 
 void RunTest_PostDelayedTask_InPostOrder_2(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that a delayed task still runs after a normal tasks even if the
@@ -226,7 +226,7 @@
 }
 
 void RunTest_PostDelayedTask_InPostOrder_3(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that a delayed task still runs after a pile of normal tasks.  The key
@@ -254,7 +254,7 @@
 }
 
 void RunTest_PostDelayedTask_SharedTimer(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   // Test that the interval of the timer, used to run the next delayed task, is
@@ -321,7 +321,7 @@
   bool a_was_deleted = false;
   bool b_was_deleted = false;
   {
-    scoped_ptr<MessagePump> pump(factory());
+    std::unique_ptr<MessagePump> pump(factory());
     MessageLoop loop(std::move(pump));
     loop.PostTask(
         FROM_HERE, Bind(&RecordDeletionProbe::Run,
@@ -341,7 +341,7 @@
   bool b_was_deleted = false;
   bool c_was_deleted = false;
   {
-    scoped_ptr<MessagePump> pump(factory());
+    std::unique_ptr<MessagePump> pump(factory());
     MessageLoop loop(std::move(pump));
     // The scoped_refptr for each of the below is held either by the chained
     // RecordDeletionProbe, or the bound RecordDeletionProbe::Run() callback.
@@ -368,7 +368,7 @@
 }
 
 void RunTest_Nesting(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   int depth = 100;
@@ -476,7 +476,7 @@
   order->RecordEnd(QUITMESSAGELOOP, cookie);
 }
 void RunTest_RecursiveDenial1(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   EXPECT_TRUE(MessageLoop::current()->NestableTasksAllowed());
@@ -523,7 +523,7 @@
 }
 
 void RunTest_RecursiveDenial3(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   EXPECT_TRUE(MessageLoop::current()->NestableTasksAllowed());
@@ -564,7 +564,7 @@
 }
 
 void RunTest_RecursiveSupport1(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -597,7 +597,7 @@
 
 // Tests that non nestable tasks run in FIFO if there are no nested loops.
 void RunTest_NonNestableWithNoNesting(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -639,7 +639,7 @@
 // Tests that non nestable tasks don't run when there's code in the call stack.
 void RunTest_NonNestableInNestedLoop(MessagePumpFactory factory,
                                      bool use_delayed) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -707,7 +707,7 @@
 }
 // Tests RunLoopQuit only quits the corresponding MessageLoop::Run.
 void RunTest_QuitNow(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -742,7 +742,7 @@
 
 // Tests RunLoopQuit only quits the corresponding MessageLoop::Run.
 void RunTest_RunLoopQuitTop(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -772,7 +772,7 @@
 
 // Tests RunLoopQuit only quits the corresponding MessageLoop::Run.
 void RunTest_RunLoopQuitNested(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -802,7 +802,7 @@
 
 // Tests RunLoopQuit only quits the corresponding MessageLoop::Run.
 void RunTest_RunLoopQuitBogus(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -835,7 +835,7 @@
 
 // Tests RunLoopQuit only quits the corresponding MessageLoop::Run.
 void RunTest_RunLoopQuitDeep(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -904,7 +904,7 @@
 
 // Tests RunLoopQuit works before RunWithID.
 void RunTest_RunLoopQuitOrderBefore(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -925,7 +925,7 @@
 
 // Tests RunLoopQuit works during RunWithID.
 void RunTest_RunLoopQuitOrderDuring(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -952,7 +952,7 @@
 
 // Tests RunLoopQuit works after RunWithID.
 void RunTest_RunLoopQuitOrderAfter(MessagePumpFactory factory) {
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
 
   TaskList order;
@@ -1010,7 +1010,7 @@
 // times to reproduce the bug.
 void RunTest_RecursivePosts(MessagePumpFactory factory) {
   const int kNumTimes = 1 << 17;
-  scoped_ptr<MessagePump> pump(factory());
+  std::unique_ptr<MessagePump> pump(factory());
   MessageLoop loop(std::move(pump));
   loop.PostTask(FROM_HERE, Bind(&PostNTasksThenQuit, kNumTimes));
   loop.Run();
diff --git a/base/message_loop/message_loop_unittest.cc b/base/message_loop/message_loop_unittest.cc
index 7b31214..e0e46e2202 100644
--- a/base/message_loop/message_loop_unittest.cc
+++ b/base/message_loop/message_loop_unittest.cc
@@ -41,15 +41,15 @@
 
 namespace {
 
-scoped_ptr<MessagePump> TypeDefaultMessagePumpFactory() {
+std::unique_ptr<MessagePump> TypeDefaultMessagePumpFactory() {
   return MessageLoop::CreateMessagePumpForType(MessageLoop::TYPE_DEFAULT);
 }
 
-scoped_ptr<MessagePump> TypeIOMessagePumpFactory() {
+std::unique_ptr<MessagePump> TypeIOMessagePumpFactory() {
   return MessageLoop::CreateMessagePumpForType(MessageLoop::TYPE_IO);
 }
 
-scoped_ptr<MessagePump> TypeUIMessagePumpFactory() {
+std::unique_ptr<MessagePump> TypeUIMessagePumpFactory() {
   return MessageLoop::CreateMessagePumpForType(MessageLoop::TYPE_UI);
 }
 
@@ -971,7 +971,7 @@
   // It should be possible to delete an unbound message loop on a thread which
   // already has another active loop. This happens when thread creation fails.
   MessageLoop loop;
-  scoped_ptr<MessageLoop> unbound_loop(MessageLoop::CreateUnbound(
+  std::unique_ptr<MessageLoop> unbound_loop(MessageLoop::CreateUnbound(
       MessageLoop::TYPE_DEFAULT, MessageLoop::MessagePumpFactoryCallback()));
   unbound_loop.reset();
   EXPECT_EQ(&loop, MessageLoop::current());
diff --git a/base/message_loop/message_pump_glib.h b/base/message_loop/message_pump_glib.h
index b94eeaf4..a2b54d8 100644
--- a/base/message_loop/message_pump_glib.h
+++ b/base/message_loop/message_pump_glib.h
@@ -5,9 +5,10 @@
 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_GLIB_H_
 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_GLIB_H_
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_pump.h"
 #include "base/observer_list.h"
 #include "base/time/time.h"
@@ -69,7 +70,7 @@
   int wakeup_pipe_read_;
   int wakeup_pipe_write_;
   // Use a scoped_ptr to avoid needing the definition of GPollFD in the header.
-  scoped_ptr<GPollFD> wakeup_gpollfd_;
+  std::unique_ptr<GPollFD> wakeup_gpollfd_;
 
   DISALLOW_COPY_AND_ASSIGN(MessagePumpGlib);
 };
diff --git a/base/message_loop/message_pump_io_ios_unittest.cc b/base/message_loop/message_pump_io_ios_unittest.cc
index e51de70..9aadc6b 100644
--- a/base/message_loop/message_pump_io_ios_unittest.cc
+++ b/base/message_loop/message_pump_io_ios_unittest.cc
@@ -121,7 +121,7 @@
 };
 
 TEST_F(MessagePumpIOSForIOTest, DeleteWatcher) {
-  scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
+  std::unique_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
   MessagePumpIOSForIO::FileDescriptorWatcher* watcher =
       new MessagePumpIOSForIO::FileDescriptorWatcher;
   DeleteWatcher delegate(watcher);
@@ -157,7 +157,7 @@
 };
 
 TEST_F(MessagePumpIOSForIOTest, StopWatcher) {
-  scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
+  std::unique_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
   MessagePumpIOSForIO::FileDescriptorWatcher watcher;
   StopWatcher delegate(&watcher, pump.get());
   pump->WatchFileDescriptor(pipefds_[1],
@@ -168,7 +168,7 @@
 }
 
 TEST_F(MessagePumpIOSForIOTest, StopWatcherAndWatchSomethingElse) {
-  scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
+  std::unique_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
   MessagePumpIOSForIO::FileDescriptorWatcher watcher;
   StopWatcher delegate(&watcher, pump.get(), alternate_pipefds_[1]);
   pump->WatchFileDescriptor(pipefds_[1],
diff --git a/base/message_loop/message_pump_libevent.cc b/base/message_loop/message_pump_libevent.cc
index c0a02b2b..d59a234b 100644
--- a/base/message_loop/message_pump_libevent.cc
+++ b/base/message_loop/message_pump_libevent.cc
@@ -7,11 +7,12 @@
 #include <errno.h>
 #include <unistd.h>
 
+#include <memory>
+
 #include "base/auto_reset.h"
 #include "base/compiler_specific.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/observer_list.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/third_party/libevent/event.h"
@@ -153,7 +154,7 @@
     event_mask |= EV_WRITE;
   }
 
-  scoped_ptr<event> evt(controller->ReleaseEvent());
+  std::unique_ptr<event> evt(controller->ReleaseEvent());
   if (evt.get() == NULL) {
     // Ownership is transferred to the controller.
     evt.reset(new event);
@@ -219,7 +220,7 @@
 
   // event_base_loopexit() + EVLOOP_ONCE is leaky, see http://crbug.com/25641.
   // Instead, make our own timer and reuse it on each call to event_base_loop().
-  scoped_ptr<event> timer_event(new event);
+  std::unique_ptr<event> timer_event(new event);
 
   for (;;) {
 #if defined(OS_MACOSX)
diff --git a/base/message_loop/message_pump_libevent_unittest.cc b/base/message_loop/message_pump_libevent_unittest.cc
index eb30d53..81afa5e 100644
--- a/base/message_loop/message_pump_libevent_unittest.cc
+++ b/base/message_loop/message_pump_libevent_unittest.cc
@@ -6,10 +6,12 @@
 
 #include <unistd.h>
 
+#include <memory>
+
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/files/file_util.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/run_loop.h"
@@ -55,7 +57,7 @@
   }
 
   int pipefds_[2];
-  scoped_ptr<MessageLoop> ui_loop_;
+  std::unique_ptr<MessageLoop> ui_loop_;
 
  private:
   Thread io_thread_;
@@ -95,7 +97,7 @@
 }
 
 TEST_F(MessagePumpLibeventTest, QuitOutsideOfRun) {
-  scoped_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
+  std::unique_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
   ASSERT_DEATH(pump->Quit(), "Check failed: in_run_. "
                              "Quit was called outside of Run!");
 }
@@ -135,7 +137,7 @@
 };
 
 TEST_F(MessagePumpLibeventTest, DeleteWatcher) {
-  scoped_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
+  std::unique_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
   MessagePumpLibevent::FileDescriptorWatcher* watcher =
       new MessagePumpLibevent::FileDescriptorWatcher;
   DeleteWatcher delegate(watcher);
@@ -160,7 +162,7 @@
 };
 
 TEST_F(MessagePumpLibeventTest, StopWatcher) {
-  scoped_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
+  std::unique_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
   MessagePumpLibevent::FileDescriptorWatcher watcher;
   StopWatcher delegate(&watcher);
   pump->WatchFileDescriptor(pipefds_[1],
@@ -195,7 +197,7 @@
 };
 
 TEST_F(MessagePumpLibeventTest, NestedPumpWatcher) {
-  scoped_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
+  std::unique_ptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
   MessagePumpLibevent::FileDescriptorWatcher watcher;
   NestedPumpWatcher delegate;
   pump->WatchFileDescriptor(pipefds_[1],
@@ -242,12 +244,12 @@
   ui_loop_.reset();
 
   MessagePumpLibevent* pump = new MessagePumpLibevent;  // owned by |loop|.
-  MessageLoop loop(make_scoped_ptr(pump));
+  MessageLoop loop(WrapUnique(pump));
   RunLoop run_loop;
   MessagePumpLibevent::FileDescriptorWatcher controller;
   QuitWatcher delegate(&controller, &run_loop);
   WaitableEvent event(false /* manual_reset */, false /* initially_signaled */);
-  scoped_ptr<WaitableEventWatcher> watcher(new WaitableEventWatcher);
+  std::unique_ptr<WaitableEventWatcher> watcher(new WaitableEventWatcher);
 
   // Tell the pump to watch the pipe.
   pump->WatchFileDescriptor(pipefds_[0], false, MessagePumpLibevent::WATCH_READ,
diff --git a/base/message_loop/message_pump_perftest.cc b/base/message_loop/message_pump_perftest.cc
index 789fc1f..edaf206 100644
--- a/base/message_loop/message_pump_perftest.cc
+++ b/base/message_loop/message_pump_perftest.cc
@@ -7,6 +7,7 @@
 
 #include "base/bind.h"
 #include "base/format_macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_vector.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/condition_variable.h"
@@ -87,7 +88,7 @@
       target_->WaitUntilThreadStarted();
     }
 
-    std::vector<scoped_ptr<Thread>> scheduling_threads;
+    std::vector<std::unique_ptr<Thread>> scheduling_threads;
     scheduling_times_.reset(new base::TimeDelta[num_scheduling_threads]);
     scheduling_thread_times_.reset(new base::TimeDelta[num_scheduling_threads]);
     min_batch_times_.reset(new base::TimeDelta[num_scheduling_threads]);
@@ -95,7 +96,7 @@
 
     for (int i = 0; i < num_scheduling_threads; ++i) {
       scheduling_threads.push_back(
-          make_scoped_ptr(new Thread("posting thread")));
+          WrapUnique(new Thread("posting thread")));
       scheduling_threads[i]->Start();
     }
 
@@ -175,14 +176,14 @@
   }
 
  private:
-  scoped_ptr<Thread> target_;
+  std::unique_ptr<Thread> target_;
 #if defined(OS_ANDROID)
-  scoped_ptr<android::JavaHandlerThread> java_thread_;
+  std::unique_ptr<android::JavaHandlerThread> java_thread_;
 #endif
-  scoped_ptr<base::TimeDelta[]> scheduling_times_;
-  scoped_ptr<base::TimeDelta[]> scheduling_thread_times_;
-  scoped_ptr<base::TimeDelta[]> min_batch_times_;
-  scoped_ptr<base::TimeDelta[]> max_batch_times_;
+  std::unique_ptr<base::TimeDelta[]> scheduling_times_;
+  std::unique_ptr<base::TimeDelta[]> scheduling_thread_times_;
+  std::unique_ptr<base::TimeDelta[]> min_batch_times_;
+  std::unique_ptr<base::TimeDelta[]> max_batch_times_;
   uint64_t counter_;
 
   static const size_t kTargetTimeSec = 5;
@@ -256,7 +257,7 @@
   void Run(int batch_size, int tasks_per_reload) {
     base::TimeTicks start = base::TimeTicks::Now();
     base::TimeTicks now;
-    MessageLoop loop(scoped_ptr<MessagePump>(new FakeMessagePump));
+    MessageLoop loop(std::unique_ptr<MessagePump>(new FakeMessagePump));
     scoped_refptr<internal::IncomingTaskQueue> queue(
         new internal::IncomingTaskQueue(&loop));
     uint32_t num_posted = 0;
diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h
index 95cf504..ef35385 100644
--- a/base/metrics/field_trial.h
+++ b/base/metrics/field_trial.h
@@ -514,7 +514,7 @@
 
   // Entropy provider to be used for one-time randomized field trials. If NULL,
   // one-time randomization is not supported.
-  scoped_ptr<const FieldTrial::EntropyProvider> entropy_provider_;
+  std::unique_ptr<const FieldTrial::EntropyProvider> entropy_provider_;
 
   // List of observers to be notified when a group is selected for a FieldTrial.
   scoped_refptr<ObserverListThreadSafe<Observer> > observer_list_;
diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc
index 35197e2..a48716f6 100644
--- a/base/metrics/histogram.cc
+++ b/base/metrics/histogram.cc
@@ -18,6 +18,7 @@
 #include "base/compiler_specific.h"
 #include "base/debug/alias.h"
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/metrics_hashes.h"
 #include "base/metrics/persistent_histogram_allocator.h"
@@ -122,8 +123,8 @@
 
   // Allocate the correct Histogram object off the heap (in case persistent
   // memory is not available).
-  virtual scoped_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) {
-    return make_scoped_ptr(new Histogram(name_, minimum_, maximum_, ranges));
+  virtual std::unique_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) {
+    return WrapUnique(new Histogram(name_, minimum_, maximum_, ranges));
   }
 
   // Perform any required datafill on the just-created histogram.  If
@@ -176,7 +177,7 @@
     // allocating from it fails, code below will allocate the histogram from
     // the process heap.
     PersistentHistogramAllocator::Reference histogram_ref = 0;
-    scoped_ptr<HistogramBase> tentative_histogram;
+    std::unique_ptr<HistogramBase> tentative_histogram;
     PersistentHistogramAllocator* allocator =
         PersistentHistogramAllocator::GetGlobalAllocator();
     if (allocator) {
@@ -277,7 +278,7 @@
                         flags);
 }
 
-scoped_ptr<HistogramBase> Histogram::PersistentCreate(
+std::unique_ptr<HistogramBase> Histogram::PersistentCreate(
     const std::string& name,
     Sample minimum,
     Sample maximum,
@@ -287,9 +288,9 @@
     uint32_t counts_size,
     HistogramSamples::Metadata* meta,
     HistogramSamples::Metadata* logged_meta) {
-  return make_scoped_ptr(new Histogram(
-      name, minimum, maximum, ranges, counts, logged_counts, counts_size,
-      meta, logged_meta));
+  return WrapUnique(new Histogram(name, minimum, maximum, ranges, counts,
+                                        logged_counts, counts_size, meta,
+                                        logged_meta));
 }
 
 // Calculate what range of values are held in each bucket.
@@ -440,12 +441,12 @@
   FindAndRunCallback(value);
 }
 
-scoped_ptr<HistogramSamples> Histogram::SnapshotSamples() const {
+std::unique_ptr<HistogramSamples> Histogram::SnapshotSamples() const {
   return SnapshotSampleVector();
 }
 
-scoped_ptr<HistogramSamples> Histogram::SnapshotDelta() {
-  scoped_ptr<HistogramSamples> snapshot = SnapshotSampleVector();
+std::unique_ptr<HistogramSamples> Histogram::SnapshotDelta() {
+  std::unique_ptr<HistogramSamples> snapshot = SnapshotSampleVector();
   if (!logged_samples_) {
     // If nothing has been previously logged, save this one as
     // |logged_samples_| and gather another snapshot to return.
@@ -575,8 +576,8 @@
   return histogram;
 }
 
-scoped_ptr<SampleVector> Histogram::SnapshotSampleVector() const {
-  scoped_ptr<SampleVector> samples(
+std::unique_ptr<SampleVector> Histogram::SnapshotSampleVector() const {
+  std::unique_ptr<SampleVector> samples(
       new SampleVector(samples_->id(), bucket_ranges()));
   samples->Add(*samples_);
   return samples;
@@ -587,7 +588,7 @@
                                std::string* output) const {
   // Get local (stack) copies of all effectively volatile class data so that we
   // are consistent across our output activities.
-  scoped_ptr<SampleVector> snapshot = SnapshotSampleVector();
+  std::unique_ptr<SampleVector> snapshot = SnapshotSampleVector();
   Count sample_count = snapshot->TotalCount();
 
   WriteAsciiHeader(*snapshot, sample_count, output);
@@ -700,14 +701,14 @@
 void Histogram::GetCountAndBucketData(Count* count,
                                       int64_t* sum,
                                       ListValue* buckets) const {
-  scoped_ptr<SampleVector> snapshot = SnapshotSampleVector();
+  std::unique_ptr<SampleVector> snapshot = SnapshotSampleVector();
   *count = snapshot->TotalCount();
   *sum = snapshot->sum();
   uint32_t index = 0;
   for (uint32_t i = 0; i < bucket_count(); ++i) {
     Sample count_at_index = snapshot->GetCountAtIndex(i);
     if (count_at_index > 0) {
-      scoped_ptr<DictionaryValue> bucket_value(new DictionaryValue());
+      std::unique_ptr<DictionaryValue> bucket_value(new DictionaryValue());
       bucket_value->SetInteger("low", ranges(i));
       if (i != bucket_count() - 1)
         bucket_value->SetInteger("high", ranges(i + 1));
@@ -743,8 +744,9 @@
     return ranges;
   }
 
-  scoped_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) override {
-    return make_scoped_ptr(
+  std::unique_ptr<HistogramBase> HeapAlloc(
+      const BucketRanges* ranges) override {
+    return WrapUnique(
         new LinearHistogram(name_, minimum_, maximum_, ranges));
   }
 
@@ -804,7 +806,7 @@
                         flags);
 }
 
-scoped_ptr<HistogramBase> LinearHistogram::PersistentCreate(
+std::unique_ptr<HistogramBase> LinearHistogram::PersistentCreate(
     const std::string& name,
     Sample minimum,
     Sample maximum,
@@ -814,9 +816,9 @@
     uint32_t counts_size,
     HistogramSamples::Metadata* meta,
     HistogramSamples::Metadata* logged_meta) {
-  return make_scoped_ptr(new LinearHistogram(
-      name, minimum, maximum, ranges, counts, logged_counts, counts_size,
-      meta, logged_meta));
+  return WrapUnique(new LinearHistogram(name, minimum, maximum, ranges,
+                                              counts, logged_counts,
+                                              counts_size, meta, logged_meta));
 }
 
 HistogramBase* LinearHistogram::FactoryGetWithRangeDescription(
@@ -934,8 +936,9 @@
     return ranges;
   }
 
-  scoped_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) override {
-    return make_scoped_ptr(new BooleanHistogram(name_, ranges));
+  std::unique_ptr<HistogramBase> HeapAlloc(
+      const BucketRanges* ranges) override {
+    return WrapUnique(new BooleanHistogram(name_, ranges));
   }
 
  private:
@@ -951,14 +954,14 @@
   return FactoryGet(std::string(name), flags);
 }
 
-scoped_ptr<HistogramBase> BooleanHistogram::PersistentCreate(
+std::unique_ptr<HistogramBase> BooleanHistogram::PersistentCreate(
     const std::string& name,
     const BucketRanges* ranges,
     HistogramBase::AtomicCount* counts,
     HistogramBase::AtomicCount* logged_counts,
     HistogramSamples::Metadata* meta,
     HistogramSamples::Metadata* logged_meta) {
-  return make_scoped_ptr(new BooleanHistogram(
+  return WrapUnique(new BooleanHistogram(
       name, ranges, counts, logged_counts, meta, logged_meta));
 }
 
@@ -1031,8 +1034,9 @@
     return bucket_ranges;
   }
 
-  scoped_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) override {
-    return make_scoped_ptr(new CustomHistogram(name_, ranges));
+  std::unique_ptr<HistogramBase> HeapAlloc(
+      const BucketRanges* ranges) override {
+    return WrapUnique(new CustomHistogram(name_, ranges));
   }
 
  private:
@@ -1057,7 +1061,7 @@
   return FactoryGet(std::string(name), custom_ranges, flags);
 }
 
-scoped_ptr<HistogramBase> CustomHistogram::PersistentCreate(
+std::unique_ptr<HistogramBase> CustomHistogram::PersistentCreate(
     const std::string& name,
     const BucketRanges* ranges,
     HistogramBase::AtomicCount* counts,
@@ -1065,7 +1069,7 @@
     uint32_t counts_size,
     HistogramSamples::Metadata* meta,
     HistogramSamples::Metadata* logged_meta) {
-  return make_scoped_ptr(new CustomHistogram(
+  return WrapUnique(new CustomHistogram(
       name, ranges, counts, logged_counts, counts_size, meta, logged_meta));
 }
 
diff --git a/base/metrics/histogram.h b/base/metrics/histogram.h
index 5111b8f..d4d009c 100644
--- a/base/metrics/histogram.h
+++ b/base/metrics/histogram.h
@@ -70,6 +70,7 @@
 #include <stdint.h>
 
 #include <map>
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -78,7 +79,6 @@
 #include "base/gtest_prod_util.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/bucket_ranges.h"
 #include "base/metrics/histogram_base.h"
 // TODO(asvitkine): Migrate callers to to include this directly and remove this.
@@ -142,7 +142,7 @@
                                        int32_t flags);
 
   // Create a histogram using data in persistent storage.
-  static scoped_ptr<HistogramBase> PersistentCreate(
+  static std::unique_ptr<HistogramBase> PersistentCreate(
       const std::string& name,
       Sample minimum,
       Sample maximum,
@@ -202,8 +202,8 @@
                                 uint32_t expected_bucket_count) const override;
   void Add(Sample value) override;
   void AddCount(Sample value, int count) override;
-  scoped_ptr<HistogramSamples> SnapshotSamples() const override;
-  scoped_ptr<HistogramSamples> SnapshotDelta() override;
+  std::unique_ptr<HistogramSamples> SnapshotSamples() const override;
+  std::unique_ptr<HistogramSamples> SnapshotDelta() override;
   void AddSamples(const HistogramSamples& samples) override;
   bool AddSamplesFromPickle(base::PickleIterator* iter) override;
   void WriteHTMLGraph(std::string* output) const override;
@@ -268,7 +268,7 @@
   static HistogramBase* DeserializeInfoImpl(base::PickleIterator* iter);
 
   // Implementation of SnapshotSamples function.
-  scoped_ptr<SampleVector> SnapshotSampleVector() const;
+  std::unique_ptr<SampleVector> SnapshotSampleVector() const;
 
   //----------------------------------------------------------------------------
   // Helpers for emitting Ascii graphic.  Each method appends data to output.
@@ -308,10 +308,10 @@
 
   // Finally, provide the state that changes with the addition of each new
   // sample.
-  scoped_ptr<SampleVector> samples_;
+  std::unique_ptr<SampleVector> samples_;
 
   // Also keep a previous uploaded state for calculating deltas.
-  scoped_ptr<HistogramSamples> logged_samples_;
+  std::unique_ptr<HistogramSamples> logged_samples_;
 
   DISALLOW_COPY_AND_ASSIGN(Histogram);
 };
@@ -352,7 +352,7 @@
                                        int32_t flags);
 
   // Create a histogram using data in persistent storage.
-  static scoped_ptr<HistogramBase> PersistentCreate(
+  static std::unique_ptr<HistogramBase> PersistentCreate(
       const std::string& name,
       Sample minimum,
       Sample maximum,
@@ -443,7 +443,7 @@
   static HistogramBase* FactoryGet(const char* name, int32_t flags);
 
   // Create a histogram using data in persistent storage.
-  static scoped_ptr<HistogramBase> PersistentCreate(
+  static std::unique_ptr<HistogramBase> PersistentCreate(
       const std::string& name,
       const BucketRanges* ranges,
       HistogramBase::AtomicCount* counts,
@@ -493,7 +493,7 @@
                                    int32_t flags);
 
   // Create a histogram using data in persistent storage.
-  static scoped_ptr<HistogramBase> PersistentCreate(
+  static std::unique_ptr<HistogramBase> PersistentCreate(
       const std::string& name,
       const BucketRanges* ranges,
       HistogramBase::AtomicCount* counts,
diff --git a/base/metrics/histogram_base.cc b/base/metrics/histogram_base.cc
index bf0a14a..6a79ae2 100644
--- a/base/metrics/histogram_base.cc
+++ b/base/metrics/histogram_base.cc
@@ -6,11 +6,11 @@
 
 #include <limits.h>
 
+#include <memory>
 #include <utility>
 
 #include "base/json/json_string_value_serializer.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_samples.h"
 #include "base/metrics/sparse_histogram.h"
@@ -105,9 +105,9 @@
 void HistogramBase::WriteJSON(std::string* output) const {
   Count count;
   int64_t sum;
-  scoped_ptr<ListValue> buckets(new ListValue());
+  std::unique_ptr<ListValue> buckets(new ListValue());
   GetCountAndBucketData(&count, &sum, buckets.get());
-  scoped_ptr<DictionaryValue> parameters(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> parameters(new DictionaryValue());
   GetParameters(parameters.get());
 
   JSONStringValueSerializer serializer(output);
diff --git a/base/metrics/histogram_base.h b/base/metrics/histogram_base.h
index f11befdf..24c104ce 100644
--- a/base/metrics/histogram_base.h
+++ b/base/metrics/histogram_base.h
@@ -9,13 +9,13 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/atomicops.h"
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/time/time.h"
 
@@ -195,12 +195,12 @@
 
   // Snapshot the current complete set of sample data.
   // Override with atomic/locked snapshot if needed.
-  virtual scoped_ptr<HistogramSamples> SnapshotSamples() const = 0;
+  virtual std::unique_ptr<HistogramSamples> SnapshotSamples() const = 0;
 
   // Calculate the change (delta) in histogram counts since the previous call
   // to this method. Each successive call will return only those counts
   // changed since the last call.
-  virtual scoped_ptr<HistogramSamples> SnapshotDelta() = 0;
+  virtual std::unique_ptr<HistogramSamples> SnapshotDelta() = 0;
 
   // The following methods provide graphical histogram displays.
   virtual void WriteHTMLGraph(std::string* output) const = 0;
diff --git a/base/metrics/histogram_base_unittest.cc b/base/metrics/histogram_base_unittest.cc
index 6b41597..5ce39ca 100644
--- a/base/metrics/histogram_base_unittest.cc
+++ b/base/metrics/histogram_base_unittest.cc
@@ -38,7 +38,7 @@
   }
 
  private:
-  scoped_ptr<StatisticsRecorder> statistics_recorder_;
+  std::unique_ptr<StatisticsRecorder> statistics_recorder_;
 
   DISALLOW_COPY_AND_ASSIGN(HistogramBaseTest);
 };
@@ -181,7 +181,7 @@
   CustomHistogram::FactoryGet("CRH-Custom", ranges, 0);
   SparseHistogram::FactoryGet("CRH-Sparse", 0);
 
-  scoped_ptr<HistogramSamples> samples = report->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples = report->SnapshotSamples();
   EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED));
   EXPECT_EQ(5, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED));
   EXPECT_EQ(0, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP));
diff --git a/base/metrics/histogram_delta_serialization.h b/base/metrics/histogram_delta_serialization.h
index a05a1a72..3bb04cb4 100644
--- a/base/metrics/histogram_delta_serialization.h
+++ b/base/metrics/histogram_delta_serialization.h
@@ -5,12 +5,12 @@
 #ifndef BASE_METRICS_HISTOGRAM_DELTA_SERIALIZATION_H_
 #define BASE_METRICS_HISTOGRAM_DELTA_SERIALIZATION_H_
 
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_flattener.h"
 #include "base/metrics/histogram_snapshot_manager.h"
 #include "base/threading/thread_checker.h"
diff --git a/base/metrics/histogram_delta_serialization_unittest.cc b/base/metrics/histogram_delta_serialization_unittest.cc
index 93f7198..80a7009 100644
--- a/base/metrics/histogram_delta_serialization_unittest.cc
+++ b/base/metrics/histogram_delta_serialization_unittest.cc
@@ -34,7 +34,7 @@
   HistogramDeltaSerialization::DeserializeAndAddSamples(deltas);
 
   // The histogram has kIPCSerializationSourceFlag. So samples will be ignored.
-  scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
   EXPECT_EQ(1, snapshot->GetCount(1));
   EXPECT_EQ(1, snapshot->GetCount(10));
   EXPECT_EQ(1, snapshot->GetCount(100));
@@ -44,7 +44,7 @@
   histogram->ClearFlags(HistogramBase::kIPCSerializationSourceFlag);
   HistogramDeltaSerialization::DeserializeAndAddSamples(deltas);
 
-  scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
   EXPECT_EQ(2, snapshot2->GetCount(1));
   EXPECT_EQ(2, snapshot2->GetCount(10));
   EXPECT_EQ(2, snapshot2->GetCount(100));
diff --git a/base/metrics/histogram_samples.cc b/base/metrics/histogram_samples.cc
index 246a020..d42bd00 100644
--- a/base/metrics/histogram_samples.cc
+++ b/base/metrics/histogram_samples.cc
@@ -141,8 +141,7 @@
   HistogramBase::Sample min;
   HistogramBase::Sample max;
   HistogramBase::Count count;
-  for (scoped_ptr<SampleCountIterator> it = Iterator();
-       !it->Done();
+  for (std::unique_ptr<SampleCountIterator> it = Iterator(); !it->Done();
        it->Next()) {
     it->Get(&min, &max, &count);
     if (!pickle->WriteInt(min) ||
diff --git a/base/metrics/histogram_samples.h b/base/metrics/histogram_samples.h
index 30bff84..fbfe260 100644
--- a/base/metrics/histogram_samples.h
+++ b/base/metrics/histogram_samples.h
@@ -8,9 +8,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/atomicops.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 
 namespace base {
@@ -68,7 +69,7 @@
 
   virtual void Subtract(const HistogramSamples& other);
 
-  virtual scoped_ptr<SampleCountIterator> Iterator() const = 0;
+  virtual std::unique_ptr<SampleCountIterator> Iterator() const = 0;
   virtual bool Serialize(Pickle* pickle) const;
 
   // Accessor fuctions.
diff --git a/base/metrics/histogram_snapshot_manager.cc b/base/metrics/histogram_snapshot_manager.cc
index 32dd4e67..930fa09 100644
--- a/base/metrics/histogram_snapshot_manager.cc
+++ b/base/metrics/histogram_snapshot_manager.cc
@@ -4,7 +4,8 @@
 
 #include "base/metrics/histogram_snapshot_manager.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/metrics/histogram_flattener.h"
 #include "base/metrics/histogram_samples.h"
 #include "base/metrics/statistics_recorder.h"
@@ -43,7 +44,7 @@
 }
 
 void HistogramSnapshotManager::PrepareDeltaTakingOwnership(
-    scoped_ptr<HistogramBase> histogram) {
+    std::unique_ptr<HistogramBase> histogram) {
   PrepareSamples(histogram.get(), histogram->SnapshotDelta());
   owned_histograms_.push_back(std::move(histogram));
 }
@@ -53,7 +54,7 @@
 }
 
 void HistogramSnapshotManager::PrepareAbsoluteTakingOwnership(
-    scoped_ptr<const HistogramBase> histogram) {
+    std::unique_ptr<const HistogramBase> histogram) {
   PrepareSamples(histogram.get(), histogram->SnapshotSamples());
   owned_histograms_.push_back(std::move(histogram));
 }
@@ -96,7 +97,7 @@
 
 void HistogramSnapshotManager::PrepareSamples(
     const HistogramBase* histogram,
-    scoped_ptr<HistogramSamples> samples) {
+    std::unique_ptr<HistogramSamples> samples) {
   DCHECK(histogram_flattener_);
 
   // Get information known about this histogram.
diff --git a/base/metrics/histogram_snapshot_manager.h b/base/metrics/histogram_snapshot_manager.h
index d44db194..42dbac2 100644
--- a/base/metrics/histogram_snapshot_manager.h
+++ b/base/metrics/histogram_snapshot_manager.h
@@ -66,10 +66,10 @@
   // automatically delete the histogram once it is "finished".
   void StartDeltas();
   void PrepareDelta(HistogramBase* histogram);
-  void PrepareDeltaTakingOwnership(scoped_ptr<HistogramBase> histogram);
+  void PrepareDeltaTakingOwnership(std::unique_ptr<HistogramBase> histogram);
   void PrepareAbsolute(const HistogramBase* histogram);
   void PrepareAbsoluteTakingOwnership(
-      scoped_ptr<const HistogramBase> histogram);
+      std::unique_ptr<const HistogramBase> histogram);
   void FinishDeltas();
 
  private:
@@ -100,7 +100,7 @@
   // Capture and hold samples from a histogram. This does all the heavy
   // lifting for PrepareDelta() and PrepareAbsolute().
   void PrepareSamples(const HistogramBase* histogram,
-                      scoped_ptr<HistogramSamples> samples);
+                      std::unique_ptr<HistogramSamples> samples);
 
   // Try to detect and fix count inconsistency of logged samples.
   void InspectLoggedSamplesInconsistency(
@@ -113,7 +113,7 @@
 
   // Collection of histograms of which ownership has been passed to this
   // object. They will be deleted by FinishDeltas().
-  std::vector<scoped_ptr<const HistogramBase>> owned_histograms_;
+  std::vector<std::unique_ptr<const HistogramBase>> owned_histograms_;
 
   // Indicates if deltas are currently being prepared.
   bool preparing_deltas_;
diff --git a/base/metrics/histogram_unittest.cc b/base/metrics/histogram_unittest.cc
index 03dc7bd..4fa0aa5 100644
--- a/base/metrics/histogram_unittest.cc
+++ b/base/metrics/histogram_unittest.cc
@@ -9,11 +9,11 @@
 #include <stdint.h>
 
 #include <climits>
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/bucket_ranges.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/persistent_histogram_allocator.h"
@@ -84,7 +84,7 @@
   const bool use_persistent_histogram_allocator_;
 
   StatisticsRecorder* statistics_recorder_ = nullptr;
-  scoped_ptr<char[]> allocator_memory_;
+  std::unique_ptr<char[]> allocator_memory_;
   PersistentMemoryAllocator* allocator_ = nullptr;
 
  private:
@@ -136,7 +136,7 @@
   HistogramBase* histogram = LinearHistogram::FactoryGet(
       "DuplicatedHistogram", 1, 101, 102, HistogramBase::kNoFlags);
 
-  scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
   EXPECT_EQ(2, samples->TotalCount());
   EXPECT_EQ(2, samples->GetCount(10));
 }
@@ -150,7 +150,7 @@
   histogram->Add(10);
   histogram->Add(50);
 
-  scoped_ptr<HistogramSamples> samples = histogram->SnapshotDelta();
+  std::unique_ptr<HistogramSamples> samples = histogram->SnapshotDelta();
   EXPECT_EQ(3, samples->TotalCount());
   EXPECT_EQ(1, samples->GetCount(1));
   EXPECT_EQ(1, samples->GetCount(10));
@@ -330,7 +330,7 @@
   histogram->AddCount(20, 15);
   histogram->AddCount(30, 14);
 
-  scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
   EXPECT_EQ(29, samples->TotalCount());
   EXPECT_EQ(15, samples->GetCount(20));
   EXPECT_EQ(14, samples->GetCount(30));
@@ -338,7 +338,7 @@
   histogram->AddCount(20, 25);
   histogram->AddCount(30, 24);
 
-  scoped_ptr<HistogramSamples> samples2 = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples2 = histogram->SnapshotSamples();
   EXPECT_EQ(78, samples2->TotalCount());
   EXPECT_EQ(40, samples2->GetCount(20));
   EXPECT_EQ(38, samples2->GetCount(30));
@@ -353,7 +353,7 @@
   histogram->AddCount(200000000, 15);
   histogram->AddCount(300000000, 14);
 
-  scoped_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples = histogram->SnapshotSamples();
   EXPECT_EQ(29, samples->TotalCount());
   EXPECT_EQ(15, samples->GetCount(200000000));
   EXPECT_EQ(14, samples->GetCount(300000000));
@@ -361,7 +361,7 @@
   histogram->AddCount(200000000, 25);
   histogram->AddCount(300000000, 24);
 
-  scoped_ptr<HistogramSamples> samples2 = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples2 = histogram->SnapshotSamples();
   EXPECT_EQ(78, samples2->TotalCount());
   EXPECT_EQ(40, samples2->GetCount(200000000));
   EXPECT_EQ(38, samples2->GetCount(300000000));
@@ -383,7 +383,7 @@
   histogram->Add(10000);
 
   // Verify they landed in the underflow, and overflow buckets.
-  scoped_ptr<SampleVector> samples = histogram->SnapshotSampleVector();
+  std::unique_ptr<SampleVector> samples = histogram->SnapshotSampleVector();
   EXPECT_EQ(2, samples->GetCountAtIndex(0));
   EXPECT_EQ(0, samples->GetCountAtIndex(1));
   size_t array_size = histogram->bucket_count();
@@ -407,7 +407,7 @@
   test_custom_histogram->Add(INT_MAX);
 
   // Verify they landed in the underflow, and overflow buckets.
-  scoped_ptr<SampleVector> custom_samples =
+  std::unique_ptr<SampleVector> custom_samples =
       test_custom_histogram->SnapshotSampleVector();
   EXPECT_EQ(2, custom_samples->GetCountAtIndex(0));
   EXPECT_EQ(0, custom_samples->GetCountAtIndex(1));
@@ -431,7 +431,7 @@
   }
 
   // Check to see that the bucket counts reflect our additions.
-  scoped_ptr<SampleVector> samples = histogram->SnapshotSampleVector();
+  std::unique_ptr<SampleVector> samples = histogram->SnapshotSampleVector();
   for (int i = 0; i < 8; i++)
     EXPECT_EQ(i + 1, samples->GetCountAtIndex(i));
 }
@@ -444,7 +444,7 @@
   histogram->Add(20);
   histogram->Add(40);
 
-  scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector();
+  std::unique_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector();
   EXPECT_EQ(HistogramBase::NO_INCONSISTENCIES,
             histogram->FindCorruption(*snapshot));
   EXPECT_EQ(2, snapshot->redundant_count());
@@ -467,7 +467,7 @@
   Histogram* histogram = static_cast<Histogram*>(
       Histogram::FactoryGet("Histogram", 1, 64, 8, HistogramBase::kNoFlags));
 
-  scoped_ptr<HistogramSamples> snapshot = histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> snapshot = histogram->SnapshotSamples();
   EXPECT_EQ(HistogramBase::NO_INCONSISTENCIES,
             histogram->FindCorruption(*snapshot));
 
diff --git a/base/metrics/persistent_histogram_allocator.cc b/base/metrics/persistent_histogram_allocator.cc
index 6006d31..e9643367 100644
--- a/base/metrics/persistent_histogram_allocator.cc
+++ b/base/metrics/persistent_histogram_allocator.cc
@@ -4,9 +4,11 @@
 
 #include "base/metrics/persistent_histogram_allocator.h"
 
+#include <memory>
+
 #include "base/lazy_instance.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
@@ -47,12 +49,12 @@
 // Take an array of range boundaries and create a proper BucketRanges object
 // which is returned to the caller. A return of nullptr indicates that the
 // passed boundaries are invalid.
-scoped_ptr<BucketRanges> CreateRangesFromData(
+std::unique_ptr<BucketRanges> CreateRangesFromData(
     HistogramBase::Sample* ranges_data,
     uint32_t ranges_checksum,
     size_t count) {
   // To avoid racy destruction at shutdown, the following may be leaked.
-  scoped_ptr<BucketRanges> ranges(new BucketRanges(count));
+  std::unique_ptr<BucketRanges> ranges(new BucketRanges(count));
   DCHECK_EQ(count, ranges->size());
   for (size_t i = 0; i < count; ++i) {
     if (i > 0 && ranges_data[i] <= ranges_data[i - 1])
@@ -110,7 +112,7 @@
 };
 
 PersistentHistogramAllocator::PersistentHistogramAllocator(
-    scoped_ptr<PersistentMemoryAllocator> memory)
+    std::unique_ptr<PersistentMemoryAllocator> memory)
     : memory_allocator_(std::move(memory)) {}
 
 PersistentHistogramAllocator::~PersistentHistogramAllocator() {}
@@ -174,7 +176,7 @@
 
 // static
 void PersistentHistogramAllocator::SetGlobalAllocator(
-    scoped_ptr<PersistentHistogramAllocator> allocator) {
+    std::unique_ptr<PersistentHistogramAllocator> allocator) {
   // Releasing or changing an allocator is extremely dangerous because it
   // likely has histograms stored within it. If the backing memory is also
   // also released, future accesses to those histograms will seg-fault.
@@ -194,7 +196,7 @@
 }
 
 // static
-scoped_ptr<PersistentHistogramAllocator>
+std::unique_ptr<PersistentHistogramAllocator>
 PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting() {
   PersistentHistogramAllocator* histogram_allocator = g_allocator;
   if (!histogram_allocator)
@@ -229,7 +231,7 @@
   }
 
   g_allocator = nullptr;
-  return make_scoped_ptr(histogram_allocator);
+  return WrapUnique(histogram_allocator);
 };
 
 // static
@@ -239,9 +241,9 @@
     size_t page_size,
     uint64_t id,
     StringPiece name) {
-  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
-      make_scoped_ptr(new PersistentMemoryAllocator(
-          base, size, page_size, id, name, false)))));
+  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
+      WrapUnique(new PersistentMemoryAllocator(base, size, page_size, id,
+                                                     name, false)))));
 }
 
 // static
@@ -249,27 +251,28 @@
     size_t size,
     uint64_t id,
     StringPiece name) {
-  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
-      make_scoped_ptr(new LocalPersistentMemoryAllocator(size, id, name)))));
+  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
+      WrapUnique(new LocalPersistentMemoryAllocator(size, id, name)))));
 }
 
 // static
 void PersistentHistogramAllocator::CreateGlobalAllocatorOnSharedMemory(
     size_t size,
     const SharedMemoryHandle& handle) {
-  scoped_ptr<SharedMemory> shm(new SharedMemory(handle, /*readonly=*/false));
+  std::unique_ptr<SharedMemory> shm(
+      new SharedMemory(handle, /*readonly=*/false));
   if (!shm->Map(size)) {
     NOTREACHED();
     return;
   }
 
-  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
-      make_scoped_ptr(new SharedPersistentMemoryAllocator(
+  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
+      WrapUnique(new SharedPersistentMemoryAllocator(
           std::move(shm), 0, StringPiece(), /*readonly=*/false)))));
 }
 
 // static
-scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
+std::unique_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
     PersistentHistogramData* histogram_data_ptr) {
   if (!histogram_data_ptr) {
     RecordCreateHistogramResult(CREATE_HISTOGRAM_INVALID_METADATA_POINTER);
@@ -279,10 +282,11 @@
 
   // Sparse histograms are quite different so handle them as a special case.
   if (histogram_data_ptr->histogram_type == SPARSE_HISTOGRAM) {
-    scoped_ptr<HistogramBase> histogram = SparseHistogram::PersistentCreate(
-        memory_allocator(), histogram_data_ptr->name,
-        &histogram_data_ptr->samples_metadata,
-        &histogram_data_ptr->logged_metadata);
+    std::unique_ptr<HistogramBase> histogram =
+        SparseHistogram::PersistentCreate(memory_allocator(),
+                                          histogram_data_ptr->name,
+                                          &histogram_data_ptr->samples_metadata,
+                                          &histogram_data_ptr->logged_metadata);
     DCHECK(histogram);
     histogram->SetFlags(histogram_data_ptr->flags);
     RecordCreateHistogramResult(CREATE_HISTOGRAM_SUCCESS);
@@ -314,7 +318,7 @@
     return nullptr;
   }
 
-  scoped_ptr<const BucketRanges> created_ranges =
+  std::unique_ptr<const BucketRanges> created_ranges =
       CreateRangesFromData(ranges_data, histogram_data.ranges_checksum,
                            histogram_data.bucket_count + 1);
   if (!created_ranges) {
@@ -346,7 +350,7 @@
       counts_data + histogram_data.bucket_count;
 
   std::string name(histogram_data_ptr->name);
-  scoped_ptr<HistogramBase> histogram;
+  std::unique_ptr<HistogramBase> histogram;
   switch (histogram_data.histogram_type) {
     case HISTOGRAM:
       histogram = Histogram::PersistentCreate(
@@ -393,7 +397,7 @@
   return histogram;
 }
 
-scoped_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram(
+std::unique_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram(
     Reference ref) {
   // Unfortunately, the histogram "pickle" methods cannot be used as part of
   // the persistance because the deserialization methods always create local
@@ -413,7 +417,7 @@
   return CreateHistogram(histogram_data);
 }
 
-scoped_ptr<HistogramBase>
+std::unique_ptr<HistogramBase>
 PersistentHistogramAllocator::GetNextHistogramWithIgnore(Iterator* iter,
                                                          Reference ignore) {
   PersistentMemoryAllocator::Reference ref;
@@ -441,7 +445,7 @@
     memory_allocator_->SetType(ref, 0);
 }
 
-scoped_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram(
+std::unique_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram(
     HistogramType histogram_type,
     const std::string& name,
     int minimum,
@@ -521,7 +525,7 @@
     // using what is already known above but avoids duplicating the switch
     // statement here and serves as a double-check that everything is
     // correct before commiting the new histogram to persistent space.
-    scoped_ptr<HistogramBase> histogram = CreateHistogram(histogram_data);
+    std::unique_ptr<HistogramBase> histogram = CreateHistogram(histogram_data);
     DCHECK(histogram);
     if (ref_ptr != nullptr)
       *ref_ptr = histogram_ref;
@@ -575,7 +579,7 @@
         subtle::NoBarrier_Load(&g_allocator->last_created_);
 
     while (true) {
-      scoped_ptr<HistogramBase> histogram =
+      std::unique_ptr<HistogramBase> histogram =
           g_allocator->GetNextHistogramWithIgnore(&iter, last_created);
       if (!histogram)
         break;
diff --git a/base/metrics/persistent_histogram_allocator.h b/base/metrics/persistent_histogram_allocator.h
index cc8d023..cbbeed9 100644
--- a/base/metrics/persistent_histogram_allocator.h
+++ b/base/metrics/persistent_histogram_allocator.h
@@ -5,10 +5,11 @@
 #ifndef BASE_METRICS_HISTOGRAM_PERSISTENCE_H_
 #define BASE_METRICS_HISTOGRAM_PERSISTENCE_H_
 
+#include <memory>
+
 #include "base/atomicops.h"
 #include "base/base_export.h"
 #include "base/feature_list.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/shared_memory.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/persistent_memory_allocator.h"
@@ -38,7 +39,8 @@
 
   // A PersistentHistogramAllocator is constructed from a PersistentMemory-
   // Allocator object of which it takes ownership.
-  PersistentHistogramAllocator(scoped_ptr<PersistentMemoryAllocator> memory);
+  PersistentHistogramAllocator(
+      std::unique_ptr<PersistentMemoryAllocator> memory);
   ~PersistentHistogramAllocator();
 
   // Direct access to underlying memory allocator. If the segment is shared
@@ -61,10 +63,10 @@
   // shared with all other threads referencing it. This method takes a |ref|
   // to where the top-level histogram data may be found in this allocator.
   // This method will return null if any problem is detected with the data.
-  scoped_ptr<HistogramBase> GetHistogram(Reference ref);
+  std::unique_ptr<HistogramBase> GetHistogram(Reference ref);
 
   // Get the next histogram in persistent data based on iterator.
-  scoped_ptr<HistogramBase> GetNextHistogram(Iterator* iter) {
+  std::unique_ptr<HistogramBase> GetNextHistogram(Iterator* iter) {
     return GetNextHistogramWithIgnore(iter, 0);
   }
 
@@ -73,7 +75,7 @@
 
   // Allocate a new persistent histogram. The returned histogram will not
   // be able to be located by other allocators until it is "finalized".
-  scoped_ptr<HistogramBase> AllocateHistogram(
+  std::unique_ptr<HistogramBase> AllocateHistogram(
       HistogramType histogram_type,
       const std::string& name,
       int minimum,
@@ -106,14 +108,14 @@
   // possible during startup to capture as many histograms as possible and
   // while operating single-threaded so there are no race-conditions.
   static void SetGlobalAllocator(
-      scoped_ptr<PersistentHistogramAllocator> allocator);
+      std::unique_ptr<PersistentHistogramAllocator> allocator);
   static PersistentHistogramAllocator* GetGlobalAllocator();
 
   // This access to the persistent allocator is only for testing; it extracts
   // the current allocator completely. This allows easy creation of histograms
   // within persistent memory segments which can then be extracted and used
   // in other ways.
-  static scoped_ptr<PersistentHistogramAllocator>
+  static std::unique_ptr<PersistentHistogramAllocator>
   ReleaseGlobalAllocatorForTesting();
 
   // These helper methods perform SetGlobalAllocator() calls with allocators
@@ -186,19 +188,18 @@
 
   // Get the next histogram in persistent data based on iterator while
   // ignoring a particular reference if it is found.
-  scoped_ptr<HistogramBase> GetNextHistogramWithIgnore(
-      Iterator* iter,
-      Reference ignore);
+  std::unique_ptr<HistogramBase> GetNextHistogramWithIgnore(Iterator* iter,
+                                                            Reference ignore);
 
   // Create a histogram based on saved (persistent) information about it.
-  scoped_ptr<HistogramBase> CreateHistogram(
+  std::unique_ptr<HistogramBase> CreateHistogram(
       PersistentHistogramData* histogram_data_ptr);
 
   // Record the result of a histogram creation.
   static void RecordCreateHistogramResult(CreateHistogramResultType result);
 
   // The memory allocator that provides the actual histogram storage.
-  scoped_ptr<PersistentMemoryAllocator> memory_allocator_;
+  std::unique_ptr<PersistentMemoryAllocator> memory_allocator_;
 
   // A reference to the last-created histogram in the allocator, used to avoid
   // trying to import what was just created.
diff --git a/base/metrics/persistent_histogram_allocator_unittest.cc b/base/metrics/persistent_histogram_allocator_unittest.cc
index 64abdec7..922245f 100644
--- a/base/metrics/persistent_histogram_allocator_unittest.cc
+++ b/base/metrics/persistent_histogram_allocator_unittest.cc
@@ -5,6 +5,7 @@
 #include "base/metrics/persistent_histogram_allocator.h"
 
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/metrics/bucket_ranges.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/persistent_memory_allocator.h"
@@ -39,7 +40,7 @@
     PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting();
   }
 
-  scoped_ptr<char[]> allocator_memory_;
+  std::unique_ptr<char[]> allocator_memory_;
   PersistentMemoryAllocator* allocator_ = nullptr;
 
  private:
@@ -96,9 +97,9 @@
   EXPECT_EQ(0U, allocator_->GetNextIterable(&iter, &type));
 
   // Create a second allocator and have it access the memory of the first.
-  scoped_ptr<HistogramBase> recovered;
+  std::unique_ptr<HistogramBase> recovered;
   PersistentHistogramAllocator recovery(
-      make_scoped_ptr(new PersistentMemoryAllocator(
+      WrapUnique(new PersistentMemoryAllocator(
           allocator_memory_.get(), kAllocatorMemorySize, 0, 0, "", false)));
   PersistentHistogramAllocator::Iterator histogram_iter;
   recovery.CreateIterator(&histogram_iter);
diff --git a/base/metrics/persistent_memory_allocator.cc b/base/metrics/persistent_memory_allocator.cc
index a1a960c..1d5df333 100644
--- a/base/metrics/persistent_memory_allocator.cc
+++ b/base/metrics/persistent_memory_allocator.cc
@@ -668,12 +668,16 @@
 //----- SharedPersistentMemoryAllocator ----------------------------------------
 
 SharedPersistentMemoryAllocator::SharedPersistentMemoryAllocator(
-    scoped_ptr<SharedMemory> memory,
+    std::unique_ptr<SharedMemory> memory,
     uint64_t id,
     base::StringPiece name,
     bool read_only)
     : PersistentMemoryAllocator(static_cast<uint8_t*>(memory->memory()),
-                                memory->mapped_size(), 0, id, name, read_only),
+                                memory->mapped_size(),
+                                0,
+                                id,
+                                name,
+                                read_only),
       shared_memory_(std::move(memory)) {}
 
 SharedPersistentMemoryAllocator::~SharedPersistentMemoryAllocator() {}
@@ -688,11 +692,15 @@
 //----- FilePersistentMemoryAllocator ------------------------------------------
 
 FilePersistentMemoryAllocator::FilePersistentMemoryAllocator(
-    scoped_ptr<MemoryMappedFile> file,
+    std::unique_ptr<MemoryMappedFile> file,
     uint64_t id,
     base::StringPiece name)
     : PersistentMemoryAllocator(const_cast<uint8_t*>(file->data()),
-                                file->length(), 0, id, name, true),
+                                file->length(),
+                                0,
+                                id,
+                                name,
+                                true),
       mapped_file_(std::move(file)) {}
 
 FilePersistentMemoryAllocator::~FilePersistentMemoryAllocator() {}
diff --git a/base/metrics/persistent_memory_allocator.h b/base/metrics/persistent_memory_allocator.h
index f75b1c0..8c849b6 100644
--- a/base/metrics/persistent_memory_allocator.h
+++ b/base/metrics/persistent_memory_allocator.h
@@ -6,13 +6,14 @@
 #define BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_
 
 #include <stdint.h>
+
 #include <atomic>
+#include <memory>
 
 #include "base/atomicops.h"
 #include "base/base_export.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 
 namespace base {
@@ -321,8 +322,10 @@
 class BASE_EXPORT SharedPersistentMemoryAllocator
     : public PersistentMemoryAllocator {
  public:
-  SharedPersistentMemoryAllocator(scoped_ptr<SharedMemory> memory, uint64_t id,
-                                  base::StringPiece name, bool read_only);
+  SharedPersistentMemoryAllocator(std::unique_ptr<SharedMemory> memory,
+                                  uint64_t id,
+                                  base::StringPiece name,
+                                  bool read_only);
   ~SharedPersistentMemoryAllocator() override;
 
   SharedMemory* shared_memory() { return shared_memory_.get(); }
@@ -334,7 +337,7 @@
   static bool IsSharedMemoryAcceptable(const SharedMemory& memory);
 
  private:
-  scoped_ptr<SharedMemory> shared_memory_;
+  std::unique_ptr<SharedMemory> shared_memory_;
 
   DISALLOW_COPY_AND_ASSIGN(SharedPersistentMemoryAllocator);
 };
@@ -346,7 +349,8 @@
 class BASE_EXPORT FilePersistentMemoryAllocator
     : public PersistentMemoryAllocator {
  public:
-  FilePersistentMemoryAllocator(scoped_ptr<MemoryMappedFile> file, uint64_t id,
+  FilePersistentMemoryAllocator(std::unique_ptr<MemoryMappedFile> file,
+                                uint64_t id,
                                 base::StringPiece name);
   ~FilePersistentMemoryAllocator() override;
 
@@ -357,7 +361,7 @@
   static bool IsFileAcceptable(const MemoryMappedFile& file);
 
  private:
-  scoped_ptr<MemoryMappedFile> mapped_file_;
+  std::unique_ptr<MemoryMappedFile> mapped_file_;
 
   DISALLOW_COPY_AND_ASSIGN(FilePersistentMemoryAllocator);
 };
diff --git a/base/metrics/persistent_memory_allocator_unittest.cc b/base/metrics/persistent_memory_allocator_unittest.cc
index b34cf14..6ec5a03 100644
--- a/base/metrics/persistent_memory_allocator_unittest.cc
+++ b/base/metrics/persistent_memory_allocator_unittest.cc
@@ -4,11 +4,12 @@
 
 #include "base/metrics/persistent_memory_allocator.h"
 
+#include <memory>
+
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/files/memory_mapped_file.h"
 #include "base/files/scoped_temp_dir.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/shared_memory.h"
 #include "base/metrics/histogram.h"
 #include "base/rand_util.h"
@@ -79,8 +80,8 @@
   }
 
  protected:
-  scoped_ptr<char[]> mem_segment_;
-  scoped_ptr<PersistentMemoryAllocator> allocator_;
+  std::unique_ptr<char[]> mem_segment_;
+  std::unique_ptr<PersistentMemoryAllocator> allocator_;
 };
 
 TEST_F(PersistentMemoryAllocatorTest, AllocateAndIterate) {
@@ -154,13 +155,13 @@
 
   // Check the internal histogram record of used memory.
   allocator_->UpdateTrackingHistograms();
-  scoped_ptr<HistogramSamples> used_samples(
+  std::unique_ptr<HistogramSamples> used_samples(
       allocator_->used_histogram_->SnapshotSamples());
   EXPECT_TRUE(used_samples);
   EXPECT_EQ(1, used_samples->TotalCount());
 
   // Check the internal histogram record of allocation requests.
-  scoped_ptr<HistogramSamples> allocs_samples(
+  std::unique_ptr<HistogramSamples> allocs_samples(
       allocator_->allocs_histogram_->SnapshotSamples());
   EXPECT_TRUE(allocs_samples);
   EXPECT_EQ(2, allocs_samples->TotalCount());
@@ -182,10 +183,9 @@
   EXPECT_EQ(2U, allocator_->GetType(block2));
 
   // Create second allocator (read/write) using the same memory segment.
-  scoped_ptr<PersistentMemoryAllocator> allocator2(
-      new PersistentMemoryAllocator(
-          mem_segment_.get(), TEST_MEMORY_SIZE, TEST_MEMORY_PAGE, 0, "",
-          false));
+  std::unique_ptr<PersistentMemoryAllocator> allocator2(
+      new PersistentMemoryAllocator(mem_segment_.get(), TEST_MEMORY_SIZE,
+                                    TEST_MEMORY_PAGE, 0, "", false));
   EXPECT_EQ(TEST_ID, allocator2->Id());
   EXPECT_FALSE(allocator2->used_histogram_);
   EXPECT_FALSE(allocator2->allocs_histogram_);
@@ -200,9 +200,9 @@
   EXPECT_NE(nullptr, allocator2->GetAsObject<TestObject2>(block2, 2));
 
   // Create a third allocator (read-only) using the same memory segment.
-  scoped_ptr<const PersistentMemoryAllocator> allocator3(
-      new PersistentMemoryAllocator(
-          mem_segment_.get(), TEST_MEMORY_SIZE, TEST_MEMORY_PAGE, 0, "", true));
+  std::unique_ptr<const PersistentMemoryAllocator> allocator3(
+      new PersistentMemoryAllocator(mem_segment_.get(), TEST_MEMORY_SIZE,
+                                    TEST_MEMORY_PAGE, 0, "", true));
   EXPECT_EQ(TEST_ID, allocator3->Id());
   EXPECT_FALSE(allocator3->used_histogram_);
   EXPECT_FALSE(allocator3->allocs_histogram_);
@@ -396,7 +396,7 @@
   PersistentMemoryAllocator::MemoryInfo meminfo1;
   Reference r123, r456, r789;
   {
-    scoped_ptr<SharedMemory> shmem1(new SharedMemory());
+    std::unique_ptr<SharedMemory> shmem1(new SharedMemory());
     ASSERT_TRUE(shmem1->CreateAndMapAnonymous(TEST_MEMORY_SIZE));
     SharedPersistentMemoryAllocator local(std::move(shmem1), TEST_ID, "",
                                           false);
@@ -417,8 +417,8 @@
   }
 
   // Read-only test.
-  scoped_ptr<SharedMemory> shmem2(new SharedMemory(shared_handle,
-                                                   /*readonly=*/true));
+  std::unique_ptr<SharedMemory> shmem2(new SharedMemory(shared_handle,
+                                                        /*readonly=*/true));
   ASSERT_TRUE(shmem2->Map(TEST_MEMORY_SIZE));
 
   SharedPersistentMemoryAllocator shalloc2(std::move(shmem2), 0, "", true);
@@ -444,8 +444,8 @@
   EXPECT_EQ(meminfo1.free, meminfo2.free);
 
   // Read/write test.
-  scoped_ptr<SharedMemory> shmem3(new SharedMemory(shared_handle,
-                                                   /*readonly=*/false));
+  std::unique_ptr<SharedMemory> shmem3(new SharedMemory(shared_handle,
+                                                        /*readonly=*/false));
   ASSERT_TRUE(shmem3->Map(TEST_MEMORY_SIZE));
 
   SharedPersistentMemoryAllocator shalloc3(std::move(shmem3), 0, "", false);
@@ -505,7 +505,7 @@
     writer.Write(0, (const char*)local.data(), local.used());
   }
 
-  scoped_ptr<MemoryMappedFile> mmfile(new MemoryMappedFile());
+  std::unique_ptr<MemoryMappedFile> mmfile(new MemoryMappedFile());
   mmfile->Initialize(file_path);
   EXPECT_TRUE(mmfile->IsValid());
   const size_t mmlength = mmfile->length();
@@ -545,10 +545,10 @@
   local.Allocate(1, 1);
   local.Allocate(11, 11);
   const size_t minsize = local.used();
-  scoped_ptr<char[]> garbage(new char[minsize]);
+  std::unique_ptr<char[]> garbage(new char[minsize]);
   RandBytes(garbage.get(), minsize);
 
-  scoped_ptr<MemoryMappedFile> mmfile;
+  std::unique_ptr<MemoryMappedFile> mmfile;
   char filename[100];
   for (size_t filesize = minsize; filesize > 0; --filesize) {
     strings::SafeSPrintf(filename, "memory_%d_A", filesize);
@@ -565,7 +565,8 @@
     mmfile->Initialize(file_path);
     EXPECT_EQ(filesize, mmfile->length());
     if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) {
-      // Make sure construction doesn't crash.
+      // Make sure construction doesn't crash. It will, however, cause
+      // error messages warning about about a corrupted memory segment.
       FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, "");
       // Also make sure that iteration doesn't crash.
       PersistentMemoryAllocator::Iterator iter;
@@ -605,7 +606,8 @@
     mmfile->Initialize(file_path);
     EXPECT_EQ(filesize, mmfile->length());
     if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) {
-      // Just need to make sure it doesn't crash.
+      // Make sure construction doesn't crash. It will, however, cause
+      // error messages warning about about a corrupted memory segment.
       FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, "");
       EXPECT_TRUE(allocator.IsCorrupt());  // Garbage data so it should be.
     } else {
diff --git a/base/metrics/persistent_sample_map.cc b/base/metrics/persistent_sample_map.cc
index 014a865..ae8ff32 100644
--- a/base/metrics/persistent_sample_map.cc
+++ b/base/metrics/persistent_sample_map.cc
@@ -5,6 +5,7 @@
 #include "base/metrics/persistent_sample_map.h"
 
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/stl_util.h"
 
 namespace base {
@@ -135,11 +136,11 @@
   return count;
 }
 
-scoped_ptr<SampleCountIterator> PersistentSampleMap::Iterator() const {
+std::unique_ptr<SampleCountIterator> PersistentSampleMap::Iterator() const {
   // Have to override "const" in order to make sure all samples have been
   // loaded before trying to iterate over the map.
   const_cast<PersistentSampleMap*>(this)->ImportSamples(kAllSamples);
-  return make_scoped_ptr(new PersistentSampleMapIterator(sample_counts_));
+  return WrapUnique(new PersistentSampleMapIterator(sample_counts_));
 }
 
 bool PersistentSampleMap::AddSubtractImpl(SampleCountIterator* iter,
diff --git a/base/metrics/persistent_sample_map.h b/base/metrics/persistent_sample_map.h
index a23b751..4ae54d8a 100644
--- a/base/metrics/persistent_sample_map.h
+++ b/base/metrics/persistent_sample_map.h
@@ -12,10 +12,10 @@
 #include <stdint.h>
 
 #include <map>
+#include <memory>
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
 #include "base/metrics/persistent_memory_allocator.h"
@@ -36,7 +36,7 @@
                   HistogramBase::Count count) override;
   HistogramBase::Count GetCount(HistogramBase::Sample value) const override;
   HistogramBase::Count TotalCount() const override;
-  scoped_ptr<SampleCountIterator> Iterator() const override;
+  std::unique_ptr<SampleCountIterator> Iterator() const override;
 
  protected:
   // Performs arithemetic. |op| is ADD or SUBTRACT.
diff --git a/base/metrics/persistent_sample_map_unittest.cc b/base/metrics/persistent_sample_map_unittest.cc
index c735f8fd..52c3cef 100644
--- a/base/metrics/persistent_sample_map_unittest.cc
+++ b/base/metrics/persistent_sample_map_unittest.cc
@@ -4,7 +4,8 @@
 
 #include "base/metrics/persistent_sample_map.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -136,7 +137,7 @@
   samples.Accumulate(4, -300);
   samples.Accumulate(5, 0);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
 
   HistogramBase::Sample min;
   HistogramBase::Sample max;
@@ -187,7 +188,7 @@
 
   samples.Subtract(samples2);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
   EXPECT_FALSE(it->Done());
 
   HistogramBase::Sample min;
@@ -221,7 +222,7 @@
           allocator.Allocate(sizeof(HistogramSamples::Metadata), 0), 0);
   PersistentSampleMap samples(1, &allocator, meta);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
 
   EXPECT_TRUE(it->Done());
 
diff --git a/base/metrics/sample_map.cc b/base/metrics/sample_map.cc
index 21a4e35..8abd01ed 100644
--- a/base/metrics/sample_map.cc
+++ b/base/metrics/sample_map.cc
@@ -5,6 +5,7 @@
 #include "base/metrics/sample_map.h"
 
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/stl_util.h"
 
 namespace base {
@@ -102,8 +103,8 @@
   return count;
 }
 
-scoped_ptr<SampleCountIterator> SampleMap::Iterator() const {
-  return make_scoped_ptr(new SampleMapIterator(sample_counts_));
+std::unique_ptr<SampleCountIterator> SampleMap::Iterator() const {
+  return WrapUnique(new SampleMapIterator(sample_counts_));
 }
 
 bool SampleMap::AddSubtractImpl(SampleCountIterator* iter, Operator op) {
diff --git a/base/metrics/sample_map.h b/base/metrics/sample_map.h
index 2f24e1f..7458e05 100644
--- a/base/metrics/sample_map.h
+++ b/base/metrics/sample_map.h
@@ -11,10 +11,10 @@
 #include <stdint.h>
 
 #include <map>
+#include <memory>
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
 
@@ -33,7 +33,7 @@
                   HistogramBase::Count count) override;
   HistogramBase::Count GetCount(HistogramBase::Sample value) const override;
   HistogramBase::Count TotalCount() const override;
-  scoped_ptr<SampleCountIterator> Iterator() const override;
+  std::unique_ptr<SampleCountIterator> Iterator() const override;
 
  protected:
   // Performs arithemetic. |op| is ADD or SUBTRACT.
diff --git a/base/metrics/sample_map_unittest.cc b/base/metrics/sample_map_unittest.cc
index 3626bd0a..8f57710 100644
--- a/base/metrics/sample_map_unittest.cc
+++ b/base/metrics/sample_map_unittest.cc
@@ -4,7 +4,8 @@
 
 #include "base/metrics/sample_map.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -76,7 +77,7 @@
   samples.Accumulate(4, -300);
   samples.Accumulate(5, 0);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
 
   HistogramBase::Sample min;
   HistogramBase::Sample max;
@@ -119,7 +120,7 @@
 
   samples.Subtract(samples2);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
   EXPECT_FALSE(it->Done());
 
   HistogramBase::Sample min;
@@ -148,7 +149,7 @@
 TEST(SampleMapIteratorDeathTest, IterateDoneTest) {
   SampleMap samples(1);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
 
   EXPECT_TRUE(it->Done());
 
diff --git a/base/metrics/sample_vector.cc b/base/metrics/sample_vector.cc
index ccb9431..9c6453e 100644
--- a/base/metrics/sample_vector.cc
+++ b/base/metrics/sample_vector.cc
@@ -65,8 +65,8 @@
   return subtle::NoBarrier_Load(&counts_[bucket_index]);
 }
 
-scoped_ptr<SampleCountIterator> SampleVector::Iterator() const {
-  return scoped_ptr<SampleCountIterator>(
+std::unique_ptr<SampleCountIterator> SampleVector::Iterator() const {
+  return std::unique_ptr<SampleCountIterator>(
       new SampleVectorIterator(counts_, counts_size_, bucket_ranges_));
 }
 
diff --git a/base/metrics/sample_vector.h b/base/metrics/sample_vector.h
index 86319ea..ee26c52 100644
--- a/base/metrics/sample_vector.h
+++ b/base/metrics/sample_vector.h
@@ -11,12 +11,12 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/compiler_specific.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
 
@@ -40,7 +40,7 @@
                   HistogramBase::Count count) override;
   HistogramBase::Count GetCount(HistogramBase::Sample value) const override;
   HistogramBase::Count TotalCount() const override;
-  scoped_ptr<SampleCountIterator> Iterator() const override;
+  std::unique_ptr<SampleCountIterator> Iterator() const override;
 
   // Get count of a specific bucket.
   HistogramBase::Count GetCountAtIndex(size_t bucket_index) const;
diff --git a/base/metrics/sample_vector_unittest.cc b/base/metrics/sample_vector_unittest.cc
index 434def78..02e48aa 100644
--- a/base/metrics/sample_vector_unittest.cc
+++ b/base/metrics/sample_vector_unittest.cc
@@ -7,9 +7,9 @@
 #include <limits.h>
 #include <stddef.h>
 
+#include <memory>
 #include <vector>
 
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/bucket_ranges.h"
 #include "base/metrics/histogram.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -244,7 +244,7 @@
   samples.Accumulate(1, 1);
   samples.Accumulate(2, 2);
   samples.Accumulate(3, 3);
-  scoped_ptr<SampleCountIterator> it2 = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it2 = samples.Iterator();
 
   int i;
   for (i = 1; !it2->Done(); i++, it2->Next()) {
@@ -271,7 +271,7 @@
   ranges.set_range(4, INT_MAX);
   SampleVector samples(1, &ranges);
 
-  scoped_ptr<SampleCountIterator> it = samples.Iterator();
+  std::unique_ptr<SampleCountIterator> it = samples.Iterator();
 
   EXPECT_TRUE(it->Done());
 
diff --git a/base/metrics/sparse_histogram.cc b/base/metrics/sparse_histogram.cc
index ee18cfa..1118c41 100644
--- a/base/metrics/sparse_histogram.cc
+++ b/base/metrics/sparse_histogram.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/memory/ptr_util.h"
 #include "base/metrics/metrics_hashes.h"
 #include "base/metrics/persistent_histogram_allocator.h"
 #include "base/metrics/persistent_sample_map.h"
@@ -37,7 +38,7 @@
     // allocating from it fails, code below will allocate the histogram from
     // the process heap.
     PersistentMemoryAllocator::Reference histogram_ref = 0;
-    scoped_ptr<HistogramBase> tentative_histogram;
+    std::unique_ptr<HistogramBase> tentative_histogram;
     PersistentHistogramAllocator* allocator =
         PersistentHistogramAllocator::GetGlobalAllocator();
     if (allocator) {
@@ -79,12 +80,12 @@
 }
 
 // static
-scoped_ptr<HistogramBase> SparseHistogram::PersistentCreate(
+std::unique_ptr<HistogramBase> SparseHistogram::PersistentCreate(
     PersistentMemoryAllocator* allocator,
     const std::string& name,
     HistogramSamples::Metadata* meta,
     HistogramSamples::Metadata* logged_meta) {
-  return make_scoped_ptr(
+  return WrapUnique(
       new SparseHistogram(allocator, name, meta, logged_meta));
 }
 
@@ -123,16 +124,16 @@
   FindAndRunCallback(value);
 }
 
-scoped_ptr<HistogramSamples> SparseHistogram::SnapshotSamples() const {
-  scoped_ptr<SampleMap> snapshot(new SampleMap(name_hash()));
+std::unique_ptr<HistogramSamples> SparseHistogram::SnapshotSamples() const {
+  std::unique_ptr<SampleMap> snapshot(new SampleMap(name_hash()));
 
   base::AutoLock auto_lock(lock_);
   snapshot->Add(*samples_);
   return std::move(snapshot);
 }
 
-scoped_ptr<HistogramSamples> SparseHistogram::SnapshotDelta() {
-  scoped_ptr<SampleMap> snapshot(new SampleMap(name_hash()));
+std::unique_ptr<HistogramSamples> SparseHistogram::SnapshotDelta() {
+  std::unique_ptr<SampleMap> snapshot(new SampleMap(name_hash()));
   base::AutoLock auto_lock(lock_);
   snapshot->Add(*samples_);
 
@@ -219,7 +220,7 @@
                                      const std::string& newline,
                                      std::string* output) const {
   // Get a local copy of the data so we are consistent.
-  scoped_ptr<HistogramSamples> snapshot = SnapshotSamples();
+  std::unique_ptr<HistogramSamples> snapshot = SnapshotSamples();
   Count total_count = snapshot->TotalCount();
   double scaled_total_count = total_count / 100.0;
 
@@ -232,7 +233,7 @@
   // normalize the graphical bar-width relative to that sample count.
   Count largest_count = 0;
   Sample largest_sample = 0;
-  scoped_ptr<SampleCountIterator> it = snapshot->Iterator();
+  std::unique_ptr<SampleCountIterator> it = snapshot->Iterator();
   while (!it->Done()) {
     Sample min;
     Sample max;
diff --git a/base/metrics/sparse_histogram.h b/base/metrics/sparse_histogram.h
index b876737..f0296cb 100644
--- a/base/metrics/sparse_histogram.h
+++ b/base/metrics/sparse_histogram.h
@@ -9,13 +9,13 @@
 #include <stdint.h>
 
 #include <map>
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/compiler_specific.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/sample_map.h"
 #include "base/synchronization/lock.h"
@@ -60,7 +60,7 @@
   static HistogramBase* FactoryGet(const std::string& name, int32_t flags);
 
   // Create a histogram using data in persistent storage.
-  static scoped_ptr<HistogramBase> PersistentCreate(
+  static std::unique_ptr<HistogramBase> PersistentCreate(
       PersistentMemoryAllocator* allocator,
       const std::string& name,
       HistogramSamples::Metadata* meta,
@@ -78,8 +78,8 @@
   void AddCount(Sample value, int count) override;
   void AddSamples(const HistogramSamples& samples) override;
   bool AddSamplesFromPickle(base::PickleIterator* iter) override;
-  scoped_ptr<HistogramSamples> SnapshotSamples() const override;
-  scoped_ptr<HistogramSamples> SnapshotDelta() override;
+  std::unique_ptr<HistogramSamples> SnapshotSamples() const override;
+  std::unique_ptr<HistogramSamples> SnapshotDelta() override;
   void WriteHTMLGraph(std::string* output) const override;
   void WriteAscii(std::string* output) const override;
 
@@ -120,8 +120,8 @@
   // Protects access to |samples_|.
   mutable base::Lock lock_;
 
-  scoped_ptr<HistogramSamples> samples_;
-  scoped_ptr<HistogramSamples> logged_samples_;
+  std::unique_ptr<HistogramSamples> samples_;
+  std::unique_ptr<HistogramSamples> logged_samples_;
 
   DISALLOW_COPY_AND_ASSIGN(SparseHistogram);
 };
diff --git a/base/metrics/sparse_histogram_unittest.cc b/base/metrics/sparse_histogram_unittest.cc
index 5d5dbcbb..6cddd1f 100644
--- a/base/metrics/sparse_histogram_unittest.cc
+++ b/base/metrics/sparse_histogram_unittest.cc
@@ -4,9 +4,9 @@
 
 #include "base/metrics/sparse_histogram.h"
 
+#include <memory>
 #include <string>
 
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
 #include "base/metrics/persistent_histogram_allocator.h"
@@ -73,14 +73,14 @@
     PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting();
   }
 
-  scoped_ptr<SparseHistogram> NewSparseHistogram(const std::string& name) {
-    return scoped_ptr<SparseHistogram>(new SparseHistogram(name));
+  std::unique_ptr<SparseHistogram> NewSparseHistogram(const std::string& name) {
+    return std::unique_ptr<SparseHistogram>(new SparseHistogram(name));
   }
 
   const bool use_persistent_histogram_allocator_;
 
   StatisticsRecorder* statistics_recorder_;
-  scoped_ptr<char[]> allocator_memory_;
+  std::unique_ptr<char[]> allocator_memory_;
   PersistentMemoryAllocator* allocator_ = nullptr;
 
  private:
@@ -94,57 +94,57 @@
 
 
 TEST_P(SparseHistogramTest, BasicTest) {
-  scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
-  scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
+  std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
+  std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
   EXPECT_EQ(0, snapshot->TotalCount());
   EXPECT_EQ(0, snapshot->sum());
 
   histogram->Add(100);
-  scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
   EXPECT_EQ(1, snapshot1->TotalCount());
   EXPECT_EQ(1, snapshot1->GetCount(100));
 
   histogram->Add(100);
   histogram->Add(101);
-  scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
   EXPECT_EQ(3, snapshot2->TotalCount());
   EXPECT_EQ(2, snapshot2->GetCount(100));
   EXPECT_EQ(1, snapshot2->GetCount(101));
 }
 
 TEST_P(SparseHistogramTest, BasicTestAddCount) {
-  scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
-  scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
+  std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
+  std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
   EXPECT_EQ(0, snapshot->TotalCount());
   EXPECT_EQ(0, snapshot->sum());
 
   histogram->AddCount(100, 15);
-  scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
   EXPECT_EQ(15, snapshot1->TotalCount());
   EXPECT_EQ(15, snapshot1->GetCount(100));
 
   histogram->AddCount(100, 15);
   histogram->AddCount(101, 25);
-  scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
   EXPECT_EQ(55, snapshot2->TotalCount());
   EXPECT_EQ(30, snapshot2->GetCount(100));
   EXPECT_EQ(25, snapshot2->GetCount(101));
 }
 
 TEST_P(SparseHistogramTest, AddCount_LargeValuesDontOverflow) {
-  scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
-  scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
+  std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
+  std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
   EXPECT_EQ(0, snapshot->TotalCount());
   EXPECT_EQ(0, snapshot->sum());
 
   histogram->AddCount(1000000000, 15);
-  scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
   EXPECT_EQ(15, snapshot1->TotalCount());
   EXPECT_EQ(15, snapshot1->GetCount(1000000000));
 
   histogram->AddCount(1000000000, 15);
   histogram->AddCount(1010000000, 25);
-  scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
   EXPECT_EQ(55, snapshot2->TotalCount());
   EXPECT_EQ(30, snapshot2->GetCount(1000000000));
   EXPECT_EQ(25, snapshot2->GetCount(1010000000));
@@ -170,7 +170,8 @@
                                                : 0),
       sparse_histogram->flags());
 
-  scoped_ptr<HistogramSamples> samples = sparse_histogram->SnapshotSamples();
+  std::unique_ptr<HistogramSamples> samples =
+      sparse_histogram->SnapshotSamples();
   EXPECT_EQ(3, samples->TotalCount());
   EXPECT_EQ(2, samples->GetCount(100));
   EXPECT_EQ(1, samples->GetCount(200));
@@ -195,7 +196,7 @@
 }
 
 TEST_P(SparseHistogramTest, Serialize) {
-  scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
+  std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
   histogram->SetFlags(HistogramBase::kIPCSerializationSourceFlag);
 
   Pickle pickle;
diff --git a/base/metrics/statistics_recorder.cc b/base/metrics/statistics_recorder.cc
index 2bb50ad..0840c9af 100644
--- a/base/metrics/statistics_recorder.cc
+++ b/base/metrics/statistics_recorder.cc
@@ -4,11 +4,12 @@
 
 #include "base/metrics/statistics_recorder.h"
 
+#include <memory>
+
 #include "base/at_exit.h"
 #include "base/debug/leak_annotations.h"
 #include "base/json/string_escape.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/metrics_hashes.h"
 #include "base/stl_util.h"
@@ -147,7 +148,7 @@
 const BucketRanges* StatisticsRecorder::RegisterOrDeleteDuplicateRanges(
     const BucketRanges* ranges) {
   DCHECK(ranges->HasValidChecksum());
-  scoped_ptr<const BucketRanges> ranges_deleter;
+  std::unique_ptr<const BucketRanges> ranges_deleter;
 
   if (lock_ == NULL) {
     ANNOTATE_LEAKING_OBJECT_PTR(ranges);
@@ -429,9 +430,9 @@
   if (!lock_)
     return;
 
-  scoped_ptr<HistogramMap> histograms_deleter;
-  scoped_ptr<CallbackMap> callbacks_deleter;
-  scoped_ptr<RangesMap> ranges_deleter;
+  std::unique_ptr<HistogramMap> histograms_deleter;
+  std::unique_ptr<CallbackMap> callbacks_deleter;
+  std::unique_ptr<RangesMap> ranges_deleter;
   // We don't delete lock_ on purpose to avoid having to properly protect
   // against it going away after we checked for NULL in the static methods.
   {
diff --git a/base/metrics/statistics_recorder_unittest.cc b/base/metrics/statistics_recorder_unittest.cc
index 073cbb1..af054513 100644
--- a/base/metrics/statistics_recorder_unittest.cc
+++ b/base/metrics/statistics_recorder_unittest.cc
@@ -2,17 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/metrics/statistics_recorder.h"
+
 #include <stddef.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/persistent_histogram_allocator.h"
 #include "base/metrics/sparse_histogram.h"
-#include "base/metrics/statistics_recorder.h"
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -272,7 +273,7 @@
   std::string json(StatisticsRecorder::ToJSON(std::string()));
 
   // Check for valid JSON.
-  scoped_ptr<Value> root = JSONReader::Read(json);
+  std::unique_ptr<Value> root = JSONReader::Read(json);
   ASSERT_TRUE(root.get());
 
   DictionaryValue* root_dict = NULL;
diff --git a/base/pickle_unittest.cc b/base/pickle_unittest.cc
index 307cb51..e00edd9 100644
--- a/base/pickle_unittest.cc
+++ b/base/pickle_unittest.cc
@@ -2,15 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/pickle.h"
+
 #include <limits.h>
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
 #include <string>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/pickle.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -163,7 +164,7 @@
 
 // Tests that we can handle really small buffers.
 TEST(PickleTest, SmallBuffer) {
-  scoped_ptr<char[]> buffer(new char[1]);
+  std::unique_ptr<char[]> buffer(new char[1]);
 
   // We should not touch the buffer.
   Pickle pickle(buffer.get(), 1);
@@ -329,7 +330,7 @@
 
 TEST(PickleTest, FindNextWithIncompleteHeader) {
   size_t header_size = sizeof(Pickle::Header);
-  scoped_ptr<char[]> buffer(new char[header_size - 1]);
+  std::unique_ptr<char[]> buffer(new char[header_size - 1]);
   memset(buffer.get(), 0x1, header_size - 1);
 
   const char* start = buffer.get();
@@ -346,7 +347,7 @@
   size_t header_size = sizeof(Pickle::Header);
   size_t header_size2 = 2 * header_size;
   size_t payload_received = 100;
-  scoped_ptr<char[]> buffer(new char[header_size2 + payload_received]);
+  std::unique_ptr<char[]> buffer(new char[header_size2 + payload_received]);
   const char* start = buffer.get();
   Pickle::Header* header = reinterpret_cast<Pickle::Header*>(buffer.get());
   const char* end = start + header_size2 + payload_received;
@@ -390,7 +391,7 @@
 
 TEST(PickleTest, Resize) {
   size_t unit = Pickle::kPayloadUnit;
-  scoped_ptr<char[]> data(new char[unit]);
+  std::unique_ptr<char[]> data(new char[unit]);
   char* data_ptr = data.get();
   for (size_t i = 0; i < unit; i++)
     data_ptr[i] = 'G';
diff --git a/base/power_monitor/power_monitor.cc b/base/power_monitor/power_monitor.cc
index 1033299..11082df 100644
--- a/base/power_monitor/power_monitor.cc
+++ b/base/power_monitor/power_monitor.cc
@@ -12,7 +12,7 @@
 
 static PowerMonitor* g_power_monitor = NULL;
 
-PowerMonitor::PowerMonitor(scoped_ptr<PowerMonitorSource> source)
+PowerMonitor::PowerMonitor(std::unique_ptr<PowerMonitorSource> source)
     : observers_(new ObserverListThreadSafe<PowerObserver>()),
       source_(std::move(source)) {
   DCHECK(!g_power_monitor);
diff --git a/base/power_monitor/power_monitor.h b/base/power_monitor/power_monitor.h
index 683eeb9..e025b324 100644
--- a/base/power_monitor/power_monitor.h
+++ b/base/power_monitor/power_monitor.h
@@ -20,7 +20,7 @@
 class BASE_EXPORT PowerMonitor {
  public:
   // Takes ownership of |source|.
-  explicit PowerMonitor(scoped_ptr<PowerMonitorSource> source);
+  explicit PowerMonitor(std::unique_ptr<PowerMonitorSource> source);
   ~PowerMonitor();
 
   // Get the process-wide PowerMonitor (if not present, returns NULL).
@@ -45,7 +45,7 @@
   void NotifyResume();
 
   scoped_refptr<ObserverListThreadSafe<PowerObserver> > observers_;
-  scoped_ptr<PowerMonitorSource> source_;
+  std::unique_ptr<PowerMonitorSource> source_;
 
   DISALLOW_COPY_AND_ASSIGN(PowerMonitor);
 };
diff --git a/base/power_monitor/power_monitor_unittest.cc b/base/power_monitor/power_monitor_unittest.cc
index 798a21c..0c4e7cb 100644
--- a/base/power_monitor/power_monitor_unittest.cc
+++ b/base/power_monitor/power_monitor_unittest.cc
@@ -14,7 +14,7 @@
   PowerMonitorTest() {
     power_monitor_source_ = new PowerMonitorTestSource();
     power_monitor_.reset(new PowerMonitor(
-        scoped_ptr<PowerMonitorSource>(power_monitor_source_)));
+        std::unique_ptr<PowerMonitorSource>(power_monitor_source_)));
   }
   ~PowerMonitorTest() override{};
 
@@ -23,7 +23,7 @@
 
  private:
   PowerMonitorTestSource* power_monitor_source_;
-  scoped_ptr<PowerMonitor> power_monitor_;
+  std::unique_ptr<PowerMonitor> power_monitor_;
 
   DISALLOW_COPY_AND_ASSIGN(PowerMonitorTest);
 };
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
index 4019de5..c4961900 100644
--- a/base/process/launch_posix.cc
+++ b/base/process/launch_posix.cc
@@ -22,6 +22,7 @@
 
 #include <iterator>
 #include <limits>
+#include <memory>
 #include <set>
 
 #include "base/command_line.h"
@@ -32,7 +33,6 @@
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/process/process.h"
 #include "base/process/process_metrics.h"
@@ -202,7 +202,7 @@
 };
 
 // Automatically closes |DIR*|s.
-typedef scoped_ptr<DIR, ScopedDIRClose> ScopedDIR;
+typedef std::unique_ptr<DIR, ScopedDIRClose> ScopedDIR;
 
 #if defined(OS_LINUX)
 static const char kFDDir[] = "/proc/self/fd";
@@ -301,13 +301,13 @@
   fd_shuffle1.reserve(fd_shuffle_size);
   fd_shuffle2.reserve(fd_shuffle_size);
 
-  scoped_ptr<char* []> argv_cstr(new char* [argv.size() + 1]);
+  std::unique_ptr<char* []> argv_cstr(new char*[argv.size() + 1]);
   for (size_t i = 0; i < argv.size(); i++) {
     argv_cstr[i] = const_cast<char*>(argv[i].c_str());
   }
   argv_cstr[argv.size()] = NULL;
 
-  scoped_ptr<char*[]> new_environ;
+  std::unique_ptr<char* []> new_environ;
   char* const empty_environ = NULL;
   char* const* old_environ = GetEnvironment();
   if (options.clear_environ)
@@ -552,7 +552,7 @@
   int pipe_fd[2];
   pid_t pid;
   InjectiveMultimap fd_shuffle1, fd_shuffle2;
-  scoped_ptr<char*[]> argv_cstr(new char*[argv.size() + 1]);
+  std::unique_ptr<char* []> argv_cstr(new char*[argv.size() + 1]);
 
   fd_shuffle1.reserve(3);
   fd_shuffle2.reserve(3);
diff --git a/base/process/launch_win.cc b/base/process/launch_win.cc
index 6c43b40..ba173e0 100644
--- a/base/process/launch_win.cc
+++ b/base/process/launch_win.cc
@@ -19,7 +19,6 @@
 #include "base/command_line.h"
 #include "base/debug/stack_trace.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/metrics/histogram.h"
 #include "base/process/kill.h"
diff --git a/base/process/memory_win.cc b/base/process/memory_win.cc
index e539c6a35..17d588a 100644
--- a/base/process/memory_win.cc
+++ b/base/process/memory_win.cc
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 
 // malloc_unchecked is required to implement UncheckedMalloc properly.
 // It's provided by allocator_shim_win.cc but since that's not always present,
diff --git a/base/process/process_handle_win.cc b/base/process/process_handle_win.cc
index 7763f581..b8136d1 100644
--- a/base/process/process_handle_win.cc
+++ b/base/process/process_handle_win.cc
@@ -7,7 +7,6 @@
 #include <windows.h>
 #include <tlhelp32.h>
 
-#include "base/memory/scoped_ptr.h"
 #include "base/win/scoped_handle.h"
 #include "base/win/windows_version.h"
 
diff --git a/base/process/process_info_mac.cc b/base/process/process_info_mac.cc
index 7583266..27b9623 100644
--- a/base/process/process_info_mac.cc
+++ b/base/process/process_info_mac.cc
@@ -9,9 +9,10 @@
 #include <sys/time.h>
 #include <unistd.h>
 
+#include <memory>
+
 #include "base/macros.h"
 #include "base/memory/free_deleter.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/time/time.h"
 
 namespace base {
@@ -23,8 +24,8 @@
   if (sysctl(mib, arraysize(mib), NULL, &len, NULL, 0) < 0)
     return Time();
 
-  scoped_ptr<struct kinfo_proc, base::FreeDeleter>
-      proc(static_cast<struct kinfo_proc*>(malloc(len)));
+  std::unique_ptr<struct kinfo_proc, base::FreeDeleter> proc(
+      static_cast<struct kinfo_proc*>(malloc(len)));
   if (sysctl(mib, arraysize(mib), proc.get(), &len, NULL, 0) < 0)
     return Time();
   return Time::FromTimeVal(proc->kp_proc.p_un.__p_starttime);
diff --git a/base/process/process_info_win.cc b/base/process/process_info_win.cc
index bd9e070..9c2843b 100644
--- a/base/process/process_info_win.cc
+++ b/base/process/process_info_win.cc
@@ -6,7 +6,8 @@
 
 #include <windows.h>
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/time/time.h"
 #include "base/win/scoped_handle.h"
 #include "base/win/windows_version.h"
@@ -44,7 +45,7 @@
     return INTEGRITY_UNKNOWN;
   }
 
-  scoped_ptr<char[]> token_label_bytes(new char[token_info_length]);
+  std::unique_ptr<char[]> token_label_bytes(new char[token_info_length]);
   if (!token_label_bytes.get())
     return INTEGRITY_UNKNOWN;
 
diff --git a/base/process/process_metrics.cc b/base/process/process_metrics.cc
index a21891d..0b38726 100644
--- a/base/process/process_metrics.cc
+++ b/base/process/process_metrics.cc
@@ -31,8 +31,8 @@
   return system_metrics;
 }
 
-scoped_ptr<Value> SystemMetrics::ToValue() const {
-  scoped_ptr<DictionaryValue> res(new DictionaryValue());
+std::unique_ptr<Value> SystemMetrics::ToValue() const {
+  std::unique_ptr<DictionaryValue> res(new DictionaryValue());
 
   res->SetInteger("committed_memory", static_cast<int>(committed_memory_));
 #if defined(OS_LINUX) || defined(OS_ANDROID)
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h
index 9c868cc..8d4e51b 100644
--- a/base/process/process_metrics.h
+++ b/base/process/process_metrics.h
@@ -267,7 +267,7 @@
   SystemMemoryInfoKB(const SystemMemoryInfoKB& other);
 
   // Serializes the platform specific fields to value.
-  scoped_ptr<Value> ToValue() const;
+  std::unique_ptr<Value> ToValue() const;
 
   int total;
   int free;
@@ -343,7 +343,7 @@
   SystemDiskInfo(const SystemDiskInfo& other);
 
   // Serializes the platform specific fields to value.
-  scoped_ptr<Value> ToValue() const;
+  std::unique_ptr<Value> ToValue() const;
 
   uint64_t reads;
   uint64_t reads_merged;
@@ -380,7 +380,7 @@
   }
 
   // Serializes the platform specific fields to value.
-  scoped_ptr<Value> ToValue() const;
+  std::unique_ptr<Value> ToValue() const;
 
   uint64_t num_reads;
   uint64_t num_writes;
@@ -404,7 +404,7 @@
   static SystemMetrics Sample();
 
   // Serializes the system metrics to value.
-  scoped_ptr<Value> ToValue() const;
+  std::unique_ptr<Value> ToValue() const;
 
  private:
   FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
diff --git a/base/process/process_metrics_linux.cc b/base/process/process_metrics_linux.cc
index c6aff3e8..89a26090 100644
--- a/base/process/process_metrics_linux.cc
+++ b/base/process/process_metrics_linux.cc
@@ -559,8 +559,8 @@
 SystemMemoryInfoKB::SystemMemoryInfoKB(const SystemMemoryInfoKB& other) =
     default;
 
-scoped_ptr<Value> SystemMemoryInfoKB::ToValue() const {
-  scoped_ptr<DictionaryValue> res(new DictionaryValue());
+std::unique_ptr<Value> SystemMemoryInfoKB::ToValue() const {
+  std::unique_ptr<DictionaryValue> res(new DictionaryValue());
 
   res->SetInteger("total", total);
   res->SetInteger("free", free);
@@ -772,8 +772,8 @@
 
 SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
 
-scoped_ptr<Value> SystemDiskInfo::ToValue() const {
-  scoped_ptr<DictionaryValue> res(new DictionaryValue());
+std::unique_ptr<Value> SystemDiskInfo::ToValue() const {
+  std::unique_ptr<DictionaryValue> res(new DictionaryValue());
 
   // Write out uint64_t variables as doubles.
   // Note: this may discard some precision, but for JS there's no other option.
@@ -898,8 +898,8 @@
 }
 
 #if defined(OS_CHROMEOS)
-scoped_ptr<Value> SwapInfo::ToValue() const {
-  scoped_ptr<DictionaryValue> res(new DictionaryValue());
+std::unique_ptr<Value> SwapInfo::ToValue() const {
+  std::unique_ptr<DictionaryValue> res(new DictionaryValue());
 
   // Write out uint64_t variables as doubles.
   // Note: this may discard some precision, but for JS there's no other option.
diff --git a/base/process/process_metrics_unittest.cc b/base/process/process_metrics_unittest.cc
index 96ba6cea..4c5b71d 100644
--- a/base/process/process_metrics_unittest.cc
+++ b/base/process/process_metrics_unittest.cc
@@ -303,7 +303,7 @@
 // calls to it.
 TEST_F(SystemMetricsTest, TestNoNegativeCpuUsage) {
   ProcessHandle handle = GetCurrentProcessHandle();
-  scoped_ptr<ProcessMetrics> metrics(
+  std::unique_ptr<ProcessMetrics> metrics(
       ProcessMetrics::CreateProcessMetrics(handle));
 
   EXPECT_GE(metrics->GetCPUUsage(), 0.0);
@@ -424,7 +424,7 @@
   ASSERT_GT(initial_threads, 0);
   const int kNumAdditionalThreads = 10;
   {
-    scoped_ptr<Thread> my_threads[kNumAdditionalThreads];
+    std::unique_ptr<Thread> my_threads[kNumAdditionalThreads];
     for (int i = 0; i < kNumAdditionalThreads; ++i) {
       my_threads[i].reset(new Thread("GetNumberOfThreadsTest"));
       my_threads[i]->Start();
@@ -496,7 +496,7 @@
   ASSERT_TRUE(child.IsValid());
   WaitForEvent(temp_path, kSignalClosed);
 
-  scoped_ptr<ProcessMetrics> metrics(
+  std::unique_ptr<ProcessMetrics> metrics(
       ProcessMetrics::CreateProcessMetrics(child.Handle()));
   EXPECT_EQ(0, metrics->GetOpenFdCount());
   ASSERT_TRUE(child.Terminate(0, true));
diff --git a/base/process/process_metrics_unittest_ios.cc b/base/process/process_metrics_unittest_ios.cc
index 3e1ca35..22bd97e7 100644
--- a/base/process/process_metrics_unittest_ios.cc
+++ b/base/process/process_metrics_unittest_ios.cc
@@ -4,11 +4,12 @@
 
 #include "base/process/process_metrics.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "testing/gtest/include/gtest/gtest.h"
 
 TEST(ProcessMetricsTestIos, Memory) {
-  scoped_ptr<base::ProcessMetrics> process_metrics(
+  std::unique_ptr<base::ProcessMetrics> process_metrics(
       base::ProcessMetrics::CreateProcessMetrics(
           base::GetCurrentProcessHandle()));
 
diff --git a/base/process/process_util_unittest.cc b/base/process/process_util_unittest.cc
index 5034f1f..69b35511 100644
--- a/base/process/process_util_unittest.cc
+++ b/base/process/process_util_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/process/kill.h"
diff --git a/base/process/process_win.cc b/base/process/process_win.cc
index e13fb86..8e508a1 100644
--- a/base/process/process_win.cc
+++ b/base/process/process_win.cc
@@ -5,7 +5,6 @@
 #include "base/process/process.h"
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/process/kill.h"
 #include "base/win/windows_version.h"
diff --git a/base/profiler/native_stack_sampler.h b/base/profiler/native_stack_sampler.h
index 40be5cd..c7ef84a 100644
--- a/base/profiler/native_stack_sampler.h
+++ b/base/profiler/native_stack_sampler.h
@@ -5,9 +5,10 @@
 #ifndef BASE_PROFILER_NATIVE_STACK_SAMPLER_H_
 #define BASE_PROFILER_NATIVE_STACK_SAMPLER_H_
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/profiler/stack_sampling_profiler.h"
 #include "base/threading/platform_thread.h"
 
@@ -24,7 +25,7 @@
 
   // Creates a stack sampler that records samples for |thread_handle|. Returns
   // null if this platform does not support stack sampling.
-  static scoped_ptr<NativeStackSampler> Create(
+  static std::unique_ptr<NativeStackSampler> Create(
       PlatformThreadId thread_id,
       NativeStackSamplerTestDelegate* test_delegate);
 
diff --git a/base/profiler/native_stack_sampler_posix.cc b/base/profiler/native_stack_sampler_posix.cc
index c67d885..a386766 100644
--- a/base/profiler/native_stack_sampler_posix.cc
+++ b/base/profiler/native_stack_sampler_posix.cc
@@ -6,10 +6,10 @@
 
 namespace base {
 
-scoped_ptr<NativeStackSampler> NativeStackSampler::Create(
+std::unique_ptr<NativeStackSampler> NativeStackSampler::Create(
     PlatformThreadId thread_id,
     NativeStackSamplerTestDelegate* test_delegate) {
-  return scoped_ptr<NativeStackSampler>();
+  return std::unique_ptr<NativeStackSampler>();
 }
 
 }  // namespace base
diff --git a/base/profiler/native_stack_sampler_win.cc b/base/profiler/native_stack_sampler_win.cc
index b234090..063374f 100644
--- a/base/profiler/native_stack_sampler_win.cc
+++ b/base/profiler/native_stack_sampler_win.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/profiler/native_stack_sampler.h"
+
 #include <objbase.h>
 #include <windows.h>
 #include <stddef.h>
@@ -9,14 +11,13 @@
 
 #include <cstdlib>
 #include <map>
+#include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/profiler/native_stack_sampler.h"
 #include "base/profiler/win32_stack_frame_unwinder.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -414,7 +415,7 @@
 
   // Buffer to use for copies of the stack. We use the same buffer for all the
   // samples to avoid the overhead of multiple allocations and frees.
-  const scoped_ptr<unsigned char[]> stack_copy_buffer_;
+  const std::unique_ptr<unsigned char[]> stack_copy_buffer_;
 
   // Weak. Points to the modules associated with the profile being recorded
   // between ProfileRecordingStarting() and ProfileRecordingStopped().
@@ -519,7 +520,7 @@
 
 }  // namespace
 
-scoped_ptr<NativeStackSampler> NativeStackSampler::Create(
+std::unique_ptr<NativeStackSampler> NativeStackSampler::Create(
     PlatformThreadId thread_id,
     NativeStackSamplerTestDelegate* test_delegate) {
 #if _WIN64
@@ -530,12 +531,11 @@
       thread_id);
 
   if (thread_handle) {
-    return scoped_ptr<NativeStackSampler>(new NativeStackSamplerWin(
-        win::ScopedHandle(thread_handle),
-        test_delegate));
+    return std::unique_ptr<NativeStackSampler>(new NativeStackSamplerWin(
+        win::ScopedHandle(thread_handle), test_delegate));
   }
 #endif
-  return scoped_ptr<NativeStackSampler>();
+  return std::unique_ptr<NativeStackSampler>();
 }
 
 }  // namespace base
diff --git a/base/profiler/stack_sampling_profiler.cc b/base/profiler/stack_sampling_profiler.cc
index 0749ae5..2ece509 100644
--- a/base/profiler/stack_sampling_profiler.cc
+++ b/base/profiler/stack_sampling_profiler.cc
@@ -42,12 +42,12 @@
 
   // Runs the callback and deletes the AsyncRunner instance.
   static void RunCallbackAndDeleteInstance(
-      scoped_ptr<AsyncRunner> object_to_be_deleted,
+      std::unique_ptr<AsyncRunner> object_to_be_deleted,
       const StackSamplingProfiler::CompletedCallback& callback,
       scoped_refptr<SingleThreadTaskRunner> task_runner,
       const StackSamplingProfiler::CallStackProfiles& profiles);
 
-  scoped_ptr<StackSamplingProfiler> profiler_;
+  std::unique_ptr<StackSamplingProfiler> profiler_;
 
   DISALLOW_COPY_AND_ASSIGN(AsyncRunner);
 };
@@ -57,7 +57,7 @@
     PlatformThreadId thread_id,
     const StackSamplingProfiler::SamplingParams& params,
     const StackSamplingProfiler::CompletedCallback &callback) {
-  scoped_ptr<AsyncRunner> runner(new AsyncRunner);
+  std::unique_ptr<AsyncRunner> runner(new AsyncRunner);
   AsyncRunner* temp_ptr = runner.get();
   temp_ptr->profiler_.reset(
       new StackSamplingProfiler(thread_id, params,
@@ -72,7 +72,7 @@
 AsyncRunner::AsyncRunner() {}
 
 void AsyncRunner::RunCallbackAndDeleteInstance(
-    scoped_ptr<AsyncRunner> object_to_be_deleted,
+    std::unique_ptr<AsyncRunner> object_to_be_deleted,
     const StackSamplingProfiler::CompletedCallback& callback,
     scoped_refptr<SingleThreadTaskRunner> task_runner,
     const StackSamplingProfiler::CallStackProfiles& profiles) {
@@ -115,7 +115,7 @@
 // StackSamplingProfiler::SamplingThread --------------------------------------
 
 StackSamplingProfiler::SamplingThread::SamplingThread(
-    scoped_ptr<NativeStackSampler> native_sampler,
+    std::unique_ptr<NativeStackSampler> native_sampler,
     const SamplingParams& params,
     const CompletedCallback& completed_callback)
     : native_sampler_(std::move(native_sampler)),
@@ -255,7 +255,7 @@
   if (completed_callback_.is_null())
     return;
 
-  scoped_ptr<NativeStackSampler> native_sampler =
+  std::unique_ptr<NativeStackSampler> native_sampler =
       NativeStackSampler::Create(thread_id_, test_delegate_);
   if (!native_sampler)
     return;
diff --git a/base/profiler/stack_sampling_profiler.h b/base/profiler/stack_sampling_profiler.h
index e972d57..9424ca0 100644
--- a/base/profiler/stack_sampling_profiler.h
+++ b/base/profiler/stack_sampling_profiler.h
@@ -7,6 +7,7 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -14,7 +15,6 @@
 #include "base/callback.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/platform_thread.h"
@@ -197,7 +197,7 @@
     // Samples stacks using |native_sampler|. When complete, invokes
     // |completed_callback| with the collected call stack profiles.
     // |completed_callback| must be callable on any thread.
-    SamplingThread(scoped_ptr<NativeStackSampler> native_sampler,
+    SamplingThread(std::unique_ptr<NativeStackSampler> native_sampler,
                    const SamplingParams& params,
                    const CompletedCallback& completed_callback);
     ~SamplingThread() override;
@@ -219,7 +219,7 @@
     // |call_stack_profiles| may contain a partial burst.
     void CollectProfiles(CallStackProfiles* profiles);
 
-    scoped_ptr<NativeStackSampler> native_sampler_;
+    std::unique_ptr<NativeStackSampler> native_sampler_;
     const SamplingParams params_;
 
     // If Stop() is called, it signals this event to force the sampling to
@@ -236,7 +236,7 @@
 
   const SamplingParams params_;
 
-  scoped_ptr<SamplingThread> sampling_thread_;
+  std::unique_ptr<SamplingThread> sampling_thread_;
   PlatformThreadHandle sampling_thread_handle_;
 
   const CompletedCallback completed_callback_;
diff --git a/base/profiler/stack_sampling_profiler_unittest.cc b/base/profiler/stack_sampling_profiler_unittest.cc
index fad25a5..12a05e1 100644
--- a/base/profiler/stack_sampling_profiler_unittest.cc
+++ b/base/profiler/stack_sampling_profiler_unittest.cc
@@ -790,7 +790,7 @@
 
   CallStackProfiles profiles;
   WithTargetThread([&params, &profiles](PlatformThreadId target_thread_id) {
-    scoped_ptr<StackSamplingProfiler> profiler;
+    std::unique_ptr<StackSamplingProfiler> profiler;
     profiler.reset(new StackSamplingProfiler(
         target_thread_id, params, Bind(&SaveProfiles, Unretained(&profiles))));
     profiler->Start();
diff --git a/base/profiler/win32_stack_frame_unwinder.cc b/base/profiler/win32_stack_frame_unwinder.cc
index 472f4f1..9e6ab392 100644
--- a/base/profiler/win32_stack_frame_unwinder.cc
+++ b/base/profiler/win32_stack_frame_unwinder.cc
@@ -2,12 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/macros.h"
 #include "base/profiler/win32_stack_frame_unwinder.h"
 
 #include <windows.h>
+
 #include <utility>
 
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+
 namespace base {
 
 // Win32UnwindFunctions -------------------------------------------------------
@@ -109,8 +112,7 @@
 Win32StackFrameUnwinder::UnwindFunctions::UnwindFunctions() {}
 
 Win32StackFrameUnwinder::Win32StackFrameUnwinder()
-    : Win32StackFrameUnwinder(make_scoped_ptr(new Win32UnwindFunctions)) {
-}
+    : Win32StackFrameUnwinder(WrapUnique(new Win32UnwindFunctions)) {}
 
 Win32StackFrameUnwinder::~Win32StackFrameUnwinder() {}
 
@@ -178,8 +180,7 @@
 }
 
 Win32StackFrameUnwinder::Win32StackFrameUnwinder(
-    scoped_ptr<UnwindFunctions> unwind_functions)
-    : at_top_frame_(true),
-      unwind_functions_(std::move(unwind_functions)) {}
+    std::unique_ptr<UnwindFunctions> unwind_functions)
+    : at_top_frame_(true), unwind_functions_(std::move(unwind_functions)) {}
 
 }  // namespace base
diff --git a/base/profiler/win32_stack_frame_unwinder.h b/base/profiler/win32_stack_frame_unwinder.h
index 18cd9d6..c92d50cd2 100644
--- a/base/profiler/win32_stack_frame_unwinder.h
+++ b/base/profiler/win32_stack_frame_unwinder.h
@@ -7,9 +7,10 @@
 
 #include <windows.h>
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/win/scoped_handle.h"
 
 namespace base {
@@ -84,14 +85,14 @@
 
  private:
   // This function is for internal and test purposes only.
-  Win32StackFrameUnwinder(scoped_ptr<UnwindFunctions> unwind_functions);
+  Win32StackFrameUnwinder(std::unique_ptr<UnwindFunctions> unwind_functions);
   friend class Win32StackFrameUnwinderTest;
 
   // State associated with each stack unwinding.
   bool at_top_frame_;
   bool unwind_info_present_for_all_frames_;
 
-  scoped_ptr<UnwindFunctions> unwind_functions_;
+  std::unique_ptr<UnwindFunctions> unwind_functions_;
 
   DISALLOW_COPY_AND_ASSIGN(Win32StackFrameUnwinder);
 };
diff --git a/base/profiler/win32_stack_frame_unwinder_unittest.cc b/base/profiler/win32_stack_frame_unwinder_unittest.cc
index 264ddf3..cecfe22 100644
--- a/base/profiler/win32_stack_frame_unwinder_unittest.cc
+++ b/base/profiler/win32_stack_frame_unwinder_unittest.cc
@@ -4,12 +4,13 @@
 
 #include "base/profiler/win32_stack_frame_unwinder.h"
 
+#include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -126,7 +127,7 @@
 
   // This exists so that Win32StackFrameUnwinder's constructor can be private
   // with a single friend declaration of this test fixture.
-  scoped_ptr<Win32StackFrameUnwinder> CreateUnwinder();
+  std::unique_ptr<Win32StackFrameUnwinder> CreateUnwinder();
 
   // Weak pointer to the unwind functions used by last created unwinder.
   TestUnwindFunctions* unwind_functions_;
@@ -135,17 +136,18 @@
   DISALLOW_COPY_AND_ASSIGN(Win32StackFrameUnwinderTest);
 };
 
-scoped_ptr<Win32StackFrameUnwinder>
+std::unique_ptr<Win32StackFrameUnwinder>
 Win32StackFrameUnwinderTest::CreateUnwinder() {
-  scoped_ptr<TestUnwindFunctions> unwind_functions(new TestUnwindFunctions);
+  std::unique_ptr<TestUnwindFunctions> unwind_functions(
+      new TestUnwindFunctions);
   unwind_functions_ = unwind_functions.get();
-  return make_scoped_ptr(
+  return WrapUnique(
       new Win32StackFrameUnwinder(std::move(unwind_functions)));
 }
 
 // Checks the case where all frames have unwind information.
 TEST_F(Win32StackFrameUnwinderTest, FramesWithUnwindInfo) {
-  scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
+  std::unique_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
   CONTEXT context = {0};
   ScopedModuleHandle module;
 
@@ -166,7 +168,7 @@
 
 // Checks that an instruction pointer in an unloaded module fails to unwind.
 TEST_F(Win32StackFrameUnwinderTest, UnloadedModule) {
-  scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
+  std::unique_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
   CONTEXT context = {0};
   ScopedModuleHandle module;
 
@@ -177,7 +179,7 @@
 // Checks that the CONTEXT's stack pointer gets popped when the top frame has no
 // unwind information.
 TEST_F(Win32StackFrameUnwinderTest, FrameAtTopWithoutUnwindInfo) {
-  scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
+  std::unique_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
   CONTEXT context = {0};
   ScopedModuleHandle module;
   DWORD64 next_ip = 0x0123456789abcdef;
@@ -206,7 +208,7 @@
 TEST_F(Win32StackFrameUnwinderTest, FrameBelowTopWithoutUnwindInfo) {
   {
     // First stack, with a bad function below the top of the stack.
-    scoped_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
+    std::unique_ptr<Win32StackFrameUnwinder> unwinder = CreateUnwinder();
     CONTEXT context = {0};
     ScopedModuleHandle module;
     unwind_functions_->SetHasRuntimeFunction(&context);
diff --git a/base/rand_util_unittest.cc b/base/rand_util_unittest.cc
index ea803ee..4f46b807 100644
--- a/base/rand_util_unittest.cc
+++ b/base/rand_util_unittest.cc
@@ -9,9 +9,9 @@
 
 #include <algorithm>
 #include <limits>
+#include <memory>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -143,7 +143,7 @@
   const int kTestIterations = 10;
   const size_t kTestBufferSize = 1 * 1024 * 1024;
 
-  scoped_ptr<uint8_t[]> buffer(new uint8_t[kTestBufferSize]);
+  std::unique_ptr<uint8_t[]> buffer(new uint8_t[kTestBufferSize]);
   const base::TimeTicks now = base::TimeTicks::Now();
   for (int i = 0; i < kTestIterations; ++i)
     base::RandBytes(buffer.get(), kTestBufferSize);
diff --git a/base/security_unittest.cc b/base/security_unittest.cc
index 39ccdf58..c39864e 100644
--- a/base/security_unittest.cc
+++ b/base/security_unittest.cc
@@ -12,11 +12,11 @@
 
 #include <algorithm>
 #include <limits>
+#include <memory>
 
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/free_deleter.h"
-#include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -110,8 +110,8 @@
   const size_t kArraySize2 = kMaxSizeT / kArraySize + 10;
   const size_t kDynamicArraySize2 = HideValueFromCompiler(kArraySize2);
   {
-    scoped_ptr<char[][kArraySize]> array_pointer(new (nothrow)
-        char[kDynamicArraySize2][kArraySize]);
+    std::unique_ptr<char[][kArraySize]> array_pointer(
+        new (nothrow) char[kDynamicArraySize2][kArraySize]);
     OverflowTestsSoftExpectTrue(!array_pointer);
   }
   // On windows, the compiler prevents static array sizes of more than
@@ -120,8 +120,8 @@
   ALLOW_UNUSED_LOCAL(kDynamicArraySize);
 #else
   {
-    scoped_ptr<char[][kArraySize2]> array_pointer(new (nothrow)
-        char[kDynamicArraySize][kArraySize2]);
+    std::unique_ptr<char[][kArraySize2]> array_pointer(
+        new (nothrow) char[kDynamicArraySize][kArraySize2]);
     OverflowTestsSoftExpectTrue(!array_pointer);
   }
 #endif  // !defined(OS_WIN) || !defined(ARCH_CPU_64_BITS)
@@ -157,7 +157,7 @@
   // 1 MB should get us past what TCMalloc pre-allocated before initializing
   // the sophisticated allocators.
   size_t kAllocSize = 1<<20;
-  scoped_ptr<char, base::FreeDeleter> ptr(
+  std::unique_ptr<char, base::FreeDeleter> ptr(
       static_cast<char*>(malloc(kAllocSize)));
   ASSERT_TRUE(ptr != NULL);
   // If two pointers are separated by less than 512MB, they are considered
diff --git a/base/sequence_checker_unittest.cc b/base/sequence_checker_unittest.cc
index e261b04..1e89a5f4 100644
--- a/base/sequence_checker_unittest.cc
+++ b/base/sequence_checker_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
@@ -14,7 +15,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/test/sequenced_worker_pool_owner.h"
 #include "base/threading/thread.h"
@@ -94,7 +94,7 @@
   }
 
   void PostDeleteToOtherThread(
-      scoped_ptr<SequenceCheckedObject> sequence_checked_object) {
+      std::unique_ptr<SequenceCheckedObject> sequence_checked_object) {
     other_thread()->message_loop()->DeleteSoon(
         FROM_HERE,
         sequence_checked_object.release());
@@ -115,11 +115,11 @@
  private:
   MessageLoop message_loop_;  // Needed by SequencedWorkerPool to function.
   base::Thread other_thread_;
-  scoped_ptr<SequencedWorkerPoolOwner> pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> pool_owner_;
 };
 
 TEST_F(SequenceCheckerTest, CallsAllowedOnSameThread) {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   // Verify that DoStuff doesn't assert.
@@ -130,7 +130,7 @@
 }
 
 TEST_F(SequenceCheckerTest, DestructorAllowedOnDifferentThread) {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   // Verify the destructor doesn't assert when called on a different thread.
@@ -139,7 +139,7 @@
 }
 
 TEST_F(SequenceCheckerTest, DetachFromSequence) {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   // Verify that DoStuff doesn't assert when called on a different thread after
@@ -151,7 +151,7 @@
 }
 
 TEST_F(SequenceCheckerTest, SameSequenceTokenValid) {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   sequence_checked_object->DetachFromSequence();
@@ -166,7 +166,7 @@
 }
 
 TEST_F(SequenceCheckerTest, DetachSequenceTokenValid) {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   sequence_checked_object->DetachFromSequence();
@@ -186,7 +186,7 @@
 #if GTEST_HAS_DEATH_TEST || !ENABLE_SEQUENCE_CHECKER
 
 void SequenceCheckerTest::MethodOnDifferentThreadDeathTest() {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   // DoStuff should assert in debug builds only when called on a
@@ -210,7 +210,7 @@
 #endif  // ENABLE_SEQUENCE_CHECKER
 
 void SequenceCheckerTest::DetachThenCallFromDifferentThreadDeathTest() {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   // DoStuff doesn't assert when called on a different thread
@@ -239,7 +239,7 @@
 #endif  // ENABLE_SEQUENCE_CHECKER
 
 void SequenceCheckerTest::DifferentSequenceTokensDeathTest() {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   sequence_checked_object->DetachFromSequence();
@@ -268,7 +268,7 @@
 #endif  // ENABLE_SEQUENCE_CHECKER
 
 void SequenceCheckerTest::WorkerPoolAndSimpleThreadDeathTest() {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   sequence_checked_object->DetachFromSequence();
@@ -295,7 +295,7 @@
 #endif  // ENABLE_SEQUENCE_CHECKER
 
 void SequenceCheckerTest::TwoDifferentWorkerPoolsDeathTest() {
-  scoped_ptr<SequenceCheckedObject> sequence_checked_object(
+  std::unique_ptr<SequenceCheckedObject> sequence_checked_object(
       new SequenceCheckedObject);
 
   sequence_checked_object->DetachFromSequence();
diff --git a/base/strings/safe_sprintf_unittest.cc b/base/strings/safe_sprintf_unittest.cc
index 931ace8..1a21728 100644
--- a/base/strings/safe_sprintf_unittest.cc
+++ b/base/strings/safe_sprintf_unittest.cc
@@ -10,10 +10,10 @@
 #include <string.h>
 
 #include <limits>
+#include <memory>
 
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -205,7 +205,7 @@
   // There is a more complicated test in PrintLongString() that covers a lot
   // more edge case, but it is also harder to debug in case of a failure.
   const char kTestString[] = "This is a test";
-  scoped_ptr<char[]> buf(new char[sizeof(kTestString)]);
+  std::unique_ptr<char[]> buf(new char[sizeof(kTestString)]);
   EXPECT_EQ(static_cast<ssize_t>(sizeof(kTestString) - 1),
             SafeSNPrintf(buf.get(), sizeof(kTestString), kTestString));
   EXPECT_EQ(std::string(kTestString), std::string(buf.get()));
@@ -369,7 +369,7 @@
 
   // Allocate slightly more space, so that we can verify that SafeSPrintf()
   // never writes past the end of the buffer.
-  scoped_ptr<char[]> tmp(new char[sz+2]);
+  std::unique_ptr<char[]> tmp(new char[sz + 2]);
   memset(tmp.get(), 'X', sz+2);
 
   // Use SafeSPrintf() to output a complex list of arguments:
@@ -383,7 +383,7 @@
   char* out = tmp.get();
   size_t out_sz = sz;
   size_t len;
-  for (scoped_ptr<char[]> perfect_buf;;) {
+  for (std::unique_ptr<char[]> perfect_buf;;) {
     size_t needed = SafeSNPrintf(out, out_sz,
 #if defined(NDEBUG)
                             "A%2cong %s: %d %010X %d %p%7s", 'l', "string", "",
diff --git a/base/strings/utf_offset_string_conversions.cc b/base/strings/utf_offset_string_conversions.cc
index 322c7a2..79c00f0 100644
--- a/base/strings/utf_offset_string_conversions.cc
+++ b/base/strings/utf_offset_string_conversions.cc
@@ -7,9 +7,9 @@
 #include <stdint.h>
 
 #include <algorithm>
+#include <memory>
 
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversion_utils.h"
 
diff --git a/base/supports_user_data.cc b/base/supports_user_data.cc
index 482a7e1..6ba3ff6 100644
--- a/base/supports_user_data.cc
+++ b/base/supports_user_data.cc
@@ -4,6 +4,8 @@
 
 #include "base/supports_user_data.h"
 
+#include "base/memory/ptr_util.h"
+
 namespace base {
 
 SupportsUserData::SupportsUserData() {
@@ -21,7 +23,7 @@
 
 void SupportsUserData::SetUserData(const void* key, Data* data) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  user_data_[key] = make_scoped_ptr(data);
+  user_data_[key] = WrapUnique(data);
 }
 
 void SupportsUserData::RemoveUserData(const void* key) {
diff --git a/base/supports_user_data.h b/base/supports_user_data.h
index ab40c1b..a9f1c93 100644
--- a/base/supports_user_data.h
+++ b/base/supports_user_data.h
@@ -6,11 +6,11 @@
 #define BASE_SUPPORTS_USER_DATA_H_
 
 #include <map>
+#include <memory>
 
 #include "base/base_export.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/threading/thread_checker.h"
 
 namespace base {
@@ -47,7 +47,7 @@
   virtual ~SupportsUserData();
 
  private:
-  using DataMap = std::map<const void*, scoped_ptr<Data>>;
+  using DataMap = std::map<const void*, std::unique_ptr<Data>>;
 
   // Externally-defined data accessible by key.
   DataMap user_data_;
diff --git a/base/synchronization/condition_variable_unittest.cc b/base/synchronization/condition_variable_unittest.cc
index 4503922..d60b2b8 100644
--- a/base/synchronization/condition_variable_unittest.cc
+++ b/base/synchronization/condition_variable_unittest.cc
@@ -4,16 +4,18 @@
 
 // Multi-threaded tests of ConditionVariable class.
 
+#include "base/synchronization/condition_variable.h"
+
 #include <time.h>
+
 #include <algorithm>
+#include <memory>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/single_thread_task_runner.h"
-#include "base/synchronization/condition_variable.h"
 #include "base/synchronization/lock.h"
 #include "base/synchronization/spin_wait.h"
 #include "base/threading/platform_thread.h"
@@ -133,7 +135,7 @@
 
   const int thread_count_;
   int waiting_thread_count_;
-  scoped_ptr<PlatformThreadHandle[]> thread_handles_;
+  std::unique_ptr<PlatformThreadHandle[]> thread_handles_;
   std::vector<int> assignment_history_;  // Number of assignment per worker.
   std::vector<int> completion_history_;  // Number of completions per worker.
   int thread_started_counter_;  // Used to issue unique id to workers.
diff --git a/base/sys_info_chromeos.cc b/base/sys_info_chromeos.cc
index e35bd0a5..3794ed9 100644
--- a/base/sys_info_chromeos.cc
+++ b/base/sys_info_chromeos.cc
@@ -60,7 +60,7 @@
     is_running_on_chromeos_ = false;
 
     std::string lsb_release, lsb_release_time_str;
-    scoped_ptr<Environment> env(Environment::Create());
+    std::unique_ptr<Environment> env(Environment::Create());
     bool parsed_from_env =
         env->GetVar(kLsbReleaseKey, &lsb_release) &&
         env->GetVar(kLsbReleaseTimeKey, &lsb_release_time_str);
@@ -212,7 +212,7 @@
 // static
 void SysInfo::SetChromeOSVersionInfoForTest(const std::string& lsb_release,
                                             const Time& lsb_release_time) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   env->SetVar(kLsbReleaseKey, lsb_release);
   env->SetVar(kLsbReleaseTimeKey,
               DoubleToString(lsb_release_time.ToDoubleT()));
diff --git a/base/sys_info_win.cc b/base/sys_info_win.cc
index e2da617..d0a77700 100644
--- a/base/sys_info_win.cc
+++ b/base/sys_info_win.cc
@@ -12,7 +12,6 @@
 
 #include "base/files/file_path.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/win/windows_version.h"
diff --git a/base/system_monitor/system_monitor_unittest.cc b/base/system_monitor/system_monitor_unittest.cc
index a874f8bf..8963f7b 100644
--- a/base/system_monitor/system_monitor_unittest.cc
+++ b/base/system_monitor/system_monitor_unittest.cc
@@ -22,7 +22,7 @@
   }
 
   MessageLoop message_loop_;
-  scoped_ptr<SystemMonitor> system_monitor_;
+  std::unique_ptr<SystemMonitor> system_monitor_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(SystemMonitorTest);
diff --git a/base/task_runner_util_unittest.cc b/base/task_runner_util_unittest.cc
index 0a4f22e..1df54362 100644
--- a/base/task_runner_util_unittest.cc
+++ b/base/task_runner_util_unittest.cc
@@ -36,13 +36,13 @@
   }
 };
 
-scoped_ptr<Foo> CreateFoo() {
-  return scoped_ptr<Foo>(new Foo);
+std::unique_ptr<Foo> CreateFoo() {
+  return std::unique_ptr<Foo>(new Foo);
 }
 
-void ExpectFoo(scoped_ptr<Foo> foo) {
+void ExpectFoo(std::unique_ptr<Foo> foo) {
   EXPECT_TRUE(foo.get());
-  scoped_ptr<Foo> local_foo(std::move(foo));
+  std::unique_ptr<Foo> local_foo(std::move(foo));
   EXPECT_TRUE(local_foo.get());
   EXPECT_FALSE(foo.get());
 }
@@ -54,13 +54,13 @@
   };
 };
 
-scoped_ptr<Foo, FooDeleter> CreateScopedFoo() {
-  return scoped_ptr<Foo, FooDeleter>(new Foo);
+std::unique_ptr<Foo, FooDeleter> CreateScopedFoo() {
+  return std::unique_ptr<Foo, FooDeleter>(new Foo);
 }
 
-void ExpectScopedFoo(scoped_ptr<Foo, FooDeleter> foo) {
+void ExpectScopedFoo(std::unique_ptr<Foo, FooDeleter> foo) {
   EXPECT_TRUE(foo.get());
-  scoped_ptr<Foo, FooDeleter> local_foo(std::move(foo));
+  std::unique_ptr<Foo, FooDeleter> local_foo(std::move(foo));
   EXPECT_TRUE(local_foo.get());
   EXPECT_FALSE(foo.get());
 }
diff --git a/base/task_scheduler/priority_queue.cc b/base/task_scheduler/priority_queue.cc
index 8eb4b86..cea62a38 100644
--- a/base/task_scheduler/priority_queue.cc
+++ b/base/task_scheduler/priority_queue.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 
 namespace base {
 namespace internal {
@@ -40,7 +41,7 @@
 }
 
 void PriorityQueue::Transaction::Push(
-    scoped_ptr<SequenceAndSortKey> sequence_and_sort_key) {
+    std::unique_ptr<SequenceAndSortKey> sequence_and_sort_key) {
   DCHECK(CalledOnValidThread());
   DCHECK(!sequence_and_sort_key->is_null());
 
@@ -81,8 +82,8 @@
 
 PriorityQueue::~PriorityQueue() = default;
 
-scoped_ptr<PriorityQueue::Transaction> PriorityQueue::BeginTransaction() {
-  return make_scoped_ptr(new Transaction(this));
+std::unique_ptr<PriorityQueue::Transaction> PriorityQueue::BeginTransaction() {
+  return WrapUnique(new Transaction(this));
 }
 
 }  // namespace internal
diff --git a/base/task_scheduler/priority_queue.h b/base/task_scheduler/priority_queue.h
index e37dae9..c87c2b7 100644
--- a/base/task_scheduler/priority_queue.h
+++ b/base/task_scheduler/priority_queue.h
@@ -5,6 +5,7 @@
 #ifndef BASE_TASK_SCHEDULER_PRIORITY_QUEUE_H_
 #define BASE_TASK_SCHEDULER_PRIORITY_QUEUE_H_
 
+#include <memory>
 #include <queue>
 #include <vector>
 
@@ -12,7 +13,6 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/task_scheduler/scheduler_lock.h"
 #include "base/task_scheduler/sequence.h"
 #include "base/task_scheduler/sequence_sort_key.h"
@@ -57,7 +57,7 @@
     ~Transaction();
 
     // Inserts |sequence_and_sort_key| in the PriorityQueue.
-    void Push(scoped_ptr<SequenceAndSortKey> sequence_and_sort_key);
+    void Push(std::unique_ptr<SequenceAndSortKey> sequence_and_sort_key);
 
     // Returns the SequenceAndSortKey with the highest priority or a null
     // SequenceAndSortKey if the PriorityQueue is empty. The reference becomes
@@ -77,7 +77,7 @@
     // Transaction. Using a scoped_ptr allows the destructor to release the lock
     // before performing internal operations which have to be done outside of
     // its scope.
-    scoped_ptr<AutoSchedulerLock> auto_lock_;
+    std::unique_ptr<AutoSchedulerLock> auto_lock_;
 
     PriorityQueue* const outer_queue_;
 
@@ -105,18 +105,18 @@
   // active Transaction unless the last Transaction created on the thread was
   // for the allowed predecessor specified in the constructor of this
   // PriorityQueue.
-  scoped_ptr<Transaction> BeginTransaction();
+  std::unique_ptr<Transaction> BeginTransaction();
 
  private:
   struct SequenceAndSortKeyComparator {
-    bool operator()(const scoped_ptr<SequenceAndSortKey>& left,
-                    const scoped_ptr<SequenceAndSortKey>& right) const {
+    bool operator()(const std::unique_ptr<SequenceAndSortKey>& left,
+                    const std::unique_ptr<SequenceAndSortKey>& right) const {
       return left->sort_key < right->sort_key;
     }
   };
   using ContainerType =
-      std::priority_queue<scoped_ptr<SequenceAndSortKey>,
-                          std::vector<scoped_ptr<SequenceAndSortKey>>,
+      std::priority_queue<std::unique_ptr<SequenceAndSortKey>,
+                          std::vector<std::unique_ptr<SequenceAndSortKey>>,
                           SequenceAndSortKeyComparator>;
 
   // Synchronizes access to |container_|.
diff --git a/base/task_scheduler/priority_queue_unittest.cc b/base/task_scheduler/priority_queue_unittest.cc
index aef95f1e..7a9fa2e 100644
--- a/base/task_scheduler/priority_queue_unittest.cc
+++ b/base/task_scheduler/priority_queue_unittest.cc
@@ -4,11 +4,13 @@
 
 #include "base/task_scheduler/priority_queue.h"
 
+#include <memory>
+
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task_scheduler/sequence.h"
 #include "base/task_scheduler/task.h"
@@ -43,7 +45,7 @@
 
   // SimpleThread:
   void Run() override {
-    scoped_ptr<PriorityQueue::Transaction> transaction =
+    std::unique_ptr<PriorityQueue::Transaction> transaction =
         priority_queue_->BeginTransaction();
     transaction_began_.Signal();
   }
@@ -82,25 +84,25 @@
 TEST(TaskSchedulerPriorityQueueTest, PushPopPeek) {
   // Create test sequences.
   scoped_refptr<Sequence> sequence_a(new Sequence);
-  sequence_a->PushTask(make_scoped_ptr(
+  sequence_a->PushTask(WrapUnique(
       new Task(FROM_HERE, Closure(),
                TaskTraits().WithPriority(TaskPriority::USER_VISIBLE))));
   SequenceSortKey sort_key_a = sequence_a->GetSortKey();
 
   scoped_refptr<Sequence> sequence_b(new Sequence);
-  sequence_b->PushTask(make_scoped_ptr(
+  sequence_b->PushTask(WrapUnique(
       new Task(FROM_HERE, Closure(),
                TaskTraits().WithPriority(TaskPriority::USER_BLOCKING))));
   SequenceSortKey sort_key_b = sequence_b->GetSortKey();
 
   scoped_refptr<Sequence> sequence_c(new Sequence);
-  sequence_c->PushTask(make_scoped_ptr(
+  sequence_c->PushTask(WrapUnique(
       new Task(FROM_HERE, Closure(),
                TaskTraits().WithPriority(TaskPriority::USER_BLOCKING))));
   SequenceSortKey sort_key_c = sequence_c->GetSortKey();
 
   scoped_refptr<Sequence> sequence_d(new Sequence);
-  sequence_d->PushTask(make_scoped_ptr(
+  sequence_d->PushTask(WrapUnique(
       new Task(FROM_HERE, Closure(),
                TaskTraits().WithPriority(TaskPriority::BACKGROUND))));
   SequenceSortKey sort_key_d = sequence_d->GetSortKey();
@@ -110,13 +112,14 @@
   PriorityQueue pq(
       Bind(&PriorityQueueCallbackMock::SequenceInsertedInPriorityQueue,
            Unretained(&mock)));
-  scoped_ptr<PriorityQueue::Transaction> transaction(pq.BeginTransaction());
+  std::unique_ptr<PriorityQueue::Transaction> transaction(
+      pq.BeginTransaction());
   EXPECT_SEQUENCE_AND_SORT_KEY_EQ(PriorityQueue::SequenceAndSortKey(),
                                   transaction->Peek());
 
   // Push |sequence_a| in the PriorityQueue. It becomes the sequence with the
   // highest priority.
-  transaction->Push(make_scoped_ptr(
+  transaction->Push(WrapUnique(
       new PriorityQueue::SequenceAndSortKey(sequence_a, sort_key_a)));
   EXPECT_SEQUENCE_AND_SORT_KEY_EQ(
       PriorityQueue::SequenceAndSortKey(sequence_a, sort_key_a),
@@ -124,7 +127,7 @@
 
   // Push |sequence_b| in the PriorityQueue. It becomes the sequence with the
   // highest priority.
-  transaction->Push(make_scoped_ptr(
+  transaction->Push(WrapUnique(
       new PriorityQueue::SequenceAndSortKey(sequence_b, sort_key_b)));
   EXPECT_SEQUENCE_AND_SORT_KEY_EQ(
       PriorityQueue::SequenceAndSortKey(sequence_b, sort_key_b),
@@ -132,7 +135,7 @@
 
   // Push |sequence_c| in the PriorityQueue. |sequence_b| is still the sequence
   // with the highest priority.
-  transaction->Push(make_scoped_ptr(
+  transaction->Push(WrapUnique(
       new PriorityQueue::SequenceAndSortKey(sequence_c, sort_key_c)));
   EXPECT_SEQUENCE_AND_SORT_KEY_EQ(
       PriorityQueue::SequenceAndSortKey(sequence_b, sort_key_b),
@@ -140,7 +143,7 @@
 
   // Push |sequence_d| in the PriorityQueue. |sequence_b| is still the sequence
   // with the highest priority.
-  transaction->Push(make_scoped_ptr(
+  transaction->Push(WrapUnique(
       new PriorityQueue::SequenceAndSortKey(sequence_d, sort_key_d)));
   EXPECT_SEQUENCE_AND_SORT_KEY_EQ(
       PriorityQueue::SequenceAndSortKey(sequence_b, sort_key_b),
@@ -186,9 +189,9 @@
 
   EXPECT_DCHECK_DEATH(
       {
-        scoped_ptr<PriorityQueue::Transaction> transaction_a =
+        std::unique_ptr<PriorityQueue::Transaction> transaction_a =
             pq_a.BeginTransaction();
-        scoped_ptr<PriorityQueue::Transaction> transaction_b =
+        std::unique_ptr<PriorityQueue::Transaction> transaction_b =
             pq_b.BeginTransaction();
       },
       "");
@@ -201,9 +204,9 @@
   PriorityQueue pq_b(Bind(&DoNothing), &pq_a);
 
   // This shouldn't crash.
-  scoped_ptr<PriorityQueue::Transaction> transaction_a =
+  std::unique_ptr<PriorityQueue::Transaction> transaction_a =
       pq_a.BeginTransaction();
-  scoped_ptr<PriorityQueue::Transaction> transaction_b =
+  std::unique_ptr<PriorityQueue::Transaction> transaction_b =
       pq_b.BeginTransaction();
 }
 
@@ -215,7 +218,8 @@
   PriorityQueue pq(Bind(&DoNothing));
 
   // Call BeginTransaction() on this thread and keep the Transaction alive.
-  scoped_ptr<PriorityQueue::Transaction> transaction = pq.BeginTransaction();
+  std::unique_ptr<PriorityQueue::Transaction> transaction =
+      pq.BeginTransaction();
 
   // Call BeginTransaction() on another thread.
   ThreadBeginningTransaction thread_beginning_transaction(&pq);
diff --git a/base/task_scheduler/scheduler_lock.h b/base/task_scheduler/scheduler_lock.h
index be7c71c63..c969eb1 100644
--- a/base/task_scheduler/scheduler_lock.h
+++ b/base/task_scheduler/scheduler_lock.h
@@ -5,9 +5,10 @@
 #ifndef BASE_TASK_SCHEDULER_SCHEDULER_LOCK_H
 #define BASE_TASK_SCHEDULER_SCHEDULER_LOCK_H
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/synchronization/lock.h"
 #include "base/task_scheduler/scheduler_lock_impl.h"
@@ -41,7 +42,7 @@
 // void AssertAcquired().
 //     DCHECKs if the lock is not acquired.
 //
-// scoped_ptr<ConditionVariable> CreateConditionVariable()
+// std::unique_ptr<ConditionVariable> CreateConditionVariable()
 //     Creates a condition variable using this as a lock.
 
 #if DCHECK_IS_ON()
@@ -57,8 +58,8 @@
   SchedulerLock() = default;
   explicit SchedulerLock(const SchedulerLock*) {}
 
-  scoped_ptr<ConditionVariable> CreateConditionVariable() {
-    return scoped_ptr<ConditionVariable>(new ConditionVariable(this));
+  std::unique_ptr<ConditionVariable> CreateConditionVariable() {
+    return std::unique_ptr<ConditionVariable>(new ConditionVariable(this));
   }
 };
 #endif  // DCHECK_IS_ON()
diff --git a/base/task_scheduler/scheduler_lock_impl.cc b/base/task_scheduler/scheduler_lock_impl.cc
index 609ea222..7480e18 100644
--- a/base/task_scheduler/scheduler_lock_impl.cc
+++ b/base/task_scheduler/scheduler_lock_impl.cc
@@ -136,8 +136,9 @@
   lock_.AssertAcquired();
 }
 
-scoped_ptr<ConditionVariable> SchedulerLockImpl::CreateConditionVariable() {
-  return scoped_ptr<ConditionVariable>(new ConditionVariable(&lock_));
+std::unique_ptr<ConditionVariable>
+SchedulerLockImpl::CreateConditionVariable() {
+  return std::unique_ptr<ConditionVariable>(new ConditionVariable(&lock_));
 }
 
 }  // namespace internal
diff --git a/base/task_scheduler/scheduler_lock_impl.h b/base/task_scheduler/scheduler_lock_impl.h
index 51826fc..65699bb3 100644
--- a/base/task_scheduler/scheduler_lock_impl.h
+++ b/base/task_scheduler/scheduler_lock_impl.h
@@ -5,9 +5,10 @@
 #ifndef BASE_TASK_SCHEDULER_SCHEDULER_LOCK_IMPL_H
 #define BASE_TASK_SCHEDULER_SCHEDULER_LOCK_IMPL_H
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/lock.h"
 
 namespace base {
@@ -31,7 +32,7 @@
 
   void AssertAcquired() const;
 
-  scoped_ptr<ConditionVariable> CreateConditionVariable();
+  std::unique_ptr<ConditionVariable> CreateConditionVariable();
 
  private:
   Lock lock_;
diff --git a/base/task_scheduler/scheduler_worker_thread.cc b/base/task_scheduler/scheduler_worker_thread.cc
index b9d3d2f..e03726a 100644
--- a/base/task_scheduler/scheduler_worker_thread.cc
+++ b/base/task_scheduler/scheduler_worker_thread.cc
@@ -14,16 +14,17 @@
 namespace base {
 namespace internal {
 
-scoped_ptr<SchedulerWorkerThread>
+std::unique_ptr<SchedulerWorkerThread>
 SchedulerWorkerThread::CreateSchedulerWorkerThread(
     ThreadPriority thread_priority,
     const Closure& main_entry_callback,
     const GetWorkCallback& get_work_callback,
     const RanTaskFromSequenceCallback& ran_task_from_sequence_callback,
     TaskTracker* task_tracker) {
-  scoped_ptr<SchedulerWorkerThread> worker_thread(new SchedulerWorkerThread(
-      thread_priority, main_entry_callback, get_work_callback,
-      ran_task_from_sequence_callback, task_tracker));
+  std::unique_ptr<SchedulerWorkerThread> worker_thread(
+      new SchedulerWorkerThread(thread_priority, main_entry_callback,
+                                get_work_callback,
+                                ran_task_from_sequence_callback, task_tracker));
 
   if (worker_thread->thread_handle_.is_null())
     return nullptr;
diff --git a/base/task_scheduler/scheduler_worker_thread.h b/base/task_scheduler/scheduler_worker_thread.h
index 908eaed..8b129a3 100644
--- a/base/task_scheduler/scheduler_worker_thread.h
+++ b/base/task_scheduler/scheduler_worker_thread.h
@@ -5,11 +5,12 @@
 #ifndef BASE_TASK_SCHEDULER_SCHEDULER_WORKER_THREAD_H_
 #define BASE_TASK_SCHEDULER_SCHEDULER_WORKER_THREAD_H_
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task_scheduler/scheduler_lock.h"
 #include "base/task_scheduler/sequence.h"
@@ -49,7 +50,7 @@
   // SchedulerWorkerThread has tried to run a Task from a Sequence returned by
   // |get_work_callback|. |task_tracker| is used to handle shutdown behavior of
   // Tasks. Returns nullptr if creating the underlying platform thread fails.
-  static scoped_ptr<SchedulerWorkerThread> CreateSchedulerWorkerThread(
+  static std::unique_ptr<SchedulerWorkerThread> CreateSchedulerWorkerThread(
       ThreadPriority thread_priority,
       const Closure& main_entry_callback,
       const GetWorkCallback& get_work_callback,
diff --git a/base/task_scheduler/scheduler_worker_thread_unittest.cc b/base/task_scheduler/scheduler_worker_thread_unittest.cc
index 9d9866e..fcccda1 100644
--- a/base/task_scheduler/scheduler_worker_thread_unittest.cc
+++ b/base/task_scheduler/scheduler_worker_thread_unittest.cc
@@ -6,12 +6,13 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/task_scheduler/scheduler_lock.h"
 #include "base/task_scheduler/sequence.h"
@@ -98,7 +99,7 @@
     return num_get_work_callback_;
   }
 
-  scoped_ptr<SchedulerWorkerThread> worker_thread_;
+  std::unique_ptr<SchedulerWorkerThread> worker_thread_;
 
  private:
   void MainEntryCallback() {
@@ -130,7 +131,7 @@
     scoped_refptr<Sequence> sequence(new Sequence);
     task_tracker_.PostTask(
         Bind(IgnoreResult(&Sequence::PushTask), Unretained(sequence.get())),
-        make_scoped_ptr(new Task(
+        WrapUnique(new Task(
             FROM_HERE, Bind(&TaskSchedulerWorkerThreadTest::RunTaskCallback,
                             Unretained(this)),
             TaskTraits())));
@@ -167,7 +168,7 @@
   size_t num_main_entry_callback_ = 0;
 
   // Condition variable signaled when |num_main_entry_callback_| is incremented.
-  scoped_ptr<ConditionVariable> num_main_entry_callback_cv_;
+  std::unique_ptr<ConditionVariable> num_main_entry_callback_cv_;
 
   // Number of Sequences that should be created by GetWorkCallback(). When this
   // is 0, GetWorkCallback() returns nullptr.
@@ -177,7 +178,7 @@
   size_t num_get_work_callback_ = 0;
 
   // Condition variable signaled when |num_get_work_callback_| is incremented.
-  scoped_ptr<ConditionVariable> num_get_work_callback_cv_;
+  std::unique_ptr<ConditionVariable> num_get_work_callback_cv_;
 
   // Sequences created by GetWorkCallback().
   std::vector<scoped_refptr<Sequence>> created_sequences_;
@@ -186,7 +187,7 @@
   std::vector<scoped_refptr<Sequence>> run_sequences_;
 
   // Condition variable signaled when a Sequence is added to |run_sequences_|.
-  scoped_ptr<ConditionVariable> run_sequences_cv_;
+  std::unique_ptr<ConditionVariable> run_sequences_cv_;
 
   // Number of times that RunTaskCallback() has been called.
   size_t num_run_tasks_ = 0;
diff --git a/base/task_scheduler/sequence.cc b/base/task_scheduler/sequence.cc
index a05c8025..4ecb6056 100644
--- a/base/task_scheduler/sequence.cc
+++ b/base/task_scheduler/sequence.cc
@@ -14,7 +14,7 @@
 
 Sequence::Sequence() = default;
 
-bool Sequence::PushTask(scoped_ptr<Task> task) {
+bool Sequence::PushTask(std::unique_ptr<Task> task) {
   DCHECK(task->sequenced_time.is_null());
   task->sequenced_time = base::TimeTicks::Now();
 
diff --git a/base/task_scheduler/sequence.h b/base/task_scheduler/sequence.h
index e86cf591..b77576b4 100644
--- a/base/task_scheduler/sequence.h
+++ b/base/task_scheduler/sequence.h
@@ -7,12 +7,12 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <queue>
 
 #include "base/base_export.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/task_scheduler/scheduler_lock.h"
 #include "base/task_scheduler/sequence_sort_key.h"
 #include "base/task_scheduler/task.h"
@@ -29,7 +29,7 @@
 
   // Adds |task| at the end of the sequence's queue. Returns true if the
   // sequence was empty before this operation.
-  bool PushTask(scoped_ptr<Task> task);
+  bool PushTask(std::unique_ptr<Task> task);
 
   // Returns the task in front of the sequence's queue, if any.
   const Task* PeekTask() const;
@@ -51,7 +51,7 @@
   mutable SchedulerLock lock_;
 
   // Queue of tasks to execute.
-  std::queue<scoped_ptr<Task>> queue_;
+  std::queue<std::unique_ptr<Task>> queue_;
 
   // Number of tasks contained in the sequence for each priority.
   size_t num_tasks_per_priority_[static_cast<int>(TaskPriority::HIGHEST) + 1] =
diff --git a/base/task_scheduler/sequence_unittest.cc b/base/task_scheduler/sequence_unittest.cc
index d81fece..17826a0 100644
--- a/base/task_scheduler/sequence_unittest.cc
+++ b/base/task_scheduler/sequence_unittest.cc
@@ -44,11 +44,11 @@
 
  protected:
   // Tasks to be handed off to a Sequence for testing.
-  scoped_ptr<Task> task_a_owned_;
-  scoped_ptr<Task> task_b_owned_;
-  scoped_ptr<Task> task_c_owned_;
-  scoped_ptr<Task> task_d_owned_;
-  scoped_ptr<Task> task_e_owned_;
+  std::unique_ptr<Task> task_a_owned_;
+  std::unique_ptr<Task> task_b_owned_;
+  std::unique_ptr<Task> task_c_owned_;
+  std::unique_ptr<Task> task_d_owned_;
+  std::unique_ptr<Task> task_e_owned_;
 
   // Raw pointers to those same tasks for verification. This is needed because
   // the scoped_ptrs above no longer point to the tasks once they have been
diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc
index 4f15b9e..50922bbc 100644
--- a/base/task_scheduler/task_tracker.cc
+++ b/base/task_scheduler/task_tracker.cc
@@ -59,8 +59,8 @@
 }
 
 void TaskTracker::PostTask(
-    const Callback<void(scoped_ptr<Task>)>& post_task_callback,
-    scoped_ptr<Task> task) {
+    const Callback<void(std::unique_ptr<Task>)>& post_task_callback,
+    std::unique_ptr<Task> task) {
   DCHECK(!post_task_callback.is_null());
   DCHECK(task);
 
diff --git a/base/task_scheduler/task_tracker.h b/base/task_scheduler/task_tracker.h
index 5b9fd141..811bd9a 100644
--- a/base/task_scheduler/task_tracker.h
+++ b/base/task_scheduler/task_tracker.h
@@ -5,10 +5,11 @@
 #ifndef BASE_TASK_SCHEDULER_TASK_TRACKER_H_
 #define BASE_TASK_SCHEDULER_TASK_TRACKER_H_
 
+#include <memory>
+
 #include "base/base_export.h"
 #include "base/callback_forward.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/task_scheduler/scheduler_lock.h"
@@ -37,8 +38,8 @@
   // Posts |task| by calling |post_task_callback| unless the current shutdown
   // state prevents that. A task forwarded to |post_task_callback| must be
   // handed back to this instance's RunTask() when it is to be executed.
-  void PostTask(const Callback<void(scoped_ptr<Task>)>& post_task_callback,
-                scoped_ptr<Task> task);
+  void PostTask(const Callback<void(std::unique_ptr<Task>)>& post_task_callback,
+                std::unique_ptr<Task> task);
 
   // Runs |task| unless the current shutdown state prevents that. |task| must
   // have been successfully posted via PostTask() first.
@@ -75,7 +76,7 @@
 
   // Condition variable signaled when |num_tasks_blocking_shutdown_| reaches
   // zero while shutdown is in progress. Null if shutdown isn't in progress.
-  scoped_ptr<ConditionVariable> shutdown_cv_;
+  std::unique_ptr<ConditionVariable> shutdown_cv_;
 
   // Number of tasks blocking shutdown.
   size_t num_tasks_blocking_shutdown_ = 0;
diff --git a/base/task_scheduler/task_tracker_unittest.cc b/base/task_scheduler/task_tracker_unittest.cc
index 7235a8a8..2a08bc1 100644
--- a/base/task_scheduler/task_tracker_unittest.cc
+++ b/base/task_scheduler/task_tracker_unittest.cc
@@ -4,12 +4,13 @@
 
 #include "base/task_scheduler/task_tracker.h"
 
+#include <memory>
 #include <queue>
 
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task_scheduler/task.h"
 #include "base/task_scheduler/task_traits.h"
@@ -67,8 +68,8 @@
   TaskSchedulerTaskTrackerTest() = default;
 
   // Creates a task with |shutdown_behavior|.
-  scoped_ptr<Task> CreateTask(TaskShutdownBehavior shutdown_behavior) {
-    return make_scoped_ptr(new Task(
+  std::unique_ptr<Task> CreateTask(TaskShutdownBehavior shutdown_behavior) {
+    return WrapUnique(new Task(
         FROM_HERE,
         Bind(&TaskSchedulerTaskTrackerTest::RunTaskCallback, Unretained(this)),
         TaskTraits().WithShutdownBehavior(shutdown_behavior)));
@@ -76,7 +77,7 @@
 
   // Tries to post |task| via |tracker_|. If |tracker_| approves the operation,
   // |task| is added to |posted_tasks_|.
-  void PostTaskViaTracker(scoped_ptr<Task> task) {
+  void PostTaskViaTracker(std::unique_ptr<Task> task) {
     tracker_.PostTask(
         Bind(&TaskSchedulerTaskTrackerTest::PostTaskCallback, Unretained(this)),
         std::move(task));
@@ -118,16 +119,16 @@
 
   TaskTracker tracker_;
   size_t num_tasks_executed_ = 0;
-  std::queue<scoped_ptr<Task>> posted_tasks_;
+  std::queue<std::unique_ptr<Task>> posted_tasks_;
 
  private:
-  void PostTaskCallback(scoped_ptr<Task> task) {
+  void PostTaskCallback(std::unique_ptr<Task> task) {
     posted_tasks_.push(std::move(task));
   }
 
   void RunTaskCallback() { ++num_tasks_executed_; }
 
-  scoped_ptr<ThreadCallingShutdown> thread_calling_shutdown_;
+  std::unique_ptr<ThreadCallingShutdown> thread_calling_shutdown_;
 
   DISALLOW_COPY_AND_ASSIGN(TaskSchedulerTaskTrackerTest);
 };
@@ -147,7 +148,7 @@
 }  // namespace
 
 TEST_P(TaskSchedulerTaskTrackerTest, PostAndRunBeforeShutdown) {
-  scoped_ptr<Task> task_to_post(CreateTask(GetParam()));
+  std::unique_ptr<Task> task_to_post(CreateTask(GetParam()));
   const Task* task_to_post_raw = task_to_post.get();
 
   // Post the task.
@@ -169,7 +170,7 @@
   // Post a task that will block until |event| is signaled.
   EXPECT_TRUE(posted_tasks_.empty());
   WaitableEvent event(false, false);
-  PostTaskViaTracker(make_scoped_ptr(
+  PostTaskViaTracker(WrapUnique(
       new Task(FROM_HERE, Bind(&WaitableEvent::Wait, Unretained(&event)),
                TaskTraits().WithShutdownBehavior(GetParam()))));
   EXPECT_EQ(1U, posted_tasks_.size());
@@ -199,7 +200,7 @@
 }
 
 TEST_P(TaskSchedulerTaskTrackerTest, PostBeforeShutdownRunDuringShutdown) {
-  scoped_ptr<Task> task_to_post(CreateTask(GetParam()));
+  std::unique_ptr<Task> task_to_post(CreateTask(GetParam()));
   const Task* task_to_post_raw = task_to_post.get();
 
   // Post the task.
@@ -231,7 +232,7 @@
 }
 
 TEST_P(TaskSchedulerTaskTrackerTest, PostBeforeShutdownRunAfterShutdown) {
-  scoped_ptr<Task> task_to_post(CreateTask(GetParam()));
+  std::unique_ptr<Task> task_to_post(CreateTask(GetParam()));
   const Task* task_to_post_raw = task_to_post.get();
 
   // Post the task.
@@ -267,7 +268,7 @@
 TEST_P(TaskSchedulerTaskTrackerTest, PostAndRunDuringShutdown) {
   // Post a BLOCK_SHUTDOWN task just to block shutdown.
   PostTaskViaTracker(CreateTask(TaskShutdownBehavior::BLOCK_SHUTDOWN));
-  scoped_ptr<Task> block_shutdown_task = std::move(posted_tasks_.front());
+  std::unique_ptr<Task> block_shutdown_task = std::move(posted_tasks_.front());
   posted_tasks_.pop();
 
   // Call Shutdown() asynchronously.
diff --git a/base/test/gtest_util.cc b/base/test/gtest_util.cc
index 8ad54364..b0623432 100644
--- a/base/test/gtest_util.cc
+++ b/base/test/gtest_util.cc
@@ -64,7 +64,7 @@
   JSONFileValueDeserializer deserializer(path);
   int error_code = 0;
   std::string error_message;
-  scoped_ptr<base::Value> value =
+  std::unique_ptr<base::Value> value =
       deserializer.Deserialize(&error_code, &error_message);
   if (!value.get())
     return false;
diff --git a/base/test/histogram_tester.cc b/base/test/histogram_tester.cc
index 5fb01fba..27cb673 100644
--- a/base/test/histogram_tester.cc
+++ b/base/test/histogram_tester.cc
@@ -43,7 +43,8 @@
       << "Histogram \"" << name << "\" does not exist.";
 
   if (histogram) {
-    scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples());
+    std::unique_ptr<base::HistogramSamples> samples(
+        histogram->SnapshotSamples());
     CheckBucketCount(name, sample, expected_count, *samples);
     CheckTotalCount(name, expected_count, *samples);
   }
@@ -59,7 +60,8 @@
       << "Histogram \"" << name << "\" does not exist.";
 
   if (histogram) {
-    scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples());
+    std::unique_ptr<base::HistogramSamples> samples(
+        histogram->SnapshotSamples());
     CheckBucketCount(name, sample, expected_count, *samples);
   }
 }
@@ -69,7 +71,8 @@
   base::HistogramBase* histogram =
       base::StatisticsRecorder::FindHistogram(name);
   if (histogram) {
-    scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples());
+    std::unique_ptr<base::HistogramSamples> samples(
+        histogram->SnapshotSamples());
     CheckTotalCount(name, count, *samples);
   } else {
     // No histogram means there were zero samples.
@@ -80,7 +83,7 @@
 std::vector<Bucket> HistogramTester::GetAllSamples(
     const std::string& name) const {
   std::vector<Bucket> samples;
-  scoped_ptr<HistogramSamples> snapshot =
+  std::unique_ptr<HistogramSamples> snapshot =
       GetHistogramSamplesSinceCreation(name);
   if (snapshot) {
     for (auto it = snapshot->Iterator(); !it->Done(); it->Next()) {
@@ -105,7 +108,7 @@
 
   CountsMap result;
   for (base::HistogramBase* histogram : query_matches) {
-    scoped_ptr<HistogramSamples> new_samples =
+    std::unique_ptr<HistogramSamples> new_samples =
         GetHistogramSamplesSinceCreation(histogram->histogram_name());
     // Omit unchanged histograms from the result.
     if (new_samples->TotalCount()) {
@@ -115,7 +118,8 @@
   return result;
 }
 
-scoped_ptr<HistogramSamples> HistogramTester::GetHistogramSamplesSinceCreation(
+std::unique_ptr<HistogramSamples>
+HistogramTester::GetHistogramSamplesSinceCreation(
     const std::string& histogram_name) const {
   HistogramBase* histogram = StatisticsRecorder::FindHistogram(histogram_name);
   // Whether the histogram exists or not may not depend on the current test
@@ -125,10 +129,10 @@
   // creates empty samples in the absence of the histogram, rather than
   // returning null.
   if (!histogram) {
-    return scoped_ptr<HistogramSamples>(
+    return std::unique_ptr<HistogramSamples>(
         new SampleMap(HashMetricName(histogram_name)));
   }
-  scoped_ptr<HistogramSamples> named_samples(histogram->SnapshotSamples());
+  std::unique_ptr<HistogramSamples> named_samples(histogram->SnapshotSamples());
   auto original_samples_it = histograms_snapshot_.find(histogram_name);
   if (original_samples_it != histograms_snapshot_.end())
     named_samples->Subtract(*original_samples_it->second);
diff --git a/base/test/histogram_tester.h b/base/test/histogram_tester.h
index 604ba836..f11f8543 100644
--- a/base/test/histogram_tester.h
+++ b/base/test/histogram_tester.h
@@ -6,13 +6,13 @@
 #define BASE_TEST_HISTOGRAM_TESTER_H_
 
 #include <map>
+#include <memory>
 #include <ostream>
 #include <string>
 #include <utility>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_base.h"
 
@@ -93,7 +93,7 @@
 
   // Access a modified HistogramSamples containing only what has been logged
   // to the histogram since the creation of this object.
-  scoped_ptr<HistogramSamples> GetHistogramSamplesSinceCreation(
+  std::unique_ptr<HistogramSamples> GetHistogramSamplesSinceCreation(
       const std::string& histogram_name) const;
 
  private:
diff --git a/base/test/histogram_tester_unittest.cc b/base/test/histogram_tester_unittest.cc
index 21b8170..c4d49af 100644
--- a/base/test/histogram_tester_unittest.cc
+++ b/base/test/histogram_tester_unittest.cc
@@ -4,7 +4,8 @@
 
 #include "base/test/histogram_tester.h"
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/histogram_samples.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -40,7 +41,7 @@
   UMA_HISTOGRAM_BOOLEAN(kHistogram1, true);
 
   // Verify that one histogram is recorded.
-  scoped_ptr<HistogramSamples> samples(
+  std::unique_ptr<HistogramSamples> samples(
       tester.GetHistogramSamplesSinceCreation(kHistogram1));
   EXPECT_TRUE(samples);
   EXPECT_EQ(1, samples->TotalCount());
@@ -54,7 +55,7 @@
   HistogramTester tester;
 
   // Verify that the returned samples are empty but not null.
-  scoped_ptr<HistogramSamples> samples(
+  std::unique_ptr<HistogramSamples> samples(
       tester.GetHistogramSamplesSinceCreation(kHistogram1));
   EXPECT_TRUE(samples);
   tester.ExpectTotalCount(kHistogram, 0);
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc
index 65471c7..df5ca0a 100644
--- a/base/test/launcher/test_launcher.cc
+++ b/base/test/launcher/test_launcher.cc
@@ -4,6 +4,8 @@
 
 #include "base/test/launcher/test_launcher.h"
 
+#include <memory>
+
 #include "base/at_exit.h"
 #include "base/bind.h"
 #include "base/command_line.h"
@@ -17,7 +19,6 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/process/kill.h"
 #include "base/process/launch.h"
@@ -170,7 +171,7 @@
 // true.  If it is set, unsets it then converts it to Int32 before
 // returning it in |result|.  Returns true on success.
 bool TakeInt32FromEnvironment(const char* const var, int32_t* result) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   std::string str_val;
 
   if (!env->GetVar(var, &str_val))
@@ -192,7 +193,7 @@
 // Unsets the environment variable |name| and returns true on success.
 // Also returns true if the variable just doesn't exist.
 bool UnsetEnvironmentVariableIfExists(const std::string& name) {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   std::string str_val;
 
   if (!env->GetVar(name.c_str(), &str_val))
@@ -205,7 +206,7 @@
 // for continuous integration bots. This way developers don't have to remember
 // special command-line flags.
 bool BotModeEnabled() {
-  scoped_ptr<Environment> env(Environment::Create());
+  std::unique_ptr<Environment> env(Environment::Create());
   return CommandLine::ForCurrentProcess()->HasSwitch(
       switches::kTestLauncherBotMode) ||
       env->HasVar("CHROMIUM_TEST_LAUNCHER_BOT_MODE");
diff --git a/base/test/launcher/test_launcher.h b/base/test/launcher/test_launcher.h
index c311fed..38980cf 100644
--- a/base/test/launcher/test_launcher.h
+++ b/base/test/launcher/test_launcher.h
@@ -228,7 +228,7 @@
   size_t parallel_jobs_;
 
   // Worker pool used to launch processes in parallel.
-  scoped_ptr<SequencedWorkerPoolOwner> worker_pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> worker_pool_owner_;
 
   DISALLOW_COPY_AND_ASSIGN(TestLauncher);
 };
diff --git a/base/test/launcher/test_results_tracker.cc b/base/test/launcher/test_results_tracker.cc
index 813e8e4..ab7d9a2 100644
--- a/base/test/launcher/test_results_tracker.cc
+++ b/base/test/launcher/test_results_tracker.cc
@@ -224,41 +224,42 @@
 }
 
 bool TestResultsTracker::SaveSummaryAsJSON(const FilePath& path) const {
-  scoped_ptr<DictionaryValue> summary_root(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> summary_root(new DictionaryValue);
 
-  scoped_ptr<ListValue> global_tags(new ListValue);
+  std::unique_ptr<ListValue> global_tags(new ListValue);
   for (const auto& global_tag : global_tags_) {
     global_tags->AppendString(global_tag);
   }
   summary_root->Set("global_tags", std::move(global_tags));
 
-  scoped_ptr<ListValue> all_tests(new ListValue);
+  std::unique_ptr<ListValue> all_tests(new ListValue);
   for (const auto& test : all_tests_) {
     all_tests->AppendString(test);
   }
   summary_root->Set("all_tests", std::move(all_tests));
 
-  scoped_ptr<ListValue> disabled_tests(new ListValue);
+  std::unique_ptr<ListValue> disabled_tests(new ListValue);
   for (const auto& disabled_test : disabled_tests_) {
     disabled_tests->AppendString(disabled_test);
   }
   summary_root->Set("disabled_tests", std::move(disabled_tests));
 
-  scoped_ptr<ListValue> per_iteration_data(new ListValue);
+  std::unique_ptr<ListValue> per_iteration_data(new ListValue);
 
   for (int i = 0; i <= iteration_; i++) {
-    scoped_ptr<DictionaryValue> current_iteration_data(new DictionaryValue);
+    std::unique_ptr<DictionaryValue> current_iteration_data(
+        new DictionaryValue);
 
     for (PerIterationData::ResultsMap::const_iterator j =
              per_iteration_data_[i].results.begin();
          j != per_iteration_data_[i].results.end();
          ++j) {
-      scoped_ptr<ListValue> test_results(new ListValue);
+      std::unique_ptr<ListValue> test_results(new ListValue);
 
       for (size_t k = 0; k < j->second.test_results.size(); k++) {
         const TestResult& test_result = j->second.test_results[k];
 
-        scoped_ptr<DictionaryValue> test_result_value(new DictionaryValue);
+        std::unique_ptr<DictionaryValue> test_result_value(new DictionaryValue);
 
         test_result_value->SetString("status", test_result.StatusAsString());
         test_result_value->SetInteger(
diff --git a/base/test/test_discardable_memory_allocator.cc b/base/test/test_discardable_memory_allocator.cc
index 0f8e8ce3..cd96149a 100644
--- a/base/test/test_discardable_memory_allocator.cc
+++ b/base/test/test_discardable_memory_allocator.cc
@@ -9,6 +9,7 @@
 
 #include "base/logging.h"
 #include "base/memory/discardable_memory.h"
+#include "base/memory/ptr_util.h"
 
 namespace base {
 namespace {
@@ -46,7 +47,7 @@
 
  private:
   bool is_locked_ = true;
-  scoped_ptr<uint8_t[]> data_;
+  std::unique_ptr<uint8_t[]> data_;
   size_t size_;
 };
 
@@ -58,9 +59,9 @@
 TestDiscardableMemoryAllocator::~TestDiscardableMemoryAllocator() {
 }
 
-scoped_ptr<DiscardableMemory>
+std::unique_ptr<DiscardableMemory>
 TestDiscardableMemoryAllocator::AllocateLockedDiscardableMemory(size_t size) {
-  return make_scoped_ptr(new DiscardableMemoryImpl(size));
+  return WrapUnique(new DiscardableMemoryImpl(size));
 }
 
 }  // namespace base
diff --git a/base/test/test_discardable_memory_allocator.h b/base/test/test_discardable_memory_allocator.h
index 142b328..a6a4351f 100644
--- a/base/test/test_discardable_memory_allocator.h
+++ b/base/test/test_discardable_memory_allocator.h
@@ -21,7 +21,7 @@
   ~TestDiscardableMemoryAllocator() override;
 
   // Overridden from DiscardableMemoryAllocator:
-  scoped_ptr<DiscardableMemory> AllocateLockedDiscardableMemory(
+  std::unique_ptr<DiscardableMemory> AllocateLockedDiscardableMemory(
       size_t size) override;
 
  private:
diff --git a/base/test/test_mock_time_task_runner.cc b/base/test/test_mock_time_task_runner.cc
index 655a674..7dca3a9 100644
--- a/base/test/test_mock_time_task_runner.cc
+++ b/base/test/test_mock_time_task_runner.cc
@@ -6,6 +6,7 @@
 
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/time/clock.h"
 #include "base/time/tick_clock.h"
@@ -162,14 +163,14 @@
   return now_ticks_;
 }
 
-scoped_ptr<Clock> TestMockTimeTaskRunner::GetMockClock() const {
+std::unique_ptr<Clock> TestMockTimeTaskRunner::GetMockClock() const {
   DCHECK(thread_checker_.CalledOnValidThread());
-  return make_scoped_ptr(new MockClock(this));
+  return WrapUnique(new MockClock(this));
 }
 
-scoped_ptr<TickClock> TestMockTimeTaskRunner::GetMockTickClock() const {
+std::unique_ptr<TickClock> TestMockTimeTaskRunner::GetMockTickClock() const {
   DCHECK(thread_checker_.CalledOnValidThread());
-  return make_scoped_ptr(new MockTickClock(this));
+  return WrapUnique(new MockTickClock(this));
 }
 
 bool TestMockTimeTaskRunner::HasPendingTask() const {
diff --git a/base/test/test_mock_time_task_runner.h b/base/test/test_mock_time_task_runner.h
index 7a71e011..624f739 100644
--- a/base/test/test_mock_time_task_runner.h
+++ b/base/test/test_mock_time_task_runner.h
@@ -7,11 +7,11 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <queue>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
 #include "base/test/test_pending_task.h"
@@ -77,11 +77,11 @@
 
   // Returns a Clock that uses the virtual time of |this| as its time source.
   // The returned Clock will hold a reference to |this|.
-  scoped_ptr<Clock> GetMockClock() const;
+  std::unique_ptr<Clock> GetMockClock() const;
 
   // Returns a TickClock that uses the virtual time ticks of |this| as its tick
   // source. The returned TickClock will hold a reference to |this|.
-  scoped_ptr<TickClock> GetMockTickClock() const;
+  std::unique_ptr<TickClock> GetMockTickClock() const;
 
   bool HasPendingTask() const;
   size_t GetPendingTaskCount() const;
diff --git a/base/test/test_pending_task.cc b/base/test/test_pending_task.cc
index d912df4..87b107e 100644
--- a/base/test/test_pending_task.cc
+++ b/base/test/test_pending_task.cc
@@ -52,9 +52,9 @@
   state->SetInteger("delay", delay.ToInternalValue());
 }
 
-scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
 TestPendingTask::AsValue() const {
-  scoped_ptr<base::trace_event::TracedValue> state(
+  std::unique_ptr<base::trace_event::TracedValue> state(
       new base::trace_event::TracedValue());
   AsValueInto(state.get());
   return std::move(state);
diff --git a/base/test/test_pending_task.h b/base/test/test_pending_task.h
index 3b299614..2dbdb7e 100644
--- a/base/test/test_pending_task.h
+++ b/base/test/test_pending_task.h
@@ -59,7 +59,7 @@
   // Functions for using test pending task with tracing, useful in unit
   // testing.
   void AsValueInto(base::trace_event::TracedValue* state) const;
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const;
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const;
   std::string ToString() const;
 };
 
diff --git a/base/test/test_pending_task_unittest.cc b/base/test/test_pending_task_unittest.cc
index 39a6a43..6e01c8c6 100644
--- a/base/test/test_pending_task_unittest.cc
+++ b/base/test/test_pending_task_unittest.cc
@@ -19,7 +19,7 @@
   TRACE_EVENT1("test", "TestPendingTask::TraceSupport", "task", task.AsValue());
 
   // Just a basic check that the trace output has *something* in it.
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat> task_value(
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat> task_value(
       task.AsValue());
   EXPECT_THAT(task_value->ToString(), ::testing::HasSubstr("post_time"));
 }
diff --git a/base/test/test_reg_util_win.cc b/base/test/test_reg_util_win.cc
index 83c7fe67..d6706f9 100644
--- a/base/test/test_reg_util_win.cc
+++ b/base/test/test_reg_util_win.cc
@@ -8,6 +8,7 @@
 
 #include "base/guid.h"
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
@@ -100,7 +101,7 @@
 void RegistryOverrideManager::OverrideRegistry(HKEY override) {
   base::string16 key_path = GenerateTempKeyPath(test_key_root_, timestamp_);
   overrides_.push_back(
-      make_scoped_ptr(new ScopedRegistryKeyOverride(override, key_path)));
+      base::WrapUnique(new ScopedRegistryKeyOverride(override, key_path)));
 }
 
 base::string16 GenerateTempKeyPath() {
diff --git a/base/test/test_reg_util_win.h b/base/test/test_reg_util_win.h
index 69f5fdde..587e28f 100644
--- a/base/test/test_reg_util_win.h
+++ b/base/test/test_reg_util_win.h
@@ -6,10 +6,10 @@
 #define BASE_TEST_TEST_REG_UTIL_WIN_H_
 
 // Registry utility functions used only by tests.
+#include <memory>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "base/time/time.h"
 #include "base/win/registry.h"
@@ -64,7 +64,7 @@
   base::string16 guid_;
 
   base::string16 test_key_root_;
-  std::vector<scoped_ptr<ScopedRegistryKeyOverride>> overrides_;
+  std::vector<std::unique_ptr<ScopedRegistryKeyOverride>> overrides_;
 
   DISALLOW_COPY_AND_ASSIGN(RegistryOverrideManager);
 };
diff --git a/base/test/test_reg_util_win_unittest.cc b/base/test/test_reg_util_win_unittest.cc
index c38baa3..299acbb0a 100644
--- a/base/test/test_reg_util_win_unittest.cc
+++ b/base/test/test_reg_util_win_unittest.cc
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/test/test_reg_util_win.h"
+
+#include <memory>
+
 #include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/test_reg_util_win.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -68,7 +70,7 @@
   }
 
   base::string16 fake_test_key_root_;
-  scoped_ptr<RegistryOverrideManager> manager_;
+  std::unique_ptr<RegistryOverrideManager> manager_;
 };
 
 TEST_F(RegistryOverrideManagerTest, Basic) {
diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc
index 74bd9ddf..81ea744 100644
--- a/base/test/test_suite.cc
+++ b/base/test/test_suite.cc
@@ -4,6 +4,8 @@
 
 #include "base/test/test_suite.h"
 
+#include <memory>
+
 #include "base/at_exit.h"
 #include "base/base_paths.h"
 #include "base/base_switches.h"
@@ -17,7 +19,7 @@
 #include "base/i18n/icu_util.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/path_service.h"
 #include "base/process/launch.h"
 #include "base/process/memory.h"
@@ -98,14 +100,15 @@
                          Bind(&TestSuite::Run, Unretained(&test_suite)));
 }
 
-TestSuite::TestSuite(int argc, char** argv) : initialized_command_line_(false) {
+TestSuite::TestSuite(int argc, char** argv)
+    : initialized_command_line_(false), created_feature_list_(false) {
   PreInitialize();
   InitializeFromCommandLine(argc, argv);
 }
 
 #if defined(OS_WIN)
 TestSuite::TestSuite(int argc, wchar_t** argv)
-    : initialized_command_line_(false) {
+    : initialized_command_line_(false), created_feature_list_(false) {
   PreInitialize();
   InitializeFromCommandLine(argc, argv);
 }
@@ -224,15 +227,8 @@
   test_listener_ios::RegisterTestEndListener();
 #endif
 
-  // Set up a FeatureList instance, so that code using that API will not hit a
-  // an error that it's not set. Cleared by ClearInstanceForTesting() below.
-  base::FeatureList::SetInstance(make_scoped_ptr(new base::FeatureList));
-
   int result = RUN_ALL_TESTS();
 
-  // Clear the FeatureList that was registered above.
-  FeatureList::ClearInstanceForTesting();
-
 #if defined(OS_MACOSX)
   // This MUST happen before Shutdown() since Shutdown() tears down
   // objects (such as NotificationService::current()) that Cocoa
@@ -294,6 +290,13 @@
   }
 #endif
 
+  // Set up a FeatureList instance, so that code using that API will not hit a
+  // an error that it's not set. If a FeatureList was created in this way (i.e.
+  // one didn't exist previously), it will be cleared in Shutdown() via
+  // ClearInstanceForTesting().
+  created_feature_list_ =
+      FeatureList::InitializeInstance(std::string(), std::string());
+
 #if defined(OS_IOS)
   InitIOSTestMessageLoop();
 #endif  // OS_IOS
@@ -362,6 +365,9 @@
 }
 
 void TestSuite::Shutdown() {
+  // Clear the FeatureList that was created by Initialize().
+  if (created_feature_list_)
+    FeatureList::ClearInstanceForTesting();
 }
 
 }  // namespace base
diff --git a/base/test/test_suite.h b/base/test/test_suite.h
index 68590eb..590a18c 100644
--- a/base/test/test_suite.h
+++ b/base/test/test_suite.h
@@ -9,11 +9,11 @@
 // instantiate this class in your main function and call its Run method to run
 // any gtest based tests that are linked into your executable.
 
+#include <memory>
 #include <string>
 
 #include "base/at_exit.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/test/trace_to_file.h"
 #include "build/build_config.h"
 
@@ -67,7 +67,7 @@
 
   // Make sure that we setup an AtExitManager so Singleton objects will be
   // destroyed.
-  scoped_ptr<base::AtExitManager> at_exit_manager_;
+  std::unique_ptr<base::AtExitManager> at_exit_manager_;
 
  private:
   void InitializeFromCommandLine(int argc, char** argv);
@@ -82,6 +82,8 @@
 
   bool initialized_command_line_;
 
+  bool created_feature_list_;
+
   DISALLOW_COPY_AND_ASSIGN(TestSuite);
 };
 
diff --git a/base/test/test_support_android.cc b/base/test/test_support_android.cc
index a8cadec9..08a2820 100644
--- a/base/test/test_support_android.cc
+++ b/base/test/test_support_android.cc
@@ -127,8 +127,8 @@
   }
 };
 
-scoped_ptr<base::MessagePump> CreateMessagePumpForUIStub() {
-  return scoped_ptr<base::MessagePump>(new MessagePumpForUIStub());
+std::unique_ptr<base::MessagePump> CreateMessagePumpForUIStub() {
+  return std::unique_ptr<base::MessagePump>(new MessagePumpForUIStub());
 };
 
 // Provides the test path for DIR_MODULE and DIR_ANDROID_APP_DATA.
diff --git a/base/test/test_support_ios.mm b/base/test/test_support_ios.mm
index 9e82612..bf4bd265 100644
--- a/base/test/test_support_ios.mm
+++ b/base/test/test_support_ios.mm
@@ -179,9 +179,9 @@
 
 namespace {
 
-scoped_ptr<base::MessagePump> CreateMessagePumpForUIForTests() {
+std::unique_ptr<base::MessagePump> CreateMessagePumpForUIForTests() {
   // A default MessagePump will do quite nicely in tests.
-  return scoped_ptr<base::MessagePump>(new base::MessagePumpDefault());
+  return std::unique_ptr<base::MessagePump>(new base::MessagePumpDefault());
 }
 
 }  // namespace
diff --git a/base/test/trace_event_analyzer.cc b/base/test/trace_event_analyzer.cc
index 18bfe38..64436dc 100644
--- a/base/test/trace_event_analyzer.cc
+++ b/base/test/trace_event_analyzer.cc
@@ -7,10 +7,10 @@
 #include <math.h>
 
 #include <algorithm>
+#include <memory>
 #include <set>
 
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/pattern.h"
 #include "base/values.h"
 
@@ -144,7 +144,7 @@
 }
 
 bool TraceEvent::GetArgAsValue(const std::string& name,
-                               scoped_ptr<base::Value>* arg) const {
+                               std::unique_ptr<base::Value>* arg) const {
   const auto it = arg_values.find(name);
   if (it != arg_values.end()) {
     *arg = it->second->CreateDeepCopy();
@@ -193,9 +193,9 @@
   return (arg_double != 0.0);
 }
 
-scoped_ptr<base::Value> TraceEvent::GetKnownArgAsValue(
+std::unique_ptr<base::Value> TraceEvent::GetKnownArgAsValue(
     const std::string& name) const {
-  scoped_ptr<base::Value> arg_value;
+  std::unique_ptr<base::Value> arg_value;
   bool result = GetArgAsValue(name, &arg_value);
   DCHECK(result);
   return arg_value;
@@ -679,7 +679,7 @@
 
 bool ParseEventsFromJson(const std::string& json,
                          std::vector<TraceEvent>* output) {
-  scoped_ptr<base::Value> root = base::JSONReader::Read(json);
+  std::unique_ptr<base::Value> root = base::JSONReader::Read(json);
 
   base::ListValue* root_list = NULL;
   if (!root.get() || !root->GetAsList(&root_list))
@@ -712,7 +712,7 @@
 
 // static
 TraceAnalyzer* TraceAnalyzer::Create(const std::string& json_events) {
-  scoped_ptr<TraceAnalyzer> analyzer(new TraceAnalyzer());
+  std::unique_ptr<TraceAnalyzer> analyzer(new TraceAnalyzer());
   if (analyzer->SetEvents(json_events))
     return analyzer.release();
   return NULL;
diff --git a/base/test/trace_event_analyzer.h b/base/test/trace_event_analyzer.h
index 8087ec5..0e2366b 100644
--- a/base/test/trace_event_analyzer.h
+++ b/base/test/trace_event_analyzer.h
@@ -135,7 +135,7 @@
   bool GetArgAsNumber(const std::string& name, double* arg) const;
   // Return the argument value if it exists.
   bool GetArgAsValue(const std::string& name,
-                     scoped_ptr<base::Value>* arg) const;
+                     std::unique_ptr<base::Value>* arg) const;
 
   // Check if argument exists and is string.
   bool HasStringArg(const std::string& name) const;
@@ -151,7 +151,8 @@
   double GetKnownArgAsDouble(const std::string& name) const;
   int GetKnownArgAsInt(const std::string& name) const;
   bool GetKnownArgAsBool(const std::string& name) const;
-  scoped_ptr<base::Value> GetKnownArgAsValue(const std::string& name) const;
+  std::unique_ptr<base::Value> GetKnownArgAsValue(
+      const std::string& name) const;
 
   // Process ID and Thread ID.
   ProcessThreadID thread;
@@ -169,7 +170,7 @@
   // bool becomes 1.0 (true) or 0.0 (false).
   std::map<std::string, double> arg_numbers;
   std::map<std::string, std::string> arg_strings;
-  std::map<std::string, scoped_ptr<base::Value>> arg_values;
+  std::map<std::string, std::unique_ptr<base::Value>> arg_values;
 
   // The other event associated with this event (or NULL).
   const TraceEvent* other_event;
diff --git a/base/test/trace_event_analyzer_unittest.cc b/base/test/trace_event_analyzer_unittest.cc
index b133cae..e73dd65b 100644
--- a/base/test/trace_event_analyzer_unittest.cc
+++ b/base/test/trace_event_analyzer_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/test/trace_event_analyzer.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
 #include "base/bind.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/test/trace_event_analyzer.h"
 #include "base/threading/platform_thread.h"
 #include "base/trace_event/trace_buffer.h"
 #include "base/trace_event/trace_event_argument.h"
@@ -76,8 +78,8 @@
   buffer_.Start();
   buffer_.Finish();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
 
   // Search for all events and verify that nothing is returned.
@@ -99,7 +101,7 @@
   event.arg_numbers["int"] = static_cast<double>(int_num);
   event.arg_numbers["double"] = double_num;
   event.arg_strings["string"] = str;
-  event.arg_values["dict"] = make_scoped_ptr(new base::DictionaryValue());
+  event.arg_values["dict"] = WrapUnique(new base::DictionaryValue());
 
   ASSERT_TRUE(event.HasNumberArg("false"));
   ASSERT_TRUE(event.HasNumberArg("true"));
@@ -117,7 +119,7 @@
   EXPECT_EQ(double_num, event.GetKnownArgAsDouble("double"));
   EXPECT_STREQ(str, event.GetKnownArgAsString("string").c_str());
 
-  scoped_ptr<base::Value> arg;
+  std::unique_ptr<base::Value> arg;
   EXPECT_TRUE(event.GetArgAsValue("dict", &arg));
   EXPECT_EQ(base::Value::TYPE_DICTIONARY, arg->GetType());
 }
@@ -235,8 +237,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer);
   analyzer->SetIgnoreMetadataEvents(true);
 
@@ -326,8 +328,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
 
   TraceEventVector found;
@@ -381,8 +383,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->SetIgnoreMetadataEvents(true);
 
@@ -431,8 +433,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateBeginEndEvents();
 
@@ -473,8 +475,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateBeginEndEvents();
 
@@ -505,8 +507,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateBeginEndEvents();
 
@@ -528,8 +530,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateBeginEndEvents();
 
@@ -561,8 +563,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateAsyncBeginEndEvents();
 
@@ -593,8 +595,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
   analyzer->AssociateAsyncBeginEndEvents();
 
@@ -646,8 +648,8 @@
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer>
-      analyzer(TraceAnalyzer::Create(output_.json_output));
+  std::unique_ptr<TraceAnalyzer> analyzer(
+      TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
 
   // begin, end, and match queries to find proper begin/end pairs.
@@ -920,14 +922,14 @@
 
   BeginTracing();
   {
-    scoped_ptr<base::trace_event::TracedValue> value(
+    std::unique_ptr<base::trace_event::TracedValue> value(
         new base::trace_event::TracedValue);
     value->SetString("property", "value");
     TRACE_EVENT1("cat", "name", "arg", std::move(value));
   }
   EndTracing();
 
-  scoped_ptr<TraceAnalyzer> analyzer(
+  std::unique_ptr<TraceAnalyzer> analyzer(
       TraceAnalyzer::Create(output_.json_output));
   ASSERT_TRUE(analyzer.get());
 
@@ -939,7 +941,7 @@
   EXPECT_EQ("name", events[0]->name);
   EXPECT_TRUE(events[0]->HasArg("arg"));
 
-  scoped_ptr<base::Value> arg;
+  std::unique_ptr<base::Value> arg;
   events[0]->GetArgAsValue("arg", &arg);
   base::DictionaryValue* arg_dict;
   EXPECT_TRUE(arg->GetAsDictionary(&arg_dict));
diff --git a/base/test/values_test_util.cc b/base/test/values_test_util.cc
index f974c14..6c1ee7d 100644
--- a/base/test/values_test_util.cc
+++ b/base/test/values_test_util.cc
@@ -4,8 +4,9 @@
 
 #include "base/test/values_test_util.h"
 
+#include <memory>
+
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -54,7 +55,7 @@
 
 void ExpectStringValue(const std::string& expected_str,
                        StringValue* actual) {
-  scoped_ptr<StringValue> scoped_actual(actual);
+  std::unique_ptr<StringValue> scoped_actual(actual);
   std::string actual_str;
   EXPECT_TRUE(scoped_actual->GetAsString(&actual_str));
   EXPECT_EQ(expected_str, actual_str);
@@ -62,9 +63,9 @@
 
 namespace test {
 
-scoped_ptr<Value> ParseJson(base::StringPiece json) {
+std::unique_ptr<Value> ParseJson(base::StringPiece json) {
   std::string error_msg;
-  scoped_ptr<Value> result = base::JSONReader::ReadAndReturnError(
+  std::unique_ptr<Value> result = base::JSONReader::ReadAndReturnError(
       json, base::JSON_ALLOW_TRAILING_COMMAS, NULL, &error_msg);
   if (!result) {
     ADD_FAILURE() << "Failed to parse \"" << json << "\": " << error_msg;
diff --git a/base/test/values_test_util.h b/base/test/values_test_util.h
index 86d91c3..886c17d 100644
--- a/base/test/values_test_util.h
+++ b/base/test/values_test_util.h
@@ -5,9 +5,9 @@
 #ifndef BASE_TEST_VALUES_TEST_UTIL_H_
 #define BASE_TEST_VALUES_TEST_UTIL_H_
 
+#include <memory>
 #include <string>
 
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
 
 namespace base {
@@ -48,7 +48,7 @@
 // Parses |json| as JSON, allowing trailing commas, and returns the
 // resulting value.  If the json fails to parse, causes an EXPECT
 // failure and returns the Null Value (but never a NULL pointer).
-scoped_ptr<Value> ParseJson(base::StringPiece json);
+std::unique_ptr<Value> ParseJson(base::StringPiece json);
 
 }  // namespace test
 }  // namespace base
diff --git a/base/threading/non_thread_safe_unittest.cc b/base/threading/non_thread_safe_unittest.cc
index 2a27c3fb..d523fc5 100644
--- a/base/threading/non_thread_safe_unittest.cc
+++ b/base/threading/non_thread_safe_unittest.cc
@@ -2,10 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/threading/non_thread_safe.h"
+
+#include <memory>
+
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/threading/non_thread_safe.h"
 #include "base/threading/simple_thread.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -72,7 +74,7 @@
   void Run() override { non_thread_safe_class_.reset(); }
 
  private:
-  scoped_ptr<NonThreadSafeClass> non_thread_safe_class_;
+  std::unique_ptr<NonThreadSafeClass> non_thread_safe_class_;
 
   DISALLOW_COPY_AND_ASSIGN(DeleteNonThreadSafeClassOnThread);
 };
@@ -80,7 +82,7 @@
 }  // namespace
 
 TEST(NonThreadSafeTest, CallsAllowedOnSameThread) {
-  scoped_ptr<NonThreadSafeClass> non_thread_safe_class(
+  std::unique_ptr<NonThreadSafeClass> non_thread_safe_class(
       new NonThreadSafeClass);
 
   // Verify that DoStuff doesn't assert.
@@ -91,7 +93,7 @@
 }
 
 TEST(NonThreadSafeTest, DetachThenDestructOnDifferentThread) {
-  scoped_ptr<NonThreadSafeClass> non_thread_safe_class(
+  std::unique_ptr<NonThreadSafeClass> non_thread_safe_class(
       new NonThreadSafeClass);
 
   // Verify that the destructor doesn't assert when called on a different thread
@@ -107,7 +109,7 @@
 #if GTEST_HAS_DEATH_TEST || !ENABLE_NON_THREAD_SAFE
 
 void NonThreadSafeClass::MethodOnDifferentThreadImpl() {
-  scoped_ptr<NonThreadSafeClass> non_thread_safe_class(
+  std::unique_ptr<NonThreadSafeClass> non_thread_safe_class(
       new NonThreadSafeClass);
 
   // Verify that DoStuff asserts in debug builds only when called
@@ -131,7 +133,7 @@
 #endif  // ENABLE_NON_THREAD_SAFE
 
 void NonThreadSafeClass::DestructorOnDifferentThreadImpl() {
-  scoped_ptr<NonThreadSafeClass> non_thread_safe_class(
+  std::unique_ptr<NonThreadSafeClass> non_thread_safe_class(
       new NonThreadSafeClass);
 
   // Verify that the destructor asserts in debug builds only
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc
index bd6ae2dc..d8bcf923 100644
--- a/base/threading/platform_thread_posix.cc
+++ b/base/threading/platform_thread_posix.cc
@@ -12,9 +12,10 @@
 #include <sys/resource.h>
 #include <sys/time.h>
 
+#include <memory>
+
 #include "base/lazy_instance.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/threading/platform_thread_internal_posix.h"
 #include "base/threading/thread_id_name_manager.h"
 #include "base/threading/thread_restrictions.h"
@@ -47,7 +48,8 @@
   PlatformThread::Delegate* delegate = nullptr;
 
   {
-    scoped_ptr<ThreadParams> thread_params(static_cast<ThreadParams*>(params));
+    std::unique_ptr<ThreadParams> thread_params(
+        static_cast<ThreadParams*>(params));
 
     delegate = thread_params->delegate;
     if (!thread_params->joinable)
@@ -98,7 +100,7 @@
   if (stack_size > 0)
     pthread_attr_setstacksize(&attributes, stack_size);
 
-  scoped_ptr<ThreadParams> params(new ThreadParams);
+  std::unique_ptr<ThreadParams> params(new ThreadParams);
   params->delegate = delegate;
   params->joinable = joinable;
   params->priority = priority;
diff --git a/base/threading/sequenced_task_runner_handle_unittest.cc b/base/threading/sequenced_task_runner_handle_unittest.cc
index 1e624f4..ad7d70c 100644
--- a/base/threading/sequenced_task_runner_handle_unittest.cc
+++ b/base/threading/sequenced_task_runner_handle_unittest.cc
@@ -2,18 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/threading/sequenced_task_runner_handle.h"
+
+#include <memory>
+
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/sequence_checker_impl.h"
 #include "base/sequenced_task_runner.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/sequenced_worker_pool_owner.h"
-#include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/sequenced_worker_pool.h"
 #include "base/threading/simple_thread.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -30,7 +32,8 @@
     ASSERT_TRUE(task_runner);
 
     // Use SequenceCheckerImpl to make sure it's not a no-op in Release builds.
-    scoped_ptr<SequenceCheckerImpl> sequence_checker(new SequenceCheckerImpl);
+    std::unique_ptr<SequenceCheckerImpl> sequence_checker(
+        new SequenceCheckerImpl);
     task_runner->PostTask(
         FROM_HERE,
         base::Bind(&SequencedTaskRunnerHandleTest::CheckValidSequence,
@@ -39,7 +42,7 @@
 
  private:
   static void CheckValidSequence(
-      scoped_ptr<SequenceCheckerImpl> sequence_checker,
+      std::unique_ptr<SequenceCheckerImpl> sequence_checker,
       const Closure& callback) {
     EXPECT_TRUE(sequence_checker->CalledOnValidSequencedThread());
     callback.Run();
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc
index 086f54b..24a0751 100644
--- a/base/threading/sequenced_worker_pool.cc
+++ b/base/threading/sequenced_worker_pool.cc
@@ -8,6 +8,7 @@
 
 #include <list>
 #include <map>
+#include <memory>
 #include <set>
 #include <utility>
 #include <vector>
@@ -19,7 +20,7 @@
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/condition_variable.h"
@@ -445,7 +446,7 @@
   // Owning pointers to all threads we've created so far, indexed by
   // ID. Since we lazily create threads, this may be less than
   // max_threads_ and will be initially empty.
-  using ThreadMap = std::map<PlatformThreadId, scoped_ptr<Worker>>;
+  using ThreadMap = std::map<PlatformThreadId, std::unique_ptr<Worker>>;
   ThreadMap threads_;
 
   // Set to true when we're in the process of creating another thread.
@@ -786,7 +787,7 @@
     DCHECK(thread_being_created_);
     thread_being_created_ = false;
     auto result = threads_.insert(
-        std::make_pair(this_worker->tid(), make_scoped_ptr(this_worker)));
+        std::make_pair(this_worker->tid(), WrapUnique(this_worker)));
     DCHECK(result.second);
 
     while (true) {
diff --git a/base/threading/sequenced_worker_pool.h b/base/threading/sequenced_worker_pool.h
index ba0e444..cbec395 100644
--- a/base/threading/sequenced_worker_pool.h
+++ b/base/threading/sequenced_worker_pool.h
@@ -8,13 +8,13 @@
 #include <stddef.h>
 
 #include <cstddef>
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/task_runner.h"
 
@@ -374,7 +374,7 @@
 
   // Avoid pulling in too many headers by putting (almost) everything
   // into |inner_|.
-  const scoped_ptr<Inner> inner_;
+  const std::unique_ptr<Inner> inner_;
 
   DISALLOW_COPY_AND_ASSIGN(SequencedWorkerPool);
 };
diff --git a/base/threading/sequenced_worker_pool_unittest.cc b/base/threading/sequenced_worker_pool_unittest.cc
index a0be607..58dc317 100644
--- a/base/threading/sequenced_worker_pool_unittest.cc
+++ b/base/threading/sequenced_worker_pool_unittest.cc
@@ -7,12 +7,12 @@
 #include <stddef.h>
 
 #include <algorithm>
+#include <memory>
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/sequence_checker_impl.h"
 #include "base/stl_util.h"
@@ -294,7 +294,7 @@
 
  private:
   MessageLoop message_loop_;
-  scoped_ptr<SequencedWorkerPoolOwner> pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> pool_owner_;
   const scoped_refptr<TestTracker> tracker_;
 };
 
@@ -1067,7 +1067,7 @@
 
  private:
   MessageLoop message_loop_;
-  scoped_ptr<SequencedWorkerPoolOwner> pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> pool_owner_;
 };
 
 INSTANTIATE_TYPED_TEST_CASE_P(
@@ -1105,7 +1105,7 @@
 
  private:
   MessageLoop message_loop_;
-  scoped_ptr<SequencedWorkerPoolOwner> pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> pool_owner_;
   scoped_refptr<TaskRunner> task_runner_;
 };
 
@@ -1145,7 +1145,7 @@
 
  private:
   MessageLoop message_loop_;
-  scoped_ptr<SequencedWorkerPoolOwner> pool_owner_;
+  std::unique_ptr<SequencedWorkerPoolOwner> pool_owner_;
   scoped_refptr<SequencedTaskRunner> task_runner_;
 };
 
diff --git a/base/threading/thread.cc b/base/threading/thread.cc
index 1d2ae64..5863130 100644
--- a/base/threading/thread.cc
+++ b/base/threading/thread.cc
@@ -104,8 +104,8 @@
     type = MessageLoop::TYPE_CUSTOM;
 
   message_loop_timer_slack_ = options.timer_slack;
-  scoped_ptr<MessageLoop> message_loop = MessageLoop::CreateUnbound(
-      type, options.message_pump_factory);
+  std::unique_ptr<MessageLoop> message_loop =
+      MessageLoop::CreateUnbound(type, options.message_pump_factory);
   message_loop_ = message_loop.get();
   start_event_.Reset();
 
@@ -227,13 +227,13 @@
 
   // Lazily initialize the message_loop so that it can run on this thread.
   DCHECK(message_loop_);
-  scoped_ptr<MessageLoop> message_loop(message_loop_);
+  std::unique_ptr<MessageLoop> message_loop(message_loop_);
   message_loop_->BindToCurrentThread();
   message_loop_->set_thread_name(name_);
   message_loop_->SetTimerSlack(message_loop_timer_slack_);
 
 #if defined(OS_WIN)
-  scoped_ptr<win::ScopedCOMInitializer> com_initializer;
+  std::unique_ptr<win::ScopedCOMInitializer> com_initializer;
   if (com_status_ != NONE) {
     com_initializer.reset((com_status_ == STA) ?
         new win::ScopedCOMInitializer() :
diff --git a/base/threading/thread.h b/base/threading/thread.h
index ec19722..c9a77d73 100644
--- a/base/threading/thread.h
+++ b/base/threading/thread.h
@@ -7,12 +7,12 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/callback.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/message_loop/timer_slack.h"
 #include "base/single_thread_task_runner.h"
@@ -41,7 +41,7 @@
 class BASE_EXPORT Thread : PlatformThread::Delegate {
  public:
   struct BASE_EXPORT Options {
-    typedef Callback<scoped_ptr<MessagePump>()> MessagePumpFactory;
+    typedef Callback<std::unique_ptr<MessagePump>()> MessagePumpFactory;
 
     Options();
     Options(MessageLoop::Type type, size_t size);
diff --git a/base/threading/thread_checker_unittest.cc b/base/threading/thread_checker_unittest.cc
index fd98f76..bc5b1e47 100644
--- a/base/threading/thread_checker_unittest.cc
+++ b/base/threading/thread_checker_unittest.cc
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/threading/thread_checker.h"
+
+#include <memory>
+
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/threading/simple_thread.h"
-#include "base/threading/thread_checker.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 // Duplicated from base/threading/thread_checker.h so that we can be
@@ -72,7 +74,7 @@
   void Run() override { thread_checker_class_.reset(); }
 
  private:
-  scoped_ptr<ThreadCheckerClass> thread_checker_class_;
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class_;
 
   DISALLOW_COPY_AND_ASSIGN(DeleteThreadCheckerClassOnThread);
 };
@@ -80,7 +82,7 @@
 }  // namespace
 
 TEST(ThreadCheckerTest, CallsAllowedOnSameThread) {
-  scoped_ptr<ThreadCheckerClass> thread_checker_class(
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class(
       new ThreadCheckerClass);
 
   // Verify that DoStuff doesn't assert.
@@ -91,7 +93,7 @@
 }
 
 TEST(ThreadCheckerTest, DestructorAllowedOnDifferentThread) {
-  scoped_ptr<ThreadCheckerClass> thread_checker_class(
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class(
       new ThreadCheckerClass);
 
   // Verify that the destructor doesn't assert
@@ -104,7 +106,7 @@
 }
 
 TEST(ThreadCheckerTest, DetachFromThread) {
-  scoped_ptr<ThreadCheckerClass> thread_checker_class(
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class(
       new ThreadCheckerClass);
 
   // Verify that DoStuff doesn't assert when called on a different thread after
@@ -119,7 +121,7 @@
 #if GTEST_HAS_DEATH_TEST || !ENABLE_THREAD_CHECKER
 
 void ThreadCheckerClass::MethodOnDifferentThreadImpl() {
-  scoped_ptr<ThreadCheckerClass> thread_checker_class(
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class(
       new ThreadCheckerClass);
 
   // DoStuff should assert in debug builds only when called on a
@@ -143,7 +145,7 @@
 #endif  // ENABLE_THREAD_CHECKER
 
 void ThreadCheckerClass::DetachThenCallFromDifferentThreadImpl() {
-  scoped_ptr<ThreadCheckerClass> thread_checker_class(
+  std::unique_ptr<ThreadCheckerClass> thread_checker_class(
       new ThreadCheckerClass);
 
   // DoStuff doesn't assert when called on a different thread
diff --git a/base/threading/thread_collision_warner_unittest.cc b/base/threading/thread_collision_warner_unittest.cc
index 79ca7e2..71447ef 100644
--- a/base/threading/thread_collision_warner_unittest.cc
+++ b/base/threading/thread_collision_warner_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/threading/thread_collision_warner.h"
+
+#include <memory>
+
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/synchronization/lock.h"
 #include "base/threading/platform_thread.h"
 #include "base/threading/simple_thread.h"
-#include "base/threading/thread_collision_warner.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 // '' : local class member function does not have a body
@@ -19,7 +21,7 @@
 
 // Would cause a memory leak otherwise.
 #undef DFAKE_MUTEX
-#define DFAKE_MUTEX(obj) scoped_ptr<base::AsserterBase> obj
+#define DFAKE_MUTEX(obj) std::unique_ptr<base::AsserterBase> obj
 
 // In Release, we expect the AsserterBase::warn() to not happen.
 #define EXPECT_NDEBUG_FALSE_DEBUG_TRUE EXPECT_FALSE
diff --git a/base/threading/worker_pool_posix.h b/base/threading/worker_pool_posix.h
index f8971ac..628e2b6 100644
--- a/base/threading/worker_pool_posix.h
+++ b/base/threading/worker_pool_posix.h
@@ -24,6 +24,7 @@
 #ifndef BASE_THREADING_WORKER_POOL_POSIX_H_
 #define BASE_THREADING_WORKER_POOL_POSIX_H_
 
+#include <memory>
 #include <queue>
 #include <string>
 
@@ -31,7 +32,6 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/pending_task.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/synchronization/lock.h"
@@ -88,7 +88,7 @@
   bool terminated_;
   // Only used for tests to ensure correct thread ordering.  It will always be
   // NULL in non-test code.
-  scoped_ptr<ConditionVariable> num_idle_threads_cv_;
+  std::unique_ptr<ConditionVariable> num_idle_threads_cv_;
 
   DISALLOW_COPY_AND_ASSIGN(PosixDynamicThreadPool);
 };
diff --git a/base/timer/hi_res_timer_manager_unittest.cc b/base/timer/hi_res_timer_manager_unittest.cc
index 9416048..a0b0f93 100644
--- a/base/timer/hi_res_timer_manager_unittest.cc
+++ b/base/timer/hi_res_timer_manager_unittest.cc
@@ -4,9 +4,9 @@
 
 #include "base/timer/hi_res_timer_manager.h"
 
+#include <memory>
 #include <utility>
 
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/power_monitor/power_monitor.h"
 #include "base/power_monitor/power_monitor_device_source.h"
@@ -22,9 +22,9 @@
   // Windows, which makes this test flaky if you run while the machine
   // goes in or out of AC power.
   base::MessageLoop loop(base::MessageLoop::TYPE_UI);
-  scoped_ptr<base::PowerMonitorSource> power_monitor_source(
+  std::unique_ptr<base::PowerMonitorSource> power_monitor_source(
       new base::PowerMonitorDeviceSource());
-  scoped_ptr<base::PowerMonitor> power_monitor(
+  std::unique_ptr<base::PowerMonitor> power_monitor(
       new base::PowerMonitor(std::move(power_monitor_source)));
 
   HighResolutionTimerManager manager;
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc
index b1d3c3e..e56efac 100644
--- a/base/timer/timer_unittest.cc
+++ b/base/timer/timer_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/timer/timer.h"
+
 #include <stddef.h>
 
+#include <memory>
+
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/test/test_simple_task_runner.h"
-#include "base/timer/timer.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -78,7 +80,7 @@
   }
 
   bool* did_run_;
-  scoped_ptr<base::OneShotTimer> timer_;
+  std::unique_ptr<base::OneShotTimer> timer_;
 };
 
 class RepeatingTimerTester {
diff --git a/base/trace_event/blame_context.cc b/base/trace_event/blame_context.cc
index 0bf7896..27d2d2e 100644
--- a/base/trace_event/blame_context.cc
+++ b/base/trace_event/blame_context.cc
@@ -57,12 +57,13 @@
   DCHECK(WasInitialized());
   if (!*category_group_enabled_)
     return;
-  scoped_ptr<trace_event::TracedValue> snapshot(new trace_event::TracedValue);
+  std::unique_ptr<trace_event::TracedValue> snapshot(
+      new trace_event::TracedValue);
   AsValueInto(snapshot.get());
   static const char* kArgName = "snapshot";
   const int kNumArgs = 1;
   unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE};
-  scoped_ptr<trace_event::ConvertableToTraceFormat> arg_values[1] = {
+  std::unique_ptr<trace_event::ConvertableToTraceFormat> arg_values[1] = {
       std::move(snapshot)};
   TRACE_EVENT_API_ADD_TRACE_EVENT(TRACE_EVENT_PHASE_SNAPSHOT_OBJECT,
                                   category_group_enabled_, type_, scope_, id_,
diff --git a/base/trace_event/blame_context_unittest.cc b/base/trace_event/blame_context_unittest.cc
index 7217d8f..3ecf3e3 100644
--- a/base/trace_event/blame_context_unittest.cc
+++ b/base/trace_event/blame_context_unittest.cc
@@ -5,6 +5,7 @@
 #include "base/trace_event/blame_context.h"
 
 #include "base/json/json_writer.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/run_loop.h"
 #include "base/test/trace_event_analyzer.h"
@@ -71,7 +72,7 @@
  public:
   void StartTracing();
   void StopTracing();
-  scoped_ptr<trace_analyzer::TraceAnalyzer> CreateTraceAnalyzer();
+  std::unique_ptr<trace_analyzer::TraceAnalyzer> CreateTraceAnalyzer();
 };
 
 void BlameContextTest::StartTracing() {
@@ -83,7 +84,7 @@
   trace_event::TraceLog::GetInstance()->SetDisabled();
 }
 
-scoped_ptr<trace_analyzer::TraceAnalyzer>
+std::unique_ptr<trace_analyzer::TraceAnalyzer>
 BlameContextTest::CreateTraceAnalyzer() {
   trace_event::TraceResultBuffer buffer;
   trace_event::TraceResultBuffer::SimpleOutput trace_output;
@@ -95,7 +96,7 @@
   run_loop.Run();
   buffer.Finish();
 
-  return make_scoped_ptr(
+  return WrapUnique(
       trace_analyzer::TraceAnalyzer::Create(trace_output.json_output));
 }
 
@@ -109,7 +110,8 @@
     blame_context.Leave();
   }
   StopTracing();
-  scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer = CreateTraceAnalyzer();
+  std::unique_ptr<trace_analyzer::TraceAnalyzer> analyzer =
+      CreateTraceAnalyzer();
 
   trace_analyzer::TraceEventVector events;
   Query q = Query::EventPhaseIs(TRACE_EVENT_PHASE_ENTER_CONTEXT) ||
@@ -143,7 +145,8 @@
     disabled_blame_context.Leave();
   }
   StopTracing();
-  scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer = CreateTraceAnalyzer();
+  std::unique_ptr<trace_analyzer::TraceAnalyzer> analyzer =
+      CreateTraceAnalyzer();
 
   trace_analyzer::TraceEventVector events;
   Query q = Query::EventPhaseIs(TRACE_EVENT_PHASE_ENTER_CONTEXT) ||
@@ -173,7 +176,8 @@
     blame_context.TakeSnapshot();
   }
   StopTracing();
-  scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer = CreateTraceAnalyzer();
+  std::unique_ptr<trace_analyzer::TraceAnalyzer> analyzer =
+      CreateTraceAnalyzer();
 
   trace_analyzer::TraceEventVector events;
   Query q = Query::EventPhaseIs(TRACE_EVENT_PHASE_SNAPSHOT_OBJECT);
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h
index 0b549d4..7a1533ed8 100644
--- a/base/trace_event/common/trace_event_common.h
+++ b/base/trace_event/common/trace_event_common.h
@@ -156,7 +156,7 @@
 //   };
 //
 //   TRACE_EVENT1("foo", "bar", "data",
-//                scoped_ptr<ConvertableToTraceFormat>(new MyData()));
+//                std::unique_ptr<ConvertableToTraceFormat>(new MyData()));
 //
 // The trace framework will take ownership if the passed pointer and it will
 // be free'd when the trace buffer is flushed.
diff --git a/base/trace_event/heap_profiler_heap_dump_writer.cc b/base/trace_event/heap_profiler_heap_dump_writer.cc
index b94c312..fe99e48 100644
--- a/base/trace_event/heap_profiler_heap_dump_writer.cc
+++ b/base/trace_event/heap_profiler_heap_dump_writer.cc
@@ -248,9 +248,9 @@
   return entries_;
 }
 
-scoped_ptr<TracedValue> Serialize(const std::set<Entry>& entries) {
+std::unique_ptr<TracedValue> Serialize(const std::set<Entry>& entries) {
   std::string buffer;
-  scoped_ptr<TracedValue> traced_value(new TracedValue);
+  std::unique_ptr<TracedValue> traced_value(new TracedValue);
 
   traced_value->BeginArray("entries");
 
@@ -289,7 +289,7 @@
 
 }  // namespace internal
 
-scoped_ptr<TracedValue> ExportHeapDump(
+std::unique_ptr<TracedValue> ExportHeapDump(
     const hash_map<AllocationContext, size_t>& bytes_by_size,
     StackFrameDeduplicator* stack_frame_deduplicator,
     TypeNameDeduplicator* type_name_deduplicator) {
diff --git a/base/trace_event/heap_profiler_heap_dump_writer.h b/base/trace_event/heap_profiler_heap_dump_writer.h
index e6cf93b..fa24b2b 100644
--- a/base/trace_event/heap_profiler_heap_dump_writer.h
+++ b/base/trace_event/heap_profiler_heap_dump_writer.h
@@ -7,12 +7,12 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <set>
 
 #include "base/base_export.h"
 #include "base/containers/hash_tables.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/heap_profiler_allocation_context.h"
 
 namespace base {
@@ -26,7 +26,7 @@
 // a traced value with an "entries" array that can be dumped in the trace log,
 // following the format described in https://goo.gl/KY7zVE. The number of
 // entries is kept reasonable because long tails are not included.
-BASE_EXPORT scoped_ptr<TracedValue> ExportHeapDump(
+BASE_EXPORT std::unique_ptr<TracedValue> ExportHeapDump(
     const hash_map<AllocationContext, size_t>& bytes_by_context,
     StackFrameDeduplicator* stack_frame_deduplicator,
     TypeNameDeduplicator* type_name_deduplicator);
@@ -54,7 +54,7 @@
 BASE_EXPORT bool operator<(Entry lhs, Entry rhs);
 
 // Serializes entries to an "entries" array in a traced value.
-BASE_EXPORT scoped_ptr<TracedValue> Serialize(const std::set<Entry>& dump);
+BASE_EXPORT std::unique_ptr<TracedValue> Serialize(const std::set<Entry>& dump);
 
 // Helper class to dump a snapshot of an |AllocationRegister| or other heap
 // bookkeeping structure into a |TracedValue|. This class is intended to be
diff --git a/base/trace_event/heap_profiler_heap_dump_writer_unittest.cc b/base/trace_event/heap_profiler_heap_dump_writer_unittest.cc
index fefd3466..894de69 100644
--- a/base/trace_event/heap_profiler_heap_dump_writer_unittest.cc
+++ b/base/trace_event/heap_profiler_heap_dump_writer_unittest.cc
@@ -2,16 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/trace_event/heap_profiler_heap_dump_writer.h"
+
 #include <stddef.h>
 
+#include <memory>
 #include <set>
 #include <string>
 
 #include "base/json/json_reader.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/trace_event/heap_profiler_allocation_context.h"
-#include "base/trace_event/heap_profiler_heap_dump_writer.h"
 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h"
 #include "base/trace_event/heap_profiler_type_name_deduplicator.h"
 #include "base/trace_event/trace_event_argument.h"
@@ -38,18 +40,18 @@
 namespace trace_event {
 namespace internal {
 
-scoped_ptr<const Value> WriteAndReadBack(const std::set<Entry>& entries) {
-  scoped_ptr<TracedValue> traced_value = Serialize(entries);
+std::unique_ptr<const Value> WriteAndReadBack(const std::set<Entry>& entries) {
+  std::unique_ptr<TracedValue> traced_value = Serialize(entries);
   std::string json;
   traced_value->AppendAsTraceFormat(&json);
   return JSONReader::Read(json);
 }
 
-scoped_ptr<const DictionaryValue> WriteAndReadBackEntry(Entry entry) {
+std::unique_ptr<const DictionaryValue> WriteAndReadBackEntry(Entry entry) {
   std::set<Entry> input_entries;
   input_entries.insert(entry);
 
-  scoped_ptr<const Value> json_dict = WriteAndReadBack(input_entries);
+  std::unique_ptr<const Value> json_dict = WriteAndReadBack(input_entries);
 
   // Note: Ideally these should use |ASSERT_TRUE| instead of |EXPECT_TRUE|, but
   // |ASSERT_TRUE| can only be used in void functions.
@@ -106,7 +108,8 @@
   entry.type_id = 0;
   entry.size = 1;
 
-  scoped_ptr<const DictionaryValue> json_entry = WriteAndReadBackEntry(entry);
+  std::unique_ptr<const DictionaryValue> json_entry =
+      WriteAndReadBackEntry(entry);
 
   // For an empty backtrace, the "bt" key cannot reference a stack frame.
   // Instead it should be set to the empty string.
@@ -127,7 +130,8 @@
   entry.stack_frame_id = 0;
   entry.size = 1;
 
-  scoped_ptr<const DictionaryValue> json_entry = WriteAndReadBackEntry(entry);
+  std::unique_ptr<const DictionaryValue> json_entry =
+      WriteAndReadBackEntry(entry);
 
   // Entries for the cumulative size of all types should not have the "type"
   // key set.
@@ -153,7 +157,8 @@
   entry.stack_frame_id = 0;
   entry.size = large_value;
 
-  scoped_ptr<const DictionaryValue> json_entry = WriteAndReadBackEntry(entry);
+  std::unique_ptr<const DictionaryValue> json_entry =
+      WriteAndReadBackEntry(entry);
 
   std::string size;
   ASSERT_TRUE(json_entry->GetString("size", &size));
@@ -197,8 +202,8 @@
   // +--------+--------------------+-----------------+-----+
   // | Sum    |                 28 |              49 |  77 |
 
-  auto sf_deduplicator = make_scoped_ptr(new StackFrameDeduplicator);
-  auto tn_deduplicator = make_scoped_ptr(new TypeNameDeduplicator);
+  auto sf_deduplicator = WrapUnique(new StackFrameDeduplicator);
+  auto tn_deduplicator = WrapUnique(new TypeNameDeduplicator);
   HeapDumpWriter writer(sf_deduplicator.get(), tn_deduplicator.get());
   const std::set<Entry>& dump = writer.Summarize(bytes_by_context);
 
@@ -262,8 +267,8 @@
   ctx.backtrace.frames[2] = kInitialize;
   bytes_by_context[ctx] = 512;
 
-  auto sf_deduplicator = make_scoped_ptr(new StackFrameDeduplicator);
-  auto tn_deduplicator = make_scoped_ptr(new TypeNameDeduplicator);
+  auto sf_deduplicator = WrapUnique(new StackFrameDeduplicator);
+  auto tn_deduplicator = WrapUnique(new TypeNameDeduplicator);
   HeapDumpWriter writer(sf_deduplicator.get(), tn_deduplicator.get());
   const std::set<Entry>& dump = writer.Summarize(bytes_by_context);
 
diff --git a/base/trace_event/heap_profiler_stack_frame_deduplicator.cc b/base/trace_event/heap_profiler_stack_frame_deduplicator.cc
index 9568525..1212193 100644
--- a/base/trace_event/heap_profiler_stack_frame_deduplicator.cc
+++ b/base/trace_event/heap_profiler_stack_frame_deduplicator.cc
@@ -77,7 +77,7 @@
     SStringPrintf(&stringify_buffer, "\"%d\":", i);
     out->append(stringify_buffer);
 
-    scoped_ptr<TracedValue> frame_node_value(new TracedValue);
+    std::unique_ptr<TracedValue> frame_node_value(new TracedValue);
     frame_node_value->SetString("name", frame_node->frame);
     if (frame_node->parent_frame_index >= 0) {
       SStringPrintf(&stringify_buffer, "%d", frame_node->parent_frame_index);
diff --git a/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc b/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
index 2464036..72cb743a 100644
--- a/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
+++ b/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/trace_event/heap_profiler_stack_frame_deduplicator.h"
+
 #include <iterator>
+#include <memory>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/heap_profiler_allocation_context.h"
-#include "base/trace_event/heap_profiler_stack_frame_deduplicator.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -30,7 +31,7 @@
   //   CreateWidget [1]
   //     malloc [2]
 
-  scoped_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
+  std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
   ASSERT_EQ(2, dedup->Insert(std::begin(bt), std::end(bt)));
 
   auto iter = dedup->begin();
@@ -63,7 +64,7 @@
   // Note that there will be two instances of CreateWidget,
   // with different parents.
 
-  scoped_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
+  std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
   ASSERT_EQ(1, dedup->Insert(std::begin(bt0), std::end(bt0)));
   ASSERT_EQ(3, dedup->Insert(std::begin(bt1), std::end(bt1)));
 
@@ -95,7 +96,7 @@
   //
   // Note that BrowserMain will be re-used.
 
-  scoped_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
+  std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
   ASSERT_EQ(1, dedup->Insert(std::begin(bt0), std::end(bt0)));
   ASSERT_EQ(2, dedup->Insert(std::begin(bt1), std::end(bt1)));
 
@@ -121,7 +122,7 @@
 TEST(StackFrameDeduplicatorTest, NullPaddingIsRemoved) {
   StackFrame bt0[] = {kBrowserMain, nullptr, nullptr, nullptr};
 
-  scoped_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
+  std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
 
   // There are four frames in the backtrace, but the null pointers should be
   // skipped, so only one frame is inserted, which will have index 0.
diff --git a/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc b/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
index 8ab3f37..b2e681ab 100644
--- a/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
+++ b/base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
 #include <string>
 
 #include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/heap_profiler_type_name_deduplicator.h"
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -30,7 +30,8 @@
 const char kTaskPath[] = "base\\memory";
 #endif
 
-scoped_ptr<Value> DumpAndReadBack(const TypeNameDeduplicator& deduplicator) {
+std::unique_ptr<Value> DumpAndReadBack(
+    const TypeNameDeduplicator& deduplicator) {
   std::string json;
   deduplicator.AppendAsTraceFormat(&json);
   return JSONReader::Read(json);
@@ -41,10 +42,10 @@
 // the same as |expected_value|.
 void TestInsertTypeAndReadback(const char* type_name,
                                const char* expected_value) {
-  scoped_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
+  std::unique_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
   ASSERT_EQ(1, dedup->Insert(type_name));
 
-  scoped_ptr<Value> type_names = DumpAndReadBack(*dedup);
+  std::unique_ptr<Value> type_names = DumpAndReadBack(*dedup);
   ASSERT_NE(nullptr, type_names);
 
   const DictionaryValue* dictionary;
@@ -66,7 +67,7 @@
   // 2: bool
   // 3: string
 
-  scoped_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
+  std::unique_ptr<TypeNameDeduplicator> dedup(new TypeNameDeduplicator);
   ASSERT_EQ(1, dedup->Insert(kInt));
   ASSERT_EQ(2, dedup->Insert(kBool));
   ASSERT_EQ(3, dedup->Insert(kString));
diff --git a/base/trace_event/java_heap_dump_provider_android_unittest.cc b/base/trace_event/java_heap_dump_provider_android_unittest.cc
index 35f3f17f..6b31bd6 100644
--- a/base/trace_event/java_heap_dump_provider_android_unittest.cc
+++ b/base/trace_event/java_heap_dump_provider_android_unittest.cc
@@ -12,7 +12,7 @@
 
 TEST(JavaHeapDumpProviderTest, JavaHeapDump) {
   auto jhdp = JavaHeapDumpProvider::GetInstance();
-  scoped_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
   MemoryDumpArgs dump_args = {MemoryDumpLevelOfDetail::DETAILED};
 
   jhdp->OnMemoryDump(dump_args, pmd.get());
diff --git a/base/trace_event/malloc_dump_provider.cc b/base/trace_event/malloc_dump_provider.cc
index d8f82ed..17e5c1e 100644
--- a/base/trace_event/malloc_dump_provider.cc
+++ b/base/trace_event/malloc_dump_provider.cc
@@ -191,7 +191,7 @@
     }  // lock(allocation_register_lock_)
 
     if (!bytes_by_context.empty()) {
-      scoped_ptr<TracedValue> heap_dump = ExportHeapDump(
+      std::unique_ptr<TracedValue> heap_dump = ExportHeapDump(
           bytes_by_context, pmd->session_state()->stack_frame_deduplicator(),
           pmd->session_state()->type_name_deduplicator());
       pmd->AddHeapDump("malloc", std::move(heap_dump));
diff --git a/base/trace_event/malloc_dump_provider.h b/base/trace_event/malloc_dump_provider.h
index d9d7021..4746cf58 100644
--- a/base/trace_event/malloc_dump_provider.h
+++ b/base/trace_event/malloc_dump_provider.h
@@ -6,9 +6,9 @@
 #define BASE_TRACE_EVENT_MALLOC_DUMP_PROVIDER_H_
 
 #include <istream>
+#include <memory>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/synchronization/lock.h"
 #include "base/threading/platform_thread.h"
@@ -52,7 +52,7 @@
 
   // For heap profiling.
   bool heap_profiler_enabled_;
-  scoped_ptr<AllocationRegister> allocation_register_;
+  std::unique_ptr<AllocationRegister> allocation_register_;
   Lock allocation_register_lock_;
 
   // When in OnMemoryDump(), this contains the current thread ID.
diff --git a/base/trace_event/memory_allocator_dump.h b/base/trace_event/memory_allocator_dump.h
index 9f91de9..7d10236 100644
--- a/base/trace_event/memory_allocator_dump.h
+++ b/base/trace_event/memory_allocator_dump.h
@@ -7,12 +7,12 @@
 
 #include <stdint.h>
 
+#include <memory>
 #include <string>
 
 #include "base/base_export.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/memory_allocator_dump_guid.h"
 #include "base/values.h"
 
@@ -93,7 +93,7 @@
  private:
   const std::string absolute_name_;
   ProcessMemoryDump* const process_memory_dump_;  // Not owned (PMD owns this).
-  scoped_ptr<TracedValue> attributes_;
+  std::unique_ptr<TracedValue> attributes_;
   MemoryAllocatorDumpGuid guid_;
   int flags_;  // See enum Flags.
 
diff --git a/base/trace_event/memory_allocator_dump_unittest.cc b/base/trace_event/memory_allocator_dump_unittest.cc
index 649991b..359f081 100644
--- a/base/trace_event/memory_allocator_dump_unittest.cc
+++ b/base/trace_event/memory_allocator_dump_unittest.cc
@@ -52,11 +52,12 @@
   }
 };
 
-scoped_ptr<Value> CheckAttribute(const MemoryAllocatorDump* dump,
-                                 const std::string& name,
-                                 const char* expected_type,
-                                 const char* expected_units) {
-  scoped_ptr<Value> raw_attrs = dump->attributes_for_testing()->ToBaseValue();
+std::unique_ptr<Value> CheckAttribute(const MemoryAllocatorDump* dump,
+                                      const std::string& name,
+                                      const char* expected_type,
+                                      const char* expected_units) {
+  std::unique_ptr<Value> raw_attrs =
+      dump->attributes_for_testing()->ToBaseValue();
   DictionaryValue* args = nullptr;
   DictionaryValue* arg = nullptr;
   std::string arg_value;
@@ -68,7 +69,7 @@
   EXPECT_TRUE(arg->GetString("units", &arg_value));
   EXPECT_EQ(expected_units, arg_value);
   EXPECT_TRUE(arg->Get("value", &out_value));
-  return out_value ? out_value->CreateDeepCopy() : scoped_ptr<Value>();
+  return out_value ? out_value->CreateDeepCopy() : std::unique_ptr<Value>();
 }
 
 void CheckString(const MemoryAllocatorDump* dump,
@@ -104,7 +105,7 @@
 }  // namespace
 
 TEST(MemoryAllocatorDumpTest, GuidGeneration) {
-  scoped_ptr<MemoryAllocatorDump> mad(
+  std::unique_ptr<MemoryAllocatorDump> mad(
       new MemoryAllocatorDump("foo", nullptr, MemoryAllocatorDumpGuid(0x42u)));
   ASSERT_EQ("42", mad->guid().ToString());
 
@@ -167,7 +168,7 @@
   ASSERT_FALSE(attrs->HasKey(MemoryAllocatorDump::kNameObjectCount));
 
   // Check that the AsValueInfo doesn't hit any DCHECK.
-  scoped_ptr<TracedValue> traced_value(new TracedValue);
+  std::unique_ptr<TracedValue> traced_value(new TracedValue);
   pmd.AsValueInto(traced_value.get());
 }
 
diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc
index 56cc902..35b27d9 100644
--- a/base/trace_event/memory_dump_manager.cc
+++ b/base/trace_event/memory_dump_manager.cc
@@ -11,6 +11,7 @@
 #include "base/base_switches.h"
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
+#include "base/memory/ptr_util.h"
 #include "base/thread_task_runner_handle.h"
 #include "base/threading/thread.h"
 #include "base/trace_event/heap_profiler_allocation_context_tracker.h"
@@ -81,7 +82,7 @@
 // Proxy class which wraps a ConvertableToTraceFormat owned by the
 // |session_state| into a proxy object that can be added to the trace event log.
 // This is to solve the problem that the MemoryDumpSessionState is refcounted
-// but the tracing subsystem wants a scoped_ptr<ConvertableToTraceFormat>.
+// but the tracing subsystem wants a std::unique_ptr<ConvertableToTraceFormat>.
 template <typename T>
 struct SessionStateConvertableProxy : public ConvertableToTraceFormat {
   using GetterFunctPtr = T* (MemoryDumpSessionState::*)() const;
@@ -267,14 +268,14 @@
 }
 
 void MemoryDumpManager::UnregisterAndDeleteDumpProviderSoon(
-    scoped_ptr<MemoryDumpProvider> mdp) {
+    std::unique_ptr<MemoryDumpProvider> mdp) {
   UnregisterDumpProviderInternal(mdp.release(), true /* delete_async */);
 }
 
 void MemoryDumpManager::UnregisterDumpProviderInternal(
     MemoryDumpProvider* mdp,
     bool take_mdp_ownership_and_delete_async) {
-  scoped_ptr<MemoryDumpProvider> owned_mdp;
+  std::unique_ptr<MemoryDumpProvider> owned_mdp;
   if (take_mdp_ownership_and_delete_async)
     owned_mdp.reset(mdp);
 
@@ -370,7 +371,7 @@
   TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(kTraceCategory, "ProcessMemoryDump",
                                     TRACE_ID_MANGLE(args.dump_guid));
 
-  scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state;
+  std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state;
   {
     AutoLock lock(lock_);
     // |dump_thread_| can be nullptr is tracing was disabled before reaching
@@ -400,7 +401,7 @@
 // |lock_| is used in these functions purely to ensure consistency w.r.t.
 // (un)registrations of |dump_providers_|.
 void MemoryDumpManager::SetupNextMemoryDump(
-    scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) {
+    std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) {
   // Initalizes the ThreadLocalEventBuffer to guarantee that the TRACE_EVENTs
   // in the PostTask below don't end up registering their own dump providers
   // (for discounting trace memory overhead) while holding the |lock_|.
@@ -482,7 +483,7 @@
   // Unfortunately, PostTask() destroys the scoped_ptr arguments upon failure
   // to prevent accidental leaks. Using a scoped_ptr would prevent us to to
   // skip the hop and move on. Hence the manual naked -> scoped ptr juggling.
-  auto pmd_async_state = make_scoped_ptr(owned_pmd_async_state);
+  auto pmd_async_state = WrapUnique(owned_pmd_async_state);
   owned_pmd_async_state = nullptr;
 
   // Read MemoryDumpProviderInfo thread safety considerations in
@@ -535,7 +536,7 @@
 
 // static
 void MemoryDumpManager::FinalizeDumpAndAddToTrace(
-    scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) {
+    std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state) {
   DCHECK(pmd_async_state->pending_dump_providers.empty());
   const uint64_t dump_guid = pmd_async_state->req_args.dump_guid;
   if (!pmd_async_state->callback_task_runner->BelongsToCurrentThread()) {
@@ -554,7 +555,7 @@
   for (const auto& kv : pmd_async_state->process_dumps) {
     ProcessId pid = kv.first;  // kNullProcessId for the current process.
     ProcessMemoryDump* process_memory_dump = kv.second.get();
-    scoped_ptr<TracedValue> traced_value(new TracedValue);
+    std::unique_ptr<TracedValue> traced_value(new TracedValue);
     process_memory_dump->AsValueInto(traced_value.get());
     traced_value->SetString("level_of_detail",
                             MemoryDumpLevelOfDetailToString(
@@ -562,7 +563,8 @@
     const char* const event_name =
         MemoryDumpTypeToString(pmd_async_state->req_args.dump_type);
 
-    scoped_ptr<ConvertableToTraceFormat> event_value(std::move(traced_value));
+    std::unique_ptr<ConvertableToTraceFormat> event_value(
+        std::move(traced_value));
     TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID(
         TRACE_EVENT_PHASE_MEMORY_DUMP,
         TraceLog::GetCategoryGroupEnabled(kTraceCategory), event_name,
@@ -598,7 +600,7 @@
   TraceLog::GetInstance()->InitializeThreadLocalEventBufferIfSupported();
 
   // Spin-up the thread used to invoke unbound dump providers.
-  scoped_ptr<Thread> dump_thread(new Thread("MemoryInfra"));
+  std::unique_ptr<Thread> dump_thread(new Thread("MemoryInfra"));
   if (!dump_thread->Start()) {
     LOG(ERROR) << "Failed to start the memory-infra thread for tracing";
     return;
@@ -614,15 +616,15 @@
     // deduplicator will be in use. Add a metadata events to write the frames
     // and type IDs.
     session_state_->SetStackFrameDeduplicator(
-        make_scoped_ptr(new StackFrameDeduplicator));
+        WrapUnique(new StackFrameDeduplicator));
 
     session_state_->SetTypeNameDeduplicator(
-        make_scoped_ptr(new TypeNameDeduplicator));
+        WrapUnique(new TypeNameDeduplicator));
 
     TRACE_EVENT_API_ADD_METADATA_EVENT(
         TraceLog::GetCategoryGroupEnabled("__metadata"), "stackFrames",
         "stackFrames",
-        make_scoped_ptr(
+        WrapUnique(
             new SessionStateConvertableProxy<StackFrameDeduplicator>(
                 session_state_,
                 &MemoryDumpSessionState::stack_frame_deduplicator)));
@@ -630,7 +632,7 @@
     TRACE_EVENT_API_ADD_METADATA_EVENT(
         TraceLog::GetCategoryGroupEnabled("__metadata"), "typeNames",
         "typeNames",
-        make_scoped_ptr(new SessionStateConvertableProxy<TypeNameDeduplicator>(
+        WrapUnique(new SessionStateConvertableProxy<TypeNameDeduplicator>(
             session_state_, &MemoryDumpSessionState::type_name_deduplicator)));
   }
 
@@ -682,7 +684,7 @@
   // ensure that the MDM state which depends on the tracing enabled / disabled
   // state is always accessed by the dumping methods holding the |lock_|.
   subtle::NoBarrier_Store(&memory_tracing_enabled_, 0);
-  scoped_ptr<Thread> dump_thread;
+  std::unique_ptr<Thread> dump_thread;
   {
     AutoLock lock(lock_);
     dump_thread = std::move(dump_thread_);
@@ -749,7 +751,8 @@
     GetOrCreateMemoryDumpContainerForProcess(ProcessId pid) {
   auto iter = process_dumps.find(pid);
   if (iter == process_dumps.end()) {
-    scoped_ptr<ProcessMemoryDump> new_pmd(new ProcessMemoryDump(session_state));
+    std::unique_ptr<ProcessMemoryDump> new_pmd(
+        new ProcessMemoryDump(session_state));
     iter = process_dumps.insert(std::make_pair(pid, std::move(new_pmd))).first;
   }
   return iter->second.get();
diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h
index 79686c8..817768a 100644
--- a/base/trace_event/memory_dump_manager.h
+++ b/base/trace_event/memory_dump_manager.h
@@ -94,7 +94,8 @@
   //  - The |mdp| will be deleted at some point in the near future.
   //  - Its deletion will not happen concurrently with the OnMemoryDump() call.
   // Note that OnMemoryDump() calls can still happen after this method returns.
-  void UnregisterAndDeleteDumpProviderSoon(scoped_ptr<MemoryDumpProvider> mdp);
+  void UnregisterAndDeleteDumpProviderSoon(
+      std::unique_ptr<MemoryDumpProvider> mdp);
 
   // Requests a memory dump. The dump might happen or not depending on the
   // filters and categories specified when enabling tracing.
@@ -181,7 +182,7 @@
 
     // Used to transfer ownership for UnregisterAndDeleteDumpProviderSoon().
     // nullptr in all other cases.
-    scoped_ptr<MemoryDumpProvider> owned_dump_provider;
+    std::unique_ptr<MemoryDumpProvider> owned_dump_provider;
 
     // Human readable name, for debugging and testing. Not necessarily unique.
     const char* const name;
@@ -226,7 +227,7 @@
     // being dumped from the current process. Typically each process dumps only
     // for itself, unless dump providers specify a different |target_process| in
     // MemoryDumpProvider::Options.
-    std::map<ProcessId, scoped_ptr<ProcessMemoryDump>> process_dumps;
+    std::map<ProcessId, std::unique_ptr<ProcessMemoryDump>> process_dumps;
 
     // The arguments passed to the initial CreateProcessDump() request.
     const MemoryDumpRequestArgs req_args;
@@ -269,7 +270,7 @@
 
   static void SetInstanceForTesting(MemoryDumpManager* instance);
   static void FinalizeDumpAndAddToTrace(
-      scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
+      std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
 
   // Enable heap profiling if kEnableHeapProfiling is specified.
   void EnableHeapProfilingIfNeeded();
@@ -285,7 +286,7 @@
   // the MDP while registration. On failure to do so, skips and continues to
   // next MDP.
   void SetupNextMemoryDump(
-      scoped_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
+      std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
 
   // Invokes OnMemoryDump() of the next MDP and calls SetupNextMemoryDump() at
   // the end to continue the ProcessMemoryDump. Should be called on the MDP task
@@ -328,7 +329,7 @@
 
   // Thread used for MemoryDumpProviders which don't specify a task runner
   // affinity.
-  scoped_ptr<Thread> dump_thread_;
+  std::unique_ptr<Thread> dump_thread_;
 
   // The unique id of the child process. This is created only for tracing and is
   // expected to be valid only when tracing is enabled.
diff --git a/base/trace_event/memory_dump_manager_unittest.cc b/base/trace_event/memory_dump_manager_unittest.cc
index 12227ee7..2461e61 100644
--- a/base/trace_event/memory_dump_manager_unittest.cc
+++ b/base/trace_event/memory_dump_manager_unittest.cc
@@ -6,11 +6,12 @@
 
 #include <stdint.h>
 
+#include <memory>
 #include <vector>
 
 #include "base/bind_helpers.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted_memory.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
@@ -233,12 +234,12 @@
   }
 
   const MemoryDumpProvider::Options kDefaultOptions;
-  scoped_ptr<MemoryDumpManager> mdm_;
-  scoped_ptr<MemoryDumpManagerDelegateForTesting> delegate_;
+  std::unique_ptr<MemoryDumpManager> mdm_;
+  std::unique_ptr<MemoryDumpManagerDelegateForTesting> delegate_;
   bool last_callback_success_;
 
  private:
-  scoped_ptr<MessageLoop> message_loop_;
+  std::unique_ptr<MessageLoop> message_loop_;
 
   // We want our singleton torn down after each test.
   ShadowingAtExitManager at_exit_manager_;
@@ -445,18 +446,18 @@
   InitializeMemoryDumpManager(false /* is_coordinator */);
   const uint32_t kNumInitialThreads = 8;
 
-  std::vector<scoped_ptr<Thread>> threads;
-  std::vector<scoped_ptr<MockMemoryDumpProvider>> mdps;
+  std::vector<std::unique_ptr<Thread>> threads;
+  std::vector<std::unique_ptr<MockMemoryDumpProvider>> mdps;
 
   // Create the threads and setup the expectations. Given that at each iteration
   // we will pop out one thread/MemoryDumpProvider, each MDP is supposed to be
   // invoked a number of times equal to its index.
   for (uint32_t i = kNumInitialThreads; i > 0; --i) {
-    threads.push_back(make_scoped_ptr(new Thread("test thread")));
+    threads.push_back(WrapUnique(new Thread("test thread")));
     auto thread = threads.back().get();
     thread->Start();
     scoped_refptr<SingleThreadTaskRunner> task_runner = thread->task_runner();
-    mdps.push_back(make_scoped_ptr(new MockMemoryDumpProvider()));
+    mdps.push_back(WrapUnique(new MockMemoryDumpProvider()));
     auto mdp = mdps.back().get();
     RegisterDumpProvider(mdp, task_runner, kDefaultOptions);
     EXPECT_CALL(*mdp, OnMemoryDump(_, _))
@@ -650,13 +651,13 @@
 // dumping from a different thread than the dumping thread.
 TEST_F(MemoryDumpManagerTest, UnregisterDumperFromThreadWhileDumping) {
   InitializeMemoryDumpManager(false /* is_coordinator */);
-  std::vector<scoped_ptr<TestIOThread>> threads;
-  std::vector<scoped_ptr<MockMemoryDumpProvider>> mdps;
+  std::vector<std::unique_ptr<TestIOThread>> threads;
+  std::vector<std::unique_ptr<MockMemoryDumpProvider>> mdps;
 
   for (int i = 0; i < 2; i++) {
     threads.push_back(
-        make_scoped_ptr(new TestIOThread(TestIOThread::kAutoStart)));
-    mdps.push_back(make_scoped_ptr(new MockMemoryDumpProvider()));
+        WrapUnique(new TestIOThread(TestIOThread::kAutoStart)));
+    mdps.push_back(WrapUnique(new MockMemoryDumpProvider()));
     RegisterDumpProvider(mdps.back().get(), threads.back()->task_runner(),
                          kDefaultOptions);
   }
@@ -665,7 +666,7 @@
 
   // When OnMemoryDump is called on either of the dump providers, it will
   // unregister the other one.
-  for (const scoped_ptr<MockMemoryDumpProvider>& mdp : mdps) {
+  for (const std::unique_ptr<MockMemoryDumpProvider>& mdp : mdps) {
     int other_idx = (mdps.front() == mdp);
     TestIOThread* other_thread = threads[other_idx].get();
     MockMemoryDumpProvider* other_mdp = mdps[other_idx].get();
@@ -700,13 +701,13 @@
 // its dump provider should be skipped but the dump itself should succeed.
 TEST_F(MemoryDumpManagerTest, TearDownThreadWhileDumping) {
   InitializeMemoryDumpManager(false /* is_coordinator */);
-  std::vector<scoped_ptr<TestIOThread>> threads;
-  std::vector<scoped_ptr<MockMemoryDumpProvider>> mdps;
+  std::vector<std::unique_ptr<TestIOThread>> threads;
+  std::vector<std::unique_ptr<MockMemoryDumpProvider>> mdps;
 
   for (int i = 0; i < 2; i++) {
     threads.push_back(
-        make_scoped_ptr(new TestIOThread(TestIOThread::kAutoStart)));
-    mdps.push_back(make_scoped_ptr(new MockMemoryDumpProvider()));
+        WrapUnique(new TestIOThread(TestIOThread::kAutoStart)));
+    mdps.push_back(WrapUnique(new MockMemoryDumpProvider()));
     RegisterDumpProvider(mdps.back().get(), threads.back()->task_runner(),
                          kDefaultOptions);
   }
@@ -715,7 +716,7 @@
 
   // When OnMemoryDump is called on either of the dump providers, it will
   // tear down the thread of the other one.
-  for (const scoped_ptr<MockMemoryDumpProvider>& mdp : mdps) {
+  for (const std::unique_ptr<MockMemoryDumpProvider>& mdp : mdps) {
     int other_idx = (mdps.front() == mdp);
     TestIOThread* other_thread = threads[other_idx].get();
     auto on_dump = [other_thread, &on_memory_dump_call_count](
@@ -888,7 +889,7 @@
   InitializeMemoryDumpManager(false /* is_coordinator */);
 
   // Register a bound dump provider.
-  scoped_ptr<Thread> mdp_thread(new Thread("test thread"));
+  std::unique_ptr<Thread> mdp_thread(new Thread("test thread"));
   mdp_thread->Start();
   MockMemoryDumpProvider mdp_with_affinity;
   RegisterDumpProvider(&mdp_with_affinity, mdp_thread->task_runner(),
@@ -995,7 +996,7 @@
   buffer.Finish();
 
   // Analyze the JSON.
-  scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer = make_scoped_ptr(
+  std::unique_ptr<trace_analyzer::TraceAnalyzer> analyzer = WrapUnique(
       trace_analyzer::TraceAnalyzer::Create(trace_output.json_output));
   trace_analyzer::TraceEventVector events;
   analyzer->FindEvents(Query::EventPhaseIs(TRACE_EVENT_PHASE_MEMORY_DUMP),
@@ -1016,9 +1017,9 @@
   InitializeMemoryDumpManager(false /* is_coordinator */);
   static const int kNumProviders = 3;
   int dtor_count = 0;
-  std::vector<scoped_ptr<MemoryDumpProvider>> mdps;
+  std::vector<std::unique_ptr<MemoryDumpProvider>> mdps;
   for (int i = 0; i < kNumProviders; ++i) {
-    scoped_ptr<MockMemoryDumpProvider> mdp(new MockMemoryDumpProvider);
+    std::unique_ptr<MockMemoryDumpProvider> mdp(new MockMemoryDumpProvider);
     mdp->enable_mock_destructor = true;
     EXPECT_CALL(*mdp, Destructor())
         .WillOnce(Invoke([&dtor_count]() { dtor_count++; }));
@@ -1041,7 +1042,7 @@
 // happen on the same thread (the MemoryDumpManager utility thread).
 TEST_F(MemoryDumpManagerTest, UnregisterAndDeleteDumpProviderSoonDuringDump) {
   InitializeMemoryDumpManager(false /* is_coordinator */);
-  scoped_ptr<MockMemoryDumpProvider> mdp(new MockMemoryDumpProvider);
+  std::unique_ptr<MockMemoryDumpProvider> mdp(new MockMemoryDumpProvider);
   mdp->enable_mock_destructor = true;
   RegisterDumpProvider(mdp.get(), nullptr, kDefaultOptions);
 
@@ -1055,7 +1056,7 @@
         base::Bind(
             &MemoryDumpManager::UnregisterAndDeleteDumpProviderSoon,
             base::Unretained(MemoryDumpManager::GetInstance()),
-            base::Passed(scoped_ptr<MemoryDumpProvider>(std::move(mdp)))));
+            base::Passed(std::unique_ptr<MemoryDumpProvider>(std::move(mdp)))));
     thread_for_unregistration.Stop();
     return true;
   };
diff --git a/base/trace_event/memory_dump_session_state.cc b/base/trace_event/memory_dump_session_state.cc
index 576da311..e06062d 100644
--- a/base/trace_event/memory_dump_session_state.cc
+++ b/base/trace_event/memory_dump_session_state.cc
@@ -12,13 +12,13 @@
 MemoryDumpSessionState::~MemoryDumpSessionState() {}
 
 void MemoryDumpSessionState::SetStackFrameDeduplicator(
-    scoped_ptr<StackFrameDeduplicator> stack_frame_deduplicator) {
+    std::unique_ptr<StackFrameDeduplicator> stack_frame_deduplicator) {
   DCHECK(!stack_frame_deduplicator_);
   stack_frame_deduplicator_ = std::move(stack_frame_deduplicator);
 }
 
 void MemoryDumpSessionState::SetTypeNameDeduplicator(
-    scoped_ptr<TypeNameDeduplicator> type_name_deduplicator) {
+    std::unique_ptr<TypeNameDeduplicator> type_name_deduplicator) {
   DCHECK(!type_name_deduplicator_);
   type_name_deduplicator_ = std::move(type_name_deduplicator);
 }
diff --git a/base/trace_event/memory_dump_session_state.h b/base/trace_event/memory_dump_session_state.h
index 879545f6..7d87198 100644
--- a/base/trace_event/memory_dump_session_state.h
+++ b/base/trace_event/memory_dump_session_state.h
@@ -5,8 +5,9 @@
 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_
 #define BASE_TRACE_EVENT_MEMORY_DUMP_SESSION_STATE_H_
 
+#include <memory>
+
 #include "base/base_export.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/heap_profiler_stack_frame_deduplicator.h"
 #include "base/trace_event/heap_profiler_type_name_deduplicator.h"
 
@@ -27,7 +28,7 @@
   }
 
   void SetStackFrameDeduplicator(
-      scoped_ptr<StackFrameDeduplicator> stack_frame_deduplicator);
+      std::unique_ptr<StackFrameDeduplicator> stack_frame_deduplicator);
 
   // Returns the type name deduplicator that should be used by memory dump
   // providers when doing a heap dump.
@@ -36,7 +37,7 @@
   }
 
   void SetTypeNameDeduplicator(
-      scoped_ptr<TypeNameDeduplicator> type_name_deduplicator);
+      std::unique_ptr<TypeNameDeduplicator> type_name_deduplicator);
 
  private:
   friend class RefCountedThreadSafe<MemoryDumpSessionState>;
@@ -44,11 +45,11 @@
 
   // Deduplicates backtraces in heap dumps so they can be written once when the
   // trace is finalized.
-  scoped_ptr<StackFrameDeduplicator> stack_frame_deduplicator_;
+  std::unique_ptr<StackFrameDeduplicator> stack_frame_deduplicator_;
 
   // Deduplicates type names in heap dumps so they can be written once when the
   // trace is finalized.
-  scoped_ptr<TypeNameDeduplicator> type_name_deduplicator_;
+  std::unique_ptr<TypeNameDeduplicator> type_name_deduplicator_;
 };
 
 }  // namespace trace_event
diff --git a/base/trace_event/process_memory_dump.cc b/base/trace_event/process_memory_dump.cc
index 1642e5a3..56fda80 100644
--- a/base/trace_event/process_memory_dump.cc
+++ b/base/trace_event/process_memory_dump.cc
@@ -5,8 +5,10 @@
 #include "base/trace_event/process_memory_dump.h"
 
 #include <errno.h>
+
 #include <vector>
 
+#include "base/memory/ptr_util.h"
 #include "base/process/process_metrics.h"
 #include "base/trace_event/process_memory_totals.h"
 #include "base/trace_event/trace_event_argument.h"
@@ -82,12 +84,12 @@
   size_t max_vec_size =
       GetSystemPageCount(std::min(mapped_size, kMaxChunkSize), page_size);
 #if defined(OS_MACOSX) || defined(OS_IOS)
-  scoped_ptr<char[]> vec(new char[max_vec_size]);
+  std::unique_ptr<char[]> vec(new char[max_vec_size]);
 #elif defined(OS_WIN)
-  scoped_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+  std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
       new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
 #elif defined(OS_POSIX)
-  scoped_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
+  std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
 #endif
 
   while (offset < mapped_size) {
@@ -154,18 +156,18 @@
 MemoryAllocatorDump* ProcessMemoryDump::CreateAllocatorDump(
     const std::string& absolute_name) {
   return AddAllocatorDumpInternal(
-      make_scoped_ptr(new MemoryAllocatorDump(absolute_name, this)));
+      WrapUnique(new MemoryAllocatorDump(absolute_name, this)));
 }
 
 MemoryAllocatorDump* ProcessMemoryDump::CreateAllocatorDump(
     const std::string& absolute_name,
     const MemoryAllocatorDumpGuid& guid) {
   return AddAllocatorDumpInternal(
-      make_scoped_ptr(new MemoryAllocatorDump(absolute_name, this, guid)));
+      WrapUnique(new MemoryAllocatorDump(absolute_name, this, guid)));
 }
 
 MemoryAllocatorDump* ProcessMemoryDump::AddAllocatorDumpInternal(
-    scoped_ptr<MemoryAllocatorDump> mad) {
+    std::unique_ptr<MemoryAllocatorDump> mad) {
   auto insertion_result = allocator_dumps_.insert(
       std::make_pair(mad->absolute_name(), std::move(mad)));
   DCHECK(insertion_result.second) << "Duplicate name: " << mad->absolute_name();
@@ -214,7 +216,7 @@
 }
 
 void ProcessMemoryDump::AddHeapDump(const std::string& absolute_name,
-                                    scoped_ptr<TracedValue> heap_dump) {
+                                    std::unique_ptr<TracedValue> heap_dump) {
   DCHECK_EQ(0ul, heap_dumps_.count(absolute_name));
   heap_dumps_[absolute_name] = std::move(heap_dump);
 }
diff --git a/base/trace_event/process_memory_dump.h b/base/trace_event/process_memory_dump.h
index 41efc73..5ac14fe 100644
--- a/base/trace_event/process_memory_dump.h
+++ b/base/trace_event/process_memory_dump.h
@@ -48,9 +48,10 @@
   // Maps allocator dumps absolute names (allocator_name/heap/subheap) to
   // MemoryAllocatorDump instances.
   using AllocatorDumpsMap =
-      std::unordered_map<std::string, scoped_ptr<MemoryAllocatorDump>>;
+      std::unordered_map<std::string, std::unique_ptr<MemoryAllocatorDump>>;
 
-  using HeapDumpsMap = std::unordered_map<std::string, scoped_ptr<TracedValue>>;
+  using HeapDumpsMap =
+      std::unordered_map<std::string, std::unique_ptr<TracedValue>>;
 
 #if defined(COUNT_RESIDENT_BYTES_SUPPORTED)
   // Returns the number of bytes in a kernel memory page. Some platforms may
@@ -119,7 +120,7 @@
   // must have the correct format. |trace_event::HeapDumper| will generate such
   // a value from a |trace_event::AllocationRegister|.
   void AddHeapDump(const std::string& absolute_name,
-                   scoped_ptr<TracedValue> heap_dump);
+                   std::unique_ptr<TracedValue> heap_dump);
 
   // Adds an ownership relationship between two MemoryAllocatorDump(s) with the
   // semantics: |source| owns |target|, and has the effect of attributing
@@ -175,7 +176,7 @@
 
  private:
   MemoryAllocatorDump* AddAllocatorDumpInternal(
-      scoped_ptr<MemoryAllocatorDump> mad);
+      std::unique_ptr<MemoryAllocatorDump> mad);
 
   ProcessMemoryTotals process_totals_;
   bool has_process_totals_;
diff --git a/base/trace_event/process_memory_dump_unittest.cc b/base/trace_event/process_memory_dump_unittest.cc
index e7fe960..3a93b2c 100644
--- a/base/trace_event/process_memory_dump_unittest.cc
+++ b/base/trace_event/process_memory_dump_unittest.cc
@@ -23,7 +23,7 @@
 }  // namespace
 
 TEST(ProcessMemoryDumpTest, Clear) {
-  scoped_ptr<ProcessMemoryDump> pmd1(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd1(new ProcessMemoryDump(nullptr));
   pmd1->CreateAllocatorDump("mad1");
   pmd1->CreateAllocatorDump("mad2");
   ASSERT_FALSE(pmd1->allocator_dumps().empty());
@@ -54,7 +54,7 @@
   ASSERT_EQ(nullptr, pmd1->GetSharedGlobalAllocatorDump(shared_mad_guid2));
 
   // Check that calling AsValueInto() doesn't cause a crash.
-  scoped_ptr<TracedValue> traced_value(new TracedValue);
+  std::unique_ptr<TracedValue> traced_value(new TracedValue);
   pmd1->AsValueInto(traced_value.get());
 
   // Check that the pmd can be reused and behaves as expected.
@@ -79,11 +79,11 @@
 }
 
 TEST(ProcessMemoryDumpTest, TakeAllDumpsFrom) {
-  scoped_ptr<TracedValue> traced_value(new TracedValue);
+  std::unique_ptr<TracedValue> traced_value(new TracedValue);
   TracedValue* heap_dumps_ptr[4];
-  scoped_ptr<TracedValue> heap_dump;
+  std::unique_ptr<TracedValue> heap_dump;
 
-  scoped_ptr<ProcessMemoryDump> pmd1(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd1(new ProcessMemoryDump(nullptr));
   auto mad1_1 = pmd1->CreateAllocatorDump("pmd1/mad1");
   auto mad1_2 = pmd1->CreateAllocatorDump("pmd1/mad2");
   pmd1->AddOwnershipEdge(mad1_1->guid(), mad1_2->guid());
@@ -94,7 +94,7 @@
   heap_dumps_ptr[1] = heap_dump.get();
   pmd1->AddHeapDump("pmd1/heap_dump2", std::move(heap_dump));
 
-  scoped_ptr<ProcessMemoryDump> pmd2(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd2(new ProcessMemoryDump(nullptr));
   auto mad2_1 = pmd2->CreateAllocatorDump("pmd2/mad1");
   auto mad2_2 = pmd2->CreateAllocatorDump("pmd2/mad2");
   pmd2->AddOwnershipEdge(mad2_1->guid(), mad2_2->guid());
@@ -154,7 +154,7 @@
 }
 
 TEST(ProcessMemoryDumpTest, Suballocations) {
-  scoped_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
   const std::string allocator_dump_name = "fakealloc/allocated_objects";
   pmd->CreateAllocatorDump(allocator_dump_name);
 
@@ -191,14 +191,14 @@
   ASSERT_TRUE(found_edge[1]);
 
   // Check that calling AsValueInto() doesn't cause a crash.
-  scoped_ptr<TracedValue> traced_value(new TracedValue);
+  std::unique_ptr<TracedValue> traced_value(new TracedValue);
   pmd->AsValueInto(traced_value.get());
 
   pmd.reset();
 }
 
 TEST(ProcessMemoryDumpTest, GlobalAllocatorDumpTest) {
-  scoped_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
+  std::unique_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump(nullptr));
   MemoryAllocatorDumpGuid shared_mad_guid(1);
   auto shared_mad1 = pmd->CreateWeakSharedGlobalAllocatorDump(shared_mad_guid);
   ASSERT_EQ(shared_mad_guid, shared_mad1->guid());
@@ -227,7 +227,7 @@
 
   // Allocate few page of dirty memory and check if it is resident.
   const size_t size1 = 5 * page_size;
-  scoped_ptr<char, base::AlignedFreeDeleter> memory1(
+  std::unique_ptr<char, base::AlignedFreeDeleter> memory1(
       static_cast<char*>(base::AlignedAlloc(size1, page_size)));
   memset(memory1.get(), 0, size1);
   size_t res1 = ProcessMemoryDump::CountResidentBytes(memory1.get(), size1);
@@ -235,7 +235,7 @@
 
   // Allocate a large memory segment (> 8Mib).
   const size_t kVeryLargeMemorySize = 15 * 1024 * 1024;
-  scoped_ptr<char, base::AlignedFreeDeleter> memory2(
+  std::unique_ptr<char, base::AlignedFreeDeleter> memory2(
       static_cast<char*>(base::AlignedAlloc(kVeryLargeMemorySize, page_size)));
   memset(memory2.get(), 0, kVeryLargeMemorySize);
   size_t res2 = ProcessMemoryDump::CountResidentBytes(memory2.get(),
diff --git a/base/trace_event/trace_buffer.cc b/base/trace_event/trace_buffer.cc
index 9630a7a..b9f80b2 100644
--- a/base/trace_event/trace_buffer.cc
+++ b/base/trace_event/trace_buffer.cc
@@ -4,11 +4,11 @@
 
 #include "base/trace_event/trace_buffer.h"
 
+#include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/trace_event/trace_event_impl.h"
 
 namespace base {
@@ -30,7 +30,7 @@
       recyclable_chunks_queue_[i] = i;
   }
 
-  scoped_ptr<TraceBufferChunk> GetChunk(size_t* index) override {
+  std::unique_ptr<TraceBufferChunk> GetChunk(size_t* index) override {
     // Because the number of threads is much less than the number of chunks,
     // the queue should never be empty.
     DCHECK(!QueueIsEmpty());
@@ -49,10 +49,11 @@
     else
       chunk = new TraceBufferChunk(current_chunk_seq_++);
 
-    return scoped_ptr<TraceBufferChunk>(chunk);
+    return std::unique_ptr<TraceBufferChunk>(chunk);
   }
 
-  void ReturnChunk(size_t index, scoped_ptr<TraceBufferChunk> chunk) override {
+  void ReturnChunk(size_t index,
+                   std::unique_ptr<TraceBufferChunk> chunk) override {
     // When this method is called, the queue should not be full because it
     // can contain all chunks including the one to be returned.
     DCHECK(!QueueIsFull());
@@ -135,9 +136,9 @@
   }
 
   size_t max_chunks_;
-  std::vector<scoped_ptr<TraceBufferChunk>> chunks_;
+  std::vector<std::unique_ptr<TraceBufferChunk>> chunks_;
 
-  scoped_ptr<size_t[]> recyclable_chunks_queue_;
+  std::unique_ptr<size_t[]> recyclable_chunks_queue_;
   size_t queue_head_;
   size_t queue_tail_;
 
@@ -156,7 +157,7 @@
     chunks_.reserve(max_chunks_);
   }
 
-  scoped_ptr<TraceBufferChunk> GetChunk(size_t* index) override {
+  std::unique_ptr<TraceBufferChunk> GetChunk(size_t* index) override {
     // This function may be called when adding normal events or indirectly from
     // AddMetadataEventsWhileLocked(). We can not DECHECK(!IsFull()) because we
     // have to add the metadata events and flush thread-local buffers even if
@@ -165,11 +166,12 @@
     chunks_.push_back(NULL);  // Put NULL in the slot of a in-flight chunk.
     ++in_flight_chunk_count_;
     // + 1 because zero chunk_seq is not allowed.
-    return scoped_ptr<TraceBufferChunk>(
+    return std::unique_ptr<TraceBufferChunk>(
         new TraceBufferChunk(static_cast<uint32_t>(*index) + 1));
   }
 
-  void ReturnChunk(size_t index, scoped_ptr<TraceBufferChunk> chunk) override {
+  void ReturnChunk(size_t index,
+                   std::unique_ptr<TraceBufferChunk> chunk) override {
     DCHECK_GT(in_flight_chunk_count_, 0u);
     DCHECK_LT(index, chunks_.size());
     DCHECK(!chunks_[index]);
diff --git a/base/trace_event/trace_buffer.h b/base/trace_event/trace_buffer.h
index c4c1c2b..4885a3c 100644
--- a/base/trace_event/trace_buffer.h
+++ b/base/trace_event/trace_buffer.h
@@ -49,7 +49,7 @@
 
  private:
   size_t next_free_;
-  scoped_ptr<TraceEventMemoryOverhead> cached_overhead_estimate_;
+  std::unique_ptr<TraceEventMemoryOverhead> cached_overhead_estimate_;
   TraceEvent chunk_[kTraceBufferChunkSize];
   uint32_t seq_;
 };
@@ -59,9 +59,9 @@
  public:
   virtual ~TraceBuffer() {}
 
-  virtual scoped_ptr<TraceBufferChunk> GetChunk(size_t* index) = 0;
+  virtual std::unique_ptr<TraceBufferChunk> GetChunk(size_t* index) = 0;
   virtual void ReturnChunk(size_t index,
-                           scoped_ptr<TraceBufferChunk> chunk) = 0;
+                           std::unique_ptr<TraceBufferChunk> chunk) = 0;
 
   virtual bool IsFull() const = 0;
   virtual size_t Size() const = 0;
diff --git a/base/trace_event/trace_config.cc b/base/trace_event/trace_config.cc
index c2c7ad79..e9e5a099 100644
--- a/base/trace_event/trace_config.cc
+++ b/base/trace_event/trace_config.cc
@@ -10,6 +10,7 @@
 
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
+#include "base/memory/ptr_util.h"
 #include "base/strings/pattern.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_tokenizer.h"
@@ -160,9 +161,9 @@
   return json;
 }
 
-scoped_ptr<ConvertableToTraceFormat> TraceConfig::AsConvertableToTraceFormat()
-    const {
-  return make_scoped_ptr(new ConvertableTraceConfigToTraceFormat(*this));
+std::unique_ptr<ConvertableToTraceFormat>
+TraceConfig::AsConvertableToTraceFormat() const {
+  return WrapUnique(new ConvertableTraceConfigToTraceFormat(*this));
 }
 
 std::string TraceConfig::ToCategoryFilterString() const {
@@ -345,7 +346,7 @@
 }
 
 void TraceConfig::InitializeFromConfigString(const std::string& config_string) {
-  scoped_ptr<Value> value(JSONReader::Read(config_string));
+  std::unique_ptr<Value> value(JSONReader::Read(config_string));
   if (!value)
     return InitializeDefault();
 
@@ -476,7 +477,7 @@
   if (categories.empty())
     return;
 
-  scoped_ptr<base::ListValue> list(new base::ListValue());
+  std::unique_ptr<base::ListValue> list(new base::ListValue());
   for (StringList::const_iterator ci = categories.begin();
        ci != categories.end();
        ++ci) {
@@ -565,11 +566,11 @@
   AddCategoryToDict(dict, kSyntheticDelaysParam, synthetic_delays_);
 
   if (IsCategoryEnabled(MemoryDumpManager::kTraceCategory)) {
-    scoped_ptr<base::DictionaryValue> memory_dump_config(
+    std::unique_ptr<base::DictionaryValue> memory_dump_config(
         new base::DictionaryValue());
-    scoped_ptr<base::ListValue> triggers_list(new base::ListValue());
+    std::unique_ptr<base::ListValue> triggers_list(new base::ListValue());
     for (const MemoryDumpTriggerConfig& config : memory_dump_config_) {
-      scoped_ptr<base::DictionaryValue> trigger_dict(
+      std::unique_ptr<base::DictionaryValue> trigger_dict(
           new base::DictionaryValue());
       trigger_dict->SetInteger(kPeriodicIntervalParam,
                                static_cast<int>(config.periodic_interval_ms));
diff --git a/base/trace_event/trace_config.h b/base/trace_event/trace_config.h
index 75e001b2..72ca5f8 100644
--- a/base/trace_event/trace_config.h
+++ b/base/trace_event/trace_config.h
@@ -158,7 +158,7 @@
   std::string ToString() const;
 
   // Returns a copy of the TraceConfig wrapped in a ConvertableToTraceFormat
-  scoped_ptr<ConvertableToTraceFormat> AsConvertableToTraceFormat() const;
+  std::unique_ptr<ConvertableToTraceFormat> AsConvertableToTraceFormat() const;
 
   // Write the string representation of the CategoryFilter part.
   std::string ToCategoryFilterString() const;
diff --git a/base/trace_event/trace_config_unittest.cc b/base/trace_event/trace_config_unittest.cc
index 1b49fdc..1fb41f8 100644
--- a/base/trace_event/trace_config_unittest.cc
+++ b/base/trace_event/trace_config_unittest.cc
@@ -292,7 +292,8 @@
   EXPECT_FALSE(tc.IsArgumentFilterEnabled());
   EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
 
-  scoped_ptr<Value> default_value(JSONReader::Read(kDefaultTraceConfigString));
+  std::unique_ptr<Value> default_value(
+      JSONReader::Read(kDefaultTraceConfigString));
   DCHECK(default_value);
   const DictionaryValue* default_dict = nullptr;
   bool is_dict = default_value->GetAsDictionary(&default_dict);
@@ -305,7 +306,8 @@
   EXPECT_FALSE(default_tc.IsArgumentFilterEnabled());
   EXPECT_STREQ("-*Debug,-*Test", default_tc.ToCategoryFilterString().c_str());
 
-  scoped_ptr<Value> custom_value(JSONReader::Read(kCustomTraceConfigString));
+  std::unique_ptr<Value> custom_value(
+      JSONReader::Read(kCustomTraceConfigString));
   DCHECK(custom_value);
   const DictionaryValue* custom_dict = nullptr;
   is_dict = custom_value->GetAsDictionary(&custom_dict);
diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h
index e7801e6..ef452f6 100644
--- a/base/trace_event/trace_event.h
+++ b/base/trace_event/trace_event.h
@@ -111,7 +111,7 @@
 //                    const char** arg_names,
 //                    const unsigned char* arg_types,
 //                    const unsigned long long* arg_values,
-//                    scoped_ptr<ConvertableToTraceFormat>*
+//                    std::unique_ptr<ConvertableToTraceFormat>*
 //                    convertable_values,
 //                    unsigned int flags)
 #define TRACE_EVENT_API_ADD_TRACE_EVENT \
@@ -130,7 +130,7 @@
 //                    const char** arg_names,
 //                    const unsigned char* arg_types,
 //                    const unsigned long long* arg_values,
-//                    scoped_ptr<ConvertableToTraceFormat>*
+//                    std::unique_ptr<ConvertableToTraceFormat>*
 //                    convertable_values,
 //                    unsigned int flags)
 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID \
@@ -150,7 +150,7 @@
 //                    const char** arg_names,
 //                    const unsigned char* arg_types,
 //                    const unsigned long long* arg_values,
-//                    scoped_ptr<ConvertableToTraceFormat>*
+//                    std::unique_ptr<ConvertableToTraceFormat>*
 //                    convertable_values,
 //                    unsigned int flags)
 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_PROCESS_ID \
@@ -170,7 +170,7 @@
 //                    const char** arg_names,
 //                    const unsigned char* arg_types,
 //                    const unsigned long long* arg_values,
-//                    scoped_ptr<ConvertableToTraceFormat>*
+//                    std::unique_ptr<ConvertableToTraceFormat>*
 //                    convertable_values,
 //                    unsigned int flags)
 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \
@@ -191,7 +191,7 @@
 //     const unsigned char* category_group_enabled,
 //     const char* event_name,
 //     const char* arg_name,
-//     scoped_ptr<ConvertableToTraceFormat> arg_value)
+//     std::unique_ptr<ConvertableToTraceFormat> arg_value)
 #define TRACE_EVENT_API_ADD_METADATA_EVENT \
     trace_event_internal::AddMetadataEvent
 
@@ -629,10 +629,10 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
   const int num_args = 1;
   unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE };
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
       convertable_values[1] = {std::move(arg1_val)};
   return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
       phase, category_group_enabled, name, scope, id, bind_id, thread_id,
@@ -655,7 +655,7 @@
     const char* arg1_name,
     const ARG1_TYPE& arg1_val,
     const char* arg2_name,
-    scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
+    std::unique_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
   const int num_args = 2;
   const char* arg_names[2] = { arg1_name, arg2_name };
 
@@ -663,7 +663,7 @@
   unsigned long long arg_values[2];
   SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
   arg_types[1] = TRACE_VALUE_TYPE_CONVERTABLE;
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
       convertable_values[2] = {nullptr, std::move(arg2_val)};
   return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
       phase, category_group_enabled, name, scope, id, bind_id, thread_id,
@@ -684,7 +684,7 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
     const char* arg2_name,
     const ARG2_TYPE& arg2_val) {
   const int num_args = 2;
@@ -695,7 +695,7 @@
   arg_types[0] = TRACE_VALUE_TYPE_CONVERTABLE;
   arg_values[0] = 0;
   SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]);
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
       convertable_values[2] = {std::move(arg1_val), nullptr};
   return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
       phase, category_group_enabled, name, scope, id, bind_id, thread_id,
@@ -716,14 +716,14 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
     const char* arg2_name,
-    scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
+    std::unique_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
   const int num_args = 2;
   const char* arg_names[2] = { arg1_name, arg2_name };
   unsigned char arg_types[2] =
       { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE };
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
       convertable_values[2] = {std::move(arg1_val), std::move(arg2_val)};
   return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
       phase, category_group_enabled, name, scope, id, bind_id, thread_id,
@@ -813,7 +813,7 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   base::TimeTicks now = base::TimeTicks::Now();
   return AddTraceEventWithThreadIdAndTimestamp(
@@ -858,7 +858,7 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
     const char* arg2_name,
     const ARG2_TYPE& arg2_val) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
@@ -880,7 +880,7 @@
     const char* arg1_name,
     const ARG1_TYPE& arg1_val,
     const char* arg2_name,
-    scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
+    std::unique_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   base::TimeTicks now = base::TimeTicks::Now();
   return AddTraceEventWithThreadIdAndTimestamp(
@@ -898,9 +898,9 @@
     unsigned int flags,
     unsigned long long bind_id,
     const char* arg1_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg1_val,
     const char* arg2_name,
-    scoped_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
+    std::unique_ptr<ARG2_CONVERTABLE_TYPE> arg2_val) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   base::TimeTicks now = base::TimeTicks::Now();
   return AddTraceEventWithThreadIdAndTimestamp(
@@ -933,10 +933,10 @@
     const unsigned char* category_group_enabled,
     const char* event_name,
     const char* arg_name,
-    scoped_ptr<ARG1_CONVERTABLE_TYPE> arg_value) {
+    std::unique_ptr<ARG1_CONVERTABLE_TYPE> arg_value) {
   const char* arg_names[1] = {arg_name};
   unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE};
-  scoped_ptr<base::trace_event::ConvertableToTraceFormat>
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
       convertable_values[1] = {std::move(arg_value)};
   base::trace_event::TraceLog::GetInstance()->AddMetadataEvent(
       category_group_enabled, event_name,
diff --git a/base/trace_event/trace_event_android.cc b/base/trace_event/trace_event_android.cc
index 0053ca6..d406d2c 100644
--- a/base/trace_event/trace_event_android.cc
+++ b/base/trace_event/trace_event_android.cc
@@ -38,15 +38,16 @@
   }
 }
 
-void WriteEvent(char phase,
-                const char* category_group,
-                const char* name,
-                unsigned long long id,
-                const char** arg_names,
-                const unsigned char* arg_types,
-                const TraceEvent::TraceValue* arg_values,
-                const scoped_ptr<ConvertableToTraceFormat>* convertable_values,
-                unsigned int flags) {
+void WriteEvent(
+    char phase,
+    const char* category_group,
+    const char* name,
+    unsigned long long id,
+    const char** arg_names,
+    const unsigned char* arg_types,
+    const TraceEvent::TraceValue* arg_values,
+    const std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
+    unsigned int flags) {
   std::string out = StringPrintf("%c|%d|%s", phase, getpid(), name);
   if (flags & TRACE_EVENT_FLAG_HAS_ID)
     StringAppendF(&out, "-%" PRIx64, static_cast<uint64_t>(id));
diff --git a/base/trace_event/trace_event_argument.cc b/base/trace_event/trace_event_argument.cc
index 6d787c8..f86ac57 100644
--- a/base/trace_event/trace_event_argument.cc
+++ b/base/trace_event/trace_event_argument.cc
@@ -10,6 +10,7 @@
 
 #include "base/bits.h"
 #include "base/json/json_writer.h"
+#include "base/memory/ptr_util.h"
 #include "base/trace_event/trace_event_memory_overhead.h"
 #include "base/values.h"
 
@@ -234,7 +235,8 @@
   pickle_.WriteBytes(&kTypeEndArray, 1);
 }
 
-void TracedValue::SetValue(const char* name, scoped_ptr<base::Value> value) {
+void TracedValue::SetValue(const char* name,
+                           std::unique_ptr<base::Value> value) {
   SetBaseValueWithCopiedName(name, *value);
 }
 
@@ -347,8 +349,8 @@
   }
 }
 
-scoped_ptr<base::Value> TracedValue::ToBaseValue() const {
-  scoped_ptr<DictionaryValue> root(new DictionaryValue);
+std::unique_ptr<base::Value> TracedValue::ToBaseValue() const {
+  std::unique_ptr<DictionaryValue> root(new DictionaryValue);
   DictionaryValue* cur_dict = root.get();
   ListValue* cur_list = nullptr;
   std::vector<Value*> stack;
@@ -362,11 +364,11 @@
         auto new_dict = new DictionaryValue();
         if (cur_dict) {
           cur_dict->SetWithoutPathExpansion(ReadKeyName(it),
-                                            make_scoped_ptr(new_dict));
+                                            WrapUnique(new_dict));
           stack.push_back(cur_dict);
           cur_dict = new_dict;
         } else {
-          cur_list->Append(make_scoped_ptr(new_dict));
+          cur_list->Append(WrapUnique(new_dict));
           stack.push_back(cur_list);
           cur_list = nullptr;
           cur_dict = new_dict;
@@ -387,12 +389,12 @@
         auto new_list = new ListValue();
         if (cur_dict) {
           cur_dict->SetWithoutPathExpansion(ReadKeyName(it),
-                                            make_scoped_ptr(new_list));
+                                            WrapUnique(new_list));
           stack.push_back(cur_dict);
           cur_dict = nullptr;
           cur_list = new_list;
         } else {
-          cur_list->Append(make_scoped_ptr(new_list));
+          cur_list->Append(WrapUnique(new_list));
           stack.push_back(cur_list);
           cur_list = new_list;
         }
diff --git a/base/trace_event/trace_event_argument.h b/base/trace_event/trace_event_argument.h
index d706479..81d8c01 100644
--- a/base/trace_event/trace_event_argument.h
+++ b/base/trace_event/trace_event_argument.h
@@ -7,11 +7,11 @@
 
 #include <stddef.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/pickle.h"
 #include "base/strings/string_piece.h"
 #include "base/trace_event/trace_event_impl.h"
@@ -67,13 +67,13 @@
   // a copy-and-translation of the base::Value into the equivalent TracedValue.
   // TODO(primiano): migrate the (three) existing clients to the cheaper
   // SetValue(TracedValue) API. crbug.com/495628.
-  void SetValue(const char* name, scoped_ptr<base::Value> value);
+  void SetValue(const char* name, std::unique_ptr<base::Value> value);
   void SetBaseValueWithCopiedName(base::StringPiece name,
                                   const base::Value& value);
   void AppendBaseValue(const base::Value& value);
 
   // Public for tests only.
-  scoped_ptr<base::Value> ToBaseValue() const;
+  std::unique_ptr<base::Value> ToBaseValue() const;
 
  private:
   Pickle pickle_;
diff --git a/base/trace_event/trace_event_argument_unittest.cc b/base/trace_event/trace_event_argument_unittest.cc
index 644d4946..61395f4 100644
--- a/base/trace_event/trace_event_argument_unittest.cc
+++ b/base/trace_event/trace_event_argument_unittest.cc
@@ -8,6 +8,7 @@
 
 #include <utility>
 
+#include "base/memory/ptr_util.h"
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -15,7 +16,7 @@
 namespace trace_event {
 
 TEST(TraceEventArgumentTest, FlatDictionary) {
-  scoped_ptr<TracedValue> value(new TracedValue());
+  std::unique_ptr<TracedValue> value(new TracedValue());
   value->SetInteger("int", 2014);
   value->SetDouble("double", 0.0);
   value->SetBoolean("bool", true);
@@ -28,7 +29,7 @@
 }
 
 TEST(TraceEventArgumentTest, NoDotPathExpansion) {
-  scoped_ptr<TracedValue> value(new TracedValue());
+  std::unique_ptr<TracedValue> value(new TracedValue());
   value->SetInteger("in.t", 2014);
   value->SetDouble("doub.le", 0.0);
   value->SetBoolean("bo.ol", true);
@@ -41,7 +42,7 @@
 }
 
 TEST(TraceEventArgumentTest, Hierarchy) {
-  scoped_ptr<TracedValue> value(new TracedValue());
+  std::unique_ptr<TracedValue> value(new TracedValue());
   value->SetInteger("i0", 2014);
   value->BeginDictionary("dict1");
   value->SetInteger("i1", 2014);
@@ -77,7 +78,7 @@
     kLongString3[i] = 'a' + (i % 25);
   kLongString3[sizeof(kLongString3) - 1] = '\0';
 
-  scoped_ptr<TracedValue> value(new TracedValue());
+  std::unique_ptr<TracedValue> value(new TracedValue());
   value->SetString("a", "short");
   value->SetString("b", kLongString);
   value->BeginArray("c");
@@ -100,20 +101,20 @@
   FundamentalValue bool_value(true);
   FundamentalValue double_value(42.0f);
 
-  auto dict_value = make_scoped_ptr(new DictionaryValue);
+  auto dict_value = WrapUnique(new DictionaryValue);
   dict_value->SetBoolean("bool", true);
   dict_value->SetInteger("int", 42);
   dict_value->SetDouble("double", 42.0f);
   dict_value->SetString("string", std::string("a") + "b");
   dict_value->SetString("string", std::string("a") + "b");
 
-  auto list_value = make_scoped_ptr(new ListValue);
+  auto list_value = WrapUnique(new ListValue);
   list_value->AppendBoolean(false);
   list_value->AppendInteger(1);
   list_value->AppendString("in_list");
   list_value->Append(std::move(dict_value));
 
-  scoped_ptr<TracedValue> value(new TracedValue());
+  std::unique_ptr<TracedValue> value(new TracedValue());
   value->BeginDictionary("outer_dict");
   value->SetValue("inner_list", std::move(list_value));
   value->EndDictionary();
@@ -130,10 +131,10 @@
 }
 
 TEST(TraceEventArgumentTest, PassTracedValue) {
-  auto dict_value = make_scoped_ptr(new TracedValue());
+  auto dict_value = WrapUnique(new TracedValue());
   dict_value->SetInteger("a", 1);
 
-  auto nested_dict_value = make_scoped_ptr(new TracedValue());
+  auto nested_dict_value = WrapUnique(new TracedValue());
   nested_dict_value->SetInteger("b", 2);
   nested_dict_value->BeginArray("c");
   nested_dict_value->AppendString("foo");
diff --git a/base/trace_event/trace_event_etw_export_win.cc b/base/trace_event/trace_event_etw_export_win.cc
index 838a041..06a6b95 100644
--- a/base/trace_event/trace_event_etw_export_win.cc
+++ b/base/trace_event/trace_event_etw_export_win.cc
@@ -237,7 +237,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    const scoped_ptr<ConvertableToTraceFormat>* convertable_values) {
+    const std::unique_ptr<ConvertableToTraceFormat>* convertable_values) {
   // We bail early in case exporting is disabled or no consumer is listening.
   auto* instance = GetInstance();
   if (!instance || !instance->etw_export_enabled_ || !EventEnabledChromeEvent())
diff --git a/base/trace_event/trace_event_etw_export_win.h b/base/trace_event/trace_event_etw_export_win.h
index 4ae11d6..8ee2d63 100644
--- a/base/trace_event/trace_event_etw_export_win.h
+++ b/base/trace_event/trace_event_etw_export_win.h
@@ -50,7 +50,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      const scoped_ptr<ConvertableToTraceFormat>* convertable_values);
+      const std::unique_ptr<ConvertableToTraceFormat>* convertable_values);
 
   // Exports an ETW event that marks the end of a complete event.
   static void AddCompleteEndEvent(const char* name);
@@ -87,7 +87,7 @@
 
   // Background thread that monitors changes to the ETW keyword and updates
   // the enabled categories when a change occurs.
-  scoped_ptr<ETWKeywordUpdateThread> keyword_update_thread_;
+  std::unique_ptr<ETWKeywordUpdateThread> keyword_update_thread_;
   PlatformThreadHandle keyword_update_thread_handle_;
 
   DISALLOW_COPY_AND_ASSIGN(TraceEventETWExport);
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc
index c0dc843..4ab0d35 100644
--- a/base/trace_event/trace_event_impl.cc
+++ b/base/trace_event/trace_event_impl.cc
@@ -56,7 +56,7 @@
 TraceEvent::~TraceEvent() {
 }
 
-void TraceEvent::MoveFrom(scoped_ptr<TraceEvent> other) {
+void TraceEvent::MoveFrom(std::unique_ptr<TraceEvent> other) {
   timestamp_ = other->timestamp_;
   thread_timestamp_ = other->thread_timestamp_;
   duration_ = other->duration_;
@@ -94,7 +94,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   timestamp_ = timestamp;
   thread_timestamp_ = thread_timestamp;
diff --git a/base/trace_event/trace_event_impl.h b/base/trace_event/trace_event_impl.h
index df7151a..43822178 100644
--- a/base/trace_event/trace_event_impl.h
+++ b/base/trace_event/trace_event_impl.h
@@ -8,6 +8,7 @@
 
 #include <stdint.h>
 
+#include <memory>
 #include <stack>
 #include <string>
 #include <vector>
@@ -17,7 +18,6 @@
 #include "base/callback.h"
 #include "base/containers/hash_tables.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/observer_list.h"
 #include "base/single_thread_task_runner.h"
 #include "base/strings/string_util.h"
@@ -92,7 +92,7 @@
   TraceEvent();
   ~TraceEvent();
 
-  void MoveFrom(scoped_ptr<TraceEvent> other);
+  void MoveFrom(std::unique_ptr<TraceEvent> other);
 
   void Initialize(int thread_id,
                   TimeTicks timestamp,
@@ -107,7 +107,7 @@
                   const char** arg_names,
                   const unsigned char* arg_types,
                   const unsigned long long* arg_values,
-                  scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+                  std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
                   unsigned int flags);
 
   void Reset();
@@ -163,10 +163,11 @@
   unsigned long long id_;
   TraceValue arg_values_[kTraceMaxNumArgs];
   const char* arg_names_[kTraceMaxNumArgs];
-  scoped_ptr<ConvertableToTraceFormat> convertable_values_[kTraceMaxNumArgs];
+  std::unique_ptr<ConvertableToTraceFormat>
+      convertable_values_[kTraceMaxNumArgs];
   const unsigned char* category_group_enabled_;
   const char* name_;
-  scoped_ptr<std::string> parameter_copy_storage_;
+  std::unique_ptr<std::string> parameter_copy_storage_;
   // Depending on TRACE_EVENT_FLAG_HAS_PROCESS_ID the event will have either:
   //  tid: thread_id_, pid: current_process_id (default case).
   //  tid: -1, pid: process_id_ (when flags_ & TRACE_EVENT_FLAG_HAS_PROCESS_ID).
diff --git a/base/trace_event/trace_event_system_stats_monitor.cc b/base/trace_event/trace_event_system_stats_monitor.cc
index d42ad000..54fe8e6aa 100644
--- a/base/trace_event/trace_event_system_stats_monitor.cc
+++ b/base/trace_event/trace_event_system_stats_monitor.cc
@@ -4,12 +4,13 @@
 
 #include "base/trace_event/trace_event_system_stats_monitor.h"
 
+#include <memory>
+
 #include "base/debug/leak_annotations.h"
 #include "base/json/json_writer.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/thread_task_runner_handle.h"
@@ -104,7 +105,7 @@
 
 // If system tracing is enabled, dumps a profile to the tracing system.
 void TraceEventSystemStatsMonitor::DumpSystemStats() {
-  scoped_ptr<SystemStatsHolder> dump_holder(new SystemStatsHolder());
+  std::unique_ptr<SystemStatsHolder> dump_holder(new SystemStatsHolder());
   dump_holder->GetSystemProfilingStats();
 
   TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
diff --git a/base/trace_event/trace_event_system_stats_monitor_unittest.cc b/base/trace_event/trace_event_system_stats_monitor_unittest.cc
index a90e74d1..e834ded 100644
--- a/base/trace_event/trace_event_system_stats_monitor_unittest.cc
+++ b/base/trace_event/trace_event_system_stats_monitor_unittest.cc
@@ -36,7 +36,7 @@
   EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
 
   // Creating a system stats monitor adds it to the TraceLog observer list.
-  scoped_ptr<TraceEventSystemStatsMonitor> system_stats_monitor(
+  std::unique_ptr<TraceEventSystemStatsMonitor> system_stats_monitor(
       new TraceEventSystemStatsMonitor(message_loop.task_runner()));
   EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
   EXPECT_TRUE(
diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc
index c98c698..91155ea 100644
--- a/base/trace_event/trace_event_unittest.cc
+++ b/base/trace_event/trace_event_unittest.cc
@@ -2,11 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/trace_event/trace_event.h"
+
 #include <math.h>
 #include <stddef.h>
 #include <stdint.h>
 
 #include <cstdlib>
+#include <memory>
 
 #include "base/bind.h"
 #include "base/command_line.h"
@@ -15,7 +18,6 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted_memory.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/process/process_handle.h"
 #include "base/single_thread_task_runner.h"
@@ -27,7 +29,6 @@
 #include "base/threading/thread.h"
 #include "base/time/time.h"
 #include "base/trace_event/trace_buffer.h"
-#include "base/trace_event/trace_event.h"
 #include "base/trace_event/trace_event_synthetic_delay.h"
 #include "base/values.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -183,7 +184,7 @@
   trace_buffer_.AddFragment(events_str->data());
   trace_buffer_.Finish();
 
-  scoped_ptr<Value> root = base::JSONReader::Read(
+  std::unique_ptr<Value> root = base::JSONReader::Read(
       json_output_.json_output, JSON_PARSE_RFC | JSON_DETACHABLE_CHILDREN);
 
   if (!root.get()) {
@@ -196,7 +197,7 @@
 
   // Move items into our aggregate collection
   while (root_list->GetSize()) {
-    scoped_ptr<Value> item;
+    std::unique_ptr<Value> item;
     root_list->Remove(0, &item);
     trace_parsed_.Append(item.release());
   }
@@ -266,7 +267,7 @@
 }
 
 void TraceEventTestFixture::DropTracedMetadataRecords() {
-  scoped_ptr<ListValue> old_trace_parsed(trace_parsed_.DeepCopy());
+  std::unique_ptr<ListValue> old_trace_parsed(trace_parsed_.DeepCopy());
   size_t old_trace_parsed_size = old_trace_parsed->GetSize();
   trace_parsed_.Clear();
 
@@ -1247,8 +1248,8 @@
     int* num_calls_;
   };
 
-  scoped_ptr<ConvertableToTraceFormat> conv1(new Convertable(&num_calls));
-  scoped_ptr<Convertable> conv2(new Convertable(&num_calls));
+  std::unique_ptr<ConvertableToTraceFormat> conv1(new Convertable(&num_calls));
+  std::unique_ptr<Convertable> conv2(new Convertable(&num_calls));
 
   BeginTrace();
   TRACE_EVENT_API_ADD_METADATA_EVENT(
@@ -2054,19 +2055,20 @@
   TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
                                       TraceLog::RECORDING_MODE);
 
-  scoped_ptr<ConvertableToTraceFormat> data(new MyData());
-  scoped_ptr<ConvertableToTraceFormat> data1(new MyData());
-  scoped_ptr<ConvertableToTraceFormat> data2(new MyData());
+  std::unique_ptr<ConvertableToTraceFormat> data(new MyData());
+  std::unique_ptr<ConvertableToTraceFormat> data1(new MyData());
+  std::unique_ptr<ConvertableToTraceFormat> data2(new MyData());
   TRACE_EVENT1("foo", "bar", "data", std::move(data));
   TRACE_EVENT2("foo", "baz", "data1", std::move(data1), "data2",
                std::move(data2));
 
-  // Check that scoped_ptr<DerivedClassOfConvertable> are properly treated as
+  // Check that std::unique_ptr<DerivedClassOfConvertable> are properly treated
+  // as
   // convertable and not accidentally casted to bool.
-  scoped_ptr<MyData> convertData1(new MyData());
-  scoped_ptr<MyData> convertData2(new MyData());
-  scoped_ptr<MyData> convertData3(new MyData());
-  scoped_ptr<MyData> convertData4(new MyData());
+  std::unique_ptr<MyData> convertData1(new MyData());
+  std::unique_ptr<MyData> convertData2(new MyData());
+  std::unique_ptr<MyData> convertData3(new MyData());
+  std::unique_ptr<MyData> convertData4(new MyData());
   TRACE_EVENT2("foo", "string_first", "str", "string value 1", "convert",
                std::move(convertData1));
   TRACE_EVENT2("foo", "string_second", "convert", std::move(convertData2),
@@ -2686,7 +2688,8 @@
   size_t chunk_index;
   EXPECT_EQ(0u, buffer->Size());
 
-  scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
+  std::unique_ptr<TraceBufferChunk* []> chunks(
+      new TraceBufferChunk*[num_chunks]);
   for (size_t i = 0; i < num_chunks; ++i) {
     chunks[i] = buffer->GetChunk(&chunk_index).release();
     EXPECT_TRUE(chunks[i]);
@@ -2702,7 +2705,7 @@
 
   // Return all chunks in original order.
   for (size_t i = 0; i < num_chunks; ++i)
-    buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
+    buffer->ReturnChunk(i, std::unique_ptr<TraceBufferChunk>(chunks[i]));
 
   // Should recycle the chunks in the returned order.
   for (size_t i = 0; i < num_chunks; ++i) {
@@ -2715,9 +2718,8 @@
 
   // Return all chunks in reverse order.
   for (size_t i = 0; i < num_chunks; ++i) {
-    buffer->ReturnChunk(
-        num_chunks - i - 1,
-        scoped_ptr<TraceBufferChunk>(chunks[num_chunks - i - 1]));
+    buffer->ReturnChunk(num_chunks - i - 1, std::unique_ptr<TraceBufferChunk>(
+                                                chunks[num_chunks - i - 1]));
   }
 
   // Should recycle the chunks in the returned order.
@@ -2730,7 +2732,7 @@
   }
 
   for (size_t i = 0; i < num_chunks; ++i)
-    buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
+    buffer->ReturnChunk(i, std::unique_ptr<TraceBufferChunk>(chunks[i]));
 
   TraceLog::GetInstance()->SetDisabled();
 }
@@ -2747,7 +2749,8 @@
   EXPECT_FALSE(buffer->NextChunk());
 
   size_t half_chunks = num_chunks / 2;
-  scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]);
+  std::unique_ptr<TraceBufferChunk* []> chunks(
+      new TraceBufferChunk*[half_chunks]);
 
   for (size_t i = 0; i < half_chunks; ++i) {
     chunks[i] = buffer->GetChunk(&chunk_index).release();
@@ -2755,7 +2758,7 @@
     EXPECT_EQ(i, chunk_index);
   }
   for (size_t i = 0; i < half_chunks; ++i)
-    buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
+    buffer->ReturnChunk(i, std::unique_ptr<TraceBufferChunk>(chunks[i]));
 
   for (size_t i = 0; i < half_chunks; ++i)
     EXPECT_EQ(chunks[i], buffer->NextChunk());
@@ -2774,7 +2777,8 @@
   EXPECT_EQ(0u, buffer->Size());
   EXPECT_FALSE(buffer->NextChunk());
 
-  scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
+  std::unique_ptr<TraceBufferChunk* []> chunks(
+      new TraceBufferChunk*[num_chunks]);
 
   for (size_t i = 0; i < num_chunks; ++i) {
     chunks[i] = buffer->GetChunk(&chunk_index).release();
@@ -2782,7 +2786,7 @@
     EXPECT_EQ(i, chunk_index);
   }
   for (size_t i = 0; i < num_chunks; ++i)
-    buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
+    buffer->ReturnChunk(i, std::unique_ptr<TraceBufferChunk>(chunks[i]));
 
   for (size_t i = 0; i < num_chunks; ++i)
     EXPECT_TRUE(chunks[i] == buffer->NextChunk());
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc
index 1da4a63..a0b12fb 100644
--- a/base/trace_event/trace_log.cc
+++ b/base/trace_event/trace_log.cc
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 #include <cmath>
+#include <memory>
 #include <utility>
 
 #include "base/base_switches.h"
@@ -16,7 +17,6 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted_memory.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 #include "base/process/process_metrics.h"
 #include "base/stl_util.h"
@@ -241,7 +241,7 @@
   // Since TraceLog is a leaky singleton, trace_log_ will always be valid
   // as long as the thread exists.
   TraceLog* trace_log_;
-  scoped_ptr<TraceBufferChunk> chunk_;
+  std::unique_ptr<TraceBufferChunk> chunk_;
   size_t chunk_index_;
   int generation_;
 
@@ -901,7 +901,7 @@
 
 // Usually it runs on a different thread.
 void TraceLog::ConvertTraceEventsToTraceFormat(
-    scoped_ptr<TraceBuffer> logged_events,
+    std::unique_ptr<TraceBuffer> logged_events,
     const OutputCallback& flush_output_callback,
     const ArgumentFilterPredicate& argument_filter_predicate) {
   if (flush_output_callback.is_null())
@@ -927,7 +927,7 @@
 }
 
 void TraceLog::FinishFlush(int generation, bool discard_events) {
-  scoped_ptr<TraceBuffer> previous_logged_events;
+  std::unique_ptr<TraceBuffer> previous_logged_events;
   OutputCallback flush_output_callback;
   ArgumentFilterPredicate argument_filter_predicate;
 
@@ -1035,7 +1035,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   base::TimeTicks now = base::TimeTicks::Now();
@@ -1067,7 +1067,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   base::TimeTicks now = base::TimeTicks::Now();
@@ -1099,7 +1099,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   base::TimeTicks now = base::TimeTicks::Now();
   return AddTraceEventWithThreadIdAndTimestamp(
@@ -1133,7 +1133,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   return AddTraceEventWithThreadIdAndTimestamp(
       phase,
@@ -1165,7 +1165,7 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
   TraceEventHandle handle = {0, 0, 0};
   if (!*category_group_enabled)
@@ -1339,9 +1339,9 @@
     const char** arg_names,
     const unsigned char* arg_types,
     const unsigned long long* arg_values,
-    scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+    std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
     unsigned int flags) {
-  scoped_ptr<TraceEvent> trace_event(new TraceEvent);
+  std::unique_ptr<TraceEvent> trace_event(new TraceEvent);
   int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
   ThreadTicks thread_now = ThreadNow();
   TimeTicks now = OffsetNow();
diff --git a/base/trace_event/trace_log.h b/base/trace_event/trace_log.h
index 67477c4..3f09674 100644
--- a/base/trace_event/trace_log.h
+++ b/base/trace_event/trace_log.h
@@ -8,6 +8,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -15,7 +16,6 @@
 #include "base/containers/hash_tables.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "base/trace_event/memory_dump_provider.h"
 #include "base/trace_event/trace_config.h"
@@ -191,7 +191,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
   TraceEventHandle AddTraceEventWithBindId(
       char phase,
@@ -204,7 +204,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
   TraceEventHandle AddTraceEventWithProcessId(
       char phase,
@@ -217,7 +217,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
   TraceEventHandle AddTraceEventWithThreadIdAndTimestamp(
       char phase,
@@ -231,7 +231,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
   TraceEventHandle AddTraceEventWithThreadIdAndTimestamp(
       char phase,
@@ -246,7 +246,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
 
   // Adds a metadata event that will be written when the trace log is flushed.
@@ -257,7 +257,7 @@
       const char** arg_names,
       const unsigned char* arg_types,
       const unsigned long long* arg_values,
-      scoped_ptr<ConvertableToTraceFormat>* convertable_values,
+      std::unique_ptr<ConvertableToTraceFormat>* convertable_values,
       unsigned int flags);
 
   void UpdateTraceEventDuration(const unsigned char* category_group_enabled,
@@ -400,7 +400,7 @@
   void FlushCurrentThread(int generation, bool discard_events);
   // Usually it runs on a different thread.
   static void ConvertTraceEventsToTraceFormat(
-      scoped_ptr<TraceBuffer> logged_events,
+      std::unique_ptr<TraceBuffer> logged_events,
       const TraceLog::OutputCallback& flush_output_callback,
       const ArgumentFilterPredicate& argument_filter_predicate);
   void FinishFlush(int generation, bool discard_events);
@@ -437,8 +437,8 @@
   Lock thread_info_lock_;
   Mode mode_;
   int num_traces_recorded_;
-  scoped_ptr<TraceBuffer> logged_events_;
-  std::vector<scoped_ptr<TraceEvent>> metadata_events_;
+  std::unique_ptr<TraceBuffer> logged_events_;
+  std::vector<std::unique_ptr<TraceEvent>> metadata_events_;
   subtle::AtomicWord /* EventCallback */ event_callback_;
   bool dispatching_to_observer_list_;
   std::vector<EnabledStateObserver*> enabled_state_observer_list_;
@@ -470,7 +470,7 @@
   subtle::AtomicWord /* Options */ trace_options_;
 
   // Sampling thread handles.
-  scoped_ptr<TraceSamplingThread> sampling_thread_;
+  std::unique_ptr<TraceSamplingThread> sampling_thread_;
   PlatformThreadHandle sampling_thread_handle_;
 
   TraceConfig trace_config_;
@@ -487,7 +487,7 @@
 
   // For events which can't be added into the thread local buffer, e.g. events
   // from threads without a message loop.
-  scoped_ptr<TraceBufferChunk> thread_shared_chunk_;
+  std::unique_ptr<TraceBufferChunk> thread_shared_chunk_;
   size_t thread_shared_chunk_index_;
 
   // Set when asynchronous Flush is in progress.
diff --git a/base/trace_event/winheap_dump_provider_win.cc b/base/trace_event/winheap_dump_provider_win.cc
index 7d003c9..8095636 100644
--- a/base/trace_event/winheap_dump_provider_win.cc
+++ b/base/trace_event/winheap_dump_provider_win.cc
@@ -80,7 +80,7 @@
   //
   // This is inherently racy as is, but it's not something that we observe a lot
   // in Chrome, the heaps tend to be created at startup only.
-  scoped_ptr<HANDLE[]> all_heaps(new HANDLE[number_of_heaps]);
+  std::unique_ptr<HANDLE[]> all_heaps(new HANDLE[number_of_heaps]);
   if (::GetProcessHeaps(number_of_heaps, all_heaps.get()) != number_of_heaps)
     return false;
 
diff --git a/base/tracked_objects_unittest.cc b/base/tracked_objects_unittest.cc
index be86cbb..70d9601 100644
--- a/base/tracked_objects_unittest.cc
+++ b/base/tracked_objects_unittest.cc
@@ -9,7 +9,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/process/process_handle.h"
 #include "base/time/time.h"
 #include "base/tracking_info.h"
@@ -239,7 +240,7 @@
 TEST_F(TrackedObjectsTest, DeathDataTestRecordDeath) {
   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
 
-  scoped_ptr<DeathData> data(new DeathData());
+  std::unique_ptr<DeathData> data(new DeathData());
   ASSERT_NE(data, nullptr);
   EXPECT_EQ(data->run_duration_sum(), 0);
   EXPECT_EQ(data->run_duration_max(), 0);
@@ -278,7 +279,7 @@
 TEST_F(TrackedObjectsTest, DeathDataTest2Phases) {
   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE);
 
-  scoped_ptr<DeathData> data(new DeathData());
+  std::unique_ptr<DeathData> data(new DeathData());
   ASSERT_NE(data, nullptr);
 
   int32_t run_ms = 42;
diff --git a/base/values.cc b/base/values.cc
index 5a789e9..1b87498 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -13,6 +13,7 @@
 
 #include "base/json/json_writer.h"
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/move.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -21,15 +22,15 @@
 
 namespace {
 
-scoped_ptr<Value> CopyWithoutEmptyChildren(const Value& node);
+std::unique_ptr<Value> CopyWithoutEmptyChildren(const Value& node);
 
 // Make a deep copy of |node|, but don't include empty lists or dictionaries
 // in the copy. It's possible for this function to return NULL and it
 // expects |node| to always be non-NULL.
-scoped_ptr<ListValue> CopyListWithoutEmptyChildren(const ListValue& list) {
-  scoped_ptr<ListValue> copy;
+std::unique_ptr<ListValue> CopyListWithoutEmptyChildren(const ListValue& list) {
+  std::unique_ptr<ListValue> copy;
   for (ListValue::const_iterator it = list.begin(); it != list.end(); ++it) {
-    scoped_ptr<Value> child_copy = CopyWithoutEmptyChildren(**it);
+    std::unique_ptr<Value> child_copy = CopyWithoutEmptyChildren(**it);
     if (child_copy) {
       if (!copy)
         copy.reset(new ListValue);
@@ -39,11 +40,11 @@
   return copy;
 }
 
-scoped_ptr<DictionaryValue> CopyDictionaryWithoutEmptyChildren(
+std::unique_ptr<DictionaryValue> CopyDictionaryWithoutEmptyChildren(
     const DictionaryValue& dict) {
-  scoped_ptr<DictionaryValue> copy;
+  std::unique_ptr<DictionaryValue> copy;
   for (DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
-    scoped_ptr<Value> child_copy = CopyWithoutEmptyChildren(it.value());
+    std::unique_ptr<Value> child_copy = CopyWithoutEmptyChildren(it.value());
     if (child_copy) {
       if (!copy)
         copy.reset(new DictionaryValue);
@@ -53,7 +54,7 @@
   return copy;
 }
 
-scoped_ptr<Value> CopyWithoutEmptyChildren(const Value& node) {
+std::unique_ptr<Value> CopyWithoutEmptyChildren(const Value& node) {
   switch (node.GetType()) {
     case Value::TYPE_LIST:
       return CopyListWithoutEmptyChildren(static_cast<const ListValue&>(node));
@@ -89,8 +90,8 @@
 }
 
 // static
-scoped_ptr<Value> Value::CreateNullValue() {
-  return make_scoped_ptr(new Value(TYPE_NULL));
+std::unique_ptr<Value> Value::CreateNullValue() {
+  return WrapUnique(new Value(TYPE_NULL));
 }
 
 bool Value::GetAsBinary(const BinaryValue** out_value) const {
@@ -144,8 +145,8 @@
   return CreateNullValue().release();
 }
 
-scoped_ptr<Value> Value::CreateDeepCopy() const {
-  return make_scoped_ptr(DeepCopy());
+std::unique_ptr<Value> Value::CreateDeepCopy() const {
+  return WrapUnique(DeepCopy());
 }
 
 bool Value::Equals(const Value* other) const {
@@ -313,7 +314,7 @@
       size_(0) {
 }
 
-BinaryValue::BinaryValue(scoped_ptr<char[]> buffer, size_t size)
+BinaryValue::BinaryValue(std::unique_ptr<char[]> buffer, size_t size)
     : Value(TYPE_BINARY), buffer_(std::move(buffer)), size_(size) {}
 
 BinaryValue::~BinaryValue() {
@@ -324,7 +325,7 @@
                                                  size_t size) {
   char* buffer_copy = new char[size];
   memcpy(buffer_copy, buffer, size);
-  scoped_ptr<char[]> scoped_buffer_copy(buffer_copy);
+  std::unique_ptr<char[]> scoped_buffer_copy(buffer_copy);
   return new BinaryValue(std::move(scoped_buffer_copy), size);
 }
 
@@ -350,11 +351,12 @@
 ///////////////////// DictionaryValue ////////////////////
 
 // static
-scoped_ptr<DictionaryValue> DictionaryValue::From(scoped_ptr<Value> value) {
+std::unique_ptr<DictionaryValue> DictionaryValue::From(
+    std::unique_ptr<Value> value) {
   DictionaryValue* out;
   if (value && value->GetAsDictionary(&out)) {
     ignore_result(value.release());
-    return make_scoped_ptr(out);
+    return WrapUnique(out);
   }
   return nullptr;
 }
@@ -396,7 +398,8 @@
   dictionary_.clear();
 }
 
-void DictionaryValue::Set(const std::string& path, scoped_ptr<Value> in_value) {
+void DictionaryValue::Set(const std::string& path,
+                          std::unique_ptr<Value> in_value) {
   DCHECK(IsStringUTF8(path));
   DCHECK(in_value);
 
@@ -422,7 +425,7 @@
 }
 
 void DictionaryValue::Set(const std::string& path, Value* in_value) {
-  Set(path, make_scoped_ptr(in_value));
+  Set(path, WrapUnique(in_value));
 }
 
 void DictionaryValue::SetBoolean(const std::string& path, bool in_value) {
@@ -448,7 +451,7 @@
 }
 
 void DictionaryValue::SetWithoutPathExpansion(const std::string& key,
-                                              scoped_ptr<Value> in_value) {
+                                              std::unique_ptr<Value> in_value) {
   Value* bare_ptr = in_value.release();
   // If there's an existing value here, we need to delete it, because
   // we own all our children.
@@ -463,7 +466,7 @@
 
 void DictionaryValue::SetWithoutPathExpansion(const std::string& key,
                                               Value* in_value) {
-  SetWithoutPathExpansion(key, make_scoped_ptr(in_value));
+  SetWithoutPathExpansion(key, WrapUnique(in_value));
 }
 
 void DictionaryValue::SetBooleanWithoutPathExpansion(
@@ -752,7 +755,7 @@
 }
 
 bool DictionaryValue::Remove(const std::string& path,
-                             scoped_ptr<Value>* out_value) {
+                             std::unique_ptr<Value>* out_value) {
   DCHECK(IsStringUTF8(path));
   std::string current_path(path);
   DictionaryValue* current_dictionary = this;
@@ -768,8 +771,9 @@
                                                         out_value);
 }
 
-bool DictionaryValue::RemoveWithoutPathExpansion(const std::string& key,
-                                                 scoped_ptr<Value>* out_value) {
+bool DictionaryValue::RemoveWithoutPathExpansion(
+    const std::string& key,
+    std::unique_ptr<Value>* out_value) {
   DCHECK(IsStringUTF8(key));
   ValueMap::iterator entry_iterator = dictionary_.find(key);
   if (entry_iterator == dictionary_.end())
@@ -785,7 +789,7 @@
 }
 
 bool DictionaryValue::RemovePath(const std::string& path,
-                                 scoped_ptr<Value>* out_value) {
+                                 std::unique_ptr<Value>* out_value) {
   bool result = false;
   size_t delimiter_position = path.find('.');
 
@@ -804,9 +808,10 @@
   return result;
 }
 
-scoped_ptr<DictionaryValue> DictionaryValue::DeepCopyWithoutEmptyChildren()
+std::unique_ptr<DictionaryValue> DictionaryValue::DeepCopyWithoutEmptyChildren()
     const {
-  scoped_ptr<DictionaryValue> copy = CopyDictionaryWithoutEmptyChildren(*this);
+  std::unique_ptr<DictionaryValue> copy =
+      CopyDictionaryWithoutEmptyChildren(*this);
   if (!copy)
     copy.reset(new DictionaryValue);
   return copy;
@@ -853,8 +858,8 @@
   return result;
 }
 
-scoped_ptr<DictionaryValue> DictionaryValue::CreateDeepCopy() const {
-  return make_scoped_ptr(DeepCopy());
+std::unique_ptr<DictionaryValue> DictionaryValue::CreateDeepCopy() const {
+  return WrapUnique(DeepCopy());
 }
 
 bool DictionaryValue::Equals(const Value* other) const {
@@ -882,11 +887,11 @@
 ///////////////////// ListValue ////////////////////
 
 // static
-scoped_ptr<ListValue> ListValue::From(scoped_ptr<Value> value) {
+std::unique_ptr<ListValue> ListValue::From(std::unique_ptr<Value> value) {
   ListValue* out;
   if (value && value->GetAsList(&out)) {
     ignore_result(value.release());
-    return make_scoped_ptr(out);
+    return WrapUnique(out);
   }
   return nullptr;
 }
@@ -921,7 +926,7 @@
   return true;
 }
 
-bool ListValue::Set(size_t index, scoped_ptr<Value> in_value) {
+bool ListValue::Set(size_t index, std::unique_ptr<Value> in_value) {
   return Set(index, in_value.release());
 }
 
@@ -1036,7 +1041,7 @@
       const_cast<const ListValue**>(out_value));
 }
 
-bool ListValue::Remove(size_t index, scoped_ptr<Value>* out_value) {
+bool ListValue::Remove(size_t index, std::unique_ptr<Value>* out_value) {
   if (index >= list_.size())
     return false;
 
@@ -1065,7 +1070,7 @@
 }
 
 ListValue::iterator ListValue::Erase(iterator iter,
-                                     scoped_ptr<Value>* out_value) {
+                                     std::unique_ptr<Value>* out_value) {
   if (out_value)
     out_value->reset(*iter);
   else
@@ -1074,7 +1079,7 @@
   return list_.erase(iter);
 }
 
-void ListValue::Append(scoped_ptr<Value> in_value) {
+void ListValue::Append(std::unique_ptr<Value> in_value) {
   Append(in_value.release());
 }
 
@@ -1167,8 +1172,8 @@
   return result;
 }
 
-scoped_ptr<ListValue> ListValue::CreateDeepCopy() const {
-  return make_scoped_ptr(DeepCopy());
+std::unique_ptr<ListValue> ListValue::CreateDeepCopy() const {
+  return WrapUnique(DeepCopy());
 }
 
 bool ListValue::Equals(const Value* other) const {
diff --git a/base/values.h b/base/values.h
index 141ea93..e2506cc 100644
--- a/base/values.h
+++ b/base/values.h
@@ -22,6 +22,7 @@
 
 #include <iosfwd>
 #include <map>
+#include <memory>
 #include <string>
 #include <utility>
 #include <vector>
@@ -29,7 +30,6 @@
 #include "base/base_export.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_piece.h"
 
@@ -66,7 +66,7 @@
 
   virtual ~Value();
 
-  static scoped_ptr<Value> CreateNullValue();
+  static std::unique_ptr<Value> CreateNullValue();
 
   // Returns the type of the value stored by the current Value object.
   // Each type will be implemented by only one subclass of Value, so it's
@@ -102,7 +102,7 @@
   // this works because C++ supports covariant return types.
   virtual Value* DeepCopy() const;
   // Preferred version of DeepCopy. TODO(estade): remove the above.
-  scoped_ptr<Value> CreateDeepCopy() const;
+  std::unique_ptr<Value> CreateDeepCopy() const;
 
   // Compares if two Value objects have equal contents.
   virtual bool Equals(const Value* other) const;
@@ -178,7 +178,7 @@
 
   // Creates a BinaryValue, taking ownership of the bytes pointed to by
   // |buffer|.
-  BinaryValue(scoped_ptr<char[]> buffer, size_t size);
+  BinaryValue(std::unique_ptr<char[]> buffer, size_t size);
 
   ~BinaryValue() override;
 
@@ -199,7 +199,7 @@
   bool Equals(const Value* other) const override;
 
  private:
-  scoped_ptr<char[]> buffer_;
+  std::unique_ptr<char[]> buffer_;
   size_t size_;
 
   DISALLOW_COPY_AND_ASSIGN(BinaryValue);
@@ -211,7 +211,7 @@
 class BASE_EXPORT DictionaryValue : public Value {
  public:
   // Returns |value| if it is a dictionary, nullptr otherwise.
-  static scoped_ptr<DictionaryValue> From(scoped_ptr<Value> value);
+  static std::unique_ptr<DictionaryValue> From(std::unique_ptr<Value> value);
 
   DictionaryValue();
   ~DictionaryValue() override;
@@ -239,7 +239,7 @@
   // If the key at any step of the way doesn't exist, or exists but isn't
   // a DictionaryValue, a new DictionaryValue will be created and attached
   // to the path in that location. |in_value| must be non-null.
-  void Set(const std::string& path, scoped_ptr<Value> in_value);
+  void Set(const std::string& path, std::unique_ptr<Value> in_value);
   // Deprecated version of the above. TODO(estade): remove.
   void Set(const std::string& path, Value* in_value);
 
@@ -254,7 +254,7 @@
   // Like Set(), but without special treatment of '.'.  This allows e.g. URLs to
   // be used as paths.
   void SetWithoutPathExpansion(const std::string& key,
-                               scoped_ptr<Value> in_value);
+                               std::unique_ptr<Value> in_value);
   // Deprecated version of the above. TODO(estade): remove.
   void SetWithoutPathExpansion(const std::string& key, Value* in_value);
 
@@ -329,21 +329,22 @@
   // |out_value|.  If |out_value| is NULL, the removed value will be deleted.
   // This method returns true if |path| is a valid path; otherwise it will
   // return false and the DictionaryValue object will be unchanged.
-  virtual bool Remove(const std::string& path, scoped_ptr<Value>* out_value);
+  virtual bool Remove(const std::string& path,
+                      std::unique_ptr<Value>* out_value);
 
   // Like Remove(), but without special treatment of '.'.  This allows e.g. URLs
   // to be used as paths.
   virtual bool RemoveWithoutPathExpansion(const std::string& key,
-                                          scoped_ptr<Value>* out_value);
+                                          std::unique_ptr<Value>* out_value);
 
   // Removes a path, clearing out all dictionaries on |path| that remain empty
   // after removing the value at |path|.
   virtual bool RemovePath(const std::string& path,
-                          scoped_ptr<Value>* out_value);
+                          std::unique_ptr<Value>* out_value);
 
   // Makes a copy of |this| but doesn't include empty dictionaries and lists in
   // the copy.  This never returns NULL, even if |this| itself is empty.
-  scoped_ptr<DictionaryValue> DeepCopyWithoutEmptyChildren() const;
+  std::unique_ptr<DictionaryValue> DeepCopyWithoutEmptyChildren() const;
 
   // Merge |dictionary| into this dictionary. This is done recursively, i.e. any
   // sub-dictionaries will be merged as well. In case of key collisions, the
@@ -377,7 +378,7 @@
   // Overridden from Value:
   DictionaryValue* DeepCopy() const override;
   // Preferred version of DeepCopy. TODO(estade): remove the above.
-  scoped_ptr<DictionaryValue> CreateDeepCopy() const;
+  std::unique_ptr<DictionaryValue> CreateDeepCopy() const;
   bool Equals(const Value* other) const override;
 
  private:
@@ -393,7 +394,7 @@
   typedef ValueVector::const_iterator const_iterator;
 
   // Returns |value| if it is a list, nullptr otherwise.
-  static scoped_ptr<ListValue> From(scoped_ptr<Value> value);
+  static std::unique_ptr<ListValue> From(std::unique_ptr<Value> value);
 
   ListValue();
   ~ListValue() override;
@@ -414,7 +415,7 @@
   // the value is a null pointer.
   bool Set(size_t index, Value* in_value);
   // Preferred version of the above. TODO(estade): remove the above.
-  bool Set(size_t index, scoped_ptr<Value> in_value);
+  bool Set(size_t index, std::unique_ptr<Value> in_value);
 
   // Gets the Value at the given index.  Modifies |out_value| (and returns true)
   // only if the index falls within the current list range.
@@ -446,7 +447,7 @@
   // passed out via |out_value|.  If |out_value| is NULL, the removed value will
   // be deleted.  This method returns true if |index| is valid; otherwise
   // it will return false and the ListValue object will be unchanged.
-  virtual bool Remove(size_t index, scoped_ptr<Value>* out_value);
+  virtual bool Remove(size_t index, std::unique_ptr<Value>* out_value);
 
   // Removes the first instance of |value| found in the list, if any, and
   // deletes it. |index| is the location where |value| was found. Returns false
@@ -457,10 +458,10 @@
   // deleted, otherwise ownership of the value is passed back to the caller.
   // Returns an iterator pointing to the location of the element that
   // followed the erased element.
-  iterator Erase(iterator iter, scoped_ptr<Value>* out_value);
+  iterator Erase(iterator iter, std::unique_ptr<Value>* out_value);
 
   // Appends a Value to the end of the list.
-  void Append(scoped_ptr<Value> in_value);
+  void Append(std::unique_ptr<Value> in_value);
   // Deprecated version of the above. TODO(estade): remove.
   void Append(Value* in_value);
 
@@ -504,7 +505,7 @@
   bool Equals(const Value* other) const override;
 
   // Preferred version of DeepCopy. TODO(estade): remove DeepCopy.
-  scoped_ptr<ListValue> CreateDeepCopy() const;
+  std::unique_ptr<ListValue> CreateDeepCopy() const;
 
  private:
   ValueVector list_;
@@ -533,8 +534,8 @@
   // error_code will be set with the underlying error.
   // If |error_message| is non-null, it will be filled in with a formatted
   // error message including the location of the error if appropriate.
-  virtual scoped_ptr<Value> Deserialize(int* error_code,
-                                        std::string* error_str) = 0;
+  virtual std::unique_ptr<Value> Deserialize(int* error_code,
+                                             std::string* error_str) = 0;
 };
 
 // Stream operator so Values can be used in assertion statements.  In order that
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 66453e0..ac788305 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -2,15 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/values.h"
+
 #include <stddef.h>
 
 #include <limits>
+#include <memory>
 #include <utility>
 
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ptr_util.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base {
@@ -36,11 +38,11 @@
   ASSERT_FALSE(
     settings.GetList("global.toolbar.bookmarks", &toolbar_bookmarks));
 
-  scoped_ptr<ListValue> new_toolbar_bookmarks(new ListValue);
+  std::unique_ptr<ListValue> new_toolbar_bookmarks(new ListValue);
   settings.Set("global.toolbar.bookmarks", std::move(new_toolbar_bookmarks));
   ASSERT_TRUE(settings.GetList("global.toolbar.bookmarks", &toolbar_bookmarks));
 
-  scoped_ptr<DictionaryValue> new_bookmark(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> new_bookmark(new DictionaryValue);
   new_bookmark->SetString("name", "Froogle");
   new_bookmark->SetString("url", "http://froogle.com");
   toolbar_bookmarks->Append(std::move(new_bookmark));
@@ -59,11 +61,11 @@
 }
 
 TEST(ValuesTest, List) {
-  scoped_ptr<ListValue> mixed_list(new ListValue());
-  mixed_list->Set(0, make_scoped_ptr(new FundamentalValue(true)));
-  mixed_list->Set(1, make_scoped_ptr(new FundamentalValue(42)));
-  mixed_list->Set(2, make_scoped_ptr(new FundamentalValue(88.8)));
-  mixed_list->Set(3, make_scoped_ptr(new StringValue("foo")));
+  std::unique_ptr<ListValue> mixed_list(new ListValue());
+  mixed_list->Set(0, WrapUnique(new FundamentalValue(true)));
+  mixed_list->Set(1, WrapUnique(new FundamentalValue(42)));
+  mixed_list->Set(2, WrapUnique(new FundamentalValue(88.8)));
+  mixed_list->Set(3, WrapUnique(new StringValue("foo")));
   ASSERT_EQ(4u, mixed_list->GetSize());
 
   Value *value = NULL;
@@ -109,13 +111,13 @@
 
 TEST(ValuesTest, BinaryValue) {
   // Default constructor creates a BinaryValue with a null buffer and size 0.
-  scoped_ptr<BinaryValue> binary(new BinaryValue());
+  std::unique_ptr<BinaryValue> binary(new BinaryValue());
   ASSERT_TRUE(binary.get());
   ASSERT_EQ(NULL, binary->GetBuffer());
   ASSERT_EQ(0U, binary->GetSize());
 
   // Test the common case of a non-empty buffer
-  scoped_ptr<char[]> buffer(new char[15]);
+  std::unique_ptr<char[]> buffer(new char[15]);
   char* original_buffer = buffer.get();
   binary.reset(new BinaryValue(std::move(buffer), 15));
   ASSERT_TRUE(binary.get());
@@ -141,10 +143,10 @@
 
 TEST(ValuesTest, StringValue) {
   // Test overloaded StringValue constructor.
-  scoped_ptr<Value> narrow_value(new StringValue("narrow"));
+  std::unique_ptr<Value> narrow_value(new StringValue("narrow"));
   ASSERT_TRUE(narrow_value.get());
   ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING));
-  scoped_ptr<Value> utf16_value(new StringValue(ASCIIToUTF16("utf16")));
+  std::unique_ptr<Value> utf16_value(new StringValue(ASCIIToUTF16("utf16")));
   ASSERT_TRUE(utf16_value.get());
   ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING));
 
@@ -198,14 +200,14 @@
 
   {
     ListValue list;
-    list.Append(make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    list.Append(WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
   }
   EXPECT_TRUE(deletion_flag);
 
   {
     ListValue list;
-    list.Append(make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    list.Append(WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     list.Clear();
     EXPECT_TRUE(deletion_flag);
@@ -213,7 +215,7 @@
 
   {
     ListValue list;
-    list.Append(make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    list.Append(WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     EXPECT_TRUE(list.Set(0, Value::CreateNullValue()));
     EXPECT_TRUE(deletion_flag);
@@ -222,11 +224,11 @@
 
 TEST(ValuesTest, ListRemoval) {
   bool deletion_flag = true;
-  scoped_ptr<Value> removed_item;
+  std::unique_ptr<Value> removed_item;
 
   {
     ListValue list;
-    list.Append(make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    list.Append(WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     EXPECT_EQ(1U, list.GetSize());
     EXPECT_FALSE(list.Remove(std::numeric_limits<size_t>::max(),
@@ -242,7 +244,7 @@
 
   {
     ListValue list;
-    list.Append(make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    list.Append(WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     EXPECT_TRUE(list.Remove(0, NULL));
     EXPECT_TRUE(deletion_flag);
@@ -251,7 +253,8 @@
 
   {
     ListValue list;
-    scoped_ptr<DeletionTestValue> value(new DeletionTestValue(&deletion_flag));
+    std::unique_ptr<DeletionTestValue> value(
+        new DeletionTestValue(&deletion_flag));
     DeletionTestValue* original_value = value.get();
     list.Append(std::move(value));
     EXPECT_FALSE(deletion_flag);
@@ -269,14 +272,14 @@
 
   {
     DictionaryValue dict;
-    dict.Set(key, make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    dict.Set(key, WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
   }
   EXPECT_TRUE(deletion_flag);
 
   {
     DictionaryValue dict;
-    dict.Set(key, make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    dict.Set(key, WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     dict.Clear();
     EXPECT_TRUE(deletion_flag);
@@ -284,7 +287,7 @@
 
   {
     DictionaryValue dict;
-    dict.Set(key, make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    dict.Set(key, WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     dict.Set(key, Value::CreateNullValue());
     EXPECT_TRUE(deletion_flag);
@@ -294,11 +297,11 @@
 TEST(ValuesTest, DictionaryRemoval) {
   std::string key = "test";
   bool deletion_flag = true;
-  scoped_ptr<Value> removed_item;
+  std::unique_ptr<Value> removed_item;
 
   {
     DictionaryValue dict;
-    dict.Set(key, make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    dict.Set(key, WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     EXPECT_TRUE(dict.HasKey(key));
     EXPECT_FALSE(dict.Remove("absent key", &removed_item));
@@ -312,7 +315,7 @@
 
   {
     DictionaryValue dict;
-    dict.Set(key, make_scoped_ptr(new DeletionTestValue(&deletion_flag)));
+    dict.Set(key, WrapUnique(new DeletionTestValue(&deletion_flag)));
     EXPECT_FALSE(deletion_flag);
     EXPECT_TRUE(dict.HasKey(key));
     EXPECT_TRUE(dict.Remove(key, NULL));
@@ -372,7 +375,7 @@
   dict.SetInteger("a.long.way.down", 1);
   dict.SetBoolean("a.long.key.path", true);
 
-  scoped_ptr<Value> removed_item;
+  std::unique_ptr<Value> removed_item;
   EXPECT_TRUE(dict.RemovePath("a.long.way.down", &removed_item));
   ASSERT_TRUE(removed_item);
   EXPECT_TRUE(removed_item->IsType(base::Value::TYPE_INTEGER));
@@ -394,49 +397,52 @@
 
 TEST(ValuesTest, DeepCopy) {
   DictionaryValue original_dict;
-  scoped_ptr<Value> scoped_null = Value::CreateNullValue();
+  std::unique_ptr<Value> scoped_null = Value::CreateNullValue();
   Value* original_null = scoped_null.get();
   original_dict.Set("null", std::move(scoped_null));
-  scoped_ptr<FundamentalValue> scoped_bool(new FundamentalValue(true));
+  std::unique_ptr<FundamentalValue> scoped_bool(new FundamentalValue(true));
   FundamentalValue* original_bool = scoped_bool.get();
   original_dict.Set("bool", std::move(scoped_bool));
-  scoped_ptr<FundamentalValue> scoped_int(new FundamentalValue(42));
+  std::unique_ptr<FundamentalValue> scoped_int(new FundamentalValue(42));
   FundamentalValue* original_int = scoped_int.get();
   original_dict.Set("int", std::move(scoped_int));
-  scoped_ptr<FundamentalValue> scoped_double(new FundamentalValue(3.14));
+  std::unique_ptr<FundamentalValue> scoped_double(new FundamentalValue(3.14));
   FundamentalValue* original_double = scoped_double.get();
   original_dict.Set("double", std::move(scoped_double));
-  scoped_ptr<StringValue> scoped_string(new StringValue("hello"));
+  std::unique_ptr<StringValue> scoped_string(new StringValue("hello"));
   StringValue* original_string = scoped_string.get();
   original_dict.Set("string", std::move(scoped_string));
-  scoped_ptr<StringValue> scoped_string16(
+  std::unique_ptr<StringValue> scoped_string16(
       new StringValue(ASCIIToUTF16("hello16")));
   StringValue* original_string16 = scoped_string16.get();
   original_dict.Set("string16", std::move(scoped_string16));
 
-  scoped_ptr<char[]> original_buffer(new char[42]);
+  std::unique_ptr<char[]> original_buffer(new char[42]);
   memset(original_buffer.get(), '!', 42);
-  scoped_ptr<BinaryValue> scoped_binary(
+  std::unique_ptr<BinaryValue> scoped_binary(
       new BinaryValue(std::move(original_buffer), 42));
   BinaryValue* original_binary = scoped_binary.get();
   original_dict.Set("binary", std::move(scoped_binary));
 
-  scoped_ptr<ListValue> scoped_list(new ListValue());
+  std::unique_ptr<ListValue> scoped_list(new ListValue());
   Value* original_list = scoped_list.get();
-  scoped_ptr<FundamentalValue> scoped_list_element_0(new FundamentalValue(0));
+  std::unique_ptr<FundamentalValue> scoped_list_element_0(
+      new FundamentalValue(0));
   Value* original_list_element_0 = scoped_list_element_0.get();
   scoped_list->Append(std::move(scoped_list_element_0));
-  scoped_ptr<FundamentalValue> scoped_list_element_1(new FundamentalValue(1));
+  std::unique_ptr<FundamentalValue> scoped_list_element_1(
+      new FundamentalValue(1));
   Value* original_list_element_1 = scoped_list_element_1.get();
   scoped_list->Append(std::move(scoped_list_element_1));
   original_dict.Set("list", std::move(scoped_list));
 
-  scoped_ptr<DictionaryValue> scoped_nested_dictionary(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> scoped_nested_dictionary(
+      new DictionaryValue());
   Value* original_nested_dictionary = scoped_nested_dictionary.get();
   scoped_nested_dictionary->SetString("key", "value");
   original_dict.Set("dictionary", std::move(scoped_nested_dictionary));
 
-  scoped_ptr<DictionaryValue> copy_dict = original_dict.CreateDeepCopy();
+  std::unique_ptr<DictionaryValue> copy_dict = original_dict.CreateDeepCopy();
   ASSERT_TRUE(copy_dict.get());
   ASSERT_NE(copy_dict.get(), &original_dict);
 
@@ -546,8 +552,8 @@
 }
 
 TEST(ValuesTest, Equals) {
-  scoped_ptr<Value> null1(Value::CreateNullValue());
-  scoped_ptr<Value> null2(Value::CreateNullValue());
+  std::unique_ptr<Value> null1(Value::CreateNullValue());
+  std::unique_ptr<Value> null2(Value::CreateNullValue());
   EXPECT_NE(null1.get(), null2.get());
   EXPECT_TRUE(null1->Equals(null2.get()));
 
@@ -562,21 +568,21 @@
   dv.SetString("d2", ASCIIToUTF16("http://google.com"));
   dv.Set("e", Value::CreateNullValue());
 
-  scoped_ptr<DictionaryValue> copy = dv.CreateDeepCopy();
+  std::unique_ptr<DictionaryValue> copy = dv.CreateDeepCopy();
   EXPECT_TRUE(dv.Equals(copy.get()));
 
-  scoped_ptr<ListValue> list(new ListValue);
+  std::unique_ptr<ListValue> list(new ListValue);
   ListValue* original_list = list.get();
   list->Append(Value::CreateNullValue());
-  list->Append(make_scoped_ptr(new DictionaryValue));
-  scoped_ptr<Value> list_copy(list->CreateDeepCopy());
+  list->Append(WrapUnique(new DictionaryValue));
+  std::unique_ptr<Value> list_copy(list->CreateDeepCopy());
 
   dv.Set("f", std::move(list));
   EXPECT_FALSE(dv.Equals(copy.get()));
   copy->Set("f", std::move(list_copy));
   EXPECT_TRUE(dv.Equals(copy.get()));
 
-  original_list->Append(make_scoped_ptr(new FundamentalValue(true)));
+  original_list->Append(WrapUnique(new FundamentalValue(true)));
   EXPECT_FALSE(dv.Equals(copy.get()));
 
   // Check if Equals detects differences in only the keys.
@@ -588,14 +594,14 @@
 }
 
 TEST(ValuesTest, StaticEquals) {
-  scoped_ptr<Value> null1(Value::CreateNullValue());
-  scoped_ptr<Value> null2(Value::CreateNullValue());
+  std::unique_ptr<Value> null1(Value::CreateNullValue());
+  std::unique_ptr<Value> null2(Value::CreateNullValue());
   EXPECT_TRUE(Value::Equals(null1.get(), null2.get()));
   EXPECT_TRUE(Value::Equals(NULL, NULL));
 
-  scoped_ptr<Value> i42(new FundamentalValue(42));
-  scoped_ptr<Value> j42(new FundamentalValue(42));
-  scoped_ptr<Value> i17(new FundamentalValue(17));
+  std::unique_ptr<Value> i42(new FundamentalValue(42));
+  std::unique_ptr<Value> j42(new FundamentalValue(42));
+  std::unique_ptr<Value> i17(new FundamentalValue(17));
   EXPECT_TRUE(Value::Equals(i42.get(), i42.get()));
   EXPECT_TRUE(Value::Equals(j42.get(), i42.get()));
   EXPECT_TRUE(Value::Equals(i42.get(), j42.get()));
@@ -612,50 +618,52 @@
 
 TEST(ValuesTest, DeepCopyCovariantReturnTypes) {
   DictionaryValue original_dict;
-  scoped_ptr<Value> scoped_null(Value::CreateNullValue());
+  std::unique_ptr<Value> scoped_null(Value::CreateNullValue());
   Value* original_null = scoped_null.get();
   original_dict.Set("null", std::move(scoped_null));
-  scoped_ptr<FundamentalValue> scoped_bool(new FundamentalValue(true));
+  std::unique_ptr<FundamentalValue> scoped_bool(new FundamentalValue(true));
   Value* original_bool = scoped_bool.get();
   original_dict.Set("bool", std::move(scoped_bool));
-  scoped_ptr<FundamentalValue> scoped_int(new FundamentalValue(42));
+  std::unique_ptr<FundamentalValue> scoped_int(new FundamentalValue(42));
   Value* original_int = scoped_int.get();
   original_dict.Set("int", std::move(scoped_int));
-  scoped_ptr<FundamentalValue> scoped_double(new FundamentalValue(3.14));
+  std::unique_ptr<FundamentalValue> scoped_double(new FundamentalValue(3.14));
   Value* original_double = scoped_double.get();
   original_dict.Set("double", std::move(scoped_double));
-  scoped_ptr<StringValue> scoped_string(new StringValue("hello"));
+  std::unique_ptr<StringValue> scoped_string(new StringValue("hello"));
   Value* original_string = scoped_string.get();
   original_dict.Set("string", std::move(scoped_string));
-  scoped_ptr<StringValue> scoped_string16(
+  std::unique_ptr<StringValue> scoped_string16(
       new StringValue(ASCIIToUTF16("hello16")));
   Value* original_string16 = scoped_string16.get();
   original_dict.Set("string16", std::move(scoped_string16));
 
-  scoped_ptr<char[]> original_buffer(new char[42]);
+  std::unique_ptr<char[]> original_buffer(new char[42]);
   memset(original_buffer.get(), '!', 42);
-  scoped_ptr<BinaryValue> scoped_binary(
+  std::unique_ptr<BinaryValue> scoped_binary(
       new BinaryValue(std::move(original_buffer), 42));
   Value* original_binary = scoped_binary.get();
   original_dict.Set("binary", std::move(scoped_binary));
 
-  scoped_ptr<ListValue> scoped_list(new ListValue());
+  std::unique_ptr<ListValue> scoped_list(new ListValue());
   Value* original_list = scoped_list.get();
-  scoped_ptr<FundamentalValue> scoped_list_element_0(new FundamentalValue(0));
+  std::unique_ptr<FundamentalValue> scoped_list_element_0(
+      new FundamentalValue(0));
   scoped_list->Append(std::move(scoped_list_element_0));
-  scoped_ptr<FundamentalValue> scoped_list_element_1(new FundamentalValue(1));
+  std::unique_ptr<FundamentalValue> scoped_list_element_1(
+      new FundamentalValue(1));
   scoped_list->Append(std::move(scoped_list_element_1));
   original_dict.Set("list", std::move(scoped_list));
 
-  scoped_ptr<Value> copy_dict = original_dict.CreateDeepCopy();
-  scoped_ptr<Value> copy_null = original_null->CreateDeepCopy();
-  scoped_ptr<Value> copy_bool = original_bool->CreateDeepCopy();
-  scoped_ptr<Value> copy_int = original_int->CreateDeepCopy();
-  scoped_ptr<Value> copy_double = original_double->CreateDeepCopy();
-  scoped_ptr<Value> copy_string = original_string->CreateDeepCopy();
-  scoped_ptr<Value> copy_string16 = original_string16->CreateDeepCopy();
-  scoped_ptr<Value> copy_binary = original_binary->CreateDeepCopy();
-  scoped_ptr<Value> copy_list = original_list->CreateDeepCopy();
+  std::unique_ptr<Value> copy_dict = original_dict.CreateDeepCopy();
+  std::unique_ptr<Value> copy_null = original_null->CreateDeepCopy();
+  std::unique_ptr<Value> copy_bool = original_bool->CreateDeepCopy();
+  std::unique_ptr<Value> copy_int = original_int->CreateDeepCopy();
+  std::unique_ptr<Value> copy_double = original_double->CreateDeepCopy();
+  std::unique_ptr<Value> copy_string = original_string->CreateDeepCopy();
+  std::unique_ptr<Value> copy_string16 = original_string16->CreateDeepCopy();
+  std::unique_ptr<Value> copy_binary = original_binary->CreateDeepCopy();
+  std::unique_ptr<Value> copy_list = original_list->CreateDeepCopy();
 
   EXPECT_TRUE(original_dict.Equals(copy_dict.get()));
   EXPECT_TRUE(original_null->Equals(copy_null.get()));
@@ -669,18 +677,18 @@
 }
 
 TEST(ValuesTest, RemoveEmptyChildren) {
-  scoped_ptr<DictionaryValue> root(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> root(new DictionaryValue);
   // Remove empty lists and dictionaries.
-  root->Set("empty_dict", make_scoped_ptr(new DictionaryValue));
-  root->Set("empty_list", make_scoped_ptr(new ListValue));
+  root->Set("empty_dict", WrapUnique(new DictionaryValue));
+  root->Set("empty_list", WrapUnique(new ListValue));
   root->SetWithoutPathExpansion("a.b.c.d.e",
-                                make_scoped_ptr(new DictionaryValue));
+                                WrapUnique(new DictionaryValue));
   root = root->DeepCopyWithoutEmptyChildren();
   EXPECT_TRUE(root->empty());
 
   // Make sure we don't prune too much.
   root->SetBoolean("bool", true);
-  root->Set("empty_dict", make_scoped_ptr(new DictionaryValue));
+  root->Set("empty_dict", WrapUnique(new DictionaryValue));
   root->SetString("empty_string", std::string());
   root = root->DeepCopyWithoutEmptyChildren();
   EXPECT_EQ(2U, root->size());
@@ -692,22 +700,22 @@
   // Nested test cases.  These should all reduce back to the bool and string
   // set above.
   {
-    root->Set("a.b.c.d.e", make_scoped_ptr(new DictionaryValue));
+    root->Set("a.b.c.d.e", WrapUnique(new DictionaryValue));
     root = root->DeepCopyWithoutEmptyChildren();
     EXPECT_EQ(2U, root->size());
   }
   {
-    scoped_ptr<DictionaryValue> inner(new DictionaryValue);
-    inner->Set("empty_dict", make_scoped_ptr(new DictionaryValue));
-    inner->Set("empty_list", make_scoped_ptr(new ListValue));
+    std::unique_ptr<DictionaryValue> inner(new DictionaryValue);
+    inner->Set("empty_dict", WrapUnique(new DictionaryValue));
+    inner->Set("empty_list", WrapUnique(new ListValue));
     root->Set("dict_with_empty_children", std::move(inner));
     root = root->DeepCopyWithoutEmptyChildren();
     EXPECT_EQ(2U, root->size());
   }
   {
-    scoped_ptr<ListValue> inner(new ListValue);
-    inner->Append(make_scoped_ptr(new DictionaryValue));
-    inner->Append(make_scoped_ptr(new ListValue));
+    std::unique_ptr<ListValue> inner(new ListValue);
+    inner->Append(WrapUnique(new DictionaryValue));
+    inner->Append(WrapUnique(new ListValue));
     root->Set("list_with_empty_children", std::move(inner));
     root = root->DeepCopyWithoutEmptyChildren();
     EXPECT_EQ(2U, root->size());
@@ -715,13 +723,13 @@
 
   // Nested with siblings.
   {
-    scoped_ptr<ListValue> inner(new ListValue());
-    inner->Append(make_scoped_ptr(new DictionaryValue));
-    inner->Append(make_scoped_ptr(new ListValue));
+    std::unique_ptr<ListValue> inner(new ListValue());
+    inner->Append(WrapUnique(new DictionaryValue));
+    inner->Append(WrapUnique(new ListValue));
     root->Set("list_with_empty_children", std::move(inner));
-    scoped_ptr<DictionaryValue> inner2(new DictionaryValue);
-    inner2->Set("empty_dict", make_scoped_ptr(new DictionaryValue));
-    inner2->Set("empty_list", make_scoped_ptr(new ListValue));
+    std::unique_ptr<DictionaryValue> inner2(new DictionaryValue);
+    inner2->Set("empty_dict", WrapUnique(new DictionaryValue));
+    inner2->Set("empty_list", WrapUnique(new ListValue));
     root->Set("dict_with_empty_children", std::move(inner2));
     root = root->DeepCopyWithoutEmptyChildren();
     EXPECT_EQ(2U, root->size());
@@ -729,10 +737,10 @@
 
   // Make sure nested values don't get pruned.
   {
-    scoped_ptr<ListValue> inner(new ListValue);
-    scoped_ptr<ListValue> inner2(new ListValue);
-    inner2->Append(make_scoped_ptr(new StringValue("hello")));
-    inner->Append(make_scoped_ptr(new DictionaryValue));
+    std::unique_ptr<ListValue> inner(new ListValue);
+    std::unique_ptr<ListValue> inner2(new ListValue);
+    inner2->Append(WrapUnique(new StringValue("hello")));
+    inner->Append(WrapUnique(new DictionaryValue));
     inner->Append(std::move(inner2));
     root->Set("list_with_empty_children", std::move(inner));
     root = root->DeepCopyWithoutEmptyChildren();
@@ -747,18 +755,18 @@
 }
 
 TEST(ValuesTest, MergeDictionary) {
-  scoped_ptr<DictionaryValue> base(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> base(new DictionaryValue);
   base->SetString("base_key", "base_key_value_base");
   base->SetString("collide_key", "collide_key_value_base");
-  scoped_ptr<DictionaryValue> base_sub_dict(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> base_sub_dict(new DictionaryValue);
   base_sub_dict->SetString("sub_base_key", "sub_base_key_value_base");
   base_sub_dict->SetString("sub_collide_key", "sub_collide_key_value_base");
   base->Set("sub_dict_key", std::move(base_sub_dict));
 
-  scoped_ptr<DictionaryValue> merge(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> merge(new DictionaryValue);
   merge->SetString("merge_key", "merge_key_value_merge");
   merge->SetString("collide_key", "collide_key_value_merge");
-  scoped_ptr<DictionaryValue> merge_sub_dict(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> merge_sub_dict(new DictionaryValue);
   merge_sub_dict->SetString("sub_merge_key", "sub_merge_key_value_merge");
   merge_sub_dict->SetString("sub_collide_key", "sub_collide_key_value_merge");
   merge->Set("sub_dict_key", std::move(merge_sub_dict));
@@ -792,7 +800,7 @@
 }
 
 TEST(ValuesTest, MergeDictionaryDeepCopy) {
-  scoped_ptr<DictionaryValue> child(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> child(new DictionaryValue);
   DictionaryValue* original_child = child.get();
   child->SetString("test", "value");
   EXPECT_EQ(1U, child->size());
@@ -801,7 +809,7 @@
   EXPECT_TRUE(child->GetString("test", &value));
   EXPECT_EQ("value", value);
 
-  scoped_ptr<DictionaryValue> base(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> base(new DictionaryValue);
   base->Set("dict", std::move(child));
   EXPECT_EQ(1U, base->size());
 
@@ -809,7 +817,7 @@
   EXPECT_TRUE(base->GetDictionary("dict", &ptr));
   EXPECT_EQ(original_child, ptr);
 
-  scoped_ptr<DictionaryValue> merged(new DictionaryValue);
+  std::unique_ptr<DictionaryValue> merged(new DictionaryValue);
   merged->MergeDictionary(base.get());
   EXPECT_EQ(1U, merged->size());
   EXPECT_TRUE(merged->GetDictionary("dict", &ptr));
diff --git a/base/win/enum_variant.h b/base/win/enum_variant.h
index 2caaccde..e27afcd 100644
--- a/base/win/enum_variant.h
+++ b/base/win/enum_variant.h
@@ -7,7 +7,8 @@
 
 #include <unknwn.h>
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/win/iunknown_impl.h"
 
 namespace base {
@@ -41,7 +42,7 @@
  private:
   ~EnumVariant() override;
 
-  scoped_ptr<VARIANT[]> items_;
+  std::unique_ptr<VARIANT[]> items_;
   unsigned long count_;
   unsigned long current_index_;
 };
diff --git a/base/win/registry.h b/base/win/registry.h
index 1285be0..a7c06c3 100644
--- a/base/win/registry.h
+++ b/base/win/registry.h
@@ -149,7 +149,7 @@
 
   HKEY key_;  // The registry key being iterated.
   REGSAM wow64access_;
-  scoped_ptr<Watcher> key_watcher_;
+  std::unique_ptr<Watcher> key_watcher_;
 
   DISALLOW_COPY_AND_ASSIGN(RegKey);
 };
diff --git a/base/win/scoped_comptr_unittest.cc b/base/win/scoped_comptr_unittest.cc
index 23090b04..988c4690 100644
--- a/base/win/scoped_comptr_unittest.cc
+++ b/base/win/scoped_comptr_unittest.cc
@@ -6,7 +6,8 @@
 
 #include <shlobj.h>
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "base/win/scoped_com_initializer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -84,7 +85,7 @@
   typedef ScopedComPtr<Dummy, &dummy_iid> Ptr;
   std::vector<Ptr> bleh;
 
-  scoped_ptr<Dummy> p(new Dummy);
+  std::unique_ptr<Dummy> p(new Dummy);
   {
     Ptr p2(p.get());
     EXPECT_EQ(p->adds, 1);
diff --git a/base/win/win_util.cc b/base/win/win_util.cc
index 87bde15..b10d5554 100644
--- a/base/win/win_util.cc
+++ b/base/win/win_util.cc
@@ -27,12 +27,13 @@
 #include <winstring.h>
 #include <wrl/wrappers/corewrappers.h>
 
+#include <memory>
+
 #include "base/base_switches.h"
 #include "base/command_line.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -347,7 +348,7 @@
   ScopedHandle token_scoped(token);
 
   DWORD size = sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE;
-  scoped_ptr<BYTE[]> user_bytes(new BYTE[size]);
+  std::unique_ptr<BYTE[]> user_bytes(new BYTE[size]);
   TOKEN_USER* user = reinterpret_cast<TOKEN_USER*>(user_bytes.get());
 
   if (!::GetTokenInformation(token, TokenUser, user, size, &size))
@@ -573,7 +574,7 @@
       // We then replace the %CommonProgramFiles% value with the actual common
       // files path found in the process.
       string16 common_program_files_path;
-      scoped_ptr<wchar_t[]> common_program_files_wow6432;
+      std::unique_ptr<wchar_t[]> common_program_files_wow6432;
       DWORD buffer_size =
           GetEnvironmentVariable(L"CommonProgramW6432", NULL, 0);
       if (buffer_size) {
diff --git a/base/win/windows_version.cc b/base/win/windows_version.cc
index eb3f499..77e84de 100644
--- a/base/win/windows_version.cc
+++ b/base/win/windows_version.cc
@@ -6,10 +6,11 @@
 
 #include <windows.h>
 
+#include <memory>
+
 #include "base/file_version_info_win.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/registry.h"
 
@@ -60,7 +61,7 @@
 // compatibility mode for a down-level version of the OS, the file version of
 // kernel32 will still be the "real" version.
 Version GetVersionFromKernel32() {
-  scoped_ptr<FileVersionInfoWin> file_version_info(
+  std::unique_ptr<FileVersionInfoWin> file_version_info(
       static_cast<FileVersionInfoWin*>(
           FileVersionInfoWin::CreateFileVersionInfo(
               base::FilePath(FILE_PATH_LITERAL("kernel32.dll")))));
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb
index a95bd32..b864bbcd 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">ምደባ አልተሳካም። አገልግሎት ጊዜው ያለፈ የተጠቃሚ የመድረሻ ተለዋጭ ስም</translation>
 <translation id="4562971394107096647">ምደባ አልተሳካም። አገልጋይ ስህተት።</translation>
 <translation id="4641972508298030550">ተጠቃሚውን ማረጋገጥ አልተቻለም።</translation>
+<translation id="5184329579814168207">በChrome ውስጥ ክፈት</translation>
 <translation id="5860346505531085166">ምደባ አልተሳካም። መለያ መዳረሻ የለውም።</translation>
 <translation id="704835510384979817">ምደባ አልተሳካም። ምንም ተዛማጅ የፕሮግራም ስሪት የለም።</translation>
 <translation id="7536363920335771251">የሞተር ግንኙነት ተቋርጧል፣ ምክንያት፦ %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb
index 60b697e..eab8891 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">أخفق التعيين. انتهاء صلاحية رمز الدخول إلى المستخدم.</translation>
 <translation id="4562971394107096647">أخفق التعيين. خطأ في الخادم.</translation>
 <translation id="4641972508298030550">تتعذر مصادقة المستخدم.</translation>
+<translation id="5184329579814168207">‏فتح في Chrome</translation>
 <translation id="5860346505531085166">أخفق التعيين. لا تتوفر إمكانية الدخول إلى الحساب.</translation>
 <translation id="704835510384979817">أخفق التعيين. لا يوجد إصدار محرك مطابق.</translation>
 <translation id="7536363920335771251">‏المحرك غير متصل، والسبب: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb
index 5fa85c2..dc4bbea 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Получаването на заданието не бе успешно. Потребителското означение за достъп е с изтекла валидност.</translation>
 <translation id="4562971394107096647">Получаването на заданието не бе успешно. Грешка в сървъра.</translation>
 <translation id="4641972508298030550">Удостоверяването на потребителя не бе успешно.</translation>
+<translation id="5184329579814168207">Отваряне в Chrome</translation>
 <translation id="5860346505531085166">Получаването на заданието не бе успешно. Профилът няма достъп.</translation>
 <translation id="704835510384979817">Получаването на заданието не бе успешно. Няма съответстваща версия на машина.</translation>
 <translation id="7536363920335771251">Връзката с машината е прекратена поради следната причина: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb
index 27af8a9..90cf29175 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">No s'ha pogut obtenir l'assignació. El testimoni d'accés de l'usuari ha caducat.</translation>
 <translation id="4562971394107096647">No s'ha pogut obtenir l'assignació. S'ha produït un error al servidor.</translation>
 <translation id="4641972508298030550">No es pot autenticar l'usuari.</translation>
+<translation id="5184329579814168207">Obre a Chrome</translation>
 <translation id="5860346505531085166">No s'ha pogut obtenir l'assignació. El compte no hi té accés.</translation>
 <translation id="704835510384979817">No s'ha pogut obtenir l'assignació. La versió del motor no és correcta.</translation>
 <translation id="7536363920335771251">El motor s'ha desconnectat pel motiu següent: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb
index 812aeebfc..a3e1cb8 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Přidružení se nezdařilo. Platnost přístupového tokenu uživatele vypršela.</translation>
 <translation id="4562971394107096647">Přidružení se nezdařilo. Chyba serveru.</translation>
 <translation id="4641972508298030550">Uživatele nelze ověřit.</translation>
+<translation id="5184329579814168207">Otevřít v Chromu</translation>
 <translation id="5860346505531085166">Přidružení se nezdařilo. Účet nemá přístup.</translation>
 <translation id="704835510384979817">Přidružení se nezdařilo. Není k dispozici odpovídající verze modulu.</translation>
 <translation id="7536363920335771251">Vyhledávač byl odpojen. Důvod: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb
index 543cdb8..06b66ee 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Tildelingen mislykkedes. Udløbet brugeradgangstoken.</translation>
 <translation id="4562971394107096647">Tildelingen mislykkedes. Serverfejl.</translation>
 <translation id="4641972508298030550">Brugeren kunne ikke godkendes.</translation>
+<translation id="5184329579814168207">Åbn i Chrome</translation>
 <translation id="5860346505531085166">Tildelingen mislykkedes. Kontoen har ikke adgang.</translation>
 <translation id="704835510384979817">Tildelingen mislykkedes. Ingen matchende maskinversion.</translation>
 <translation id="7536363920335771251">Forbindelsen til maskinen blev afbrudt. Årsag: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb
index 87bcd043d..c5fa1d9 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Zuweisung fehlgeschlagen. Abgelaufenes Nutzerzugriffs-Token.</translation>
 <translation id="4562971394107096647">Zuweisung fehlgeschlagen. Serverfehler.</translation>
 <translation id="4641972508298030550">Nutzer kann nicht authentifiziert werden.</translation>
+<translation id="5184329579814168207">In Chrome öffnen</translation>
 <translation id="5860346505531085166">Zuweisung fehlgeschlagen. Konto hat keinen Zugriff.</translation>
 <translation id="704835510384979817">Zuweisung fehlgeschlagen. Keine übereinstimmende Modulversion.</translation>
 <translation id="7536363920335771251">Modul getrennt, Grund: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb
index 18f1e86..dfcc313 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Η ανάθεση απέτυχε.  Το διακριτικό πρόσβασης χρήστη έληξε.</translation>
 <translation id="4562971394107096647">Η ανάθεση απέτυχε.  Σφάλμα διακομιστή.</translation>
 <translation id="4641972508298030550">Αδυναμία ελέγχου ταυτότητας χρήστη.</translation>
+<translation id="5184329579814168207">Άνοιγμα στο Chrome</translation>
 <translation id="5860346505531085166">Η ανάθεση απέτυχε. Ο λογαριασμός δεν έχει πρόσβαση.</translation>
 <translation id="704835510384979817">Η ανάθεση απέτυχε. Η έκδοση μηχανής δεν αντιστοιχεί.</translation>
 <translation id="7536363920335771251">Η μηχανή αποσυνδέθηκε. Αιτία: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb
index 10d99e0d..e785dfd8 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Assignment failed. Expired user access token.</translation>
 <translation id="4562971394107096647">Assignment failed. Server error.</translation>
 <translation id="4641972508298030550">Unable to authenticate user.</translation>
+<translation id="5184329579814168207">Open in Chrome</translation>
 <translation id="5860346505531085166">Assignment failed. Account does not have access.</translation>
 <translation id="704835510384979817">Assignment failed. No matching engine version.</translation>
 <translation id="7536363920335771251">Engine disconnected, reason: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb
index 2347a689..c139010 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb
@@ -6,15 +6,16 @@
 <translation id="2023631438558435272">Se produjo un error de asignación. La respuesta no es válida.</translation>
 <translation id="2353984724370197742">Se produjo un error de asignación. Se produjo un error en la solicitud de la red.</translation>
 <translation id="3046825211487065480">Se produjo un error de asignación. Se envió una segunda solicitud antes de que se respondiera la primera.</translation>
-<translation id="3346106862344060497">Motor conectado.</translation>
+<translation id="3346106862344060497">El motor está conectado.</translation>
 <translation id="3407245330823033366">Elige una cuenta para usar con Blimp.</translation>
 <translation id="3775180005489871350">Se produjo un error de asignación. Se produjo el error 400 (BAD_REQUEST).</translation>
 <translation id="4542350224991263059">Se produjo un error de asignación. Caducó el token de acceso del usuario.</translation>
 <translation id="4562971394107096647">Se produjo un error de asignación. Se produjo un error en el servidor.</translation>
 <translation id="4641972508298030550">No se puede autenticar el usuario.</translation>
+<translation id="5184329579814168207">Abrir en Chrome</translation>
 <translation id="5860346505531085166">Se produjo un error de asignación. La cuenta no tiene acceso.</translation>
 <translation id="704835510384979817">Se produjo un error de asignación. No hay ninguna versión coincidente del motor.</translation>
-<translation id="7536363920335771251">Motor desconectado; razón: %1$s</translation>
+<translation id="7536363920335771251">Motivo de la desconexión del motor: %1$s</translation>
 <translation id="7961542533680218955">La asignación se completó correctamente.</translation>
 <translation id="8514856595257368555">Se recuperó el token.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb
index e38c59b..63a24aa 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Ha fallado la asignación. Ha caducado el token de acceso del usuario.</translation>
 <translation id="4562971394107096647">Ha fallado la asignación. Error del servidor.</translation>
 <translation id="4641972508298030550">No ha sido posible autenticar el usuario.</translation>
+<translation id="5184329579814168207">Abrir en Chrome</translation>
 <translation id="5860346505531085166">Ha fallado la asignación. La cuenta no dispone de acceso.</translation>
 <translation id="704835510384979817">Ha fallado la asignación. La versión del motor no coincide.</translation>
 <translation id="7536363920335771251">Motivo por el que el motor está desconectado: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb
index 26fa4407e1..66b9d51 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">واگذاری ناموفق بود. اعتبار کد دسترسی کاربر به پایان رسیده است.</translation>
 <translation id="4562971394107096647">واگذاری ناموفق بود.  خطای شبکه.</translation>
 <translation id="4641972508298030550">کاربر احراز هویت نشد.</translation>
+<translation id="5184329579814168207">‏باز کردن در Chrome</translation>
 <translation id="5860346505531085166">واگذاری ناموفق بود.  حساب دسترسی ندارد.</translation>
 <translation id="704835510384979817">واگذاری ناموفق بود.  نسخه موتور مطابقی وجود ندارد.</translation>
 <translation id="7536363920335771251">‏ارتباط موتور قطع شد، دلیل: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb
index 69ace98..1be55f4 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Tehtävä epäonnistui. Käyttäjän käyttötunnus on vanhentunut.</translation>
 <translation id="4562971394107096647">Tehtävä epäonnistui. Tapahtui palvelinvirhe.</translation>
 <translation id="4641972508298030550">Käyttäjän todennus epäonnistui.</translation>
+<translation id="5184329579814168207">Avaa Chromessa</translation>
 <translation id="5860346505531085166">Tehtävä epäonnistui. Tilillä ei ole käyttöoikeutta.</translation>
 <translation id="704835510384979817">Tehtävä epäonnistui. Koneiden versiot eivät täsmää.</translation>
 <translation id="7536363920335771251">Yhteys katkaistiin. Syy: %1$s.</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb
index f524545..075a1cf 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Hindi naitalaga.  Nag-expire na ang token ng access ng user.</translation>
 <translation id="4562971394107096647">Hindi naitalaga.  May error sa server.</translation>
 <translation id="4641972508298030550">Hindi mapatotohanan ang user.</translation>
+<translation id="5184329579814168207">Buksan sa Chrome</translation>
 <translation id="5860346505531085166">Hindi naitalaga.  Walang access ang account.</translation>
 <translation id="704835510384979817">Hindi naitalaga.  Walang tumutugmang bersyon ng engine.</translation>
 <translation id="7536363920335771251">Nadiskonekta ang engine, dahilan: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb
index b50f5ad3..eb7e37c 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Échec de l'attribution. Le jeton d'accès utilisateur a expiré.</translation>
 <translation id="4562971394107096647">Échec de l'attribution. Erreur du serveur.</translation>
 <translation id="4641972508298030550">Impossible d'authentifier l'utilisateur.</translation>
+<translation id="5184329579814168207">Ouvrir dans Chrome</translation>
 <translation id="5860346505531085166">Échec de l'attribution. Le compte ne dispose pas de l'accès.</translation>
 <translation id="704835510384979817">Échec de l'attribution. Aucune version de moteur correspondante.</translation>
 <translation id="7536363920335771251">Moteur déconnecté. Motif : %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb
index 2875780..63586a9 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">असाइनमेंट विफल रहा.  उपयोगकर्ता एक्सेस टोकन की समय सीमा समाप्त.</translation>
 <translation id="4562971394107096647">असाइनमेंट विफल रहा.  सर्वर त्रुटि.</translation>
 <translation id="4641972508298030550">उपयोगकर्ता को प्रमाणित करने में असमर्थ.</translation>
+<translation id="5184329579814168207">Chrome में खोलें</translation>
 <translation id="5860346505531085166">असाइनमेंट विफल रहा.  खाते के पास एक्सेस नहीं है.</translation>
 <translation id="704835510384979817">असाइनमेंट विफल रहा.  मिलान वाला कोई इंजन वर्शन नहीं है.</translation>
 <translation id="7536363920335771251">इंजन इस कारण डिस्कनेक्ट किया गया: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb
index 90764bb..d7d7366 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Dodjeljivanje nije uspjelo. Korisnička je oznaka za pristup istekla.</translation>
 <translation id="4562971394107096647">Dodjeljivanje nije uspjelo. Pogreška poslužitelja.</translation>
 <translation id="4641972508298030550">Autentifikacija korisnika nije uspjela.</translation>
+<translation id="5184329579814168207">Otvori u Chromeu</translation>
 <translation id="5860346505531085166">Dodjeljivanje nije uspjelo. Račun nema pristup.</translation>
 <translation id="704835510384979817">Dodjeljivanje nije uspjelo. Nema podudarne verzije tražilice.</translation>
 <translation id="7536363920335771251">Prekinuta je veza s uređajem, razlog: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb
index 42472571..c7dbbb1 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">A hozzárendelés nem sikerült. Lejárt a felhasználói hozzáférés tokenje.</translation>
 <translation id="4562971394107096647">A hozzárendelés nem sikerült. Szerverhiba.</translation>
 <translation id="4641972508298030550">Nem lehet hitelesíteni a felhasználót.</translation>
+<translation id="5184329579814168207">Megnyitás Chrome-ban</translation>
 <translation id="5860346505531085166">A hozzárendelés nem sikerült. A fióknak nincs hozzáférése.</translation>
 <translation id="704835510384979817">A hozzárendelés nem sikerült. Nincs egyező motorverzió.</translation>
 <translation id="7536363920335771251">Motor leválasztva, ok: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb
index 9a5b940..bc61baa1 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb
@@ -6,15 +6,16 @@
 <translation id="2023631438558435272">Penugasan gagal.  Tanggapan tidak valid.</translation>
 <translation id="2353984724370197742">Penugasan gagal.  Permintaan jaringan gagal.</translation>
 <translation id="3046825211487065480">Penugasan gagal.  Permintaan kedua dikirim sebelum permintaan pertama ditanggapi.</translation>
-<translation id="3346106862344060497">Komputer tersambung.</translation>
+<translation id="3346106862344060497">Perangkat tersambung.</translation>
 <translation id="3407245330823033366">Pilih akun untuk digunakan dengan Blimp.</translation>
 <translation id="3775180005489871350">Penugasan gagal.  Kesalahan 400 (BAD_REQUEST).</translation>
 <translation id="4542350224991263059">Penugasan gagal.  Masa berlaku token akses pengguna habis.</translation>
 <translation id="4562971394107096647">Penugasan gagal.  Kesalahan server.</translation>
 <translation id="4641972508298030550">Tidak dapat mengautentikasi pengguna.</translation>
+<translation id="5184329579814168207">Buka di Chrome</translation>
 <translation id="5860346505531085166">Penugasan gagal.  Akun tidak memiliki akses.</translation>
 <translation id="704835510384979817">Penugasan gagal.  Tidak ada versi mesin yang sesuai.</translation>
-<translation id="7536363920335771251">Sambungan komputer terputus, alasan: %1$s</translation>
+<translation id="7536363920335771251">Sambungan perangkat terputus, alasan: %1$s</translation>
 <translation id="7961542533680218955">Penugasan berhasil.</translation>
 <translation id="8514856595257368555">Token telah diambil.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb
index 7027573..05dfcf9 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Assegnazione non riuscita. Token di accesso dell'utente scaduto.</translation>
 <translation id="4562971394107096647">Assegnazione non riuscita. Errore del server.</translation>
 <translation id="4641972508298030550">Impossibile eseguire l'autenticazione dell'utente.</translation>
+<translation id="5184329579814168207">Apri in Chrome</translation>
 <translation id="5860346505531085166">Assegnazione non riuscita. All'account non è consentito l'accesso.</translation>
 <translation id="704835510384979817">Assegnazione non riuscita. Nessuna versione del motore corrispondente.</translation>
 <translation id="7536363920335771251">Motore disconnesso. Motivo: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb
index 30296b5..6af7421 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb
@@ -12,9 +12,10 @@
 <translation id="4542350224991263059">ההקצאה נכשלה. פג תוקף אסימון הגישה של המשתמש.</translation>
 <translation id="4562971394107096647">ההקצאה נכשלה. שגיאת שרת.</translation>
 <translation id="4641972508298030550">לא ניתן לאמת את המשתמש.</translation>
+<translation id="5184329579814168207">‏פתח ב-Chrome</translation>
 <translation id="5860346505531085166">ההקצאה נכשלה. אין לחשבון הרשאת גישה.</translation>
 <translation id="704835510384979817">ההקצאה נכשלה. לא נמצאה גירסת מנוע תואמת.</translation>
-<translation id="7536363920335771251">‏המנוע מנותק. סיבה: %1$s</translation>
+<translation id="7536363920335771251">‏המנוע מנותק. הסיבה: %1$s</translation>
 <translation id="7961542533680218955">ההקצאה הצליחה.</translation>
 <translation id="8514856595257368555">האסימון אוחזר.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb
index 3fe576da..0a89429 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">割り当てが失敗しました。ユーザー アクセス トークンが期限切れです。</translation>
 <translation id="4562971394107096647">割り当てが失敗しました。サーバーエラーが発生しました。</translation>
 <translation id="4641972508298030550">ユーザーを認証できません。</translation>
+<translation id="5184329579814168207">Chromeで開く</translation>
 <translation id="5860346505531085166">割り当てが失敗しました。アカウントにアクセス権がありません。</translation>
 <translation id="704835510384979817">割り当てが失敗しました。一致するエンジン バージョンがありません。</translation>
 <translation id="7536363920335771251">エンジンが切断されました。原因: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb
index d94704c..7a57cf8 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">할당하지 못했습니다. 사용자 액세스 토큰이 만료되었습니다.</translation>
 <translation id="4562971394107096647">할당하지 못했습니다. 서버 오류가 발생했습니다.</translation>
 <translation id="4641972508298030550">사용자를 인증할 수 없습니다.</translation>
+<translation id="5184329579814168207">Chrome에서 열기</translation>
 <translation id="5860346505531085166">할당하지 못했습니다. 계정에 액세스 권한이 없습니다.</translation>
 <translation id="704835510384979817">할당하지 못했습니다. 일치하는 엔진 버전이 없습니다.</translation>
 <translation id="7536363920335771251">다음 이유로 엔진 연결이 해제되었습니다. %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb
index d6ee717..03b10fe1 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Priskirti nepavyko. Baigėsi naudotojo prieigos kodo galiojimo laikas.</translation>
 <translation id="4562971394107096647">Priskirti nepavyko. Serverio klaida.</translation>
 <translation id="4641972508298030550">Nepavyko autentifikuoti naudotojo.</translation>
+<translation id="5184329579814168207">Atidaryti naudojant „Chrome“</translation>
 <translation id="5860346505531085166">Priskirti nepavyko. Naudojant paskyrą negalima pasiekti duomenų.</translation>
 <translation id="704835510384979817">Priskirti nepavyko. Nėra atitinkamos versijos variklio.</translation>
 <translation id="7536363920335771251">Variklis atjungtas, priežastis: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb
index 5e2fbe93..78279baf 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Piešķires kļūme. Lietotāja piekļuves pilnvaras derīgums ir beidzies.</translation>
 <translation id="4562971394107096647">Piešķires kļūme. Servera kļūda.</translation>
 <translation id="4641972508298030550">Nevarēja autentificēt lietotāju.</translation>
+<translation id="5184329579814168207">Atvērt pārlūkā Chrome</translation>
 <translation id="5860346505531085166">Piešķires kļūme. Kontam nav piekļuves.</translation>
 <translation id="704835510384979817">Piešķires kļūme. Nav atbilstošas programmas versijas.</translation>
 <translation id="7536363920335771251">Programma ir atvienota, iemesls: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb
index 3590be7c..4bf8521 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Toewijzing mislukt. Toegangstoken van gebruiker is verlopen.</translation>
 <translation id="4562971394107096647">Toewijzing mislukt. Serverfout.</translation>
 <translation id="4641972508298030550">Kan gebruiker niet verifiëren.</translation>
+<translation id="5184329579814168207">Openen in Chrome</translation>
 <translation id="5860346505531085166">Toewijzing mislukt. Account heeft geen toegang.</translation>
 <translation id="704835510384979817">Toewijzing mislukt. Geen overeenkomende engine-versie.</translation>
 <translation id="7536363920335771251">Verbinding met engine verbroken, reden: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb
index e236d81..a1241e7 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb
@@ -12,9 +12,10 @@
 <translation id="4542350224991263059">Oppgaven kunne ikke utføres. Brukerens tilgangstoken er utløpt..</translation>
 <translation id="4562971394107096647">Oppgaven kunne ikke utføres. Tjenerfeil.</translation>
 <translation id="4641972508298030550">Kan ikke autentisere brukeren.</translation>
+<translation id="5184329579814168207">Åpne i Chrome</translation>
 <translation id="5860346505531085166">Oppgaven kunne ikke utføres. Kontoen har ikke tilgang.</translation>
 <translation id="704835510384979817">Oppgaven kunne ikke utføres. Ingen samsvarende motorversjon.</translation>
-<translation id="7536363920335771251">Motoren er koblet fra. Grunn: %1$s</translation>
+<translation id="7536363920335771251">Motoren er koblet fra. Årsak: %1$s</translation>
 <translation id="7961542533680218955">Oppgaven ble utført.</translation>
 <translation id="8514856595257368555">Tokenet er hentet.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb
index 8288244..e092c1c 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Przypisanie się nie udało. Token dostępu użytkownika wygasł.</translation>
 <translation id="4562971394107096647">Przypisanie się nie udało. Błąd serwera.</translation>
 <translation id="4641972508298030550">Nie można uwierzytelnić użytkownika.</translation>
+<translation id="5184329579814168207">Otwórz w Chrome</translation>
 <translation id="5860346505531085166">Przypisanie się nie udało. Konto nie ma dostępu.</translation>
 <translation id="704835510384979817">Przypisanie się nie udało. Brak pasującej wersji przeglądarki.</translation>
 <translation id="7536363920335771251">Rozłączono z mechanizmem, powód: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb
index b359f236..6aa0715 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Falha na atribuição. Token de acesso do usuário expirado.</translation>
 <translation id="4562971394107096647">Falha na atribuição. Erro do servidor.</translation>
 <translation id="4641972508298030550">Não foi possível autenticar usuário.</translation>
+<translation id="5184329579814168207">Abrir no Google Chrome</translation>
 <translation id="5860346505531085166">Falha na atribuição. A conta não tem acesso.</translation>
 <translation id="704835510384979817">Falha na atribuição. Nenhuma versão compatível do mecanismo.</translation>
 <translation id="7536363920335771251">Mecanismo desconectado, motivo: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb
index 124176be..158411f 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">A atribuição falhou. A chave de acesso do utilizador expirou.</translation>
 <translation id="4562971394107096647">A atribuição falhou. Erro do servidor.</translation>
 <translation id="4641972508298030550">Não é possível autenticar o utilizador.</translation>
+<translation id="5184329579814168207">Abrir no Chrome</translation>
 <translation id="5860346505531085166">A atribuição falhou. A conta não tem acesso.</translation>
 <translation id="704835510384979817">A atribuição falhou. Não há uma versão do motor correspondente.</translation>
 <translation id="7536363920335771251">Motor desligado, motivo: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb
index 8205ecf..abc531c6 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb
@@ -6,13 +6,16 @@
 <translation id="2023631438558435272">Atribuirea nu a reușit. Răspuns nevalid.</translation>
 <translation id="2353984724370197742">Atribuirea nu a reușit. Solicitarea din rețea nu a reușit.</translation>
 <translation id="3046825211487065480">Atribuirea nu a reușit. A fost trimisă o a doua solicitare înainte ca prima solicitare să primească răspuns.</translation>
+<translation id="3346106862344060497">Motor conectat.</translation>
 <translation id="3407245330823033366">Alege un cont de folosit cu Blimp.</translation>
 <translation id="3775180005489871350">Atribuirea nu a reușit. Eroarea 400 (BAD_REQUEST).</translation>
 <translation id="4542350224991263059">Atribuirea nu a reușit. Indicativul de acces al utilizatorului a expirat.</translation>
 <translation id="4562971394107096647">Atribuirea nu a reușit. Eroare de server.</translation>
 <translation id="4641972508298030550">Utilizatorul nu poate fi autentificat.</translation>
+<translation id="5184329579814168207">Deschide în Chrome</translation>
 <translation id="5860346505531085166">Atribuirea nu a reușit. Contul nu are acces.</translation>
 <translation id="704835510384979817">Atribuirea nu a reușit. Nicio versiune a motorului potrivită.</translation>
+<translation id="7536363920335771251">Motor deconectat, motiv: %1$s</translation>
 <translation id="7961542533680218955">Atribuirea a reușit.</translation>
 <translation id="8514856595257368555">Indicativul a fost preluat.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb
index 95239db..c64df996 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Ошибка. Срок действия токена доступа истек.</translation>
 <translation id="4562971394107096647">Ошибка сервера.</translation>
 <translation id="4641972508298030550">Не удалось идентифицировать пользователя.</translation>
+<translation id="5184329579814168207">Открыть в Chrome</translation>
 <translation id="5860346505531085166">Ошибка. У аккаунта нет права доступа.</translation>
 <translation id="704835510384979817">Ошибка. Совместимая версия поисковой системы отсутствует.</translation>
 <translation id="7536363920335771251">Соединение прервано. Причина: %1$s.</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb
index 3e9fc864..44cec94 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Priradenie zlyhalo. Vypršala platnosť prístupového tokenu používateľa.</translation>
 <translation id="4562971394107096647">Priradenie zlyhalo. Chyba servera.</translation>
 <translation id="4641972508298030550">Používateľa sa nepodarilo overiť.</translation>
+<translation id="5184329579814168207">Otvoriť v prehliadači Chrome</translation>
 <translation id="5860346505531085166">Priradenie zlyhalo. Účet nemá prístup.</translation>
 <translation id="704835510384979817">Priradenie zlyhalo. Žiadna zodpovedajúca verzia nástroja.</translation>
 <translation id="7536363920335771251">Nástroj bol odpojený. Dôvod: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb
index 792088ad..0a51ffa 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Dodelitev ni uspela. Potekel žeton za uporabniški dostop.</translation>
 <translation id="4562971394107096647">Dodelitev ni uspela. Napaka strežnika.</translation>
 <translation id="4641972508298030550">Pristnosti uporabnika ni mogoče preveriti.</translation>
+<translation id="5184329579814168207">Odpri v Chromu</translation>
 <translation id="5860346505531085166">Dodelitev ni uspela. Račun nima dostopa.</translation>
 <translation id="704835510384979817">Dodelitev ni uspela. Ni ujemajoče se različice iskalnika.</translation>
 <translation id="7536363920335771251">Povezava z mehanizmom je prekinjena; razlog: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb
index ed849fa..3b163b6 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Пренос права није успео. Ознака приступа за корисника је истекла.</translation>
 <translation id="4562971394107096647">Пренос права није успео. Грешка на серверу.</translation>
 <translation id="4641972508298030550">Потврда аутентичности корисника није успела.</translation>
+<translation id="5184329579814168207">Отвори у Chrome-у</translation>
 <translation id="5860346505531085166">Пренос права није успео. Налог нема приступ.</translation>
 <translation id="704835510384979817">Пренос права није успео. Нема одговарајуће верзије механизма.</translation>
 <translation id="7536363920335771251">Прекинута је веза са механизмом, разлог: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb
index 8d816d7b..099f660 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Tilldelningen misslyckades. Åtkomsttoken för användare har upphört.</translation>
 <translation id="4562971394107096647">Tilldelningen misslyckades. Serverfel.</translation>
 <translation id="4641972508298030550">Användaren kunde inte autentiseras.</translation>
+<translation id="5184329579814168207">Öppna i Chrome</translation>
 <translation id="5860346505531085166">Tilldelningen misslyckades. Kontot har ingen åtkomst.</translation>
 <translation id="704835510384979817">Tilldelningen misslyckades. Det finns ingen matchande motorversion.</translation>
 <translation id="7536363920335771251">Motorn är frånkopplad. Anledning: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb
index 80e537a7..6f26fbd 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Haijafaulu kuhawilisha. Muda wa matumizi ya tokeni ya ufikiaji umekwisha.</translation>
 <translation id="4562971394107096647">Haijafaulu kuhawilisha. Hitilafu ya seva.</translation>
 <translation id="4641972508298030550">Haikuweza kumthibitisha mtumiaji.</translation>
+<translation id="5184329579814168207">Fungulia katika Chrome</translation>
 <translation id="5860346505531085166">Haijafaulu kuhawilisha. Akaunti haina idhini ya kufikia.</translation>
 <translation id="704835510384979817">Haijafaulu kuhawilisha. Hakuna toleo la mtambo linalolingana.</translation>
 <translation id="7536363920335771251">Mtambo umeondolewa, sababu: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb
index 19b7190..ef0e209 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">การมอบหมายล้มเหลว โทเค็นเพื่อการเข้าถึงของผู้ใช้หมดอายุ</translation>
 <translation id="4562971394107096647">การมอบหมายล้มเหลว ข้อผิดพลาดของเซิร์ฟเวอร์</translation>
 <translation id="4641972508298030550">ไม่สามารถตรวจสอบสิทธิ์ผู้ใช้</translation>
+<translation id="5184329579814168207">เปิดใน Chrome</translation>
 <translation id="5860346505531085166">การมอบหมายล้มเหลว บัญชีไม่มีสิทธิ์เข้าถึง</translation>
 <translation id="704835510384979817">การมอบหมายล้มเหลว เวอร์ชันของเครื่องไม่ตรงกัน</translation>
 <translation id="7536363920335771251">ยกเลิกการเชื่อมต่อเครื่องมือแล้ว เหตุผลคือ %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb
index 9de45cec8..2271a58 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb
@@ -6,13 +6,16 @@
 <translation id="2023631438558435272">Atama başarısız oldu. Geçersiz yanıt.</translation>
 <translation id="2353984724370197742">Atama başarısız oldu. Ağ isteği başarısız oldu.</translation>
 <translation id="3046825211487065480">Atama başarısız oldu. Birinci isteğe yanıt verilmeden ikinci istek gönderildi.</translation>
+<translation id="3346106862344060497">Motora bağlanıldı.</translation>
 <translation id="3407245330823033366">Lütfen Blimp ile kullanılacak bir hesap seçin.</translation>
 <translation id="3775180005489871350">Atama başarısız oldu.  400 (BAD_REQUEST) hatası.</translation>
 <translation id="4542350224991263059">Atama başarısız oldu. Kullanıcı erişim kodunun süresi doldu.</translation>
 <translation id="4562971394107096647">Atama başarısız oldu. Sunucu hatası.</translation>
 <translation id="4641972508298030550">Kullanıcının kimliği doğrulanamıyor.</translation>
+<translation id="5184329579814168207">Chrome'da aç</translation>
 <translation id="5860346505531085166">Atama başarısız oldu. Hesabın erişimi yok.</translation>
 <translation id="704835510384979817">Atama başarısız oldu. Eşleşen motor sürümü yok.</translation>
+<translation id="7536363920335771251">Motor bağlantısı kesildi, neden: %1$s</translation>
 <translation id="7961542533680218955">Atama başarılı oldu.</translation>
 <translation id="8514856595257368555">Jeton alındı.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb
index 3f244191..f31986e6 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Не вдалось отримати завдання. Маркер доступу вже не діє.</translation>
 <translation id="4562971394107096647">Не вдалось отримати завдання. Помилка сервера.</translation>
 <translation id="4641972508298030550">Не вдається підтвердити облікові дані користувача.</translation>
+<translation id="5184329579814168207">Відкрити в Chrome</translation>
 <translation id="5860346505531085166">Не вдалось отримати завдання. Обліковий запис не має доступу.</translation>
 <translation id="704835510384979817">Не вдалось отримати завдання. Немає відповідної версії ресурсу.</translation>
 <translation id="7536363920335771251">Систему від’єднано. Причина: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb
index 9f25dbf8..d8d1cba 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">Gán không thành công.  Mã truy cập người dùng đã hết hạn.</translation>
 <translation id="4562971394107096647">Gán không thành công.  Lỗi máy chủ.</translation>
 <translation id="4641972508298030550">Không thể xác thực được người dùng.</translation>
+<translation id="5184329579814168207">Mở trong Chrome</translation>
 <translation id="5860346505531085166">Gán không thành công.  Tài khoản không có quyền truy cập.</translation>
 <translation id="704835510384979817">Gán không thành công.  Không có phiên bản công cụ phù hợp.</translation>
 <translation id="7536363920335771251">Đã ngắt kết nối công cụ, lí do: %1$s</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb
index f9e8dc0..6ed01d91 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb
@@ -12,9 +12,10 @@
 <translation id="4542350224991263059">无法获取任务,因为用户访问令牌已过期。</translation>
 <translation id="4562971394107096647">无法获取任务,因为出现了服务器错误。</translation>
 <translation id="4641972508298030550">无法对用户进行身份验证。</translation>
+<translation id="5184329579814168207">在 Chrome 中打开</translation>
 <translation id="5860346505531085166">无法获取任务,因为相关帐户无访问权限。</translation>
 <translation id="704835510384979817">无法获取任务,因为没有相符的引擎版本。</translation>
-<translation id="7536363920335771251">引擎已断开,原因是:%1$s</translation>
+<translation id="7536363920335771251">引擎已断开,原因:%1$s</translation>
 <translation id="7961542533680218955">已成功获取任务。</translation>
 <translation id="8514856595257368555">已检索到令牌。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb
index 1e0fc222..319990f 100644
--- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb
+++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb
@@ -12,6 +12,7 @@
 <translation id="4542350224991263059">指派失敗。使用者存取憑證已過期。</translation>
 <translation id="4562971394107096647">指派失敗。伺服器錯誤。</translation>
 <translation id="4641972508298030550">無法驗證使用者。</translation>
+<translation id="5184329579814168207">在 Chrome 中開啟</translation>
 <translation id="5860346505531085166">指派失敗。帳戶沒有存取權。</translation>
 <translation id="704835510384979817">指派失敗。沒有相符的引擎版本。</translation>
 <translation id="7536363920335771251">引擎連線已中斷 (原因:%1$s)</translation>
diff --git a/build/OWNERS b/build/OWNERS
index 8448953..122b6e6 100644
--- a/build/OWNERS
+++ b/build/OWNERS
@@ -4,6 +4,7 @@
 jochen@chromium.org
 scottmg@chromium.org
 thakis@chromium.org
+brucedawson@chromium.org
 
 per-file mac_toolchain.py=erikchen@chromium.org
 per-file mac_toolchain.py=justincohen@chromium.org
diff --git a/build/common.gypi b/build/common.gypi
index 75cf5484..871daa5 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -1945,8 +1945,8 @@
           # macros are available, #include <AvailabilityMacros.h>.  Additional
           # documentation on these macros is available at
           # http://developer.apple.com/mac/library/technotes/tn2002/tn2064.html#SECTION3
-          # Chrome normally builds with the Mac OS X 10.6 SDK and sets the
-          # deployment target to 10.6.  Other projects, such as O3D, may
+          # Chrome normally builds with the Mac OS X 10.10 SDK and sets the
+          # deployment target to 10.7.  Other projects, such as O3D, may
           # override these defaults.
 
           # Normally, mac_sdk_min is used to find an SDK that Xcode knows
@@ -1955,16 +1955,7 @@
           # someplace that Xcode doesn't know about, set mac_sdk_path to the
           # path to the SDK; when set to a non-empty string, SDK detection
           # based on mac_sdk_min will be bypassed entirely.
-          'conditions': [
-            ['OS=="ios"', {
-              # The iOS build can use Xcode's clang, and that will complain
-              # about -stdlib=libc++ if the deployment target is not at least
-              # 10.7.
-              'mac_deployment_target%': '10.7',
-            }, {  # else OS!="ios"
-              'mac_deployment_target%': '10.6',
-            }],
-          ],
+          'mac_deployment_target%': '10.7',
           'mac_sdk_min%': '10.10',
           'mac_sdk_path%': '',
         },
diff --git a/build/util/version.py b/build/util/version.py
index 4d3691a..767412e9 100755
--- a/build/util/version.py
+++ b/build/util/version.py
@@ -27,7 +27,7 @@
     values_dict[key] = val
 
 
-def fetch_values(file_list):
+def fetch_values(file_list, is_official_build=None):
   """
   Returns a dictionary of values to be used for substitution, populating
   the dictionary with KEYWORD=VALUE settings from the files in 'file_list'.
@@ -37,7 +37,7 @@
     OFFICIAL_BUILD
   """
   CHROME_BUILD_TYPE = os.environ.get('CHROME_BUILD_TYPE')
-  if CHROME_BUILD_TYPE == '_official':
+  if CHROME_BUILD_TYPE == '_official' or is_official_build:
     official_build = '1'
   else:
     official_build = '0'
@@ -113,6 +113,10 @@
                       help='Evaluate VAL after reading variables. Can be used '
                            'to synthesize variables. e.g. -e \'PATCH_HI=int('
                            'PATCH)/256.')
+  parser.add_argument('--official', action='store_true',
+                      help='Whether the current build should be an official '
+                           'build, used in addition to the environment '
+                           'variable.')
   parser.add_argument('args', nargs=argparse.REMAINDER,
                       help='For compatibility: INPUT and OUTPUT can be '
                            'passed as positional arguments.')
@@ -136,7 +140,7 @@
   if options.args:
     parser.error('Unexpected arguments: %r' % options.args)
 
-  values = fetch_values(options.file)
+  values = fetch_values(options.file, options.official)
   for key, val in evals.iteritems():
     values[key] = str(eval(val, globals(), values))
 
diff --git a/build/write_build_date_header.py b/build/write_build_date_header.py
index 0ba4704..6fe514f 100755
--- a/build/write_build_date_header.py
+++ b/build/write_build_date_header.py
@@ -4,40 +4,50 @@
 # found in the LICENSE file.
 """Writes a file that contains a define that approximates the build date.
 
-For unofficial builds, the build date is set to the most recent first Sunday
-of a month, in UTC time.
-
-For official builds, the build date is set to the current date (in UTC).
+build_type impacts the timestamp generated:
+- default: the build date is set to the most recent first Sunday of a month at
+  5:00am. The reason is that it is a time where invalidating the build cache
+  shouldn't have major reprecussions (due to lower load).
+- official: the build date is set to the current date at 5:00am, or the day
+  before if the current time is before 5:00am.
+Either way, it is guaranteed to be in the past and always in UTC.
 
 It is also possible to explicitly set a build date to be used.
-
-The reason for using the first Sunday of a month for unofficial builds is that
-it is a time where invalidating the build cache shouldn't have major
-reprecussions (due to lower load).
 """
 
 import argparse
 import calendar
 import datetime
+import doctest
 import os
 import sys
 
 
 def GetFirstSundayOfMonth(year, month):
-  """Returns the first sunday of the given month of the given year."""
+  """Returns the first sunday of the given month of the given year.
+
+  >>> GetFirstSundayOfMonth(2016, 2)
+  7
+  >>> GetFirstSundayOfMonth(2016, 3)
+  6
+  >>> GetFirstSundayOfMonth(2000, 1)
+  2
+  """
   weeks = calendar.Calendar().monthdays2calendar(year, month)
   # Return the first day in the first week that is a Sunday.
   return [date_day[0] for date_day in weeks[0] if date_day[1] == 6][0]
 
 
-# Validate that GetFirstSundayOfMonth works.
-assert GetFirstSundayOfMonth(2016, 2) == 7
-assert GetFirstSundayOfMonth(2016, 3) == 6
-assert GetFirstSundayOfMonth(2000, 1) == 2
-
-
 def GetBuildDate(build_type, utc_now):
-  """Gets the approximate build date given the specific build type."""
+  """Gets the approximate build date given the specific build type.
+
+  >>> GetBuildDate('default', datetime.datetime(2016, 2, 6, 1, 2, 3))
+  'Jan 03 2016 01:02:03'
+  >>> GetBuildDate('default', datetime.datetime(2016, 2, 7, 5))
+  'Feb 07 2016 05:00:00'
+  >>> GetBuildDate('default', datetime.datetime(2016, 2, 8, 5))
+  'Feb 07 2016 05:00:00'
+  """
   day = utc_now.day
   month = utc_now.month
   year = utc_now.year
@@ -54,28 +64,39 @@
         month = 12
         year -= 1
       day = GetFirstSundayOfMonth(year, month)
-  return '{:%b %d %Y}'.format(datetime.date(year, month, day))
-
-
-# Validate that GetBuildDate works.
-assert GetBuildDate('default', datetime.date(2016, 2, 6)) == 'Jan 03 2016'
-assert GetBuildDate('default', datetime.date(2016, 2, 7)) == 'Feb 07 2016'
-assert GetBuildDate('default', datetime.date(2016, 2, 8)) == 'Feb 07 2016'
+  now = datetime.datetime(
+      year, month, day, utc_now.hour, utc_now.minute, utc_now.second)
+  return '{:%b %d %Y %H:%M:%S}'.format(now)
 
 
 def main():
-  argument_parser = argparse.ArgumentParser()
+  if doctest.testmod()[0]:
+    return 1
+  argument_parser = argparse.ArgumentParser(
+      description=sys.modules[__name__].__doc__,
+      formatter_class=argparse.RawDescriptionHelpFormatter)
   argument_parser.add_argument('output_file', help='The file to write to')
-  argument_parser.add_argument('build_type', help='The type of build',
-                               choices=('official', 'default'))
-  argument_parser.add_argument('build_date_override', nargs='?',
-                               help='Optional override for the build date')
+  argument_parser.add_argument(
+      'build_type', help='The type of build', choices=('official', 'default'))
+  argument_parser.add_argument(
+      'build_date_override', nargs='?',
+      help='Optional override for the build date. Format must be '
+           '\'Mmm DD YYYY HH:MM:SS\'')
   args = argument_parser.parse_args()
 
   if args.build_date_override:
+    # Format is expected to be "Mmm DD YYYY HH:MM:SS".
     build_date = args.build_date_override
   else:
-    build_date = GetBuildDate(args.build_type, datetime.datetime.utcnow())
+    now = datetime.datetime.utcnow()
+    if now.hour < 5:
+      # The time is locked at 5:00 am in UTC to cause the build cache
+      # invalidation to not happen exactly at midnight. Use the same calculation
+      # as the day before.
+      # See //base/build_time.cc.
+      now = now - datetime.timedelta(days=1)
+    now = datetime.datetime(now.year, now.month, now.day, 5, 0, 0)
+    build_date = GetBuildDate(args.build_type, now)
 
   output = ('// Generated by //build/write_build_date_header.py\n'
            '#ifndef BUILD_DATE\n'
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
index 9667a31..108a740f 100644
--- a/build_overrides/build.gni
+++ b/build_overrides/build.gni
@@ -8,4 +8,4 @@
 # builds. We can remove this when Chromium drops 10.6 support and also
 # requires 10.7.
 mac_sdk_min_build_override = "10.10"
-mac_deployment_target_build_override = "10.6"
+mac_deployment_target_build_override = "10.7"
diff --git a/cc/tiles/picture_layer_tiling.cc b/cc/tiles/picture_layer_tiling.cc
index 4282204..6a555068 100644
--- a/cc/tiles/picture_layer_tiling.cc
+++ b/cc/tiles/picture_layer_tiling.cc
@@ -74,7 +74,8 @@
       has_skewport_rect_tiles_(false),
       has_soon_border_rect_tiles_(false),
       has_eventually_rect_tiles_(false),
-      all_tiles_done_(true) {
+      all_tiles_done_(true),
+      invalidated_since_last_compute_priority_rects_(false) {
   DCHECK(!raster_source->IsSolidColor());
   gfx::Size content_bounds =
       gfx::ScaleToCeiledSize(raster_source_->GetSize(), contents_scale);
@@ -287,6 +288,7 @@
 
 void PictureLayerTiling::Invalidate(const Region& layer_invalidation) {
   DCHECK(tree_ != ACTIVE_TREE || !client_->GetPendingOrActiveTwinTiling(this));
+  invalidated_since_last_compute_priority_rects_ = true;
   RemoveTilesInRegion(layer_invalidation, true /* recreate tiles */);
 }
 
@@ -638,11 +640,13 @@
     set_all_tiles_done(false);
   }
 
+  bool invalidated = invalidated_since_last_compute_priority_rects_;
+  invalidated_since_last_compute_priority_rects_ = false;
   if (!NeedsUpdateForFrameAtTimeAndViewport(current_frame_time_in_seconds,
                                             viewport_in_layer_space)) {
     // This should never be zero for the purposes of has_ever_been_updated().
     DCHECK_NE(current_frame_time_in_seconds, 0.0);
-    return false;
+    return invalidated;
   }
 
   const float content_to_screen_scale = ideal_contents_scale / contents_scale_;
diff --git a/cc/tiles/picture_layer_tiling.h b/cc/tiles/picture_layer_tiling.h
index fb20182..816ac8e 100644
--- a/cc/tiles/picture_layer_tiling.h
+++ b/cc/tiles/picture_layer_tiling.h
@@ -403,6 +403,7 @@
   bool has_soon_border_rect_tiles_;
   bool has_eventually_rect_tiles_;
   bool all_tiles_done_;
+  bool invalidated_since_last_compute_priority_rects_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(PictureLayerTiling);
diff --git a/cc/tiles/picture_layer_tiling_unittest.cc b/cc/tiles/picture_layer_tiling_unittest.cc
index 40f288f..bb4de4e 100644
--- a/cc/tiles/picture_layer_tiling_unittest.cc
+++ b/cc/tiles/picture_layer_tiling_unittest.cc
@@ -1784,6 +1784,38 @@
   EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
 }
 
+TEST(PictureLayerTilingTest, InvalidateAfterComputeTilePriorityRects) {
+  FakePictureLayerTilingClient pending_client;
+  pending_client.SetTileSize(gfx::Size(100, 100));
+
+  scoped_refptr<FakeRasterSource> raster_source =
+      FakeRasterSource::CreateFilled(gfx::Size(100, 100));
+  scoped_ptr<TestablePictureLayerTiling> pending_tiling =
+      TestablePictureLayerTiling::Create(PENDING_TREE, 1.0f, raster_source,
+                                         &pending_client, LayerTreeSettings());
+  pending_tiling->set_resolution(HIGH_RESOLUTION);
+
+  // Ensure that we can compute tile priority rects, invalidate, and compute the
+  // rects again. It is important that the second compute tile priority rects
+  // return true, indicating that things have changed (since invalidation has
+  // changed things). This causes PrepareTiles to be properly scheduled. If the
+  // second ComputeTilePriorityRects returns false, then we assume that
+  // PrepareTiles isn't needed and we signal that we're ready to draw
+  // immediately, which can cause visual glitches.
+  //
+  // This can happen we if we process an impl frame deadline before processing a
+  // commit. That is, when we draw we ComputeTilePriorityRects. If we process
+  // the commit afterwards, it would use the same timestamp and sometimes would
+  // use the same viewport to compute tile priority rects again.
+  double time = 1.;
+  gfx::Rect viewport(0, 0, 100, 100);
+  EXPECT_TRUE(pending_tiling->ComputeTilePriorityRects(viewport, 1.0f, time,
+                                                       Occlusion()));
+  pending_tiling->Invalidate(viewport);
+  EXPECT_TRUE(pending_tiling->ComputeTilePriorityRects(viewport, 1.0f, time,
+                                                       Occlusion()));
+}
+
 TEST_F(PictureLayerTilingIteratorTest, ResizeTilesAndUpdateToCurrent) {
   // The tiling has four rows and three columns.
   Initialize(gfx::Size(150, 100), 1.f, gfx::Size(250, 150));
diff --git a/chrome/android/java/proguard.flags b/chrome/android/java/proguard.flags
index 9533aae..7112ad7 100644
--- a/chrome/android/java/proguard.flags
+++ b/chrome/android/java/proguard.flags
@@ -112,6 +112,10 @@
   *;
 }
 
+-keep class android.support.v4.app.NotificationCompat** {
+  *;
+}
+
 -keep class android.support.v7.app.AlertDialog** {
   *;
 }
diff --git a/chrome/android/java/res/layout/bookmark_widget_icons_only.xml b/chrome/android/java/res/layout/bookmark_widget_icons_only.xml
new file mode 100644
index 0000000..fc0afd8
--- /dev/null
+++ b/chrome/android/java/res/layout/bookmark_widget_icons_only.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2016 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/bookmark_widget_min_width"
+    android:layout_height="match_parent">
+
+    <include layout="@layout/bookmark_widget" />
+
+</FrameLayout>
diff --git a/chrome/android/java/res/layout/bookmark_widget_item.xml b/chrome/android/java/res/layout/bookmark_widget_item.xml
index daa4935..bf1b669 100644
--- a/chrome/android/java/res/layout/bookmark_widget_item.xml
+++ b/chrome/android/java/res/layout/bookmark_widget_item.xml
@@ -12,8 +12,8 @@
 
     <ImageView
         android:id="@+id/favicon"
-        android:layout_width="64dp"
-        android:layout_height="48dp"
+        android:layout_width="@dimen/bookmark_widget_min_width"
+        android:layout_height="@dimen/bookmark_widget_min_height"
         android:contentDescription="@null"
         android:scaleType="center" />
 
@@ -23,7 +23,6 @@
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:gravity="center_vertical"
-        android:minHeight="48dp"
         android:paddingEnd="16dp"
         android:singleLine="true"
         android:textAlignment="viewStart"
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
index e2e5eb8..4630369c7 100644
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -298,6 +298,10 @@
     <dimen name="bookmark_minimum_dialog_size_tablet">500dp</dimen>
     <dimen name="bookmark_drawer_drawable_padding">18dp</dimen>
 
+    <!-- Bookmark widget dimensions -->
+    <dimen name="bookmark_widget_min_width">64dp</dimen>
+    <dimen name="bookmark_widget_min_height">48dp</dimen>
+
     <!-- Custom Tabs dimensions -->
     <dimen name="custom_tabs_toolbar_maxWidth">60dp</dimen>
     <dimen name="custom_tabs_toolbar_vertical_padding">16dp</dimen>
diff --git a/chrome/android/java/res/xml/bookmark_widget_info.xml b/chrome/android/java/res/xml/bookmark_widget_info.xml
index 1e6aa5b..530f7fe 100644
--- a/chrome/android/java/res/xml/bookmark_widget_info.xml
+++ b/chrome/android/java/res/xml/bookmark_widget_info.xml
@@ -7,9 +7,9 @@
 <appwidget-provider
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:minWidth="180dp"
-    android:minHeight="110dp"
-    android:minResizeHeight="40dp"
-    android:minResizeWidth="110dp"
+    android:minHeight="150dp"
+    android:minResizeWidth="@dimen/bookmark_widget_min_width"
+    android:minResizeHeight="@dimen/bookmark_widget_min_height"
     android:previewImage="@drawable/bookmark_widget_preview"
     android:initialLayout="@layout/bookmark_widget"
     android:resizeMode="vertical|horizontal"
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
index 3f5640d..927ce125d 100644
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -14,10 +14,6 @@
     <org.chromium.chrome.browser.preferences.SearchEnginePreference
         android:key="search_engine"
         android:title="@string/prefs_search_engine"/>
-    <Preference
-        android:fragment="org.chromium.chrome.browser.preferences.DocumentModePreference"
-        android:key="document_mode"
-        android:title="@string/tabs_and_apps_title" />
     <org.chromium.chrome.browser.preferences.ChromeBasePreference
         android:fragment="org.chromium.chrome.browser.preferences.autofill.AutofillPreferences"
         android:key="autofill_settings"
diff --git a/chrome/android/java/src/android/support/customtabs/CustomTabsIntent.java b/chrome/android/java/src/android/support/customtabs/CustomTabsIntent.java
index c3c3a91..dfbd393 100644
--- a/chrome/android/java/src/android/support/customtabs/CustomTabsIntent.java
+++ b/chrome/android/java/src/android/support/customtabs/CustomTabsIntent.java
@@ -14,6 +14,7 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.view.View;
 import android.widget.RemoteViews;
 
 import java.lang.reflect.InvocationTargetException;
@@ -167,8 +168,37 @@
      * is set, the other secondary toolbar configurations will be overriden. The height of the
      * {@link RemoteViews} should not exceed 56dp.
      */
-    public static final String EXTRA_SECONDARY_TOOLBAR_REMOTEVIEWS =
-            "android.support.customtabs.extra.EXTRA_SECONDARY_TOOLBAR_REMOTEVIEWS";
+    public static final String EXTRA_REMOTEVIEWS =
+            "android.support.customtabs.extra.EXTRA_REMOTEVIEWS";
+
+    /**
+     * Extra that specifies an array of {@link View} ids. When these {@link View}s are clicked, a
+     * {@link PendingIntent} will be sent, carrying the current url of the custom tab.
+     * <p>
+     * Note Custom Tabs will override the default onClick behavior of the listed {@link View}s. If
+     * you do not care about the current url, you can safely ignore this extra and use
+     * {@link RemoteViews#setOnClickPendingIntent(int, PendingIntent)} instead.
+     */
+    public static final String EXTRA_REMOTEVIEWS_VIEW_IDS =
+            "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_VIEW_IDS";
+
+    /**
+     * Extra that specifies the {@link PendingIntent} to be sent when the user clicks on the
+     * {@link View}s that is listed by {@link #EXTRA_REMOTEVIEWS_CLICKED_ID}.
+     * <p>
+     * Note when this {@link PendingIntent} is triggered, it will have the current url as data
+     * field, also the id of the clicked {@link View}, specified by
+     * {@link #EXTRA_REMOTEVIEWS_CLICKED_ID}.
+     */
+    public static final String EXTRA_REMOTEVIEWS_PENDINGINTENT =
+            "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_PENDINGINTENT";
+
+    /**
+     * Extra that specifies which {@link View} has been clicked. This extra will be put to the
+     * {@link PendingIntent} sent from Custom Tabs when a view in the {@link RemoteViews} is clicked
+     */
+    public static final String EXTRA_REMOTEVIEWS_CLICKED_ID =
+            "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_CLICKED_ID";
 
     /**
      * Convenience method to create a VIEW intent without a session for the given package.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
index 9a8d754..fb46922 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
@@ -231,12 +231,6 @@
             "disable-web-notification-custom-layouts";
 
     /**
-     * Forces a user down the document to tabbed mode migration pathway.
-     */
-    public static final String ENABLE_FORCED_MIGRATION_TO_TABBED_MODE =
-            "enable-forced-migration-to-tabbed-mode";
-
-    /**
      * Determines which of the Herb prototypes is being tested.
      * See about:flags for descriptions.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index de14a7e..6e3ccff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -545,6 +545,10 @@
 
             Intent intent = getIntent();
 
+            if (!CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState())) {
+                mTabModelSelectorImpl.clearEncryptedState();
+            }
+
             boolean noRestoreState =
                     CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE);
             if (noRestoreState) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/EmbedContentViewActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/EmbedContentViewActivity.java
index 6725552..7ac4f7e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/EmbedContentViewActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/EmbedContentViewActivity.java
@@ -14,7 +14,6 @@
 import android.view.View;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
 import org.chromium.chrome.browser.firstrun.FirstRunStatus;
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
 import org.chromium.chrome.browser.tab.Tab;
@@ -125,12 +124,6 @@
 
     @Override
     protected TabDelegate createTabDelegate(boolean incognito) {
-        return new TabDelegate(incognito) {
-            @Override
-            protected boolean isAllowedToLaunchDocumentActivity(Context context) {
-                // Catch a corner case where the user can bypass the ToS.  crbug.com/516645
-                return FirstRunFlowSequencer.checkIfFirstRunIsNecessary(context, false) == null;
-            }
-        };
+        return new TabDelegate(incognito);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetProvider.java
index e6e49b7..b3c9195 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetProvider.java
@@ -11,6 +11,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Bundle;
 import android.widget.RemoteViews;
 
 import com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider;
@@ -24,6 +25,7 @@
 public class BookmarkWidgetProvider extends AppWidgetProvider {
     private static final String ACTION_BOOKMARK_APPWIDGET_UPDATE_SUFFIX =
             ".BOOKMARK_APPWIDGET_UPDATE";
+    private static final int ICONS_ONLY_THRESHOLD_WIDTH_DP = 110;
 
     @Override
     public void onReceive(Context context, Intent intent) {
@@ -52,6 +54,14 @@
     }
 
     @Override
+    public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager,
+            int appWidgetId, Bundle newOptions) {
+        // Update the widget after it's resized in case it's crossed the threshold between icon-
+        // only mode and regular mode.
+        performUpdate(context, appWidgetManager, new int[] { appWidgetId });
+    }
+
+    @Override
     public void onDeleted(Context context, int[] appWidgetIds) {
         super.onDeleted(context, appWidgetIds);
         for (int widgetId : appWidgetIds) {
@@ -97,7 +107,10 @@
             updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
             updateIntent.setData(Uri.parse(updateIntent.toUri(Intent.URI_INTENT_SCHEME)));
 
-            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.bookmark_widget);
+            int layoutId = shouldShowIconsOnly(appWidgetManager, appWidgetId)
+                    ? R.layout.bookmark_widget_icons_only
+                    : R.layout.bookmark_widget;
+            RemoteViews views = new RemoteViews(context.getPackageName(), layoutId);
             views.setRemoteAdapter(R.id.bookmarks_list, updateIntent);
 
             appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.bookmarks_list);
@@ -109,6 +122,12 @@
         }
     }
 
+    private boolean shouldShowIconsOnly(AppWidgetManager appWidgetManager, int appWidgetId) {
+        int widthDp = appWidgetManager.getAppWidgetOptions(appWidgetId)
+                .getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
+        return widthDp < ICONS_ONLY_THRESHOLD_WIDTH_DP;
+    }
+
     /**
      * Build {@link ComponentName} describing this specific
      * {@link AppWidgetProvider}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
index 707d4db..7f97254 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
@@ -11,6 +11,7 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.net.Uri;
+import android.os.StrictMode;
 import android.support.annotation.BinderThread;
 import android.support.annotation.UiThread;
 import android.text.TextUtils;
@@ -82,9 +83,15 @@
     }
 
     static SharedPreferences getWidgetState(Context context, int widgetId) {
-        return context.getSharedPreferences(
-                String.format("widgetState-%d", widgetId),
-                Context.MODE_PRIVATE);
+        StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
+        StrictMode.allowThreadDiskWrites();
+        try {
+            return context.getSharedPreferences(
+                    String.format("widgetState-%d", widgetId),
+                    Context.MODE_PRIVATE);
+        } finally {
+            StrictMode.setThreadPolicy(oldPolicy);
+        }
     }
 
     static void deleteWidgetState(Context context, int widgetId) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
index c5bd500..92527f5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -130,7 +130,7 @@
 
             Activity activity = mWindowAndroid != null ? mWindowAndroid.getActivity().get() : null;
             boolean isMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(activity)
-                    || MultiWindowUtils.getInstance().isMultiWindow(activity);
+                    || MultiWindowUtils.getInstance().isInMultiWindowMode(activity);
 
             // If the measured width is the same as the allowed width (i.e. the orientation has
             // not changed) and multi-window mode is off, use the largest measured height seen thus
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
index d3931f0..d8cd3e4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
@@ -219,16 +219,16 @@
                     + "CustomTabsIntent.html#KEY_ICON");
         }
 
-        PendingIntent pi = IntentUtils.safeGetParcelable(bundle,
+        PendingIntent pendingIntent = IntentUtils.safeGetParcelable(bundle,
                 CustomTabsIntent.KEY_PENDING_INTENT);
         // PendingIntent is a must for buttons on the toolbar, but it's optional for bottom bar.
-        if (onToolbar && pi == null) {
+        if (onToolbar && pendingIntent == null) {
             Log.w(TAG, "Invalid action button on toolbar: pending intent not present in bundle!");
             bitmap.recycle();
             return null;
         }
 
-        return new CustomButtonParams(id, bitmap, description, pi, tinted, onToolbar);
+        return new CustomButtonParams(id, bitmap, description, pendingIntent, tinted, onToolbar);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index 009c99d..4b658b20 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -5,7 +5,6 @@
 package org.chromium.chrome.browser.customtabs;
 
 import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
@@ -20,9 +19,7 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.view.ViewStub;
 import android.view.Window;
-import android.widget.ImageButton;
 import android.widget.RemoteViews;
 
 import org.chromium.base.ApiCompatibilityUtils;
@@ -70,8 +67,6 @@
 import org.chromium.content_public.common.Referrer;
 import org.chromium.ui.base.PageTransition;
 
-import java.util.List;
-
 /**
  * The activity for custom tabs. It will be launched on top of a client's task.
  */
@@ -89,6 +84,7 @@
     private IBinder mSession;
     private CustomTabContentHandler mCustomTabContentHandler;
     private Tab mMainTab;
+    private CustomTabBottomBarDelegate mBottomBarDelegate;
 
     // This is to give the right package name while using the client's resources during an
     // overridePendingTransition call.
@@ -165,13 +161,14 @@
      * if true, updates {@link RemoteViews} on the secondary toolbar.
      * @return Whether the update is successful.
      */
-    static boolean updateRemoteViews(IBinder session, RemoteViews remoteViews) {
+    static boolean updateRemoteViews(IBinder session, RemoteViews remoteViews, int[] clickableIDs,
+            PendingIntent pendingIntent) {
         ThreadUtils.assertOnUiThread();
         // Do nothing if there is no activity or the activity does not belong to this session.
         if (sActiveContentHandler == null || !sActiveContentHandler.getSession().equals(session)) {
             return false;
         }
-        return sActiveContentHandler.updateRemoteViews(remoteViews);
+        return sActiveContentHandler.updateRemoteViews(remoteViews, clickableIDs, pendingIntent);
     }
 
     @Override
@@ -243,7 +240,8 @@
         // Setting task title and icon to be null will preserve the client app's title and icon.
         ApiCompatibilityUtils.setTaskDescription(this, null, null, toolbarColor);
         showCustomButtonOnToolbar();
-        showBottomBarIfNecessary();
+        mBottomBarDelegate = new CustomTabBottomBarDelegate(this, mIntentDataProvider);
+        mBottomBarDelegate.showBottomBarIfNecessary();
     }
 
     @Override
@@ -319,22 +317,19 @@
                     }
                     showCustomButtonOnToolbar();
                 } else {
-                    updateBottomBarButton(params);
+                    if (mBottomBarDelegate != null) {
+                        mBottomBarDelegate.updateBottomBarButtons(params);
+                    }
                 }
                 return true;
             }
 
             @Override
-            public boolean updateRemoteViews(RemoteViews rv) {
-                if (mIntentDataProvider.getBottomBarRemoteViews() == null) {
-                    // Update only makes sense if we are already showing a RemoteViews.
-                    return false;
-                }
-                ViewGroup bottomBar = (ViewGroup) findViewById(R.id.bottombar);
-                View view = rv.apply(CustomTabActivity.this, bottomBar);
-                bottomBar.removeAllViews();
-                bottomBar.addView(view);
-                return true;
+            public boolean updateRemoteViews(RemoteViews remoteViews, int[] clickableIDs,
+                    PendingIntent pendingIntent) {
+                if (mBottomBarDelegate == null) return false;
+                return mBottomBarDelegate.updateRemoteViews(remoteViews, clickableIDs,
+                        pendingIntent);
             }
         };
         String url = IntentHandler.getUrlFromIntent(getIntent());
@@ -598,65 +593,6 @@
                 });
     }
 
-    /**
-     * Updates the button on the bottom bar that corresponds to the given {@link CustomButtonParams}
-     */
-    private void updateBottomBarButton(CustomButtonParams params) {
-        ViewGroup bottomBar = (ViewGroup) findViewById(R.id.bottombar);
-        ImageButton button = (ImageButton) bottomBar.findViewById(params.getId());
-        button.setContentDescription(params.getDescription());
-        button.setImageDrawable(params.getIcon(getResources()));
-    }
-
-    /**
-     * Inflates the bottom bar {@link ViewStub} and its shadow, and populates it with items.
-     */
-    private void showBottomBarIfNecessary() {
-        // TODO (yusufo): Find a better place for the layout code here and in CustomButtonParams.
-        if (!mIntentDataProvider.shouldShowBottomBar()) return;
-
-        ViewStub bottomBarStub = ((ViewStub) findViewById(R.id.bottombar_stub));
-        bottomBarStub.setLayoutResource(R.layout.custom_tabs_bottombar);
-        bottomBarStub.inflate();
-
-        View shadow = findViewById(R.id.bottombar_shadow);
-        shadow.setVisibility(View.VISIBLE);
-
-        ViewGroup bottomBar = (ViewGroup) findViewById(R.id.bottombar);
-        RemoteViews remoteViews = mIntentDataProvider.getBottomBarRemoteViews();
-        if (remoteViews != null) {
-            //TODO(ianwen): add UMA to see the usage of RemoteViews.
-            View inflatedView = remoteViews.apply(this, bottomBar);
-            bottomBar.addView(inflatedView);
-        } else {
-            bottomBar.setBackgroundColor(mIntentDataProvider.getBottomBarColor());
-            List<CustomButtonParams> items = mIntentDataProvider.getCustomButtonsOnBottombar();
-            for (CustomButtonParams params : items) {
-                if (params.showOnToolbar()) continue;
-                final PendingIntent pendingIntent = params.getPendingIntent();
-                OnClickListener clickListener = null;
-                if (pendingIntent != null) {
-                    clickListener = new OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            Intent addedIntent = new Intent();
-                            addedIntent.setData(Uri.parse(getActivityTab().getUrl()));
-                            try {
-                                pendingIntent.send(CustomTabActivity.this, 0, addedIntent, null,
-                                        null);
-                            } catch (CanceledException e) {
-                                Log.e(TAG,
-                                        "CanceledException while sending pending intent.");
-                            }
-                        }
-                    };
-                }
-                ImageButton button = params.buildBottomBarButton(this, bottomBar, clickListener);
-                bottomBar.addView(button);
-            }
-        }
-    }
-
     @Override
     public boolean shouldShowAppMenu() {
         return getActivityTab() != null && getToolbarManager().isInitialized();
@@ -769,7 +705,7 @@
     boolean openCurrentUrlInBrowser(boolean forceReparenting) {
         if (getActivityTab() == null) return false;
 
-        String url = getTabModelSelector().getCurrentTab().getUrl();
+        String url = getActivityTab().getUrl();
         if (DomDistillerUrlUtils.isDistilledPage(url)) {
             url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java
new file mode 100644
index 0000000..3938e33
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java
@@ -0,0 +1,168 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.customtabs;
+
+import android.app.PendingIntent;
+import android.app.PendingIntent.CanceledException;
+import android.content.Intent;
+import android.net.Uri;
+import android.support.customtabs.CustomTabsIntent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.ViewStub;
+import android.widget.ImageButton;
+import android.widget.RemoteViews;
+
+import org.chromium.base.Log;
+import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.tab.Tab;
+
+import java.util.List;
+
+/**
+ * Delegate that manages bottom bar area inside of {@link CustomTabActivity}.
+ */
+class CustomTabBottomBarDelegate {
+    private static final String TAG = "CustomTab";
+    private ChromeActivity mActivity;
+    private ViewGroup mBottomBarView;
+    private CustomTabIntentDataProvider mDataProvider;
+    private PendingIntent mClickPendingIntent;
+    private int[] mClickableIDs;
+
+    private OnClickListener mBottomBarClickListener = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (mClickPendingIntent == null) return;
+            Intent extraIntent = new Intent();
+            extraIntent.putExtra(CustomTabsIntent.EXTRA_REMOTEVIEWS_CLICKED_ID, v.getId());
+            sendPendingIntentWithUrl(mClickPendingIntent, extraIntent, mActivity);
+        }
+    };
+
+    public CustomTabBottomBarDelegate(ChromeActivity activity,
+            CustomTabIntentDataProvider dataProvider) {
+        mActivity = activity;
+        mDataProvider = dataProvider;
+    }
+
+    /**
+     * Makes the bottom bar area to show, if any.
+     */
+    public void showBottomBarIfNecessary() {
+        if (!mDataProvider.shouldShowBottomBar()) return;
+
+        RemoteViews remoteViews = mDataProvider.getBottomBarRemoteViews();
+        if (remoteViews != null) {
+            RecordUserAction.record("CustomTabsRemoteViewsShown");
+            mClickableIDs = mDataProvider.getClickableViewIDs();
+            mClickPendingIntent = mDataProvider.getRemoteViewsPendingIntent();
+            showRemoteViews(remoteViews);
+        } else {
+            getBottomBarView().setBackgroundColor(mDataProvider.getBottomBarColor());
+            List<CustomButtonParams> items = mDataProvider.getCustomButtonsOnBottombar();
+            for (CustomButtonParams params : items) {
+                if (params.showOnToolbar()) continue;
+                final PendingIntent pendingIntent = params.getPendingIntent();
+                OnClickListener clickListener = null;
+                if (pendingIntent != null) {
+                    clickListener = new OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            sendPendingIntentWithUrl(pendingIntent, null, mActivity);
+                        }
+                    };
+                }
+                ImageButton button = params.buildBottomBarButton(mActivity, getBottomBarView(),
+                        clickListener);
+                getBottomBarView().addView(button);
+            }
+        }
+    }
+
+    /**
+     * Updates the custom buttons on bottom bar area.
+     * @param params The {@link CustomButtonParams} that describes the button to update.
+     */
+    public void updateBottomBarButtons(CustomButtonParams params) {
+        ImageButton button = (ImageButton) getBottomBarView().findViewById(params.getId());
+        button.setContentDescription(params.getDescription());
+        button.setImageDrawable(params.getIcon(mActivity.getResources()));
+    }
+
+    /**
+     * Updates the RemoteViews on the bottom bar.
+     * @param remoteViews The new remote view hierarchy sent from the client.
+     * @param clickableIDs Array of view ids, the onclick event of which is intercepcted by chrome.
+     * @param pendingIntent The {@link PendingIntent} that will be sent on clicking event.
+     * @return Whether the update is successful.
+     */
+    public boolean updateRemoteViews(RemoteViews remoteViews, int[] clickableIDs,
+            PendingIntent pendingIntent) {
+        // Update only makes sense if we are already showing a RemoteViews.
+        if (mDataProvider.getBottomBarRemoteViews() == null) return false;
+
+        // TODO: investigate updating the remoteview without taking down the whole view hierarchy.
+        if (remoteViews == null) {
+            if (mBottomBarView != null) {
+                mBottomBarView.removeAllViews();
+                mBottomBarView.setVisibility(View.GONE);
+            }
+            mClickableIDs = null;
+            mClickPendingIntent = null;
+        } else {
+            mClickableIDs = clickableIDs;
+            mClickPendingIntent = pendingIntent;
+            getBottomBarView().removeAllViews();
+            showRemoteViews(remoteViews);
+        }
+        return true;
+    }
+
+    /**
+     * Gets the {@link ViewGroup} of the bottom bar. If it has not been inflated, inflate it first.
+     */
+    private ViewGroup getBottomBarView() {
+        if (mBottomBarView == null) {
+            ViewStub bottomBarStub = ((ViewStub) mActivity.findViewById(R.id.bottombar_stub));
+            bottomBarStub.setLayoutResource(R.layout.custom_tabs_bottombar);
+            bottomBarStub.inflate();
+
+            View shadow = mActivity.findViewById(R.id.bottombar_shadow);
+            shadow.setVisibility(View.VISIBLE);
+
+            mBottomBarView = (ViewGroup) mActivity.findViewById(R.id.bottombar);
+        }
+        return mBottomBarView;
+    }
+
+    private void showRemoteViews(RemoteViews remoteViews) {
+        RecordUserAction.record("CustomTabsRemoteViewsUpdated");
+        View inflatedView = remoteViews.apply(mActivity, getBottomBarView());
+        if (mClickableIDs != null && mClickPendingIntent != null) {
+            for (int id: mClickableIDs) {
+                if (id < 0) return;
+                View view = inflatedView.findViewById(id);
+                if (view != null) view.setOnClickListener(mBottomBarClickListener);
+            }
+        }
+        getBottomBarView().addView(inflatedView);
+    }
+
+    private static void sendPendingIntentWithUrl(PendingIntent pendingIntent, Intent extraIntent,
+            ChromeActivity activity) {
+        Intent addedIntent = extraIntent == null ? new Intent() : new Intent(extraIntent);
+        Tab tab = activity.getActivityTab();
+        if (tab != null) addedIntent.setData(Uri.parse(tab.getUrl()));
+        try {
+            pendingIntent.send(activity, 0, addedIntent, null, null);
+        } catch (CanceledException e) {
+            Log.e(TAG, "CanceledException when sending pending intent.");
+        }
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabContentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabContentHandler.java
index 830e839..0ad1da1c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabContentHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabContentHandler.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.customtabs;
 
+import android.app.PendingIntent;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.IBinder;
@@ -48,5 +49,6 @@
      * Updates the {@link RemoteViews} shown on the secondary toolbar.
      * @return Whether this update is successful.
      */
-    boolean updateRemoteViews(RemoteViews rv);
+    boolean updateRemoteViews(RemoteViews remoteViews, int[] clickableIDs,
+            PendingIntent pendingIntent);
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
index 15787616..a581cf0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -20,6 +20,7 @@
 import android.support.customtabs.CustomTabsIntent;
 import android.text.TextUtils;
 import android.util.Pair;
+import android.view.View;
 import android.widget.RemoteViews;
 
 import org.chromium.base.ApiCompatibilityUtils;
@@ -83,6 +84,8 @@
     private CustomButtonParams mToolbarButton;
     private List<CustomButtonParams> mBottombarButtons = new ArrayList<>(2);
     private RemoteViews mRemoteViews;
+    private int[] mClickableViewIds;
+    private PendingIntent mRemoteViewsPendingIntent;
     // OnFinished listener for PendingIntents. Used for testing only.
     private PendingIntent.OnFinished mOnFinished;
 
@@ -141,7 +144,11 @@
         mShowShareItem = IntentUtils.safeGetBooleanExtra(intent,
                 CustomTabsIntent.EXTRA_DEFAULT_SHARE_MENU_ITEM, false);
         mRemoteViews = IntentUtils.safeGetParcelableExtra(intent,
-                CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_REMOTEVIEWS);
+                CustomTabsIntent.EXTRA_REMOTEVIEWS);
+        mClickableViewIds = IntentUtils.safeGetIntArrayExtra(intent,
+                CustomTabsIntent.EXTRA_REMOTEVIEWS_VIEW_IDS);
+        mRemoteViewsPendingIntent = IntentUtils.safeGetParcelableExtra(intent,
+                CustomTabsIntent.EXTRA_REMOTEVIEWS_PENDINGINTENT);
     }
 
     /**
@@ -290,6 +297,20 @@
     }
 
     /**
+     * @return A array of {@link View} ids, of which the onClick event is handled by the custom tab.
+     */
+    public int[] getClickableViewIDs() {
+        return mClickableViewIds.clone();
+    }
+
+    /**
+     * @return The {@link PendingIntent} that is sent when the user clicks on the remote view.
+     */
+    public PendingIntent getRemoteViewsPendingIntent() {
+        return mRemoteViewsPendingIntent;
+    }
+
+    /**
      * Gets params for all custom buttons, which is the combination of
      * {@link #getCustomButtonsOnBottombar()} and {@link #getCustomButtonOnToolbar()}.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
index 6ade922..08eed7c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -6,6 +6,7 @@
 
 import android.app.ActivityManager;
 import android.app.Application;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -398,8 +399,6 @@
 
     @Override
     public boolean updateVisuals(final ICustomTabsCallback callback, Bundle bundle) {
-        final RemoteViews remoteViews = IntentUtils.safeGetParcelable(bundle,
-                CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_REMOTEVIEWS);
         final Bundle actionButtonBundle = IntentUtils.safeGetBundle(bundle,
                 CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE);
         boolean result = true;
@@ -423,13 +422,19 @@
                 }
             }
         }
-        if (remoteViews != null) {
+        if (bundle.containsKey(CustomTabsIntent.EXTRA_REMOTEVIEWS)) {
+            final RemoteViews remoteViews = IntentUtils.safeGetParcelable(bundle,
+                    CustomTabsIntent.EXTRA_REMOTEVIEWS);
+            final int[] clickableIDs = IntentUtils.safeGetIntArray(bundle,
+                    CustomTabsIntent.EXTRA_REMOTEVIEWS_VIEW_IDS);
+            final PendingIntent pendingIntent = IntentUtils.safeGetParcelable(bundle,
+                    CustomTabsIntent.EXTRA_REMOTEVIEWS_PENDINGINTENT);
             try {
                 result &= ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() {
                     @Override
                     public Boolean call() throws Exception {
                         return CustomTabActivity.updateRemoteViews(callback.asBinder(),
-                                remoteViews);
+                                remoteViews, clickableIDs, pendingIntent);
                     }
                 });
             } catch (ExecutionException e) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
index fa664a7e..86bc1c2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
@@ -353,16 +353,18 @@
     }
 
     @VisibleForTesting
-    protected static boolean hasManagerForTesting(int notificationId) {
+    static boolean hasManagerForTesting(int notificationId) {
         return getManager(notificationId) != null;
     }
 
     @VisibleForTesting
     @Nullable
-    protected static MediaNotificationInfo getNotificationInfoForTesting(int notificationId) {
+    static NotificationCompat.Builder getNotificationBuilderForTesting(
+            int notificationId) {
         MediaNotificationManager manager = getManager(notificationId);
         if (manager == null) return null;
-        return manager.mMediaNotificationInfo;
+
+        return manager.mNotificationBuilder;
     }
 
     private final Context mContext;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
index 657410fe..56e26b285 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
@@ -163,6 +163,7 @@
             assert tab == mTab;
             if (mNotificationInfoBuilder == null || mFallbackMetadata == null) return;
 
+            mFallbackMetadata = new MediaMetadata(mFallbackMetadata);
             mFallbackMetadata.setTitle(sanitizeMediaTitle(mTab.getTitle()));
             mNotificationInfoBuilder.setMetadata(mFallbackMetadata);
 
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 bbf975e..ca885a2 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
@@ -46,14 +46,14 @@
      * @param activity The {@link Activity} to check.
      * @return Whether or not {@code activity} is currently in Android N+ multi-window mode.
      */
-    public boolean isMultiWindow(Activity activity) {
+    public boolean isInMultiWindowMode(Activity activity) {
         if (activity == null) return false;
 
         if (Build.VERSION.CODENAME.equals("N")) {
             try {
-                Method inMultiWindowMethod = Activity.class.getMethod("inMultiWindow");
-                boolean isInMultiWindow = (Boolean) inMultiWindowMethod.invoke(activity);
-                return isInMultiWindow;
+                Method isInMultiWindowModeMethod = Activity.class.getMethod("isInMultiWindowMode");
+                boolean isInMultiWindowMode = (boolean) isInMultiWindowModeMethod.invoke(activity);
+                return isInMultiWindowMode;
             } catch (NoSuchMethodException e) {
                 // Ignore.
             } catch (IllegalAccessException e) {
@@ -74,7 +74,7 @@
      */
     public boolean isOpenInOtherWindowSupported(Activity activity) {
         // Supported only in multi-window mode and if activity supports side-by-side instances.
-        return isMultiWindow(activity) && getOpenInOtherWindowActivity(activity) != null;
+        return isInMultiWindowMode(activity) && getOpenInOtherWindowActivity(activity) != null;
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaClient.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaClient.java
index 20f1de7..5b858aa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaClient.java
@@ -198,6 +198,10 @@
             return;
         }
 
+        if (getRequestGenerator() == null) {
+            return;
+        }
+
         if (!mStateHasBeenRestored) {
             restoreState();
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
index fd39796..0d23b8b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
@@ -11,10 +11,7 @@
 import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceFragment;
 
-import org.chromium.base.ApplicationStatus;
-import org.chromium.base.CommandLine;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.PasswordUIView;
 import org.chromium.chrome.browser.autofill.PersonalDataManager;
 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
@@ -24,7 +21,6 @@
 import org.chromium.chrome.browser.signin.SigninAccessPoint;
 import org.chromium.chrome.browser.signin.SigninManager;
 import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
-import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.sync.signin.ChromeSigninController;
 
 /**
@@ -106,21 +102,6 @@
         });
         mSignInPreference.setEnabled(true);
 
-        // TODO(dfalcantara): Delete this preference entirely.  https://crbug.com/582539
-        Preference documentMode = findPreference(PREF_DOCUMENT_MODE);
-        boolean showDocumentToggle = FeatureUtilities.isDocumentModeEligible(getActivity());
-        if (CommandLine.getInstance().hasSwitch(
-                ChromeSwitches.ENABLE_FORCED_MIGRATION_TO_TABBED_MODE)) {
-            showDocumentToggle &=
-                    FeatureUtilities.isDocumentMode(ApplicationStatus.getApplicationContext());
-        }
-        if (showDocumentToggle) {
-            setOnOffSummary(documentMode,
-                    !DocumentModeManager.getInstance(getActivity()).isOptedOutOfDocumentMode());
-        } else {
-            getPreferenceScreen().removePreference(documentMode);
-        }
-
         ChromeBasePreference autofillPref =
                 (ChromeBasePreference) findPreference(PREF_AUTOFILL_SETTINGS);
         setOnOffSummary(autofillPref, PersonalDataManager.isAutofillEnabled());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassin.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassin.java
index d1cabe2..fddb546 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassin.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/DocumentModeAssassin.java
@@ -13,7 +13,6 @@
 import android.util.Pair;
 
 import org.chromium.base.ApplicationStatus;
-import org.chromium.base.CommandLine;
 import org.chromium.base.FileUtils;
 import org.chromium.base.Log;
 import org.chromium.base.ObserverList;
@@ -21,7 +20,6 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.chrome.browser.ChromeApplication;
-import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.TabState;
 import org.chromium.chrome.browser.document.DocumentActivity;
 import org.chromium.chrome.browser.document.DocumentUtils;
@@ -519,10 +517,7 @@
 
     /** @return Whether or not a migration to tabbed mode from document mode is necessary. */
     public boolean isMigrationNecessary() {
-        return (CommandLine.getInstance().hasSwitch(
-                        ChromeSwitches.ENABLE_FORCED_MIGRATION_TO_TABBED_MODE)
-                || FeatureUtilities.isForcedToMigrateToTabbedMode())
-               && FeatureUtilities.isDocumentMode(ApplicationStatus.getApplicationContext());
+        return FeatureUtilities.isDocumentMode(ApplicationStatus.getApplicationContext());
     }
 
     /** @return Context to use when grabbing SharedPreferences, Files, and other resources. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
index cf5d9e89..50daa6f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
@@ -312,6 +312,10 @@
         mTabSaver.clearState();
     }
 
+    public void clearEncryptedState() {
+        mTabSaver.clearEncryptedState();
+    }
+
     @Override
     public void destroy() {
         mTabSaver.destroy();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
index 83f4267..b8ee823 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
@@ -329,17 +329,20 @@
             for (Tab tab : mTabsToSave) {
                 int id = tab.getId();
                 boolean incognito = tab.isIncognito();
+                FileOutputStream stream = null;
                 try {
                     TabState state = tab.getState();
                     if (state != null) {
-                        TabState.saveState(
-                                openTabStateOutputStream(id, incognito), state, incognito);
+                        stream = openTabStateOutputStream(id, incognito);
+                        TabState.saveState(stream, state, incognito);
                     }
                 } catch (IOException e) {
                     logSaveException(e);
                 } catch (OutOfMemoryError e) {
                     Log.w(TAG, "Out of memory error while attempting to save tab state.  Erasing.");
                     deleteTabState(id, incognito);
+                } finally {
+                    StreamUtil.closeQuietly(stream);
                 }
             }
             mTabsToSave.clear();
@@ -524,6 +527,14 @@
     }
 
     /**
+     * Clears all the encrypted data from the disk.
+     * Most likely called when we lost the encryption key.
+     */
+    public void clearEncryptedState() {
+        cleanupAllEncryptedPersistentData();
+    }
+
+    /**
      * Cancels loading of {@link Tab}s from disk from saved state. This is useful if the user
      * does an action which impacts all {@link Tab}s, not just the ones currently loaded into
      * the model. For example, if the user tries to close all {@link Tab}s, we need don't want
@@ -959,6 +970,26 @@
         }
     }
 
+    private void cleanupAllEncryptedPersistentData() {
+        String[] files = null;
+        // Temporarily allowing disk access. TODO: Fix. See http://crbug.com/473357
+        StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
+        try {
+            long time = SystemClock.elapsedRealtime();
+            files = getStateDirectory().list();
+            logExecutionTime("CleanupAllEncryptedTime", time);
+        } finally {
+            StrictMode.setThreadPolicy(oldPolicy);
+        }
+        if (files != null) {
+            for (String file : files) {
+                if (file.startsWith(TabState.SAVED_TAB_STATE_FILE_PREFIX_INCOGNITO)) {
+                    deleteFileAsync(file);
+                }
+            }
+        }
+    }
+
     private void deleteFileAsync(final String file) {
         new AsyncTask<Void, Void, Void>() {
             @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
index b017573b..0291259 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
@@ -5,14 +5,11 @@
 package org.chromium.chrome.browser.tabmodel.document;
 
 import android.app.Activity;
-import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.text.TextUtils;
 
 import org.chromium.base.ApplicationStatus;
-import org.chromium.base.CommandLine;
-import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.TabState;
 import org.chromium.chrome.browser.UrlConstants;
@@ -24,7 +21,6 @@
 import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
 import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator;
 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
-import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.components.service_tab_launcher.ServiceTabLauncher;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.WebContents;
@@ -167,29 +163,18 @@
         assert !(type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
                 && asyncParams.getWebContents() != null);
 
-        Context context = ApplicationStatus.getApplicationContext();
-
-        boolean mayLaunchDocumentActivity = isAllowedToLaunchDocumentActivity(context);
-        assert mayLaunchDocumentActivity || (asyncParams.getWebContents() == null);
-
-        if (FeatureUtilities.isDocumentMode(context) && mayLaunchDocumentActivity) {
-            AsyncDocumentLauncher.getInstance().enqueueLaunch(mIsIncognito, parentId, asyncParams);
-        } else {
-            Intent intent = createNewTabIntent(asyncParams, parentId);
-            IntentHandler.startActivityForTrustedIntent(intent, context);
-        }
+        Intent intent = createNewTabIntent(asyncParams, parentId);
+        IntentHandler.startActivityForTrustedIntent(
+                intent, ApplicationStatus.getApplicationContext());
     }
 
     private Intent createNewTabIntent(AsyncTabCreationParams asyncParams, int parentId) {
-        Context context = ApplicationStatus.getApplicationContext();
-
-        // TODO(dfalcantara): Is it possible to get rid of this conditional?
         int assignedTabId = TabIdManager.getInstance().generateValidId(Tab.INVALID_TAB_ID);
         AsyncTabParamsManager.add(assignedTabId, asyncParams);
 
         Intent intent = new Intent(
                 Intent.ACTION_VIEW, Uri.parse(asyncParams.getLoadUrlParams().getUrl()));
-        intent.setClass(context, ChromeLauncherActivity.class);
+        intent.setClass(ApplicationStatus.getApplicationContext(), ChromeLauncherActivity.class);
         intent.putExtra(IntentHandler.EXTRA_TAB_ID, assignedTabId);
         intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, mIsIncognito);
         intent.putExtra(IntentHandler.EXTRA_PARENT_TAB_ID, parentId);
@@ -207,12 +192,4 @@
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         return intent;
     }
-
-    /**
-     * @return Whether the TabDelegate is allowed to directly launch a DocumentActivity.
-     */
-    protected boolean isAllowedToLaunchDocumentActivity(Context context) {
-        return !CommandLine.getInstance().hasSwitch(
-                ChromeSwitches.ENABLE_FORCED_MIGRATION_TO_TABBED_MODE);
-    }
 }
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
index d9bebad..d0d01f7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
@@ -48,8 +48,6 @@
     private static String sCachedHerbFlavor;
     private static boolean sIsHerbFlavorCached;
 
-    private static Boolean sIsForcedToMigrate;
-
     /** Used to track if cached command line flags should be refreshed. */
     private static CommandLine.ResetListener sResetListener = null;
 
@@ -198,19 +196,6 @@
     }
 
     /**
-     * @return Whether or not users are being forced to migrate to tabbed mode.
-     */
-    public static boolean isForcedToMigrateToTabbedMode() {
-        if (sIsForcedToMigrate == null) {
-            Context context = ApplicationStatus.getApplicationContext();
-            sIsForcedToMigrate =
-                    ChromePreferenceManager.getInstance(context).getCachedIsForcedToMigrate();
-        }
-
-        return sIsForcedToMigrate;
-    }
-
-    /**
      * @return Which flavor of Herb is being tested.  See {@link ChromeSwitches#HERB_FLAVOR_ANISE}
      *         and its related switches.
      */
@@ -242,17 +227,6 @@
      */
     public static void cacheNativeFlags() {
         cacheHerbFlavor();
-
-        // Check whether the user is being forced to migrate.
-        CommandLine instance = CommandLine.getInstance();
-        boolean wasForcedToMigrate = isForcedToMigrateToTabbedMode();
-        boolean forceMigration = instance.hasSwitch(
-                ChromeSwitches.ENABLE_FORCED_MIGRATION_TO_TABBED_MODE);
-        if (wasForcedToMigrate != forceMigration) {
-            Context context = ApplicationStatus.getApplicationContext();
-            ChromePreferenceManager.getInstance(context).setCachedIsForcedToMigrate(forceMigration);
-            sIsForcedToMigrate = forceMigration;
-        }
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java
index dbe0f694..d3d1698 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/IntentUtils.java
@@ -67,6 +67,32 @@
     }
 
     /**
+     * Just like {@link Intent#getIntArrayExtra(String)} but doesn't throw exceptions.
+     */
+    public static int[] safeGetIntArrayExtra(Intent intent, String name) {
+        try {
+            return intent.getIntArrayExtra(name);
+        } catch (Throwable t) {
+            // Catches un-parceling exceptions.
+            Log.e(TAG, "getIntArrayExtra failed on intent " + intent);
+            return null;
+        }
+    }
+
+    /**
+     * Just like {@link Bundle#getIntArray(String)} but doesn't throw exceptions.
+     */
+    public static int[] safeGetIntArray(Bundle bundle, String name) {
+        try {
+            return bundle.getIntArray(name);
+        } catch (Throwable t) {
+            // Catches un-parceling exceptions.
+            Log.e(TAG, "getIntArray failed on bundle " + bundle);
+            return null;
+        }
+    }
+
+    /**
      * Just like {@link Intent#getLongExtra(String, long)} but doesn't throw exceptions.
      */
     public static long safeGetLongExtra(Intent intent, String name, long defaultValue) {
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index d0b8f17..62c5ea51 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2344,11 +2344,9 @@
         Chrome + Physical Web
       </message>
       <message name="IDS_PHYSICAL_WEB_OPTIN_DESCRIPTION" desc="Description of the Physical Web displayed in the opt-in dialog">
-        Chrome can now find and show you nearby web pages using Bluetooth.
+        Devices nearby you are broadcasting web pages over Bluetooth. Chrome will scan for pages and display them when you wake up your device. These pages will go through a Google service to improve the quality of page results.
 
-Chrome will scan for nearby pages when your device is unlocked. These pages will go through a Google service to improve the quality of page results.
-
-You can control the Physical Web in Chrome privacy settings.
+You can control the Physical Web in Chrome Settings.
       </message>
       <message name="IDS_PHYSICAL_WEB_LIST_URLS_ACTIVITY_TITLE" desc="The title for a dialog that shows a list of URLs broadcasted from nearby devices.">
         The Physical Web
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 bb9d929..8d65d98 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">ሰላም፣ <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">ፍለጋ </translation>
 <translation id="1389974829397082527">እዚህ ምንም ዕልባቶች የሉም</translation>
-<translation id="1390350022570422499">Chrome አሁን ብሉቱዝን በመጠቀም አቅራቢያ ድረ-ገጾችን አግኝቶ ሊያሳየዎት ይችላል።
-
-መሣሪያዎ ሲከፈት አቅራቢያ ያሉ ገጾችን ይቃኛል። እነዚህ ገጾች የገጽ ውጤቶች ጥራትን ለማሻሻል በGoogle አገልግሎት በኩል ይሄዳሉ።
-
-አካላዊ ድሩን በChrome ግላዊነት ቅንብሮች ውስጥ መቆጣጠር ይችላሉ።</translation>
 <translation id="1404122904123200417">በ<ph name="WEBSITE_URL" /> ውስጥ ተካትቷል</translation>
 <translation id="1406000523432664303">«አትከታተል»</translation>
 <translation id="1409879593029778104">ፋይሉ አስቀድሞ ስላለ <ph name="FILE_NAME" />ን ማውረድ ታግዷል።</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">የላቀ</translation>
 <translation id="1984937141057606926">የተፈቀደ፣ ከሶስተኛ ወገን በቀር</translation>
 <translation id="1994173015038366702">የጣቢያ ዩአርኤል</translation>
+<translation id="2001120796168634316">በኋላ ላይ ለመጠቀም የተገናኘ ገጽን አስቀምጥ</translation>
 <translation id="200669432486043882">ፋይል ተካ</translation>
 <translation id="2038563949887743358">የዴስክቶፕ ጣቢያን ጠይቅን አብራ</translation>
 <translation id="2073235970478114994">ምስሎችን ጫን</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">አጽዳ</translation>
 <translation id="2315043854645842844">የደንበኛ ወገን ዕውቅና ማረጋገጫ ምርጫ በስርዓተ-ክወናው አይደገፍም።</translation>
 <translation id="2316129865977710310">አይ፣ አመሰግናለሁ</translation>
-<translation id="2319528413610359757">ለ<ph name="PUBLISHER" /> አንባቢዎች</translation>
 <translation id="2321958826496381788">ይህን በሚመች ሁኔታ ማንበብ እስኪችሉ ድረስ ተንሸራታቹን ይጎትቱት። በአንድ አንቀጽ ላይ ሁለቴ መታ ካደረጉ በኋላ ጽሑፍ ቢያንስ የዚህ ያህል ትልቀት ሊኖረው ይገባል።</translation>
 <translation id="2329597144923131178">የእርስዎን ዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎች ቅንብሮች በሁሉም መሣሪያዎችዎ ላይ ለማግኘት ወደ መለያ ይግቡ።</translation>
 <translation id="2343328333327081434">በመጫን ላይ…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">አሁን</translation>
 <translation id="2770465223704140727">ከዝርዝር  አስወግድ</translation>
 <translation id="278029852808208386">ምንም የብሉቱዝ መሳሪያዎች አልተገኙም። <ph name="BEGIN_LINK" />እንደገና ይፈልጉ<ph name="END_LINK" />።</translation>
+<translation id="2811892995384186721">መሣሪያዎ አይታየዎትም? <ph name="BEGIN_LINK" />እገዛ ያግኙ<ph name="END_LINK" />።</translation>
 <translation id="2836148919159985482">ከሙሉ ማያ ገጽ ለመውጣት የተመለስ አዝራሩን ይንኩ።</translation>
 <translation id="2842985007712546952">ወላጅ አቃፊ</translation>
 <translation id="2870560284913253234">ጣቢያ</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">የአሰሳ ስህተት ጥቆማ አስተያየቶች</translation>
 <translation id="3732088672634061408">ፍላጎቶችን ሰርስሮ ማውጣት አልተቻለም።</translation>
 <translation id="3738139272394829648">ለመፈለግ ይንኩ</translation>
-<translation id="3774280986422214650">ይህን ባህሪ ካነቁት፣ ኤችቲቲፒኤስ ገጾችን በGoogle አገልጋዮች ላይ ተኪ በሚያደርገው ሙከራ አካል ይሆናሉ።</translation>
 <translation id="3809549525127675114">«<ph name="VIDEO_TITLE" />» ጨርሷል</translation>
 <translation id="3828029223314399057">ዕልባቶች ፈልግ</translation>
 <translation id="3871171699884605801">የአሰሳ ታሪክ በህጻናት መለያ ሊጸዳ አይችልም</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">አገናኝ አስቀምጥ</translation>
 <translation id="4002066346123236978">ርዕስ</translation>
 <translation id="4035611068038188272">ዕልባቶች አሁን <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> ቦታ ይዘዋል።</translation>
-<translation id="403659016947612156">የአካላዊ ድረ-ገጾች አቅራቢያ ናቸው</translation>
 <translation id="4042870126885713738">አንድ የድር አድራሻ መፍትሔ ካላመጣ ወይም ግንኙነት ሊፈጠር ካልቻለ ጥቆማዎችን አሳይ</translation>
 <translation id="4056223980640387499">ቀይ ቡናማ</translation>
 <translation id="4062305924942672200">የህግ መረጃ</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">የውሂብ ዓይነቶች</translation>
 <translation id="4827948050554950725">ክሬዲት ካርድ አክል</translation>
 <translation id="4836364883164334657">ከዚህ ጣቢያ ጋር ያለዎት ግንኙነት ግላዊ አይደለም። አጥቂዎች የእርስዎን መረጃ (ለምሳሌ፦ ፎቶዎች፣ የይለፍ ቃሎች፣ መልዕክቶች እና ክሬዲት ካርዶች) ከ<ph name="DOMAIN_NAME" /> እየሰረቁ ሊሆኑ ይችላሉ።</translation>
-<translation id="4842511359652954519">ተጨማሪ ያንብቡ</translation>
 <translation id="4850886885716139402">አሳይ</translation>
 <translation id="4875622588773761625">ለዚህ ድር ጣቢያ የይለፍ ቃልዎን <ph name="PASSWORD_MANAGER_BRAND" /> ማዘመን ይፈልጋሉ?</translation>
 <translation id="4881695831933465202">ክፈት</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">ወደ ፊት ሂድ</translation>
 <translation id="4996978546172906250">ያጋሩ በ</translation>
 <translation id="5000922062037820727">ታግዷል (የሚመከር)</translation>
-<translation id="5014582685689328551">እነሱን ለማሰስ Chromeን ይጠቀሙ</translation>
 <translation id="5016205925109358554">ሰሪፍ</translation>
 <translation id="5039804452771397117">ፍቀድ</translation>
 <translation id="5040262127954254034">ግላዊነት</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">የተቀመጡ ገጾችን ፈልግ</translation>
 <translation id="5313967007315987356">ጣቢያ አክል</translation>
 <translation id="5317780077021120954">አስቀምጥ</translation>
-<translation id="5323972449344932352">Chromeን አስጀምር</translation>
 <translation id="5324858694974489420">የወላጅ መቆጣጠሪያዎች</translation>
 <translation id="5327248766486351172">ስም</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> ተሰርዟል</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> የውሂብ ቁጠባዎች</translation>
 <translation id="6165508094623778733">ተጨማሪ ለመረዳት</translation>
 <translation id="6192792657125177640">የተለዩ</translation>
-<translation id="6208263165776660488">የChrome ትሮች ተወስደዋል</translation>
 <translation id="6231464350722415003">ለተቀረው ድር እንደታገዱ ሆነው በጠቀሱዋቸው ድርጣቢያዎች ላይ ጃቫስክሪፕትን ይፍቀዱ</translation>
 <translation id="6232535412751077445">«አትከታተል»ን ማንቃት ማለት አንድ ጥያቄ በአሰሳ ትራፊክዎ ላይ ይካተታል ማለት ነው። ማንኛውም ውጤት አንድ ድር ጣቢያ ለጥያቄው ምላሽ ከሰጠና ጥያቄውን በሚተረጎምበት መንገድ ላይ የሚወሰን ነው።
 
@@ -491,9 +481,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> አካባቢያዊ የፍለጋ ውጤቶችን ለማሳየት የእርስዎን አካባቢ ይጠቀማል</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />እገዛ<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">ዕልባት ሰርዝ</translation>
-<translation id="7324738665594301612">የኤችቲቲፒኤስ ገጾችን በGoogle አገልጋዮች ላይ ተኪ የማድረግ እንደ ሙከራ አንድ አካል እየፈተሽን ነው።</translation>
 <translation id="7346217184097589238">የተቀመጡ የጣቢያ ቅንብሮች አይሰረዙም፣ እና የእርስዎ የአሳሳ ልማዶችዎን ሊያንጸባርቁ ይችላሉ።</translation>
-<translation id="7346909386216857016">እሺ፣ ገባኝ</translation>
 <translation id="7347770551817603360">የመስመር ውጭ ይዘት</translation>
 <translation id="7363354739009474003">«<ph name="VIDEO_TITLE" />»ን በመጫን ላይ</translation>
 <translation id="7366340029385295517">ወደ <ph name="SCREEN_NAME" /> በመውሰድ ላይ</translation>
@@ -516,7 +504,6 @@
 <translation id="7588950540487816470">አካላዊ ድር</translation>
 <translation id="7596558890252710462">ስርዓተ ክወና</translation>
 <translation id="7599840151813361502">ከእርስዎ የ<ph name="BEGIN_LINK" />Google መለያዎች<ph name="END_LINK" /> እንዲወጡ አይደረጉም።</translation>
-<translation id="7603403729818446828">በስልክዎ የአጠቃላይ ዕይታ ማያ ገጽ ላይ የእርስዎን ትሮች ከሌሎች የቅርብ ጊዜ መተግበሪያዎች ጋር ይመልከቱ። ይህንን በ<ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" /> ውስጥ መቆጣጠር ይችላሉ።</translation>
 <translation id="7607002721634913082">ለአፍታ ቆሟል</translation>
 <translation id="7612619742409846846">እንደሚከተለው ሆነው ወደ Google ይግቡ፦</translation>
 <translation id="7619072057915878432">በአውታረ መረብ ችግሮች ምክንያት <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation>
@@ -563,6 +550,7 @@
 <translation id="8173098127580644436">የጊዜ መጀመሪያ</translation>
 <translation id="8200772114523450471">ከቆመበት ቀጥል</translation>
 <translation id="8209050860603202033">ምስል ክፈት</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> ከዚህ ጋር መገናኘት ይፈልጋል፦</translation>
 <translation id="8218346974737627104">በመለያ መግባትን ያረጋግጡ</translation>
 <translation id="8218934717680664417">አሁን በአንድ ንክኪ መፈለግ ይችላሉ</translation>
 <translation id="8223946939421658889">ውሂብን አጽዳ ከ</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 289e9cf8..70364d5c 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">مرحبًا، <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">البحث</translation>
 <translation id="1389974829397082527">ليست هناك إشارات مرجعية هنا</translation>
-<translation id="1390350022570422499">‏يمكن لمتصفح Chrome الآن العثور على صفحات الويب المجاورة وعرضها باستخدام البلوتوث.
-
-سيبحث Chrome عن صفحات الأجهزة المجاورة عند إلغاء قفل جهازك. وستمر هذه الصفحات عبر خدمة Google لتحسين جودة نتائج الصفحات.
-
-يمكنك التحكم في الشبكة المادية في إعدادات الخصوصية في Chrome.</translation>
 <translation id="1404122904123200417">تم التضمين في <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"عدم التعقب"</translation>
 <translation id="1409879593029778104">مُنع تنزيل الملف <ph name="FILE_NAME" /> لأنه موجود بالفعل.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">إعدادات متقدمة</translation>
 <translation id="1984937141057606926">مسموح باستثناء الجهات الخارجية</translation>
 <translation id="1994173015038366702">‏عنوان URL للموقع</translation>
+<translation id="2001120796168634316">حفظ الصفحة المرتبطة لوقت لاحق</translation>
 <translation id="200669432486043882">استبدال ملف</translation>
 <translation id="2038563949887743358">تشغيل طلب موقع الويب لسطح المكتب</translation>
 <translation id="2073235970478114994">تحميل الصور</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">تحسين</translation>
 <translation id="2315043854645842844">لا يدعم نظام التشغيل تحديد الشهادة من جانب العميل.</translation>
 <translation id="2316129865977710310">لا، شكرًا</translation>
-<translation id="2319528413610359757">لقراء <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">يمكنك سحب شريط التمرير حتى تتمكن من قراءة هذا النص بسهولة. يجب أن يظهر النص بهذا الحجم على الأقل بعد النقر مرتين على إحدى الفقرات.</translation>
 <translation id="2329597144923131178">سجّل الدخول للحصول على الإشارات المرجعية، والسجل، وكلمات المرور، والإعدادات الأخرى على كل أجهزتك.</translation>
 <translation id="2343328333327081434">جارٍ التثبيت...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">الآن</translation>
 <translation id="2770465223704140727">إزالة من القائمة</translation>
 <translation id="278029852808208386">لم يتم العثور على أجهزة بلوتوث. <ph name="BEGIN_LINK" />ابحث مرة أخرى<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">ألا ترى جهازك؟ <ph name="BEGIN_LINK" />احصل على المساعدة<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">المس زر الرجوع للخروج من وضع ملء الشاشة.</translation>
 <translation id="2842985007712546952">المجلد الرئيسي</translation>
 <translation id="2870560284913253234">الموقع</translation>
@@ -197,7 +193,6 @@
 <translation id="3672452749423051839">اقتراحات أخطاء التنقل</translation>
 <translation id="3732088672634061408">تعذَّر استرداد الاهتمامات.</translation>
 <translation id="3738139272394829648">المس للبحث</translation>
-<translation id="3774280986422214650">‏إذا تم تمكين هذه الميزة، فستصبح جزءًا من تجربة تنشِئ خادمًا وكيلاً لصفحات HTTPS عبر خوادم Google.</translation>
 <translation id="3809549525127675114">تم الانتهاء من تشغيل "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="3828029223314399057">بحث في الإشارات المرجعية</translation>
 <translation id="3871171699884605801">يتعذر مسح سجل التصفح بحسابات الأطفال</translation>
@@ -212,7 +207,6 @@
 <translation id="3992315671621218278">حفظ الرابط</translation>
 <translation id="4002066346123236978">العنوان</translation>
 <translation id="4035611068038188272">تشغل الإشارات المرجعية حاليًا <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">صفحات الشبكة المادية مجاورة</translation>
 <translation id="4042870126885713738">عرض اقتراحات عند تعذر فتح عنوان ويب أو تعذر إجراء اتصال</translation>
 <translation id="4056223980640387499">بني داكن</translation>
 <translation id="4062305924942672200">المعلومات القانونية</translation>
@@ -273,7 +267,6 @@
 <translation id="4816465935029283692">أنواع البيانات</translation>
 <translation id="4827948050554950725">إضافة بطاقة ائتمان</translation>
 <translation id="4836364883164334657">اتصالك بهذا الموقع ليس له خصوصية. قد يحاول المهاجمون سرقة معلوماتك (على سبيل المثال، الصور، وكلمات المرور، والرسائل وبطاقات الائتمان) من <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">مزيد من المعلومات</translation>
 <translation id="4850886885716139402">عرض</translation>
 <translation id="4875622588773761625">هل تريد تحديث كلمة مرورك لهذا الموقع من خلال <ph name="PASSWORD_MANAGER_BRAND" />؟</translation>
 <translation id="4881695831933465202">فتح</translation>
@@ -286,7 +279,6 @@
 <translation id="497421865427891073">انتقال للأمام</translation>
 <translation id="4996978546172906250">مشاركة عن طريق</translation>
 <translation id="5000922062037820727">محظور (موصى به)</translation>
-<translation id="5014582685689328551">‏استخدام Chrome لتصفحها</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">سماح</translation>
 <translation id="5040262127954254034">الخصوصية</translation>
@@ -321,7 +313,6 @@
 <translation id="5308933389783727448">البحث في الصفحات المحفوظة</translation>
 <translation id="5313967007315987356">إضافة موقع ويب</translation>
 <translation id="5317780077021120954">حفظ</translation>
-<translation id="5323972449344932352">‏تشغيل Chrome</translation>
 <translation id="5324858694974489420">الإعدادات الأبوية</translation>
 <translation id="5327248766486351172">الاسم</translation>
 <translation id="5345040418939504969">تم حذف <ph name="BOOKMARK_TITLE" /></translation>
@@ -400,7 +391,6 @@
 <translation id="6159335304067198720">توفير البيانات بنسبة <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">مزيد من المعلومات</translation>
 <translation id="6192792657125177640">الاستثناءات</translation>
-<translation id="6208263165776660488">‏تم نقل علامات تبويب Chrome</translation>
 <translation id="6231464350722415003">السماح لجافا سكريبت بالعمل على المواقع التي تحددها بينما يتم حظرها على بقية مواقع الويب</translation>
 <translation id="6232535412751077445">يعني تمكين ميزة "عدم التعقب" تضمين الطلب مع عدد زيارات التصفح. ويعتمد أي تأثير على استجابة موقع الويب للطلب من عدمه، بالإضافة إلى كيفية تفسير الطلب.
 
@@ -489,9 +479,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> يستخدم موقعك لعرض نتائج البحث المحلي</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />مساعدة<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">حذف الإشارة المرجعية</translation>
-<translation id="7324738665594301612">‏نختبر إنشاء خادم وكيل لصفحات HTTPS عبر خوادم Google كجزء من التجربة.</translation>
 <translation id="7346217184097589238">لن يتم حذف إعدادات موقع الويب المحفوظة وقد تعكس عاداتك في التصفح.</translation>
-<translation id="7346909386216857016">موافق، حسنًا</translation>
 <translation id="7347770551817603360">محتوى بلا اتصال</translation>
 <translation id="7363354739009474003">يتم الآن تحميل "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">جارٍ الإرسال إلى <ph name="SCREEN_NAME" /></translation>
@@ -514,7 +502,6 @@
 <translation id="7588950540487816470">الشبكة المادية</translation>
 <translation id="7596558890252710462">نظام التشغيل</translation>
 <translation id="7599840151813361502">‏لن يتم تسجيل خروجك من <ph name="BEGIN_LINK" />حسابات Google<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">يمكن عرض علامات التبويب باستخدام التطبيقات الأخيرة الأخرى على شاشة النظرة العامة على الهاتف. يمكن التحكم في ذلك من خلال <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">تعليق التحميل</translation>
 <translation id="7612619742409846846">‏تسجيل الدخول إلى Google باسم</translation>
 <translation id="7619072057915878432">أخفق تنزيل الملف <ph name="FILE_NAME" /> بسبب إخفاقات الشبكة.</translation>
@@ -563,6 +550,7 @@
 <translation id="8173098127580644436">بدايةَ الوقت</translation>
 <translation id="8200772114523450471">استئناف</translation>
 <translation id="8209050860603202033">فتح الصورة</translation>
+<translation id="8215250379351058554">يريد <ph name="SITE" /> الاتصال بـ:</translation>
 <translation id="8218346974737627104">تأكيد تسجيل الدخول</translation>
 <translation id="8218934717680664417">يمكنك الآن البحث بلمسة واحدة</translation>
 <translation id="8223946939421658889">محو البيانات من</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 6b63ffb2c..cd2d864 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Здравейте, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Търсене</translation>
 <translation id="1389974829397082527">Тук няма отметки</translation>
-<translation id="1390350022570422499">Chrome вече може да открива и да ви показва уеб страници в близост през Bluetooth.
-
-Chrome ще сканира за намиращи се наблизо страници, когато устройството ви е отключено. Те ще преминават през услуга на Google с цел подобряване на качеството на съответните резултати.
-
-Можете да управлявате Физическата мрежа от настройките за поверителност на Chrome.</translation>
 <translation id="1404122904123200417">Вградено в/ъв <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Заявка „Do Not Track“</translation>
 <translation id="1409879593029778104">Изтеглянето на „<ph name="FILE_NAME" />“ е предотвратено, защото файлът вече съществува.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Разширени</translation>
 <translation id="1984937141057606926">Разрешено, но не и за трети страни</translation>
 <translation id="1994173015038366702">URL адрес на сайт</translation>
+<translation id="2001120796168634316">Свързана страница: Запазване</translation>
 <translation id="200669432486043882">Замяна на файла</translation>
 <translation id="2038563949887743358">Включване на функцията за заявяване на настолни сайтове</translation>
 <translation id="2073235970478114994">Зареждане на изображенията</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Прецизиране</translation>
 <translation id="2315043854645842844">Избраният сертификат от страната на клиента не се поддържа от операционната система.</translation>
 <translation id="2316129865977710310">Не, благодаря</translation>
-<translation id="2319528413610359757">За читателите на „<ph name="PUBLISHER" />“</translation>
 <translation id="2321958826496381788">Преместете плъзгача, докато можете да четете удобно това. Текстът трябва да изглежда поне толкова голям след двукратно докосване на абзац.</translation>
 <translation id="2329597144923131178">Влезте в профила си и получете своите отметки, история, пароли и др. настройки на всички у-ва.</translation>
 <translation id="2343328333327081434">Инсталира се…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">току-що</translation>
 <translation id="2770465223704140727">Премахване от списъка</translation>
 <translation id="278029852808208386">Няма намерени устройства с Bluetooth. <ph name="BEGIN_LINK" />Потърсете отново<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Не виждате устройството си? <ph name="BEGIN_LINK" />Получете помощ<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Докоснете бутона за връщане назад, за да излезете от режима на цял екран.</translation>
 <translation id="2842985007712546952">Основна папка</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Предложения в случай на грешки при сърфиране</translation>
 <translation id="3732088672634061408">Интересите не можаха да се извлекат.</translation>
 <translation id="3738139272394829648">Търсене чрез докосване</translation>
-<translation id="3774280986422214650">Ако активирате тази функция, ще участвате в експеримент за предаване на HTTPS страниците през прокси сървърите на Google.</translation>
 <translation id="3809549525127675114">„<ph name="VIDEO_TITLE" />“ завърши</translation>
 <translation id="3828029223314399057">Търсене в отметките</translation>
 <translation id="3871171699884605801">Историята на сърфирането в профили за деца не може да се изчиства</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Запазване на връзката</translation>
 <translation id="4002066346123236978">Заглавие</translation>
 <translation id="4035611068038188272">Понастоящем отметките заемат <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">В близост има страници във Физическата мрежа</translation>
 <translation id="4042870126885713738">Показване на предложения, когато даден уеб адрес не може да бъде преобразуван или не може да бъде осъществена връзка</translation>
 <translation id="4056223980640387499">Сепия</translation>
 <translation id="4062305924942672200">Правна информация</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Типове данни</translation>
 <translation id="4827948050554950725">Добавяне на кредитна карта</translation>
 <translation id="4836364883164334657">Връзката ви с този сайт не е частна. Извършители на атаки може да опитат да откраднат информацията ви (например снимки, пароли, съобщения и номера на кредитни карти) от <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Прочетете повече</translation>
 <translation id="4850886885716139402">Изглед</translation>
 <translation id="4875622588773761625">Искате ли <ph name="PASSWORD_MANAGER_BRAND" /> да актуализира паролата ви за този сайт?</translation>
 <translation id="4881695831933465202">Отваряне</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Преминаване напред</translation>
 <translation id="4996978546172906250">Споделяне чрез</translation>
 <translation id="5000922062037820727">Блокирано (препоръчително)</translation>
-<translation id="5014582685689328551">Използвайте Chrome, за да ги разгледате</translation>
 <translation id="5016205925109358554">Серифен</translation>
 <translation id="5039804452771397117">Разрешаване</translation>
 <translation id="5040262127954254034">Поверителност</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Търсене в запазените страници</translation>
 <translation id="5313967007315987356">Добавяне на сайт</translation>
 <translation id="5317780077021120954">Запазване</translation>
-<translation id="5323972449344932352">Стартиране на Chrome</translation>
 <translation id="5324858694974489420">Родителски настройки</translation>
 <translation id="5327248766486351172">Име</translation>
 <translation id="5345040418939504969">Изтрихте „<ph name="BOOKMARK_TITLE" />“</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> икономия на данни</translation>
 <translation id="6165508094623778733">Научете повече</translation>
 <translation id="6192792657125177640">Изключения</translation>
-<translation id="6208263165776660488">Разделите в Chrome са преместени</translation>
 <translation id="6231464350722415003">Разрешаване на JavaScript за посочени от вас уебсайтове и блокиране за останалата част от мрежата</translation>
 <translation id="6232535412751077445">Активирането на „Do Not Track“ означава, че с трафика ви на сърфиране ще се подава заявка. Ефектите зависят от това, дали уебсайтът ще отговори на нея и как ще я изтълкува.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> използва местоположението ви, за да показва резултати от местното търсене</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Помощ<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Изтриване на отметката</translation>
-<translation id="7324738665594301612">Експериментално тестваме предаването на HTTPS страници през прокси сървърите на Google.</translation>
 <translation id="7346217184097589238">Запазените настройки за сайтове няма да се изтрият и може да отразяват навиците ви при сърфиране.</translation>
-<translation id="7346909386216857016">Добре, разбрах</translation>
 <translation id="7347770551817603360">Офлайн съдържание</translation>
 <translation id="7363354739009474003">„<ph name="VIDEO_TITLE" />“ се зарежда</translation>
 <translation id="7366340029385295517">Предава се към „<ph name="SCREEN_NAME" />“</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Физическа мрежа</translation>
 <translation id="7596558890252710462">Операционна система</translation>
 <translation id="7599840151813361502">Няма да излезете от <ph name="BEGIN_LINK" />профилите си в Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Разделите ви и останалите скорошни приложения ще се показват на екрана за общ преглед на телефона ви. Можете да контролирате тази функция от <ph name="BEGIN_LINK" />Настройки<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">На пауза</translation>
 <translation id="7612619742409846846">Влезли сте в Google като</translation>
 <translation id="7619072057915878432">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради грешки в мрежата.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">самото начало</translation>
 <translation id="8200772114523450471">Възобновяване</translation>
 <translation id="8209050860603202033">Отваряне на изображението</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> иска да установи връзка със:</translation>
 <translation id="8218346974737627104">Потвърждаване на влизането в профила</translation>
 <translation id="8218934717680664417">Вече можете да търсите с едно докосване</translation>
 <translation id="8223946939421658889">Изчистване на данните от</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 777fba8..a3541679 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hola, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Cerca</translation>
 <translation id="1389974829397082527">No hi ha cap adreça d'interès aquí</translation>
-<translation id="1390350022570422499">Chrome ara pot cercar i mostrar-vos pàgines web que teniu a prop mitjançant el Bluetooth.
-
-Quan tingueu el dispositiu desbloquejat, Chrome cercarà pàgines que tingueu a prop. Aquestes pàgines es processaran mitjançant un servei de Google per millorar la qualitat dels resultats.
-
-Podeu controlar el Web físic a la configuració de privadesa de Chrome.</translation>
 <translation id="1404122904123200417">Inserit a <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">No segueixis</translation>
 <translation id="1409879593029778104">No s'ha baixat el fitxer <ph name="FILE_NAME" /> perquè ja existeix.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Configuració avançada</translation>
 <translation id="1984937141057606926">Permeses, excepte les de tercers</translation>
 <translation id="1994173015038366702">URL del lloc</translation>
+<translation id="2001120796168634316">Desa pàg. enllaç. per a més tard</translation>
 <translation id="200669432486043882">Substitueix el fitxer</translation>
 <translation id="2038563949887743358">Activa la sol·licitud del lloc per a ordinadors</translation>
 <translation id="2073235970478114994">Carrega les imatges</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Restringeix</translation>
 <translation id="2315043854645842844">El sistema operatiu no permet seleccionar el certificat del client.</translation>
 <translation id="2316129865977710310">No, gràcies</translation>
-<translation id="2319528413610359757">Per a lectors de: <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Arrossegueu el control lliscant fins que ho pugueu llegir còmodament. El text ha de ser almenys així de gran després de tocar dos cops un paràgraf.</translation>
 <translation id="2329597144923131178">Inicieu la sessió per tenir adreces d'interès, historial, contrasenyes i altres opcions de configuració en tots els dispositius.</translation>
 <translation id="2343328333327081434">Instal·lant…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">ara mateix</translation>
 <translation id="2770465223704140727">Suprimeix de la llista</translation>
 <translation id="278029852808208386">No s'ha trobat cap dispositiu Bluetooth. <ph name="BEGIN_LINK" />Torneu a fer la cerca<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">No veieu el vostre dispositiu? <ph name="BEGIN_LINK" />Obteniu ajuda<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Toqueu el botó Enrere per sortir de la pantalla completa.</translation>
 <translation id="2842985007712546952">Carpeta principal</translation>
 <translation id="2870560284913253234">Lloc</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Suggeriments d'errors de navegació</translation>
 <translation id="3732088672634061408">No s'han pogut recuperar els interessos.</translation>
 <translation id="3738139272394829648">Toca per cercar</translation>
-<translation id="3774280986422214650">Si activeu aquesta funció, participareu en un experiment que utilitza servidors de Google com a servidors intermediaris per a pàgines HTTPS.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" ha finalitzat</translation>
 <translation id="3828029223314399057">Cerca adreces d'interès</translation>
 <translation id="3871171699884605801">L'historial de navegació no es pot esborrar amb un compte infantil</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Desa l'enllaç</translation>
 <translation id="4002066346123236978">Títol</translation>
 <translation id="4035611068038188272">En aquests moments, les adreces d'interès ocupen <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Hi ha pàgines del Web físic a prop</translation>
 <translation id="4042870126885713738">Mostra suggeriments quan no es resol una adreça web o quan no es pot establir una connexió</translation>
 <translation id="4056223980640387499">Sèpia</translation>
 <translation id="4062305924942672200">Informació legal</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipus de dades</translation>
 <translation id="4827948050554950725">Afegeix una targeta de crèdit</translation>
 <translation id="4836364883164334657">La vostra connexió a aquest lloc no és privada. És possible que alguns atacants provin de robar-vos informació (per exemple, fotos, contrasenyes, missatges i dades de targetes de crèdit) del domini <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Més informació</translation>
 <translation id="4850886885716139402">Visualització</translation>
 <translation id="4875622588773761625">Voleu que <ph name="PASSWORD_MANAGER_BRAND" /> actualitzi la vostra contrasenya per a aquest lloc?</translation>
 <translation id="4881695831933465202">Obre</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Vés endavant</translation>
 <translation id="4996978546172906250">Compartir mitjançant</translation>
 <translation id="5000922062037820727">Bloquejat (recomanat)</translation>
-<translation id="5014582685689328551">Utilitzeu Chrome per navegar-hi</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permet</translation>
 <translation id="5040262127954254034">Privadesa</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Cerca a les pàgines desades</translation>
 <translation id="5313967007315987356">Afegeix un lloc</translation>
 <translation id="5317780077021120954">Desa</translation>
-<translation id="5323972449344932352">Inicia Chrome</translation>
 <translation id="5324858694974489420">Configuració parental</translation>
 <translation id="5327248766486351172">Nom</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> s'ha suprimit</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> de reducció de dades</translation>
 <translation id="6165508094623778733">Més informació</translation>
 <translation id="6192792657125177640">Excepcions</translation>
-<translation id="6208263165776660488">Les pestanyes de Chrome s'han mogut</translation>
 <translation id="6231464350722415003">Permet JavaScript als llocs webs que especifiqueu alhora que es bloqueja per a la resta d'Internet</translation>
 <translation id="6232535412751077445">Si activeu l'opció No segueixis, s'inclourà una sol·licitud al trànsit de navegació. Que s'apliqui o no dependrà de si algun lloc web respon a la sol·licitud i de com s'interpreta.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utilitza la vostra ubicació per mostrar resultats de cerca locals</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Suprimeix l'adreça d'interès</translation>
-<translation id="7324738665594301612">Estem fent proves d'ús de servidors de Google com a servidors intermediaris per a pàgines HTTPS com a part d'un experiment.</translation>
 <translation id="7346217184097589238">La configuració desada del lloc no s'esborrarà i pot reflectir els vostres hàbits de navegació.</translation>
-<translation id="7346909386216857016">D'acord</translation>
 <translation id="7347770551817603360">Contingut sense connexió</translation>
 <translation id="7363354739009474003">S'està carregant "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">S'està emetent a <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">El Web físic</translation>
 <translation id="7596558890252710462">Sistema operatiu</translation>
 <translation id="7599840151813361502">No es tancarà la sessió dels <ph name="BEGIN_LINK" />comptes de Google<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">A la pantalla Visió general del telèfon podeu veure les pestanyes juntament amb altres aplicacions recents. Podeu controlar aquesta funció a la <ph name="BEGIN_LINK" />Configuració<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">En pausa</translation>
 <translation id="7612619742409846846">Heu iniciat la sessió a Google com a</translation>
 <translation id="7619072057915878432">No s'ha pogut baixar <ph name="FILE_NAME" /> a causa d'errors a la xarxa.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">des de l'inici (totes)</translation>
 <translation id="8200772114523450471">Reempren</translation>
 <translation id="8209050860603202033">Obre la imatge</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> vol connectar amb:</translation>
 <translation id="8218346974737627104">Confirmació de l'inici de sessió</translation>
 <translation id="8218934717680664417">Ara podeu fer cerques amb un sol toc</translation>
 <translation id="8223946939421658889">Esborra les dades</translation>
@@ -622,7 +610,7 @@
 <translation id="8987061207681586800">Personalitzar Chrome</translation>
 <translation id="9019902583201351841">Gestionat pels pares</translation>
 <translation id="9020607083536754075">Tanca la pestanya actual i torna a l'aplicació anterior</translation>
-<translation id="9038649477754266430">Utilitzeu un servei de predicció per poder carregar les pàgines més ràpidament</translation>
+<translation id="9038649477754266430">Utilitza un servei de predicció per poder carregar les pàgines més ràpidament</translation>
 <translation id="9050666287014529139">Frase de contrasenya</translation>
 <translation id="9060538597317784206">Mostra l'aplicació <ph name="APP_NAME" /> a Play Store.  Puntuació: <ph name="APP_RATING" />.</translation>
 <translation id="9063523880881406963">Desactiva la sol·licitud del lloc per a ordinadors</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 c459c9c..60c1fc6f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Dobrý den, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Vyhledávání</translation>
 <translation id="1389974829397082527">Nejsou zde žádné záložky</translation>
-<translation id="1390350022570422499">Chrome nyní dokáže vyhledat a zobrazit webové stránky používající Bluetooth ve vašem okolí.
-
-Když bude zařízení odemknuto, bude Chrome vyhledávat stránky v okolí. Tyto stránky budou za účelem zlepšení kvality zpracovávány službou Google.
-
-Fyzický web můžete v Chromu ovládat v nastavení ochrany soukromí.</translation>
 <translation id="1404122904123200417">Vloženo do <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track (Nesledovat)</translation>
 <translation id="1409879593029778104">Stažení souboru <ph name="FILE_NAME" /> bylo zabráněno, protože soubor již existuje.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Rozšířená nastavení</translation>
 <translation id="1984937141057606926">Povoleno, s výjimkou souborů cookie třetí strany</translation>
 <translation id="1994173015038366702">Adresa URL webu</translation>
+<translation id="2001120796168634316">Uložit cílovou stránku offline</translation>
 <translation id="200669432486043882">Nahradit soubor</translation>
 <translation id="2038563949887743358">Zapnout funkci Verze webu pro PC</translation>
 <translation id="2073235970478114994">Načíst obrázky</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Upřesnit</translation>
 <translation id="2315043854645842844">Volbu certifikátu na straně klienta operační systém nepodporuje.</translation>
 <translation id="2316129865977710310">Ne, děkuji</translation>
-<translation id="2319528413610359757">Pro čtenáře publikací <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Přetahujte posuvník tak dlouho, dokud nebudete moci pohodlně přečíst tento text. Po dvojitém klepnutí na odstavec by měl být text alespoň takto velký.</translation>
 <translation id="2329597144923131178">Přihlaste se a synchronizujte záložky, historii, hesla a další nastavení do všech svých zařízení.</translation>
 <translation id="2343328333327081434">Instalace…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">právě teď</translation>
 <translation id="2770465223704140727">Odstranit ze seznamu</translation>
 <translation id="278029852808208386">Nebyla nalezena žádná zařízení Bluetooth. <ph name="BEGIN_LINK" />Hledat znovu<ph name="END_LINK" /></translation>
+<translation id="2811892995384186721">Nevidíte své zařízení? <ph name="BEGIN_LINK" />Prohlédněte si nápovědu<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">Režim celé obrazovky ukončíte klepnutím na tlačítko Zpět.</translation>
 <translation id="2842985007712546952">Nadřazená složka</translation>
 <translation id="2870560284913253234">Stránky</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Návrhy při chybách navigace</translation>
 <translation id="3732088672634061408">Zájmy nelze načíst.</translation>
 <translation id="3738139272394829648">Vyhledání klepnutím</translation>
-<translation id="3774280986422214650">Pokud aktivujete tuto funkci, stanete se součástí experimentu, který stránky HTTPS načítá prostřednictvím proxy serverů společnosti Google.</translation>
 <translation id="3809549525127675114">Dokončeno přehrávání videa <ph name="VIDEO_TITLE" /></translation>
 <translation id="3828029223314399057">Hledat v záložkách</translation>
 <translation id="3871171699884605801">Pomocí účtů pro děti historii procházení vymazat nelze.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Uložit odkaz</translation>
 <translation id="4002066346123236978">Název</translation>
 <translation id="4035611068038188272">Záložky aktuálně zabírají <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Ve vašem okolí jsou stránky fyzického webu</translation>
 <translation id="4042870126885713738">Zobrazovat návrhy, pokud nelze vyhledat webovou adresu nebo navázat připojení.</translation>
 <translation id="4056223980640387499">Sépie</translation>
 <translation id="4062305924942672200">Právní informace</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Typy dat</translation>
 <translation id="4827948050554950725">Přidat platební kartu</translation>
 <translation id="4836364883164334657">Připojení k tomuto webu není soukromé. Útočníci se mohou pokusit ukrást vaše údaje na webu <ph name="DOMAIN_NAME" /> (například fotky, hesla, zprávy nebo informace o platebních kartách).</translation>
-<translation id="4842511359652954519">Další informace</translation>
 <translation id="4850886885716139402">Zobrazit</translation>
 <translation id="4875622588773761625">Chcete, aby aplikace <ph name="PASSWORD_MANAGER_BRAND" /> aktualizovala vaše heslo pro tento web?</translation>
 <translation id="4881695831933465202">Otevřít</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Vpřed</translation>
 <translation id="4996978546172906250">Sdílet prostřednictvím</translation>
 <translation id="5000922062037820727">Blokováno (doporučeno)</translation>
-<translation id="5014582685689328551">Prohlédněte si je v Chromu</translation>
 <translation id="5016205925109358554">Patková</translation>
 <translation id="5039804452771397117">Povolit</translation>
 <translation id="5040262127954254034">Ochrana soukromí</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Hledat v uložených stránkách</translation>
 <translation id="5313967007315987356">Přidat web</translation>
 <translation id="5317780077021120954">Uložit</translation>
-<translation id="5323972449344932352">Spustit Chrome</translation>
 <translation id="5324858694974489420">Rodičovská nastavení</translation>
 <translation id="5327248766486351172">Název</translation>
 <translation id="5345040418939504969">Záložka <ph name="BOOKMARK_TITLE" /> byla smazána</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Úspora dat: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Další informace</translation>
 <translation id="6192792657125177640">Výjimky</translation>
-<translation id="6208263165776660488">Karty Chrome byly přesunuty</translation>
 <translation id="6231464350722415003">Povolit JavaScript na webech, které uvedete, ale na zbytku webu jej blokovat.</translation>
 <translation id="6232535412751077445">Pokud povolíte požadavek Do Not Track, bude připojován k datům provozu prohlížení. Účinek tohoto požadavku závisí na tom, zda na něj budou webové stránky reagovat a jak jej budou interpretovat.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589">Stránky <ph name="SEARCH_ENGINE_URL" /> zobrazují lokální výsledky vyhledávání na základě vaší polohy</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Nápověda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Smazat záložku</translation>
-<translation id="7324738665594301612">Jako součást experimentu testujeme načítání stránek HTTPS prostřednictvím proxy serverů společnosti Google.</translation>
 <translation id="7346217184097589238">Uložená nastavení webů nebudou smazána a mohou vypovídat o vašich zvycích při prohlížení.</translation>
-<translation id="7346909386216857016">OK, rozumím</translation>
 <translation id="7347770551817603360">Offline obsah</translation>
 <translation id="7363354739009474003">Načítání videa <ph name="VIDEO_TITLE" /></translation>
 <translation id="7366340029385295517">Odesílání do zařízení <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fyzický web</translation>
 <translation id="7596558890252710462">Operační systém</translation>
 <translation id="7599840151813361502">Od svých <ph name="BEGIN_LINK" />účtů Google<ph name="END_LINK" /> nebudete odhlášeni</translation>
-<translation id="7603403729818446828">Zobrazovat v telefonu karty s dalšími nedávno použitými aplikacemi na obrazovce Přehled. Tuto funkci můžete vypnout v <ph name="BEGIN_LINK" />Nastavení<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Přerušeno</translation>
 <translation id="7612619742409846846">Jste přihlášeni do Googlu jako</translation>
 <translation id="7619072057915878432">Stahování souboru <ph name="FILE_NAME" /> se nezdařilo z důvodu selhání sítě.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">od počátku věků</translation>
 <translation id="8200772114523450471">Pokračovat</translation>
 <translation id="8209050860603202033">Otevřít obrázek</translation>
+<translation id="8215250379351058554">Web <ph name="SITE" /> se chce připojit k:</translation>
 <translation id="8218346974737627104">Potvrzení přihlášení</translation>
 <translation id="8218934717680664417">Nyní můžete vyhledávat jedním klepnutím</translation>
 <translation id="8223946939421658889">Vymazat data</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 be29647..dc069e1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hej <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Søg</translation>
 <translation id="1389974829397082527">Der er ingen bogmærker her</translation>
-<translation id="1390350022570422499">Chrome kan nu finde og vise dig websider i nærheden via Bluetooth.
-
-Chrome scanner efter sider i nærheden, når din enhed er låst op. Disse sider går gennem en Google-tjeneste for at forbedre kvaliteten af sideresultaterne.
-
-Du kan kontrollere Fysisk web i indstillingerne for beskyttelse af personlige oplysninger i Chrome.</translation>
 <translation id="1404122904123200417">Integreret i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Do Not Track"</translation>
 <translation id="1409879593029778104">Download af <ph name="FILE_NAME" /> blev forhindret, fordi filen allerede findes.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avanceret</translation>
 <translation id="1984937141057606926">Tilladt, undtagen tredjepartscookies</translation>
 <translation id="1994173015038366702">Webadresse</translation>
+<translation id="2001120796168634316">Gem linkede side til senere</translation>
 <translation id="200669432486043882">Erstat fil</translation>
 <translation id="2038563949887743358">Slå computerversionen af websitet til</translation>
 <translation id="2073235970478114994">Indlæs billeder</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Juster</translation>
 <translation id="2315043854645842844">Klientens certifikatvalg understøttes ikke af operativsystemet.</translation>
 <translation id="2316129865977710310">Nej tak</translation>
-<translation id="2319528413610359757">Til læserne af <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Træk i skyderen, indtil du kan læse dette uden problemer. Når du trykker to gange på et afsnit, skal teksten som minimum være på denne størrelse.</translation>
 <translation id="2329597144923131178">Log ind for at hente bogmærker, historik, adgangskoder og andre indstillinger på alle dine enheder.</translation>
 <translation id="2343328333327081434">Installerer…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">lige nu</translation>
 <translation id="2770465223704140727">Fjern fra listen</translation>
 <translation id="278029852808208386">Der blev ikke fundet nogen enheder. <ph name="BEGIN_LINK" />Søg igen<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Kan du ikke se din enhed? <ph name="BEGIN_LINK" />Få hjælp<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Tryk på tilbageknappen for at afslutte fuld skærm.</translation>
 <translation id="2842985007712546952">Overordnet mappe</translation>
 <translation id="2870560284913253234">Website</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Forslag ved navigationsfejl</translation>
 <translation id="3732088672634061408">Interesser kunne ikke hentes.</translation>
 <translation id="3738139272394829648">Tryk for at søge</translation>
-<translation id="3774280986422214650">Hvis du aktiverer denne funktion, vil du være en del af et eksperiment, der opretter HTTPS-proxysider via Googles servere.</translation>
 <translation id="3809549525127675114">Afspilningen af "<ph name="VIDEO_TITLE" />" er slut</translation>
 <translation id="3828029223314399057">Søg i bogmærker</translation>
 <translation id="3871171699884605801">Browserhistorikken kan ikke ryddes på børnekonti</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Gem link</translation>
 <translation id="4002066346123236978">Titel</translation>
 <translation id="4035611068038188272">Bogmærker fylder i øjeblikket <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Der er Fysisk web-sider i nærheden</translation>
 <translation id="4042870126885713738">Vis forslag, hvis en webadresse ikke bliver fundet, eller hvis der ikke kan oprettes forbindelse</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Juridiske oplysninger</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Datatyper</translation>
 <translation id="4827948050554950725">Tilføj kreditkort</translation>
 <translation id="4836364883164334657">Din forbindelse til dette website er ikke privat. Hackere kan forsøge at stjæle dine oplysninger (f.eks. billeder, adgangskoder, meddelelser og kreditkort) fra <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Læs mere</translation>
 <translation id="4850886885716139402">Vis</translation>
 <translation id="4875622588773761625">Skal <ph name="PASSWORD_MANAGER_BRAND" /> opdatere din adgangskode til dette website?</translation>
 <translation id="4881695831933465202">Åbn</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Gå fremad</translation>
 <translation id="4996978546172906250">Del via</translation>
 <translation id="5000922062037820727">Blokeret (anbefales)</translation>
-<translation id="5014582685689328551">Brug Chrome til at se dem</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Tillad</translation>
 <translation id="5040262127954254034">Beskyttelse af personlige oplysninger</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Søg efter gemte sider</translation>
 <translation id="5313967007315987356">Tilføj website</translation>
 <translation id="5317780077021120954">Gem</translation>
-<translation id="5323972449344932352">Åbn Chrome</translation>
 <translation id="5324858694974489420">Indstillinger for forældrekontrol</translation>
 <translation id="5327248766486351172">Navn</translation>
 <translation id="5345040418939504969">Slettede <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> sparet data</translation>
 <translation id="6165508094623778733">Flere oplysninger</translation>
 <translation id="6192792657125177640">Undtagelser</translation>
-<translation id="6208263165776660488">Chrome-fanerne er flyttet</translation>
 <translation id="6231464350722415003">Tillad JavaScript på de websites, du angiver, mens det blokeres på resten af internettet</translation>
 <translation id="6232535412751077445">Aktivering af "Do Not Track" betyder, at en anmodning medtages i din browsertrafik. Effekten afhænger af, om et website reagerer på anmodningen, og hvordan anmodningen fortolkes.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> anvender din placering til at vise lokale søgeresultater</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjælp<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Slet bogmærke</translation>
-<translation id="7324738665594301612">Vi tester oprettelsen af HTTPS-proxysider via Googles servere som en del af et eksperiment.</translation>
 <translation id="7346217184097589238">Gemte websiteindstillinger slettes ikke og kan afspejle dine søgevaner.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Offlineindhold</translation>
 <translation id="7363354739009474003">Indlæser "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Caster til <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fysisk web</translation>
 <translation id="7596558890252710462">Operativsystem</translation>
 <translation id="7599840151813361502">Du bliver ikke logget ud af dine <ph name="BEGIN_LINK" />Google-konti<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Se dine faner med andre apps, du har brugt for nylig, på skærmen Oversigt på din telefon. Du kan administrere dette under <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Sat på pause</translation>
 <translation id="7612619742409846846">Du er logget ind på Google som</translation>
 <translation id="7619072057915878432">Download af <ph name="FILE_NAME" /> mislykkedes på grund af netværksfejl.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">altid</translation>
 <translation id="8200772114523450471">Genoptag</translation>
 <translation id="8209050860603202033">Åbn billede</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> vil oprette forbindelse til:</translation>
 <translation id="8218346974737627104">Bekræft login</translation>
 <translation id="8218934717680664417">Nu kan du søge med et enkelt tryk</translation>
 <translation id="8223946939421658889">Ryd data fra</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 3781b14b..c135e91 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hallo <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Suchen</translation>
 <translation id="1389974829397082527">Keine Lesezeichen vorhanden</translation>
-<translation id="1390350022570422499">Mit Chrome werden Ihnen nun über Bluetooth Webseiten in Ihrer Nähe angezeigt.
-
-Chrome sucht nach Seiten in Ihrer Nähe, wenn Ihr Gerät entsperrt ist. Diese Seiten werden durch einen Google-Dienst überprüft, um die Qualität der Seitenergebnisse zu verbessern.
-
-Über die Chrome-Datenschutzeinstellungen können Sie das Physical Web verwalten.</translation>
 <translation id="1404122904123200417">Eingebettet in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Do Not Track"</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> konnte nicht heruntergeladen werden, da die Datei bereits vorhanden ist.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Erweitert</translation>
 <translation id="1984937141057606926">Zugelassen, außer Cookies Dritter</translation>
 <translation id="1994173015038366702">Website-URL</translation>
+<translation id="2001120796168634316">Verlinkte Seite für später speichern</translation>
 <translation id="200669432486043882">Datei ersetzen</translation>
 <translation id="2038563949887743358">"Desktop-Version anfordern" aktivieren</translation>
 <translation id="2073235970478114994">Bilder laden</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Verfeinern</translation>
 <translation id="2315043854645842844">Die clientseitige Zertifikatauswahl wird vom Betriebssystem nicht unterstützt.</translation>
 <translation id="2316129865977710310">Kein Interesse</translation>
-<translation id="2319528413610359757">Für Leser von <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Ziehen Sie den Schieberegler, bis Sie diesen Text problemlos lesen können. Nach dem Doppeltippen auf einen Abschnitt sollte der Text mindestens so groß sein.</translation>
 <translation id="2329597144923131178">Melden Sie sich an, um Ihre Lesezeichen, Ihren Verlauf, Ihre Passwörter und andere Einstellungen auf allen Ihren Geräten aufzurufen.</translation>
 <translation id="2343328333327081434">Wird installiert…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">gerade eben</translation>
 <translation id="2770465223704140727">Aus Liste entfernen</translation>
 <translation id="278029852808208386">Keine Bluetooth-Geräte gefunden. <ph name="BEGIN_LINK" />Wiederholen Sie die Suche.<ph name="END_LINK" /></translation>
+<translation id="2811892995384186721">Ihr Gerät ist nicht zu sehen? <ph name="BEGIN_LINK" />Hilfe aufrufen<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Tippen Sie zum Beenden des Vollbildmodus auf die Zurück-Taste.</translation>
 <translation id="2842985007712546952">Übergeordneter Ordner</translation>
 <translation id="2870560284913253234">Website</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Vorschläge bei Navigationsfehlern</translation>
 <translation id="3732088672634061408">Interessen konnten nicht abgerufen werden.</translation>
 <translation id="3738139272394829648">Zum Suchen tippen</translation>
-<translation id="3774280986422214650">Wenn Sie diese Funktion aktivieren, werden HTTPS-Seiten experimentell über Google-Proxy-Server geleitet.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" vollständig abgespielt</translation>
 <translation id="3828029223314399057">In Lesezeichen suchen</translation>
 <translation id="3871171699884605801">Der Browserverlauf kann nicht über ein Kinderkonto gelöscht werden.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Link speichern</translation>
 <translation id="4002066346123236978">Titel</translation>
 <translation id="4035611068038188272">Lesezeichen belegen momentan <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> Speicherplatz.</translation>
-<translation id="403659016947612156">Physical Web-Seiten in der Nähe vorhanden</translation>
 <translation id="4042870126885713738">Vorschläge einblenden, wenn eine Webadresse nicht gefunden oder keine Verbindung hergestellt werden kann</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Rechtliche Hinweise</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Datentypen</translation>
 <translation id="4827948050554950725">Kreditkarte hinzufügen</translation>
 <translation id="4836364883164334657">Ihre Verbindung zu dieser Website ist nicht sicher. Unbefugte Dritte könnten versuchen, Ihre Informationen von <ph name="DOMAIN_NAME" /> zu stehlen, etwa Fotos, Passwörter, Nachrichten oder Kreditkartendaten.</translation>
-<translation id="4842511359652954519">Mehr anzeigen</translation>
 <translation id="4850886885716139402">Anzeigen</translation>
 <translation id="4875622588773761625">Soll <ph name="PASSWORD_MANAGER_BRAND" /> Ihr Passwort für diese Website aktualisieren?</translation>
 <translation id="4881695831933465202">Öffnen</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Weiter</translation>
 <translation id="4996978546172906250">Teilen über</translation>
 <translation id="5000922062037820727">Blockiert (empfohlen)</translation>
-<translation id="5014582685689328551">Sie können sich diese mit Chrome ansehen.</translation>
 <translation id="5016205925109358554">Serifenschrift</translation>
 <translation id="5039804452771397117">Zulassen</translation>
 <translation id="5040262127954254034">Datenschutz</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Gespeicherte Seiten durchsuchen</translation>
 <translation id="5313967007315987356">Website hinzufügen</translation>
 <translation id="5317780077021120954">Speichern</translation>
-<translation id="5323972449344932352">Chrome starten</translation>
 <translation id="5324858694974489420">Jugendschutzeinstellungen</translation>
 <translation id="5327248766486351172">Name</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> gelöscht</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> Einsparungen bei der Datennutzung</translation>
 <translation id="6165508094623778733">Weitere Informationen</translation>
 <translation id="6192792657125177640">Ausnahmen</translation>
-<translation id="6208263165776660488">Die Chrome-Tabs sind umgezogen.</translation>
 <translation id="6231464350722415003">JavaScript wird auf von Ihnen angegebenen Websites ausgeführt und auf allen anderen Websites blockiert.</translation>
 <translation id="6232535412751077445">Wenn Sie das Kästchen "Do Not Track" anklicken, wird mit Ihren Browserzugriffen eine Anforderung gesendet. Wie sich diese Anforderung auswirkt, hängt davon ab, ob eine Website darauf reagiert und wie die Anforderung interpretiert wird.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> zeigt Ihnen lokale Suchergebnisse basierend auf Ihrem Standort.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hilfe<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Lesezeichen löschen</translation>
-<translation id="7324738665594301612">Wir testen die experimentelle Verwendung von Google-Proxy-Servern für HTTPS-Seiten.</translation>
 <translation id="7346217184097589238">Gespeicherte Website-Einstellungen werden nicht gelöscht und können möglicherweise Ihre Surfgewohnheiten wiedergeben.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Offlineinhalt</translation>
 <translation id="7363354739009474003">"<ph name="VIDEO_TITLE" />" wird geladen.</translation>
 <translation id="7366340029385295517">Übertragung an <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Physical Web</translation>
 <translation id="7596558890252710462">Betriebssystem</translation>
 <translation id="7599840151813361502">Sie werden nicht von Ihren <ph name="BEGIN_LINK" />Google-Konten<ph name="END_LINK" /> abgemeldet.</translation>
-<translation id="7603403729818446828">Auf dem Übersichtsbildschirm Ihres Smartphones sehen Sie Ihre Tabs mit anderen kürzlich verwendeten Apps. Sie können diese Funktion in den <ph name="BEGIN_LINK" />Einstellungen<ph name="END_LINK" /> anpassen.</translation>
 <translation id="7607002721634913082">Angehalten</translation>
 <translation id="7612619742409846846">Bei Google angemeldet als</translation>
 <translation id="7619072057915878432"><ph name="FILE_NAME" /> konnte aufgrund von Netzwerkfehlern nicht heruntergeladen werden.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">für den gesamten Zeitraum</translation>
 <translation id="8200772114523450471">Fortsetzen</translation>
 <translation id="8209050860603202033">Bild öffnen</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> möchte eine Verbindung herstellen mit:</translation>
 <translation id="8218346974737627104">Anmeldung bestätigen</translation>
 <translation id="8218934717680664417">Jetzt durch einfaches Tippen suchen</translation>
 <translation id="8223946939421658889">Daten löschen</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 dc6e2a6..d0c3b496 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Γεια σας, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Αναζήτηση</translation>
 <translation id="1389974829397082527">Δεν υπάρχουν σελιδοδείκτες εδώ</translation>
-<translation id="1390350022570422499">Τώρα το Chrome μπορεί να εντοπίζει και να εμφανίζει κοντινές ιστοσελίδες χωρίς τη χρήση του Bluetooth.
-
-Το Chrome θα σαρώσει τις κοντινές σελίδες όταν ξεκλειδωθεί η συσκευή σας. Αυτές οι σελίδες θα περάσουν από μια υπηρεσία Google για τη βελτίωση της ποιότητας των αποτελεσμάτων σελίδων.
-
-Μπορείτε να ελέγξετε τη λειτουργία του Φυσικού δικτύου από τις ρυθμίσεις απορρήτου του Chrome.</translation>
 <translation id="1404122904123200417">Ενσωματωμένο σε <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Να μην γίνεται εντοπισμός"</translation>
 <translation id="1409879593029778104">Η λήψη του αρχείου <ph name="FILE_NAME" /> απετράπη, επειδή το αρχείο υπάρχει ήδη.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Σύνθετες</translation>
 <translation id="1984937141057606926">Να επιτρέπονται, εκτός από τα cookie τρίτου μέρους</translation>
 <translation id="1994173015038366702">URL ιστότοπου</translation>
+<translation id="2001120796168634316">Αποθ. συνδ. σελ. για αργότερα</translation>
 <translation id="200669432486043882">Αντικατάσταση αρχείου</translation>
 <translation id="2038563949887743358">Ενεργοποίηση αιτήματος ιστότοπου για υπολογιστές</translation>
 <translation id="2073235970478114994">Φόρτωση εικόνων</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Περιορισμός</translation>
 <translation id="2315043854645842844">Η επιλογή πιστοποιητικού από τον πελάτη δεν υποστηρίζεται από το λειτουργικό σύστημα.</translation>
 <translation id="2316129865977710310">Όχι, ευχαριστώ</translation>
-<translation id="2319528413610359757">Για τους αναγνώστες του/της <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Σύρετε το ρυθμιστικό έως ότου να διαβάσετε αυτό το μήνυμα άνετα. Το κείμενο θα πρέπει να είναι τουλάχιστον τόσο μεγάλο αφού πατήσετε δύο φορές σε μια παράγραφο.</translation>
 <translation id="2329597144923131178">Συνδεθείτε για χρήση σελιδοδεικτών, ιστορικού, κωδ.πρόσβ. κ.λπ. σε όλες τις συσκευές.</translation>
 <translation id="2343328333327081434">Εγκατάσταση…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">μόλις τώρα</translation>
 <translation id="2770465223704140727">Κατάργηση από τη λίστα</translation>
 <translation id="278029852808208386">Δεν βρέθηκαν συσκευές Bluetooth. <ph name="BEGIN_LINK" />Νέα αναζήτηση<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Δεν βλέπετε τη συσκευή σας; <ph name="BEGIN_LINK" />Λάβετε βοήθεια<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Πατήστε το κουμπί επιστροφής για έξοδο από την πλήρη οθόνη.</translation>
 <translation id="2842985007712546952">Γονικός φάκελος</translation>
 <translation id="2870560284913253234">Ιστότοπος</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Προτάσεις σφάλματος πλοήγησης</translation>
 <translation id="3732088672634061408">Δεν ήταν δυνατή η ανάκτηση ενδιαφερόντων.</translation>
 <translation id="3738139272394829648">Αγγίξτε για αναζήτηση</translation>
-<translation id="3774280986422214650">Αν ενεργοποιήσετε αυτήν τη λειτουργία, θα λάβετε μέρος σε ένα πείραμα το οποίο χρησιμοποιεί διακομιστή μεσολάβησης μέσω διακομιστών της Google για σελίδες HTTPS.</translation>
 <translation id="3809549525127675114">Ολοκληρώθηκε "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="3828029223314399057">Αναζήτηση σελιδοδεικτών</translation>
 <translation id="3871171699884605801">Δεν είναι δυνατή η εκκαθάριση του ιστορικού περιήγησης για παιδικούς λογαριασμούς</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Αποθήκευση συνδέσμου</translation>
 <translation id="4002066346123236978">Τίτλος</translation>
 <translation id="4035611068038188272">Αυτήν τη στιγμή, οι σελιδοδείκτες καταλαμβάνουν <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Υπάρχουν κοντινές σελίδες Φυσικού δικτύου</translation>
 <translation id="4042870126885713738">Εμφάνιση προτάσεων όταν μια διεύθυνση ιστού δεν αναλύεται σωστά ή δεν είναι δυνατό να πραγματοποιηθεί σύνδεση</translation>
 <translation id="4056223980640387499">Σέπια</translation>
 <translation id="4062305924942672200">Νομικές πληροφορίες</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Τύποι δεδομένων</translation>
 <translation id="4827948050554950725">Προσθήκη πιστωτικής κάρτας</translation>
 <translation id="4836364883164334657">Η σύνδεσή σας με αυτόν τον ιστότοπο δεν είναι ιδιωτική. Ο τομέας <ph name="DOMAIN_NAME" /> ενδέχεται να δέχεται επίθεση από εισβολείς που προσπαθούν να υποκλέψουν τις πληροφορίες σας (για παράδειγμα, φωτογραφίες, κωδικούς πρόσβασης, μηνύματα και πιστωτικές κάρτες).</translation>
-<translation id="4842511359652954519">Διαβάστε περισσότερα</translation>
 <translation id="4850886885716139402">Προβολή</translation>
 <translation id="4875622588773761625">Θέλετε το <ph name="PASSWORD_MANAGER_BRAND" /> να ενημερώσει τον κωδικό πρόσβασής σας για αυτόν τον ιστότοπο;</translation>
 <translation id="4881695831933465202">Άνοιγμα</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Μετάβαση προς τα εμπρός</translation>
 <translation id="4996978546172906250">Κοινή χρήση μέσω</translation>
 <translation id="5000922062037820727">Αποκλείεται (συνιστάται)</translation>
-<translation id="5014582685689328551">Χρησιμοποιήστε το Chrome για να περιηγηθείτε σε αυτές</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Επιτρέπεται</translation>
 <translation id="5040262127954254034">Απόρρητο</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Αναζήτηση αποθηκευμένων σελίδων</translation>
 <translation id="5313967007315987356">Προσθήκη ιστότοπου</translation>
 <translation id="5317780077021120954">Αποθήκευση</translation>
-<translation id="5323972449344932352">Εκκίνηση Chrome</translation>
 <translation id="5324858694974489420">Ρυθμίσεις γονικού ελέγχου</translation>
 <translation id="5327248766486351172">Όνομα</translation>
 <translation id="5345040418939504969">Ο σελιδοδείκτης <ph name="BOOKMARK_TITLE" /> διαγράφηκε</translation>
@@ -402,7 +393,6 @@
 <translation id="6159335304067198720">Εξοικονόμηση δεδομένων κατά <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Μάθετε περισσότερα</translation>
 <translation id="6192792657125177640">Εξαιρέσεις</translation>
-<translation id="6208263165776660488">Οι καρτέλες του Chrome μετακινήθηκαν</translation>
 <translation id="6231464350722415003">Να επιτρέπεται η JavaScript στους ιστότοπους που προσδιορίζετε και αποκλεισμός για τον υπόλοιπο ιστό</translation>
 <translation id="6232535412751077445">Η ενεργοποίηση της επιλογής "Να μην γίνεται εντοπισμός" σημαίνει ότι θα συμπεριληφθεί ένα αίτημα με την επισκεψιμότητα της περιήγησής σας. Τυχόν αποτελέσματα εξαρτώνται από το κατά πόσο ένας ιστότοπος ανταποκρίνεται στο αίτημα, καθώς και από τον τρόπο με τον οποίο ερμηνεύεται το αίτημα.
 
@@ -491,9 +481,7 @@
 <translation id="7244362611678346589">Το <ph name="SEARCH_ENGINE_URL" /> χρησιμοποιεί την τοποθεσία σας για την εμφάνιση τοπικών αποτελεσμάτων αναζήτησης</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Βοήθεια<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Διαγραφή σελιδοδείκτη</translation>
-<translation id="7324738665594301612">Δοκιμάζουμε τη μεσολάβηση σελίδων HTTPS μέσω διακομιστών της Google στο πλαίσιο ενός πειράματος.</translation>
 <translation id="7346217184097589238">Οι αποθηκευμένες ρυθμίσεις ιστότοπων δεν θα διαγραφούν και ενδέχεται να υποδεικνύουν τις συνήθειες περιήγησης.</translation>
-<translation id="7346909386216857016">Εντάξει, το κατάλαβα</translation>
 <translation id="7347770551817603360">Περιεχόμενο εκτός σύνδεσης</translation>
 <translation id="7363354739009474003">Φόρτωση "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Μετάδοση στη συσκευή <ph name="SCREEN_NAME" /></translation>
@@ -516,7 +504,6 @@
 <translation id="7588950540487816470">Φυσικό δίκτυο</translation>
 <translation id="7596558890252710462">Λειτουργικό σύστημα</translation>
 <translation id="7599840151813361502">Δεν θα αποσυνδεθείτε από τους <ph name="BEGIN_LINK" />Λογαριασμούς Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Δείτε τις καρτέλες σας με άλλες πρόσφατες εφαρμογές στην οθόνη "Επισκόπηση" του τηλεφώνου σας. Μπορείτε να ελέγξετε αυτήν την επιλογή στις <ph name="BEGIN_LINK" />Ρυθμίσεις<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Έγινε παύση</translation>
 <translation id="7612619742409846846">Έχετε συνδεθεί στο Google ως</translation>
 <translation id="7619072057915878432">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε λόγω προβλημάτων στο δίκτυο.</translation>
@@ -565,6 +552,7 @@
 <translation id="8173098127580644436">από την αρχή</translation>
 <translation id="8200772114523450471">Συνέχιση</translation>
 <translation id="8209050860603202033">Άνοιγμα εικόνας</translation>
+<translation id="8215250379351058554">Ο ιστότοπος <ph name="SITE" /> θέλει να συνδεθεί στο:</translation>
 <translation id="8218346974737627104">Επιβεβαίωση σύνδεσης</translation>
 <translation id="8218934717680664417">Τώρα μπορείτε να αναζητήσετε με ένα μόνο άγγιγμα</translation>
 <translation id="8223946939421658889">Εκκαθάριση δεδομένων από</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 17086cd9..46b9b3b 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
@@ -31,7 +31,6 @@
 <translation id="138361230106469022">Hi, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Search</translation>
 <translation id="1389974829397082527">No bookmarks here</translation>
-<translation id="1390350022570422499">Chrome can now find and show you nearby web pages using Bluetooth. Chrome will scan for nearby pages when your device is unlocked. These pages will go through a Google service to improve the quality of page results. You can control the Physical Web in Chrome privacy settings.</translation>
 <translation id="1404122904123200417">Embedded in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Do Not Track”</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> download prevented because file already exists.</translation>
@@ -74,6 +73,7 @@
 <translation id="1974060860693918893">Advanced</translation>
 <translation id="1984937141057606926">Allowed, except third-party</translation>
 <translation id="1994173015038366702">Site URL</translation>
+<translation id="2001120796168634316">Save linked page for later</translation>
 <translation id="200669432486043882">Replace file</translation>
 <translation id="2038563949887743358">Turn on Request desktop site</translation>
 <translation id="2073235970478114994">Load images</translation>
@@ -92,7 +92,6 @@
 <translation id="2268044343513325586">Refine</translation>
 <translation id="2315043854645842844">Client side certificate selection is not supported by the operating system.</translation>
 <translation id="2316129865977710310">No, thank you</translation>
-<translation id="2319528413610359757">For readers of <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Drag the slider until you can read this comfortably. Text should look at least this big after double-tapping on a paragraph.</translation>
 <translation id="2329597144923131178">Sign in to get your bookmarks, history, passwords and other settings on all your devices</translation>
 <translation id="2343328333327081434">Installing…</translation>
@@ -132,6 +131,7 @@
 <translation id="2762000892062317888">just now</translation>
 <translation id="2770465223704140727">Remove from list</translation>
 <translation id="278029852808208386">No Bluetooth devices found. <ph name="BEGIN_LINK" />Search again<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Not seeing your device? <ph name="BEGIN_LINK" />Get help<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Touch the back button to exit full screen.</translation>
 <translation id="2842985007712546952">Parent folder</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -195,7 +195,6 @@
 <translation id="3672452749423051839">Navigation error suggestions</translation>
 <translation id="3732088672634061408">Could not retrieve interests.</translation>
 <translation id="3738139272394829648">Touch to Search</translation>
-<translation id="3774280986422214650">If you enable this feature, you will be part of an experiment that proxies HTTPS pages through Google servers.</translation>
 <translation id="3809549525127675114">Finished “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="3828029223314399057">Search bookmarks</translation>
 <translation id="3871171699884605801">Browsing history can’t be cleared with accounts for kids</translation>
@@ -210,7 +209,6 @@
 <translation id="3992315671621218278">Save link</translation>
 <translation id="4002066346123236978">Title</translation>
 <translation id="4035611068038188272">Bookmarks are currently taking up <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Physical web pages are nearby</translation>
 <translation id="4042870126885713738">Show suggestions when a web address does not resolve or a connection cannot be made</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Legal information</translation>
@@ -270,7 +268,6 @@
 <translation id="4816465935029283692">Data types</translation>
 <translation id="4827948050554950725">Add credit card</translation>
 <translation id="4836364883164334657">Your connection to this site is not private. Attackers might be trying to steal your information (for example, photos, passwords, messages and credit cards) from <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Read more</translation>
 <translation id="4850886885716139402">View</translation>
 <translation id="4875622588773761625">Do you want <ph name="PASSWORD_MANAGER_BRAND" /> to update your password for this site?</translation>
 <translation id="4881695831933465202">Open</translation>
@@ -283,7 +280,6 @@
 <translation id="497421865427891073">go forward</translation>
 <translation id="4996978546172906250">Share via</translation>
 <translation id="5000922062037820727">Blocked (recommended)</translation>
-<translation id="5014582685689328551">Use Chrome to browse them</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Allow</translation>
 <translation id="5040262127954254034">Privacy</translation>
@@ -318,7 +314,6 @@
 <translation id="5308933389783727448">Search saved pages</translation>
 <translation id="5313967007315987356">Add site</translation>
 <translation id="5317780077021120954">Save</translation>
-<translation id="5323972449344932352">Launch Chrome</translation>
 <translation id="5324858694974489420">Parental Settings</translation>
 <translation id="5327248766486351172">Name</translation>
 <translation id="5345040418939504969">Deleted <ph name="BOOKMARK_TITLE" /></translation>
@@ -397,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> data savings</translation>
 <translation id="6165508094623778733">Learn more</translation>
 <translation id="6192792657125177640">Exceptions</translation>
-<translation id="6208263165776660488">Chrome tabs have moved</translation>
 <translation id="6231464350722415003">Allow JavaScript on websites that you specify while blocking it for the rest of the web</translation>
 <translation id="6232535412751077445">Enabling “Do Not Track” means that a request will be included with your browsing traffic. Any effect depends on whether a website responds to the request and how the request is interpreted.
 
@@ -486,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> uses your location to show local search results</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Help<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Delete bookmark</translation>
-<translation id="7324738665594301612">We are testing the proxying of HTTPS pages through Google servers as part of an experiment.</translation>
 <translation id="7346217184097589238">Saved site settings will not be deleted and may reflect your browsing habits.</translation>
-<translation id="7346909386216857016">OK, got it</translation>
 <translation id="7347770551817603360">Offline content</translation>
 <translation id="7363354739009474003">Loading “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Casting to <ph name="SCREEN_NAME" /></translation>
@@ -511,7 +503,6 @@
 <translation id="7588950540487816470">Physical web</translation>
 <translation id="7596558890252710462">Operating system</translation>
 <translation id="7599840151813361502">You won’t be signed out of your <ph name="BEGIN_LINK" />Google Accounts<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">See your tabs with other recent apps on your phone’s Overview screen. You can control this in <ph name="BEGIN_LINK" />Settings<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Paused</translation>
 <translation id="7612619742409846846">Signed in to Google as</translation>
 <translation id="7619072057915878432"><ph name="FILE_NAME" /> download failed due to network failures.</translation>
@@ -560,6 +551,7 @@
 <translation id="8173098127580644436">beginning of time</translation>
 <translation id="8200772114523450471">Resume</translation>
 <translation id="8209050860603202033">Open image</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> wants to connect to:</translation>
 <translation id="8218346974737627104">Confirm sign-in</translation>
 <translation id="8218934717680664417">Now you can search with one touch</translation>
 <translation id="8223946939421658889">Clear data from the</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 d03bfa99..be76a7f 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
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hola, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1389974829397082527">Aquí no hay marcadores</translation>
-<translation id="1390350022570422499">Chrome ahora puede buscar y mostrarte páginas web cercanas a través de Bluetooth.
-
-Chrome buscará páginas cercanas cuando tu dispositivo esté desbloqueado. Estas páginas pasarán por un servicio de Google que mejorará la calidad de los resultados.
-
-Puedes controlar la Web física desde la configuración de privacidad de Chrome.</translation>
 <translation id="1404122904123200417">Incorporado en <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"No realizar seguimiento"</translation>
 <translation id="1409879593029778104">Se impidió la descarga de <ph name="FILE_NAME" /> porque el archivo ya existe.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avanzada</translation>
 <translation id="1984937141057606926">Permitidas, salvo de terceros</translation>
 <translation id="1994173015038366702">URL del sitio</translation>
+<translation id="2001120796168634316">Guardar la página vinculada</translation>
 <translation id="200669432486043882">Reemplazar el archivo</translation>
 <translation id="2038563949887743358">Activar la opción para solicitar versión de escritorio</translation>
 <translation id="2073235970478114994">Cargar imágenes</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Definir mejor</translation>
 <translation id="2315043854645842844">El sistema operativo no admite la selección de certificados del lado del cliente.</translation>
 <translation id="2316129865977710310">No, gracias</translation>
-<translation id="2319528413610359757">Para los lectores de <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Arrastra el control deslizante hasta que puedas leer esto cómodamente. El texto debería verse, al menos, de este tamaño al tocar dos veces un párrafo.</translation>
 <translation id="2329597144923131178">Accede a tu cuenta para ver los marcadores, el historial, las contraseñas y otras opciones de configuración en todos los dispositivos.</translation>
 <translation id="2343328333327081434">Instalando…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">recién</translation>
 <translation id="2770465223704140727">Eliminar de la lista</translation>
 <translation id="278029852808208386">No se encontraron dispositivos Bluetooth. <ph name="BEGIN_LINK" />Vuelve a buscar<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">¿No ves el dispositivo? <ph name="BEGIN_LINK" />Obtén ayuda<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Toca el botón Atrás para salir de la pantalla completa.</translation>
 <translation id="2842985007712546952">Carpeta principal</translation>
 <translation id="2870560284913253234">Sitio</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Sugerencias relacionadas con errores de navegación</translation>
 <translation id="3732088672634061408">No se pudieron recuperar los intereses.</translation>
 <translation id="3738139272394829648">Tocar para buscar</translation>
-<translation id="3774280986422214650">Si habilitas esta función, formarás parte de un experimento que transmite páginas HTTPS por proxy a través de los servidores de Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" finalizado</translation>
 <translation id="3828029223314399057">Buscar marcadores</translation>
 <translation id="3871171699884605801">No se puede borrar el historial de navegación en las cuentas para niños</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Guardar vínculo</translation>
 <translation id="4002066346123236978">Título</translation>
 <translation id="4035611068038188272">Actualmente, los marcadores ocupan <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Páginas web físicas cercanas</translation>
 <translation id="4042870126885713738">Mostrar sugerencias cuando no se resuelve una dirección web o cuando no se puede establecer una conexión</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Información legal</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipos de datos</translation>
 <translation id="4827948050554950725">Agregar tarjeta de crédito</translation>
 <translation id="4836364883164334657">La conexión al sitio no es privada. Es posible que los atacantes estén intentando robarte información (por ejemplo, fotos, contraseñas, mensajes y tarjetas de crédito) de <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Más información</translation>
 <translation id="4850886885716139402">Ver</translation>
 <translation id="4875622588773761625">¿Quieres que <ph name="PASSWORD_MANAGER_BRAND" /> actualice tu contraseña para este sitio?</translation>
 <translation id="4881695831933465202">Abrir</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avanzar</translation>
 <translation id="4996978546172906250">Compartir mediante</translation>
 <translation id="5000922062037820727">Bloqueado (recomendado)</translation>
-<translation id="5014582685689328551">Usar Chrome para explorarlas</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5040262127954254034">Privacidad</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Buscar en las páginas guardadas</translation>
 <translation id="5313967007315987356">Agregar sitio</translation>
 <translation id="5317780077021120954">Guardar</translation>
-<translation id="5323972449344932352">Iniciar Chrome</translation>
 <translation id="5324858694974489420">Configuración parental</translation>
 <translation id="5327248766486351172">Nombre</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> borrado</translation>
@@ -402,7 +393,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> de ahorro de datos</translation>
 <translation id="6165508094623778733">Más información</translation>
 <translation id="6192792657125177640">Excepciones</translation>
-<translation id="6208263165776660488">Se movieron las pestañas de Chrome</translation>
 <translation id="6231464350722415003">Admite JavaScript en los sitios web que especifiques a la vez que lo bloquea en el resto de la Web.</translation>
 <translation id="6232535412751077445">Si se habilita la opción de "No realizar seguimiento", se incluirá una solicitud con tu tráfico de navegación. Los efectos dependerán de si hay algún sitio web que responda a la solicitud y de cómo se interprete.
 
@@ -491,9 +481,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> usa tu ubicación para mostrar resultados de la búsqueda a nivel local.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ayuda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Eliminar marcador</translation>
-<translation id="7324738665594301612">Estamos probando la transmisión de páginas HTTPS por proxy a través de los servidores de Google como parte de un experimento.</translation>
 <translation id="7346217184097589238">La configuración guardada del sitio no se borrará y es posible que refleje tus hábitos de navegación.</translation>
-<translation id="7346909386216857016">Entendido</translation>
 <translation id="7347770551817603360">Contenido sin conexión</translation>
 <translation id="7363354739009474003">Cargando "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Transmitiendo a <ph name="SCREEN_NAME" /></translation>
@@ -516,7 +504,6 @@
 <translation id="7588950540487816470">Web física</translation>
 <translation id="7596558890252710462">Sistema operativo</translation>
 <translation id="7599840151813361502">No saldrás de tus <ph name="BEGIN_LINK" />Cuentas de Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Consulta las pestañas con otras apps recientes en la pantalla Recientes del teléfono. Puedes controlar este parámetro en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Detenido</translation>
 <translation id="7612619742409846846">Accediste a Google como</translation>
 <translation id="7619072057915878432"><ph name="FILE_NAME" /> no se pudo descargar debido a fallas en la red.</translation>
@@ -565,6 +552,7 @@
 <translation id="8173098127580644436">el principio</translation>
 <translation id="8200772114523450471">Reanudar</translation>
 <translation id="8209050860603202033">Abrir imagen</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> quiere conectarse a:</translation>
 <translation id="8218346974737627104">Confirmar acceso</translation>
 <translation id="8218934717680664417">Ahora puedes buscar con un toque</translation>
 <translation id="8223946939421658889">Borrar datos desde</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 708288f1..72496c2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hola, <ph name="FULL_NAME" />:</translation>
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1389974829397082527">Ningún marcador incluido</translation>
-<translation id="1390350022570422499">Chrome ahora puede encontrar y mostrarte páginas cercanas mediante Bluetooth.
-
-Chrome buscará páginas cercanas cuando tu dispositivo esté desbloqueado. Estas páginas se enviarán a un servicio de Google para mejorar la calidad de los resultados de páginas.
-
-Puedes controlar la Web física en la configuración de privacidad de Chrome.</translation>
 <translation id="1404122904123200417">Insertado en <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">No realizar seguimiento</translation>
 <translation id="1409879593029778104">No se ha descargado <ph name="FILE_NAME" /> porque este archivo ya existe.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Opciones avanzadas</translation>
 <translation id="1984937141057606926">Permitidas (excepto cookies de terceros)</translation>
 <translation id="1994173015038366702">URL del sitio</translation>
+<translation id="2001120796168634316">Guardar para más tarde</translation>
 <translation id="200669432486043882">Sustituir archivo</translation>
 <translation id="2038563949887743358">Activar opción para solicitar sitio de escritorio</translation>
 <translation id="2073235970478114994">Cargar imágenes</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Restringir</translation>
 <translation id="2315043854645842844">El sistema operativo no admite la selección de certificados de cliente.</translation>
 <translation id="2316129865977710310">No, gracias</translation>
-<translation id="2319528413610359757">Para lectores de <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Arrastra el control deslizante hasta que puedas leer cómodamente. El texto debe tener al menos este tamaño después de tocar un párrafo dos veces.</translation>
 <translation id="2329597144923131178">Accede para ver marcadores, historial, contraseñas y otros en dispos.</translation>
 <translation id="2343328333327081434">Instalando…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">ahora mismo</translation>
 <translation id="2770465223704140727">Eliminar de la lista</translation>
 <translation id="278029852808208386">No se han encontrado dispositivos Bluetooth. <ph name="BEGIN_LINK" />Repite la búsqueda<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">¿No aparece tu dispositivo? <ph name="BEGIN_LINK" />Obtén ayuda<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Toca el botón de retroceso para salir de la pantalla completa.</translation>
 <translation id="2842985007712546952">Carpeta principal</translation>
 <translation id="2870560284913253234">Sitio</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Sugerencias para errores de navegación</translation>
 <translation id="3732088672634061408">No se han podido recuperar los intereses.</translation>
 <translation id="3738139272394829648">Tocar para buscar</translation>
-<translation id="3774280986422214650">Si habilitas esta función, participarás en un experimento que envía páginas HTTPS a proxies a través de servidores de Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" ha finalizado</translation>
 <translation id="3828029223314399057">Buscar marcadores</translation>
 <translation id="3871171699884605801">El historial de navegación no se puede borrar con cuentas infantiles</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Guardar enlace</translation>
 <translation id="4002066346123236978">Título</translation>
 <translation id="4035611068038188272">Los marcadores ocupan <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Hay páginas de la Web física cercanas</translation>
 <translation id="4042870126885713738">Muestra sugerencias cuando no se puede resolver una dirección web o no se puede establecer una conexión</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Información legal</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipos de datos</translation>
 <translation id="4827948050554950725">Añadir tarjeta de crédito</translation>
 <translation id="4836364883164334657">Tu conexión a este sitio web no es privada. Un atacante podría intentar robar tu información (fotos, contraseñas, mensajes, tarjetas de crédito, etc.) del dominio <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Más información</translation>
 <translation id="4850886885716139402">Ver</translation>
 <translation id="4875622588773761625">¿Quieres que <ph name="PASSWORD_MANAGER_BRAND" /> actualice tu contraseña para este sitio web?</translation>
 <translation id="4881695831933465202">Abrir</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avanzar</translation>
 <translation id="4996978546172906250">Compartir a través de</translation>
 <translation id="5000922062037820727">Bloqueado (recomendado)</translation>
-<translation id="5014582685689328551">Navega por ellas con Chrome</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5040262127954254034">Privacidad</translation>
@@ -318,11 +310,10 @@
 <translation id="5301954838959518834">Entendido</translation>
 <translation id="5302048478445481009">Idioma</translation>
 <translation id="5304593522240415983">Este campo no puede estar vacío</translation>
-<translation id="5308380583665731573">Conexiones</translation>
+<translation id="5308380583665731573">Conectar</translation>
 <translation id="5308933389783727448">Buscar páginas guardadas</translation>
 <translation id="5313967007315987356">Añadir sitio</translation>
 <translation id="5317780077021120954">Guardar</translation>
-<translation id="5323972449344932352">Iniciar Chrome</translation>
 <translation id="5324858694974489420">Configuración parental</translation>
 <translation id="5327248766486351172">Nombre</translation>
 <translation id="5345040418939504969">Se ha eliminado <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> de ahorro de datos</translation>
 <translation id="6165508094623778733">Más información</translation>
 <translation id="6192792657125177640">Excepciones</translation>
-<translation id="6208263165776660488">Se han movido las pestañas de Chrome</translation>
 <translation id="6231464350722415003">Permitir JavaScript en sitios web especificados al bloquearlo para el resto de la Web</translation>
 <translation id="6232535412751077445">Al habilitar la opción No realizar seguimiento, se incluirá una solicitud con el tráfico de navegación. El efecto dependerá de si algún sitio web responde a la solicitud y de cómo se interpreta.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utiliza tu ubicación para mostrar resultados de búsqueda locales</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ayuda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Eliminar marcador</translation>
-<translation id="7324738665594301612">Estamos probando el envío de páginas HTTPS a proxies a través de los servidores de Google como parte de un experimento.</translation>
 <translation id="7346217184097589238">No se eliminará la configuración guardada de los sitios web, lo cual puede reflejar tus hábitos de navegación.</translation>
-<translation id="7346909386216857016">Entendido</translation>
 <translation id="7347770551817603360">Contenido sin conexión</translation>
 <translation id="7363354739009474003">Cargando "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Enviando contenido a <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Web física</translation>
 <translation id="7596558890252710462">Sistema operativo</translation>
 <translation id="7599840151813361502">No se cerrará la sesión en tus <ph name="BEGIN_LINK" />cuentas de Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Consulta tus pestañas con otras aplicaciones recientes en la pantalla Visión general de tu teléfono. Puedes controlar esta opción en las opciones de <ph name="BEGIN_LINK" />configuración<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">En pausa</translation>
 <translation id="7612619742409846846">Has iniciado sesión en Google como</translation>
 <translation id="7619072057915878432">No se ha podido descargar <ph name="FILE_NAME" /> debido a problemas de la red.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">el origen de los tiempos</translation>
 <translation id="8200772114523450471">Reanudar</translation>
 <translation id="8209050860603202033">Abrir imagen</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> quiere conectarse a:</translation>
 <translation id="8218346974737627104">Confirmar inicio de sesión</translation>
 <translation id="8218934717680664417">Ahora puedes realizar búsquedas con un toque</translation>
 <translation id="8223946939421658889">Borrar datos de:</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 39d99cd2..4fa0a86 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">سلام، <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">جستجو</translation>
 <translation id="1389974829397082527">نشانکی در اینجا وجود ندارد</translation>
-<translation id="1390350022570422499">‏اکنون Chrome می‌تواند صفحه‌های وب نزدیک شما را با استفاده از بلوتوث پیدا کند و به شما نشان دهد.
-
-هنگامی که قفل دستگاهتان باز است، Chrome برای صفحه‌های وب اطراف جستجو می‌کند. این صفحه‌ها از یکی از سرویس‌های Google عبور می‌کنند تا کیفیت نتایج صفحه بهتر شود.
-
-می‌توانید «وب فیزیکی» را در تنظیمات حریم خصوصی Chrome کنترل کنید.</translation>
 <translation id="1404122904123200417">جاسازی شده در <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">«ردیابی نشود»</translation>
 <translation id="1409879593029778104">دانلود <ph name="FILE_NAME" /> انجام نشد زیرا فایل از قبل موجود است.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">پیشرفته</translation>
 <translation id="1984937141057606926">مجاز، به غیر از طرف ثالث</translation>
 <translation id="1994173015038366702">نشانی وب سایت</translation>
+<translation id="2001120796168634316">ذخیره صفحه پیوند داده شده برای بعد</translation>
 <translation id="200669432486043882">جایگزینی فایل</translation>
 <translation id="2038563949887743358">روشن کردن درخواست سایت رایانه‌ای</translation>
 <translation id="2073235970478114994">بارگیری تصاویر</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">فیلتر</translation>
 <translation id="2315043854645842844">انتخاب گواهی سمت کلاینت توسط سیستم‌عامل پشتیبانی نمی‌شود.</translation>
 <translation id="2316129865977710310">نه سپاسگزارم</translation>
-<translation id="2319528413610359757">برای خوانندگان <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">لغزنده را بکشید تا زمانی که بتوانید این متن را به راحتی بخوانید. بعد از دو ضربه متوالی روی یک پاراگراف، اندازه نوشتار حداقل باید به این بزرگی باشد.</translation>
 <translation id="2329597144923131178">برای دریافت نشانک‌ها، سابقه، گذرواژه‌ها و سایر تنظیماتتان در همه دستگاه‌ها، وارد سیستم شوید.</translation>
 <translation id="2343328333327081434">در حال نصب…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">هم‌اکنون</translation>
 <translation id="2770465223704140727">حذف از لیست</translation>
 <translation id="278029852808208386">دستگاه بلوتوثی پیدا نشد. <ph name="BEGIN_LINK" />دوباره جستجو کنید<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">دستگاهتان را نمی‌بینید؟ <ph name="BEGIN_LINK" />دریافت راهنمایی<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">برای خروج از حالت تمام صفحه، دکمه برگشت را لمس کنید.</translation>
 <translation id="2842985007712546952">پوشه اصلی</translation>
 <translation id="2870560284913253234">سایت</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">پیشنهادات خطای پیمایش</translation>
 <translation id="3732088672634061408">علایق بازیابی نشدند.</translation>
 <translation id="3738139272394829648">لمس کردن برای جستجو</translation>
-<translation id="3774280986422214650">‏اگر این قابلیت را فعال کنید، بخشی از آزمایشی خواهید بود که صفحات HTTPS را از طریق سرورهای Google پروکسی می‌کند.</translation>
 <translation id="3809549525127675114">«<ph name="VIDEO_TITLE" />» به پایان رسید</translation>
 <translation id="3828029223314399057">جستجوی نشانک‌ها</translation>
 <translation id="3871171699884605801">با حساب‌های مخصوص کودکان نمی‌توان سابقه مرور را پاک کرد</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">ذخیره پیوند</translation>
 <translation id="4002066346123236978">عنوان</translation>
 <translation id="4035611068038188272">نشانک‌ها درحال حاضر <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> فضا اشغال کرده‌اند.</translation>
-<translation id="403659016947612156">صفحه‌های «وب فیزیکی» در اطراف هستند</translation>
 <translation id="4042870126885713738">وقتی آدرس وب شناسایی نمی‌شود یا اتصال برقرار نمی‌شود، پیشنهاداتی نشان داده می‌شود</translation>
 <translation id="4056223980640387499">سپیا</translation>
 <translation id="4062305924942672200">اطلاعات حقوقی</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">انواع داده</translation>
 <translation id="4827948050554950725">افزودن کارت اعتباری</translation>
 <translation id="4836364883164334657">اتصال شما به این سایت خصوصی نیست. مهاجمین ممکن است برای سرقت اطلاعاتتان (به‌عنوان مثال، عکس‌ها، گذرواژه‌ها، پیام‌ها و کارت‌های اعتباری) از <ph name="DOMAIN_NAME" /> تلاش کنند.</translation>
-<translation id="4842511359652954519">بیشتر بخوانید</translation>
 <translation id="4850886885716139402">نما</translation>
 <translation id="4875622588773761625">می‌خواهید <ph name="PASSWORD_MANAGER_BRAND" /> گذرواژه‌تان را برای این سایت به‌روزرسانی کند؟</translation>
 <translation id="4881695831933465202">باز کردن</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">جلو رفتن</translation>
 <translation id="4996978546172906250">اشتراک‌گذاری از طریق</translation>
 <translation id="5000922062037820727">مسدود (توصیه می‌شود)</translation>
-<translation id="5014582685689328551">‏برای مرور آن‌ها از Chrome استفاده کنید</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">اجازه دادن</translation>
 <translation id="5040262127954254034">حریم خصوصی</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">جستجوی صفحات ذخیره‌شده</translation>
 <translation id="5313967007315987356">افزودن سایت</translation>
 <translation id="5317780077021120954">ذخیره</translation>
-<translation id="5323972449344932352">‏راه‌اندازی Chrome</translation>
 <translation id="5324858694974489420">تنظیمات والدین</translation>
 <translation id="5327248766486351172">نام</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> حذف شد</translation>
@@ -400,7 +391,6 @@
 <translation id="6159335304067198720">ذخیره داده‌ها: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">بیشتر بدانید</translation>
 <translation id="6192792657125177640">موارد استثنا</translation>
-<translation id="6208263165776660488">‏برگه‌های Chrome جابه‌جا شده‌اند</translation>
 <translation id="6231464350722415003">جاوااسکریپت در وب‌سایت‌هایی که تعیین می‌کنید مجاز باشد اما برای بقیه وب غیرمجاز باشد</translation>
 <translation id="6232535412751077445">فعال کردن «ردیابی نشود» به این معنی است که درخواستی به ترافیک مرور شما اضافه می‌شود. هر گونه اثری به این بستگی دارد که وب‌سایت به درخواست‌ پاسخ می‌دهد یا نه و درخواست چگونه تفسیر می‌شود.
 
@@ -489,9 +479,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> از موقعیت مکانی شما برای نمایش نتایج جستجوی محلی استفاده می‌کند</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />راهنما<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">حذف نشانک</translation>
-<translation id="7324738665594301612">‏در حال آزمایش پروکسی کردن صفحات HTTPS از طریق سرورهای Google به عنوان بخشی از یک آزمایش هستیم.</translation>
 <translation id="7346217184097589238">تنظیمات سایت ذخیره‌شده حذف نخواهند شد و می‌توانند منعکس‌کننده عادات مرور شما باشند.</translation>
-<translation id="7346909386216857016">بله متوجه شدم.</translation>
 <translation id="7347770551817603360">محتوای آفلاین</translation>
 <translation id="7363354739009474003">در حال بارگیری «<ph name="VIDEO_TITLE" />»</translation>
 <translation id="7366340029385295517">درحال فرستادن به <ph name="SCREEN_NAME" /></translation>
@@ -514,7 +502,6 @@
 <translation id="7588950540487816470">وب فیزیکی</translation>
 <translation id="7596558890252710462">سیستم عامل</translation>
 <translation id="7599840151813361502">‏از سیستم <ph name="BEGIN_LINK" />حساب‌های Google<ph name="END_LINK" /> خود خارج نخواهید شد</translation>
-<translation id="7603403729818446828">برگه‌ها و سایر برنامه‌های اخیرتان را در صفحه نمای کلی تلفن ببینید. می‌توانید این را در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> کنترل کنید.</translation>
 <translation id="7607002721634913082">متوقف</translation>
 <translation id="7612619742409846846">‏ثبت ورودشده در Google به‌عنوان</translation>
 <translation id="7619072057915878432">به‌دلیل نقص‌هایی در شبکه، بارگیری <ph name="FILE_NAME" /> انجام نشد.</translation>
@@ -563,6 +550,7 @@
 <translation id="8173098127580644436">از ابتدا</translation>
 <translation id="8200772114523450471">ازسرگیری</translation>
 <translation id="8209050860603202033">باز کردن تصویر</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> می‌خواهد متصل شود به:</translation>
 <translation id="8218346974737627104">تأیید ورود به سیستم</translation>
 <translation id="8218934717680664417">اکنون می‌توانید با یک لمس جستجو کنید</translation>
 <translation id="8223946939421658889">پاک کردن داده‌ها از</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 087a868..7480fbd 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hei, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Haku</translation>
 <translation id="1389974829397082527">Ei kirjanmerkkejä</translation>
-<translation id="1390350022570422499">Chrome voi nyt hakea ja näyttää lähistöllä olevia verkkosivuja Bluetoothin kautta.
-
-Kun laitteen lukitus avataan, Chrome etsii lähistöllä olevia sivuja. Google käsittelee sivut palvelussaan parantaakseen tuloksien laatua.
-
-Voit hallinnoida Fyysinen web ‑ominaisuuksia Chromen tietosuoja-asetuksissa.</translation>
 <translation id="1404122904123200417">Upotettu osoitteeseen <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track</translation>
 <translation id="1409879593029778104">Tiedoston <ph name="FILE_NAME" /> lataus estettiin, koska tiedosto on jo olemassa.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Lisäasetukset</translation>
 <translation id="1984937141057606926">Sallittu, paitsi kolmannen osapuolen evästeet</translation>
 <translation id="1994173015038366702">Sivuston URL-osoite</translation>
+<translation id="2001120796168634316">Tallenna linkitetty sivu</translation>
 <translation id="200669432486043882">Korvaa tiedosto.</translation>
 <translation id="2038563949887743358">Ota käyttöön Käytä tietokoneversiota</translation>
 <translation id="2073235970478114994">Lataa kuvat</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Tarkenna</translation>
 <translation id="2315043854645842844">Käyttöjärjestelmä ei tue palvelimen varmennevalintaa.</translation>
 <translation id="2316129865977710310">Ei kiitos</translation>
-<translation id="2319528413610359757">Julkaisun <ph name="PUBLISHER" /> lukijoille</translation>
 <translation id="2321958826496381788">Vedä liukusäädintä, kunnes voit lukea tämän mukavasti. Tekstin tulisi olla vähintään näin suurta kaksoisnapautettuasi kappaletta.</translation>
 <translation id="2329597144923131178">Kirjaudu ja käytä kirjanm., historiaa, salasan. ja muita asetuksia kaikissa laitteissasi.</translation>
 <translation id="2343328333327081434">Asennetaan…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">äsken</translation>
 <translation id="2770465223704140727">Poista luettelosta</translation>
 <translation id="278029852808208386">Bluetooth-laitteita ei löytynyt. <ph name="BEGIN_LINK" />Hae uudelleen<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Etkö näe laitettasi? <ph name="BEGIN_LINK" />Tutustu ohjeisiin.<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Poistu koko näytön tilasta Takaisin-painikkeella.</translation>
 <translation id="2842985007712546952">Ylätason kansio</translation>
 <translation id="2870560284913253234">Sivusto</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Selausvirheiden ehdotukset</translation>
 <translation id="3732088672634061408">Kiinnostuksen kohteita ei voitu hakea.</translation>
 <translation id="3738139272394829648">Koskettamalla hakeminen</translation>
-<translation id="3774280986422214650">Jos otat tämän toiminnon käyttöön, osallistut kokeiluun, jossa HTTP-sivut lähetetään Googlen välityspalvelimien kautta.</translation>
 <translation id="3809549525127675114"><ph name="VIDEO_TITLE" /> päättyi</translation>
 <translation id="3828029223314399057">Hae kirjanmerkeistä</translation>
 <translation id="3871171699884605801">Lasten tileillä ei voi tyhjentää selaushistoriaa.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Tallenna linkki</translation>
 <translation id="4002066346123236978">Nimi</translation>
 <translation id="4035611068038188272">Kirjanmerkit vievät tällä hetkellä <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> tilaa.</translation>
-<translation id="403659016947612156">Lähistöllä on Fyysinen web ‑sivuja.</translation>
 <translation id="4042870126885713738">Näytä ehdotuksia, jos verkko-osoitetta ei tunnisteta tai yhteyttä ei voi muodostaa.</translation>
 <translation id="4056223980640387499">Seepia</translation>
 <translation id="4062305924942672200">Oikeudelliset tiedot</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tietotyypit</translation>
 <translation id="4827948050554950725">Lisää luottokortti</translation>
 <translation id="4836364883164334657">Yhteytesi tälle sivulle ei ole salattu. Hyökkääjät voivat yrittää varastaa tietojasi (kuten kuvia, salasanoja, viestejä tai luottokorttitietoja) kohteesta <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Lisätietoja</translation>
 <translation id="4850886885716139402">Näytä</translation>
 <translation id="4875622588773761625">Haluatko, että <ph name="PASSWORD_MANAGER_BRAND" /> päivittää tämän sivuston salasanasi?</translation>
 <translation id="4881695831933465202">Avaa</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Siirry eteenpäin</translation>
 <translation id="4996978546172906250">Jaa tällä palvelulla:</translation>
 <translation id="5000922062037820727">Estetty (suositus)</translation>
-<translation id="5014582685689328551">Selaa niitä Chromella.</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Salli</translation>
 <translation id="5040262127954254034">Tietosuoja</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Hae tallennetuista sivuista</translation>
 <translation id="5313967007315987356">Lisää sivusto</translation>
 <translation id="5317780077021120954">Tallenna</translation>
-<translation id="5323972449344932352">Käynnistä Chrome</translation>
 <translation id="5324858694974489420">Vanhempien asetukset</translation>
 <translation id="5327248766486351172">Nimi</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> poistettiin.</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> vähemmän tiedonsiirtoa</translation>
 <translation id="6165508094623778733">Lisätietoja</translation>
 <translation id="6192792657125177640">Poikkeukset</translation>
-<translation id="6208263165776660488">Chrome-välilehdet ovat muuttaneet</translation>
 <translation id="6231464350722415003">Salli JavaScript määrittämissäsi sivustoissa mutta estä se muissa sivustoissa.</translation>
 <translation id="6232535412751077445">Do Not Track -toiminnon käyttöönotto tarkoittaa sitä, että selausliikenteeseesi sisällytetään pyyntö. Sen vaikutus riippuu siitä, vastaako verkkosivusto pyyntöön ja miten pyyntöä tulkitaan.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> käyttää sijaintiasi paikallisten hakutulosten näyttämiseen.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ohjeita<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Poista kirjanmerkki</translation>
-<translation id="7324738665594301612">Testaamme HTTPS-sivujen lähettämistä Googlen välityspalvelimien kautta osana kokeilua.</translation>
 <translation id="7346217184097589238">Tallennettuja sivustoasetuksia ei poisteta, ja ne saattavat liittyä selaustapoihisi.</translation>
-<translation id="7346909386216857016">OK!</translation>
 <translation id="7347770551817603360">Offline-sisältö</translation>
 <translation id="7363354739009474003">Ladataan videota <ph name="VIDEO_TITLE" /></translation>
 <translation id="7366340029385295517">Suoratoistetaan näytöllä <ph name="SCREEN_NAME" />.</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fyysinen web</translation>
 <translation id="7596558890252710462">Käyttöjärjestelmä</translation>
 <translation id="7599840151813361502">Sinua ei kirjata ulos <ph name="BEGIN_LINK" />Google-tileiltäsi<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">Näet välilehdet ja viimeksi käytetyt sovellukset puhelimen Viimeisimmät-näkymässä. Voit muuttaa valintaa <ph name="BEGIN_LINK" />asetuksissa<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Keskeytetty</translation>
 <translation id="7612619742409846846">Olet kirjautunut Googleen käyttäjänä</translation>
 <translation id="7619072057915878432">Tiedoston <ph name="FILE_NAME" /> lataus epäonnistui verkkovirheen vuoksi.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">alusta asti</translation>
 <translation id="8200772114523450471">Jatka</translation>
 <translation id="8209050860603202033">Avaa kuva</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> haluaa muodostaa yhteyden seuraaviin laitteisiin:</translation>
 <translation id="8218346974737627104">Kirjautumisen vahvistaminen</translation>
 <translation id="8218934717680664417">Nyt voit tehdä hakuja yhdellä kosketuksella</translation>
 <translation id="8223946939421658889">Poista tiedot</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 f94adff..f37cf672 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Kamusta, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Hanapin</translation>
 <translation id="1389974829397082527">Walang mga bookmark dito</translation>
-<translation id="1390350022570422499">Ang Chrome ay maaari na ngayong maghanap at magpakita sa iyo ng mga kalapit na web page gamit ang Bluetooth.
-
-Mag-ii-scan ang Chrome ng mga kalapit na page kapag naka-unlock ang iyong device. Dadaan ang mga page na ito sa isang serbisyo ng Google upang pahusayin ang kalidad ng mga resultang page.
-
-Maaari mong kontrolin ang Pisikal na Web sa mga setting ng privacy ng Chrome.</translation>
 <translation id="1404122904123200417">Naka-embed sa <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Huwag Subaybayan”</translation>
 <translation id="1409879593029778104">Pinigilan ang pag-download sa <ph name="FILE_NAME" /> dahil may ganitong file na sa kasalukuyan.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Advanced</translation>
 <translation id="1984937141057606926">Pinapayagan, maliban ang third-party</translation>
 <translation id="1994173015038366702">URL ng site</translation>
+<translation id="2001120796168634316">I-save linked page para mamaya</translation>
 <translation id="200669432486043882">Magpalit ng file</translation>
 <translation id="2038563949887743358">I-on ang Hilingin ang site sa desktop</translation>
 <translation id="2073235970478114994">I-load ang mga larawan</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Pinuhin</translation>
 <translation id="2315043854645842844">Hindi sinusuportahan ng operating system ang pagpipilian ng certificate sa panig ng kliyente.</translation>
 <translation id="2316129865977710310">Hindi, salamat</translation>
-<translation id="2319528413610359757">Para sa mga mambabasa ng <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">I-drag ang slider hanggang sa mabasa mo ito nang kumportable. Dapat ay halos ganito kalaki ang text pagkatapos mag-double tap sa isang talata.</translation>
 <translation id="2329597144923131178">Mag-sign in upang makuha ang iyong mga bookmark, history, password at ibang mga setting sa lahat ng iyong device.</translation>
 <translation id="2343328333327081434">Ini-install…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">ngayon lang</translation>
 <translation id="2770465223704140727">Alisin sa listahan</translation>
 <translation id="278029852808208386">Walang nakitang mga bluetooth device. <ph name="BEGIN_LINK" />Muling maghanap<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Hindi mo ba nakikita ang iyong device? <ph name="BEGIN_LINK" />Humingi ng tulong<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Pindutin ang button na bumalik upang lumabas sa full screen.</translation>
 <translation id="2842985007712546952">Pangunahing folder</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Mga suhestyon para sa error sa pag-navigate</translation>
 <translation id="3732088672634061408">Hindi makuha ang mga interes.</translation>
 <translation id="3738139272394829648">Pindutin upang Hanapin</translation>
-<translation id="3774280986422214650">Kung ie-enable mo ang feature na ito, magiging bahagi ka ng isang eksperimento na nagpo-proxy ng mga HTTPS page sa pamamagitan ng mga server ng Google.</translation>
 <translation id="3809549525127675114">Tapos na ang “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="3828029223314399057">Bookmark sa paghahanap</translation>
 <translation id="3871171699884605801">Hindi maki-clear ang history ng pagba-browse sa mga account para sa mga bata</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">I-save ang link</translation>
 <translation id="4002066346123236978">Pamagat</translation>
 <translation id="4035611068038188272">Kasalukuyang gumagamit ang mga bookmark ng <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">May mga kalapit na page ng Pisikal na Web</translation>
 <translation id="4042870126885713738">Magpakita ng mga suhestyon kapag hindi ma-resolve ang isang website o kung hindi makakonekta</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Impormasyong legal</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Mga uri ng data</translation>
 <translation id="4827948050554950725">Magdagdag ng credit card</translation>
 <translation id="4836364883164334657">Hindi pribado ang iyong koneksyon sa site na ito. Maaaring subukan ng mga attacker na nakawin ang iyong impormasyon (halimbawa, mga larawan, password, mensahe at credit card) mula sa <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Magbasa nang higit pa</translation>
 <translation id="4850886885716139402">View</translation>
 <translation id="4875622588773761625">Gusto mo bang i-update ng <ph name="PASSWORD_MANAGER_BRAND" /> ang iyong password para sa site na ito?</translation>
 <translation id="4881695831933465202">Buksan</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Sumulong</translation>
 <translation id="4996978546172906250">Ibahagi gamit ang</translation>
 <translation id="5000922062037820727">Naka-block (inirerekomenda)</translation>
-<translation id="5014582685689328551">Gamitin ang Chrome para i-browse ang mga iyon</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Payagan</translation>
 <translation id="5040262127954254034">Privacy</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Maghanap sa naka-save na page</translation>
 <translation id="5313967007315987356">Magdagdag ng site</translation>
 <translation id="5317780077021120954">I-save</translation>
-<translation id="5323972449344932352">Ilunsad ang Chrome</translation>
 <translation id="5324858694974489420">Mga Setting para sa Magulang</translation>
 <translation id="5327248766486351172">Pangalan</translation>
 <translation id="5345040418939504969">Na-delete ang <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> natipid sa data</translation>
 <translation id="6165508094623778733">Matuto nang higit pa</translation>
 <translation id="6192792657125177640">Mga Pagbubukod</translation>
-<translation id="6208263165776660488">Nalipat na ang mga tab ng Chrome</translation>
 <translation id="6231464350722415003">Pahintulutan ang JavaScript sa mga website na iyong tinukoy habang naba-block ito sa iba pang bahagi ng web</translation>
 <translation id="6232535412751077445">Kapag na-enable mo ang “Huwag Subaybayan,” magsasama ng isang kahilingan sa trapiko ng iyong pagba-browse. Ang anumang magiging epekto ay dedepende sa pagtugon at pagbibigay-kahulugan ng website sa nabanggit na kahilingan.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589">Ginagamit ng <ph name="SEARCH_ENGINE_URL" /> ang iyong lokasyon upang magpakita ng mga lokal na resulta ng paghahanap</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Tulong<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Tanggalin ang bookmark</translation>
-<translation id="7324738665594301612">Sinusubukan namin ang pagpo-proxy ng mga HTTPS page sa pamamagitan ng mga server ng Google bilang bahagi ng isang eksperimento.</translation>
 <translation id="7346217184097589238">Hindi made-delete ang mga naka-save na setting ng site at maaari nitong ipakita ang iyong mga gawi sa pagba-browse.</translation>
-<translation id="7346909386216857016">Ok, nakuha ko</translation>
 <translation id="7347770551817603360">Offline na content</translation>
 <translation id="7363354739009474003">Nilo-load ang “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Nagka-cast sa <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Pisikal na Web</translation>
 <translation id="7596558890252710462">Operating system</translation>
 <translation id="7599840151813361502">Hindi ka masa-sign out sa iyong <ph name="BEGIN_LINK" />Mga Google Account<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Tingnan ang iyong mga tab sa iba pang mga kamakailang app sa screen na Pangkalahatang-ideya ng iyong telepono. Maaari mo itong mapamahalaan sa <ph name="BEGIN_LINK" />Mga Setting<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">I-pause</translation>
 <translation id="7612619742409846846">Naka-sign in sa Google bilang</translation>
 <translation id="7619072057915878432">Hindi na-download ang <ph name="FILE_NAME" /> dahil sa mga problema sa network.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">mula sa umpisa</translation>
 <translation id="8200772114523450471">Resume</translation>
 <translation id="8209050860603202033">Buksan ang larawan</translation>
+<translation id="8215250379351058554">Gustong kumonekta ng <ph name="SITE" /> sa:</translation>
 <translation id="8218346974737627104">Kumpirmahin ang pag-sign in</translation>
 <translation id="8218934717680664417">Makakapaghanap ka na ngayon sa isang pagpindot lang</translation>
 <translation id="8223946939421658889">I-clear ang data sa</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 6c1b4d2..22a9952 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Bonjour "<ph name="FULL_NAME" />"</translation>
 <translation id="1383876407941801731">Rechercher</translation>
 <translation id="1389974829397082527">Aucun favori ici</translation>
-<translation id="1390350022570422499">Chrome peut désormais rechercher et afficher des pages Web à proximité à l'aide du Bluetooth.
-
-Chrome recherche les pages à proximité lorsque l'appareil est déverrouillé. Ces pages sont analysées par un service Google pour améliorer la qualité des résultats.
-
-Vous pouvez contrôler le Web physique dans les paramètres de confidentialité de Chrome.</translation>
 <translation id="1404122904123200417">Intégration sur <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Interdire le suivi</translation>
 <translation id="1409879593029778104">Le téléchargement du fichier "<ph name="FILE_NAME" />" a été bloqué, car le fichier existe déjà.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Paramètres avancés</translation>
 <translation id="1984937141057606926">Autorisés, sauf cookies tiers</translation>
 <translation id="1994173015038366702">URL du site</translation>
+<translation id="2001120796168634316">Page liée à consulter plus tard</translation>
 <translation id="200669432486043882">Remplacer un fichier</translation>
 <translation id="2038563949887743358">Activer "Voir version ordinateur"</translation>
 <translation id="2073235970478114994">Charger les images</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Affiner</translation>
 <translation id="2315043854645842844">La sélection de certificat côté client n'est pas compatible avec le système d'exploitation.</translation>
 <translation id="2316129865977710310">Non merci</translation>
-<translation id="2319528413610359757">Pour les lecteurs de la publication "<ph name="PUBLISHER" />"</translation>
 <translation id="2321958826496381788">Faites glisser le curseur pour lire le texte aisément. Sa taille doit être similaire à celle-ci lorsque vous appuyez deux fois sur un paragraphe.</translation>
 <translation id="2329597144923131178">Connectez-vous pour synchroniser favoris, historique, mots de passe et autres sur vos appareils. </translation>
 <translation id="2343328333327081434">Installation…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">à l'instant</translation>
 <translation id="2770465223704140727">Retirer de la liste</translation>
 <translation id="278029852808208386">Aucun appareil Bluetooth trouvé. <ph name="BEGIN_LINK" />Relancez la recherche<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Votre appareil ne s'affiche pas ? <ph name="BEGIN_LINK" />Obtenir de l'aide<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Appuyez sur le bouton Retour pour quitter le mode plein écran.</translation>
 <translation id="2842985007712546952">Dossier parent</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Suggestions en cas d'erreur de navigation</translation>
 <translation id="3732088672634061408">Impossible de récupérer les centres d'intérêt.</translation>
 <translation id="3738139272394829648">Appuyer pour rechercher</translation>
-<translation id="3774280986422214650">Si vous activez cette fonctionnalité, vous participerez à une expérience qui consiste à envoyer par proxy des pages HTTPS via les serveurs Google.</translation>
 <translation id="3809549525127675114">Lecture de la vidéo "<ph name="VIDEO_TITLE" />" terminée.</translation>
 <translation id="3828029223314399057">Rechercher dans les favoris</translation>
 <translation id="3871171699884605801">L'historique de navigation des comptes pour enfants ne peut être effacé.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Enregistrer le lien</translation>
 <translation id="4002066346123236978">Titre</translation>
 <translation id="4035611068038188272">Les favoris occupent actuellement <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Pages Web physique à proximité</translation>
 <translation id="4042870126885713738">Afficher d'autres solutions lorsqu'une adresse Web ne peut pas être résolue ou qu'une connexion ne peut pas être établie</translation>
 <translation id="4056223980640387499">Sépia</translation>
 <translation id="4062305924942672200">Informations légales</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Types de données</translation>
 <translation id="4827948050554950725">Ajouter une carte de paiement</translation>
 <translation id="4836364883164334657">Votre connexion à ce site n'est pas en mode privé. Il se peut que des individus malveillants tentent de voler vos informations (photos, mots de passe, messages, numéros de carte de paiement, etc.) à partir de <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Lire la suite</translation>
 <translation id="4850886885716139402">Afficher</translation>
 <translation id="4875622588773761625">Voulez-vous que <ph name="PASSWORD_MANAGER_BRAND" /> modifie votre mot de passe pour ce site ?</translation>
 <translation id="4881695831933465202">Ouvrir</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avancer</translation>
 <translation id="4996978546172906250">Partager via</translation>
 <translation id="5000922062037820727">Bloquée (recommandé)</translation>
-<translation id="5014582685689328551">Utilisez Chrome pour les parcourir</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Autoriser</translation>
 <translation id="5040262127954254034">Confidentialité</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Rechercher sur pages enregistrées</translation>
 <translation id="5313967007315987356">Ajouter un site</translation>
 <translation id="5317780077021120954">Enregistrer</translation>
-<translation id="5323972449344932352">Lancer Chrome</translation>
 <translation id="5324858694974489420">Paramètres parentaux</translation>
 <translation id="5327248766486351172">Nom</translation>
 <translation id="5345040418939504969">Le favori "<ph name="BOOKMARK_TITLE" />" a été supprimé.</translation>
@@ -402,7 +393,6 @@
 <translation id="6159335304067198720">Économies de données de <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">En savoir plus</translation>
 <translation id="6192792657125177640">Exceptions</translation>
-<translation id="6208263165776660488">Les onglets de Chrome ont été déplacés</translation>
 <translation id="6231464350722415003">Autoriser le langage JavaScript sur les sites Web que vous spécifiez, tout en le bloquant pour le reste du Web</translation>
 <translation id="6232535412751077445">Si vous interdisez le suivi, une demande sera incluse dans le trafic lié à votre navigation. Les résultats obtenus dépendent de la réponse du site (s'il répond ou non) et de la manière dont il interprète la demande.
 
@@ -491,9 +481,7 @@
 <translation id="7244362611678346589">Le site <ph name="SEARCH_ENGINE_URL" /> utilise votre position pour afficher les résultats de recherche à proximité.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Aide<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Supprimer le favori</translation>
-<translation id="7324738665594301612">Dans le cadre d'une expérience, nous testons actuellement l'envoi par proxy de pages HTTPS via les serveurs Google.</translation>
 <translation id="7346217184097589238">Les paramètres de site enregistrés ne seront pas supprimés et peuvent donner des indications sur vos habitudes de navigation.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Contenu hors connexion</translation>
 <translation id="7363354739009474003">Chargement de la vidéo "<ph name="VIDEO_TITLE" />" en cours…</translation>
 <translation id="7366340029385295517">Diffusion sur "<ph name="SCREEN_NAME" />" en cours…</translation>
@@ -516,7 +504,6 @@
 <translation id="7588950540487816470">Web physique</translation>
 <translation id="7596558890252710462">Système d'exploitation</translation>
 <translation id="7599840151813361502">Vous ne serez pas déconnecté de vos <ph name="BEGIN_LINK" />comptes Google<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">Affichez vos onglets ainsi que d'autres applications récemment utilisées sur l'écran "Aperçu" de votre téléphone. Vous pouvez contrôler ce réglage dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Suspendu</translation>
 <translation id="7612619742409846846">Connecté à Google en tant que</translation>
 <translation id="7619072057915878432">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison de l'échec du réseau.</translation>
@@ -565,6 +552,7 @@
 <translation id="8173098127580644436">depuis le début</translation>
 <translation id="8200772114523450471">Reprendre</translation>
 <translation id="8209050860603202033">Ouvrir l'image</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> tente de se connecter au site suivant :</translation>
 <translation id="8218346974737627104">Confirmer la connexion</translation>
 <translation id="8218934717680664417">Vous pouvez maintenant effectuer des recherches d'une seule pression.</translation>
 <translation id="8223946939421658889">Effacer les 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 7585824..dff88d2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">नमस्‍ते, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">खोज</translation>
 <translation id="1389974829397082527">यहां कोई बुकमार्क नहीं है</translation>
-<translation id="1390350022570422499">Chrome अब ब्लूटूथ का उपयोग करके आपको आस-पास के वेब पृष्ठ ढूंढ़कर दिखा सकता है.
-
-आपका डिवाइस अनलॉक होने पर Chrome आस-पास के पृष्ठों के लिए स्कैन करेगा. पृष्ठ के परिणामों की गुणवत्ता बेहतर बनाने के लिए ये पृष्ठ एक Google सेवा से गुज़रेंगे.
-
-आप शारीरिक वेब को Chrome गोपनीयता सेटिंग में नियंत्रित कर सकते हैं.</translation>
 <translation id="1404122904123200417"><ph name="WEBSITE_URL" /> में एम्बेड किया गया है</translation>
 <translation id="1406000523432664303">“नज़र न रखें”</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> डाउनलोड को रोका गया क्‍योंकि फ़ाइल पहले से मौजूद है.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">उन्नत</translation>
 <translation id="1984937141057606926">तृतीय-पक्ष को छोड़कर अनुमति है</translation>
 <translation id="1994173015038366702">साइट URL</translation>
+<translation id="2001120796168634316">लिंक किया गया पृष्ठ बाद के लिए सहेजें</translation>
 <translation id="200669432486043882">फ़ाइल प्रतिस्‍थापित करें</translation>
 <translation id="2038563949887743358">अनुरोध डेस्कटॉप साइट चालू करें</translation>
 <translation id="2073235970478114994">चित्र लोड करें</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">परिशोधित करें</translation>
 <translation id="2315043854645842844">क्लाइंट-साइड प्रमाणपत्र चयन ऑपरेटिंग सिस्टम के द्वारा समर्थित नहीं है.</translation>
 <translation id="2316129865977710310">जी रहने दें</translation>
-<translation id="2319528413610359757"><ph name="PUBLISHER" /> के पाठकों के लिए</translation>
 <translation id="2321958826496381788">स्‍लाइडर को तब तक खींचें, जब तक कि आपको इसे पढ़ने में सुविधा न हो. पैराग्राफ़ पर डबल-टैप करने के बाद लेख को इतना बड़ा दिखाई देना चाहिए.</translation>
 <translation id="2329597144923131178">सभी डिवाइसों पर बुकमार्क, इतिहास, पासवर्ड और अन्‍य सेटिंग प्राप्‍त करने हेतु प्रवेश करें.</translation>
 <translation id="2343328333327081434">इंस्टॉल जारी...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">अभी-अभी</translation>
 <translation id="2770465223704140727">सूची से निकालें</translation>
 <translation id="278029852808208386">कोई ब्‍लूटूथ डिवाइस नहीं मिला. <ph name="BEGIN_LINK" />फिर से खोजें<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">आपका डिवाइस दिखाई नहीं दे रहा है? <ph name="BEGIN_LINK" />सहायता प्राप्त करें<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">पूर्ण स्क्रीन से बाहर निकलने के लिए वापस जाएं बटन स्पर्श करें.</translation>
 <translation id="2842985007712546952">मूल फ़ोल्‍डर</translation>
 <translation id="2870560284913253234">साइट</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">मार्गदर्शक त्रुटि सुझाव</translation>
 <translation id="3732088672634061408">रुचियां पुनर्प्राप्‍त नहीं की जा सकीं.</translation>
 <translation id="3738139272394829648">खोजने के लिए स्पर्श करें</translation>
-<translation id="3774280986422214650">यदि आप इस सुविधा को सक्षम करते हैं, तो आप ऐसे प्रयोग का भाग होंगे जो HTTPS पृष्‍ठों को Google सर्वरों के द्वारा प्रॉक्‍सी करता है.</translation>
 <translation id="3809549525127675114">“<ph name="VIDEO_TITLE" />” समाप्‍त</translation>
 <translation id="3828029223314399057">बुकमार्क खोजें</translation>
 <translation id="3871171699884605801">ब्राउज़िंग इतिहास को बच्‍चों के खातों से साफ़ नहीं किया जा सकता</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">लिंक सहेजें</translation>
 <translation id="4002066346123236978">शीर्षक</translation>
 <translation id="4035611068038188272">बुकमार्क वर्तमान में <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> का उपयोग कर रहे हैं.</translation>
-<translation id="403659016947612156">शारीरिक वेब पृष्ठ आस-पास हैं</translation>
 <translation id="4042870126885713738">किसी वेब पते का समाधान ना होने या कनेक्शन ना हो सकने पर सुझाव दिखाएं</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">वैधानिक जानकारी</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">डेटा प्रकार</translation>
 <translation id="4827948050554950725">क्रेडिट कार्ड जोड़ें</translation>
 <translation id="4836364883164334657">इस साइट से आपका कनेक्‍शन निजी नहीं है. हो सकता है कि हमलावर <ph name="DOMAIN_NAME" /> से आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) चुराने का प्रयास कर रहे हों.</translation>
-<translation id="4842511359652954519">अधिक पढ़ें</translation>
 <translation id="4850886885716139402">देखें</translation>
 <translation id="4875622588773761625">क्या आप चाहते हैं कि <ph name="PASSWORD_MANAGER_BRAND" /> इस साइट के लिए आपके पासवर्ड को अपडेट करे?</translation>
 <translation id="4881695831933465202">खोलें</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">आगे जाएं</translation>
 <translation id="4996978546172906250">इसके द्वारा साझा करें</translation>
 <translation id="5000922062037820727">अवरोधित (सुझाया गया)</translation>
-<translation id="5014582685689328551">उन्हें ब्राउज़ करने के लिए Chrome का उपयोग करें</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">अनुमति दें</translation>
 <translation id="5040262127954254034">गोपनीयता</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">सहेजे गए पृष्ठ खोजें</translation>
 <translation id="5313967007315987356">साइट जोड़ें</translation>
 <translation id="5317780077021120954">सहेजें</translation>
-<translation id="5323972449344932352">Chrome लॉन्च करें</translation>
 <translation id="5324858694974489420">अभिभावकीय सेटिंग</translation>
 <translation id="5327248766486351172">नाम</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> हटाया गया</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> डेटा बचत</translation>
 <translation id="6165508094623778733">अधिक जानें</translation>
 <translation id="6192792657125177640">अपवाद</translation>
-<translation id="6208263165776660488">Chrome टैब ले जाए गए हैं</translation>
 <translation id="6231464350722415003">JavaScript को शेष वेब पर अवरुद्ध करते हुए उसे निर्दिष्‍ट वेबसाइट पर अनुमति दें</translation>
 <translation id="6232535412751077445">“नज़र न रखें” सक्षम करने का अर्थ है कि आपके ब्राउज़िंग ट्रैफ़िक के साथ एक अनुरोध शामिल किया जाएगा. कोई भी प्रभाव इस बात पर निर्भर करता है कि वेबसाइट अनुरोध का प्रतिसाद देती है या नहीं और अनुरोध को किस तरह समझा जाता है.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />, स्थानीय खोज परिणाम दिखाने के लिए आपके स्थान का उपयोग करता है</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />सहायता<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">बुकमार्क हटाएं</translation>
-<translation id="7324738665594301612">हम किसी प्रयोग के भाग के रूप में Google सर्वरों के द्वारा HTTPS पृष्‍ठों को प्रॉक्‍सी करने का परीक्षण कर रहे हैं.</translation>
 <translation id="7346217184097589238">सहेजी गईं साइट सेटिंग हटाई नहीं जाएंगी और वे आपकी ब्राउज़िंग की आदतों को प्रदर्शित कर सकती हैं.</translation>
-<translation id="7346909386216857016">ठीक है, समझ लिया</translation>
 <translation id="7347770551817603360">ऑफ़लाइन सामग्री</translation>
 <translation id="7363354739009474003">“<ph name="VIDEO_TITLE" />” लोड हो रहा है</translation>
 <translation id="7366340029385295517"><ph name="SCREEN_NAME" /> पर कास्ट किया जा रहा है</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">वास्तविक वेब</translation>
 <translation id="7596558890252710462">ऑपरेटिंग सिस्टम</translation>
 <translation id="7599840151813361502">आप अपने <ph name="BEGIN_LINK" />Google खातों<ph name="END_LINK" /> से प्रस्‍थान नहीं करेंगे</translation>
-<translation id="7603403729818446828">अपने फ़ोन की अवलोकन स्‍क्रीन पर हाल ही के अन्‍य टैब के साथ अपने टैब देखें. आप इसे <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> में नियंत्रित कर सकते हैं.</translation>
 <translation id="7607002721634913082">रोका गया</translation>
 <translation id="7612619742409846846">Google में इस रूप में प्रवेश किया हुआ है</translation>
 <translation id="7619072057915878432">नेटवर्क विफलताओं के कारण <ph name="FILE_NAME" /> डाउनलोड विफल रहा.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">प्रारंभ समय</translation>
 <translation id="8200772114523450471">फिर से शुरू करें</translation>
 <translation id="8209050860603202033">चित्र खोलें</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> इसके साथ कनेक्ट करना चाहता है:</translation>
 <translation id="8218346974737627104">प्रवेश की दुबारा पूछें</translation>
 <translation id="8218934717680664417">अब आप एक स्पर्श से खोज कर सकते हैं</translation>
 <translation id="8223946939421658889">इस समय से डेटा साफ़ करें</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 b6641ae..10699d1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Pozdrav, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Traži</translation>
 <translation id="1389974829397082527">Nema nijedne oznake</translation>
-<translation id="1390350022570422499">Chrome sada može pronaći i prikazati web-stranice u blizini putem Bluetootha.
-
-Chrome će tražiti stranice u blizini kad je uređaj otključan. Googleova služba obradit će te stranice radi poboljšanja kvalitete rezultata stranica.
-
-Fizičkim webom možete upravljati u Chromeovim postavkama privatnosti.</translation>
 <translation id="1404122904123200417">Ugrađeno u <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Nemoj pratiti"</translation>
 <translation id="1409879593029778104">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo jer datoteka već postoji.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Napredno</translation>
 <translation id="1984937141057606926">Dopušteno, osim treće strane</translation>
 <translation id="1994173015038366702">URL web-lokacije</translation>
+<translation id="2001120796168634316">Spremi povezanu stranicu</translation>
 <translation id="200669432486043882">Zamijeni datoteku</translation>
 <translation id="2038563949887743358">Uključivanje zahtjeva za prikaz klasične web-lokacije</translation>
 <translation id="2073235970478114994">Učitaj slike</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Pročišćavanje</translation>
 <translation id="2315043854645842844">Operativni sustav ne podržava odabir klijentskog certifikata.</translation>
 <translation id="2316129865977710310">Ne, hvala</translation>
-<translation id="2319528413610359757">Za čitatelje izdavača <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Pomičite klizač dok ne budete mogli čitati ovaj tekst bez poteškoća. Tekst bi trebao biti barem ovoliko velik nakon što dvaput dodirnete odlomak.</translation>
 <translation id="2329597144923131178">Prijavite se da biste imali svoje oznake, povijest, zaporke i druge postavke na svim svojim uređajima.</translation>
 <translation id="2343328333327081434">Instaliranje…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">upravo sada</translation>
 <translation id="2770465223704140727">Ukloni s popisa</translation>
 <translation id="278029852808208386">Nije pronađen nijedan Bluetooth uređaj. <ph name="BEGIN_LINK" />Pretražite ponovo<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Ne vidite svoj uređaj? <ph name="BEGIN_LINK" />Potražite pomoć<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Dodirnite gumb Natrag da biste zatvorili prikaz na cijelom zaslonu.</translation>
 <translation id="2842985007712546952">Nadređena mapa</translation>
 <translation id="2870560284913253234">Web lokacija</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Prijedlozi pogreške kretanja</translation>
 <translation id="3732088672634061408">Interesi nisu dohvaćeni.</translation>
 <translation id="3738139272394829648">Dodirnite za pretraživanje</translation>
-<translation id="3774280986422214650">Ako omogućite tu značajku, bit ćete dio eksperimenta koji upotrebljava proxy za obradu HTTPS stranica putem Googleovih poslužitelja.</translation>
 <translation id="3809549525127675114">Videozapis "<ph name="VIDEO_TITLE" />" je završen</translation>
 <translation id="3828029223314399057">Pretraži oznake</translation>
 <translation id="3871171699884605801">Povijest pregledavanja ne može se ukloniti s računa za djecu</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Spremi vezu</translation>
 <translation id="4002066346123236978">Naslov</translation>
 <translation id="4035611068038188272">Oznake trenutačno zauzimaju <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">U blizini postoje stranice Fizičkog weba</translation>
 <translation id="4042870126885713738">Prikaži prijedloge kada se ne razriješi web-adresa ili nije moguće uspostaviti vezu</translation>
 <translation id="4056223980640387499">Sepija</translation>
 <translation id="4062305924942672200">Pravne informacije</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Vrste podataka</translation>
 <translation id="4827948050554950725">Dodaj kreditnu karticu</translation>
 <translation id="4836364883164334657">Vaša veza s tom web-lokacijom nije privatna. Napadači možda pokušavaju ukrasti vaše podatke (na primjer, fotografije, zaporke, poruke i brojeve kreditnih kartica) s <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Pročitajte više</translation>
 <translation id="4850886885716139402">Prikaz</translation>
 <translation id="4875622588773761625">Želite li da <ph name="PASSWORD_MANAGER_BRAND" /> ažurira vašu zaporku za tu web-lokaciju?</translation>
 <translation id="4881695831933465202">Otvori</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Idi naprijed</translation>
 <translation id="4996978546172906250">Dijeli putem</translation>
 <translation id="5000922062037820727">Blokirano (preporučeno)</translation>
-<translation id="5014582685689328551">Pregledavajte ih pomoću Chromea</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Dopusti</translation>
 <translation id="5040262127954254034">Privatnost</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Pretraži spremljene stranice</translation>
 <translation id="5313967007315987356">Dodaj web-lokaciju</translation>
 <translation id="5317780077021120954">Spremi</translation>
-<translation id="5323972449344932352">Pokreni Chrome</translation>
 <translation id="5324858694974489420">Postavke nadređenog računa</translation>
 <translation id="5327248766486351172">Naziv</translation>
 <translation id="5345040418939504969">Izbrisana je oznaka <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> manji podatkovni promet</translation>
 <translation id="6165508094623778733">Saznajte više</translation>
 <translation id="6192792657125177640">Iznimke</translation>
-<translation id="6208263165776660488">Chromeove su kartice premještene</translation>
 <translation id="6231464350722415003">Dopušta se JavaScript na web-lokacijama koje navedete, ali se blokira za ostatak weba</translation>
 <translation id="6232535412751077445">Omogućivanje opcije "Nemoj pratiti" znači da će se u promet pregledavanja uključiti zahtjev. Učinak ovisi o tome odgovara li web-lokacija na taj zahtjev i kako se zahtjev tumači.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> upotrebljava vašu lokaciju za prikazivanje lokalnih rezultata pretraživanja</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoć<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Izbriši oznaku</translation>
-<translation id="7324738665594301612">Testiramo upotrebu proxyja za obradu HTTPS stranica putem Googleovih poslužitelja u eksperimentu.</translation>
 <translation id="7346217184097589238">Spremljene postavke web-lokacija neće se izbrisati i mogu odražavati vaše navike tijekom pregledavanja.</translation>
-<translation id="7346909386216857016">Dobro, shvaćam</translation>
 <translation id="7347770551817603360">Offline sadržaj</translation>
 <translation id="7363354739009474003">Učitavanje videozapisa "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Emitiranje na uređaj <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fizički web</translation>
 <translation id="7596558890252710462">Operativni sustav</translation>
 <translation id="7599840151813361502">Nećete se odjaviti sa svojih <ph name="BEGIN_LINK" />Google računa<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Pregledajte svoje kartice s drugim nedavnim aplikacijama na zaslonu Pregled na telefonu. Time možete upravljati u <ph name="BEGIN_LINK" />Postavkama<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
 <translation id="7612619742409846846">Prijavljeni ste na Google kao</translation>
 <translation id="7619072057915878432">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo zbog kvarova na mreži.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">od početka</translation>
 <translation id="8200772114523450471">Nastavi</translation>
 <translation id="8209050860603202033">Otvori sliku</translation>
+<translation id="8215250379351058554">Web-lokacija <ph name="SITE" /> želi se povezati s uređajem:</translation>
 <translation id="8218346974737627104">Potvrda prijave</translation>
 <translation id="8218934717680664417">Sada možete pretraživati jednim dodirom</translation>
 <translation id="8223946939421658889">Izbriši podatke</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 f82cd3a..b3f384c2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Üdv, <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Keresés</translation>
 <translation id="1389974829397082527">Itt nincsenek könyvjelzők</translation>
-<translation id="1390350022570422499">A Chrome mostantól megkeresheti, illetve megjelenítheti Önnek a közeli weboldalakat Bluetooth segítségével.
-
-A Chrome megkeresi a közeli oldalakat, ha az eszköz lezárása fel van oldva. Ezek az oldalak egy Google-szolgáltatáson keresztül érkeznek, hogy javuljon a találatok minősége.
-
-A Fizikai webet a Chrome adatvédelmi beállításaiban kezelheti.</translation>
 <translation id="1404122904123200417">Beágyazva itt: <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Nincs nyomon követés”</translation>
 <translation id="1409879593029778104">A következő fájl letöltését a böngésző megakadályozta, mert a fájl már létezik: <ph name="FILE_NAME" />.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Speciális</translation>
 <translation id="1984937141057606926">Engedélyezve, kivéve a harmadik felektől származó cookie-kat</translation>
 <translation id="1994173015038366702">Webhely URL-je</translation>
+<translation id="2001120796168634316">Linkelt oldal mentése későbbre</translation>
 <translation id="200669432486043882">Fájl cseréje</translation>
 <translation id="2038563949887743358">Kapcsolja be az Asztali webhely kérése funkciót</translation>
 <translation id="2073235970478114994">Képek betöltése</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Pontosítás</translation>
 <translation id="2315043854645842844">Az ügyféloldali tanúsítványválasztást az operációs rendszer nem támogatja.</translation>
 <translation id="2316129865977710310">Köszönöm, nem</translation>
-<translation id="2319528413610359757">A(z) <ph name="PUBLISHER" /> olvasóinak</translation>
 <translation id="2321958826496381788">Húzza a csúszkát, amíg kényelmesen nem tudja olvasni a szöveget; legalább ekkorának kell lennie, miután duplán koppint a bekezdésre.</translation>
 <translation id="2329597144923131178">Jelentkezzen be, hogy könyvjelzőit, előzményeit, jelszavait és más beállításait az összes eszközén elérje.</translation>
 <translation id="2343328333327081434">Telepítés…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">éppen most</translation>
 <translation id="2770465223704140727">Eltávolítás a listából</translation>
 <translation id="278029852808208386">Nem találhatók Bluetooth-eszközök. <ph name="BEGIN_LINK" />Újbóli keresés<ph name="END_LINK" /></translation>
+<translation id="2811892995384186721">Nem látja eszközét? <ph name="BEGIN_LINK" />Kérjen segítséget<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">A teljes képernyős megjelenítésből való kilépéshez koppintson a vissza gombra.</translation>
 <translation id="2842985007712546952">Szülőmappa</translation>
 <translation id="2870560284913253234">Webhely</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Navigálási hibákkal kapcsolatos javaslatok</translation>
 <translation id="3732088672634061408">Nem sikerült lekérni az érdeklődési köröket.</translation>
 <translation id="3738139272394829648">Érintéssel keresés</translation>
-<translation id="3774280986422214650">Ha engedélyezi ezt a funkciót, részese lesz annak a kísérletnek, amelynek során a HTTPS-t használó oldalakat a Google szerverein keresztül érheti el.</translation>
 <translation id="3809549525127675114">A(z) „<ph name="VIDEO_TITLE" />” lejátszása befejeződött</translation>
 <translation id="3828029223314399057">Könyvjelzők keresése</translation>
 <translation id="3871171699884605801">A böngészési előzmények nem törölhetők a gyerekeknek szóló fiókok esetében</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Link mentése</translation>
 <translation id="4002066346123236978">Cím</translation>
 <translation id="4035611068038188272">A könyvjelzők jelenleg ennyi tárhelyet foglalnak el: <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">A Fizikai web oldalai találhatók a közelben</translation>
 <translation id="4042870126885713738">Javaslatok megjelenítése, ha egy internetcímet nem lehet feloldani, vagy nem lehet kapcsolódni</translation>
 <translation id="4056223980640387499">Szépia</translation>
 <translation id="4062305924942672200">Jogi információk</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Adattípusok</translation>
 <translation id="4827948050554950725">Hitelkártya hozzáadása</translation>
 <translation id="4836364883164334657">Kapcsolódása ehhez a webhelyhez nem privát. Előfordulhat, hogy támadók megpróbálják ellopni az Ön adatait (például fotóit, jelszavait, üzeneteit és bankkártyaadatait) a(z) <ph name="DOMAIN_NAME" /> webhelyről.</translation>
-<translation id="4842511359652954519">További információ</translation>
 <translation id="4850886885716139402">Nézet</translation>
 <translation id="4875622588773761625">Szeretné, hogy a(z) <ph name="PASSWORD_MANAGER_BRAND" /> frissítse jelszavát ezen a webhelyen?</translation>
 <translation id="4881695831933465202">Megnyitás</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Előrelépés</translation>
 <translation id="4996978546172906250">Megosztás itt:</translation>
 <translation id="5000922062037820727">Letiltva (ajánlott)</translation>
-<translation id="5014582685689328551">A Chrome használata az URL-ek böngészéséhez</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Engedélyezés</translation>
 <translation id="5040262127954254034">Adatvédelem</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Keresés a mentett oldalak között</translation>
 <translation id="5313967007315987356">Webhely hozzáadása</translation>
 <translation id="5317780077021120954">Mentés</translation>
-<translation id="5323972449344932352">A Chrome indítása</translation>
 <translation id="5324858694974489420">Szülői beállítások</translation>
 <translation id="5327248766486351172">Név</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> törölve</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" />-os adatmegtakarítás</translation>
 <translation id="6165508094623778733">További információ</translation>
 <translation id="6192792657125177640">Kivételek</translation>
-<translation id="6208263165776660488">A Chrome-lapok elköltöztek</translation>
 <translation id="6231464350722415003">JavaScript engedélyezése az Ön által megadott webhelyeken, míg az internet egyéb helyein annak letiltása</translation>
 <translation id="6232535412751077445">A „Nincs nyomon követés” engedélyezése azt jelenti, hogy a böngészési forgalommal együtt kérelmet is küld a rendszer. Ennek hatása attól függ, hogy a webhely reagál-e a kérelemre, és hogyan értelmezi azt.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589">A(z) <ph name="SEARCH_ENGINE_URL" /> az Ön tartózkodási helye alapján jelenít meg helyi keresési eredményeket</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Súgó<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Könyvjelző törlése</translation>
-<translation id="7324738665594301612">Jelenlegi kísérletünkben azt teszteljük, hogy a HTTPS-t használó oldalak a Google szerverein át legyenek elérhetők.</translation>
 <translation id="7346217184097589238">A mentett webhelybeállítások nem törlődnek, és tájékozódási alapul szolgálhatnak böngészési szokásait illetően.</translation>
-<translation id="7346909386216857016">Rendben, értem</translation>
 <translation id="7347770551817603360">Offline tartalom</translation>
 <translation id="7363354739009474003">A(z) „<ph name="VIDEO_TITLE" />” betöltése</translation>
 <translation id="7366340029385295517">Átküldés a következőre: <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fizikai web</translation>
 <translation id="7596558890252710462">Operációs rendszer</translation>
 <translation id="7599840151813361502">A böngésző nem fogja kijelentkeztetni <ph name="BEGIN_LINK" />Google-fiókjaiból<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Telefonja Áttekintés képernyőjén a lapokat láthatja a legutóbbi alkalmazásokkal együtt. Ezt a <ph name="BEGIN_LINK" />Beállítások<ph name="END_LINK" /> között módosíthatja.</translation>
 <translation id="7607002721634913082">Szünet</translation>
 <translation id="7612619742409846846">Bejelentkezve a Google rendszerébe mint</translation>
 <translation id="7619072057915878432">A következő fájl letöltése hálózati hibák miatt nem sikerült: <ph name="FILE_NAME" />.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">a kezdetektől</translation>
 <translation id="8200772114523450471">Folytatás</translation>
 <translation id="8209050860603202033">Kép megnyitása</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> szeretne csatlakozni a következőhöz:</translation>
 <translation id="8218346974737627104">Bejelentkezés megerősítése</translation>
 <translation id="8218934717680664417">Mostantól egyetlen érintéssel kereshet</translation>
 <translation id="8223946939421658889">Adatok törlése:</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 f5a2f75..80f68a4 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hai, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Telusuri</translation>
 <translation id="1389974829397082527">Tidak ada bookmark di sini</translation>
-<translation id="1390350022570422499">Kini, Chrome dapat menemukan dan menampilkan laman web di sekitar menggunakan Bluetooth.
-
-Chrome akan memindai laman di sekitar saat perangkat Anda dibuka kuncinya. Laman ini akan melalui layanan Google untuk meningkatkan kualitas hasil laman.
-
-Anda dapat mengontrol Web Fisik dalam setelan privasi Chrome.</translation>
 <translation id="1404122904123200417">Tersemat dalam <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Jangan Lacak”</translation>
 <translation id="1409879593029778104">Unduhan <ph name="FILE_NAME" /> dicegah karena file sudah ada.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Lanjutan</translation>
 <translation id="1984937141057606926">Diizinkan, kecuali pihak ketiga</translation>
 <translation id="1994173015038366702">URL situs</translation>
+<translation id="2001120796168634316">Simpan laman tersimpan untuk nanti</translation>
 <translation id="200669432486043882">Ganti file</translation>
 <translation id="2038563949887743358">Aktifkan Minta situs desktop</translation>
 <translation id="2073235970478114994">Muat gambar</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Saring</translation>
 <translation id="2315043854645842844">Pilihan sertifikat sisi klien tidak didukung oleh sistem operasi.</translation>
 <translation id="2316129865977710310">Lain kali</translation>
-<translation id="2319528413610359757">Untuk pembaca <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Seret penggeser sampai Anda dapat membacanya dengan nyaman. Teks harus terlihat setidaknya sebesar ini setelah paragraf diketuk dua kali.</translation>
 <translation id="2329597144923131178">Masuk untuk mendapatkan bookmark, riwayat, sandi, dan setelan Anda lainnya di semua perangkat.</translation>
 <translation id="2343328333327081434">Memasang...</translation>
@@ -136,7 +131,8 @@
 <translation id="2762000892062317888">baru saja</translation>
 <translation id="2770465223704140727">Hapus dari daftar</translation>
 <translation id="278029852808208386">Tidak ditemukan perangkat bluetooth. <ph name="BEGIN_LINK" />Telusuri lagi<ph name="END_LINK" />.</translation>
-<translation id="2836148919159985482">Sentuh tombol kembali untuk keluar dari mode layar penuh.</translation>
+<translation id="2811892995384186721">Tidak melihat perangkat Anda? <ph name="BEGIN_LINK" />Dapatkan bantuan<ph name="END_LINK" /></translation>
+<translation id="2836148919159985482">Ketuk tombol kembali untuk keluar dari mode layar penuh.</translation>
 <translation id="2842985007712546952">Folder induk</translation>
 <translation id="2870560284913253234">Situs</translation>
 <translation id="2888126860611144412">Tentang Chrome</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Saran kesalahan navigasi</translation>
 <translation id="3732088672634061408">Tidak dapat mengambil minat.</translation>
 <translation id="3738139272394829648">Sentuh untuk Menelusuri</translation>
-<translation id="3774280986422214650">Jika mengaktifkan fitur ini, Anda akan menjadi bagian dari percobaan yang memberikan proxy pada laman HTTPS melalui server Google.</translation>
 <translation id="3809549525127675114">“<ph name="VIDEO_TITLE" />” selesai</translation>
 <translation id="3828029223314399057">Cari bookmark</translation>
 <translation id="3871171699884605801">Riwayat penjelajahan tidak dapat dihapus melalui akun anak</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Simpan tautan</translation>
 <translation id="4002066346123236978">Judul</translation>
 <translation id="4035611068038188272">Bookmark saat ini menggunakan <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Laman Web Fisik ada di sekitar</translation>
 <translation id="4042870126885713738">Tampilkan saran saat alamat web tidak dapat diselesaikan atau sambungan tidak dapat dibuat</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Informasi hukum</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Jenis data</translation>
 <translation id="4827948050554950725">Tambahkan kartu kredit</translation>
 <translation id="4836364883164334657">Koneksi Anda ke situs ini tidak bersifat pribadi. Penyerang mungkin mencoba mencuri informasi Anda (misalnya foto, sandi, pesan, dan kartu kredit) dari <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Baca selengkapnya</translation>
 <translation id="4850886885716139402">Lihat</translation>
 <translation id="4875622588773761625">Apakah Anda ingin <ph name="PASSWORD_MANAGER_BRAND" /> memperbarui sandi untuk situs ini?</translation>
 <translation id="4881695831933465202">Buka</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Maju</translation>
 <translation id="4996978546172906250">Bagikan melalui</translation>
 <translation id="5000922062037820727">Diblokir (disarankan)</translation>
-<translation id="5014582685689328551">Gunakan Chrome untuk menjelajahinya</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Izinkan</translation>
 <translation id="5040262127954254034">Privasi</translation>
@@ -313,7 +305,7 @@
 <translation id="5233638681132016545">Tab baru</translation>
 <translation id="5271967389191913893">Perangkat tidak dapat membuka konten untuk diunduh.</translation>
 <translation id="5275558766013849309">Tab akan ditampilkan bersama aplikasi terkini.</translation>
-<translation id="528192093759286357">Seret dari atas dan sentuh tombol kembali untuk keluar dari mode layar penuh.</translation>
+<translation id="528192093759286357">Seret dari atas dan ketuk tombol kembali untuk keluar dari mode layar penuh.</translation>
 <translation id="5284584623296338184">Perubahan pada bookmark, riwayat, sandi, dan setelan lainnya tidak akan disinkronkan lagi dengan Akun Google Anda. Namun, data yang sudah ada akan tetap disimpan di akun Google Anda.</translation>
 <translation id="5301954838959518834">Oke, mengerti</translation>
 <translation id="5302048478445481009">Bahasa</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Telusuri laman tersimpan</translation>
 <translation id="5313967007315987356">Tambahkan situs</translation>
 <translation id="5317780077021120954">Simpan</translation>
-<translation id="5323972449344932352">Luncurkan Chrome</translation>
 <translation id="5324858694974489420">Setelan Orang Tua</translation>
 <translation id="5327248766486351172">Nama</translation>
 <translation id="5345040418939504969">Menghapus <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Penghematan data <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Pelajari lebih lanjut</translation>
 <translation id="6192792657125177640">Pengecualian</translation>
-<translation id="6208263165776660488">Tab Chrome telah dipindahkan</translation>
 <translation id="6231464350722415003">Mengizinkan JavaScript di situs web yang Anda tentukan dan memblokirnya untuk web lainnya</translation>
 <translation id="6232535412751077445">Jika ‘Jangan Lacak’ diaktifkan, permintaan akan disertakan dengan lalu lintas penjelajahan Anda. Dampak apa pun yang muncul bergantung pada apakah situs web menanggapi permintaan, dan bagaimana permintaan diinterpretasikan.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> menggunakan lokasi Anda untuk menampilkan hasil penelusuran lokal</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Bantuan<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Hapus bookmark</translation>
-<translation id="7324738665594301612">Kami menguji pemberian proxy pada laman HTTPS melalui server Google sebagai bagian dari percobaan.</translation>
 <translation id="7346217184097589238">Setelan situs yang tersimpan tidak akan dihapus dan dapat menunjukkan kebiasaan penjelajahan Anda.</translation>
-<translation id="7346909386216857016">Oke, mengerti</translation>
 <translation id="7347770551817603360">Konten offline</translation>
 <translation id="7363354739009474003">Memuat “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Mentransmisikan ke <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Web Fisik</translation>
 <translation id="7596558890252710462">Sistem operasi</translation>
 <translation id="7599840151813361502">Anda tidak akan dikeluarkan dari <ph name="BEGIN_LINK" />Akun Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Lihat tab dengan aplikasi terbaru lainnya di layar Ringkasan ponsel. Anda dapat mengontrolnya di <ph name="BEGIN_LINK" />Setelan<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Dijeda</translation>
 <translation id="7612619742409846846">Masuk ke Google sebagai</translation>
 <translation id="7619072057915878432">Unduhan <ph name="FILE_NAME" /> gagal karena kesalahan jaringan.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">awal waktu</translation>
 <translation id="8200772114523450471">Lanjutkan</translation>
 <translation id="8209050860603202033">Buka gambar</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> ingin terhubung ke:</translation>
 <translation id="8218346974737627104">Konfirmasi proses masuk</translation>
 <translation id="8218934717680664417">KIni Anda dapat menelusuri dengan satu sentuhan</translation>
 <translation id="8223946939421658889">Hapus data mulai</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 0ba8634..035c19b 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Ciao <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Cerca</translation>
 <translation id="1389974829397082527">Nessun Preferito qui</translation>
-<translation id="1390350022570422499">Chrome è ora in grado di trovare e mostrarti pagine web nelle vicinanze tramite Bluetooth.
-
-Chrome cerca pagine nelle vicinanze quando il dispositivo è sbloccato. Tali pagine passeranno attraverso un servizio di Google per migliorare la qualità dei risultati.
-
-Puoi gestire il Physical Web nelle impostazioni sulla privacy di Chrome.</translation>
 <translation id="1404122904123200417">Incorporato in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Non tenere traccia"</translation>
 <translation id="1409879593029778104">Download di <ph name="FILE_NAME" /> impedito perché il file esiste già.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avanzate</translation>
 <translation id="1984937141057606926">Consentiti, tranne i cookie di terze parti</translation>
 <translation id="1994173015038366702">URL sito</translation>
+<translation id="2001120796168634316">Salva pagina collegata per dopo</translation>
 <translation id="200669432486043882">Sostituisci file</translation>
 <translation id="2038563949887743358">Attiva Richiedi sito desktop</translation>
 <translation id="2073235970478114994">Carica immagini</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Perfeziona</translation>
 <translation id="2315043854645842844">La selezione del certificato lato client non è supportata dal sistema operativo.</translation>
 <translation id="2316129865977710310">No, grazie</translation>
-<translation id="2319528413610359757">Per i lettori di: <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Trascina il cursore finché leggi il testo senza problemi. Il testo dovrebbe avere queste dimensioni minime quando tocchi due volte un paragrafo.</translation>
 <translation id="2329597144923131178">Accedi per visualizzare i tuoi Preferiti, la cronologia, le password e altre impostazioni su tutti i tuoi dispositivi.</translation>
 <translation id="2343328333327081434">Installazione…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">in questo istante</translation>
 <translation id="2770465223704140727">Rimuovi dall'elenco</translation>
 <translation id="278029852808208386">Nessun dispositivo Bluetooth trovato. <ph name="BEGIN_LINK" />Esegui di nuovo la ricerca<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Non trovi il tuo dispositivo? <ph name="BEGIN_LINK" />Ricevi assistenza<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">Tocca il pulsante Indietro per uscire dalla modalità a schermo intero.</translation>
 <translation id="2842985007712546952">Cartella principale</translation>
 <translation id="2870560284913253234">Sito</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Suggerimenti per gli errori di navigazione</translation>
 <translation id="3732088672634061408">Impossibile recuperare gli interessi.</translation>
 <translation id="3738139272394829648">Tocca per cercare</translation>
-<translation id="3774280986422214650">Se attivi questa funzione, parteciperai a un esperimento che esegue il proxy delle pagine HTTPS tramite i server di Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" terminato</translation>
 <translation id="3828029223314399057">Cerca tra i Preferiti</translation>
 <translation id="3871171699884605801">Impossibile cancellare la cronologia di navigazione con account di minori</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Salva link</translation>
 <translation id="4002066346123236978">Titolo</translation>
 <translation id="4035611068038188272">Attualmente i preferiti occupano <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Pagine Physical Web nelle vicinanze</translation>
 <translation id="4042870126885713738">Mostra suggerimenti quando un indirizzo web non viene risolto o non è possibile stabilire una connessione</translation>
 <translation id="4056223980640387499">Seppia</translation>
 <translation id="4062305924942672200">Informazioni legali</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipi di dati</translation>
 <translation id="4827948050554950725">Aggiungi carta di credito</translation>
 <translation id="4836364883164334657">La tua connessione a questo sito non è privata. I malintenzionati potrebbero provare a impossessarsi dei tuoi dati da <ph name="DOMAIN_NAME" /> (ad esempio, foto, password, messaggi e carte di credito).</translation>
-<translation id="4842511359652954519">Ulteriori informazioni</translation>
 <translation id="4850886885716139402">Visualizza</translation>
 <translation id="4875622588773761625">Vuoi che <ph name="PASSWORD_MANAGER_BRAND" /> aggiorni la password di questo sito?</translation>
 <translation id="4881695831933465202">Apri</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avanti</translation>
 <translation id="4996978546172906250">Condividi tramite</translation>
 <translation id="5000922062037820727">Bloccata (opzione consigliata)</translation>
-<translation id="5014582685689328551">Visitali con Chrome</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Consenti</translation>
 <translation id="5040262127954254034">Privacy</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Cerca nelle pagine salvate</translation>
 <translation id="5313967007315987356">Aggiungi sito</translation>
 <translation id="5317780077021120954">Salva</translation>
-<translation id="5323972449344932352">Avvia Chrome</translation>
 <translation id="5324858694974489420">Impostazioni controllo genitori</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> eliminato</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Riduzioni dei dati: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Ulteriori informazioni</translation>
 <translation id="6192792657125177640">Eccezioni</translation>
-<translation id="6208263165776660488">Le schede di Chrome sono state spostate</translation>
 <translation id="6231464350722415003">Consenti JavaScript sui siti web da te specificati e bloccalo per tutti gli altri siti web</translation>
 <translation id="6232535412751077445">Se attivi l'opzione "Non tenere traccia", verrà inclusa una richiesta nel tuo traffico di navigazione. Gli effetti dipendono dall'eventuale risposta dei siti web alla richiesta e dall'interpretazione di quest'ultima.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utilizza la tua posizione per mostrare i risultati della ricerca locale.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Guida<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Elimina preferito</translation>
-<translation id="7324738665594301612">Stiamo testando il proxy delle pagine HTTPS tramite i server di Google nell'ambito di un esperimento.</translation>
 <translation id="7346217184097589238">Le impostazioni del sito salvate non verranno eliminate e potrebbero rispecchiare le tue abitudini di navigazione.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Contenuto offline</translation>
 <translation id="7363354739009474003">Caricamento di "<ph name="VIDEO_TITLE" />" in corso</translation>
 <translation id="7366340029385295517">Trasmissione su <ph name="SCREEN_NAME" /> in corso</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Physical Web</translation>
 <translation id="7596558890252710462">Sistema operativo</translation>
 <translation id="7599840151813361502">Non uscirai dai tuoi <ph name="BEGIN_LINK" />account Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Visualizza le tue schede con altre app recenti nella schermata Panoramica del telefono. Puoi controllare questa opzione nelle <ph name="BEGIN_LINK" />Impostazioni<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">In pausa</translation>
 <translation id="7612619742409846846">Accesso effettuato a Google come</translation>
 <translation id="7619072057915878432">Download di <ph name="FILE_NAME" /> non riuscito a causa di errori di rete.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">tutto</translation>
 <translation id="8200772114523450471">Riprendi</translation>
 <translation id="8209050860603202033">Apri immagine</translation>
+<translation id="8215250379351058554">Il sito <ph name="SITE" /> vuole collegarsi a:</translation>
 <translation id="8218346974737627104">Conferma accesso</translation>
 <translation id="8218934717680664417">Ora è sufficiente un solo tocco per cercare</translation>
 <translation id="8223946939421658889">Cancella dati a partire da:</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 1fb1a9a..8e8aa1f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">שלום <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">חפש</translation>
 <translation id="1389974829397082527">אין כאן סימניות</translation>
-<translation id="1390350022570422499">‏נוספה האפשרות ש-Chrome ימצא דפי אינטרנט בקרבת מקום ויציג אותם באמצעות Bluetooth.
-
-Chrome יחפש דפים בקרבת מקום כשהמכשיר אינו נעול. דפים אלה יעברו דרך שירות Google כדי לשפר את איכות התוצאות.
-
-ניתן לשלוט באינטרנט הווירטופיזי בהגדרות הפרטיות של Chrome.</translation>
 <translation id="1404122904123200417">מוטבע ב-<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">'ללא מעקב'</translation>
 <translation id="1409879593029778104">הורדת <ph name="FILE_NAME" /> נמנעה מכיוון שהקובץ כבר קיים.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">מתקדם</translation>
 <translation id="1984937141057606926">מותר, מלבד צד שלישי</translation>
 <translation id="1994173015038366702">כתובת אתר</translation>
+<translation id="2001120796168634316">שמור דף מקושר למועד מאוחר יותר</translation>
 <translation id="200669432486043882">החלף קובץ</translation>
 <translation id="2038563949887743358">הפעל את 'בקש אתר עבור מחשב שולחני'</translation>
 <translation id="2073235970478114994">טען תמונות</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">צמצם</translation>
 <translation id="2315043854645842844">מערכת ההפעלה אינה תומכת בבחירת אישור בצד הלקוח.</translation>
 <translation id="2316129865977710310">לא, תודה</translation>
-<translation id="2319528413610359757">לקוראים של <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">גרור את המחוון עד שתוכל לקרוא את הקטע הזה בצורה נוחה. לאחר שתקיש פעמיים על פיסקה, הטקסט אמור להיות מוצג בגודל הזה לפחות.</translation>
 <translation id="2329597144923131178">היכנס כדי לקבל גישה אל הסימניות, ההיסטוריה, הסיסמאות והגדרות נוספות בכל המכשירים שברשותך.</translation>
 <translation id="2343328333327081434">מתקין...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">ברגע זה</translation>
 <translation id="2770465223704140727">הסר מהרשימה</translation>
 <translation id="278029852808208386">‏לא נמצאו מכשירי Bluetooth. <ph name="BEGIN_LINK" />חפש שוב<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">אינך רואה את המכשיר? <ph name="BEGIN_LINK" />קבל עזרה<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">כדי לצאת ממסך מלא, גע בלחצן 'הקודם'.</translation>
 <translation id="2842985007712546952">תיקיית אב</translation>
 <translation id="2870560284913253234">אתר</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">הצעות לשגיאת ניווט</translation>
 <translation id="3732088672634061408">לא ניתן היה לאחזר את תחומי העניין.</translation>
 <translation id="3738139272394829648">גע כדי לחפש</translation>
-<translation id="3774280986422214650">‏אם תפעיל את התכונה הזו, תצטרף לניסוי המעביר דפי HTTPS דרך שרתי proxy של Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" הסתיים</translation>
 <translation id="3828029223314399057">חפש סימניות</translation>
 <translation id="3871171699884605801">לא ניתן למחוק את היסטוריית הגלישה בחשבונות של ילדים</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">שמור את הקישור</translation>
 <translation id="4002066346123236978">כותרת</translation>
 <translation id="4035611068038188272">הסימניות תופסות כרגע <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /></translation>
-<translation id="403659016947612156">דפים של האינטרנט הווירטופיזי בקרבת מקום</translation>
 <translation id="4042870126885713738">הצג הצעות כאשר כתובת אינטרנט אינה מזוהה או כשלא ניתן ליצור חיבור</translation>
 <translation id="4056223980640387499">חום-ספיה</translation>
 <translation id="4062305924942672200">מידע משפטי</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">סוגי נתונים</translation>
 <translation id="4827948050554950725">הוסף כרטיס אשראי</translation>
 <translation id="4836364883164334657">החיבור אל האתר הזה אינו פרטי. ייתכן שתוקפים מנסים לגנוב את המידע שלך (לדוגמה: תמונות, סיסמאות, הודעות וכרטיסי אשראי) מ-<ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">קרא עוד</translation>
 <translation id="4850886885716139402">הצג</translation>
 <translation id="4875622588773761625">האם תרצה ש-<ph name="PASSWORD_MANAGER_BRAND" /> יעדכן את הסיסמה שלך בשביל האתר הזה?</translation>
 <translation id="4881695831933465202">פתח</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">המשך קדימה</translation>
 <translation id="4996978546172906250">שתף באמצעות</translation>
 <translation id="5000922062037820727">חסומה (מומלץ)</translation>
-<translation id="5014582685689328551">‏השתמש ב-Chrome כדי לגלוש בהם</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">אפשר</translation>
 <translation id="5040262127954254034">פרטיות</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">חפש בדפים שנשמרו</translation>
 <translation id="5313967007315987356">הוסף אתר</translation>
 <translation id="5317780077021120954">שמור</translation>
-<translation id="5323972449344932352">‏הפעל את Chrome</translation>
 <translation id="5324858694974489420">הגדרות הורים</translation>
 <translation id="5327248766486351172">שם</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> נמחק</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">חיסכון בצריכת נתונים בשיעור של <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">למידע נוסף</translation>
 <translation id="6192792657125177640">יוצאי דופן</translation>
-<translation id="6208263165776660488">‏כרטיסיות Chrome עברו למקום אחר</translation>
 <translation id="6231464350722415003">‏התר JavaScript באתרים שתציין, תוך חסימה של JavaScript בכל שאר האתרים</translation>
 <translation id="6232535412751077445">אם תפעיל את התכונה 'אל תעקוב', בקשה זו תיכלל בתנועת הגלישה שלך. השפעת הבקשה תלויה באופן הפעולה של כל אתר - אם הוא מגיב לבקשה או לא, וכיצד הוא מפרש אותה.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> משתמש במיקום שלך כדי להציג תוצאות חיפוש מקומיות</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />עזרה<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">מחק סימניה</translation>
-<translation id="7324738665594301612">‏אנו בודקים את ההעברה של דפי HTTPS בשרתי proxy של Google כחלק מניסוי.</translation>
 <translation id="7346217184097589238">הגדרות אתרים ששמרת לא יימחקו והן עשויות לשקף את הרגלי הגלישה שלך.</translation>
-<translation id="7346909386216857016">בסדר, הבנתי</translation>
 <translation id="7347770551817603360">תוכן לא מקוון</translation>
 <translation id="7363354739009474003">טוען את "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">מעביר אל <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">האינטרנט הווירטופיזי</translation>
 <translation id="7596558890252710462">מערכת הפעלה</translation>
 <translation id="7599840151813361502">‏לא תתבצע יציאה מ<ph name="BEGIN_LINK" />חשבונות Google<ph name="END_LINK" /> שלך</translation>
-<translation id="7603403729818446828">במסך הסקירה של הטלפון מוצגות הכרטיסיות יחד עם האפליקציות האחרונות האחרות שבהן השתמשת. ניתן לשלוט בהגדרה הזו דרך <ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">מושהה</translation>
 <translation id="7612619742409846846">‏מחובר ל-Google בשם</translation>
 <translation id="7619072057915878432">הורדת <ph name="FILE_NAME" /> נכשלה עקב כשלים ברשת.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">משחר ההיסטוריה</translation>
 <translation id="8200772114523450471">חדש</translation>
 <translation id="8209050860603202033">פתח את התמונה</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> רוצה להתחבר אל:</translation>
 <translation id="8218346974737627104">אשר את הכניסה</translation>
 <translation id="8218934717680664417">עכשיו אפשר לחפש בנגיעה אחת</translation>
 <translation id="8223946939421658889">נקה נתונים</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 b4b1f8c..d8b4a99 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">こんにちは、<ph name="FULL_NAME" /> さん</translation>
 <translation id="1383876407941801731">検索</translation>
 <translation id="1389974829397082527">ブックマークはありません</translation>
-<translation id="1390350022570422499">Chrome で、Bluetooth を介して近くのウェブページを検出し表示できるようになりました。
-
-端末のロックが解除されている場合、Chrome では近くのページがスキャンされます。スキャンされたページは Google サービスに送られ、ページ結果の品質向上に使用されます。
-
-Chrome のプライバシー設定でフィジカル ウェブを管理できます。</translation>
 <translation id="1404122904123200417">埋め込み先: <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">「トラッキング拒否」</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> は既に存在しているためダウンロードできませんでした。</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">詳細設定</translation>
 <translation id="1984937141057606926">サードパーティを除いて許可する</translation>
 <translation id="1994173015038366702">サイトの URL</translation>
+<translation id="2001120796168634316">リンク先のページを保存しておく</translation>
 <translation id="200669432486043882">ファイルを交換</translation>
 <translation id="2038563949887743358">[PC 版サイトを見る] をオンにします</translation>
 <translation id="2073235970478114994">画像を読み込む</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">絞り込み</translation>
 <translation id="2315043854645842844">オペレーティング システムでサポートされていないため、クライアント側で証明書を選択することはできません。</translation>
 <translation id="2316129865977710310">いいえ</translation>
-<translation id="2319528413610359757"><ph name="PUBLISHER" /> の読者向け</translation>
 <translation id="2321958826496381788">読みやすくなるまでスライダをドラッグしてください。段落をダブルタップするとテキストがこれより大きくなります。</translation>
 <translation id="2329597144923131178">ログインすると、お使いのどのデバイスでも同じブックマーク、履歴、パスワード、その他の設定を利用できるようになります。</translation>
 <translation id="2343328333327081434">インストール中...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">たった今</translation>
 <translation id="2770465223704140727">リストから削除</translation>
 <translation id="278029852808208386">Bluetooth デバイスが見つかりませんでした。<ph name="BEGIN_LINK" />もう一度検索してください<ph name="END_LINK" />。</translation>
+<translation id="2811892995384186721">お使いの端末が表示されない場合は、<ph name="BEGIN_LINK" />ヘルプ<ph name="END_LINK" />をご覧ください。</translation>
 <translation id="2836148919159985482">全画面表示を終了するには戻るボタンをタップします。</translation>
 <translation id="2842985007712546952">親フォルダ</translation>
 <translation id="2870560284913253234">サイト</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">アクセスエラー時の候補表示</translation>
 <translation id="3732088672634061408">興味や関心を取得できませんでした。</translation>
 <translation id="3738139272394829648">タップして検索</translation>
-<translation id="3774280986422214650">この機能を有効にすると、Google サーバーを経由して HTTPS ページをプロキシ送信する試験運用に参加することになります。</translation>
 <translation id="3809549525127675114">「<ph name="VIDEO_TITLE" />」が終了しました</translation>
 <translation id="3828029223314399057">ブックマークを検索</translation>
 <translation id="3871171699884605801">子供向けのアカウントで閲覧履歴を消去することはできません</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">リンクを保存</translation>
 <translation id="4002066346123236978">タイトル</translation>
 <translation id="4035611068038188272">現在 <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> をブックマークに使用しています。</translation>
-<translation id="403659016947612156">フィジカル ウェブのページが近くにあります</translation>
 <translation id="4042870126885713738">ウェブアドレスが解決されない場合や接続を確立できない場合にアドバイスを表示します</translation>
 <translation id="4056223980640387499">セピア</translation>
 <translation id="4062305924942672200">法的情報</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">データタイプ</translation>
 <translation id="4827948050554950725">クレジット カードを追加</translation>
 <translation id="4836364883164334657">このサイトへの接続はプライベート接続ではありません。悪意のあるユーザーが、<ph name="DOMAIN_NAME" /> 上のあなたの情報(写真、パスワード、メッセージ、クレジット カード番号など)を不正に取得しようとしている可能性があります。</translation>
-<translation id="4842511359652954519">もっと見る</translation>
 <translation id="4850886885716139402">表示</translation>
 <translation id="4875622588773761625"><ph name="PASSWORD_MANAGER_BRAND" /> でこのサイトのパスワードを更新しますか?</translation>
 <translation id="4881695831933465202">開く</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">次に進む</translation>
 <translation id="4996978546172906250">共有方法</translation>
 <translation id="5000922062037820727">ブロック(推奨)</translation>
-<translation id="5014582685689328551">Chrome を使用して閲覧可能です</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">許可</translation>
 <translation id="5040262127954254034">プライバシー</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">保存したページを検索</translation>
 <translation id="5313967007315987356">サイトを追加</translation>
 <translation id="5317780077021120954">保存</translation>
-<translation id="5323972449344932352">Chrome を起動</translation>
 <translation id="5324858694974489420">保護者設定</translation>
 <translation id="5327248766486351172">名前</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> を削除しました</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> のデータを削減</translation>
 <translation id="6165508094623778733">詳しく見る</translation>
 <translation id="6192792657125177640">例外</translation>
-<translation id="6208263165776660488">Chrome のタブが移動しました</translation>
 <translation id="6231464350722415003">指定するウェブサイト上で JavaScript を許可し、その他のウェブサイト上ではブロックします</translation>
 <translation id="6232535412751077445">「トラッキング拒否」を有効にすると、リクエストが閲覧トラフィックに含まれるようになります。ウェブサイトがリクエストに応答するかどうか、またリクエストがどのように解釈されるかによって、この影響は異なります。
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> では地域の検索結果を表示するためにユーザーの位置情報が使用されます</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />ヘルプ<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">ブックマークを削除</translation>
-<translation id="7324738665594301612">Google では試験運用の一環として、Google サーバーを経由して HTTPS ページをプロキシ送信するテストを行っています。</translation>
 <translation id="7346217184097589238">保存済みのサイトの設定は消去されず、普段の閲覧行動を反映した設定などが残る可能性もあります。</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">オフライン コンテンツ</translation>
 <translation id="7363354739009474003">「<ph name="VIDEO_TITLE" />」を読み込んでいます</translation>
 <translation id="7366340029385295517"><ph name="SCREEN_NAME" />にキャストしています</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">フィジカルウェブ</translation>
 <translation id="7596558890252710462">オペレーティング システム</translation>
 <translation id="7599840151813361502"><ph name="BEGIN_LINK" />Google アカウント<ph name="END_LINK" />へのログインは維持されます</translation>
-<translation id="7603403729818446828">スマートフォンの [概要] 画面にタブと最近使ったアプリを表示します。これは [<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />] で変更できます。</translation>
 <translation id="7607002721634913082">一時停止中</translation>
 <translation id="7612619742409846846">次のユーザーとして Google にログインしています:</translation>
 <translation id="7619072057915878432">ネットワーク障害が発生したため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">始めから</translation>
 <translation id="8200772114523450471">再開</translation>
 <translation id="8209050860603202033">画像を開く</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> の接続先を選択:</translation>
 <translation id="8218346974737627104">ログインの確認</translation>
 <translation id="8218934717680664417">ワンタップで検索が可能に</translation>
 <translation id="8223946939421658889">データを消去する期間:</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 1de8aec3..e4165e2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022"><ph name="FULL_NAME" />님, 안녕하세요.</translation>
 <translation id="1383876407941801731">검색</translation>
 <translation id="1389974829397082527">이 폴더에는 북마크가 없습니다.</translation>
-<translation id="1390350022570422499">이제 Chrome에서 블루투스를 사용하여 주변 웹페이지를 찾아 표시할 수 있습니다.
-
-Chrome에서는 기기가 잠금 해제 상태일 때 주변 페이지를 스캔합니다. 이 페이지는 페이지 결과의 품질을 높이기 위해 Google 서비스를 거칩니다.
-
-Chrome 개인정보 보호 설정에서 피지컬 웹을 관리할 수 있습니다.</translation>
 <translation id="1404122904123200417"><ph name="WEBSITE_URL" />에 포함됨</translation>
 <translation id="1406000523432664303">'추적 안함'</translation>
 <translation id="1409879593029778104">파일이 이미 존재하여 <ph name="FILE_NAME" /> 다운로드가 중지되었습니다.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">고급</translation>
 <translation id="1984937141057606926">타사 쿠키만 제외하고 허용</translation>
 <translation id="1994173015038366702">사이트 URL</translation>
+<translation id="2001120796168634316">링크된 페이지 저장</translation>
 <translation id="200669432486043882">파일 바꾸기</translation>
 <translation id="2038563949887743358">데스크톱 버전으로 보기 사용 설정</translation>
 <translation id="2073235970478114994">이미지 로드</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">상세검색</translation>
 <translation id="2315043854645842844">클라이언트측 인증서 선택이 운영체제에서 지원되지 않습니다.</translation>
 <translation id="2316129865977710310">아니요, 괜찮습니다.</translation>
-<translation id="2319528413610359757"><ph name="PUBLISHER" /> 독자용</translation>
 <translation id="2321958826496381788">편하게 읽을 수 있을 때까지 슬라이더를 드래그하세요. 단락을 두 번 탭하면 텍스트가 이 이상의 크기로 표시됩니다.</translation>
 <translation id="2329597144923131178">로그인하면 모든 기기에서 북마크, 방문 기록, 비밀번호, 기타 설정을 사용할 수 있습니다.</translation>
 <translation id="2343328333327081434">설치 중...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">방금 전</translation>
 <translation id="2770465223704140727">목록에서 삭제</translation>
 <translation id="278029852808208386">블루투스 기기를 찾을 수 없습니다. <ph name="BEGIN_LINK" />다시 검색하세요<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">기기가 표시되지 않나요? <ph name="BEGIN_LINK" />도움 받기<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">전체화면을 종료하려면 뒤로 버튼을 터치하세요.</translation>
 <translation id="2842985007712546952">상위 폴더</translation>
 <translation id="2870560284913253234">사이트</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">탐색 오류 시 추천사항 표시</translation>
 <translation id="3732088672634061408">관심분야를 검색하지 못했습니다.</translation>
 <translation id="3738139272394829648">터치하여 검색</translation>
-<translation id="3774280986422214650">이 기능을 사용하는 경우 Google 서버를 통해 HTTPS 페이지를 프록시하는 실험에 참가하게 되는 것입니다.</translation>
 <translation id="3809549525127675114">'<ph name="VIDEO_TITLE" />' 재생 완료</translation>
 <translation id="3828029223314399057">북마크 검색</translation>
 <translation id="3871171699884605801">어린이용 계정으로는 인터넷 사용 기록을 삭제할 수 없습니다.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">링크 저장</translation>
 <translation id="4002066346123236978">제목</translation>
 <translation id="4035611068038188272">현재 북마크의 크기는 <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />입니다.</translation>
-<translation id="403659016947612156">주변에 피지컬 웹페이지가 있습니다</translation>
 <translation id="4042870126885713738">웹 주소가 확인되지 않거나 연결되지 않는 경우 추천 주소 표시</translation>
 <translation id="4056223980640387499">세피아</translation>
 <translation id="4062305924942672200">법적 정보</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">데이터 유형</translation>
 <translation id="4827948050554950725">신용카드 추가</translation>
 <translation id="4836364883164334657">이 사이트에 비공개로 연결하도록 설정되지 않았습니다. 누군가가 <ph name="DOMAIN_NAME" />에서 사용자의 정보(예: 사진, 비밀번호, 메시지, 신용카드)를 도용하려고 공격을 시도하는 중일 수 있습니다.</translation>
-<translation id="4842511359652954519">자세히 알아보기</translation>
 <translation id="4850886885716139402">보기</translation>
 <translation id="4875622588773761625"><ph name="PASSWORD_MANAGER_BRAND" />에서 이 사이트의 비밀번호를 업데이트하도록 하시겠습니까?</translation>
 <translation id="4881695831933465202">열기</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">앞으로 이동</translation>
 <translation id="4996978546172906250">공유 방법</translation>
 <translation id="5000922062037820727">차단(권장)</translation>
-<translation id="5014582685689328551">Chrome을 사용하여 탐색합니다</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">허용</translation>
 <translation id="5040262127954254034">개인정보</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">저장된 페이지 검색</translation>
 <translation id="5313967007315987356">사이트 추가</translation>
 <translation id="5317780077021120954">저장</translation>
-<translation id="5323972449344932352">Chrome 실행</translation>
 <translation id="5324858694974489420">자녀 보호 설정</translation>
 <translation id="5327248766486351172">이름</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> 삭제됨</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> 데이터 절약</translation>
 <translation id="6165508094623778733">자세히 알아보기</translation>
 <translation id="6192792657125177640">예외</translation>
-<translation id="6208263165776660488">Chrome 탭이 달라졌습니다.</translation>
 <translation id="6231464350722415003">지정한 웹사이트에서만 자바스크립트를 허용하고 나머지 웹사이트에서는 차단합니다.</translation>
 <translation id="6232535412751077445">‘추적 안함’을 사용하도록 설정하면 요청이 사용자의 인터넷 사용 트래픽에 포함됩니다. 웹사이트가 요청에 응답하는지 여부와 요청이 해석되는 방법에 따라 결과가 결정됩니다.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />이(가) 사용자 위치 정보를 사용하여 지역 검색결과 표시</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />도움말<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">북마크 삭제</translation>
-<translation id="7324738665594301612">Google은 실험의 일환으로 Google 서버를 통해 HTTPS 페이지의 프록시를 테스트하고 있습니다.</translation>
 <translation id="7346217184097589238">저장된 사이트 설정은 삭제되지 않으며 인터넷 사용 습관을 반영할 수 있습니다.</translation>
-<translation id="7346909386216857016">확인</translation>
 <translation id="7347770551817603360">오프라인 콘텐츠</translation>
 <translation id="7363354739009474003">'<ph name="VIDEO_TITLE" />' 로드 중</translation>
 <translation id="7366340029385295517"><ph name="SCREEN_NAME" />(으)로 전송 중</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">피지컬 웹</translation>
 <translation id="7596558890252710462">운영체제</translation>
 <translation id="7599840151813361502"><ph name="BEGIN_LINK" />Google 계정<ph name="END_LINK" />에서 로그아웃되지 않습니다.</translation>
-<translation id="7603403729818446828">휴대전화의 최근 사용 화면에서 최근에 사용한 앱과 탭을 확인할 수 있습니다. 이 기능은 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 관리할 수 있습니다.</translation>
 <translation id="7607002721634913082">일시중지됨</translation>
 <translation id="7612619742409846846">다음 계정으로 Google에 로그인함:</translation>
 <translation id="7619072057915878432">네트워크에 문제가 발생하여 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">전체</translation>
 <translation id="8200772114523450471">다시 시작</translation>
 <translation id="8209050860603202033">이미지 열기</translation>
+<translation id="8215250379351058554"><ph name="SITE" />에서 연결할 항목:</translation>
 <translation id="8218346974737627104">로그인 확인</translation>
 <translation id="8218934717680664417">이제 터치 한 번으로 검색할 수 있습니다.</translation>
 <translation id="8223946939421658889">다음 기간의 데이터 삭제</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 aa546f7..196a6d3 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Sveiki, <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Ieškoti</translation>
 <translation id="1389974829397082527">Čia žymių nėra</translation>
-<translation id="1390350022570422499">Dabar „Chrome“ gali rasti ir rodyti jums netoliese esančių įrenginių tinklalapius naudodama „Bluetooth“.
-
-Kai įrenginys bus atrakintas, „Chrome“ nuskaitys netoliese esančių įrenginių puslapius. Šie puslapiai bus siunčiami naudojant „Google“ paslaugą siekiant patobulinti puslapių rezultatų kokybę.
-
-Fizinį žiniatinklį galite valdyti „Chrome“ privatumo nustatymuose.</translation>
 <translation id="1404122904123200417">Įterpta į <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Funkcija „Nestebėti“</translation>
 <translation id="1409879593029778104">Neleidžiama atsisiųsti „<ph name="FILE_NAME" />“, nes failas jau yra.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Išplėstiniai</translation>
 <translation id="1984937141057606926">Leidžiama (išskyrus trečiąsias šalis)</translation>
 <translation id="1994173015038366702">Svetainės URL</translation>
+<translation id="2001120796168634316">Išs. sus. psl. ir naud. vėliau</translation>
 <translation id="200669432486043882">Pakeisti failą</translation>
 <translation id="2038563949887743358">Įjungti stalinio kompiuterio svetainės užklausą</translation>
 <translation id="2073235970478114994">Įkelti vaizdus</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Patikslinti</translation>
 <translation id="2315043854645842844">Kliento pasirinkto sertifikato nepalaiko operacinė sistema.</translation>
 <translation id="2316129865977710310">Ačiū, ne</translation>
-<translation id="2319528413610359757">„<ph name="PUBLISHER" />“ skaitytojams</translation>
 <translation id="2321958826496381788">Vilkite šliaužiklį, kol bus patogu skaityti šį tekstą. Du kartus palietus pastraipą, tekstas turėtų būti mažiausiai tokio dydžio.</translation>
 <translation id="2329597144923131178">Pris. ir pas. žymių, ist., slapt. bei kitų nust. duom. visuose įreng.</translation>
 <translation id="2343328333327081434">Diegiama...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">ką tik</translation>
 <translation id="2770465223704140727">Pašalinti iš sąrašo</translation>
 <translation id="278029852808208386">Nerasta „Bluetooth“ įrenginių. <ph name="BEGIN_LINK" />Ieškokite dar kartą<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Nematote savo įrenginio? <ph name="BEGIN_LINK" />Gaukite pagalbos<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Palieskite mygtuką „Atgal“, kad išeitumėte iš viso ekrano režimo.</translation>
 <translation id="2842985007712546952">Viršaplankis</translation>
 <translation id="2870560284913253234">Svetainė</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Naršymo klaidų pasiūlymai</translation>
 <translation id="3732088672634061408">Nepavyko gauti pomėgių.</translation>
 <translation id="3738139272394829648">Paieška palietus</translation>
-<translation id="3774280986422214650">Jei įgalinsite šią funkciją, dalyvausite eksperimente, kurį vykdant HTTPS puslapiai įgaliojami naudojant „Google“ serverius.</translation>
 <translation id="3809549525127675114">Baigta leisti „<ph name="VIDEO_TITLE" />“</translation>
 <translation id="3828029223314399057">Ieškoti žymėse</translation>
 <translation id="3871171699884605801">Negalima išvalyti vaikų paskyrų naršymo istorijos</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Išsaugoti nuorodą</translation>
 <translation id="4002066346123236978">Pavadinimas</translation>
 <translation id="4035611068038188272">Žymės šiuo metu užima <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Fiziniai tinklalapiai yra netoliese</translation>
 <translation id="4042870126885713738">Rodyti pasiūlymus, kai žiniatinklio adresas nepasiekiamas arba nepavyksta užmegzti ryšio</translation>
 <translation id="4056223980640387499">Sepija</translation>
 <translation id="4062305924942672200">Teisinė informacija</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Duomenų tipai</translation>
 <translation id="4827948050554950725">Pridėti kredito kortelę</translation>
 <translation id="4836364883164334657">Ryšys su šia svetaine nėra privatus. Užgrobėjai gali bandyti pavogti informaciją (pvz., nuotraukas, slaptažodžius, pranešimus ar kredito kortelių duomenis) iš <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Daugiau</translation>
 <translation id="4850886885716139402">Žiūrėti</translation>
 <translation id="4875622588773761625">Ar norite, kad „<ph name="PASSWORD_MANAGER_BRAND" />“ atnaujintų šios svetainės slaptažodį?</translation>
 <translation id="4881695831933465202">Atidaryti</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Eiti pirmyn</translation>
 <translation id="4996978546172906250">Bendrinti per</translation>
 <translation id="5000922062037820727">Užblokuota (rekomenduojama)</translation>
-<translation id="5014582685689328551">Naršykite juos naudodami „Chrome“</translation>
 <translation id="5016205925109358554">Su užraitais</translation>
 <translation id="5039804452771397117">Leisti</translation>
 <translation id="5040262127954254034">Privatumas</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Ieškoti išsaugotuose puslapiuose</translation>
 <translation id="5313967007315987356">Pridėti svetainę</translation>
 <translation id="5317780077021120954">Išsaugoti</translation>
-<translation id="5323972449344932352">Paleisti „Chrome“</translation>
 <translation id="5324858694974489420">Tėvų nustatymai</translation>
 <translation id="5327248766486351172">Pavadinimas</translation>
 <translation id="5345040418939504969">Ištrinta „<ph name="BOOKMARK_TITLE" />“</translation>
@@ -402,7 +393,6 @@
 <translation id="6159335304067198720">Sutaupyta duomenų: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Sužinokite daugiau</translation>
 <translation id="6192792657125177640">Išimtys</translation>
-<translation id="6208263165776660488">„Chrome“ skirtukai perkelti</translation>
 <translation id="6231464350722415003">Leisti „JavaScript“ nurodytose svetainėse, tačiau blokuoti visur kitur žiniatinklyje</translation>
 <translation id="6232535412751077445">Įgalinus funkciją „Nestebėti“, užklausa bus įtraukta į naršymo srautą. Poveikis priklauso nuo to, ar svetainė atsako į užklausą ir kaip užklausa interpretuojama.
 
@@ -491,9 +481,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> naudoja vietovės informaciją vietinės paieškos rezultatams rodyti</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pagalba<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Ištrinti žymę</translation>
-<translation id="7324738665594301612">Vykdydami eksperimentą išbandome HTTPS puslapių įgaliojimą naudojant „Google“ serverius.</translation>
 <translation id="7346217184097589238">Išsaugoti svetainės duomenys nebus ištrinti ir gali parodyti jūsų naršymo įpročius.</translation>
-<translation id="7346909386216857016">Gerai, supratau</translation>
 <translation id="7347770551817603360">Neprisijungus pasiekiamas turinys</translation>
 <translation id="7363354739009474003">Įkeliamas „<ph name="VIDEO_TITLE" />“</translation>
 <translation id="7366340029385295517">Perduodama į ekraną „<ph name="SCREEN_NAME" />“</translation>
@@ -516,7 +504,6 @@
 <translation id="7588950540487816470">Fizinis žiniatinklis</translation>
 <translation id="7596558890252710462">Operacinė sistema</translation>
 <translation id="7599840151813361502">Nuo <ph name="BEGIN_LINK" />„Google“ paskyrų<ph name="END_LINK" /> atjungti nebūsite</translation>
-<translation id="7603403729818446828">Peržiūrėkite skirtukų lapus naudodami kitas naujausias programas telefono „Apžvalgos“ ekrane. Šią funkciją galite tvarkyti <ph name="BEGIN_LINK" />Nustatymų<ph name="END_LINK" /> skiltyje.</translation>
 <translation id="7607002721634913082">Pristabdyta</translation>
 <translation id="7612619742409846846">Prisijungta prie „Google“ kaip</translation>
 <translation id="7619072057915878432">Nepavyko atsisiųsti „<ph name="FILE_NAME" />“ dėl tinklo trikčių.</translation>
@@ -565,6 +552,7 @@
 <translation id="8173098127580644436">laiko pradžia</translation>
 <translation id="8200772114523450471">Atnaujinti</translation>
 <translation id="8209050860603202033">Atidaryti vaizdą</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> nori prisijungti prie:</translation>
 <translation id="8218346974737627104">Patvirtinti prisijungimą</translation>
 <translation id="8218934717680664417">Nuo šiol galite ieškoti vienu palietimu</translation>
 <translation id="8223946939421658889">Išvalyti duomenis iš</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 6eb00eb..249cce51 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Sveicināti, <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Meklēt</translation>
 <translation id="1389974829397082527">Šeit nav nevienas grāmatzīmes.</translation>
-<translation id="1390350022570422499">Tagad Chrome atrod un rāda tīmekļa lapas par tuvumā esošiem objektiem, izmantojot Bluetooth.
-
-Kad ierīce ir atbloķēta, Chrome meklē tuvumā esošu objektu lapas. Šīs lapas tiks ievietotas Google pakalpojumā, lai uzlabotu lapu rezultātu kvalitāti.
-
-Fizisko tīmekli varat kontrolēt Chrome konfidencialitātes iestatījumos.</translation>
 <translation id="1404122904123200417">Iegults vietnē <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Nesekot”</translation>
 <translation id="1409879593029778104">Fails <ph name="FILE_NAME" /> netika lejupielādēts, jo tas jau pastāv.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Papildu</translation>
 <translation id="1984937141057606926">Atļauti, izņemot trešo pušu sīkfailus</translation>
 <translation id="1994173015038366702">Vietnes URL</translation>
+<translation id="2001120796168634316">Saglabāt lapu ar saitēm</translation>
 <translation id="200669432486043882">Aizstāt failu</translation>
 <translation id="2038563949887743358">Ieslēgt iestatījumu “Pieprasīt datora vietni”</translation>
 <translation id="2073235970478114994">Ielādēt attēlus</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Uzlabot</translation>
 <translation id="2315043854645842844">Operētājsistēma neatbalsta klienta puses sertifikāta atlasi.</translation>
 <translation id="2316129865977710310">Nē, paldies</translation>
-<translation id="2319528413610359757">“<ph name="PUBLISHER" />” satura lasītājiem</translation>
 <translation id="2321958826496381788">Velciet slīdni, kamēr varat ērti lasīt. Pēc dubultskāriena rindkopai tekstam ir jābūt vismaz šādā lielumā.</translation>
 <translation id="2329597144923131178">Pierakstieties, lai grāmatzīmes, vēsture, paroles u.c. būtu pieejamas visās jūsu ierīcēs.</translation>
 <translation id="2343328333327081434">Instalēšana...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">tikko</translation>
 <translation id="2770465223704140727">Noņemt no saraksta</translation>
 <translation id="278029852808208386">Netika atrasta neviena Bluetooth ierīce. <ph name="BEGIN_LINK" />Meklējiet vēlreiz<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Vai jūsu ierīce netiek rādīta? <ph name="BEGIN_LINK" />Saņemiet palīdzību<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">Lai izietu no pilnekrāna režīma, pieskarieties pogai Atpakaļ.</translation>
 <translation id="2842985007712546952">Vecākmape</translation>
 <translation id="2870560284913253234">Vietne</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Navigācijas kļūdu ieteikumi</translation>
 <translation id="3732088672634061408">Nevarēja izgūt intereses.</translation>
 <translation id="3738139272394829648">Meklēšana pieskaroties</translation>
-<translation id="3774280986422214650">Iespējojot šo funkciju, piedalīsieties eksperimentā, kurš sūta HTTPS lapas, izmantojot Google serverus kā starpniekserverus.</translation>
 <translation id="3809549525127675114">Tika pabeigta videoklipa “<ph name="VIDEO_TITLE" />” atskaņošana</translation>
 <translation id="3828029223314399057">Meklēt grāmatzīmes</translation>
 <translation id="3871171699884605801">Pārlūkošanas vēsturi nevar notīrīt, izmantojot bērniem paredzētu kontu.</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Saglabāt saiti</translation>
 <translation id="4002066346123236978">Nosaukums</translation>
 <translation id="4035611068038188272">Grāmatzīmju aizņemtā krātuves vieta: <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Tuvumā ir fiziskā tīmekļa lapas</translation>
 <translation id="4042870126885713738">Rādīt ieteikumus, ja nedarbojas tīmekļa adrese vai nevar izveidot savienojumu.</translation>
 <translation id="4056223980640387499">Sēpija</translation>
 <translation id="4062305924942672200">Juridiskā informācija</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Datu tipi</translation>
 <translation id="4827948050554950725">Pievienot kredītkarti</translation>
 <translation id="4836364883164334657">Jūsu savienojums ar šo vietni nav privāts. Uzbrucēji var mēģināt nozagt jūsu informāciju (piemēram, fotoattēlus, paroles, ziņojumus vai kredītkaršu datus) no domēna <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Uzzināt vairāk</translation>
 <translation id="4850886885716139402">Skatīt</translation>
 <translation id="4875622588773761625">Vai vēlaties, lai <ph name="PASSWORD_MANAGER_BRAND" /> atjauninātu jūsu paroli šai vietnei?</translation>
 <translation id="4881695831933465202">Atvērt</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Doties uz priekšu</translation>
 <translation id="4996978546172906250">Kopīgošanas veids:</translation>
 <translation id="5000922062037820727">Bloķēta (ieteicams)</translation>
-<translation id="5014582685689328551">Izmantojiet Chrome, lai meklētu šīs lapas</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Atļaut</translation>
 <translation id="5040262127954254034">Privātums</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Meklēt saglabātajās lapās</translation>
 <translation id="5313967007315987356">Pievienot vietni</translation>
 <translation id="5317780077021120954">Saglabāt</translation>
-<translation id="5323972449344932352">Palaist Chrome</translation>
 <translation id="5324858694974489420">Vecāku iestatījumi</translation>
 <translation id="5327248766486351172">Nosaukums</translation>
 <translation id="5345040418939504969">Grāmatzīme <ph name="BOOKMARK_TITLE" /> tika dzēsta</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Datu lietojuma samazinājums: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Uzziniet vairāk</translation>
 <translation id="6192792657125177640">Izņēmumi</translation>
-<translation id="6208263165776660488">Chrome cilnes ir pārvietotas</translation>
 <translation id="6231464350722415003">Atļaujiet JavaScript izmantošanu jūsu norādītās vietnēs, vienlaicīgi bloķējot to pārējās vietnēs.</translation>
 <translation id="6232535412751077445">Iespējojot funkciju “Nesekot”, jūsu pārlūkošanas datplūsmā tiks iekļauts pieprasījums. Rezultāts būs atkarīgs no tā, vai vietne nodrošinās atbildi uz pieprasījumu un kā pieprasījums tiks interpretēts.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> izmanto jūsu atrašanās vietas informāciju, lai rādītu vietējās meklēšanas rezultātus</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Palīdzība<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Dzēst grāmatzīmi</translation>
-<translation id="7324738665594301612">Eksperimenta laikā mēs testējam HTTPS lapu sūtīšanu, izmantojot Google serverus kā starpniekserverus.</translation>
 <translation id="7346217184097589238">Saglabātie vietņu iestatījumi netiks dzēsti un var atspoguļot jūsu pārlūkošanas ieradumus.</translation>
-<translation id="7346909386216857016">Labi, sapratu</translation>
 <translation id="7347770551817603360">Saturs bezsaistē</translation>
 <translation id="7363354739009474003">Notiek videoklipa “<ph name="VIDEO_TITLE" />” ielāde</translation>
 <translation id="7366340029385295517">Notiek apraide uz ekrānu “<ph name="SCREEN_NAME" />”</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fiziskais tīmeklis</translation>
 <translation id="7596558890252710462">Operētājsistēma</translation>
 <translation id="7599840151813361502">Jūs netiksiet izrakstīts no saviem <ph name="BEGIN_LINK" />Google kontiem<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">Skatiet cilnes ar citām jaunākajām lietotnēm tālruņa ekrānā Pārskats. Šo opciju var pārvaldīt sadaļā <ph name="BEGIN_LINK" />Iestatījumi<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Apturēta</translation>
 <translation id="7612619742409846846">Pierakstījies Google kontā kā</translation>
 <translation id="7619072057915878432">Neizdevās lejupielādēt failu <ph name="FILE_NAME" />, jo radās tīkla kļūdas.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">paša sākuma</translation>
 <translation id="8200772114523450471">Kopsavilkums</translation>
 <translation id="8209050860603202033">Atvērt attēlu</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> vēlas izveidot savienojumu ar:</translation>
 <translation id="8218346974737627104">Pierakstīšanās apstiprinājums</translation>
 <translation id="8218934717680664417">Tagad varat veikt meklēšanu ar vienu pieskārienu</translation>
 <translation id="8223946939421658889">Dzēst datus no</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 bf676dd..6c80390 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hallo <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Zoeken</translation>
 <translation id="1389974829397082527">Geen bladwijzers</translation>
-<translation id="1390350022570422499">Chrome kan webpagina's in de buurt nu vinden en weergeven via Bluetooth.
-
-Chrome scant op webpagina's in de buurt wanneer je apparaat is ontgrendeld. Deze pagina's worden verwerkt door een Google-service om de kwaliteit van paginaresultaten te verbeteren.
-
-Je kunt het Fysieke web beheren in de privacyinstellingen van Chrome.</translation>
 <translation id="1404122904123200417">Ingesloten in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Niet bijhouden</translation>
 <translation id="1409879593029778104">Downloaden van <ph name="FILE_NAME" /> is voorkomen omdat het bestand al bestaat.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Geavanceerd</translation>
 <translation id="1984937141057606926">Toegestaan, behalve van derden</translation>
 <translation id="1994173015038366702">Site-URL</translation>
+<translation id="2001120796168634316">Gelinkte pagina opslaan voor later</translation>
 <translation id="200669432486043882">Bestand vervangen</translation>
 <translation id="2038563949887743358">'Desktopsite aanvragen' inschakelen</translation>
 <translation id="2073235970478114994">Afbeeldingen laden</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Verfijnen</translation>
 <translation id="2315043854645842844">Certificaatselectie aan clientzijde wordt niet ondersteund door het besturingssysteem.</translation>
 <translation id="2316129865977710310">Nee, bedankt</translation>
-<translation id="2319528413610359757">Voor lezers van <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Sleep de schuifknop tot je deze tekst prettig kunt lezen. De tekst moet minimaal deze grootte hebben nadat je op een alinea hebt dubbelgetikt.</translation>
 <translation id="2329597144923131178">Log in om je bladwijzers, geschiedenis, wachtwoorden en andere instellingen op al je apparaten te gebruiken.</translation>
 <translation id="2343328333327081434">Installeren…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">zojuist</translation>
 <translation id="2770465223704140727">Verwijderen uit lijst</translation>
 <translation id="278029852808208386">Geen Bluetooth-apparaten gevonden. <ph name="BEGIN_LINK" />Zoek nogmaals<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Wordt je apparaat niet weergegeven? <ph name="BEGIN_LINK" />Raadpleeg de Help<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Tik op de knop Terug om het volledige scherm te sluiten.</translation>
 <translation id="2842985007712546952">Bovenliggende map</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Suggesties bij navigatiefouten</translation>
 <translation id="3732088672634061408">Kan interesses niet ophalen.</translation>
 <translation id="3738139272394829648">Tikken om te zoeken</translation>
-<translation id="3774280986422214650">Als je deze functie inschakelt, maak je deel uit van een experiment dat HTTPS-pagina's via proxy overdraagt via de servers van Google.</translation>
 <translation id="3809549525127675114">'<ph name="VIDEO_TITLE" />' is afgelopen</translation>
 <translation id="3828029223314399057">Zoeken in bladwijzers</translation>
 <translation id="3871171699884605801">Browsegeschiedenis kan niet worden verwijderd bij accounts voor kinderen</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Link opslaan</translation>
 <translation id="4002066346123236978">Titel</translation>
 <translation id="4035611068038188272">Bladwijzers nemen momenteel <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> in beslag.</translation>
-<translation id="403659016947612156">Er zijn Fysieke webpagina's in de buurt</translation>
 <translation id="4042870126885713738">Suggesties weergeven wanneer een webadres onjuist is of er geen verbinding kan worden gemaakt</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Juridische informatie</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Gegevenstypen</translation>
 <translation id="4827948050554950725">Een creditcard toevoegen</translation>
 <translation id="4836364883164334657">Je verbinding met deze site is niet privé. Aanvallers kunnen mogelijk je informatie (bijvoorbeeld foto's, wachtwoorden, berichten en creditcardgegevens) stelen van <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Meer informatie</translation>
 <translation id="4850886885716139402">Weergave</translation>
 <translation id="4875622588773761625">Wil je dat <ph name="PASSWORD_MANAGER_BRAND" /> je wachtwoord voor deze site updatet?</translation>
 <translation id="4881695831933465202">Openen</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Naar voren gaan</translation>
 <translation id="4996978546172906250">Delen via</translation>
 <translation id="5000922062037820727">Geblokkeerd (aanbevolen)</translation>
-<translation id="5014582685689328551">Gebruik Chrome om te browsen op deze pagina's</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Toestaan</translation>
 <translation id="5040262127954254034">Privacy</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Zoeken in opgeslagen pagina's</translation>
 <translation id="5313967007315987356">Site toevoegen</translation>
 <translation id="5317780077021120954">Opslaan</translation>
-<translation id="5323972449344932352">Chrome starten</translation>
 <translation id="5324858694974489420">Instellingen voor ouders</translation>
 <translation id="5327248766486351172">Naam</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> is verwijderd</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> besparing van data</translation>
 <translation id="6165508094623778733">Meer informatie</translation>
 <translation id="6192792657125177640">Uitzonderingen</translation>
-<translation id="6208263165776660488">Chrome-tabbladen zijn verplaatst</translation>
 <translation id="6231464350722415003">JavaScript toestaan op websites die jij opgeeft terwijl dit voor de rest van internet wordt geblokkeerd</translation>
 <translation id="6232535412751077445">Als je 'Niet bijhouden' inschakelt, wordt hiervoor een verzoek opgenomen in je browseverkeer. Het resultaat daarvan hangt af van of een website reageert op het verzoek en hoe het verzoek wordt geïnterpreteerd.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> gebruikt je locatie om lokale zoekresultaten weer te geven</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Help<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Bladwijzer verwijderen</translation>
-<translation id="7324738665594301612">We testen het via proxy overdragen van HTTPS-pagina's via servers van Google als onderdeel van een experiment.</translation>
 <translation id="7346217184097589238">Opgeslagen site-instellingen worden niet verwijderd en kunnen je browsegedrag weerspiegelen.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Offline content</translation>
 <translation id="7363354739009474003">'<ph name="VIDEO_TITLE" />' laden</translation>
 <translation id="7366340029385295517">Casten naar <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fysieke web</translation>
 <translation id="7596558890252710462">Besturingssysteem</translation>
 <translation id="7599840151813361502">Je wordt niet uitgelogd van je <ph name="BEGIN_LINK" />Google-accounts<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Bekijk je tabbladen met andere recente apps op het overzichtsscherm van je telefoon. Je kunt dit beheren via <ph name="BEGIN_LINK" />Instellingen<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Onderbroken</translation>
 <translation id="7612619742409846846">Ingelogd bij Google als</translation>
 <translation id="7619072057915878432">Downloaden van <ph name="FILE_NAME" /> is mislukt door netwerkfouten.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">het eerste gebruik</translation>
 <translation id="8200772114523450471">Hervatten</translation>
 <translation id="8209050860603202033">Afbeelding openen</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> wil verbinden met:</translation>
 <translation id="8218346974737627104">Inloggen bevestigen</translation>
 <translation id="8218934717680664417">Je kunt nu zoeken met één tik</translation>
 <translation id="8223946939421658889">Gegevens wissen van</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 90244ad..723b74c 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hei, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Søk</translation>
 <translation id="1389974829397082527">Det er ingen bokmerker her</translation>
-<translation id="1390350022570422499">Chrome kan nå finne og vise deg nettsider i nærheten ved hjelp av Bluetooth.
-
-Chrome søker etter sider i nærheten så lenge enheten din er låst opp. Disse sidene går gjennom en Google-tjeneste for å forbedre kvaliteten på sideresultatene.
-
-Du kan kontrollere det fysiske nettet i personverninnstillingene i Chrome.</translation>
 <translation id="1404122904123200417">Innbygd i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">«Ingen sporing»</translation>
 <translation id="1409879593029778104">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt fordi filen finnes allerede.</translation>
@@ -96,7 +91,6 @@
 <translation id="2268044343513325586">Finstem</translation>
 <translation id="2315043854645842844">Operativsystemet har ikke støtte for sertifikatvalg på klientsiden.</translation>
 <translation id="2316129865977710310">Nei, takk</translation>
-<translation id="2319528413610359757">For lesere av <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Dra glidebryteren til du kan lese dette uten problemer. Når du har dobbelttrykket på et avsnitt, bør teksten være minst like stor som dette.</translation>
 <translation id="2329597144923131178">Logg på for å få bokmerkene, loggen, passordene og de andre innstillingene dine på alle enhetene du bruker.</translation>
 <translation id="2343328333327081434">Installerer …</translation>
@@ -199,7 +193,6 @@
 <translation id="3672452749423051839">Forslag ved navigasjonsfeil</translation>
 <translation id="3732088672634061408">Kunne ikke hente interesser.</translation>
 <translation id="3738139272394829648">Trykk for å søke</translation>
-<translation id="3774280986422214650">Hvis du slår på dette elementet, blir du en del av et eksperiment som sender HTTPS-sider gjennom Google-tjenerne.</translation>
 <translation id="3809549525127675114"><ph name="VIDEO_TITLE" /> er ferdig</translation>
 <translation id="3828029223314399057">Søk i bokmerker</translation>
 <translation id="3871171699884605801">Nettlesingsloggen kan ikke slettes for barnekontoer</translation>
@@ -214,7 +207,6 @@
 <translation id="3992315671621218278">Lagre linken</translation>
 <translation id="4002066346123236978">Tittel</translation>
 <translation id="4035611068038188272">Bokmerkene bruker for øyeblikket <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Det finnes sider på det fysiske nettet i nærheten</translation>
 <translation id="4042870126885713738">Vis forslag når en nettadresse ikke fungerer eller en tilkobling ikke kan opprettes</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Juridisk informasjon</translation>
@@ -242,7 +234,7 @@
 <translation id="4351244548802238354">Lukk dialogboks</translation>
 <translation id="4376501731284077108">Ukontrollert</translation>
 <translation id="4378154925671717803">Telefon</translation>
-<translation id="4412992751769744546">Tillatelse for informasjonskapsler fra tredjeparter</translation>
+<translation id="4412992751769744546">Tillat informasjonskapsler fra tredjeparter</translation>
 <translation id="4440256989292146959">Mer surfing for mindre penger</translation>
 <translation id="4452548195519783679">Satt som bokmerke i <ph name="FOLDER_NAME" /></translation>
 <translation id="4457399174246232812">Fremtidige sider på det fysiske nettet i nærheten vises i varsellisten din</translation>
@@ -274,7 +266,6 @@
 <translation id="4816465935029283692">Datatyper</translation>
 <translation id="4827948050554950725">Legg til et kredittkort</translation>
 <translation id="4836364883164334657">Tilkoblingen din til dette nettstedet er ikke privat. Hackere kan prøve å stjele informasjonen din (for eksempel bilder, passord, meldinger og kredittkortinformasjon) fra <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Finn ut mer</translation>
 <translation id="4850886885716139402">Visning</translation>
 <translation id="4875622588773761625">Vil du at <ph name="PASSWORD_MANAGER_BRAND" /> skal oppdatere passordet for dette nettstedet?</translation>
 <translation id="4881695831933465202">Åpne</translation>
@@ -287,7 +278,6 @@
 <translation id="497421865427891073">Gå til neste</translation>
 <translation id="4996978546172906250">Del via</translation>
 <translation id="5000922062037820727">Blokkert (anbefales)</translation>
-<translation id="5014582685689328551">Bruk Chrome for å åpne dem</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Tillat</translation>
 <translation id="5040262127954254034">Personvern</translation>
@@ -322,7 +312,6 @@
 <translation id="5308933389783727448">Søk i de lagrede sidene</translation>
 <translation id="5313967007315987356">Legg til et nettsted</translation>
 <translation id="5317780077021120954">Lagre</translation>
-<translation id="5323972449344932352">Start Chrome</translation>
 <translation id="5324858694974489420">Foreldreinnstillinger</translation>
 <translation id="5327248766486351172">Navn</translation>
 <translation id="5345040418939504969">Slettet <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +390,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> datasparing</translation>
 <translation id="6165508094623778733">Les mer</translation>
 <translation id="6192792657125177640">Unntak</translation>
-<translation id="6208263165776660488">Chrome-fanene er flyttet</translation>
 <translation id="6231464350722415003">Tillater Javascript på nettstedene du oppgir, og blokkerer Javascript på alle andre nettsteder.</translation>
 <translation id="6232535412751077445">Hvis du slår på «Deaktivering av sporing», blir det sendt en forespørsel sammen med nettrafikken din. Hvilke virkninger dette eventuelt får, avhenger av om det aktuelle nettstedet svarer på forespørselen eller ikke, samt hvordan forespørselen tolkes.
 
@@ -490,9 +478,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> bruker posisjonen din for å vise lokale søkeresultater</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjelp<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Slett bokmerket</translation>
-<translation id="7324738665594301612">Vi tester sending av HTTPS-sider gjennom Google-tjenerne som en del av et eksperiment.</translation>
 <translation id="7346217184097589238">Lagrede nettstedsinnstillinger blir ikke slettet, og disse kan gjenspeile nettvanene dine.</translation>
-<translation id="7346909386216857016">Greit</translation>
 <translation id="7347770551817603360">Innhold uten nett</translation>
 <translation id="7363354739009474003">Laster inn <ph name="VIDEO_TITLE" /> ...</translation>
 <translation id="7366340029385295517">Caster til <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +501,6 @@
 <translation id="7588950540487816470">Fysisk nett</translation>
 <translation id="7596558890252710462">Operativsystem</translation>
 <translation id="7599840151813361502">Du logges ikke av <ph name="BEGIN_LINK" />Google-kontoene<ph name="END_LINK" /> dine</translation>
-<translation id="7603403729818446828">Se fanene dine sammen med andre nylig brukte apper på oversiktsskjermen på telefonen. Du kan kontrollere dette i <ph name="BEGIN_LINK" />innstillingene<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Midlertidig stanset</translation>
 <translation id="7612619742409846846">Logget på Google som</translation>
 <translation id="7619072057915878432">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt på grunn av nettverksproblemer.</translation>
@@ -622,7 +607,7 @@
 <translation id="8987061207681586800">Tilpass Chrome</translation>
 <translation id="9019902583201351841">Administrert av foreldrene dine</translation>
 <translation id="9020607083536754075">Lukk den aktive fanen og gå tilbake til den forrige appen</translation>
-<translation id="9038649477754266430">Bruk en forslagstjeneste for å laste inn sider raskere</translation>
+<translation id="9038649477754266430">Bruk en prediksjonstjeneste for å laste inn sider raskere</translation>
 <translation id="9050666287014529139">Passordfrase</translation>
 <translation id="9060538597317784206">Vis <ph name="APP_NAME" />-appen i Play Butikk. Vurdering: <ph name="APP_RATING" />.</translation>
 <translation id="9063523880881406963">Slå av Bruk skrivebordsversjon</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 0a913d209..b91ec94 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Witamy, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Szukaj</translation>
 <translation id="1389974829397082527">Tu nie ma zakładek</translation>
-<translation id="1390350022570422499">Chrome może teraz wyszukiwać i pokazywać pobliskie strony internetowe przy użyciu Bluetooth.
-
-Gdy Twoje urządzenie jest odblokowane, Chrome wyszukuje strony wysyłane przez obiekty w pobliżu. Następnie strony te trafiają do usługi Google, która zwiększa trafność wyników.
-
-Internet rzeczy możesz skonfigurować w ustawieniach prywatności w Chrome.</translation>
 <translation id="1404122904123200417">Umieszczone na <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Bez śledzenia”</translation>
 <translation id="1409879593029778104">Plik <ph name="FILE_NAME" /> nie został pobrany, bo już istnieje.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Zaawansowane</translation>
 <translation id="1984937141057606926">Dozwolone, z wyjątkiem witryn innych firm</translation>
 <translation id="1994173015038366702">URL strony</translation>
+<translation id="2001120796168634316">Zapisz linkowaną stronę na później</translation>
 <translation id="200669432486043882">Zastąp plik</translation>
 <translation id="2038563949887743358">Włącz opcję „Wersja na komputer”</translation>
 <translation id="2073235970478114994">Załaduj zdjęcia</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Zawęź</translation>
 <translation id="2315043854645842844">Wybieranie certyfikatu klienta nie jest obsługiwane przez ten system operacyjny.</translation>
 <translation id="2316129865977710310">Nie, dziękuję</translation>
-<translation id="2319528413610359757">Dla czytelników – <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Przeciągaj suwak, by umożliwić wygodne czytanie. Gdy dwukrotnie klikniesz akapit, tekst powiększy się co najmniej do tej wielkości.</translation>
 <translation id="2329597144923131178">Zaloguj się, by korzystać z zakładek, historii, haseł i innych ustawień na wszystkich swoich urządzeniach.</translation>
 <translation id="2343328333327081434">Instaluję…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">przed chwilą</translation>
 <translation id="2770465223704140727">Usuń z listy</translation>
 <translation id="278029852808208386">Nie znaleziono urządzeń Bluetooth. <ph name="BEGIN_LINK" />Wyszukaj ponownie<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Nie widzisz swojego urządzenia? <ph name="BEGIN_LINK" />Skorzystaj z pomocy<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Kliknij przycisk Wstecz, by wyjść z trybu pełnoekranowego.</translation>
 <translation id="2842985007712546952">Folder nadrzędny</translation>
 <translation id="2870560284913253234">Witryna</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Podpowiedzi przy błędach nawigacji</translation>
 <translation id="3732088672634061408">Nie udało się pobrać zainteresowań.</translation>
 <translation id="3738139272394829648">Dotknij, by wyszukać</translation>
-<translation id="3774280986422214650">Jeśli włączysz tę funkcję, weźmiesz udział w eksperymencie polegającym na przekazywaniu stron HTTPS przez serwery Google.</translation>
 <translation id="3809549525127675114">Zakończono odtwarzanie „<ph name="VIDEO_TITLE" />”</translation>
 <translation id="3828029223314399057">Przeszukaj zakładki</translation>
 <translation id="3871171699884605801">Na kontach dla dzieci nie można usunąć historii przeglądania</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Zapisz link</translation>
 <translation id="4002066346123236978">Tytuł</translation>
 <translation id="4035611068038188272">Zakładki zajmują obecnie <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">W pobliżu są strony internetu rzeczy</translation>
 <translation id="4042870126885713738">Pokazuj podpowiedzi, gdy nie można znaleźć adresu internetowego lub nawiązać połączenia</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Informacje prawne</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Typy danych</translation>
 <translation id="4827948050554950725">Dodaj kartę kredytową</translation>
 <translation id="4836364883164334657">Połączenie ze stroną nie jest prywatne. Hakerzy mogą próbować wykraść Twoje informacje z <ph name="DOMAIN_NAME" /> (np. zdjęcia, hasła, wiadomości lub dane kart kredytowych).</translation>
-<translation id="4842511359652954519">Dowiedz się więcej</translation>
 <translation id="4850886885716139402">Widok</translation>
 <translation id="4875622588773761625">Czy <ph name="PASSWORD_MANAGER_BRAND" /> ma zaktualizować hasło do tej strony?</translation>
 <translation id="4881695831933465202">Otwórz</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Dalej</translation>
 <translation id="4996978546172906250">Udostępnij przez</translation>
 <translation id="5000922062037820727">Zablokowane (zalecane)</translation>
-<translation id="5014582685689328551">Zobacz je w Chrome</translation>
 <translation id="5016205925109358554">Szeryfowa</translation>
 <translation id="5039804452771397117">Zezwalaj</translation>
 <translation id="5040262127954254034">Prywatność</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Szukaj na zapisanych stronach</translation>
 <translation id="5313967007315987356">Dodaj stronę</translation>
 <translation id="5317780077021120954">Zapisz</translation>
-<translation id="5323972449344932352">Uruchom Chrome</translation>
 <translation id="5324858694974489420">Ustawienia rodzicielskie</translation>
 <translation id="5327248766486351172">Nazwa</translation>
 <translation id="5345040418939504969">Usunięto: <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Oszczędność danych: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Więcej informacji</translation>
 <translation id="6192792657125177640">Wyjątki</translation>
-<translation id="6208263165776660488">Karty Chrome zostały przeniesione</translation>
 <translation id="6231464350722415003">Zezwalaj na JavaScript na określonych stronach i blokuj go wszędzie indziej</translation>
 <translation id="6232535412751077445">Włączenie opcji „Bez śledzenia” oznacza, że podczas przeglądania będzie wysyłane żądanie. Jego wynik zależy od tego, czy strona na nie odpowie oraz jak zostanie ono zinterpretowane.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> korzysta z danych o Twojej lokalizacji, by pokazywać wyniki wyszukiwania lokalnego</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoc<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Usuń zakładkę</translation>
-<translation id="7324738665594301612">W ramach eksperymentu testujemy przekazywanie stron HTTPS przez serwery Google.</translation>
 <translation id="7346217184097589238">Zapisane ustawienia witryny nie zostaną usunięte i mogą odzwierciedlać Twoje nawyki przeglądania.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Treść offline</translation>
 <translation id="7363354739009474003">Wczytuję „<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Przesyłam na ekran <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Internet rzeczy</translation>
 <translation id="7596558890252710462">System operacyjny</translation>
 <translation id="7599840151813361502">Nie spowoduje to wylogowania Cię z <ph name="BEGIN_LINK" />kont Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Karty będą teraz widoczne  obok ostatnio używanych aplikacji na ekranie Przegląd na telefonie. Opcje wyświetlania możesz określić w <ph name="BEGIN_LINK" />Ustawieniach<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Wstrzymano</translation>
 <translation id="7612619742409846846">Jesteś zalogowany w Google jako</translation>
 <translation id="7619072057915878432">Nie udało się pobrać pliku <ph name="FILE_NAME" /> z powodu problemów z siecią.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">od początku</translation>
 <translation id="8200772114523450471">Wznów</translation>
 <translation id="8209050860603202033">Otwórz grafikę</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> chce się połączyć z:</translation>
 <translation id="8218346974737627104">Potwierdź, że chcesz się zalogować</translation>
 <translation id="8218934717680664417">Teraz możesz wyszukiwać jednym kliknięciem</translation>
 <translation id="8223946939421658889">Wyczyść dane</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 673e323..181b5c9 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
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Olá, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Pesquisar</translation>
 <translation id="1389974829397082527">Não há favoritos aqui</translation>
-<translation id="1390350022570422499">Agora o Chrome pode encontrar e mostrar páginas da Web nas proximidades usando o Bluetooth.
-
-O Chrome verificará páginas nas proximidades quando o dispositivo estiver desbloqueado. Essas páginas passarão por um serviço do Google para melhorar a qualidade dos resultados de página.
-
-É possível controlar a Web física nas configurações de privacidade do Chrome.</translation>
 <translation id="1404122904123200417">Incorporado em <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Não rastrear"</translation>
 <translation id="1409879593029778104">O download de <ph name="FILE_NAME" /> foi impedido porque o arquivo já existe.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avançado</translation>
 <translation id="1984937141057606926">Permitidos, exceto de terceiros</translation>
 <translation id="1994173015038366702">URL do site</translation>
+<translation id="2001120796168634316">Salvar página vinculada para mais tarde</translation>
 <translation id="200669432486043882">Substituir arquivo</translation>
 <translation id="2038563949887743358">Ativar "Ver versão para Web"</translation>
 <translation id="2073235970478114994">Carregar imagens</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Refinar</translation>
 <translation id="2315043854645842844">A seleção de certificado do cliente não é compatível com o sistema operacional.</translation>
 <translation id="2316129865977710310">Não.</translation>
-<translation id="2319528413610359757">Para leitores de <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Arraste o controle deslizante até que você possa ler confortavelmente. O texto deve ter pelo menos este tamanho após um toque duplo em um parágrafo.</translation>
 <translation id="2329597144923131178">Faça login para que favoritos, histórico, senhas e outras configurações fiquem disponíveis em todos os seus dispositivos.</translation>
 <translation id="2343328333327081434">Instalando...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">agora mesmo</translation>
 <translation id="2770465223704140727">Remover da lista</translation>
 <translation id="278029852808208386">Nenhum dispositivo Bluetooth foi encontrado. <ph name="BEGIN_LINK" />Pesquisar novamente<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Não está vendo seu dispositivo? <ph name="BEGIN_LINK" />Receba ajuda<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Toque no botão "Voltar" para sair da tela cheia.</translation>
 <translation id="2842985007712546952">Pasta mãe</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Sugestões de erro de navegação</translation>
 <translation id="3732088672634061408">Não foi possível recuperar interesses.</translation>
 <translation id="3738139272394829648">Tocar para pesquisar</translation>
-<translation id="3774280986422214650">Se você ativar este recurso, fará parte de um experimento que utiliza proxies de páginas HTTPS por meio de servidores do Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" concluído</translation>
 <translation id="3828029223314399057">Pesquisar favoritos</translation>
 <translation id="3871171699884605801">Não é possível limpar o histórico de navegação com contas para crianças</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Salvar link</translation>
 <translation id="4002066346123236978">Título</translation>
 <translation id="4035611068038188272">No momento, os favoritos estão ocupando <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Há páginas da Web física nas proximidades</translation>
 <translation id="4042870126885713738">Mostrar sugestões quando um endereço da Web não for convertido ou uma conexão não puder ser estabelecida</translation>
 <translation id="4056223980640387499">Sépia</translation>
 <translation id="4062305924942672200">Informações legais</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipos de dados</translation>
 <translation id="4827948050554950725">Adicionar cartão de crédito</translation>
 <translation id="4836364883164334657">Sua conexão com este site não é particular. Invasores podem tentar roubar suas informações, como fotos, senhas, mensagens e cartões de crédito de <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Leia mais</translation>
 <translation id="4850886885716139402">Visualizar</translation>
 <translation id="4875622588773761625">Deseja que <ph name="PASSWORD_MANAGER_BRAND" /> atualize sua senha para este site?</translation>
 <translation id="4881695831933465202">Abrir</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avançar</translation>
 <translation id="4996978546172906250">Compartilhar via</translation>
 <translation id="5000922062037820727">Bloqueada (recomendado)</translation>
-<translation id="5014582685689328551">Use o Chrome para navegar nelas</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5040262127954254034">Privacidade</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Pesquisar páginas salvas</translation>
 <translation id="5313967007315987356">Adicionar site</translation>
 <translation id="5317780077021120954">Salvar</translation>
-<translation id="5323972449344932352">Iniciar o Google Chrome</translation>
 <translation id="5324858694974489420">Configurações parentais</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> excluído</translation>
@@ -400,7 +391,6 @@
 <translation id="6159335304067198720">Economia de dados de <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Saiba mais</translation>
 <translation id="6192792657125177640">Exceções</translation>
-<translation id="6208263165776660488">As guias do Chrome foram movidas</translation>
 <translation id="6231464350722415003">Permitir JavaScript em websites que você especificar, bloqueando-o para o restante da Web</translation>
 <translation id="6232535412751077445">A ativação de "Não rastrear" significa que uma solicitação será incluída no tráfego de navegação. Todo efeito depende de um website responder à solicitação e de como a solicitação é interpretada.
 
@@ -489,9 +479,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> usa sua localização para mostrar resultados de pesquisa locais</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Excluir favorito</translation>
-<translation id="7324738665594301612">Estamos testando o uso de proxy de páginas HTTPS por meio de servidores do Google como parte de um experimento.</translation>
 <translation id="7346217184097589238">As configurações salvas em sites não serão excluídas e podem refletir seus hábitos de navegação.</translation>
-<translation id="7346909386216857016">Ok, entendi.</translation>
 <translation id="7347770551817603360">Conteúdo off-line</translation>
 <translation id="7363354739009474003">Carregando "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Transmitindo em <ph name="SCREEN_NAME" /></translation>
@@ -514,7 +502,6 @@
 <translation id="7588950540487816470">Web física</translation>
 <translation id="7596558890252710462">Sistema operacional</translation>
 <translation id="7599840151813361502">Você não será desconectado das suas <ph name="BEGIN_LINK" />Contas do Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Veja suas guias com outros aplicativos recentes na tela "Visão geral" do seu smartphone. Controle isso em <ph name="BEGIN_LINK" />Config.<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Pausado</translation>
 <translation id="7612619742409846846">Conectado ao Google como</translation>
 <translation id="7619072057915878432">Falha no download do arquivo <ph name="FILE_NAME" /> devido a falhas na rede.</translation>
@@ -563,6 +550,7 @@
 <translation id="8173098127580644436">desde o começo</translation>
 <translation id="8200772114523450471">Retomar</translation>
 <translation id="8209050860603202033">Abrir imagem</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> deseja se conectar a:</translation>
 <translation id="8218346974737627104">Confirmar login</translation>
 <translation id="8218934717680664417">Agora é possível pesquisar com um toque</translation>
 <translation id="8223946939421658889">Limpar 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 87274fb..5f94c8f 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
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Olá, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Pesquisar</translation>
 <translation id="1389974829397082527">Nenhum marcador aqui</translation>
-<translation id="1390350022570422499">Agora, o Chrome pode procurar e apresentar páginas Web próximas através de Bluetooth.
-
-O Chrome procura páginas próximas quando o dispositivo está desbloqueado. Estas páginas passam por um serviço Google para melhorar a qualidade dos resultados da página.
-
-Pode controlar a Web física nas definições de privacidade do Chrome.</translation>
 <translation id="1404122904123200417">Incorporado em <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Não Monitorizar"</translation>
 <translation id="1409879593029778104">A transferência de <ph name="FILE_NAME" /> foi impedida porque o ficheiro já existe.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avançadas</translation>
 <translation id="1984937141057606926">Permitidos, exceto de terceiros</translation>
 <translation id="1994173015038366702">URL do site</translation>
+<translation id="2001120796168634316">Guardar pág. ligação p/ depois</translation>
 <translation id="200669432486043882">Substituir ficheiro</translation>
 <translation id="2038563949887743358">Ativar Pedir site para computador</translation>
 <translation id="2073235970478114994">Carregar imagens</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Refinar</translation>
 <translation id="2315043854645842844">O sistema operativo não suporta a seleção do certificado do lado do cliente.</translation>
 <translation id="2316129865977710310">Não, obrigado</translation>
-<translation id="2319528413610359757">Para leitores de <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Arraste o controlo de deslize até conseguir ler confortavelmente. O texto deve ter, pelo menos, este tamanho depois de tocar duas vezes num parágrafo.</translation>
 <translation id="2329597144923131178">Inicie sessão para aceder aos marcadores, ao histórico, às palavras-passe e a outras definições em todos os dispositivos.</translation>
 <translation id="2343328333327081434">A instalar...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">agora mesmo</translation>
 <translation id="2770465223704140727">Remover da lista</translation>
 <translation id="278029852808208386">Não foram encontrados dispositivos Bluetooth. <ph name="BEGIN_LINK" />Procure novamente<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Não vê o seu dispositivo? <ph name="BEGIN_LINK" />Obter ajuda<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Toque no botão de retrocesso para sair do ecrã inteiro.</translation>
 <translation id="2842985007712546952">Pasta superior</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Sugestões de erros de navegação</translation>
 <translation id="3732088672634061408">Não foi possível obter os interesses.</translation>
 <translation id="3738139272394829648">Tocar para pesquisar</translation>
-<translation id="3774280986422214650">Se ativar esta funcionalidade, fará parte de uma experiência que utiliza páginas HTTPS com proxy através dos servidores da Google.</translation>
 <translation id="3809549525127675114">"<ph name="VIDEO_TITLE" />" concluído</translation>
 <translation id="3828029223314399057">Pesquisar marcadores</translation>
 <translation id="3871171699884605801">Não é possível limpar o histórico de navegação nas contas para crianças</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Guardar link</translation>
 <translation id="4002066346123236978">Título</translation>
 <translation id="4035611068038188272">Atualmente, os marcadores ocupam <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Existem páginas da Web física próximas</translation>
 <translation id="4042870126885713738">Mostrar sugestões quando um endereço Web não responder ou não for possível estabelecer ligação</translation>
 <translation id="4056223980640387499">Sépia</translation>
 <translation id="4062305924942672200">Informações legais</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Tipos de dados</translation>
 <translation id="4827948050554950725">Adicionar cartão de crédito</translation>
 <translation id="4836364883164334657">A sua ligação a este site não é privada. É possível que utilizadores mal intencionados estejam a tentar roubar as suas informações (por exemplo, fotos, palavras-passe, mensagens e cartões de crédito) de <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Ler mais</translation>
 <translation id="4850886885716139402">Ver</translation>
 <translation id="4875622588773761625">Pretende que o <ph name="PASSWORD_MANAGER_BRAND" /> atualize a sua palavra-passe para este site?</translation>
 <translation id="4881695831933465202">Abrir</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Avançar</translation>
 <translation id="4996978546172906250">Partilhar através de</translation>
 <translation id="5000922062037820727">Bloqueado (recomendado)</translation>
-<translation id="5014582685689328551">Utilize o Chrome para os visualizar</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5040262127954254034">Privacidade</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Pesquisar páginas guardadas</translation>
 <translation id="5313967007315987356">Adicionar site</translation>
 <translation id="5317780077021120954">Guardar</translation>
-<translation id="5323972449344932352">Iniciar o Chrome</translation>
 <translation id="5324858694974489420">Definições parentais</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> eliminado</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> de poupança de dados</translation>
 <translation id="6165508094623778733">Saiba mais</translation>
 <translation id="6192792657125177640">Excepções</translation>
-<translation id="6208263165776660488">Os separadores do Chrome mudaram de sítio</translation>
 <translation id="6231464350722415003">Permitir JavaScript em site especificados e bloqueá-lo no resto da Web</translation>
 <translation id="6232535412751077445">A ativação da funcionalidade "Não Monitorizar" significa que é incluído um pedido no seu tráfego de navegação. Qualquer efeito depende de um Website responder ou não ao pedido e do modo como o pedido é interpretado.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utiliza a sua localização para mostrar resultados da pesquisa locais</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Eliminar marcador</translation>
-<translation id="7324738665594301612">Estamos a testar a utilização de páginas HTTPS com proxy através dos servidores da Google no âmbito de uma experiência.</translation>
 <translation id="7346217184097589238">As definições de sites guardadas não são eliminadas e podem refletir os seus hábitos de navegação.</translation>
-<translation id="7346909386216857016">OK, compreendi</translation>
 <translation id="7347770551817603360">Conteúdo offline</translation>
 <translation id="7363354739009474003">A carregar "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">A transmitir para <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Web física</translation>
 <translation id="7596558890252710462">Sistema operativo</translation>
 <translation id="7599840151813361502">A sessão nas suas <ph name="BEGIN_LINK" />Contas Google<ph name="END_LINK" /> não é terminada</translation>
-<translation id="7603403729818446828">Veja os seus separadores com outras aplicações recentes no ecrã Vista geral do telemóvel. Pode controlar esta função nas <ph name="BEGIN_LINK" />Definições<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Em pausa</translation>
 <translation id="7612619742409846846">Iniciou sessão no Google como</translation>
 <translation id="7619072057915878432">A transferência de <ph name="FILE_NAME" /> falhou devido a falhas de rede.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">desde sempre</translation>
 <translation id="8200772114523450471">Continuar</translation>
 <translation id="8209050860603202033">Abrir imagem</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> pretende estabelecer ligação a:</translation>
 <translation id="8218346974737627104">Confirmar início de sessão</translation>
 <translation id="8218934717680664417">Agora pode pesquisar com um toque</translation>
 <translation id="8223946939421658889">Limpar 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 fbe07e9..73859e96 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Bună ziua, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Caută</translation>
 <translation id="1389974829397082527">Dosarul nu conține marcaje</translation>
-<translation id="1390350022570422499">Acum, Chrome poate să găsească și să afișeze pagini web din apropiere folosind conexiunea Bluetooth.
-
-Chrome va căuta pagini din apropiere când dispozitivul este deblocat. Aceste pagini vor fi procesate de un serviciu Google pentru a îmbunătăți calitatea rezultatelor cu pagini.
-
-Poți să controlezi Webul material din setările de confidențialitate Chrome.</translation>
 <translation id="1404122904123200417">Încorporat în <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Nu urmări”</translation>
 <translation id="1409879593029778104">Descărcarea fișierului <ph name="FILE_NAME" /> a fost împiedicată, deoarece fișierul există deja.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avansate</translation>
 <translation id="1984937141057606926">Permise, cu excepția celor terță parte</translation>
 <translation id="1994173015038366702">Adresa URL a site-ului</translation>
+<translation id="2001120796168634316">Salvează pagina asociată pentru mai târziu</translation>
 <translation id="200669432486043882">Înlocuiește un fișier</translation>
 <translation id="2038563949887743358">Activează opțiunea Versiune site pentru desktop</translation>
 <translation id="2073235970478114994">Încarcă imaginile</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Rafinează</translation>
 <translation id="2315043854645842844">Selectarea certificatelor pe partea de client nu este acceptată de sistemul de operare.</translation>
 <translation id="2316129865977710310">Nu, mulțumesc</translation>
-<translation id="2319528413610359757">Pentru cititorii <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Trage cursorul până poți citi textul cu ușurință. Textul trebuie să fie cel puțin la fel de mare ca acesta după o atingere dublă pe un paragraf.</translation>
 <translation id="2329597144923131178">Conectează-te și accesează marcajele, istoricul, parolele și alte setări pe toate dispozitivele.</translation>
 <translation id="2343328333327081434">Se instalează…</translation>
@@ -136,6 +131,8 @@
 <translation id="2762000892062317888">adineauri</translation>
 <translation id="2770465223704140727">Elimină din listă</translation>
 <translation id="278029852808208386">Nu s-a găsit niciun dispozitiv Bluetooth. <ph name="BEGIN_LINK" />Caută din nou<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Dispozitivul nu apare? <ph name="BEGIN_LINK" />Obține ajutor<ph name="END_LINK" /></translation>
+<translation id="2836148919159985482">Atinge butonul Înapoi pentru a ieși din ecranul complet.</translation>
 <translation id="2842985007712546952">Dosar părinte</translation>
 <translation id="2870560284913253234">Site</translation>
 <translation id="2888126860611144412">Despre Chrome</translation>
@@ -198,7 +195,6 @@
 <translation id="3672452749423051839">Sugestii pentru erori de navigare</translation>
 <translation id="3732088672634061408">Interesele nu au putut fi preluate.</translation>
 <translation id="3738139272394829648">Atinge pentru a căuta</translation>
-<translation id="3774280986422214650">Dacă activezi această funcție, vei lua parte la un experiment în cadrul căruia serverele Google sunt folosite ca proxy-uri pentru paginile HTTPS.</translation>
 <translation id="3809549525127675114">Videoclipul „<ph name="VIDEO_TITLE" />” s-a terminat</translation>
 <translation id="3828029223314399057">Căutați în marcaje</translation>
 <translation id="3871171699884605801">Istoricul de navigare nu poate fi golit folosind conturile de copii</translation>
@@ -213,7 +209,6 @@
 <translation id="3992315671621218278">Salvați linkul</translation>
 <translation id="4002066346123236978">Titlu</translation>
 <translation id="4035611068038188272">Marcajele ocupă momentan <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Pagini din Webul material sunt în apropiere</translation>
 <translation id="4042870126885713738">Afișează sugestii atunci când o adresă web nu se rezolvă sau nu poate fi stabilită o conexiune</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Informații juridice</translation>
@@ -273,7 +268,6 @@
 <translation id="4816465935029283692">Tipuri de date</translation>
 <translation id="4827948050554950725">Adaugă un card de credit</translation>
 <translation id="4836364883164334657">Conexiunea la acest site nu este privată. Atacatorii ar putea încerca să-ți fure informațiile (de exemplu, fotografii, parole, mesaje și carduri de credit) de pe <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Află mai multe</translation>
 <translation id="4850886885716139402">Afișează</translation>
 <translation id="4875622588773761625">Dorești ca <ph name="PASSWORD_MANAGER_BRAND" /> să îți actualizeze parola pentru acest site?</translation>
 <translation id="4881695831933465202">Deschide</translation>
@@ -286,7 +280,6 @@
 <translation id="497421865427891073">Înainte</translation>
 <translation id="4996978546172906250">Trimiteți prin</translation>
 <translation id="5000922062037820727">Blocată (recomandat)</translation>
-<translation id="5014582685689328551">Folosește Chrome pentru a le răsfoi</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Permite</translation>
 <translation id="5040262127954254034">Confidențialitate</translation>
@@ -312,6 +305,7 @@
 <translation id="5233638681132016545">Filă nouă</translation>
 <translation id="5271967389191913893">Dispozitivul nu poate deschide conținutul de descărcat.</translation>
 <translation id="5275558766013849309">Filele se vor afla în același loc ca aplicațiile recente.</translation>
+<translation id="528192093759286357">Trage din partea de sus și atinge butonul Înapoi pentru a ieși din ecranul complet.</translation>
 <translation id="5284584623296338184">Modificările marcajelor, istoricului, parolelor sau ale altor setări nu vor mai fi sincronizate cu Contul Google. Totuși, datele existente vor rămâne stocate în Contul Google.</translation>
 <translation id="5301954838959518834">OK, am înțeles</translation>
 <translation id="5302048478445481009">Limbă</translation>
@@ -320,7 +314,6 @@
 <translation id="5308933389783727448">Caută în paginile salvate</translation>
 <translation id="5313967007315987356">Adaugă un site</translation>
 <translation id="5317780077021120954">Salvează</translation>
-<translation id="5323972449344932352">Lansează Chrome</translation>
 <translation id="5324858694974489420">Setări parentale</translation>
 <translation id="5327248766486351172">Nume</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> a fost șters</translation>
@@ -399,7 +392,6 @@
 <translation id="6159335304067198720">Economie de date de <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Află mai multe</translation>
 <translation id="6192792657125177640">Excepții</translation>
-<translation id="6208263165776660488">Filele Chrome au fost mutate</translation>
 <translation id="6231464350722415003">Permite accesul serviciului JavaScript la site-urile pe care le specifici în timp ce îl restricționezi pentru restul site-urilor</translation>
 <translation id="6232535412751077445">Dacă activezi opțiunea „Nu urmări”, o solicitare va fi inclusă împreună cu traficul de navigare. Efectul variază în funcție de răspunsul site-ului la solicitare și în funcție de modul în care este interpretată solicitarea.
 
@@ -488,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> folosește locația ta pentru a afișa rezultate locale ale căutării</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajutor<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Ștergeți marcajul</translation>
-<translation id="7324738665594301612">Testăm utilizarea serverelor Google ca proxy-uri pentru paginile HTTPS în cadrul unui experiment.</translation>
 <translation id="7346217184097589238">Setările salvate pentru site-uri nu vor fi șterse și pot reflecta obiceiurile de navigare.</translation>
-<translation id="7346909386216857016">Ok, am înțeles</translation>
 <translation id="7347770551817603360">Conținut offline</translation>
 <translation id="7363354739009474003">Se încarcă videoclipul „<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Se proiectează pe <ph name="SCREEN_NAME" /></translation>
@@ -513,7 +503,6 @@
 <translation id="7588950540487816470">Web material</translation>
 <translation id="7596558890252710462">Sistem de operare</translation>
 <translation id="7599840151813361502">Nu vei fi deconectat(ă) de la <ph name="BEGIN_LINK" />Conturile Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Vezi filele împreună cu alte aplicații recente pe ecranul Recente de pe telefon. Poți să controlezi acest aspect din <ph name="BEGIN_LINK" />Setări<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Întreruptă</translation>
 <translation id="7612619742409846846">Conectat(ă) la Google ca</translation>
 <translation id="7619072057915878432">Descărcarea fișierului <ph name="FILE_NAME" /> nu a reușit din cauza erorilor de rețea.</translation>
@@ -562,6 +551,7 @@
 <translation id="8173098127580644436">de la început</translation>
 <translation id="8200772114523450471">Reia</translation>
 <translation id="8209050860603202033">Deschideți imaginea</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> dorește să se conecteze la:</translation>
 <translation id="8218346974737627104">Confirmați conectarea</translation>
 <translation id="8218934717680664417">Acum poți căuta cu o singură atingere</translation>
 <translation id="8223946939421658889">Șterge datele</translation>
@@ -636,6 +626,7 @@
 <translation id="917685106653909562">Există pagini din Webul material în apropiere</translation>
 <translation id="9187199695613236444">Vizualizare adecvată pentru dispozitivele mobile</translation>
 <translation id="9192643434065497760">Activează Bluetooth în <ph name="BEGIN_LINK" />setările dispozitivului<ph name="END_LINK" /> pentru a permite asocierea.</translation>
+<translation id="9198708126133947749">Înlocuiește datele acestui dispozitiv cu datele contului <ph name="TO_ACCOUNT" />. Poți recupera datele existente comutând înapoi la <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="9206873250291191720">A</translation>
 <translation id="932327136139879170">Pagina de pornire</translation>
 <translation id="938850635132480979">Eroare: <ph name="ERROR_CODE" /></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 0aade5d..4fdfdba 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Здравствуйте, <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Поиск</translation>
 <translation id="1389974829397082527">Закладок пока нет</translation>
-<translation id="1390350022570422499">С помощью Bluetooth Chrome может находить веб-страницы, связанные с объектами вокруг вас, и показывать их.
-
-Браузер будет искать их, когда ваше устройство разблокировано. Чтобы улучшить работу функции, страницы будут отправляться через сервис Google.
-
-Включить или отключить Интернет вокруг нас можно в разделе "Личные данные" настроек Chrome.</translation>
 <translation id="1404122904123200417">Встроено в <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Запрет отслеживания</translation>
 <translation id="1409879593029778104">Скачивание файла <ph name="FILE_NAME" /> остановлено, так как он уже существует.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Дополнительные</translation>
 <translation id="1984937141057606926">Разрешено, кроме сторонних сайтов</translation>
 <translation id="1994173015038366702">Адрес сайта</translation>
+<translation id="2001120796168634316">Сохранить страницу офлайн</translation>
 <translation id="200669432486043882">Заменить файл</translation>
 <translation id="2038563949887743358">Включить полную версию сайта</translation>
 <translation id="2073235970478114994">Загрузить изображения</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Уточнить</translation>
 <translation id="2315043854645842844">Сертификат, выбранный клиентом, не поддерживается операционной системой.</translation>
 <translation id="2316129865977710310">Спасибо, не надо</translation>
-<translation id="2319528413610359757">Читателям издания "<ph name="PUBLISHER" />"</translation>
 <translation id="2321958826496381788">Перемещайте ползунок, пока текст не станет удобным для чтения. После двойного нажатия на абзац текст должен быть такого размера.</translation>
 <translation id="2329597144923131178">Войдите, чтобы синхронизировать закладки, пароли, историю и т. д. на всех устройствах.</translation>
 <translation id="2343328333327081434">Установка…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">только что</translation>
 <translation id="2770465223704140727">Удалить из списка</translation>
 <translation id="278029852808208386">Устройства Bluetooth не обнаружены. <ph name="BEGIN_LINK" />Повторите попытку<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Не можете найти устройство? <ph name="BEGIN_LINK" />Узнайте<ph name="END_LINK" />, как это исправить.</translation>
 <translation id="2836148919159985482">Чтобы выйти из полноэкранного режима, нажмите кнопку "Назад".</translation>
 <translation id="2842985007712546952">Родительская папка</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Подсказки при ошибке навигации</translation>
 <translation id="3732088672634061408">Не удалось получить данные об интересах</translation>
 <translation id="3738139272394829648">Быстрый поиск</translation>
-<translation id="3774280986422214650">Это экспериментальная функция. Когда она включена, серверы Google сжимают HTTP-страницы.</translation>
 <translation id="3809549525127675114">Воспроизведение видео "<ph name="VIDEO_TITLE" />" завершено</translation>
 <translation id="3828029223314399057">Искать в закладках</translation>
 <translation id="3871171699884605801">Историю просмотров нельзя очистить из детского аккаунта</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Сохранить ссылку</translation>
 <translation id="4002066346123236978">Название</translation>
 <translation id="4035611068038188272">Сохраненные закладки занимают <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Интернет вокруг нас нашел веб-страницы.</translation>
 <translation id="4042870126885713738">Предлагать альтернативы, если веб-адрес недоступен или с ним не удается установить соединение</translation>
 <translation id="4056223980640387499">Сепия</translation>
 <translation id="4062305924942672200">Юридическая информация</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Типы данных</translation>
 <translation id="4827948050554950725">Добавить кредитную карту</translation>
 <translation id="4836364883164334657">Подключение не защищено. Злоумышленники могут похитить ваши данные (например, пароли, сообщения или номера банковских карт) в домене <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Подробнее…</translation>
 <translation id="4850886885716139402">Посмотреть</translation>
 <translation id="4875622588773761625">Обновить пароль для этого сайта в сервисе "<ph name="PASSWORD_MANAGER_BRAND" />"?</translation>
 <translation id="4881695831933465202">Открыть</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Вперед</translation>
 <translation id="4996978546172906250">Способ отправки</translation>
 <translation id="5000922062037820727">Заблокировано (рекомендуется)</translation>
-<translation id="5014582685689328551">Откройте их в Chrome.</translation>
 <translation id="5016205925109358554">С засечками</translation>
 <translation id="5039804452771397117">Разрешить</translation>
 <translation id="5040262127954254034">Личные данные</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Искать по сохраненным страницам</translation>
 <translation id="5313967007315987356">Добавить сайт</translation>
 <translation id="5317780077021120954">Сохранить</translation>
-<translation id="5323972449344932352">Запустить Chrome</translation>
 <translation id="5324858694974489420">Родительские настройки</translation>
 <translation id="5327248766486351172">Название</translation>
 <translation id="5345040418939504969">Закладка "<ph name="BOOKMARK_TITLE" />" удалена</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Сжатие данных: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Подробнее...</translation>
 <translation id="6192792657125177640">Исключения</translation>
-<translation id="6208263165776660488">Где искать вкладки</translation>
 <translation id="6231464350722415003">Разрешить JavaScript на указанных сайтах и блокировать на всех остальных</translation>
 <translation id="6232535412751077445">Если вы запретите отслеживание, в запросы браузера будет включена специальная команда. Сайты могут интерпретировать ее и отвечать на нее по-разному.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> использует ваше местоположение, чтобы показывать результаты поиска по адресам.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Справка<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Удалить закладку</translation>
-<translation id="7324738665594301612">Мы тестируем новую функцию: серверы Google сжимают данные HTTPS-страниц.</translation>
 <translation id="7346217184097589238">Настройки сайтов не изменятся, а следовательно сохранятся и данные о вашей работе в Интернете.</translation>
-<translation id="7346909386216857016">ОК</translation>
 <translation id="7347770551817603360">Офлайн-контент</translation>
 <translation id="7363354739009474003">Загрузка видео "<ph name="VIDEO_TITLE" />"…</translation>
 <translation id="7366340029385295517">Транслируется на экран устройства "<ph name="SCREEN_NAME" />"</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Интернет вокруг нас</translation>
 <translation id="7596558890252710462">Операционная система</translation>
 <translation id="7599840151813361502">Вам не придется повторно входить в свои <ph name="BEGIN_LINK" />аккаунты Google<ph name="END_LINK" />.</translation>
-<translation id="7603403729818446828">Вы найдете все вкладки в списке недавно использованных приложений, нажав на значок "Обзор". Вернуться к прежнему интерфейсу можно в <ph name="BEGIN_LINK" />настройках<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Приостановлен</translation>
 <translation id="7612619742409846846">Вы вошли в аккаунт</translation>
 <translation id="7619072057915878432">Не удалось скачать файл <ph name="FILE_NAME" /> из-за сбоев сети.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">все время</translation>
 <translation id="8200772114523450471">Возобновить</translation>
 <translation id="8209050860603202033">Открыть изображение</translation>
+<translation id="8215250379351058554">Сайт <ph name="SITE" /> запрашивает подключение к:</translation>
 <translation id="8218346974737627104">Подтвердите вход</translation>
 <translation id="8218934717680664417">Теперь поиск работает в одно касание!</translation>
 <translation id="8223946939421658889">Удалить данные за</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 3f2a6de..c4c3f72 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -31,10 +31,6 @@
 <translation id="138361230106469022">Dobrý deň, <ph name="FULL_NAME" />,</translation>
 <translation id="1383876407941801731">Vyhľadávanie</translation>
 <translation id="1389974829397082527">Žiadne záložky</translation>
-<translation id="1390350022570422499">Chrome vám teraz dokáže nájsť a zobraziť webové stránky v okolí pomocou rozhrania Bluetooth.
-Keď bude vaše zariadenie odomknuté, Chrome bude vyhľadávať stránky z okolia. Tieto stránky budú s cieľom zlepšenia kvality spracovávané Googlom.
-
-Predvoľby Fyzického webu môžete ovládať v nastaveniach súkromia Chromu.</translation>
 <translation id="1404122904123200417">Vložené na webe <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Nesledovať</translation>
 <translation id="1409879593029778104">Sťahovanie súboru <ph name="FILE_NAME" /> bolo zrušené, pretože daný súbor už existuje.</translation>
@@ -77,6 +73,7 @@
 <translation id="1974060860693918893">Rozšírené</translation>
 <translation id="1984937141057606926">Povolené (okrem tretích strán)</translation>
 <translation id="1994173015038366702">Webová adresa stránok</translation>
+<translation id="2001120796168634316">Uložiť prepojenú stránku na neskôr</translation>
 <translation id="200669432486043882">Nahradiť súbor</translation>
 <translation id="2038563949887743358">Zapnutie žiadosti o verziu stránok pre počítače</translation>
 <translation id="2073235970478114994">Načítať obrázky</translation>
@@ -95,7 +92,6 @@
 <translation id="2268044343513325586">Upraviť</translation>
 <translation id="2315043854645842844">Operačný systém nepodporuje výber certifikátu na strane klienta.</translation>
 <translation id="2316129865977710310">Nie, ďakujem</translation>
-<translation id="2319528413610359757">Pre čitateľov publikácií <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Presúvajte posúvač, dokým nebude čítanie tohto textu pohodlné. Po dvojitom klepnutí na odsek by mal byť text aspoň takto veľký.</translation>
 <translation id="2329597144923131178">Prihláste sa a získajte tak svoje záložky, históriu, heslá a ďalšie nastavenia na všetkých svojich zariadeniach.</translation>
 <translation id="2343328333327081434">Inštaluje sa…</translation>
@@ -135,6 +131,7 @@
 <translation id="2762000892062317888">práve teraz</translation>
 <translation id="2770465223704140727">Odstrániť zo zoznamu</translation>
 <translation id="278029852808208386">Nenašli sa žiadne zariadenia Bluetooth. <ph name="BEGIN_LINK" />Vyhľadať znova<ph name="END_LINK" /></translation>
+<translation id="2811892995384186721">Nezobrazuje sa vaše zariadenie? <ph name="BEGIN_LINK" />Získať pomoc<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Ukončite režim celej obrazovky klepnutím na tlačidlo Späť.</translation>
 <translation id="2842985007712546952">Nadradený priečinok</translation>
 <translation id="2870560284913253234">Webové stránky</translation>
@@ -198,7 +195,6 @@
 <translation id="3672452749423051839">Návrhy v prípade chýb navigácie</translation>
 <translation id="3732088672634061408">Nepodarilo sa načítať záujmy.</translation>
 <translation id="3738139272394829648">Vyhľadávanie klepnutím</translation>
-<translation id="3774280986422214650">Ak povolíte túto funkciu, zúčastníte sa experimentu, ktorý vedie stránky HTTPS cez servery Google.</translation>
 <translation id="3809549525127675114">Dokončené prehrávanie videa <ph name="VIDEO_TITLE" /></translation>
 <translation id="3828029223314399057">Prehľadať záložky</translation>
 <translation id="3871171699884605801">Históriu prehliadania nie je možné vymazať prostredníctvom účtu pre deti</translation>
@@ -213,7 +209,6 @@
 <translation id="3992315671621218278">Uložiť odkaz</translation>
 <translation id="4002066346123236978">Názov</translation>
 <translation id="4035611068038188272">Záložky momentálne zaberajú <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">V okolí sú stránky Fyzického webu</translation>
 <translation id="4042870126885713738">Zobrazte návrhy v prípade, že webovú adresu nie je možné vyhľadať alebo nie je možné nadviazať spojenie</translation>
 <translation id="4056223980640387499">Sépia</translation>
 <translation id="4062305924942672200">Právne informácie</translation>
@@ -273,7 +268,6 @@
 <translation id="4816465935029283692">Typy údajov</translation>
 <translation id="4827948050554950725">Pridať kreditnú kartu</translation>
 <translation id="4836364883164334657">Vaše pripojenie k týmto webovým stránkam nie je súkromné. Útočníci sa môžu pokúsiť ukradnúť vaše informácie (ako sú napríklad fotky, heslá, správy alebo čísla kreditných kariet) z domény <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Ďalšie informácie</translation>
 <translation id="4850886885716139402">Zobraziť</translation>
 <translation id="4875622588773761625">Chcete, aby <ph name="PASSWORD_MANAGER_BRAND" /> ukladal heslá pre tieto stránky?</translation>
 <translation id="4881695831933465202">Otvoriť</translation>
@@ -286,7 +280,6 @@
 <translation id="497421865427891073">Ďalej</translation>
 <translation id="4996978546172906250">Zdieľať prostredníctvom</translation>
 <translation id="5000922062037820727">Blokované (odporúčané)</translation>
-<translation id="5014582685689328551">Prehliadnite si ich pomocou Chromu</translation>
 <translation id="5016205925109358554">Pätkové</translation>
 <translation id="5039804452771397117">Povoliť</translation>
 <translation id="5040262127954254034">Ochrana súkromia</translation>
@@ -312,7 +305,7 @@
 <translation id="5233638681132016545">Nová karta</translation>
 <translation id="5271967389191913893">Zariadenie nemôže otvoriť obsah na stiahnutie</translation>
 <translation id="5275558766013849309">Karty sa budú zobrazovať spolu s nedávnymi aplikáciami.</translation>
-<translation id="528192093759286357">Režim celej obrazovky ukončíte presunutím myši z hornej časti a klepnutím na tlačidlo Späť.</translation>
+<translation id="528192093759286357">Režim celej obrazovky ukončíte potiahnutím z hornej časti a klepnutím na tlačidlo Späť.</translation>
 <translation id="5284584623296338184">Záložky, história, heslá a ďalšie nastavenia sa už nebudú ďalej synchronizovať do vášho účtu Google. Vaše súčasné údaje však zostanú v účte Google zachované.</translation>
 <translation id="5301954838959518834">Áno, rozumiem</translation>
 <translation id="5302048478445481009">Jazyk</translation>
@@ -321,7 +314,6 @@
 <translation id="5308933389783727448">Hľadať v uložených stránkach</translation>
 <translation id="5313967007315987356">Pridať stránky</translation>
 <translation id="5317780077021120954">Uložiť</translation>
-<translation id="5323972449344932352">Spustiť Chrome</translation>
 <translation id="5324858694974489420">Rodičovské nastavenia</translation>
 <translation id="5327248766486351172">Názov</translation>
 <translation id="5345040418939504969">Záložka <ph name="BOOKMARK_TITLE" /> bola odstránená</translation>
@@ -400,7 +392,6 @@
 <translation id="6159335304067198720">Úspora dát: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Viac informácií</translation>
 <translation id="6192792657125177640">Výnimky</translation>
-<translation id="6208263165776660488">Karty prehliadača Chrome boli presunuté</translation>
 <translation id="6231464350722415003">Povoľte JavaScript na vybraných stránkach a zakážte ho na ostatných miestach internetu.</translation>
 <translation id="6232535412751077445">Ak povolíte možnosť Nesledovať, k odosielaným dátam prehliadania sa pridá žiadosť. Akýkoľvek účinok závisí od toho, či bude web na žiadosť reagovať, a tiež od interpretácie žiadosti.
 
@@ -489,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> používa vašu polohu na zobrazovanie miestnych výsledkov vyhľadávania.</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomocník<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Odstrániť záložku</translation>
-<translation id="7324738665594301612">Vedenie stránok HTTPS cez servery Google testujeme ako súčasť experimentu.</translation>
 <translation id="7346217184097589238">Uložené nastavenia webov sa neodstránia a môžu odrážať vaše návyky prehliadania.</translation>
-<translation id="7346909386216857016">Ok, dobre</translation>
 <translation id="7347770551817603360">Offline obsah</translation>
 <translation id="7363354739009474003">Načítava sa video <ph name="VIDEO_TITLE" /></translation>
 <translation id="7366340029385295517">Prenáša sa na obrazovku <ph name="SCREEN_NAME" /></translation>
@@ -514,7 +503,6 @@
 <translation id="7588950540487816470">Fyzický web</translation>
 <translation id="7596558890252710462">Operačný systém</translation>
 <translation id="7599840151813361502">Neodhlásime vás z vašich <ph name="BEGIN_LINK" />účtov Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Zobrazte si svoje karty spolu s ostatnými nedávnymi aplikáciami na telefóne na obrazovke Prehľad. Túto funkciu môžete ovládať v <ph name="BEGIN_LINK" />Nastaveniach<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Pozastavené</translation>
 <translation id="7612619742409846846">Prihlásený/-á do Googlu ako</translation>
 <translation id="7619072057915878432">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu problémov so sieťou.</translation>
@@ -563,6 +551,7 @@
 <translation id="8173098127580644436">celého obdobia</translation>
 <translation id="8200772114523450471">Pokračovať</translation>
 <translation id="8209050860603202033">Otvoriť obrázok</translation>
+<translation id="8215250379351058554">Web <ph name="SITE" /> žiada o pripojenie k zariadeniu:</translation>
 <translation id="8218346974737627104">Potvrdenie prihlásenia</translation>
 <translation id="8218934717680664417">Teraz môžete vyhľadávať jediným klepnutím</translation>
 <translation id="8223946939421658889">Vymazať údaje z</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 f91d101..b0c552d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Pozdravljeni, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Išči</translation>
 <translation id="1389974829397082527">Tu ni nobenega zaznamka</translation>
-<translation id="1390350022570422499">Chrome lahko zdaj z uporabo Bluetootha poišče in prikaže spletne strani v bližini.
-
-Ko je naprava odklenjena, bo Chrome iskal strani v bližini. Te strani bo zaradi izboljšanja kakovosti rezultatov za strani obdelala Googlova storitev.
-
-Fizični splet lahko nadzirate v Chromovih nastavitvah zasebnosti.</translation>
 <translation id="1404122904123200417">Vdelano v URL <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">»Ne sledi«</translation>
 <translation id="1409879593029778104">Prenos datoteke <ph name="FILE_NAME" /> je bil preprečen, ker datoteka že obstaja.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Dodatno</translation>
 <translation id="1984937141057606926">Dovoljeno, razen za druga spletna mesta</translation>
 <translation id="1994173015038366702">URL spletnega mesta</translation>
+<translation id="2001120796168634316">Shrani stran s povezave</translation>
 <translation id="200669432486043882">Zamenjava datoteke</translation>
 <translation id="2038563949887743358">Vklop možnosti »Zahteva za namizno spletno mesto«</translation>
 <translation id="2073235970478114994">Naloži slike</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Izboljšaj iskanje</translation>
 <translation id="2315043854645842844">Operacijski sistem ne podpira izbire potrdila pri odjemalcu.</translation>
 <translation id="2316129865977710310">Ne, hvala</translation>
-<translation id="2319528413610359757">Za bralce izdajatelja <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Drsnik povlecite do želene velikosti pisave. Besedilo naj bo po dvakratnem dotiku odstavka videti vsaj tolikšno.</translation>
 <translation id="2329597144923131178">Prijavite se, da boste lahko dostopali do zaznamkov, zgodovine, gesel in drugih nastavitev v vseh napravah.</translation>
 <translation id="2343328333327081434">Nameščanje ...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">pravkar</translation>
 <translation id="2770465223704140727">Odstrani s seznama</translation>
 <translation id="278029852808208386">Najdena ni bila nobena naprava Bluetooth. <ph name="BEGIN_LINK" />Iščite znova<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Vaša naprava ni prikazana? <ph name="BEGIN_LINK" />Poiščite pomoč<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Dotaknite se gumba za nazaj, če želite zapreti celozaslonski način.</translation>
 <translation id="2842985007712546952">Nadrejena mapa</translation>
 <translation id="2870560284913253234">Spletno mesto</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Predlogi za napake pri krmarjenju</translation>
 <translation id="3732088672634061408">Zanimanj ni bilo mogoče pridobiti.</translation>
 <translation id="3738139272394829648">Dotaknite se za iskanje</translation>
-<translation id="3774280986422214650">Če omogočite to funkcijo, boste sodelovali v preskusu, ki strani HTTPS prenaša prek Googlovih strežnikov proxy.</translation>
 <translation id="3809549525127675114">Predvajanje videoposnetka »<ph name="VIDEO_TITLE" />« je končano</translation>
 <translation id="3828029223314399057">Išči po zaznamkih</translation>
 <translation id="3871171699884605801">Z računom za otroke ni mogoče izbrisati zgodovine brskanja</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Shrani povezavo</translation>
 <translation id="4002066346123236978">Naslov</translation>
 <translation id="4035611068038188272">Zaznamki trenutno zasedajo <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Strani za Fizični splet so v bližini</translation>
 <translation id="4042870126885713738">Pokaži predloge, ko spletnega naslova ni mogoče razrešiti ali povezave ni mogoče vzpostaviti</translation>
 <translation id="4056223980640387499">Sepija</translation>
 <translation id="4062305924942672200">Pravne informacije</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Vrste podatkov</translation>
 <translation id="4827948050554950725">Dodaj kreditno kartico</translation>
 <translation id="4836364883164334657">Vaša povezava s tem spletnim mestom ni zasebna. Napadalci morda poskušajo ukrasti vaše podatke (na primer fotografije, gesla, sporočila in podatke o kreditnih karticah) iz domene <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Več o tem</translation>
 <translation id="4850886885716139402">Pogled</translation>
 <translation id="4875622588773761625">Ali želite, da <ph name="PASSWORD_MANAGER_BRAND" /> posodobi geslo za to spletno mesto?</translation>
 <translation id="4881695831933465202">Odpri</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Pojdi naprej</translation>
 <translation id="4996978546172906250">Skupna raba prek</translation>
 <translation id="5000922062037820727">Blokirano (priporočeno)</translation>
-<translation id="5014582685689328551">Uporabite Chrome, če jih želite prebrskati</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Dovoli</translation>
 <translation id="5040262127954254034">Zasebnost</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Išči po shranjenih straneh</translation>
 <translation id="5313967007315987356">Dodajanje mesta</translation>
 <translation id="5317780077021120954">Shrani</translation>
-<translation id="5323972449344932352">Zagon Chroma</translation>
 <translation id="5324858694974489420">Starševske nastavitve</translation>
 <translation id="5327248766486351172">Ime</translation>
 <translation id="5345040418939504969">Izbrisano: <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Prihranek pri prenosu podatkov: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Več o tem</translation>
 <translation id="6192792657125177640">Izjeme</translation>
-<translation id="6208263165776660488">Chromovi zavihki so premaknjeni na drugo mesto</translation>
 <translation id="6231464350722415003">Dovoli JavaScript na spletnih mestih, ki jih določite, drugod po spletu pa ga blokira.</translation>
 <translation id="6232535412751077445">Če omogočite možnost »Ne sledi«, bo zahteva vključena v vaš promet brskanja. Učinek je odvisen od odziva spletnega mesta na zahtevo in od tega, kako si zahtevo razlaga.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> uporablja vašo lokacijo za prikaz lokalnih rezultatov iskanja</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoč<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Izbriši zaznamek</translation>
-<translation id="7324738665594301612">Prenos strani HTTPS prek Googlovih strežnikov proxy preskušamo v okviru preskusa.</translation>
 <translation id="7346217184097589238">Shranjene nastavitve mest ne bodo izbrisane in morda kažejo vaše navade brskanja.</translation>
-<translation id="7346909386216857016">V redu, razumem</translation>
 <translation id="7347770551817603360">Vsebina brez povezave</translation>
 <translation id="7363354739009474003">Nalaganje videoposnetka »<ph name="VIDEO_TITLE" />«</translation>
 <translation id="7366340029385295517">Predvajanje na zaslonu <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Fizični splet</translation>
 <translation id="7596558890252710462">Operacijski sistem</translation>
 <translation id="7599840151813361502">Iz <ph name="BEGIN_LINK" />Google Računov<ph name="END_LINK" /> ne boste odjavljeni</translation>
-<translation id="7603403729818446828">Prikažite zavihke z drugimi nedavnimi aplikacijami na zaslonu za pregled v telefonu. To lahko nadzirate v <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Začasno ustavljeno</translation>
 <translation id="7612619742409846846">Signed in to Google as</translation>
 <translation id="7619072057915878432">Prenos datoteke <ph name="FILE_NAME" /> ni uspel zaradi napak v omrežju.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">od začetka</translation>
 <translation id="8200772114523450471">Nadaljuj</translation>
 <translation id="8209050860603202033">Odpri sliko</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> se želi povezati s tem:</translation>
 <translation id="8218346974737627104">Potrditev prijave</translation>
 <translation id="8218934717680664417">Zdaj lahko iščete z enim dotikom</translation>
 <translation id="8223946939421658889">Brisanje podatkov</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 c880310d..79a2da9f 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Здраво, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Претражи</translation>
 <translation id="1389974829397082527">Овде нема обележивача</translation>
-<translation id="1390350022570422499">Chrome сада може да пронађе и прикаже веб-странице у околини помоћу Bluetooth-а.
-
-Chrome скенира странице у близини када је уређај откључан. Те странице се шаљу Google услузи да би се побољшао квалитет резултата за странице.
-
-Можете да контролишете Интернет око нас у Chrome-овим подешавањима приватности.</translation>
 <translation id="1404122904123200417">Уграђено је у сајт <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Не прати“</translation>
 <translation id="1409879593029778104">Преузимање датотеке <ph name="FILE_NAME" /> је спречено јер она већ постоји.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Напредне опције</translation>
 <translation id="1984937141057606926">Дозвољени, осим треће стране</translation>
 <translation id="1994173015038366702">URL сајта</translation>
+<translation id="2001120796168634316">Сачувај страницу са везама за касније</translation>
 <translation id="200669432486043882">Замени датотеку</translation>
 <translation id="2038563949887743358">Укључи захтевање верзије сајта за рачунаре</translation>
 <translation id="2073235970478114994">Учитај слике</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Прецизирај</translation>
 <translation id="2315043854645842844">Оперативни систем не подржава избор сертификата за клијента.</translation>
 <translation id="2316129865977710310">Не, хвала</translation>
-<translation id="2319528413610359757">За читаоце издања <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Превлачите клизач док ово не будете могли лако да прочитате. Када двапут додирнете пасус, текст треба да буде бар оволики.</translation>
 <translation id="2329597144923131178">Пријавите се да би вам обележивачи, историја, лозинке и друга подешавања били доступни на свим уређајима.</translation>
 <translation id="2343328333327081434">Инсталира се...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">малопре</translation>
 <translation id="2770465223704140727">Уклони са листе</translation>
 <translation id="278029852808208386">Није пронађен ниједан Bluetooth уређај. <ph name="BEGIN_LINK" />Претражите поново<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Не видите уређај? <ph name="BEGIN_LINK" />Потражите помоћ<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Додирните дугме Назад да бисте изашли из режима целог екрана.</translation>
 <translation id="2842985007712546952">Надређени директоријум</translation>
 <translation id="2870560284913253234">Сајт</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Предлози за грешке при навигацији</translation>
 <translation id="3732088672634061408">Преузимање интересовања није успело.</translation>
 <translation id="3738139272394829648">Додирни за претрагу</translation>
-<translation id="3774280986422214650">Ако омогућите ову функцију, бићете део експеримента који преноси HTTPS странице преко Google сервера.</translation>
 <translation id="3809549525127675114">„<ph name="VIDEO_TITLE" />“ је завршен</translation>
 <translation id="3828029223314399057">Претражи обележиваче</translation>
 <translation id="3871171699884605801">Историја прегледања не може да се брише помоћу налога за децу</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Сачувај линк</translation>
 <translation id="4002066346123236978">Наслов</translation>
 <translation id="4035611068038188272">Обележивачи тренутно заузимају <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Странице Интернета око нас су у околини</translation>
 <translation id="4042870126885713738">Приказивање предлога када се веб-адреса не разреши или када није могуће успоставити везу</translation>
 <translation id="4056223980640387499">Сепија</translation>
 <translation id="4062305924942672200">Правне информације</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Типови података</translation>
 <translation id="4827948050554950725">Додајте кредитну картицу</translation>
 <translation id="4836364883164334657">Веза са овим сајтом није приватна. Нападачи можда покушавају да вам украду податке (на пример, слике, лозинке, поруке и кредитне картице) са домена <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Прочитајте више</translation>
 <translation id="4850886885716139402">Приказ</translation>
 <translation id="4875622588773761625">Желите ли да <ph name="PASSWORD_MANAGER_BRAND" /> ажурира лозинку за овај сајт?</translation>
 <translation id="4881695831933465202">Отвори</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Кретање унапред</translation>
 <translation id="4996978546172906250">Дељење преко</translation>
 <translation id="5000922062037820727">Блокирано (препоручено)</translation>
-<translation id="5014582685689328551">Користите Chrome да бисте их прегледали</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Дозволи</translation>
 <translation id="5040262127954254034">Приватност</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Претражи сачуване странице</translation>
 <translation id="5313967007315987356">Додај сајт</translation>
 <translation id="5317780077021120954">Сачувај</translation>
-<translation id="5323972449344932352">Покрени Chrome</translation>
 <translation id="5324858694974489420">Родитељска подешавања</translation>
 <translation id="5327248766486351172">Назив</translation>
 <translation id="5345040418939504969">Обележивач <ph name="BOOKMARK_TITLE" /> је избрисан</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> уштеде података</translation>
 <translation id="6165508094623778733">Сазнајте више</translation>
 <translation id="6192792657125177640">Изузеци</translation>
-<translation id="6208263165776660488">Chrome картице су премештене</translation>
 <translation id="6231464350722415003">Дозволите JavaScript на веб-сајтовима које наведете, а за остатак веба га блокирајте</translation>
 <translation id="6232535412751077445">Ако омогућите функцију „Не прати“, захтев ће бити обухваћен саобраћајем прегледања. Последица те радње зависи од тога да ли веб-сајт одговара на захтев и како се захтев тумачи.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> користи локацију да би приказао локалне резултате претраге</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Помоћ<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Брисање обележивача</translation>
-<translation id="7324738665594301612">Тестирамо преношење HTTPS страница преко Google сервера у склопу експеримента.</translation>
 <translation id="7346217184097589238">Нећемо избрисати сачувана подешавања сајтова и она могу да одражавају ваше навике при прегледању.</translation>
-<translation id="7346909386216857016">Важи</translation>
 <translation id="7347770551817603360">Офлајн садржај</translation>
 <translation id="7363354739009474003">„<ph name="VIDEO_TITLE" />“ се учитава</translation>
 <translation id="7366340029385295517">Пребацивање на <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Интернет око нас</translation>
 <translation id="7596558890252710462">Оперативни систем</translation>
 <translation id="7599840151813361502">Нећете бити одјављени са <ph name="BEGIN_LINK" />Google налога<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Погледајте картице са другим недавним апликацијама на екрану Преглед на телефону. То можете да контролишете у <ph name="BEGIN_LINK" />Подешавањима<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Паузирано</translation>
 <translation id="7612619742409846846">Пријављени сте у Google као</translation>
 <translation id="7619072057915878432">Преузимање датотеке <ph name="FILE_NAME" /> није успело због проблема са мрежом.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">одувек</translation>
 <translation id="8200772114523450471">Настави</translation>
 <translation id="8209050860603202033">Отвори слику</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> жели да се повеже са:</translation>
 <translation id="8218346974737627104">Потврдите пријављивање</translation>
 <translation id="8218934717680664417">Сада можете да претражујете једним додиром</translation>
 <translation id="8223946939421658889">Обриши податке за:</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 ba57c53..7a8cc0c 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hej <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Sök</translation>
 <translation id="1389974829397082527">Det finns inga bokmärken i den här mappen</translation>
-<translation id="1390350022570422499">Nu kan Chrome hitta och visa webbsidor nära dig med hjälp av Bluetooth.
-
-Chrome söker efter sidor i närheten när enheten är olåst. Sidorna skickas via en tjänst från Google för att förbättra kvaliteten på sidresultaten.
-
-Du kan kontrollera Physical Web i sekretessinställningarna för Chrome.</translation>
 <translation id="1404122904123200417">Inbäddad i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track</translation>
 <translation id="1409879593029778104">Nedladdningen av <ph name="FILE_NAME" /> hindrades eftersom filen redan finns.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Avancerat</translation>
 <translation id="1984937141057606926">Tillåts, men inte från tredje part</translation>
 <translation id="1994173015038366702">Webbadress</translation>
+<translation id="2001120796168634316">Spara den länkade sidan</translation>
 <translation id="200669432486043882">Ersätt fil</translation>
 <translation id="2038563949887743358">Aktivera begäran av skrivbordsversion</translation>
 <translation id="2073235970478114994">Läs in bilder</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Finjustera</translation>
 <translation id="2315043854645842844">Val av certifikat på klienten stöds inte av operativsystemet.</translation>
 <translation id="2316129865977710310">Nej tack</translation>
-<translation id="2319528413610359757">För personer som läser <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Flytta reglaget tills du kan läsa texten ordentligt. Texten bör bli åtminstone så här stor när du trycker två gånger på ett stycke.</translation>
 <translation id="2329597144923131178">Logga in så blir bokmärken, historik, lösenord med mera tillgängligt på alla dina enheter.</translation>
 <translation id="2343328333327081434">Installerar …</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">nyss</translation>
 <translation id="2770465223704140727">Ta bort från listan</translation>
 <translation id="278029852808208386">Inga Bluetooth-enheter hittades. <ph name="BEGIN_LINK" />Gör om sökningen<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Visas inte enheten? <ph name="BEGIN_LINK" />Få hjälp<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Tryck på bakåtknappen om du vill lämna helskärmsläget.</translation>
 <translation id="2842985007712546952">Överordnad mapp</translation>
 <translation id="2870560284913253234">Webbplats</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Förslag vid navigeringsfel</translation>
 <translation id="3732088672634061408">Det gick inte att hämta intressen.</translation>
 <translation id="3738139272394829648">Tryck för att söka</translation>
-<translation id="3774280986422214650">Om du aktiverar den här funktionen deltar du i ett experiment där HTTPS-sidor skickas via Googles servrar som proxy.</translation>
 <translation id="3809549525127675114">Uppspelningen av <ph name="VIDEO_TITLE" /> har avslutats</translation>
 <translation id="3828029223314399057">Sök efter bokmärken</translation>
 <translation id="3871171699884605801">Webbhistoriken kan inte rensas med barnkonton</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Spara länk</translation>
 <translation id="4002066346123236978">Titel</translation>
 <translation id="4035611068038188272">För närvarande används <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> av bokmärken.</translation>
-<translation id="403659016947612156">Det finns Physical Web-sidor i närheten</translation>
 <translation id="4042870126885713738">Visa förslag när det inte går att öppna en webbadress eller upprätta en anslutning</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Juridisk information</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Datatyper</translation>
 <translation id="4827948050554950725">Lägg till ett kreditkort</translation>
 <translation id="4836364883164334657">Anslutningen till den här webbplatsen är inte privat. Hackare kan försöka stjäla information (till exempel bilder, lösenord, meddelanden och kreditkortsuppgifter) från <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Läs mer</translation>
 <translation id="4850886885716139402">Visa</translation>
 <translation id="4875622588773761625">Vill du att lösenordet för den här webbplatsen ska uppdateras med <ph name="PASSWORD_MANAGER_BRAND" />?</translation>
 <translation id="4881695831933465202">Öppna</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Fortsätt</translation>
 <translation id="4996978546172906250">Dela via</translation>
 <translation id="5000922062037820727">Blockerad (rekommenderas)</translation>
-<translation id="5014582685689328551">Bläddra bland dem i Chrome</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Tillåt</translation>
 <translation id="5040262127954254034">Sekretess</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Sök i sparade sidor</translation>
 <translation id="5313967007315987356">Lägg till webbplats</translation>
 <translation id="5317780077021120954">Spara</translation>
-<translation id="5323972449344932352">Starta Chrome</translation>
 <translation id="5324858694974489420">Föräldrainställningar</translation>
 <translation id="5327248766486351172">Namn</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> raderades</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Sparat utrymme: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Läs mer</translation>
 <translation id="6192792657125177640">Undantag</translation>
-<translation id="6208263165776660488">Flikar i Chrome har flyttats</translation>
 <translation id="6231464350722415003">Tillåt JavaScript på webbplatser som du anger och blockera det för resten av webben</translation>
 <translation id="6232535412751077445">Om du aktiverar Do Not Track inkluderas en begäran i din surftrafik. Eventuella effekter beror på om webbplatsen svarar på begäran och hur begäran tolkas.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> använder din platsinformation för att visa lokala sökresultat</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjälp<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Ta bort bokmärke</translation>
-<translation id="7324738665594301612">Som en del av ett experiment testar vi att skicka HTTPS-sidor via Googles servrar som proxy.</translation>
 <translation id="7346217184097589238">Webbplatsinställningar som har sparats raderas inte och kan visa dina surfvanor.</translation>
-<translation id="7346909386216857016">OK, jag förstår</translation>
 <translation id="7347770551817603360">Offlineinnehåll</translation>
 <translation id="7363354739009474003">Läser in <ph name="VIDEO_TITLE" /></translation>
 <translation id="7366340029385295517">Castar till <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Physical Web</translation>
 <translation id="7596558890252710462">Operativsystem</translation>
 <translation id="7599840151813361502">Du loggas inte ut från dina <ph name="BEGIN_LINK" />Google-konton<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Gör så att flikar visas tillsammans med de senaste apparna på skärmen. Du kan styra detta i <ph name="BEGIN_LINK" />Inställningar<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Pausad</translation>
 <translation id="7612619742409846846">Inloggad i Google som</translation>
 <translation id="7619072057915878432">Det gick inte att ladda ned <ph name="FILE_NAME" /> på grund av nätverksfel.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">tidens början</translation>
 <translation id="8200772114523450471">Återuppta</translation>
 <translation id="8209050860603202033">Öppna bild</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> vill ansluta till:</translation>
 <translation id="8218346974737627104">Bekräfta inloggning</translation>
 <translation id="8218934717680664417">Nu kan du söka med en tryckning</translation>
 <translation id="8223946939421658889">Rensa data från</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 104e54e..2e8cb0fe 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Hujambo, <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">Tafuta</translation>
 <translation id="1389974829397082527">Hapana alamisho hapa</translation>
-<translation id="1390350022570422499">Sasa Chrome inaweza kutafuta na kukuonyesha kurasa za wavuti zilizo karibu kwa kutumia Bluetooth.
-
-Chrome itachanganua kurasa zilizo karibu kifaa chako kikifunguliwa. Kurasa hizi zitapitia huduma za Google ili kuimarisha ubora wa matokeo ya kurasa.
-
-Unaweza kudhibiti Wavuti kila mahali katika mipangilio ya faragha kwenye Chrome.</translation>
 <translation id="1404122904123200417">Imepachikwa katika <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Usifuatilie”</translation>
 <translation id="1409879593029778104">Kipakuliwa cha <ph name="FILE_NAME" /> kimezuiwa kwa sababu faili tayari ipo.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Mipangilio ya kina</translation>
 <translation id="1984937141057606926">Inaruhusiwa, isipokuwa vidakuzi vingine</translation>
 <translation id="1994173015038366702">URL ya Tovuti</translation>
+<translation id="2001120796168634316">Hifadhi ukurasa uliounganishwa kwa matumizi ya baadaye</translation>
 <translation id="200669432486043882">Badilisha faili</translation>
 <translation id="2038563949887743358">Washa Omba Tovuti ya Eneo-kazi</translation>
 <translation id="2073235970478114994">Pakia picha</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Chuja</translation>
 <translation id="2315043854645842844">Uchaguzi wa cheti cha sehemu ya seva teja hautumiwi na mfumo wa uendeshaji.</translation>
 <translation id="2316129865977710310">La, asante</translation>
-<translation id="2319528413610359757">Kwa wasomaji wa <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Buruta kitelezi hadi uweze kusoma haya kwa starehe. Maandishi yanapaswa kuonekana angalau kwa ukubwa huu baada ya kugonga mara mbili kwenye aya.</translation>
 <translation id="2329597144923131178">Ingia katika akaunti ili upate alamisho, historia, manenosiri, na mipangilio yako mingine kwenye vifaa vyako vyote.</translation>
 <translation id="2343328333327081434">Inasakinisha...</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">sasa hivi tu</translation>
 <translation id="2770465223704140727">Ondoa kwenye orodha</translation>
 <translation id="278029852808208386">Hakuna vifaa vya bluetooth vilivyopatikana. <ph name="BEGIN_LINK" />Tafuta tena<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Je, huoni kifaa chako? <ph name="BEGIN_LINK" />Pata usaidizi<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Gusa kitufe cha kurudi nyuma ili uondoke kwenye skrini nzima.</translation>
 <translation id="2842985007712546952">Folda kuu</translation>
 <translation id="2870560284913253234">Tovuti</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Mapendekezo ya hitilafu ya kuelekea unapotaka</translation>
 <translation id="3732088672634061408">Haikuweza kuleta mambo yanayokuvutia.</translation>
 <translation id="3738139272394829648">Gusa ili Utafute</translation>
-<translation id="3774280986422214650">Ukiwasha kipengele hiki, utakuwa sehemu ya jaribio ambalo linawakilisha kurasa za HTTPS kupitia seva za Google.</translation>
 <translation id="3809549525127675114">Imekamilisha kucheza “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="3828029223314399057">Tafuta katika alamisho</translation>
 <translation id="3871171699884605801">Historia ya kuvinjari haiwezi kufutwa kwa kutumia akaunti za watoto</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Hifadhi kiungo</translation>
 <translation id="4002066346123236978">Kichwa</translation>
 <translation id="4035611068038188272">Hivi sasa alamisho zinatumia ukubwa wa <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Kurasa wa Wavuti kila Mahali zipo karibu</translation>
 <translation id="4042870126885713738">Onyesha mapendekezo wakati anwani ya wavuti inaposhindwa kutatuliwa au muunganisho ukiwa hauwezi kufanyika</translation>
 <translation id="4056223980640387499">Sepia</translation>
 <translation id="4062305924942672200">Maelezo ya kisheria</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Aina za data</translation>
 <translation id="4827948050554950725">Ongeza kadi ya malipo</translation>
 <translation id="4836364883164334657">Muunganisho wako kwenye tovuti hii si wa faragha. Huenda wavamizi wanajaribu kuiba maelezo yako (kwa mfano, picha, manenosiri, ujumbe na kadi za mikopo) kutoka <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Endelea kusoma</translation>
 <translation id="4850886885716139402">Mwonekano</translation>
 <translation id="4875622588773761625">Je, unataka <ph name="PASSWORD_MANAGER_BRAND" /> isasishe nenosiri lako kwa wavuti huu?</translation>
 <translation id="4881695831933465202">Fungua</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Nenda mbele</translation>
 <translation id="4996978546172906250">Shiriki kupitia</translation>
 <translation id="5000922062037820727">Imezuiwa (imependekezwa)</translation>
-<translation id="5014582685689328551">Tumia Chrome kuzivinjari</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Ruhusu</translation>
 <translation id="5040262127954254034">Faragha</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Tafuta kurasa zilizohifadhiwa</translation>
 <translation id="5313967007315987356">Ongeza tovuti</translation>
 <translation id="5317780077021120954">Hifadhi</translation>
-<translation id="5323972449344932352">Fungua Chrome</translation>
 <translation id="5324858694974489420">Mipangilio ya Wazazi</translation>
 <translation id="5327248766486351172">Jina</translation>
 <translation id="5345040418939504969">Umefuta <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> ya data imeokolewa</translation>
 <translation id="6165508094623778733">Pata maelezo zaidi</translation>
 <translation id="6192792657125177640">Vighairi</translation>
-<translation id="6208263165776660488">Vichupo vya Chrome vimesonga</translation>
 <translation id="6231464350722415003">Ruhusu JavaScript kwenye tovuti unazobainisha huku ukiizuia kwenye wavuti mwingine wote</translation>
 <translation id="6232535412751077445">Kuwasha ‘Usifuatilie’ kunamaanisha kuwa ombi litajumuishwa pamoja na maelezo yako mengine ya kuvinjari. Athari yoyote itategemea ikiwa tovuti inajibu ombi, na namna ombi litakavyofasiriwa.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> hutumia mahali ulipo ili kuonyesha matokeo ya utafutaji wa karibu</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Usaidizi<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Futa alamisho</translation>
-<translation id="7324738665594301612">Tunajaribu kuweka seva mbadala ya kurasa za HTTPS kupitia seva za Google kama sehemu ya jaribio.</translation>
 <translation id="7346217184097589238">Mipangilio ya tovuti iliyohifadhiwa haitafutwa na inaweza kuonyesha tabia zako za kuvinjari.</translation>
-<translation id="7346909386216857016">Sawa, nimeelewa</translation>
 <translation id="7347770551817603360">Maudhui ya nje ya mtandao</translation>
 <translation id="7363354739009474003">Inapakia "<ph name="VIDEO_TITLE" />"</translation>
 <translation id="7366340029385295517">Inatuma kwenye <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Wavuti Kila Mahali</translation>
 <translation id="7596558890252710462">Mfumo wa uendeshaji</translation>
 <translation id="7599840151813361502">Hutaondolewa katika <ph name="BEGIN_LINK" />Akaunti zako za Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Angalia vichupo vyako pamoja na programu nyingine za hivi majuzi kwenye skrini ya simu ya Muhtasari. Unaweza kudhibiti hii katika <ph name="BEGIN_LINK" />Mipangilio<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Imepumzishwa</translation>
 <translation id="7612619742409846846">Umeingia katika akaunti ya Google ukitumia</translation>
 <translation id="7619072057915878432">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu ya hitilafu za mtandao.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">kutoka mwanzo</translation>
 <translation id="8200772114523450471">Endelea</translation>
 <translation id="8209050860603202033">Fungua picha</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> inataka kuunganisha kwenye:</translation>
 <translation id="8218346974737627104">Thibitisha kuingia katika akaunti</translation>
 <translation id="8218934717680664417">Sasa unaweza kutafuta kwa mguso mmoja</translation>
 <translation id="8223946939421658889">Futa data kwenye</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 460406c..a351d97d7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">สวัสดี คุณ <ph name="FULL_NAME" /></translation>
 <translation id="1383876407941801731">ค้นหา</translation>
 <translation id="1389974829397082527">ไม่มีบุ๊กมาร์กที่นี่</translation>
-<translation id="1390350022570422499">ขณะนี้ Chrome ค้นพบและแสดงหน้าเว็บที่อยู่ใกล้เคียงโดยใช้บลูทูธแล้ว
-
-Chrome จะสแกนหาหน้าที่อยู่ใกล้เคียงเมื่ออุปกรณ์ของคุณไม่ได้ล็อก โดยจะส่งหน้าเหล่านี้ผ่านบริการของ Google เพื่อปรับปรุงคุณภาพของผลการค้นหาหน้า
-
-คุณสามารถควบคุม Physical Web ได้ในการตั้งค่าความเป็นส่วนตัวของ Chrome</translation>
 <translation id="1404122904123200417">ฝังอยู่ใน <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“ไม่ติดตาม”</translation>
 <translation id="1409879593029778104">ระบบป้องกันการดาวน์โหลด <ph name="FILE_NAME" /> เพราะมีไฟล์นี้อยู่แล้ว</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">ขั้นสูง</translation>
 <translation id="1984937141057606926">อนุญาต ยกเว้นบุคคลที่สาม</translation>
 <translation id="1994173015038366702">URL ของเว็บไซต์</translation>
+<translation id="2001120796168634316">เก็บหน้าเว็บไว้ดูทีหลัง</translation>
 <translation id="200669432486043882">แทนที่ไฟล์</translation>
 <translation id="2038563949887743358">เปิดการขอเว็บไซต์เดสก์ท็อป</translation>
 <translation id="2073235970478114994">โหลดรูปภาพ</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">ปรับแต่ง</translation>
 <translation id="2315043854645842844">ระบบปฏิบัติการไม่สนับสนุนการเลือกใบรับรองฝั่งลูกค้า</translation>
 <translation id="2316129865977710310">ไม่ ขอบคุณ</translation>
-<translation id="2319528413610359757">สำหรับผู้อ่าน <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">ลากแถบเลื่อนจนกว่าคุณจะสามารถอ่านได้อย่างสะดวก ข้อความควรมีขนาดเท่านี้เป็นอย่างน้อยหลังจากแตะ 2 ครั้งบนย่อหน้า</translation>
 <translation id="2329597144923131178">ลงชื่อเข้าใช้เพื่อรับบุ๊กมาร์ก ประวัติ รหัสผ่าน และการตั้งค่าอื่นๆ ในอุปกรณ์ทั้งหมด</translation>
 <translation id="2343328333327081434">กำลังติดตั้ง…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">เมื่อสักครู่</translation>
 <translation id="2770465223704140727">ลบจากรายการ</translation>
 <translation id="278029852808208386">ไม่พบอุปกรณ์บลูทูธ โปรด<ph name="BEGIN_LINK" />ค้นหาอีกครั้ง<ph name="END_LINK" /></translation>
+<translation id="2811892995384186721">หากไม่เห็นอุปกรณ์ของคุณ โปรด<ph name="BEGIN_LINK" />ขอความช่วยเหลือ<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">แตะปุ่มกลับเพื่อออกจากโหมดเต็มหน้าจอ</translation>
 <translation id="2842985007712546952">โฟลเดอร์ระดับบนสุด</translation>
 <translation id="2870560284913253234">เว็บไซต์</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">คำแนะนำเมื่อเกิดข้อผิดพลาดในการนำทาง</translation>
 <translation id="3732088672634061408">ไม่สามารถดึงความสนใจ</translation>
 <translation id="3738139272394829648">แตะเพื่อค้นหา</translation>
-<translation id="3774280986422214650">หากคุณเปิดใช้คุณลักษณะนี้ คุณจะเป็นส่วนหนึ่งในการทดลองที่พร็อกซีหน้า HTTPS ผ่านเซิร์ฟเวอร์ของ Google</translation>
 <translation id="3809549525127675114">“<ph name="VIDEO_TITLE" />” เล่นจบแล้ว</translation>
 <translation id="3828029223314399057">ค้นหาบุ๊กมาร์ก</translation>
 <translation id="3871171699884605801">ไม่สามารถล้างประวัติการท่องเว็บด้วยบัญชีของเด็ก</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">บันทึกลิงก์</translation>
 <translation id="4002066346123236978">ชื่อ</translation>
 <translation id="4035611068038188272">ตอนนี้บุ๊กมาร์กใช้พื้นที่เก็บข้อมูลถึง <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> แล้ว</translation>
-<translation id="403659016947612156">มีหน้า Physical Web อยู่ใกล้เคียง</translation>
 <translation id="4042870126885713738">แสดงคำแนะนำเมื่อไม่สามารถระบุที่อยู่เว็บหรือไม่สามารถเชื่อมต่อได้</translation>
 <translation id="4056223980640387499">ซีเปีย</translation>
 <translation id="4062305924942672200">ข้อมูลทางกฎหมาย</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">ชนิดข้อมูล</translation>
 <translation id="4827948050554950725">เพิ่มบัตรเครดิต</translation>
 <translation id="4836364883164334657">การเชื่อมต่อเว็บไซต์นี้ไม่เป็นส่วนตัว ผู้บุกรุกอาจพยายามขโมยข้อมูลของคุณ (เช่น รูปภาพ รหัสผ่าน ข้อความ และบัตรเครดิต) จาก <ph name="DOMAIN_NAME" /></translation>
-<translation id="4842511359652954519">อ่านเพิ่มเติม</translation>
 <translation id="4850886885716139402">มุมมอง</translation>
 <translation id="4875622588773761625">คุณต้องการให้ <ph name="PASSWORD_MANAGER_BRAND" /> อัปเดตรหัสผ่านของคุณสำหรับเว็บไซต์นี้ไหม</translation>
 <translation id="4881695831933465202">เปิด</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">ไปข้างหน้า</translation>
 <translation id="4996978546172906250">แชร์ผ่าน</translation>
 <translation id="5000922062037820727">ถูกบล็อก (แนะนำ)</translation>
-<translation id="5014582685689328551">ใช้ Chrome เพื่อเรียกดู URL เหล่านั้น</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">อนุญาต</translation>
 <translation id="5040262127954254034">ความเป็นส่วนตัว</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">ค้นหาหน้าที่บันทึกไว้</translation>
 <translation id="5313967007315987356">เพิ่มเว็บไซต์</translation>
 <translation id="5317780077021120954">บันทึก</translation>
-<translation id="5323972449344932352">เปิด Chrome</translation>
 <translation id="5324858694974489420">การตั้งค่าของผู้ปกครอง</translation>
 <translation id="5327248766486351172">ชื่อ</translation>
 <translation id="5345040418939504969">ลบ <ph name="BOOKMARK_TITLE" /> แล้ว</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">ประหยัดอินเทอร์เน็ต <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">เรียนรู้เพิ่มเติม</translation>
 <translation id="6192792657125177640">ข้อยกเว้น</translation>
-<translation id="6208263165776660488">มีการย้ายแท็บ Chrome</translation>
 <translation id="6231464350722415003">อนุญาต JavaScript บนเว็บไซต์ที่คุณระบุขณะที่บล็อก JavaScript สำหรับเว็บอื่นๆ ที่เหลือ</translation>
 <translation id="6232535412751077445">การเปิดใช้ "ไม่ติดตาม" หมายความว่าจะมีการรวมคำขอหนึ่งไว้กับการเข้าชมของคุณ ผลกระทบทั้งหมดขึ้นอยู่กับว่าเว็บไซต์ตอบสนองต่อคำขอนั้นไหม และวิธีตีความคำขอ
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> ใช้ตำแหน่งเพื่อแสดงผลการค้นหาในท้องถิ่น</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />ความช่วยเหลือ<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">นำออกบุ๊กมาร์ก</translation>
-<translation id="7324738665594301612">เรากำลังทดสอบการพร็อกซีของหน้า HTTPS ผ่านเซิร์ฟเวอร์ของ Google ซึ่งเป็นส่วนหนึ่งของการทดลอง</translation>
 <translation id="7346217184097589238">การตั้งค่าเว็บไซต์ที่บันทึกไว้จะไม่ถูกลบและอาจส่งผลกับลักษณะการท่องเว็บของคุณ</translation>
-<translation id="7346909386216857016">รับทราบ</translation>
 <translation id="7347770551817603360">เนื้อหาออฟไลน์</translation>
 <translation id="7363354739009474003">กำลังโหลด “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">กำลังส่งไปยัง <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Physical Web</translation>
 <translation id="7596558890252710462">ระบบปฏิบัติการ</translation>
 <translation id="7599840151813361502">คุณจะไม่ออกจากระบบ<ph name="BEGIN_LINK" />บัญชี Google<ph name="END_LINK" /> โดยอัตโนมัติ</translation>
-<translation id="7603403729818446828">ดูแท็บด้วยแอปล่าสุดอื่นๆ บนหน้าจอภาพรวมของโทรศัพท์ คุณสามารถควบคุมคุณลักษณะนี้ได้ใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /></translation>
 <translation id="7607002721634913082">หยุดชั่วคราว</translation>
 <translation id="7612619742409846846">ลงชื่อเข้าใช้ Google ด้วย</translation>
 <translation id="7619072057915878432">การดาวน์โหลด <ph name="FILE_NAME" /> ล้มเหลวเพราะเครือข่ายขัดข้อง</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">ตั้งแต่เริ่มต้น</translation>
 <translation id="8200772114523450471">ทำต่อ</translation>
 <translation id="8209050860603202033">เปิดรูปภาพ</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> ต้องการเชื่อมต่อกับ:</translation>
 <translation id="8218346974737627104">ยืนยันการลงชื่อเข้าใช้</translation>
 <translation id="8218934717680664417">คุณสามารถค้นหาด้วยการแตะเพียงครั้งเดียวได้แล้วในขณะนี้</translation>
 <translation id="8223946939421658889">ล้างข้อมูลตั้งแต่</translation>
@@ -638,7 +626,7 @@
 <translation id="917685106653909562">มีหน้า Physical Web อยู่ใกล้เคียง</translation>
 <translation id="9187199695613236444">มุมมองสำหรับอุปกรณ์เคลื่อนที่</translation>
 <translation id="9192643434065497760">เปิดบลูทูธใน<ph name="BEGIN_LINK" />การตั้งค่าอุปกรณ์<ph name="END_LINK" />เพื่อให้จับคู่กันได้</translation>
-<translation id="9198708126133947749">แทนที่ข้อมูลของอุปกรณ์นี้ด้วยข้อมูลของ <ph name="TO_ACCOUNT" /> คุณสามารถดึงข้อมูลที่มีอยู่โดยเปลี่ยนกลับไปยัง <ph name="FROM_ACCOUNT" /></translation>
+<translation id="9198708126133947749">แทนที่ข้อมูลของอุปกรณ์นี้ด้วยข้อมูลของ <ph name="TO_ACCOUNT" /> คุณสามารถดึงข้อมูลเดิมที่มีอยู่โดยเปลี่ยนกลับไปยัง <ph name="FROM_ACCOUNT" /></translation>
 <translation id="9206873250291191720">A</translation>
 <translation id="932327136139879170">หน้าแรก</translation>
 <translation id="938850635132480979">ข้อผิดพลาด: <ph name="ERROR_CODE" /></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 c002c5a..46d4e0f1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Merhaba <ph name="FULL_NAME" />,</translation>
 <translation id="1383876407941801731">Ara</translation>
 <translation id="1389974829397082527">Burada yer işareti yok</translation>
-<translation id="1390350022570422499">Chrome artık Bluetooth özelliğini kullanarak yakınınızdaki web sayfalarını bulup gösterebilir.
-
-Cihazınız kilitli olmadığında Chrome yakındaki sayfaları tarar. Bu sayfalar, sayfa sonuçlarının kalitesini iyileştirmek amacıyla bir Google hizmeti üzerinden gönderilir.
-
-Fiziksel Web'i Chrome gizlilik ayarlarından kontrol edebilirsiniz.</translation>
 <translation id="1404122904123200417"><ph name="WEBSITE_URL" /> sitesinde yerleşik</translation>
 <translation id="1406000523432664303">“Do Not Track”</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> dosyası zaten var olduğu için indirme işlemi engellendi.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Gelişmiş</translation>
 <translation id="1984937141057606926">Üçüncü taraf hariç izin verildi</translation>
 <translation id="1994173015038366702">Site URL'si</translation>
+<translation id="2001120796168634316">Bağlantılı sayfayı sonrası için kaydet</translation>
 <translation id="200669432486043882">Dosyayı değiştir</translation>
 <translation id="2038563949887743358">Masaüstü sitesi iste işlevini etkinleştir</translation>
 <translation id="2073235970478114994">Resimleri yükle</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Hassaslaştır</translation>
 <translation id="2315043854645842844">İstemci tarafı sertifika seçimi, işletim sistemi tarafından desteklenmiyor.</translation>
 <translation id="2316129865977710310">Hayır, teşekkürler</translation>
-<translation id="2319528413610359757"><ph name="PUBLISHER" /> adlı yayıncının okuyucuları</translation>
 <translation id="2321958826496381788">Bu yazıyı rahatça okuyana kadar kaydırma çubuğunu sürükleyin. Bir paragrafa iki kez hafifçe dokunduğunuzda metin en az bunun kadar büyük görünmelidir.</translation>
 <translation id="2329597144923131178">Yer işaretlerinize, geçmişinize ve diğer ayarlarınıza tüm cihazlarınızdan erişmek için oturum açın.</translation>
 <translation id="2343328333327081434">Yükleniyor…</translation>
@@ -136,6 +131,8 @@
 <translation id="2762000892062317888">az önce</translation>
 <translation id="2770465223704140727">Listeden kaldır</translation>
 <translation id="278029852808208386">Bluetooth cihaz bulunamadı. <ph name="BEGIN_LINK" />Tekrar arayın<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Cihazınızı görmüyor musunuz? <ph name="BEGIN_LINK" />Yardım alın<ph name="END_LINK" /></translation>
+<translation id="2836148919159985482">Tam ekrandan çıkmak için geri düğmesine dokunun.</translation>
 <translation id="2842985007712546952">Ana klasör</translation>
 <translation id="2870560284913253234">Site</translation>
 <translation id="2888126860611144412">Chrome hakkında</translation>
@@ -198,7 +195,6 @@
 <translation id="3672452749423051839">Gezinme hataları ile ilgili öneriler</translation>
 <translation id="3732088672634061408">İlgi alanları alınamadı.</translation>
 <translation id="3738139272394829648">Dokun ve Ara</translation>
-<translation id="3774280986422214650">Bu özelliği etkinleştirirseniz Google sunucuları aracılığıyla HTTPS sayfalarına proxy uygulama işlevini test eden bir deneyde yer almış olursunuz.</translation>
 <translation id="3809549525127675114">“<ph name="VIDEO_TITLE" />” bitti</translation>
 <translation id="3828029223314399057">Yer işaretlerinde ara</translation>
 <translation id="3871171699884605801">Çocuklar için hesapların tarama geçmişi temizlenemez</translation>
@@ -213,7 +209,6 @@
 <translation id="3992315671621218278">Bağlantıyı kaydet</translation>
 <translation id="4002066346123236978">Başlık</translation>
 <translation id="4035611068038188272">Yer işaretleri şu anda <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> yer kaplıyor.</translation>
-<translation id="403659016947612156">Yakınlarda Fiziksel Web sayfaları var</translation>
 <translation id="4042870126885713738">Bir web adresi çözümlenemezse veya bağlantı yapılamazsa öneriler göster</translation>
 <translation id="4056223980640387499">Sepya Tonu</translation>
 <translation id="4062305924942672200">Yasal bilgiler</translation>
@@ -273,7 +268,6 @@
 <translation id="4816465935029283692">Veri türleri</translation>
 <translation id="4827948050554950725">Kredi kartını ekle</translation>
 <translation id="4836364883164334657">Bu siteye bağlantınız gizli değil. Saldırganlar <ph name="DOMAIN_NAME" /> alan adından bilgilerinizi (ör. fotoğraflarınızı, şifrelerinizi, iletilerinizi ve kredi kartı bilgilerinizi) çalmaya çalışabilir.</translation>
-<translation id="4842511359652954519">Devamı</translation>
 <translation id="4850886885716139402">Görüntüle</translation>
 <translation id="4875622588773761625">Bu siteye ait şifrenizin <ph name="PASSWORD_MANAGER_BRAND" /> tarafından güncellenmesini ister misiniz?</translation>
 <translation id="4881695831933465202">Aç</translation>
@@ -286,7 +280,6 @@
 <translation id="497421865427891073">İlerle</translation>
 <translation id="4996978546172906250">Paylaşım yöntemi:</translation>
 <translation id="5000922062037820727">Engellendi (önerilir)</translation>
-<translation id="5014582685689328551">Bunlara göz atmak için Chrome'u kullanın</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">İzin ver</translation>
 <translation id="5040262127954254034">Gizlilik</translation>
@@ -312,6 +305,7 @@
 <translation id="5233638681132016545">Yeni sekme</translation>
 <translation id="5271967389191913893">Cihaz, indirilecek içeriği açamıyor.</translation>
 <translation id="5275558766013849309">Sekmeler son kullanılan uygulamalarla birlikte görüntülenecek.</translation>
+<translation id="528192093759286357">Tam ekrandan çıkmak için yukarıdan sürükleyin ve geri düğmesine dokunun.</translation>
 <translation id="5284584623296338184">Yer işaretleri, geçmiş, şifreler ve diğer ayarlarınızda yaptığınız değişiklikler artık Google Hesabınız ile senkronize edilmeyecek. Ancak, mevcut verileriniz Google hesabınızda saklanmaya devam edecek.</translation>
 <translation id="5301954838959518834">Evet, anladım</translation>
 <translation id="5302048478445481009">Dil</translation>
@@ -320,7 +314,6 @@
 <translation id="5308933389783727448">Kaydedilen sayfalarda ara</translation>
 <translation id="5313967007315987356">Site ekle</translation>
 <translation id="5317780077021120954">Kaydet</translation>
-<translation id="5323972449344932352">Chrome'u başlat</translation>
 <translation id="5324858694974489420">Ebeveyn Ayarları</translation>
 <translation id="5327248766486351172">Ad</translation>
 <translation id="5345040418939504969"><ph name="BOOKMARK_TITLE" /> silindi</translation>
@@ -399,7 +392,6 @@
 <translation id="6159335304067198720"><ph name="PERCENT" /> veri tasarrufu</translation>
 <translation id="6165508094623778733">Daha fazla bilgi edinin</translation>
 <translation id="6192792657125177640">İstisnalar</translation>
-<translation id="6208263165776660488">Chrome sekmeleri taşındı</translation>
 <translation id="6231464350722415003">Belirttiğiniz web sitelerinde JavaScript'e izin verirken web'in geri kalanında engelleyin</translation>
 <translation id="6232535412751077445">"Do Not Track" seçeneği etkinleştirildiğinde, göz atma trafiğinize bir istek eklenir. Her türlü etki, bir web sitesinin isteğe cevap verip vermemesine ve isteğin nasıl yorumlandığına bağlıdır.
 
@@ -488,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />, yerel arama sonuçlarını göstermek için konumunuzu kullanır</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Yardım<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Yer işaretini sil</translation>
-<translation id="7324738665594301612">Bir deney kapsamında, Google sunucuları aracılığıyla HTTPS sayfalarına proxy uygulama işlevini test ediyoruz.</translation>
 <translation id="7346217184097589238">Kayıtlı site ayarları silinmeyecektir ve göz atma alışkanlıklarınızı yansıtabilir.</translation>
-<translation id="7346909386216857016">Tamam, anladım</translation>
 <translation id="7347770551817603360">Çevrimdışı içerik</translation>
 <translation id="7363354739009474003">“<ph name="VIDEO_TITLE" />” yükleniyor</translation>
 <translation id="7366340029385295517"><ph name="SCREEN_NAME" /> ekranına yayınlanıyor</translation>
@@ -513,7 +503,6 @@
 <translation id="7588950540487816470">Fiziksel Web</translation>
 <translation id="7596558890252710462">İşletim sistemi</translation>
 <translation id="7599840151813361502"><ph name="BEGIN_LINK" />Google Hesaplarınızdaki<ph name="END_LINK" /> oturumlarınız kapatılmaz</translation>
-<translation id="7603403729818446828">Telefonunuzun Genel Bakış ekranında, son kullanılan diğer uygulamalarla birlikte sekmelerinizi görün. Bu özelliği <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" />'da kontrol edebilirsiniz.</translation>
 <translation id="7607002721634913082">Duraklatıldı</translation>
 <translation id="7612619742409846846">Google'da şu hesapla oturum açıldı:</translation>
 <translation id="7619072057915878432">Ağ sorunları nedeniyle <ph name="FILE_NAME" /> dosyası indirilemedi.</translation>
@@ -562,6 +551,7 @@
 <translation id="8173098127580644436">en baştan</translation>
 <translation id="8200772114523450471">Sürdür</translation>
 <translation id="8209050860603202033">Resmi aç</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> şuraya bağlanmak istiyor:</translation>
 <translation id="8218346974737627104">Oturum açmayı onaylayın</translation>
 <translation id="8218934717680664417">Artık tek bir dokunuşla arama yapabilirsiniz</translation>
 <translation id="8223946939421658889">Şu zamandan itibaren olan verileri temizle:</translation>
@@ -620,7 +610,7 @@
 <translation id="8987061207681586800">Chrome'u size özel yapın</translation>
 <translation id="9019902583201351841">Ebeveynleriniz tarafından yönetiliyor</translation>
 <translation id="9020607083536754075">Geçerli sekmeyi kapat ve önceki uygulamaya geri dön</translation>
-<translation id="9038649477754266430">Sayfaları daha hızlı yüklemek için bir tahmin hizmeti kullanın</translation>
+<translation id="9038649477754266430">Sayfaları daha hızlı yüklemek için bir tahmin hizmeti kullan</translation>
 <translation id="9050666287014529139">Parola</translation>
 <translation id="9060538597317784206"><ph name="APP_NAME" /> uygulamasını Play Store'da görüntüle. Derecelendirme: <ph name="APP_RATING" />.</translation>
 <translation id="9063523880881406963">Masaüstü sitesi istemeyi devre dışı bırak</translation>
@@ -636,6 +626,7 @@
 <translation id="917685106653909562">Yakınlardaki Fiziksel Web sayfaları</translation>
 <translation id="9187199695613236444">Mobil uyumlu görünüm</translation>
 <translation id="9192643434065497760">Eşlemeye izin vermek için Bluetooth'u <ph name="BEGIN_LINK" />cihaz ayarlarında<ph name="END_LINK" /> açın.</translation>
+<translation id="9198708126133947749">Bu cihazın verilerini, <ph name="TO_ACCOUNT" /> hesabının verileriyle değiştirin. Mevcut verilerinizi tekrar <ph name="FROM_ACCOUNT" /> hesabına geçerek alabilirsiniz.</translation>
 <translation id="9206873250291191720">A</translation>
 <translation id="932327136139879170">Ana Sayfa</translation>
 <translation id="938850635132480979">Hata: <ph name="ERROR_CODE" /></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 55381ea..5ad7e14a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Вітаємо, <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Пошук</translation>
 <translation id="1389974829397082527">Немає закладок</translation>
-<translation id="1390350022570422499">Тепер Chrome може знаходити й показувати веб-сторінки з пристроїв поруч за допомогою Bluetooth.
-
-Коли ваш пристрій розблоковано, Chrome шукатиме сторінки, які надсилають об’єкти поруч. Google оброблятиме ці сторінки, щоб покращити якість результатів.
-
-Керувати сервісом "Інтернет навколо нас" можна в налаштуваннях конфіденційності Chrome.</translation>
 <translation id="1404122904123200417">Вбудовано на сайті <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Не відстежувати"</translation>
 <translation id="1409879593029778104">Файл <ph name="FILE_NAME" /> не завантажено, оскільки він уже є.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Розширені</translation>
 <translation id="1984937141057606926">Заборонено лише сторонні файли cookie</translation>
 <translation id="1994173015038366702">URL-адреса сайту</translation>
+<translation id="2001120796168634316">Зберегти пов’язану сторінку</translation>
 <translation id="200669432486043882">Замінити файл</translation>
 <translation id="2038563949887743358">Увімкнути опцію "Запитувати версію сайту для комп’ютера"</translation>
 <translation id="2073235970478114994">Завантажити зображення</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Уточнити</translation>
 <translation id="2315043854645842844">Операційна система не підтримує сертифікат, вибраний на стороні клієнта.</translation>
 <translation id="2316129865977710310">Ні, дякую</translation>
-<translation id="2319528413610359757">Для читачів видання <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Перетягуйте повзунок, доки розмір тексту не стане зручним для читання. Якщо двічі торкнутись абзацу, розмір тексту має стати принаймні таким, як цей.</translation>
 <translation id="2329597144923131178">Увійдіть, щоб мати доступ до закладок, історії, паролів та інших налаштувань на всіх своїх пристроях.</translation>
 <translation id="2343328333327081434">Встановлення…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">щойно</translation>
 <translation id="2770465223704140727">Видалити зі списку</translation>
 <translation id="278029852808208386">Пристроїв Bluetooth не знайдено. <ph name="BEGIN_LINK" />Пошукайте ще раз<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Немає вашого пристрою? <ph name="BEGIN_LINK" />Перегляньте довідку<ph name="END_LINK" />.</translation>
 <translation id="2836148919159985482">Щоб вийти з повноекранного режиму, торкніться кнопки "Назад".</translation>
 <translation id="2842985007712546952">Батьківська папка</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Пропозиції у випадку помилок навігації</translation>
 <translation id="3732088672634061408">Не вдалось отримати дані про інтереси.</translation>
 <translation id="3738139272394829648">Пошук дотиком</translation>
-<translation id="3774280986422214650">Якщо ввімкнути цю функцію, ви братимете участь в експерименті, який передає сторінки HTTPS через сервери Google.</translation>
 <translation id="3809549525127675114">Відео "<ph name="VIDEO_TITLE" />" закінчилося</translation>
 <translation id="3828029223314399057">Пошук закладок</translation>
 <translation id="3871171699884605801">В обліковому записі для дітей не можна видалити історію веб-перегляду</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Зберегти посилання</translation>
 <translation id="4002066346123236978">Назва</translation>
 <translation id="4035611068038188272">Зараз закладки займають <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Сторінки поблизу в сервісі "Інтернет навколо нас"</translation>
 <translation id="4042870126885713738">Показувати пропозиції, коли неможливо перейти за веб-адресою чи не вдається встановити з’єднання</translation>
 <translation id="4056223980640387499">Сепія</translation>
 <translation id="4062305924942672200">Правова інформація</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Типи даних</translation>
 <translation id="4827948050554950725">Додати кредитну картку</translation>
 <translation id="4836364883164334657">Ваше з’єднання з цим сайтом не конфіденційне. Зловмисники можуть намагатися викрасти ваші дані з домену <ph name="DOMAIN_NAME" /> (зокрема фотографії, паролі, повідомлення та дані кредитних карток).</translation>
-<translation id="4842511359652954519">Докладніше</translation>
 <translation id="4850886885716139402">Перегляд</translation>
 <translation id="4875622588773761625">Оновити пароль для цього сайту в <ph name="PASSWORD_MANAGER_BRAND" />?</translation>
 <translation id="4881695831933465202">Відкрити</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Перейти вперед</translation>
 <translation id="4996978546172906250">Надіслати через</translation>
 <translation id="5000922062037820727">Заблоковано (рекомендується)</translation>
-<translation id="5014582685689328551">Переглядайте їх у Chrome</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Дозволити</translation>
 <translation id="5040262127954254034">Конфіденційність</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Шукати серед збережених сторінок</translation>
 <translation id="5313967007315987356">Додати сайт</translation>
 <translation id="5317780077021120954">Зберегти</translation>
-<translation id="5323972449344932352">Запустити Chrome</translation>
 <translation id="5324858694974489420">Батьківські налаштування</translation>
 <translation id="5327248766486351172">Назва</translation>
 <translation id="5345040418939504969">Закладку "<ph name="BOOKMARK_TITLE" />" видалено</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Заощадження даних: <ph name="PERCENT" /></translation>
 <translation id="6165508094623778733">Докладніше</translation>
 <translation id="6192792657125177640">Винятки</translation>
-<translation id="6208263165776660488">Вкладки Chrome переміщено</translation>
 <translation id="6231464350722415003">Дозволити JavaScript на вказаних веб-сайтах і заборонити для решти сайтів</translation>
 <translation id="6232535412751077445">Якщо ввімкнути параметр "Не відстежувати", запит додаватиметься в трафік веб-перегляду. Результат залежатиме від того, чи реагує веб-сайт на цей запит і як тлумачиться запит.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> використовує ваші геодані, щоб показувати результати місцевого пошуку</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Довідка<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Видалити закладку</translation>
-<translation id="7324738665594301612">Перевірка передавання сторінок HTTPS через сервери Google є частиною експерименту.</translation>
 <translation id="7346217184097589238">Збережені налаштування сайту, які стосуються ваших зацікавлень в Інтернеті, не буде видалено.</translation>
-<translation id="7346909386216857016">OK</translation>
 <translation id="7347770551817603360">Офлайн-вміст</translation>
 <translation id="7363354739009474003">Відео "<ph name="VIDEO_TITLE" />" завантажується</translation>
 <translation id="7366340029385295517">Трансляція на екран "<ph name="SCREEN_NAME" />"</translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Інтернет навколо нас</translation>
 <translation id="7596558890252710462">Операційна система</translation>
 <translation id="7599840151813361502">Ви не вийдете з <ph name="BEGIN_LINK" />облікових записів Google<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">Переглядайте вкладки та нещодавно відкриті додатки на екрані огляду свого телефона. Цією функцією можна керувати в <ph name="BEGIN_LINK" />Налаштуваннях<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Призупинено</translation>
 <translation id="7612619742409846846">Ви ввійшли в обліковий запис Google як</translation>
 <translation id="7619072057915878432">Не вдалося завантажити файл <ph name="FILE_NAME" />. Помилка мережі.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">весь період</translation>
 <translation id="8200772114523450471">Поновити</translation>
 <translation id="8209050860603202033">Відкрити зображення</translation>
+<translation id="8215250379351058554">Сайт <ph name="SITE" /> хоче під’єднатися до:</translation>
 <translation id="8218346974737627104">Підтвердити вхід</translation>
 <translation id="8218934717680664417">Тепер можна шукати вміст одним дотиком</translation>
 <translation id="8223946939421658889">Очистити дані за</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 9a7dfb7..b4bffbb7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -31,11 +31,6 @@
 <translation id="138361230106469022">Xin chào <ph name="FULL_NAME" />!</translation>
 <translation id="1383876407941801731">Tìm kiếm</translation>
 <translation id="1389974829397082527">Không có dấu trang ở đây</translation>
-<translation id="1390350022570422499">Giờ đây Chrome có thể tìm và hiển thị cho bạn các trang web lân cận bằng Bluetooth.
-
-Chrome sẽ quét tìm các trang lân cận khi thiết bị của bạn được mở khóa. Các trang này sẽ được chuyển tới một dịch vụ của Google để cải thiện chất lượng của kết quả trang.
-
-Bạn có thể kiểm soát Web trong cuộc sống trong cài đặt bảo mật của Chrome.</translation>
 <translation id="1404122904123200417">Được nhúng trong <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Không theo dõi”</translation>
 <translation id="1409879593029778104">Đã ngăn tải xuống <ph name="FILE_NAME" /> do tệp này đã tồn tại.</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">Nâng cao</translation>
 <translation id="1984937141057606926">Được cho phép, ngoại trừ cookie của bên thứ ba</translation>
 <translation id="1994173015038366702">URL trang web</translation>
+<translation id="2001120796168634316">Lưu trang liên kết để xem sau</translation>
 <translation id="200669432486043882">Thay thế tệp</translation>
 <translation id="2038563949887743358">Bật Yêu cầu trang web cho máy tính</translation>
 <translation id="2073235970478114994">Tải hình ảnh</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">Tinh chỉnh</translation>
 <translation id="2315043854645842844">Lựa chọn chứng chỉ phía ứng dụng khách không được hệ điều hành hỗ trợ.</translation>
 <translation id="2316129865977710310">Không, cảm ơn</translation>
-<translation id="2319528413610359757">Dành cho người đọc <ph name="PUBLISHER" /></translation>
 <translation id="2321958826496381788">Kéo thanh trượt cho đến khi bạn có thể đọc nội dung này thoải mái. Chữ tối thiểu phải to như này sau khi bấm đúp vào một đoạn.</translation>
 <translation id="2329597144923131178">Đăng nhập để nhận dấu trang, lịch sử, mật khẩu và các cài đặt khác trên tất cả các thiết bị của bạn.</translation>
 <translation id="2343328333327081434">Đang cài đặt…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">vừa xong</translation>
 <translation id="2770465223704140727">Xóa khỏi danh sách</translation>
 <translation id="278029852808208386">Không tìm thấy thiết bị bluetooth. <ph name="BEGIN_LINK" />Tìm kiếm lại<ph name="END_LINK" />.</translation>
+<translation id="2811892995384186721">Không thấy thiết bị của bạn? <ph name="BEGIN_LINK" />Nhận trợ giúp<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">Chạm vào nút quay lại để thoát khỏi chế độ toàn màn hình.</translation>
 <translation id="2842985007712546952">Thư mục gốc</translation>
 <translation id="2870560284913253234">Trang web</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">Đề xuất lỗi điều hướng</translation>
 <translation id="3732088672634061408">Không thể truy xuất sở thích.</translation>
 <translation id="3738139272394829648">Chạm để tìm kiếm</translation>
-<translation id="3774280986422214650">Nếu bật tính năng này, bạn sẽ trở thành một phần của thử nghiệm ủy quyền trang HTTPS thông qua máy chủ Google.</translation>
 <translation id="3809549525127675114">Đã phát xong “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="3828029223314399057">Tìm kiếm dấu trang</translation>
 <translation id="3871171699884605801">Không thể xóa lịch sử duyệt web bằng tài khoản dành cho trẻ em</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">Lưu liên kết</translation>
 <translation id="4002066346123236978">Tiêu đề</translation>
 <translation id="4035611068038188272">Dấu trang hiện sử dụng <ph name="TOTAL_OFFLINE_STORAGE_SIZE" />.</translation>
-<translation id="403659016947612156">Các trang Web trong cuộc sống ở gần đây</translation>
 <translation id="4042870126885713738">Hiển thị các đề xuất khi địa chỉ web không khắc phục được hoặc kết nối không thể được thực hiện</translation>
 <translation id="4056223980640387499">Màu nâu đỏ</translation>
 <translation id="4062305924942672200">Thông tin pháp lý</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">Loại dữ liệu</translation>
 <translation id="4827948050554950725">Thêm thẻ tín dụng</translation>
 <translation id="4836364883164334657">Kết nối của bạn tới trang web này không ở chế độ riêng tư. Những kẻ tấn công có thể tìm cách lấy cắp thông tin của bạn (ví dụ: ảnh, mật khẩu, tin nhắn và thẻ tín dụng) từ <ph name="DOMAIN_NAME" />.</translation>
-<translation id="4842511359652954519">Đọc thêm</translation>
 <translation id="4850886885716139402">Xem</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>
 <translation id="4881695831933465202">Mở</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">Đi về phía trước</translation>
 <translation id="4996978546172906250">Chia sẻ qua</translation>
 <translation id="5000922062037820727">Bị chặn (được đề xuất)</translation>
-<translation id="5014582685689328551">Sử dụng Chrome để duyệt qua chúng</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">Cho phép</translation>
 <translation id="5040262127954254034">Bảo mật</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">Tìm kiếm các trang đã lưu</translation>
 <translation id="5313967007315987356">Thêm trang web</translation>
 <translation id="5317780077021120954">Lưu</translation>
-<translation id="5323972449344932352">Khởi chạy Chrome</translation>
 <translation id="5324858694974489420">Cài đặt của phụ huynh</translation>
 <translation id="5327248766486351172">Tên</translation>
 <translation id="5345040418939504969">Đã xóa <ph name="BOOKMARK_TITLE" /></translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">Tiết kiệm <ph name="PERCENT" /> dữ liệu</translation>
 <translation id="6165508094623778733">Tìm hiểu thêm</translation>
 <translation id="6192792657125177640">Ngoại lệ</translation>
-<translation id="6208263165776660488">Tab Chrome đã di chuyển</translation>
 <translation id="6231464350722415003">Cho phép JavaScript trên các trang web bạn chỉ định trong khi chặn đối với các phần web khác</translation>
 <translation id="6232535412751077445">Bật tính năng “Không theo dõi” nghĩa là một yêu cầu sẽ được đi kèm với lưu lượng duyệt web của bạn. Mọi ảnh hưởng đều phụ thuộc vào việc trang web có phản hồi yêu cầu không và cách thức diễn giải yêu cầu.
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> sử dụng vị trí của bạn để hiển thị kết quả tìm kiếm địa phương</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />Trợ giúp<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">Xóa dấu trang</translation>
-<translation id="7324738665594301612">Chúng tôi đang kiểm tra việc ủy quyền các trang HTTPS thông qua máy chủ Google dưới dạng một phần của thử nghiệm.</translation>
 <translation id="7346217184097589238">Cài đặt trang web đã lưu sẽ không bị xóa và có thể phản ánh thói quen duyệt web của bạn.</translation>
-<translation id="7346909386216857016">Ok</translation>
 <translation id="7347770551817603360">Nội dung ngoại tuyến</translation>
 <translation id="7363354739009474003">Đang tải “<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">Đang truyền tới <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">Web trong cuộc sống</translation>
 <translation id="7596558890252710462">Hệ điều hành</translation>
 <translation id="7599840151813361502">Bạn sẽ không bị đăng xuất khỏi <ph name="BEGIN_LINK" />Tài khoản Google<ph name="END_LINK" /> của mình</translation>
-<translation id="7603403729818446828">Xem các tab của bạn với các ứng dụng gần đây khác trên màn hình Tổng quan của điện thoại. Bạn có thể kiểm soát cài đặt này trong <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation>
 <translation id="7607002721634913082">Đã tạm dừng</translation>
 <translation id="7612619742409846846">Đã đăng nhập vào Google bằng</translation>
 <translation id="7619072057915878432">Tải xuống không thành công <ph name="FILE_NAME" /> do lỗi mạng.</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">mọi thứ</translation>
 <translation id="8200772114523450471">Tiếp tục</translation>
 <translation id="8209050860603202033">Mở ảnh</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> muốn kết nối với:</translation>
 <translation id="8218346974737627104">Xác nhận đăng nhập</translation>
 <translation id="8218934717680664417">Bạn hiện có thể tìm kiếm bằng một lần chạm</translation>
 <translation id="8223946939421658889">Xóa dữ liệu khỏi</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 5fd9735f..547c9c0 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
@@ -31,11 +31,6 @@
 <translation id="138361230106469022"><ph name="FULL_NAME" />,您好!</translation>
 <translation id="1383876407941801731">搜索</translation>
 <translation id="1389974829397082527">该文件夹中没有书签</translation>
-<translation id="1390350022570422499">Chrome 现在可以通过蓝牙寻找并向您显示附近的网页。
-
-当您的设备处于解锁状态时,Chrome 会检测附近的网页。接下来,相关 Google 服务会处理这些网页,以提高网页搜索结果的质量。
-
-您可以在 Chrome 隐私设置中管理实物网。</translation>
 <translation id="1404122904123200417">嵌入位置:<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“不跟踪”</translation>
 <translation id="1409879593029778104">系统已阻止下载 <ph name="FILE_NAME" />,因为文件已存在。</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">高级</translation>
 <translation id="1984937141057606926">允许(第三方除外)</translation>
 <translation id="1994173015038366702">网站网址</translation>
+<translation id="2001120796168634316">保存链接页以备后用</translation>
 <translation id="200669432486043882">替换文件</translation>
 <translation id="2038563949887743358">开启“请求切换到桌面版网站”</translation>
 <translation id="2073235970478114994">加载图片</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">优化</translation>
 <translation id="2315043854645842844">操作系统不支持选择客户端证书。</translation>
 <translation id="2316129865977710310">不用了,谢谢</translation>
-<translation id="2319528413610359757">面向《<ph name="PUBLISHER" />》的读者</translation>
 <translation id="2321958826496381788">拖动该滑块,将文字调整到适合您阅读的大小。点按两次某段落后,显示的文字至少应是这么大。</translation>
 <translation id="2329597144923131178">登录后可获取您所有设备上保存的书签、历史记录、密码和其他设置。</translation>
 <translation id="2343328333327081434">正在安装…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">刚刚</translation>
 <translation id="2770465223704140727">从列表中移除</translation>
 <translation id="278029852808208386">未发现任何蓝牙设备。<ph name="BEGIN_LINK" />重新搜索<ph name="END_LINK" />。</translation>
+<translation id="2811892995384186721">没看到您的设备?<ph name="BEGIN_LINK" />寻求帮助<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">触摸“返回”按钮即可退出全屏模式。</translation>
 <translation id="2842985007712546952">父文件夹</translation>
 <translation id="2870560284913253234">网站</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">导航错误建议</translation>
 <translation id="3732088672634061408">无法检索兴趣相关数据。</translation>
 <translation id="3738139272394829648">触摸搜索</translation>
-<translation id="3774280986422214650">如果您启用了此功能,您将参与到通过 Google 服务器代理 HTTPS 网页的实验中。</translation>
 <translation id="3809549525127675114">“<ph name="VIDEO_TITLE" />”已播放完毕</translation>
 <translation id="3828029223314399057">搜索书签</translation>
 <translation id="3871171699884605801">无法清除未成年人帐户的浏览记录</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">保存链接</translation>
 <translation id="4002066346123236978">标题</translation>
 <translation id="4035611068038188272">书签目前占用了 <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> 的空间。</translation>
-<translation id="403659016947612156">附近有实物网网页</translation>
 <translation id="4042870126885713738">无法解析网址或无法建立连接时显示建议</translation>
 <translation id="4056223980640387499">棕色调</translation>
 <translation id="4062305924942672200">法律信息</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">数据类型</translation>
 <translation id="4827948050554950725">添加信用卡</translation>
 <translation id="4836364883164334657">您与此网站之间的连接不是私密连接。攻击者可能会试图从 <ph name="DOMAIN_NAME" /> 窃取您的信息(例如照片、密码、电子邮件和信用卡信息)。</translation>
-<translation id="4842511359652954519">了解详情</translation>
 <translation id="4850886885716139402">视图</translation>
 <translation id="4875622588773761625">要让<ph name="PASSWORD_MANAGER_BRAND" />更新您登录此网站时使用的密码吗?</translation>
 <translation id="4881695831933465202">打开</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">前进</translation>
 <translation id="4996978546172906250">分享方式</translation>
 <translation id="5000922062037820727">已阻止(推荐)</translation>
-<translation id="5014582685689328551">使用 Chrome 浏览这些网页</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">允许</translation>
 <translation id="5040262127954254034">隐私设置</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">搜索保存的网页</translation>
 <translation id="5313967007315987356">添加网站</translation>
 <translation id="5317780077021120954">保存</translation>
-<translation id="5323972449344932352">启动 Chrome</translation>
 <translation id="5324858694974489420">家长设置</translation>
 <translation id="5327248766486351172">名称</translation>
 <translation id="5345040418939504969">已删除“<ph name="BOOKMARK_TITLE" />”</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">节省 <ph name="PERCENT" /> 的数据流量</translation>
 <translation id="6165508094623778733">了解详情</translation>
 <translation id="6192792657125177640">例外</translation>
-<translation id="6208263165776660488">Chrome 标签页已移至新的位置</translation>
 <translation id="6231464350722415003">允许在您指定的网站上运行 JavaScript,同时禁止在其他网站上运行 JavaScript</translation>
 <translation id="6232535412751077445">如果您启用了“不跟踪”,您的浏览流量中将会包含一项请求。具体影响取决于网站是否会回应该请求以及如何解读该请求。
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> 将根据您的位置信息显示本地搜索结果</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />帮助<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">删除书签</translation>
-<translation id="7324738665594301612">我们正在作为某项实验的参与者对通过 Google 服务器代理 HTTPS 网页进行测试。</translation>
 <translation id="7346217184097589238">已保存的网站设置不会被删除,并且可能会反映您的浏览习惯。</translation>
-<translation id="7346909386216857016">知道了</translation>
 <translation id="7347770551817603360">离线内容</translation>
 <translation id="7363354739009474003">正在加载“<ph name="VIDEO_TITLE" />”</translation>
 <translation id="7366340029385295517">正在投射至<ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">实物网</translation>
 <translation id="7596558890252710462">操作系统</translation>
 <translation id="7599840151813361502">您不会因此而退出自己的 <ph name="BEGIN_LINK" />Google 帐户<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">您目前打开的标签页和最近用过的其他应用都会显示在您手机的“概览”屏幕上。您可以在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />部分控制此功能。</translation>
 <translation id="7607002721634913082">已暂停</translation>
 <translation id="7612619742409846846">已使用以下帐户登录 Google:</translation>
 <translation id="7619072057915878432">未能成功下载 <ph name="FILE_NAME" />,因为出现了网络故障。</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">自始至今</translation>
 <translation id="8200772114523450471">继续</translation>
 <translation id="8209050860603202033">打开图片</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> 想连接到:</translation>
 <translation id="8218346974737627104">确认登录</translation>
 <translation id="8218934717680664417">现在,您只需触摸一下即可启动搜索</translation>
 <translation id="8223946939421658889">清除以下时间段内的数据:</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 833503c8..65c54bf 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
@@ -31,11 +31,6 @@
 <translation id="138361230106469022"><ph name="FULL_NAME" />,您好:</translation>
 <translation id="1383876407941801731">搜尋</translation>
 <translation id="1389974829397082527">這裡沒有任何書籤</translation>
-<translation id="1390350022570422499">Chrome 現在可透過藍牙尋找並顯示附近的網頁。
-
-Chrome 會在您的裝置解鎖時掃描附近的網頁。這些網頁經由 Google 服務處理過後,可讓網頁搜尋結果的品質更臻完善。
-
-您可以在 Chrome 隱私權設定中管理實體化網路。</translation>
 <translation id="1404122904123200417">內嵌位置:<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">「不追蹤」</translation>
 <translation id="1409879593029778104"><ph name="FILE_NAME" /> 檔案已存在,因此無法下載。</translation>
@@ -78,6 +73,7 @@
 <translation id="1974060860693918893">進階</translation>
 <translation id="1984937141057606926">允許 (第三方網站除外)</translation>
 <translation id="1994173015038366702">網站網址</translation>
+<translation id="2001120796168634316">儲存連結的網頁以供日後使用</translation>
 <translation id="200669432486043882">取代檔案</translation>
 <translation id="2038563949887743358">開啟「要求電腦版網站」</translation>
 <translation id="2073235970478114994">載入圖片</translation>
@@ -96,7 +92,6 @@
 <translation id="2268044343513325586">修正搜尋</translation>
 <translation id="2315043854645842844">作業系統不允許您在用戶端選取憑證。</translation>
 <translation id="2316129865977710310">不,謝謝</translation>
-<translation id="2319528413610359757">「<ph name="PUBLISHER" />」讀者文摘</translation>
 <translation id="2321958826496381788">拖曳滑桿,將文字調整到您可以舒適閱讀的大小。當您輕按兩下文字段落,文字至少應呈現這樣的大小。</translation>
 <translation id="2329597144923131178">登入後,即可從您使用的任何裝置取得自己的書籤、歷史紀錄、密碼和其他設定。</translation>
 <translation id="2343328333327081434">安裝中…</translation>
@@ -136,6 +131,7 @@
 <translation id="2762000892062317888">剛剛</translation>
 <translation id="2770465223704140727">從清單中移除</translation>
 <translation id="278029852808208386">找不到藍牙裝置,請<ph name="BEGIN_LINK" />重新搜尋<ph name="END_LINK" />。</translation>
+<translation id="2811892995384186721">找不到您的裝置嗎?<ph name="BEGIN_LINK" />尋求協助<ph name="END_LINK" /></translation>
 <translation id="2836148919159985482">輕觸返回按鈕即可結束全螢幕模式。</translation>
 <translation id="2842985007712546952">上層資料夾</translation>
 <translation id="2870560284913253234">網站</translation>
@@ -199,7 +195,6 @@
 <translation id="3672452749423051839">瀏覽錯誤建議</translation>
 <translation id="3732088672634061408">無法擷取興趣資料。</translation>
 <translation id="3738139272394829648">輕觸搜尋</translation>
-<translation id="3774280986422214650">啟用這項實驗功能後,您將體驗透過 Google 伺服器對 HTTPS 網頁執行 Proxy 處理的效能。</translation>
 <translation id="3809549525127675114">「<ph name="VIDEO_TITLE" />」已結束</translation>
 <translation id="3828029223314399057">搜尋書籤</translation>
 <translation id="3871171699884605801">無法清除兒童專用帳戶的瀏覽紀錄</translation>
@@ -214,7 +209,6 @@
 <translation id="3992315671621218278">儲存連結</translation>
 <translation id="4002066346123236978">標題</translation>
 <translation id="4035611068038188272">書籤目前使用了 <ph name="TOTAL_OFFLINE_STORAGE_SIZE" /> 的儲存空間。</translation>
-<translation id="403659016947612156">附近有實體化網路網頁</translation>
 <translation id="4042870126885713738">在無法解析網址或建立連線時顯示建議</translation>
 <translation id="4056223980640387499">深褐色調</translation>
 <translation id="4062305924942672200">法律資訊</translation>
@@ -274,7 +268,6 @@
 <translation id="4816465935029283692">資料類型</translation>
 <translation id="4827948050554950725">新增信用卡</translation>
 <translation id="4836364883164334657">您與這個網站之間的連線不是私人連線。攻擊者可能會嘗試從 <ph name="DOMAIN_NAME" /> 竊取您的資訊 (例如相片、密碼、郵件和信用卡資訊)。</translation>
-<translation id="4842511359652954519">閱讀完整內容</translation>
 <translation id="4850886885716139402">檢視</translation>
 <translation id="4875622588773761625">您要讓 <ph name="PASSWORD_MANAGER_BRAND" /> 更新您在這個網站設定的密碼嗎?</translation>
 <translation id="4881695831933465202">開啟</translation>
@@ -287,7 +280,6 @@
 <translation id="497421865427891073">往前</translation>
 <translation id="4996978546172906250">分享方式:</translation>
 <translation id="5000922062037820727">已封鎖 (建議)</translation>
-<translation id="5014582685689328551">透過 Chrome 瀏覽這些網頁</translation>
 <translation id="5016205925109358554">Serif</translation>
 <translation id="5039804452771397117">允許</translation>
 <translation id="5040262127954254034">隱私權</translation>
@@ -322,7 +314,6 @@
 <translation id="5308933389783727448">搜尋儲存的網頁</translation>
 <translation id="5313967007315987356">新增網站</translation>
 <translation id="5317780077021120954">儲存</translation>
-<translation id="5323972449344932352">啟動 Chrome</translation>
 <translation id="5324858694974489420">家長設定</translation>
 <translation id="5327248766486351172">名稱</translation>
 <translation id="5345040418939504969">已刪除的「<ph name="BOOKMARK_TITLE" />」</translation>
@@ -401,7 +392,6 @@
 <translation id="6159335304067198720">節省 <ph name="PERCENT" /> 的數據流量</translation>
 <translation id="6165508094623778733">瞭解詳情</translation>
 <translation id="6192792657125177640">例外</translation>
-<translation id="6208263165776660488">Chrome 分頁已移至新的位置</translation>
 <translation id="6231464350722415003">允許在您指定的網站上執行 JavaScript,但禁止其他網站執行</translation>
 <translation id="6232535412751077445">啟用「不追蹤」功能即表示要求將會包含在您的瀏覽流量中,其效用取決於網站是否回應要求以及如何解讀要求。
 
@@ -490,9 +480,7 @@
 <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> 會使用您的位置資訊來顯示當地搜尋結果</translation>
 <translation id="7299441085833132046"><ph name="BEGIN_LINK" />說明<ph name="END_LINK" /></translation>
 <translation id="7299721129597238157">刪除書籤</translation>
-<translation id="7324738665594301612">我們正在執行實驗功能,測試透過 Google 伺服器對 HTTPS 網頁執行 Proxy 處理的效能。</translation>
 <translation id="7346217184097589238">已儲存的網站設定不會遭到刪除,而且可能會反映您的瀏覽習慣。</translation>
-<translation id="7346909386216857016">好,我瞭解了</translation>
 <translation id="7347770551817603360">離線內容</translation>
 <translation id="7363354739009474003">正在載入「<ph name="VIDEO_TITLE" />」</translation>
 <translation id="7366340029385295517">正在投放到 <ph name="SCREEN_NAME" /></translation>
@@ -515,7 +503,6 @@
 <translation id="7588950540487816470">實體化網路</translation>
 <translation id="7596558890252710462">作業系統</translation>
 <translation id="7599840151813361502">您不會因此登出 <ph name="BEGIN_LINK" />Google 帳戶<ph name="END_LINK" /></translation>
-<translation id="7603403729818446828">手機的「總覽」畫面會顯示您的分頁和其他最近使用過的應用程式。您可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中控管這項功能。</translation>
 <translation id="7607002721634913082">已暫停</translation>
 <translation id="7612619742409846846">已使用下列帳戶登入 Google:</translation>
 <translation id="7619072057915878432">無法連上網路,因此無法下載 <ph name="FILE_NAME" />。</translation>
@@ -564,6 +551,7 @@
 <translation id="8173098127580644436">不限時間</translation>
 <translation id="8200772114523450471">繼續</translation>
 <translation id="8209050860603202033">開啟圖片</translation>
+<translation id="8215250379351058554"><ph name="SITE" /> 要求連線至:</translation>
 <translation id="8218346974737627104">確認登入</translation>
 <translation id="8218934717680664417">從現在起,只要輕觸即可搜尋</translation>
 <translation id="8223946939421658889">資料清除範圍:</translation>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 69277ff1..af9b19c 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -249,6 +249,7 @@
   "java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java",
   "java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java",
   "java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java",
+  "java/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegate.java",
   "java/src/org/chromium/chrome/browser/customtabs/CustomTabContentHandler.java",
   "java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java",
   "java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/BindingManagerInDocumentModeIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/BindingManagerInDocumentModeIntegrationTest.java
index aa1d9622d..64f88b6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/BindingManagerInDocumentModeIntegrationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/BindingManagerInDocumentModeIntegrationTest.java
@@ -13,6 +13,7 @@
 import android.util.SparseBooleanArray;
 
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.Restriction;
@@ -31,6 +32,7 @@
  * Integration tests in document mode for the BindingManager API. This test plants a mock
  * BindingManager implementation and verifies that the signals it relies on are correctly delivered.
  */
+@DisabledTest
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
 public class BindingManagerInDocumentModeIntegrationTest extends DocumentModeTestBase {
     private static class MockBindingManager implements BindingManager {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeLowEndTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeLowEndTest.java
index 2170ff2..28b076e2 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeLowEndTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeLowEndTest.java
@@ -14,6 +14,7 @@
 
 import org.chromium.base.BaseSwitches;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.browser.ChromeApplication;
@@ -33,6 +34,7 @@
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
 // TODO(dskiba): remove the following switch once we have Svelte bots running L
 @CommandLineFlags.Add(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)
+@DisabledTest
 public class DocumentModeLowEndTest extends DocumentModeTestBase {
 
     @Restriction(RESTRICTION_TYPE_LOW_END_DEVICE)
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeReferrerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeReferrerTest.java
index 5649bc2..8f19189 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeReferrerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeReferrerTest.java
@@ -11,6 +11,7 @@
 import android.provider.Browser;
 import android.test.suitebuilder.annotation.MediumTest;
 
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.chrome.browser.ChromeApplication;
 import org.chromium.chrome.browser.IntentHandler;
@@ -28,6 +29,7 @@
  * Tests that Document mode handles referrers correctly.
  */
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
+@DisabledTest
 public class DocumentModeReferrerTest extends DocumentModeTestBase {
     private static final int ACTIVITY_START_TIMEOUT = 1000;
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeTest.java
index 34ef7392..0f53325 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/document/DocumentModeTest.java
@@ -19,6 +19,7 @@
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.UrlUtils;
 import org.chromium.chrome.browser.ChromeActivity;
@@ -48,6 +49,7 @@
 /**
  * General tests for how Document mode Activities interact with each other.
  */
+@DisabledTest
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
 public class DocumentModeTest extends DocumentModeTestBase {
     /** Opens a new page with a huge URL via window.open(). */
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/DocumentActivityHWATest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/DocumentActivityHWATest.java
index 5d490b8..f70225b 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/DocumentActivityHWATest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/DocumentActivityHWATest.java
@@ -9,6 +9,7 @@
 import android.test.suitebuilder.annotation.SmallTest;
 
 import org.chromium.base.ApplicationStatus;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.browser.document.DocumentActivity;
 import org.chromium.chrome.browser.document.DocumentModeTestBase;
@@ -16,6 +17,7 @@
 /**
  * Tests that DocumentActivity is hardware accelerated only high-end devices.
  */
+@DisabledTest
 public class DocumentActivityHWATest extends DocumentModeTestBase {
 
     @SmallTest
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/NotificationTitleUpdatedTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/NotificationTitleUpdatedTest.java
index 58ab5f77..506a600 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/NotificationTitleUpdatedTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/NotificationTitleUpdatedTest.java
@@ -6,7 +6,10 @@
 
 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
 
+import android.app.Notification;
 import android.test.suitebuilder.annotation.SmallTest;
+import android.view.View;
+import android.widget.TextView;
 
 import org.chromium.base.ObserverList;
 import org.chromium.base.ThreadUtils;
@@ -17,12 +20,15 @@
 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
 import org.chromium.chrome.test.util.ChromeRestriction;
 import org.chromium.chrome.test.util.browser.TabTitleObserver;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
 import org.chromium.content.browser.test.util.JavaScriptUtils;
 import org.chromium.content_public.browser.WebContentsObserver;
 import org.chromium.content_public.common.MediaMetadata;
 
 /**
- * Test of media notifications to see whether the text updates when the tab title changes
+ * Test of media notifications to see whether the text updates when the tab title changes or the
+ * MediaMetadata gets updated.
  */
 public class NotificationTitleUpdatedTest extends ChromeActivityTestCaseBase<ChromeActivity> {
     private static final int NOTIFICATION_ID = R.id.media_playback_notification;
@@ -49,7 +55,7 @@
     }
 
     @SmallTest
-    public void testSessionStatePaused() {
+    public void testSessionStatePaused() throws InterruptedException {
         simulateMediaSessionStateChanged(mTab, true, true);
         assertTitleMatches("title1");
         simulateUpdateTitle(mTab, "title2");
@@ -57,13 +63,28 @@
     }
 
     @SmallTest
-    public void testSessionStateUncontrollable() {
+    public void testSessionStateUncontrollable() throws InterruptedException {
         simulateMediaSessionStateChanged(mTab, true, false);
         assertTitleMatches("title1");
         simulateMediaSessionStateChanged(mTab, false, false);
         simulateUpdateTitle(mTab, "title2");
     }
 
+    @SmallTest
+    public void testMediaMetadaSetsTitle() throws InterruptedException {
+        simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("title2", "", ""));
+        assertTitleMatches("title2");
+    }
+
+    @SmallTest
+    public void testMediaMetadaOverridesTitle() throws InterruptedException {
+        simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("title2", "", ""));
+        assertTitleMatches("title2");
+
+        simulateUpdateTitle(mTab, "title3");
+        assertTitleMatches("title2");
+    }
+
     /**
      * Test if a notification accepts the title update from another tab, using the following steps:
      *   1. set the title of mTab, start the media session, a notification should show up;
@@ -96,6 +117,12 @@
 
     private void simulateMediaSessionStateChanged(
             final Tab tab, final boolean isControllable, final boolean isSuspended) {
+        simulateMediaSessionStateChanged(
+                tab, isControllable, isSuspended, new MediaMetadata("", "", ""));
+    }
+
+    private void simulateMediaSessionStateChanged(final Tab tab, final boolean isControllable,
+            final boolean isSuspended, final MediaMetadata metadata) {
         ThreadUtils.runOnUiThreadBlocking(new Runnable() {
                 @Override
                 public void run() {
@@ -103,7 +130,7 @@
                             tab.getWebContents().getObserversForTesting();
                     while (observers.hasNext()) {
                         observers.next().mediaSessionStateChanged(
-                                isControllable, isSuspended, new MediaMetadata("", "", ""));
+                                isControllable, isSuspended, metadata);
                     }
                 }
             });
@@ -121,12 +148,29 @@
         }
     }
 
-    void assertTitleMatches(final String title) {
+    void assertTitleMatches(final String title) throws InterruptedException {
+        // The service might still not be created which delays the creation of the notification
+        // builder.
+        CriteriaHelper.pollUiThread(new Criteria() {
+            @Override
+            public boolean isSatisfied() {
+                return MediaNotificationManager.getNotificationBuilderForTesting(NOTIFICATION_ID)
+                        != null;
+            }
+        });
+
         ThreadUtils.runOnUiThreadBlocking(new Runnable() {
                 @Override
                 public void run() {
-                    assertEquals(title, MediaNotificationManager
-                            .getNotificationInfoForTesting(NOTIFICATION_ID).metadata.getTitle());
+                    Notification notification =
+                            MediaNotificationManager
+                                    .getNotificationBuilderForTesting(NOTIFICATION_ID)
+                                    .build();
+
+                    View contentView = notification.contentView.apply(
+                            getActivity().getApplicationContext(), null);
+                    TextView titleView = (TextView) contentView.findViewById(R.id.title);
+                    assertEquals(title, titleView.getText());
                 }
             });
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/DocumentModeRecentlyClosedTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/DocumentModeRecentlyClosedTest.java
index 0e98682..128dc71a 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/DocumentModeRecentlyClosedTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/DocumentModeRecentlyClosedTest.java
@@ -10,6 +10,7 @@
 
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.chrome.browser.ChromeApplication;
 import org.chromium.chrome.browser.document.DocumentActivity;
@@ -33,6 +34,7 @@
 /**
  * Tests that the "Recently closed" list of Tabs in the "Recent Tabs" menu is updated properly.
  */
+@DisabledTest
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
 public class DocumentModeRecentlyClosedTest extends DocumentModeTestBase {
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
index 15de8843..9d27aed 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappModeTest.java
@@ -16,6 +16,7 @@
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.base.test.util.UrlUtils;
@@ -229,7 +230,7 @@
      */
     @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
     @Restriction(ChromeRestriction.RESTRICTION_TYPE_PHONE)
-    @MediumTest
+    @DisabledTest
     public void testWebappHandlesWindowOpenInDocumentMode() throws Exception {
         triggerWindowOpenAndWaitForDocumentLoad(ONCLICK_LINK, true);
     }
@@ -248,7 +249,7 @@
      */
     @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
     @Restriction(ChromeRestriction.RESTRICTION_TYPE_PHONE)
-    @MediumTest
+    @DisabledTest
     public void testWebappHandlesSuppressedWindowOpenInDocumentMode() throws Exception {
         triggerWindowOpenAndWaitForDocumentLoad(HREF_NO_REFERRER_LINK, false);
     }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index f526849b..056d90af 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -14574,12 +14574,6 @@
       <message name="IDS_FLAGS_HERB_PROTOTYPE_FLAVOR_ELDERBERRY" desc="CCT everywhere" translateable="false">
         ELDERBERRY: All View Intents in CCT v2
       </message>
-      <message name="IDS_FLAGS_FORCE_MIGRATION_TO_TABBED_MODE_NAME" desc="Name for the flag to force users into tabbed mode from document mode." translateable="false">
-        Force users into tabbed mode
-      </message>
-      <message name="IDS_FLAGS_FORCE_MIGRATION_TO_TABBED_MODE_DESCRIPTION" desc="Description for the flag to force users into tabbed mode from document mode." translateable="false">
-        If enabled, Chrome will automatically migrate users out of document mode and into tabbed mode when it launches.
-      </message>
       <message name="IDS_FLAGS_TAB_SWITCHER_IN_DOCUMENT_MODE_NAME" desc="Name for the flag to enable tab switcher in document mode.">
         Enable tab switcher in document mode.
       </message>
diff --git a/chrome/app/mash/DEPS b/chrome/app/mash/DEPS
index 38f328f5..58a2649 100644
--- a/chrome/app/mash/DEPS
+++ b/chrome/app/mash/DEPS
@@ -2,7 +2,7 @@
   "+ash",
   # This code is purely a packaging convenience and should be no different
   # than running mojo_runner with mash_session. As such, this code should not
-  # depend upon chrome code in any way. 
+  # depend upon chrome code in any way.
   "-chrome",
   "+chrome/app/mash",
   "+components/font_service",
diff --git a/chrome/app/media_router_strings.grdp b/chrome/app/media_router_strings.grdp
index 3c33260c..b668b80 100644
--- a/chrome/app/media_router_strings.grdp
+++ b/chrome/app/media_router_strings.grdp
@@ -15,6 +15,20 @@
    Learn more
   </message>
 
+  <!-- Button Titles -->
+  <message name="IDS_MEDIA_ROUTER_BACK_BUTTON_TITLE" desc="Back button title, which is spoken when a screen reader is being used.">
+    Back
+  </message>
+  <message name="IDS_MEDIA_ROUTER_CLOSE_BUTTON_TITLE" desc="Close button title, which is spoken when a screen reader is being used.">
+    Close
+  </message>
+  <message name="IDS_MEDIA_ROUTER_DROP_DOWN_BUTTON_TITLE" desc="Drop down button title, which is spoken when a screen reader is being used.">
+    Drop down
+  </message>
+  <message name="IDS_MEDIA_ROUTER_SEARCH_BUTTON_TITLE" desc="Search button title, which is spoken when a screen reader is being used.">
+    Search
+  </message>
+
   <!-- Cast Modes -->
   <message name="IDS_MEDIA_ROUTER_AUTO_CAST_MODE" desc="Title for auto cast mode that appears as the header of a list of devices. This represents the mode that will be initially shown, if the list of sinks supports more than one of the cast modes below. Note that auto mode is not a real cast mode and merely serves as a proxy for the other cast modes. This is NOT shown as a dropdown option.">
     Cast to
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb
index 9d68a2a..fded3b7 100644
--- a/chrome/app/resources/chromium_strings_am.xtb
+++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">እባክዎ ሁሉንም የChromium መስኮቶችን (በWindows 8 ሁነታ ላይ ያሉትንም ጨምሮ) ይዝጉና እንደገና ይሞክሩ።</translation>
 <translation id="1708666629004767631">አዲስና ደህንነቱ ይበልጥ የተጠበቀ የChromium ስሪት አለ።</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> የአሰሳ ተሞክሮዎን ሊጎዳው ይችላል፣ ስለዚህ Chromium አግዶታል።</translation>
-<translation id="1745962126679160932">Chromium መረጃዎን በድጋሚ መተየብ እንዳይኖርብዎ ደህንነቱ በተጠበቀ ሁኔታ ያስቀምጣል፣ ነገር ግን ለወደፊት ክፍያዎች አሁንም የካርድዎን የደህንነት ኮድ ማረጋገጥ አለብዎ።</translation>
 <translation id="1774152462503052664">Chromium ጀርባ ላይ ይሂድ</translation>
 <translation id="1779356040007214683">Chromium ይበልጥ ደህንነቱ የተጠበቀ እንዲሆን ለማድረግ፣ በ<ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ውስጥ ያልተጠቀሱ እና እርስዎ ሳያውቋቸው የታከሉ ሊሆኑ የሚችሉ የተወሰኑ ዝርዝሮችን አሰናክለናል።</translation>
 <translation id="1808667845054772817">Chromiumን ዳግም ጫን</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium መልስ አይሰጥም። አሁን ዳግም ይጀምር?</translation>
 <translation id="1967743265616885482">ተመሳሳይ ስም ያለው ሞዱል ከChromium ጋር የሚጋጭ መሆኑ ይታወቃል።</translation>
 <translation id="2077129598763517140">ሲገኝ የሃርድዌር ማጣደፍን ተጠቀም</translation>
+<translation id="2103655854491303969">የChromium የመተግበሪያ ማስጀመሪያው ይቋረጣል።</translation>
 <translation id="2117181891440368863"><ph name="ISSUER" /> የዚህን የድር ጣቢያ ምስክር ወረቀት እንደሰጠ Chromium አረጋግጧል። አገልጋዩ የምስክር ወረቀት ግልፅነት መረጃን አቅርቧል፣ ሆኖም ግን ልክ ያልሆነ ነበር።</translation>
 <translation id="2119636228670142020">&amp;ስለChromium ስርዓተ ክወና</translation>
 <translation id="2158734852934720349">Chromium OS የክፍት ምንጭ ፈቃዶች</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">የመለያ መግቢያ ዝርዝሮችዎ ጊዜ ያለፈባቸው ስለሆኑ Chromium OS ውሂብዎን ማመሳሰል አልቻለም።</translation>
 <translation id="2558641060352364164">ይህ ጣቢያ በቅርቡ የማይደገፍ የሚሆን የChromium ክፈፍ ተሰኪውን እየተጠቀመ ነው። እባክዎ ያራግፉትና ወደ ዘመናዊ አሳሽ ያሻሽሉ።</translation>
 <translation id="2572494885440352020">Chromium አጋዥ</translation>
+<translation id="2595977381794111014">መተግበሪያዎችዎን መድረሱን ለመቀጠል በChromium ዕልባቶች አሞሌ ውስጥ የ<ph name="APPS_ICON_IMAGE" /> አቋራጩን ይጠቀሙ።</translation>
 <translation id="2602806952220118310">Chromium - ማሳወቂያዎች</translation>
 <translation id="2636877269779209383">Chromium ይህን ለዚህ ጣቢያ ለማጋራት የካሜራ መዳረሻ ያስፈልገዋል።</translation>
 <translation id="2648074677641340862">በጭነት ጊዜ የስርዓተ ክወና ስህተት ተፈጥሯል። እባክዎ Chromiumን እንደገና ያውርዱት።</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">ይህ ሞዱል ከChromium ጋር የሚጋጭ መሆኑ ይታወቃል።</translation>
 <translation id="4423735387467980091">Chromiumን ያብጁ እና ይቆጣጠሩ</translation>
 <translation id="4458285410772214805">ይሄ ለውጥ እንዲተገበር እባክዎ ይውጡ እና እንደገና ይግቡ።</translation>
-<translation id="4488676065623537541">የክፍያ መጠየቂያ ዝርዝሮችዎ በChromium ውስጥ ተቀምጠዋል።</translation>
 <translation id="4549794359424059447">የወደፊት የChromium ስሪቶች ከአሁን በኋላ Windows XP ወይም Windows Vistaን አይደግፉም።</translation>
 <translation id="4567424176335768812">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ገብተዋል። አሁን የእርስዎን ዕልባቶች፣ ታሪክ እና ሌሎች ቅንብሮች በመለያ በገቡ ሁሉም መሣሪያዎችዎ ላይ መድረስ ይችላሉ።</translation>
 <translation id="457845228957001925">የChromium ውሂብዎን በተመለከተ አስፈላጊ መረጃ</translation>
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb
index a9cf5b6..800dfc2b 100644
--- a/chrome/app/resources/chromium_strings_ar.xtb
+++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">‏الرجاء إغلاق جميع نوافذ Chromium (بما في ذلك تلك المفتوحة في وضع Windows 8) ثم إعادة المحاولة.</translation>
 <translation id="1708666629004767631">‏يتوفر إصدار جديد وأكثر أمانًا Chromium.</translation>
 <translation id="1725059042853530269">‏قد يضر <ph name="FILE_NAME" /> بتجربة متصفحك، لذلك فقد حظره Chromium.</translation>
-<translation id="1745962126679160932">‏سيخزن Chromium معلوماتك في مكان آمن ولذلك لن تحتاج إلى كتابتها مرة أخرى، ولكن سيظل يلزمك التحقق من رمز الأمان في بطاقتك لإجراء عمليات دفع مستقبلية.</translation>
 <translation id="1774152462503052664">‏دع Chromium يعمل في الخلفية</translation>
 <translation id="1779356040007214683">‏لجعل Chromium أكثر أمانًا، تم تعطيل بعض الإضافات غير المدرجة في <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> والتي ربما تمت إضافتها بدون علمك.</translation>
 <translation id="1808667845054772817">‏إعادة تثبيت Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">‏لا يستجيب Chromium. هل تريد إعادة التشغيل الآن؟</translation>
 <translation id="1967743265616885482">‏هناك وحدة تحمل الاسم نفسه ومعروف أنها تتعارض مع Chromium.</translation>
 <translation id="2077129598763517140">استخدام تسريع الأجهزة عند توفره</translation>
+<translation id="2103655854491303969">‏إيقاف Launcher تطبيقات Chromium.</translation>
 <translation id="2117181891440368863">‏تحقق Chromium من أن <ph name="ISSUER" /> أصدر شهادة موقع الويب هذا. وقدم الخادم معلومات شفافية الشهادة، ولكنها غير صالحة.</translation>
 <translation id="2119636228670142020">‏حول ن&amp;ظام التشغيل Chromium</translation>
 <translation id="2158734852934720349">‏تراخيص مفتوحة المصدر لنظام التشغيل Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">‏تعذر على نظام التشغيل Chromium مزامنة البيانات نظرًا لأن تفاصيل تسجيل الدخول إلى حسابك قديمة.</translation>
 <translation id="2558641060352364164">‏هذا الموقع يستخدم المكون الإضافي Chromium Frame والذي سيصبح غير معتمد قريبًا. يُرجى إلغاء تثبيته والترقية إلى متصفّح حديث.</translation>
 <translation id="2572494885440352020">‏أداة مساعدة Chromium</translation>
+<translation id="2595977381794111014">‏استخدام الاختصار <ph name="APPS_ICON_IMAGE" /> في شريط الإشارات المرجعية لـ Chromium لمواصلة الدخول إلى تطبيقاتك.</translation>
 <translation id="2602806952220118310">‏Chromium - الإشعارات</translation>
 <translation id="2636877269779209383">‏يحتاج Chromium الوصول إلى الكاميرا لمشاركتها مع هذا الموقع.</translation>
 <translation id="2648074677641340862">‏حدث خطأ في نظام التشغيل أثناء عملية التثبيت. الرجاء إعادة تنزيل Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">‏هذه الوحدة معروف أنها تتعارض مع Chromium.</translation>
 <translation id="4423735387467980091">‏تخصيص Chromium والتحكم فيه</translation>
 <translation id="4458285410772214805">الرجاء الخروج ثم تسجيل الدخول حتى يسري هذا التغيير.</translation>
-<translation id="4488676065623537541">‏تم حفظ تفاصيل الفوترة في Chromium.</translation>
 <translation id="4549794359424059447">‏لن تدعم الإصدارات المستقبلية من Chromium أنظمة Windows XP أو Windows Vista.</translation>
 <translation id="4567424176335768812">لقد سجلت دخولك باعتبارك <ph name="USER_EMAIL_ADDRESS" />. ويُمكنك الآن الاستمتاع بالدخول إلى الإشارات المرجعية، والسجلّ، والإعدادات الأخرى على جميع الأجهزة التي تسجّل الدخول إليها.</translation>
 <translation id="457845228957001925">‏معلومات مهمة بخصوص بياناتك في Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb
index a797cf9..9f3e450 100644
--- a/chrome/app/resources/chromium_strings_bg.xtb
+++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Моля, затворете всички прозорци на Chromium (включително тези в режим за Windows 8) и опитайте отново.</translation>
 <translation id="1708666629004767631">Налице е нова, по-сигурна версия на Chromium.</translation>
 <translation id="1725059042853530269">Файлът „<ph name="FILE_NAME" />“ може да навреди на сърфирането ви, поради което Chromium го блокира.</translation>
-<translation id="1745962126679160932">Chromium ще съхранява надеждно информацията ви, така че да не се налага да я въвеждате отново, но за бъдещи плащания пак ще трябва да потвърдите кода за сигурност на картата си.</translation>
 <translation id="1774152462503052664">Нека Chromium да се изпълнява на заден план</translation>
 <translation id="1779356040007214683">За да направим Chromium по-безопасен, деактивирахме някои разширения, които не са посочени в <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> и може да са били добавени без ваше знание.</translation>
 <translation id="1808667845054772817">Повторно инсталиране на Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium блокира. Да се стартира ли отново сега?</translation>
 <translation id="1967743265616885482">Известно е, че модул със същото име влиза в конфликт с Chromium.</translation>
 <translation id="2077129598763517140">Да се използва хардуерно ускорение, когато е налице</translation>
+<translation id="2103655854491303969">Стартовият панел за приложения в Chromium ще бъде оттеглен.</translation>
 <translation id="2117181891440368863">Chromium потвърди, че сертификатът на този уебсайт е издаден от <ph name="ISSUER" />. Сървърът предостави информация за прозрачност на сертификата, но тя бе невалидна.</translation>
 <translation id="2119636228670142020">Всичко за &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Лицензи за отворен код за Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS не можа да синхронизира данните ви, защото потребителското име и паролата за вход в профила ви не са актуални.</translation>
 <translation id="2558641060352364164">Този сайт използва приставката Chromium Frame, чиято поддръжка скоро ще бъде прекратена. Моля, деинсталирайте я и надстройте до модерен браузър.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Използвайте прекия път <ph name="APPS_ICON_IMAGE" /> в лентата на отметките в Chromium, за да продължите да осъществявате достъп до приложенията си.</translation>
 <translation id="2602806952220118310">Chromium – Известия</translation>
 <translation id="2636877269779209383">Chromium се нуждае от достъп до камерата, за да я сподели с този сайт.</translation>
 <translation id="2648074677641340862">По време на инсталирането възникна грешка в операционната система. Моля, изтеглете отново Chromium.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">За този модул е известно, че влиза в конфликт с Chromium.</translation>
 <translation id="4423735387467980091">Персонализиране и контролиране на Chromium</translation>
 <translation id="4458285410772214805">Моля, излезте от профила си и влезте отново, за да влезе в сила тази промяна.</translation>
-<translation id="4488676065623537541">Данните ви за фактуриране са запазени в Chromium.</translation>
 <translation id="4549794359424059447">Бъдещите версии на Chromium вече няма да поддържат Windows XP и Windows Vista.</translation>
 <translation id="4567424176335768812">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />. Сега имате достъп до отметките, историята и другите си настройки на всички устройства, на които сте влезли.</translation>
 <translation id="457845228957001925">Важна информация относно данните ви в Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb
index ad925ea..84abd8f 100644
--- a/chrome/app/resources/chromium_strings_bn.xtb
+++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">দয়া করে সমস্ত Chromium উইন্ডোগুলি (Windows 8 মোডে যেগুলি আছে সেগুলি সহ) বন্ধ করুন এবং আবার চেষ্টা করুন৷</translation>
 <translation id="1708666629004767631">Chromium-এর একটি নতুন, নিরাপদ সংস্করণ উপলব্ধ আছে৷</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> আপনার ব্রাউজিংয়ের অভিজ্ঞতাকে ক্ষতিগ্রস্ত করতে পারে, তাই Chromium এটিকে আটকে দিয়েছে৷</translation>
-<translation id="1745962126679160932">Chromium আপনার তথ্য নিরাপদে সঞ্চয় করে নেবে তাই আপনার আর টাইপ করা প্রয়োজন হবে না, কিন্তু ভবিষ্যতের অর্থপ্রদানের জন্য আপনাকে এখনো আপনার কার্ডের নিরাপত্তা কোড যাচাইকরণের প্রয়োজন হবে৷</translation>
 <translation id="1774152462503052664">Chromium-কে পটভূমিতে চলতে দিন</translation>
 <translation id="1779356040007214683">Chromium কে আরো নিরাপদ করতে, আমরা কিছু এক্সটেনশান অক্ষম করেছি যা <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> এ তালিকাবদ্ধ করা হয়নি এবং হয়ত আপনাকে না জানিয়ে যোগ করা হয়েছে৷</translation>
 <translation id="1808667845054772817">Chromium পুনরায় ইন্সটল করুন</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium সাড়া দিচ্ছে না৷ পুনরায় শুরু করবেন?</translation>
 <translation id="1967743265616885482">একই নামের একটি মডিউল Chromium সঙ্গে বিরোধে জ্ঞাত হয়েছে৷</translation>
 <translation id="2077129598763517140">যখনই উপলব্ধ তখন হার্ডওয়্যার অ্যাক্সিলারেশন ব্যবহার করুন</translation>
+<translation id="2103655854491303969">Chromium অ্যাপ্লিকেশান লঞ্চার চলে যাচ্ছে।</translation>
 <translation id="2117181891440368863">Chromium যাচাই করেছে যে <ph name="ISSUER" /> এই ওয়েবসাইটের শংসাপত্র জারি করেছে। সার্ভারটি শংসাপত্র স্বচ্ছতা তথ্য সরবরাহ করেছে, কিন্তু এটি অবৈধ।</translation>
 <translation id="2119636228670142020">&amp;Chromium OS সম্পর্কে</translation>
 <translation id="2158734852934720349">Chromium OS মুক্ত উৎসে লাইসেন্সগুলি</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">আপনার অ্যাকাউন্টের সাইন ইনের বিবরণটি সেকেলে হওয়ায় Chromium OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation>
 <translation id="2558641060352364164">এই সাইটটি Chromium ফ্রেম প্লাগ ইন ব্যবহার করছে যা খুব শীঘ্রই অসমর্থিত হবে৷ দয়া করে এটি আনইনস্টল করুন এবং একটি আধুনিক ব্রাউজারে আপগ্রেড করুন৷</translation>
 <translation id="2572494885440352020">Chromium সহায়ক</translation>
+<translation id="2595977381794111014">আপনার অ্যাপ্লিকেশানগুলি অ্যাক্সেস করা চালিয়ে যেতে Chromium বুকমার্কস দণ্ডের <ph name="APPS_ICON_IMAGE" /> শর্টকাট ব্যবহার করুন।</translation>
 <translation id="2602806952220118310">Chromium - বিজ্ঞপ্তিগুলি</translation>
 <translation id="2636877269779209383">এটিকে এই সাইটে শেয়ার করার জন্য Chromium এর ক্যামেরা অ্যাক্সেস করা প্রয়োজন।</translation>
 <translation id="2648074677641340862">ইনস্টলেশনের সময় একটি অপারেটিং সিস্টেম ত্রুটি ঘটেছে৷ দয়া করে Chromium পুনরায় ডাউনলোড করুন৷</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">এই মডিউল Chromium-এর সঙ্গে বিরোধের জন্য জ্ঞাত হয়৷</translation>
 <translation id="4423735387467980091">Chromium কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation>
 <translation id="4458285410772214805">দয়া করে পরিবর্তনটি সম্ভব করতে সাইন আউট এবং পুনরায় সাইন ইন করুন৷</translation>
-<translation id="4488676065623537541">আপনার বিলের বিশদ বিবরণ Chromium এ সংরক্ষিত হয়েছে৷</translation>
 <translation id="4549794359424059447">Chromium এর ভবিষ্যত সংস্করণ আর Windows XP বা Windows Vista সমর্থন করবে না।</translation>
 <translation id="4567424176335768812">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসাবে সাইন ইন করেছেন৷ এখন আপনি আপনার সমস্ত সাইন ইন করা ডিভাইসে আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস অ্যাক্সেস করতে পারেন৷</translation>
 <translation id="457845228957001925">আপনার Chromium ডেটা সংক্রান্ত গুরুত্বপূর্ণ তথ্য</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb
index ba74d16..1ebec47 100644
--- a/chrome/app/resources/chromium_strings_ca.xtb
+++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Tanqueu totes les finestres de Chromium (incloses les del mode Windows 8) i torneu-ho a provar.</translation>
 <translation id="1708666629004767631">Hi ha disponible una versió nova més segura de Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> podria perjudicar la vostra experiència de navegació i, per això, Chromium l'ha bloquejat.</translation>
-<translation id="1745962126679160932">Chromium emmagatzemarà de manera segura la vostra informació perquè no hàgiu de tornar-la a escriure, però continuareu havent de verificar el codi de seguretat de la targeta per a pagaments futurs.</translation>
 <translation id="1774152462503052664">Permet que Chromium s'executi en segon pla</translation>
 <translation id="1779356040007214683">Perquè Chromium sigui més segur, hem desactivat algunes de les extensions que no apareixen a <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> i que és possible que s'hagin afegit sense que ho sapigueu.</translation>
 <translation id="1808667845054772817">Torna a instal·lar Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium no respon. Voleu tornar-lo a iniciar ara?</translation>
 <translation id="1967743265616885482">Se sap que un mòdul amb el mateix nom entra en conflicte amb Chromium.</translation>
 <translation id="2077129598763517140">Utilitza l'acceleració per maquinari quan estigui disponible</translation>
+<translation id="2103655854491303969">El menú d'aplicacions de Chromium deixarà de funcionar.</translation>
 <translation id="2117181891440368863">Chromium ha verificat que <ph name="ISSUER" /> ha emès el certificat d'aquest lloc web. El servidor ha proporcionat informació sobre Transparència de certificats, però no era vàlida.</translation>
 <translation id="2119636228670142020">Quant a &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Llicències de programari lliure de Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS no ha pogut sincronitzar les vostres dades perquè la informació d'inici de sessió del vostre compte no està actualitzada.</translation>
 <translation id="2558641060352364164">Aquest lloc fa servir el connector Chromium Frame que aviat deixarà de ser compatible. Desinstal·leu-lo i instal·leu un navegador més modern.</translation>
 <translation id="2572494885440352020">Aplicació auxiliar de Chromium</translation>
+<translation id="2595977381794111014">Feu servir la drecera <ph name="APPS_ICON_IMAGE" /> de la barra d'adreces d'interès de Chromium per continuar accedint a les vostres aplicacions.</translation>
 <translation id="2602806952220118310">Chromium: notificacions</translation>
 <translation id="2636877269779209383">Chromium necessita accedir a la càmera per compartir-la amb aquest lloc.</translation>
 <translation id="2648074677641340862">S'ha produït un error en el sistema operatiu durant la instal·lació. Torneu a baixar Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Se sap que aquest mòdul entra en conflicte amb Chromium.</translation>
 <translation id="4423735387467980091">Personalitza i controla Chromium</translation>
 <translation id="4458285410772214805">Tanqueu la sessió i torneu a iniciar-la perquè aquest canvi es faci efectiu.</translation>
-<translation id="4488676065623537541">Els detalls de facturació s'han desat a Chromium.</translation>
 <translation id="4549794359424059447">Les versions futures de Chromium ja no admetran Windows XP ni Windows Vista.</translation>
 <translation id="4567424176335768812">Heu iniciat la sessió com a <ph name="USER_EMAIL_ADDRESS" />. Ja podeu accedir a les vostres adreces d'interès, al vostre historial i a altres paràmetres en tots els dispositius en què hàgiu iniciat la sessió.</translation>
 <translation id="457845228957001925">Informació important sobre les dades de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb
index 2f2b8b6..3c8a8468 100644
--- a/chrome/app/resources/chromium_strings_cs.xtb
+++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Zavřete všechna okna prohlížeče Chromium (včetně oken v režimu Windows 8) a zkuste to znovu.</translation>
 <translation id="1708666629004767631">K dispozici je nová, bezpečnější verze prohlížeče Chromium.</translation>
 <translation id="1725059042853530269">Soubor <ph name="FILE_NAME" /> může narušit prohlížení internetu, aplikace Chromium jej proto zablokovala.</translation>
-<translation id="1745962126679160932">Prohlížeč Chromium vaše informace bezpečně uloží, abyste je nemuseli zadávat znovu. I přesto však bude třeba ověřit bezpečnostní kód karty pro budoucí platby.</translation>
 <translation id="1774152462503052664">Nechat prohlížeč Chromium spuštěný na pozadí</translation>
 <translation id="1779356040007214683">Aby bylo Chromium bezpečnější, deaktivovali jsme některá rozšíření, která nejsou uvedena na webu <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> a mohla být přidána bez vašeho vědomí.</translation>
 <translation id="1808667845054772817">Přeinstalovat Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Prohlížeč Chromium neodpovídá. Chcete jej znovu načíst?</translation>
 <translation id="1967743265616885482">O modulu se stejným názvem je známo, že u něj dochází ke konfliktu s prohlížečem Chromium.</translation>
 <translation id="2077129598763517140">V případě dostupnosti použít hardwarovou akceleraci</translation>
+<translation id="2103655854491303969">Spouštěč aplikací Chromium již nebude podporován.</translation>
 <translation id="2117181891440368863">Prohlížeč Chromium ověřil, že certifikát tohoto webu byl vydán vydavatelem <ph name="ISSUER" />. Server poskytl údaje Certificate Transparency, byly však neplatné.</translation>
 <translation id="2119636228670142020">O systému &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Chromium OS – licence open source</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium OS nemůže synchronizovat data, protože vaše přihlašovací údaje k účtu jsou zastaralé.</translation>
 <translation id="2558641060352364164">Tento web používá plugin Chromium Frame, jehož podpora bude brzy ukončena. Odinstalujte jej a přejděte na moderní prohlížeč.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">K aplikacím přistupujte pomocí zástupce <ph name="APPS_ICON_IMAGE" /> na liště záložek prohlížeče Chromium.</translation>
 <translation id="2602806952220118310">Chromium – oznámení</translation>
 <translation id="2636877269779209383">Prohlížeč Chromium potřebuje přístup k fotoaparátu, aby jej mohl sdílet s těmito stránkami.</translation>
 <translation id="2648074677641340862">Během instalace došlo k chybě operačního systému. Stáhněte prosím Chromium znovu.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">O tomto modulu je známo, že u něj dochází ke konfliktu s prohlížečem Chromium.</translation>
 <translation id="4423735387467980091">Přizpůsobit a ovládat Chromium</translation>
 <translation id="4458285410772214805">Chcete-li, aby se změny projevily, odhlaste se a znovu se přihlaste.</translation>
-<translation id="4488676065623537541">Fakturační údaje byly uloženy do prohlížeče Chromium.</translation>
 <translation id="4549794359424059447">Budoucí verze prohlížeče Chromium již nebudou podporovat systémy Windows XP a Windows Vista.</translation>
 <translation id="4567424176335768812">Jste přihlášeni pomocí účtu <ph name="USER_EMAIL_ADDRESS" />. Nyní můžete přistupovat ke všem svým záložkám, historii a dalším nastavením ve všech přihlášených zařízeních.</translation>
 <translation id="457845228957001925">Důležité informace o datech prohlížeče Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb
index 245978d..3344cdb 100644
--- a/chrome/app/resources/chromium_strings_da.xtb
+++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Luk alle Chromium-vinduer (herunder dem i Windows 8-tilstand), og prøv igen.</translation>
 <translation id="1708666629004767631">Der findes en ny og mere sikker version af Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> kan skade din weboplevelse, så Chromium har blokeret det.</translation>
-<translation id="1745962126679160932">Chromium vil lagre dine oplysninger på sikker vis, så du ikke behøver at angive dem igen, men du skal stadig bekræfte dit korts sikkerhedskode ved fremtidige betalinger.</translation>
 <translation id="1774152462503052664">Lad Chromium køre i baggrunden</translation>
 <translation id="1779356040007214683">For at gøre Chromium sikrere har vi slået nogle udvidelser fra, som ikke er anført i <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> og muligvis er blevet tilføjet, uden at du vidste det.</translation>
 <translation id="1808667845054772817">Geninstaller Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium svarer ikke. Vil du genstarte nu?</translation>
 <translation id="1967743265616885482">Et modul med samme navn er i strid med Chromium.</translation>
 <translation id="2077129598763517140">Brug hardwareacceleration, når det er muligt</translation>
+<translation id="2103655854491303969">Chromium-applisten forsvinder.</translation>
 <translation id="2117181891440368863">Chromium bekræftede, at <ph name="ISSUER" /> har udstedt certifikatet for dette website. Serveren leverede Certificate Transparency-oplysninger, men de var ugyldige.</translation>
 <translation id="2119636228670142020">Om &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Chromium OS open source-licenser</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS kunne ikke synkronisere dine data, fordi loginoplysningerne til din konto er forældede.</translation>
 <translation id="2558641060352364164">Dette website anvender Chromium Frame-pluginnet, som snart ikke understøttes længere. Afinstaller det, og opgrader til en moderne browser.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Fortsæt med at bruge dine apps via genvejen for <ph name="APPS_ICON_IMAGE" /> på bogmærkelinjen i Chromium.</translation>
 <translation id="2602806952220118310">Chromium – Underretninger</translation>
 <translation id="2636877269779209383">Chromium skal have adgang til dit kamera, før det kan deles med dette website.</translation>
 <translation id="2648074677641340862">Der opstod en fejl i operativsystemet under installationen. Download Chromium igen.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Dette modul modstrider Chromium.</translation>
 <translation id="4423735387467980091">Tilpas og kontrollér Chromium</translation>
 <translation id="4458285410772214805">Du skal logge ud og logge ind igen, for at denne ændring kan træde i kraft.</translation>
-<translation id="4488676065623537541">Dine faktureringsoplysninger er nu gemt i Chromium.</translation>
 <translation id="4549794359424059447">Fremtidige versioner af Chromium vil ikke længere understøtte Windows XP eller Windows Vista.</translation>
 <translation id="4567424176335768812">Du er logget ind som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du få adgang til dine bogmærker, din historik og andre indstillinger på alle de enheder, hvor du er logget ind.</translation>
 <translation id="457845228957001925">Vigtige oplysninger om dine Chromium-data</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb
index 670a5bd8..0b1a34c 100644
--- a/chrome/app/resources/chromium_strings_de.xtb
+++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Schließen Sie alle Chromium-Fenster einschließlich der Fenster im Windows 8-Modus und versuchen Sie es erneut.</translation>
 <translation id="1708666629004767631">Es gibt eine neue, sicherere Version von Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> kann Ihre Browsererfahrung beeinträchtigen und wurde daher von Chromium blockiert.</translation>
-<translation id="1745962126679160932">Ihre Informationen werden von Chromium sicher gespeichert. Dadurch brauchen Sie sie nicht erneut einzugeben. Sie müssen aber bei zukünftigen Zahlungen immer noch den Sicherheitscode Ihrer Karte bestätigen.</translation>
 <translation id="1774152462503052664">Chromium im Hintergrund ausführen</translation>
 <translation id="1779356040007214683">Um Chromium sicherer zu machen, haben wir einige Erweiterungen deaktiviert, die nicht im <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> aufgeführt sind und möglicherweise ohne Ihr Wissen hinzugefügt wurden.</translation>
 <translation id="1808667845054772817">Chromium neu installieren</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium reagiert nicht. Jetzt neu starten?</translation>
 <translation id="1967743265616885482">Es ist bekannt, dass ein Modul mit dem gleichen Namen einen Konflikt mit Chromium verursacht.</translation>
 <translation id="2077129598763517140">Hardwarebeschleunigung verwenden, falls verfügbar</translation>
+<translation id="2103655854491303969">Der Chromium App Launcher wird eingestellt.</translation>
 <translation id="2117181891440368863">Chromium hat verifiziert, dass <ph name="ISSUER" /> das Zertifikat dieser Website ausgestellt hat. Zwar hat der Server Informationen zur Zertifikatstransparenz bereitgestellt, diese waren jedoch ungültig.</translation>
 <translation id="2119636228670142020">Über &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Open-Source-Lizenzen für Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS konnte Ihre Daten nicht synchronisieren, da die Anmeldedaten Ihres Kontos veraltet sind.</translation>
 <translation id="2558641060352364164">Diese Website verwendet das Chromium Frame-Plug-in, das bald nicht mehr unterstützt wird. Bitte deinstallieren Sie das Plug-in und führen Sie ein Upgrade auf einen neueren Browser aus.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Verwenden Sie für den weiteren Zugriff auf Ihre Apps die Verknüpfung <ph name="APPS_ICON_IMAGE" /> in der Chromium-Lesezeichenleiste.</translation>
 <translation id="2602806952220118310">Chromium – Benachrichtigungen</translation>
 <translation id="2636877269779209383">Chromium benötigt Zugriff auf die Kamera, um ihn mit dieser Website teilen zu können.</translation>
 <translation id="2648074677641340862">Während der Installation ist ein Fehler im Betriebssystem aufgetreten. Bitte laden Sie Chromium erneut herunter.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Es ist bekannt, dass dieses Modul einen Konflikt mit Chromium verursacht.</translation>
 <translation id="4423735387467980091">Chromium anpassen und einstellen</translation>
 <translation id="4458285410772214805">Melden Sie sich ab und wieder an, damit diese Änderung wirksam wird.</translation>
-<translation id="4488676065623537541">Ihre Zahlungsangaben wurden in Chromium gespeichert.</translation>
 <translation id="4549794359424059447">Künftige Versionen von Chromium unterstützen Windows XP und Windows Vista nicht mehr.</translation>
 <translation id="4567424176335768812">Sie sind als <ph name="USER_EMAIL_ADDRESS" /> angemeldet. Auf allen Geräten, auf denen Sie angemeldet sind, sind nun Ihre Lesezeichen, Ihr Verlauf und andere Einstellungen verfügbar.</translation>
 <translation id="457845228957001925">Wichtige Informationen zu Ihren Chromium-Daten</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb
index fd4de68..40838d7 100644
--- a/chrome/app/resources/chromium_strings_el.xtb
+++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Κλείστε όλα τα παράθυρα του Chromium (περιλαμβανομένων όσων βρίσκονται σε λειτουργία Windows 8) και δοκιμάστε ξανά.</translation>
 <translation id="1708666629004767631">Υπάρχει μια νέα, ασφαλέστερη έκδοση του Chromium.</translation>
 <translation id="1725059042853530269">Το αρχείο <ph name="FILE_NAME" /> ενδέχεται να βλάψει την εμπειρία περιήγησης σας, γι' αυτό αποκλείστηκε από το Chromium.</translation>
-<translation id="1745962126679160932">Το Chromium θα αποθηκεύει με ασφάλεια τα στοιχεία σας έτσι ώστε να μη χρειάζεται να τα πληκτρολογείτε ξανά, αλλά θα πρέπει να επαληθεύετε τον κωδικό ασφαλείας της κάρτας σας για μελλοντικές πληρωμές.</translation>
 <translation id="1774152462503052664">Να επιτρέπεται στο Chromium να εκτελείται στο παρασκήνιο</translation>
 <translation id="1779356040007214683">Για να κάνουμε το Chromium πιο ασφαλές, απενεργοποιήσαμε ορισμένες επεκτάσεις που δεν αναφέρονται στο <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> και ενδέχεται να έχουν προστεθεί εν αγνοία σας.</translation>
 <translation id="1808667845054772817">Επανεγκατάσταση του Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Το Chromium δεν ανταποκρίνεται. Να γίνει επανεκκίνηση τώρα;</translation>
 <translation id="1967743265616885482">Έχει διαπιστωθεί ότι μια λειτουργική μονάδα με το ίδιο όνομα βρίσκεται σε διένεξη με το Chromium.</translation>
 <translation id="2077129598763517140">Χρήση της επιτάχυνσης υλικού όταν είναι διαθέσιμη</translation>
+<translation id="2103655854491303969">Η Εφαρμογή εκκίνησης του Chromium πρόκειται να αποσυρθεί.</translation>
 <translation id="2117181891440368863">Το Chromium επαλήθευσε ότι το πιστοποιητικό του ιστότοπου εκδόθηκε από το <ph name="ISSUER" />. Παρασχέθηκαν πληροφορίες διαφάνειας πιστοποιητικού από το διακομιστή αλλά δεν ήταν έγκυρες.</translation>
 <translation id="2119636228670142020">Σχετικά με το &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Άδειες λογισμικού ανοικτού κώδικα του Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Το Chromium OS δεν μπόρεσε να συγχρονίσει τα δεδομένα σας, επειδή τα στοιχεία σύνδεσης στο λογαριασμό σας δεν είναι ενημερωμένα.</translation>
 <translation id="2558641060352364164">Αυτή η ιστοσελίδα χρησιμοποιεί την προσθήκη Chromium Frame, η οποία σύντομα δεν θα υποστηρίζεται πλέον. Απεγκαταστήσετε την προσθήκη και κάντε αναβάθμιση σε ένα σύγχρονο πρόγραμμα περιήγησης.</translation>
 <translation id="2572494885440352020">Πρόγραμμα βοήθειας Chromium</translation>
+<translation id="2595977381794111014">Χρησιμοποιήστε τη συντόμευση <ph name="APPS_ICON_IMAGE" /> στη γραμμή σελιδοδεικτών του Chromium, για να εξακολουθήσετε να έχετε πρόσβαση στις εφαρμογές σας.</translation>
 <translation id="2602806952220118310">Chromium - Ειδοποιήσεις</translation>
 <translation id="2636877269779209383">Το Chromium χρειάζεται πρόσβαση στην κάμερα για να τη μοιραστεί με αυτόν τον ιστότοπο.</translation>
 <translation id="2648074677641340862">Παρουσιάστηκε σφάλμα στο λειτουργικό σύστημα κατά την εγκατάσταση. Κατεβάστε το Chromium ξανά.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Έχει διαπιστωθεί ότι αυτή η λειτουργική μονάδα έρχεται σε διένεξη με το Chromium.</translation>
 <translation id="4423735387467980091">Προσαρμογή και έλεγχος του Chromium</translation>
 <translation id="4458285410772214805">Για να εφαρμοστεί αυτή η αλλαγή, αποσυνδεθείτε και συνδεθείτε ξανά.</translation>
-<translation id="4488676065623537541">Τα στοιχεία χρέωσής σας έχουν αποθηκευτεί στο Chromium.</translation>
 <translation id="4549794359424059447">Οι μελλοντικές εκδόσεις του Chromium δεν θα υποστηρίζονται πια σε Windows XP ή Windows Vista.</translation>
 <translation id="4567424176335768812">Έχετε συνδεθεί ως <ph name="USER_EMAIL_ADDRESS" />. Τώρα μπορείτε να αποκτήσετε πρόσβαση στους σελιδοδείκτες, το ιστορικό και σε άλλες ρυθμίσεις από όλες τις συσκευές στις οποίες έχετε συνδεθεί.</translation>
 <translation id="457845228957001925">Σημαντικές πληροφορίες σχετικά με τα δεδομένα σας στο Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index 0f55a30..2c4a92e 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Please close all Chromium windows (including those in Windows 8 mode) and try again.</translation>
 <translation id="1708666629004767631">There's a new, safer version of Chromium available.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> may harm your browsing experience, so Chromium has blocked it.</translation>
-<translation id="1745962126679160932">Chromium will securely store your information so that you don't need to type it in again, but you will still need to verify your card's security code for future payments.</translation>
 <translation id="1774152462503052664">Let Chromium run in the background</translation>
 <translation id="1779356040007214683">To make Chromium safer, we disabled some extensions that aren't listed in the <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> and may have been added without your knowledge.</translation>
 <translation id="1808667845054772817">Reinstall Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium is unresponsive. Relaunch now?</translation>
 <translation id="1967743265616885482">A module with the same name has been known to conflict with Google Chrome.</translation>
 <translation id="2077129598763517140">Use hardware acceleration when available</translation>
+<translation id="2103655854491303969">The Chromium App Launcher is going away.</translation>
 <translation id="2117181891440368863">Chromium verified that <ph name="ISSUER" /> issued this website's certificate. The server supplied Certificate Transparency information, but it was invalid.</translation>
 <translation id="2119636228670142020">About &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Chromium OS open source licences</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium OS could not sync your data because your account sign-in details are out of date.</translation>
 <translation id="2558641060352364164">This site is using the Chromium Frame plug-in which will soon be unsupported. Please uninstall it and upgrade to a modern browser.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Use the <ph name="APPS_ICON_IMAGE" /> shortcut in the Chromium bookmarks bar to continue accessing your apps.</translation>
 <translation id="2602806952220118310">Chromium - Notifications</translation>
 <translation id="2636877269779209383">Chromium needs camera access to share it with this site.</translation>
 <translation id="2648074677641340862">An operating system error occurred during installation. Please download Chromium again.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">This module is known to conflict with Chromium.</translation>
 <translation id="4423735387467980091">Customise and control Chromium</translation>
 <translation id="4458285410772214805">Please sign out and sign in again for this change to take effect.</translation>
-<translation id="4488676065623537541">Your billing details have been saved in Chromium.</translation>
 <translation id="4549794359424059447">Future versions of Chromium will no longer support Windows XP or Windows Vista.</translation>
 <translation id="4567424176335768812">You're signed in as <ph name="USER_EMAIL_ADDRESS" />. Now you can access your bookmarks, history and other settings on all your signed in devices.</translation>
 <translation id="457845228957001925">Important information regarding your Chromium data</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb
index 6ef3e23..9a06c69 100644
--- a/chrome/app/resources/chromium_strings_es-419.xtb
+++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Cierra todas las ventanas de Chromium (incluidas las que están en modo Windows 8) e inténtalo nuevamente.</translation>
 <translation id="1708666629004767631">Hay una versión nueva y más segura de Chromium disponible.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> puede dañar tu experiencia de navegación, por eso Chromium lo bloqueó.</translation>
-<translation id="1745962126679160932">Chromium almacenará tu información de forma segura, de modo que no deberás ingresarla de nuevo. No obstante, deberás verificar el código de seguridad de tu tarjeta cuando realices pagos en el futuro.</translation>
 <translation id="1774152462503052664">Permitir que Chromium se ejecute en segundo plano</translation>
 <translation id="1779356040007214683">Para que Chromium sea más seguro, inhabilitamos algunas extensiones que no figuran en <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> y que posiblemente se hayan agregado sin tu conocimiento.</translation>
 <translation id="1808667845054772817">Reinstalar Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium no responde. ¿Quieres reiniciarlo ahora?</translation>
 <translation id="1967743265616885482">Un módulo con el mismo nombre provoca un conflicto con Chromium.</translation>
 <translation id="2077129598763517140">Usar aceleración de hardware cuando esté disponible</translation>
+<translation id="2103655854491303969">El Selector de aplicaciones de Chromium está por desaparecer.</translation>
 <translation id="2117181891440368863">Chromium verificó que <ph name="ISSUER" /> emitió el certificado de este sitio web. El servidor proporcionó información de transparencia de certificados que no era válida.</translation>
 <translation id="2119636228670142020">Acerca de &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licencias de código abierto del Sistema operativo Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">El Sistema operativo Chromium no pudo sincronizar los datos porque la información de acceso de la cuenta está desactualizada.</translation>
 <translation id="2558641060352364164">Este sitio está usando el complemento Chromium Frame, que pronto dejará de ser compatible. Desinstálalo y obtén un navegador moderno.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Para seguir accediendo a tus apps, usa el acceso directo de <ph name="APPS_ICON_IMAGE" /> que aparece en la barra de marcadores de Chromium.</translation>
 <translation id="2602806952220118310">Chromium: notificaciones</translation>
 <translation id="2636877269779209383">Chromium necesita acceso a la cámara para compartirla con el sitio.</translation>
 <translation id="2648074677641340862">Se produjo un error del sistema operativo durante la instalación. Descarga Chromium nuevamente.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Este módulo provoca un conflicto con Chromium.</translation>
 <translation id="4423735387467980091">Personaliza y controla Chromium</translation>
 <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation>
-<translation id="4488676065623537541">Se guardó la información de facturación en Chromium</translation>
 <translation id="4549794359424059447">Las próximas versiones de Chromium ya no serán compatibles con Windows XP o Windows Vista.</translation>
 <translation id="4567424176335768812">Accediste como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes ir a los marcadores, al historial y a otras opciones en todos los dispositivos en los que hayas accedido.</translation>
 <translation id="457845228957001925">Información importante sobre tus datos de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb
index bbc8e9e8..933da32 100644
--- a/chrome/app/resources/chromium_strings_es.xtb
+++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Cierra todas las ventanas de Chromium (incluidas las ventanas en modo Windows 8) y vuelve a intentarlo.</translation>
 <translation id="1708666629004767631">Hay disponible una nueva versión más segura de Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> puede dañar tu experiencia de navegación, por lo que Chromium lo ha bloqueado.</translation>
-<translation id="1745962126679160932">Chromium almacenará de forma segura tu información, de modo que no tendrás que volver a introducirla, aunque tendrás que seguir verificando el código de seguridad de tu tarjeta para futuros pagos.</translation>
 <translation id="1774152462503052664">Permitir que Chromium se ejecute en segundo plano</translation>
 <translation id="1779356040007214683">Para aumentar la seguridad de Chromium, hemos inhabilitado algunas extensiones que no figuran en <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> y que se podrían haber añadido sin tu conocimiento.</translation>
 <translation id="1808667845054772817">Reinstalar Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium no responde. ¿Quieres reiniciarlo ahora?</translation>
 <translation id="1967743265616885482">Se ha detectado que un módulo con el mismo nombre provoca un conflicto con Chromium.</translation>
 <translation id="2077129598763517140">Utilizar aceleración por hardware cuando esté disponible</translation>
+<translation id="2103655854491303969">El menú de aplicaciones de Chromium va a desaparecer.</translation>
 <translation id="2117181891440368863">Chromium ha verificado que <ph name="ISSUER" /> emitió el certificado de este sitio web. El servidor ha proporcionado información de Transparencia de certificados, pero no era válida.</translation>
 <translation id="2119636228670142020">Información de &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licencias de código abierto de Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium OS no ha podido sincronizar los datos porque la información de inicio de sesión de tu cuenta está obsoleta.</translation>
 <translation id="2558641060352364164">Este sitio utiliza el complemento Chromium Frame, que pronto dejará de estar disponible. Desinstálalo e instala un navegador actual.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Utiliza el acceso directo de <ph name="APPS_ICON_IMAGE" /> situado en la barra de marcadores de Chromium para seguir accediendo a tus aplicaciones.</translation>
 <translation id="2602806952220118310">Chromium - Notificaciones</translation>
 <translation id="2636877269779209383">Chromium necesita acceder a la cámara para compartirla con este sitio web.</translation>
 <translation id="2648074677641340862">Se ha producido un error de sistema operativo durante el proceso de instalación. Vuelve a descargar Chromium.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Se ha detectado que este módulo provoca un conflicto con Chromium.</translation>
 <translation id="4423735387467980091">Personaliza y controla Chromium</translation>
 <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation>
-<translation id="4488676065623537541">Se ha guardado la información de facturación en Chromium.</translation>
 <translation id="4549794359424059447">Las próximas versiones de Chromium dejarán de ser compatibles con Windows XP y Windows Vista.</translation>
 <translation id="4567424176335768812">Has iniciado sesión como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes acceder a tus marcadores, a tu historial y a otras opciones en todos los dispositivos en los que hayas iniciado sesión.</translation>
 <translation id="457845228957001925">Información importante sobre tus datos de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb
index f466f7e..7ea40d52 100644
--- a/chrome/app/resources/chromium_strings_et.xtb
+++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Sulgege kõik Chromiumi aknad (ka Windows 8 režiimis) ja proovige uuesti.</translation>
 <translation id="1708666629004767631">Saadaval on Chromiumi uus, turvalisem versioon.</translation>
 <translation id="1725059042853530269">Fail <ph name="FILE_NAME" /> võib teie kasutuskogemust sirvimisel kahjustada, seetõttu on Chromium selle blokeerinud.</translation>
-<translation id="1745962126679160932">Chromium salvestab turvaliselt teie teabe, nii et te ei pea seda uuesti sisestama, kuid peate ka tulevaste maksete puhul kinnitama oma kaardi turvakoodi.</translation>
 <translation id="1774152462503052664">Luba Chromiumil taustal töötada</translation>
 <translation id="1779356040007214683">Chromiumi turvalisemaks muutmiseks keelasime mõned laiendused, mida ei leidu veebipoes <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ja mille lisamisest te ei pruugi teadlik olla.</translation>
 <translation id="1808667845054772817">Installi Chromium uuesti</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ei reageeri. Kas soovite kohe taaskäivitada?</translation>
 <translation id="1967743265616885482">Samanimeline moodul põhjustab teadaolevalt Chromiumiga vastuolusid.</translation>
 <translation id="2077129598763517140">Kasuta võimaluse korral riistvarakiirendust</translation>
+<translation id="2103655854491303969">Lõpetame Chromiumi rakenduste käivitaja toe pakkumise.</translation>
 <translation id="2117181891440368863">Chromium kinnitas, et selle veebisaidi sertifikaadi andis välja väljaandja <ph name="ISSUER" />. Server esitas sertifikaadi läbipaistvuse teabe, aga see oli kehtetu.</translation>
 <translation id="2119636228670142020">Teave &amp;Chromium OS-i kohta</translation>
 <translation id="2158734852934720349">Chromium OS-i avatud lähtekoodi litsentsid</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS ei saanud andmeid sünkroonida, sest teie konto sisselogimisandmed on aegunud.</translation>
 <translation id="2558641060352364164">See sait kasutab pistikprogrammi Chromium Frame, mille tugi peagi lõpeb. Desinstallige see ja täiendage moodsale brauserile.</translation>
 <translation id="2572494885440352020">Chromiumi abiline</translation>
+<translation id="2595977381794111014">Oma rakendustele pääsete edaspidi juurde Chromiumi järjehoidjate ribal oleva otsetee <ph name="APPS_ICON_IMAGE" /> kaudu.</translation>
 <translation id="2602806952220118310">Chromium – märguanded</translation>
 <translation id="2636877269779209383">Chromiumil on vaja kaamerale juurdepääsu selle jagamiseks saidiga.</translation>
 <translation id="2648074677641340862">Installimisel ilmnes operatsioonisüsteemi viga. Laadige Chromium uuesti alla.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">See moodul põhjustab teadaolevalt Chromiumiga vastuolusid.</translation>
 <translation id="4423735387467980091">Chromiumi kohandamine ja juhtimine</translation>
 <translation id="4458285410772214805">Muudatuse jõustamiseks logige välja ja uuesti sisse.</translation>
-<translation id="4488676065623537541">Teie arvelduse detailid on salvestatud Chromiumi.</translation>
 <translation id="4549794359424059447">Chromiumi tulevased versioonid ei toeta enam Windows XP-d ega Windows Vistat.</translation>
 <translation id="4567424176335768812">Olete sisse logitud aadressiga <ph name="USER_EMAIL_ADDRESS" />. Nüüd on teil juurdepääs oma järjehoidjatele, ajaloole ja muudele seadetele kõigis seadmetes, kuhu olete sisse logitud.</translation>
 <translation id="457845228957001925">Oluline teave teie Chromiumi andmete kohta</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb
index b22c572..778a59f 100644
--- a/chrome/app/resources/chromium_strings_fa.xtb
+++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">‏لطفاً تمام پنجره‌های Chromium را ببندید (از جمله آنهایی که در حالت Windows 8 هستند) و دوباره امتحان کنید.</translation>
 <translation id="1708666629004767631">‏نسخه جدید و امن‌تری از Chromium موجود است.</translation>
 <translation id="1725059042853530269">‏<ph name="FILE_NAME" /> ممکن است اثر نامطلوبی بر تجربه مرور شما بگذارد، بنابراین Chromium آن را مسدود کرده است.</translation>
-<translation id="1745962126679160932">‏Chromium اطلاعات شما را به صورت ایمن ذخیره می‌کند بنابراین لازم نیست دوباره آن را تایپ کنید، اما برای پرداخت‌های بعدی همچنان باید کد امنیتی کارت خود را تأیید کنید.</translation>
 <translation id="1774152462503052664">‏اجازه به Chromium برای اجرا در پس‌زمینه</translation>
 <translation id="1779356040007214683">‏برای ایمن‌تر کردن Chromium، برخی از افزونه‌هایی را که در <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> فهرست شده‌اند و ممکن است بدون اطلاع شما اضافه شده باشند، غیرفعال کردیم.</translation>
 <translation id="1808667845054772817">‏نصب مجدد Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">‏Chromium پاسخ نمی‌دهد. مجدداً راه‌اندازی شود؟</translation>
 <translation id="1967743265616885482">‏یک مدول همنام با Chromium تداخل دارد.</translation>
 <translation id="2077129598763517140">در صورت امکان از شتاب سخت‌افزاری استفاده شود</translation>
+<translation id="2103655854491303969">‏راه‌انداز برنامه Chromium از دور خارج می‌شود.</translation>
 <translation id="2117181891440368863">‏Chromium تأیید کرد <ph name="ISSUER" /> گواهی‌نامه این وب‌سایت را صادر کرده است. سرور، اطلاعات «شفافیت گواهی‌نامه» را ارائه کرد اما این اطلاعات نامعتبر بود.</translation>
 <translation id="2119636228670142020">‏درباره &amp;سیستم عامل Chromium </translation>
 <translation id="2158734852934720349">‏مجوزهای منبع باز سیستم عامل Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">‏سیستم‌عامل Chromium قادر به همگام‌سازی داده‌های شما نبود زیرا جزئیات ورود به حساب شما به‌روز نیست.</translation>
 <translation id="2558641060352364164">‏این سایت از افزایه Chromium Frame استفاده می‌کند که به زودی پشتیبانی از آن متوقف می‌شود. لطفاً آن را حذف نصب کرده و به مرورگر جدیدی ارتقا دهید.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">‏برای ادامه دسترسی به برنامه‌هایتان از میان‌بر <ph name="APPS_ICON_IMAGE" /> در نوار نشانک‌های Chromium استفاده کنید.</translation>
 <translation id="2602806952220118310">‏Chromium - اعلان‌ها</translation>
 <translation id="2636877269779209383">‏Chromium نیاز به مجوز دسترسی به دوربین دارد تا آن را با این سایت به اشتراک بگذارد.</translation>
 <translation id="2648074677641340862">‏یک خطای سیستم عامل در طول نصب روی داد. لطفاً Chromium را دوباره نصب کنید.</translation>
@@ -99,7 +100,6 @@
 <translation id="4330585738697551178">‏این مدول با Chromium تداخل دارد.</translation>
 <translation id="4423735387467980091">‏سفارشی کردن و کنترل Chromium</translation>
 <translation id="4458285410772214805">لطفاً از سیستم خارج شوید و دوباره وارد آن شوید تا این تغییر اعمال شود.</translation>
-<translation id="4488676065623537541">‏جزئیات صورت‌حساب شما در Chromium ذخیره شده است.</translation>
 <translation id="4549794359424059447">‏نسخه‌های آینده Chromium دیگر از Windows XP یا Windows Vista پشتیبانی نمی‌کند.</translation>
 <translation id="4567424176335768812">با حساب <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم شده‌اید. اکنون در همه دستگاه‌هایی که با آنها به سیستم وارد شده‌اید می‌توانید به نشانک‌ها، سابقه و دیگر تنظیماتتان دسترسی داشته باشید.</translation>
 <translation id="457845228957001925">‏اطلاعات مهم در مورد داده‌های Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb
index 7a832a0..fa15fd25 100644
--- a/chrome/app/resources/chromium_strings_fi.xtb
+++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Sulje kaikki Chromium-ikkunat (myös Windows 8 -tilassa käytettävät) ja yritä uudelleen.</translation>
 <translation id="1708666629004767631">Chromiumista on saatavilla uusi, turvallisempi versio.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> voi vahingoittaa selauskokemustasi, joten Chromium esti sen.</translation>
-<translation id="1745962126679160932">Chromium tallentaa tietosi turvalliseen paikkaan, jottei sinun tarvitse kirjoittaa tietoja uudelleen. Sinun täytyy kuitenkin vahvistaa korttisi turvakoodi tulevien maksujen yhteydessä.</translation>
 <translation id="1774152462503052664">Jätä Chromium käyntiin taustalle</translation>
 <translation id="1779356040007214683">Paransimme Chromiumin turvallisuutta poistamalla käytöstä sovelluksia, joita ei löydy kohteesta <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ja jotka on voitu lisätä ilman lupaasi.</translation>
 <translation id="1808667845054772817">Asenna Chromium uudelleen</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ei vastaa. Käynnistetäänkö uudelleen?</translation>
 <translation id="1967743265616885482">Samanniminen moduuli on aiheuttanut aiemmin ristiriitoja Chromiumin kanssa.</translation>
 <translation id="2077129598763517140">Käytä laitteistokiihdytystä, jos mahdollista</translation>
+<translation id="2103655854491303969">Chromiumin sovellusten käynnistysohjelma poistuu käytöstä</translation>
 <translation id="2117181891440368863">Chromium vahvisti, että <ph name="ISSUER" /> on myöntänyt tämän sivuston varmenteen. Palvelin lähetti Certificate Transparency -tiedot, mutta ne eivät pidä paikkaansa.</translation>
 <translation id="2119636228670142020">Tietoja &amp;Chromium-käyttöjärjestelmästä</translation>
 <translation id="2158734852934720349">Chromium-käyttöjärjestelmän avoimen lähdekoodin lisenssit</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium-käyttöjärjestelmä ei voi synkronoida tietoja, sillä tilin kirjautumistiedot ovat vanhentuneet.</translation>
 <translation id="2558641060352364164">Tämä sivusto käyttää Chromium-kehyslaajennusta, jonka tukeminen lopetetaan pian. Poista se ja asenna uudempi selain.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Voit jatkaa sovellustesi käyttöä Chromiumin kirjanmerkkipalkissa olevalla <ph name="APPS_ICON_IMAGE" />-pikanäppäimellä.</translation>
 <translation id="2602806952220118310">Chromium – ilmoitukset</translation>
 <translation id="2636877269779209383">Chromium tarvitsee kameran käyttöoikeuden, jotta voi jakaa sen sivustolle.</translation>
 <translation id="2648074677641340862">Asennuksessa ilmeni käyttöjärjestelmävirhe. Lataa Chromium uudelleen.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Tämän moduulin tiedetään aiheuttavan ristiriitoja Chromiumin kanssa.</translation>
 <translation id="4423735387467980091">Chromiumin muokkaus ja hallinta</translation>
 <translation id="4458285410772214805">Kirjaudu ulos ja kirjaudu uudelleen sisään, jotta muutos tulee voimaan.</translation>
-<translation id="4488676065623537541">Laskutustietosi on tallennettu Chromiumiin.</translation>
 <translation id="4549794359424059447">Chromiumin tulevat versiot eivät enää tue Windows XP:tä tai Windows Vistaa.</translation>
 <translation id="4567424176335768812">Olet kirjautunut Chromeen tilillä <ph name="USER_EMAIL_ADDRESS" />. Nyt voit käyttää kirjanmerkkejäsi, historiaa ja muita asetuksia kaikilla laitteilla, joihin olet kirjautunut.</translation>
 <translation id="457845228957001925">Tärkeitä tietoja Chromium-tiedoistasi</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb
index a0254e4..82eb399 100644
--- a/chrome/app/resources/chromium_strings_fil.xtb
+++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Pakisara ang lahat ng window ng Chromium (kasama ang mga nasa mode na Windows 8) at subukang muli.</translation>
 <translation id="1708666629004767631">May available na bago at mas ligtas na bersyon ng Chromium.</translation>
 <translation id="1725059042853530269">Maaaring makapahamak ang <ph name="FILE_NAME" /> sa iyong karanasan sa pagba-browse, kaya na-block ito ng Chromium.</translation>
-<translation id="1745962126679160932">Secure na iiimbak ng Chromium ang iyong impormasyon upang hindi mo na ito kailangang i-type muli, ngunit kakailanganin mo pa ring i-verify ang panseguridad na code ng iyong card para sa mga pagbabayad sa hinaharap.</translation>
 <translation id="1774152462503052664">Hayaang tumakbo ang Chromium sa background</translation>
 <translation id="1779356040007214683">Upang gawing mas ligtas ang Chromium, nag-disable kami ng ilang extension na hindi nakalista sa <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> at maaaring naidagdag nang hindi mo nalalaman.</translation>
 <translation id="1808667845054772817">Muling i-install ang Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Hindi gumagana ang Chromium. Muling ilunsad ngayon?</translation>
 <translation id="1967743265616885482">May module na may kaparehong pangalan ang natuklasang sumasalungat sa Chromium.</translation>
 <translation id="2077129598763517140">Gamitin ang pagpapabilis ng hardware kapag available</translation>
+<translation id="2103655854491303969">Umaalis na ang Chromium App Launcher.</translation>
 <translation id="2117181891440368863">Na-verify ng Chromium na ang <ph name="ISSUER" /> ang nagbigay sa certificate ng website na ito. Nagbigay ang server ng impormasyon tungkol sa Certificate Transparency, ngunit hindi iyon wasto.</translation>
 <translation id="2119636228670142020">Tungkol sa &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Mga lisensya ng open source ng Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Hindi ma-sync ng Chromium OS ang iyong data dahil hindi napapanahon ang mga detalye sa pag-sign in sa iyong account.</translation>
 <translation id="2558641060352364164">Ginagamit ng site na ito ang plugin na Chromium Frame na malapit nang hindi suportahan. Paki-uninstall ito at mag-upgrade sa isang modernong browser.</translation>
 <translation id="2572494885440352020">Helper ng Chromium</translation>
+<translation id="2595977381794111014">Gamitin ang shortcut ng <ph name="APPS_ICON_IMAGE" /> sa Chromium bookmarks bar upang patuloy na ma-access ang iyong mga app.</translation>
 <translation id="2602806952220118310">Chromium - Mga Notification</translation>
 <translation id="2636877269779209383">Nangangailangan ang Chromium ng access sa camera upang maibahagi ito sa site na ito.</translation>
 <translation id="2648074677641340862">May naganap na error sa operating system sa panahon ng pag-install. Mangyaring i-download muli ang Chromium.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Natuklasang sumasalungat sa Chromium ang module na ito.</translation>
 <translation id="4423735387467980091">I-customize at kontrolin ang Chromium</translation>
 <translation id="4458285410772214805">Mangyaring mag-sign out at mag-sign in muli upang magkabisa ang pagbabagong ito.</translation>
-<translation id="4488676065623537541">Na-save na sa Chromium ang iyong mga detalye ng pagsingil.</translation>
 <translation id="4549794359424059447">Hindi na susuportahan ng mga bersyon ng Chromium ang Windows XP o Windows Vista sa hinaharap.</translation>
 <translation id="4567424176335768812">Naka-sign in ka bilang <ph name="USER_EMAIL_ADDRESS" />. Maaari mo na ngayong i-access ang iyong mga bookmark, kasaysayan, at iba pang setting sa lahat ng iyong device na naka-sign in.</translation>
 <translation id="457845228957001925">Mahalagang impormasyon patungkol sa iyong data sa Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb
index 05a69507..0e358964 100644
--- a/chrome/app/resources/chromium_strings_fr.xtb
+++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -22,7 +22,6 @@
 <translation id="1699664235656412242">Veuillez fermer toutes les fenêtres de Chromium (y compris celles en mode Windows 8), puis réessayer.</translation>
 <translation id="1708666629004767631">Une nouvelle version de Chromium encore plus sûre est disponible.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> peut nuire à votre confort de navigation, il a donc été bloqué par Chromium.</translation>
-<translation id="1745962126679160932">Chromium va stocker les informations vous concernant de manière sécurisée. Vous n'aurez donc pas besoin de les saisir à nouveau. En revanche, vous devrez valider le code de sécurité de votre carte lors de vos prochains paiements.</translation>
 <translation id="1774152462503052664">Laisser Chromium s'exécuter en arrière-plan</translation>
 <translation id="1779356040007214683">Afin de rendre Chrome plus sûr, nous avons désactivé certaines extensions qui ne sont pas répertoriées sur le <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> et qui ont pu être ajoutées à votre insu.</translation>
 <translation id="1808667845054772817">Réinstaller Chromium</translation>
@@ -32,6 +31,7 @@
 <translation id="1929939181775079593">Chromium ne répond pas. Voulez-vous le relancer maintenant ?</translation>
 <translation id="1967743265616885482">Nous avons constaté qu'un module du même nom n'est pas compatible avec Chromium.</translation>
 <translation id="2077129598763517140">Utiliser l'accélération matérielle (le cas échéant)</translation>
+<translation id="2103655854491303969">Le lanceur d'applications Chromium ne sera bientôt plus disponible</translation>
 <translation id="2117181891440368863">Il a été confirmé dans Chromium que le certificat de ce site a bien été fourni par <ph name="ISSUER" />. Des informations relatives à la transparence du certificat ont été fournies via le serveur, mais celles-ci ne sont pas valides.</translation>
 <translation id="2119636228670142020">À propos de &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licences Chromium OS Open Source</translation>
@@ -47,6 +47,7 @@
 <translation id="2535480412977113886">Impossible de synchroniser vos données dans Chromium OS, car les informations de connexion de votre compte ne sont plus à jour.</translation>
 <translation id="2558641060352364164">Ce site utilise le plug-in Chromium Frame, dont le développement va bientôt être abandonné. Veuillez désinstaller ce plug-in, puis passer à un navigateur récent.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Utilisez le raccourci <ph name="APPS_ICON_IMAGE" /> dans la barre de favoris Chromium pour continuer d'accéder à vos applications.</translation>
 <translation id="2602806952220118310">Notifications – Chromium</translation>
 <translation id="2636877269779209383">Chromium doit accéder à la caméra pour la partager avec ce site.</translation>
 <translation id="2648074677641340862">Une erreur du système d'exploitation s'est produite pendant l'installation. Veuillez télécharger Chromium à nouveau.</translation>
@@ -101,7 +102,6 @@
 <translation id="4330585738697551178">Ce module n'est pas compatible avec Chromium.</translation>
 <translation id="4423735387467980091">Personnaliser et contrôler Chromium</translation>
 <translation id="4458285410772214805">Pour que cette modification soit prise en compte, veuillez vous déconnecter, puis vous reconnecter.</translation>
-<translation id="4488676065623537541">Vos informations de facturation ont été enregistrées dans Chromium.</translation>
 <translation id="4549794359424059447">Les futures versions de Chromium ne seront plus compatibles avec Windows XP et Windows Vista.</translation>
 <translation id="4567424176335768812">Vous êtes connecté avec l'adresse e-mail <ph name="USER_EMAIL_ADDRESS" />. Vous pouvez maintenant accéder à vos favoris, à l'historique et aux autres paramètres sur tous les appareils sur lesquels vous êtes connecté.</translation>
 <translation id="457845228957001925">Information importante concernant vos données Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb
index 74d2081..31e3c52 100644
--- a/chrome/app/resources/chromium_strings_gu.xtb
+++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">કૃપા કરીને તમામ Chromium વિંડોઝ (Windows 8 મોડમાં હોય તે સહિત) બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation>
 <translation id="1708666629004767631">Chromium નું નવું, સલામત સંસ્કરણ ઉપલબ્ધ છે.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> તમારા બ્રાઉઝિંગ અનુભવને નુકસાન પહોંચાડી શકે છે, તેથી Chromium એ તેને અવરોધિત કરી છે.</translation>
-<translation id="1745962126679160932">Chromium તમારી માહિતીને સુરક્ષિત રીતે સંગ્રહિત કરશે જેથી તમારે ફરીથી તેને ટાઇપ કરવાની જરૂર નથી, પરંતુ તમારે હજુ પણ ભવિષ્યમાં ચુકવણી માટે તમારા કાર્ડના સુરક્ષા કોડ ચકાસવાની જરૂર પડશે.</translation>
 <translation id="1774152462503052664">Chromium ને પૃષ્ઠભૂમિમાં ચાલવા દો</translation>
 <translation id="1779356040007214683">Chromium ને સુરક્ષિત બનાવવા માટે, અમે <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> માં સૂચિબદ્ધ નથી અને તમારી જાણ વિના ઉમેરવામાં આવ્યાં હોઈ શકે છે તેવા કેટલાક એક્સ્ટેન્શન્સને અક્ષમ કર્યા છે.</translation>
 <translation id="1808667845054772817">Chromium ફરીથી ઇન્સ્ટોલ કરો</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium પ્રતિસાદ આપતું નથી. હવે ફરીથી લોંચ કરીએ?</translation>
 <translation id="1967743265616885482">આ જ નામનું એક મોડ્યુલ Chromium સાથે વિરોધાભાસમાં જાણમાં આવ્યું છે.</translation>
 <translation id="2077129598763517140">હાર્ડવેર ઍક્સિલરેશન ઉપલબ્ધ હોવા પર ઉપયોગ કરો</translation>
+<translation id="2103655854491303969">Chromium ઍપ લૉન્ચર બંધ કરવામાં આવી રહ્યું છે.</translation>
 <translation id="2117181891440368863">Chromium એ ચકાસ્યું કે <ph name="ISSUER" /> એ આ વેબસાઇટનું પ્રમાણપત્ર ઇસ્યુ કર્યું છે. સર્વરે પ્રમાણપત્ર પારદર્શિતા માહિતી પૂરી પાડેલી, પરંતુ તે અમાન્ય હતી.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS વિશે</translation>
 <translation id="2158734852934720349">Chromium OS ખુલ્લા સ્ત્રોત લાઇસેંસેસ</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">તમારી એકાઉન્ટ સાઇન ઇન વિગતો જૂની હોવાને કારણે Chromium OS તમારા ડેટાને સમન્વયિત કરી શક્યું નથી.</translation>
 <translation id="2558641060352364164">આ સાઇટ Chromium ફ્રેમ પ્લગિનનો ઉપયોગ કરી રહી છે જે ટૂંક સમયમાં અસમર્થિત થશે. કૃપા કરીને તેને અનઇન્સ્ટોલ કરો અને આધુનિક બ્રાઉઝરમાં અપગ્રેડ કરો.</translation>
 <translation id="2572494885440352020">Chromium હેલ્પર</translation>
+<translation id="2595977381794111014">તમારી ઍપ્લિકેશનોને ઍક્સેસ કરવાનું ચાલુ રાખવા માટે Chromium બુકમાર્ક્સ બારમાં <ph name="APPS_ICON_IMAGE" /> શૉર્ટકટનો ઉપયોગ કરો.</translation>
 <translation id="2602806952220118310">Chromium - સૂચનાઓ</translation>
 <translation id="2636877269779209383">Chromium ને આ સાઇટ સાથે કૅમેરો શેર કરવા માટે તેની ઍક્સેસની જરૂર છે.</translation>
 <translation id="2648074677641340862">ઇન્સ્ટોલેશન દરમ્યાન ઓપરેટિંગ સિસ્ટમ ભૂલ આવી. કૃપા કરીને ફરીથી Chromium ડાઉનલોડ કરો.</translation>
@@ -103,7 +104,6 @@
 <translation id="4330585738697551178">આ મોડ્યુલ Chromium સાથે વિરોધાભાસ માટે જાણીતું છે.</translation>
 <translation id="4423735387467980091">Chromium ને કસ્ટમાઇઝ અને નિયંત્રિત કરો</translation>
 <translation id="4458285410772214805">કૃપા કરીને આ પરિવર્તનને પ્રભાવમાં લાવવા માટે સાઇન આઉટ કરો અને ફરીથી સાઇન ઇન કરો.</translation>
-<translation id="4488676065623537541">તમારી બિલિંગ વિગતો Chromium માં સાચવવામાં આવી છે.</translation>
 <translation id="4549794359424059447">Chromium ના ભાવિ સંસ્કરણો હવેથી Windows XP અથવા Windows Vista ને સમર્થિત કરશે નહિ.</translation>
 <translation id="4567424176335768812">તમે <ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન છો. હવે તમે તમારા બધા સાઇન ઇન કરેલા ઉપકરણો પર તમારા બુકમાર્ક્સ, ઇતિહાસ અને અન્ય સેટિંગ્સને ઍક્સેસ કરી શકો છો.</translation>
 <translation id="457845228957001925">તમારા Chromium ડેટા અંગેની મહત્વપૂર્ણ માહિતી</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb
index 26c476c..217ff2a 100644
--- a/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">कृपया सभी क्रोमियम windows (Windows 8 मोड वाले भी) बंद कर दें और फिर से प्रयास करें.</translation>
 <translation id="1708666629004767631">क्रोमियम का एक नया और सुरक्षित वर्शन उपलब्ध है.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> आपके ब्राउज़िंग अनुभव को क्षति पहुंचा सकती है, इसलिए क्रोमियम ने उसे अवरोधित कर दिया है.</translation>
-<translation id="1745962126679160932">Chromium आपकी जानकारी को सुरक्षित रूप से संगृहीत करेगा इसलिए आपको इसे फिर से लिखने की आवश्यकता नहीं है, लेकिन भविष्य के भुगतानों के लिए आपको अभी भी अपने कार्ड के सुरक्षा कोड को सत्यापित करना होगा.</translation>
 <translation id="1774152462503052664">क्रोमियम को पृष्ठभूमि में चलने दें</translation>
 <translation id="1779356040007214683">Chromium को अधिक सुरक्षित बनाने के लिए, हमने ऐसे कुछ एक्सटेंशन अक्षम कर दिए हैं जो <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> में सूचीबद्ध नहीं हैं और आपकी जानकारी के बिना जोड़े गए हो सकते हैं.</translation>
 <translation id="1808667845054772817">क्रोमियम को फिर से इंस्टॉल करें</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">क्रोमियम अनुत्तरदायी है. अभी रीलॉन्‍च करें?</translation>
 <translation id="1967743265616885482">समान नाम वाला मॉड्यूल क्रोमियम का विरोध करने के लिए जाना जाता है.</translation>
 <translation id="2077129598763517140">उपलब्ध होने पर हार्डवेयर त्वरण का उपयोग करें</translation>
+<translation id="2103655854491303969">क्रोमियम ऐप्लिकेशन लॉन्चर बंद किया जा रहा है.</translation>
 <translation id="2117181891440368863">क्रोमियम ने सत्यापित किया है कि <ph name="ISSUER" /> ने इस वेबसाइट का प्रमाणपत्र जारी किया है. सर्वर ने प्रमाणपत्र पारदर्शिता जानकारी प्रदान की, लेकिन वह अमान्य थी.</translation>
 <translation id="2119636228670142020">&amp;क्रोमियम OS के बारे में</translation>
 <translation id="2158734852934720349">क्रोमियम OS ओपन सोर्स लाइसेंस</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">क्रोमियम OS आपका डेटा समन्वयित नहीं कर सका क्योंकि आपके खाता प्रवेश विवरण पुराने हो चुके हैं.</translation>
 <translation id="2558641060352364164">यह साइट क्रोमियम फ़्रेम प्लग इन का उपयोग कर रही है जो जल्द ही असमर्थित हो जाएगा. कृपया इसे अनइंस्टॉल करें और किसी आधुनिक ब्राउज़र में अपग्रेड करें.</translation>
 <translation id="2572494885440352020">क्रोमियम सहायक</translation>
+<translation id="2595977381794111014">अपने ऐप्लिकेशन एक्सेस करना जारी रखने के लिए क्रोमियम बुकमार्क बार में <ph name="APPS_ICON_IMAGE" /> शॉर्टकट का उपयोग करें.</translation>
 <translation id="2602806952220118310">Chromium - सूचनाएं</translation>
 <translation id="2636877269779209383">कैमरे को इस साइट के साथ साझा करने के लिए क्रोमियम को कैमरे के ऐक्सेस की आवश्‍यकता होती है.</translation>
 <translation id="2648074677641340862">इंस्‍टॉलेशन के दौरान ऑपरेटिंग सिस्‍टम त्रुटि हुई. कृपया क्रोमियम पुन: डाउनलोड करें.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">यह मॉड्यूल क्रोमियम का विरोध करने के लिए जाना जाता है.</translation>
 <translation id="4423735387467980091">क्रोमियम कस्टमाइज़ करें और नियंत्रित करें</translation>
 <translation id="4458285410772214805">इस परिवर्तन के प्रभावी होने के लिए, कृपया प्रस्थान करें और पुन: प्रवेश करें.</translation>
-<translation id="4488676065623537541">आपका बिलिंग विवरण Chromium में सहेज लिया गया है.</translation>
 <translation id="4549794359424059447">भविष्‍य में आने वाले क्रोमियम के संस्‍करण अब Windows XP या Windows Vista का समर्थन नहीं करेंगे.</translation>
 <translation id="4567424176335768812">आपने <ph name="USER_EMAIL_ADDRESS" /> के रूप में प्रवेश किया हुआ है. अब आप अपने सभी प्रवेश किए हुए डिवाइस पर अपने बुकमार्क, इतिहास, और अन्य सेटिंग की एक्सेस कर सकेंगे.</translation>
 <translation id="457845228957001925">आपके क्रोमियम डेटा से संबंधित महत्वपूर्ण जानकारी</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb
index 5ea0d2b7..1d0fa7e 100644
--- a/chrome/app/resources/chromium_strings_hr.xtb
+++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Zatvorite sve prozore u Chromiumu (uključujući i one u načinu sustava Windows 8) i pokušajte ponovo.</translation>
 <translation id="1708666629004767631">Dostupna je nova, sigurnija verzija preglednika Chromium.</translation>
 <translation id="1725059042853530269">Datoteka <ph name="FILE_NAME" /> može uzrokovati štetu prilikom pregledavanja, pa ju je Chromium blokirao.</translation>
-<translation id="1745962126679160932">Chromium će pohraniti vaše podatke na siguran način tako da ih ne morate ponovo unositi, ali ćete prilikom budućih plaćanja i dalje morati potvrđivati sigurnosni kôd kartice.</translation>
 <translation id="1774152462503052664">Neka Chromium radi u pozadini</translation>
 <translation id="1779356040007214683">Kako bismo Chromium učinili sigurnijim, onemogućili smo neka proširenja koja nisu navedena u trgovini <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> i možda su dodana bez vašeg znanja.</translation>
 <translation id="1808667845054772817">Ponovo instaliraj Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ne reagira. Ponovo pokrenuti sada?</translation>
 <translation id="1967743265616885482">Modul s tim nazivom već je bio u konfliktu s preglednikom Chromium.</translation>
 <translation id="2077129598763517140">Upotrijebi hardversko ubrzanje kada je dostupno</translation>
+<translation id="2103655854491303969">Povlačimo Pokretač aplikacija za Chromium.</translation>
 <translation id="2117181891440368863">Chromium je potvrdio da je <ph name="ISSUER" /> izdavač certifikata web-lokacije. Informacije o transparentnosti certifikata pružio je poslužitelj, no nisu bile važeće.</translation>
 <translation id="2119636228670142020">O OS-u &amp;Chromium</translation>
 <translation id="2158734852934720349">Licence otvorenog izvornog koda OS-a Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">OS Chromium nije mogao sinkronizirati podatke vašeg računa jer su pojedinosti prijave na račun zastarjele.</translation>
 <translation id="2558641060352364164">Web-lokacija upotrebljava dodatak Chromium Frame koji se uskoro više neće podržavati. Deinstalirajte ga i nadogradite na suvremeni preglednik.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Svojim aplikacijama možete pristupati pomoću prečaca <ph name="APPS_ICON_IMAGE" /> na traci oznaka u Chromiumu.</translation>
 <translation id="2602806952220118310">Chromium – obavijesti</translation>
 <translation id="2636877269779209383">Chromium treba imati pristup kameri da bi je dijelio s ovom web-lokacijom.</translation>
 <translation id="2648074677641340862">Došlo je do pogreške operativnog sustava tijekom instalacije. Ponovo preuzmite Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Za taj se modul već zna da je u konfliktu s Chromiumom.</translation>
 <translation id="4423735387467980091">Prilagodite Chromium i upravljajte njime</translation>
 <translation id="4458285410772214805">Odjavite se i prijavite se ponovo da bi ta promjena postala aktivna.</translation>
-<translation id="4488676065623537541">Vaše pojedinosti o naplati spremljene su u Chromium.</translation>
 <translation id="4549794359424059447">Buduće verzije Chromiuma više neće podržavati sustave Windows XP i Windows Vista.</translation>
 <translation id="4567424176335768812">Prijavljeni ste kao <ph name="USER_EMAIL_ADDRESS" />. Sada možete pristupiti svojim oznakama, povijesti i drugim postavkama na svim uređajima na kojima se prijavljujete.</translation>
 <translation id="457845228957001925">Važne informacije o vašim podacima u sustavu Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb
index 5ac405e..36b095c 100644
--- a/chrome/app/resources/chromium_strings_hu.xtb
+++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Kérjük, zárja be az összes Chromium-ablakot (köztük a Windows 8-módban lévőket is), majd próbálja újra.</translation>
 <translation id="1708666629004767631">Elérhető a Chromium új, biztonságosabb verziója.</translation>
 <translation id="1725059042853530269">A(z) <ph name="FILE_NAME" /> káros lehet böngészési élményére, ezért a Chromium letiltotta azt.</translation>
-<translation id="1745962126679160932">A Chromium biztonságosan tárolja az Ön adatait, így nem kell újra begépelnie azokat, de kártyája biztonsági kódját igazolnia kell majd a későbbi kifizetésekhez.</translation>
 <translation id="1774152462503052664">A Chromium fusson a háttérben</translation>
 <translation id="1779356040007214683">A Chromium biztonságosabbá tétele érdekében kikapcsoltunk néhány bővítményt, amelyek nem a(z) <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> szolgáltatásból származnak, és előfordulhat, hogy az Ön tudta nélkül lettek telepítve.</translation>
 <translation id="1808667845054772817">A Chromium újratelepítése</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">A Chromium nem válaszol. Újraindítja most?</translation>
 <translation id="1967743265616885482">Egy ugyanilyen nevű modul ismereteink szerint ütközik a Chromiummal.</translation>
 <translation id="2077129598763517140">Hardveres gyorsítás alkalmazása lehetőség szerint</translation>
+<translation id="2103655854491303969">A Chromium Alkalmazásindító meg fog szűnni.</translation>
 <translation id="2117181891440368863">A Chromium megerősítette, hogy a(z) <ph name="ISSUER" /> állította ki ennek a webhelynek a tanúsítványát. A szerver megadott tanúsítványátláthatósági adatokat, de azok érvénytelenek.</translation>
 <translation id="2119636228670142020">A &amp;Chromium OS névjegye</translation>
 <translation id="2158734852934720349">Chromium OS nyílt forráskódú licencek</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">A Chromium OS nem tudta szinkronizálni az adatokat, mert a fiók bejelentkezési adatai elavultak.</translation>
 <translation id="2558641060352364164">Ez a webhely a Chromium Frame beépülő modult használja, amelynek támogatása hamarosan megszűnik. Kérjük, távolítsa el, majd frissítsen egy modern böngészőre.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Alkalmazásait továbbra is elérheti a Chromium-könyvjelzősáv <ph name="APPS_ICON_IMAGE" /> parancsikonjának használatával.</translation>
 <translation id="2602806952220118310">Chromium – Értesítések</translation>
 <translation id="2636877269779209383">A Chromiumnak hozzáférésre van szüksége a kamerához, hogy megoszthassa azt a webhellyel.</translation>
 <translation id="2648074677641340862">Az operációs rendszer hibát jelzett a telepítés során. Kérjük, töltse le újra a Chromiumot.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Ismereteink szerint ez a modul ütközik a Chromiummal.</translation>
 <translation id="4423735387467980091">A Chromium személyre szabása és beállításai</translation>
 <translation id="4458285410772214805">Kérjük, jelentkezzen ki, majd jelentkezzen be újra a módosítás aktiválásához.</translation>
-<translation id="4488676065623537541">Számlázási adatait a Chromium mentette.</translation>
 <translation id="4549794359424059447">A Chromium jövőbeli verziói nem fogják támogatni a következő rendszereket: Windows XP és Windows Vista.</translation>
 <translation id="4567424176335768812">A(z) <ph name="USER_EMAIL_ADDRESS" /> címmel van bejelentkezve. Elérheti könyvjelzőit, előzményeit és más beállításait minden olyan eszközön, amelyen bejelentkezett.</translation>
 <translation id="457845228957001925">Fontos információ az Ön Chromium-adatairól</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb
index c1975e45..6ced09e0 100644
--- a/chrome/app/resources/chromium_strings_id.xtb
+++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Tutup semua jendela Chromium (termasuk semua jendela dalam mode Windows 8) dan coba lagi.</translation>
 <translation id="1708666629004767631">Tersedia versi Chromium yang baru dan lebih aman.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> dapat membahayakan pengalaman penjelajahan Anda sehingga Chromium telah memblokirnya.</translation>
-<translation id="1745962126679160932">Chromium akan menyimpan informasi Anda dengan aman sehingga Anda tidak harus mengetiknya lagi, namun Anda harus memverifikasi kode keamanan kartu untuk pembayaran di masa mendatang.</translation>
 <translation id="1774152462503052664">Jalankan Chromium di latar belakang</translation>
 <translation id="1779356040007214683">Agar Chromium lebih aman, kami menonaktifkan beberapa ekstensi yang tidak tercantum dalam <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dan mungkin telah ditambahkan tanpa sepengetahuan Anda.</translation>
 <translation id="1808667845054772817">Pasang ulang Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium tidak merespons. Luncurkan ulang sekarang?</translation>
 <translation id="1967743265616885482">Modul dengan nama yang sama biasanya konflik dengan Chromium.</translation>
 <translation id="2077129598763517140">Gunakan percepatan perangkat keras saat tersedia</translation>
+<translation id="2103655854491303969">Peluncur Aplikasi Chromium tidak akan tersedia lagi.</translation>
 <translation id="2117181891440368863">Chromium memverifikasi bahwa <ph name="ISSUER" /> menerbitkan sertifikat situs web ini. Server memberikan informasi Transparansi Sertifikat, namun informasi tersebut tidak valid.</translation>
 <translation id="2119636228670142020">Tentang &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Lisensi sumber terbuka Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS tidak dapat menyinkronkan data karena detail ID masuk Anda belum diperbarui.</translation>
 <translation id="2558641060352364164">Situs ini menggunakan plugin Chromium Frame yang akan segera tidak didukung. Copot pemasangannya dan tingkatkan versi ke browser modern.</translation>
 <translation id="2572494885440352020">Pembantu Chromium</translation>
+<translation id="2595977381794111014">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> di bilah bookmark Chromium untuk terus mengakses aplikasi.</translation>
 <translation id="2602806952220118310">Chromium - Notifikasi</translation>
 <translation id="2636877269779209383">Chromium memerlukan akses kamera untuk membagikannya dengan situs ini.</translation>
 <translation id="2648074677641340862">Terjadi kesalahan pada sistem operasi saat pemasangan berlangsung. Unduh Chromium lagi.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Modul ini biasanya konflik dengan Chromium.</translation>
 <translation id="4423735387467980091">Menyesuaikan dan mengontrol Chromium</translation>
 <translation id="4458285410772214805">Keluar dan masuk lagi agar perubahan ini diterapkan.</translation>
-<translation id="4488676065623537541">Detail penagihan Anda telah disimpan di Chromium.</translation>
 <translation id="4549794359424059447">Versi Chromium berikutnya tidak mendukung lagi Windows XP atau Windows Vista.</translation>
 <translation id="4567424176335768812">Anda masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Kini Anda dapat mengakses bookmark, riwayat, dan setelan lainnya pada seluruh perangkat yang Anda masuki.</translation>
 <translation id="457845228957001925">Informasi penting terkait data Chromium Anda</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb
index 1edcf16..f1c25fe3 100644
--- a/chrome/app/resources/chromium_strings_it.xtb
+++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Chiudi tutte le finestre di Chromium (incluse quelle in modalità Windows 8) e riprova.</translation>
 <translation id="1708666629004767631">È disponibile una nuova versione più sicura di Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> potrebbe influire negativamente sulla tua esperienza di navigazione e, pertanto, è stato bloccato da Chromium.</translation>
-<translation id="1745962126679160932">In Chromium le tue informazioni verranno memorizzate in modo sicuro per consentirti di non doverle digitare di nuovo, ma dovrai comunque verificare il codice di sicurezza della tua carta per i pagamenti futuri.</translation>
 <translation id="1774152462503052664">Lascia Chromium in esecuzione in background</translation>
 <translation id="1779356040007214683">Per rendere Chromium più sicuro, abbiamo disattivato alcune estensioni che non sono elencate nel <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> e potrebbero essere state aggiunte a tua insaputa.</translation>
 <translation id="1808667845054772817">Reinstalla Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium non risponde. Riavviarlo ora?</translation>
 <translation id="1967743265616885482">Un modulo con lo stesso nome risulta in conflitto con Chromium.</translation>
 <translation id="2077129598763517140">Usa accelerazione hardware quando disponibile</translation>
+<translation id="2103655854491303969">Avvio applicazioni di Chromium non sarà più disponibile.</translation>
 <translation id="2117181891440368863">Chromium ha verificato che <ph name="ISSUER" /> ha rilasciato il certificato del sito web. Le informazioni su Certificate Transparency fornite dal server non sono valide.</translation>
 <translation id="2119636228670142020">Informazioni su &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licenze open source di Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Impossibile sincronizzare i dati in Chromium OS perché i dati di accesso dell'account sono obsoleti.</translation>
 <translation id="2558641060352364164">Questo sito utilizza il plug-in Chromium Frame che a breve non sarà più supportato. Disinstallalo ed esegui l'upgrade a un browser recente.</translation>
 <translation id="2572494885440352020">Supporto Chromium</translation>
+<translation id="2595977381794111014">Per continuare ad accedere alle tue app, utilizza la scorciatoia <ph name="APPS_ICON_IMAGE" /> nella barra dei Preferiti di Chromium.</translation>
 <translation id="2602806952220118310">Chromium - Notifiche</translation>
 <translation id="2636877269779209383">Chromium deve avere accesso alla fotocamera per condividerla con questo sito.</translation>
 <translation id="2648074677641340862">Durante l'installazione si è verificato un errore del sistema operativo. Scarica di nuovo Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Questo modulo risulta in conflitto con Chromium.</translation>
 <translation id="4423735387467980091">Personalizza e controlla Chromium</translation>
 <translation id="4458285410772214805">Esci ed esegui di nuovo l'accesso per applicare la modifica.</translation>
-<translation id="4488676065623537541">I tuoi dettagli di fatturazione sono stati salvati in Chromium.</translation>
 <translation id="4549794359424059447">Le versioni future di Chromium non supporteranno più Windows XP o Windows Vista.</translation>
 <translation id="4567424176335768812">Hai eseguito l'accesso come <ph name="USER_EMAIL_ADDRESS" />. Ora puoi accedere ai tuoi Preferiti, alla tua cronologia e ad altre impostazioni su tutti i tuoi dispositivi su cui esegui l'accesso.</translation>
 <translation id="457845228957001925">Informazioni importanti relative ai tuoi dati Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb
index 76af0cb..69ade02 100644
--- a/chrome/app/resources/chromium_strings_iw.xtb
+++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">‏סגור את כל החלונות של Chromium (כולל חלונות במצב Windows 8) ונסה שוב.</translation>
 <translation id="1708666629004767631">‏גרסה חדשה ובטוחה יותר של Chromium זמינה כעת.</translation>
 <translation id="1725059042853530269">‏<ph name="FILE_NAME" /> עשוי לפגוע בחוויית הגלישה שלך, ולכן Chromium חסם אותו.</translation>
-<translation id="1745962126679160932">‏Chromium יאחסן את המידע שלך באופן מאובטח כך שלא תידרש להקליד אותו שוב, אך עדיין תידרש לאמת את קוד האבטחה של הכרטיס שלך לביצוע תשלומים בעתיד.</translation>
 <translation id="1774152462503052664">‏אפשר ל-Chromium לפעול ברקע</translation>
 <translation id="1779356040007214683">‏כדי לשפר את האבטחה של Chromium, השבתנו חלק מהתוספים שלא רשומים ב<ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> וייתכן שנוספו ללא ידיעתך.</translation>
 <translation id="1808667845054772817">‏התקן מחדש את Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">‏Chromium אינו מגיב. להפעיל מחדש עכשיו?</translation>
 <translation id="1967743265616885482">‏מודול בעל אותו שם מתנגש עם Chromium.</translation>
 <translation id="2077129598763517140">השתמש בהאצת חומרה כשניתן</translation>
+<translation id="2103655854491303969">‏Chromium App Launcher סיים את דרכו.</translation>
 <translation id="2117181891440368863">‏Chromium אימת שהגורם שהנפיק את אישור האתר הזה הוא <ph name="ISSUER" />. השרת סיפק פרטים על שקיפות האישור, אבל הם אינם חוקיים.</translation>
 <translation id="2119636228670142020">‏מידע על &amp;מערכת ההפעלה של Chromium‏</translation>
 <translation id="2158734852934720349">‏רישיונות קוד פתוח של מערכת ההפעלה של Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">‏מערכת ההפעלה של Chromium לא הצליחה לסנכרן את הנתונים שלך מפני שפרטי הכניסה של חשבונך אינם מעודכנים.</translation>
 <translation id="2558641060352364164">‏האתר הזה משתמש בפלאגין Chromium Frame. התמיכה בפלאגין הזה תסתיים בקרוב. הסר את ההתקנה שלו ושדרג לדפדפן מודרני.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">‏השתמש בקיצור הדרך <ph name="APPS_ICON_IMAGE" /> בסרגל הסימניות של Chromium כדי להמשיך לגשת לאפליקציות שלך.</translation>
 <translation id="2602806952220118310">‏Chromium - הודעות</translation>
 <translation id="2636877269779209383">‏Chromium זקוק לגישה אל המצלמה כדי לשתף אותה עם האתר הזה.</translation>
 <translation id="2648074677641340862">‏במהלך ההתקנה ארעה שגיאה של מערכת ההפעלה. הורד שוב את Chromium.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">‏מודול זה מתנגש עם Chromium.</translation>
 <translation id="4423735387467980091">‏התאם אישית ושלוט ב-Chromium</translation>
 <translation id="4458285410772214805">צא מהמערכת והיכנס שוב כדי שהשינוי ייכנס לתוקף.</translation>
-<translation id="4488676065623537541">‏פרטי החיוב שלך נשמרו ב-Chromium.</translation>
 <translation id="4549794359424059447">‏גרסאות עתידיות של Chromium כבר לא יתמכו ב-Windows XP וב-Windows Vista.</translation>
 <translation id="4567424176335768812">נכנסת למערכת בתור <ph name="USER_EMAIL_ADDRESS" />. כעת אתה יכול לגשת אל הסימניות, ההיסטוריה והגדרות אחרות שלך בכל המכשירים שבהם אתה מחובר לחשבון.</translation>
 <translation id="457845228957001925">‏מידע חשוב בנוגע לנתונים שלך ב-Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb
index bf85337b..257dcc6 100644
--- a/chrome/app/resources/chromium_strings_ja.xtb
+++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Chromium のウィンドウ(Windows 8 モードのウィンドウを含む)をすべて閉じてからもう一度お試しください。</translation>
 <translation id="1708666629004767631">Chromium がさらに安全になりました。最新バージョンをぜひお試しください。</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> はブラウジング環境に害を及ぼす可能性があるため、Chromium によってブロックされました。</translation>
-<translation id="1745962126679160932">Chromium で情報が安全に保存されるので、再度入力する必要はありません。ただし、今後もお支払いの際にカードのセキュリティ コードを入力する必要があります。</translation>
 <translation id="1774152462503052664">Chromium をバックグラウンドで実行する</translation>
 <translation id="1779356040007214683">Chromium をより安全にご利用いただくため、<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />で提供していない一部の拡張機能を無効にしました。これらは知らないうちに追加された可能性があります。</translation>
 <translation id="1808667845054772817">Chromium を再インストール</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium が応答しません。今すぐ再起動しますか?</translation>
 <translation id="1967743265616885482">同じ名前のモジュールは Chromium と競合することがわかっています。</translation>
 <translation id="2077129598763517140">ハードウェア アクセラレーションが使用可能な場合は使用する</translation>
+<translation id="2103655854491303969">Chromium アプリ ランチャーを非表示にします。</translation>
 <translation id="2117181891440368863">Chromium で <ph name="ISSUER" /> がこのウェブサイトの証明書を発行したことを確認しました。証明書の透明性に関する情報がサーバーから提供されましたが無効でした。</translation>
 <translation id="2119636228670142020">Chromium OS について(&amp;C)</translation>
 <translation id="2158734852934720349">Chromium OS オープンソース ライセンス</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">アカウントのログイン情報が最新ではないため、Chromium OS はデータを同期できませんでした。</translation>
 <translation id="2558641060352364164">このサイトで使用されている Chromium Frame プラグインは、間もなくサポートが終了します。プラグインをアンインストールし、最新のブラウザにアップグレードしてください。</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">今後アプリにアクセスするには、Chromium ブックマーク バーの <ph name="APPS_ICON_IMAGE" /> ショートカットを使用してください。</translation>
 <translation id="2602806952220118310">Chromium - お知らせ</translation>
 <translation id="2636877269779209383">このサイトとカメラを共有するには、Chromium にカメラへのアクセスを許可する必要があります。</translation>
 <translation id="2648074677641340862">インストール中にオペレーティング システム エラーが発生しました。Chromium をダウンロードし直してください。</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">このモジュールは Chromium と競合することがわかっています。</translation>
 <translation id="4423735387467980091">Chromium の設定</translation>
 <translation id="4458285410772214805">変更内容を反映するには、一度ログアウトして、もう一度ログインしてください。</translation>
-<translation id="4488676065623537541">お支払い情報を Chromium に保存しました。</translation>
 <translation id="4549794359424059447">Chromium の今後のバージョンでは Windows XP と Windows Vista はサポートされなくなります。</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> としてログインしています。ログインしているすべてのデバイスで、ブックマーク、履歴、その他の設定にアクセスできます。</translation>
 <translation id="457845228957001925">Chromium データに関する重要な情報</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb
index 6770272..4f0ba416 100644
--- a/chrome/app/resources/chromium_strings_kn.xtb
+++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">ದಯವಿಟ್ಟು ಎಲ್ಲಾ Chromium ವಿಂಡೋಗಳನ್ನು (Windows 8 ಮೋಡ್ ಸೇರಿದಂತೆ) ಮುಚ್ಚಿರಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="1708666629004767631">ಹೊಸದಾದ, ಸುರಕ್ಷಿತವಾದ Chromium ನ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆ.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಅನುಭವಕ್ಕೆ ಹಾನಿಯುಂಟು ಮಾಡುವ ಕಾರಣ, Chromium ಅದನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ.</translation>
-<translation id="1745962126679160932">Chromium ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸುಭದ್ರವಾಗಿ ಸಂಗ್ರಹಿಸಿಕೊಳ್ಳುತ್ತದೆ ಇದರಿಂದಾಗಿ ನೀವು ಅದನ್ನು ಮತ್ತೆ ಟೈಪ್ ಮಾಡಬೇಕಾಗಿಲ್ಲ, ಆದರೂ ನೀವು ಭವಿಷ್ಯದ ಪಾವತಿಗಳಿಗಾಗಿ ಈಗಲೂ ಕಾರ್ಡ್‌ನ ಭದ್ರತೆ ಕೋಡ್ ಆನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="1774152462503052664">Chromium ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಚಾಲನೆಗೊಳ್ಳಲು ಅನುಮತಿಸಿ</translation>
 <translation id="1779356040007214683">Chromium  ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ನಲ್ಲಿ ನಾವು ಪಟ್ಟಿ ಮಾಡಲಾದ ಕೆಲವು ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದೇವೆ ಮತ್ತು ಇದು ಗಮನಕ್ಕೆ ಬಾರದೇ ಸೇರಿಸಿರಬಹುದು.</translation>
 <translation id="1808667845054772817">Chromium ಅನ್ನು ಮರುಸ್ಥಾಪಿಸು</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ಸ್ಪಂದಿಸುತ್ತಿಲ್ಲ. ಇದೀಗ ಮರುಪ್ರಾರಂಭಿಸುವುದೇ?</translation>
 <translation id="1967743265616885482">ಒಂದೇ ಹೆಸರಿರುವ ಮಾಡ್ಯುಲ್ ಮತ್ತು Chromium ಜೊತೆಗೆ ಘರ್ಷಣೆ ಆಗಬಹುದು.</translation>
 <translation id="2077129598763517140">ಲಭ್ಯವಿರುವಾಗ ಹಾರ್ಡ್‌ವೇರ್ ಆಕ್ಸಲರೇಶನ್ ಬಳಸು</translation>
+<translation id="2103655854491303969">Chromium ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚರ್ ಇನ್ನು ಮುಂದೆ ಇರುವುದಿಲ್ಲ.</translation>
 <translation id="2117181891440368863">ಈ ವೆಬ್‌ಸೈಟ್‌ನ ಪ್ರಮಾಣಪತ್ರವನ್ನು <ph name="ISSUER" /> ನೀಡಿದೆ ಎಂಬುದಾಗಿ Chromium ಪರಿಶೀಲಿಸಿದೆ. ಪ್ರಮಾಣಪತ್ರ ಪಾರದರ್ಶಕತೆ ಮಾಹಿತಿಯನ್ನು ಸರ್ವರ್ ಪೂರೈಸಿದೆ, ಆದರೆ ಅದು ಅಮಾನ್ಯವಾಗಿದೆ.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS ಕುರಿತು</translation>
 <translation id="2158734852934720349">Chromium OS ಮುಕ್ತ ಮೂಲ ಪರವಾನಗಿಗಳು</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">ನಿಮ್ಮ ಖಾತೆಯ ಸೈನ್ ಇನ್ ವಿವರಗಳು ತೀರಾ ಹಳೆಯದಾಗಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chromium OS ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
 <translation id="2558641060352364164">ಈ ಸೈಟ್ ಶೀಘ್ರದಲ್ಲಿಯೇ ಬೆಂಬಲ ಕಳೆದುಕೊಳ್ಳಲಿರುವ Chromium Frame ಪ್ಲಗ್-ಇನ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ. ದಯವಿಟ್ಟು ಅದನ್ನು ಅಸ್ಥಾಪಿಸಿ ಮತ್ತು ಆಧುನಿಕ ಬ್ರೌಸರ್‌ಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ.</translation>
 <translation id="2572494885440352020">Chromium ಸಹಾಯಕ</translation>
+<translation id="2595977381794111014">ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಪ್ರವೇಶಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು Chromium ಬುಕ್‌ಮಾರ್ಕ್‌‌ಗಳ ಬಾರ್‌ನಲ್ಲಿ <ph name="APPS_ICON_IMAGE" /> ಶಾರ್ಟ್‌ಕಟ್ ಬಳಸಿ.</translation>
 <translation id="2602806952220118310">Chromium - ಅಧಿಸೂಚನೆಗಳು</translation>
 <translation id="2636877269779209383">ಈ ಸೈಟ್‌ನೊಂದಿಗೆ ಅದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು Chromium ಗೆ ಕ್ಯಾಮರಾದ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆ.</translation>
 <translation id="2648074677641340862">ಸ್ಥಾಪಿಸುತ್ತಿರುವಾಗ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ದೋಷ ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು Chromium ಅನ್ನು ಪುನಃ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Chromium ನೊಂದಿಗಿನ ಈ ಮಾಡ್ಯೂಲ್‌‌ನ ಘರ್ಷಣೆ ಎಲ್ಲರಿಗೂ ತಿಳಿದಿರುವಂಥದ್ದು.</translation>
 <translation id="4423735387467980091">Chromium ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ</translation>
 <translation id="4458285410772214805">ದಯವಿಟ್ಟು ಈ ಬದಲಾವಣೆಯು ಕಾರ್ಯಗತವಾಗಲು ಸೈನ್ ಔಟ್ ಮಾಡಿ ಹಾಗೂ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
-<translation id="4488676065623537541">ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ವಿವರಗಳನ್ನು Chromium ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="4549794359424059447">Chromium ಪೂರ್ಣ ಆವೃತ್ತಿಗಳು ಇನ್ನು ಮುಂದೆ Windows XP ಅಥವಾ Windows Vista ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> ನಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಿರುವಿರಿ. ನೀವು ಇದೀಗ ನಿಮ್ಮ ಎಲ್ಲಾ ಸೈನ್ ಇನ್ ಮಾಡಿರುವ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು.</translation>
 <translation id="457845228957001925">ನಿಮ್ಮ Chromium ಡೇಟಾಗೆ ಸಂಬಂಧಿಸಿದ ಪ್ರಮುಖ ಮಾಹಿತಿ</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb
index e00b544..cbe8c26 100644
--- a/chrome/app/resources/chromium_strings_ko.xtb
+++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Chromium 창(Windows 8 모드의 창 포함)을 모두 닫고 다시 시도해 보세요.</translation>
 <translation id="1708666629004767631">새롭고 안전한 Chromium의 새 버전을 사용할 수 있습니다.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" />이(가) 인터넷 사용 환경을 손상할 수 있어서 Chromium에서 차단했습니다.</translation>
-<translation id="1745962126679160932">Chromium은 사용자의 정보를 안전하게 저장하므로 정보를 다시 입력할 필요가 없지만 향후 결제 시 카드의 보안 코드는 확인해야 합니다.</translation>
 <translation id="1774152462503052664">백그라운드에서 Chromium을 실행</translation>
 <translation id="1779356040007214683">Google에서는 Chromium의 보안을 강화하기 위해 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />에 표시되지 않고 사용자 모르게 추가되었을 수 있는 일부 확장 프로그램의 사용을 중지했습니다.</translation>
 <translation id="1808667845054772817">Chromium 재설치</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium이 응답하지 않습니다. 다시 시작하시겠습니까?</translation>
 <translation id="1967743265616885482">같은 이름의 모듈이 Chromium과 충돌하는 것으로 알려져 있습니다.</translation>
 <translation id="2077129598763517140">가능한 경우 하드웨어 가속 사용</translation>
+<translation id="2103655854491303969">Chromium 앱 런처 서비스 중단 예정</translation>
 <translation id="2117181891440368863">Chromium에서 <ph name="ISSUER" />이(가) 이 웹사이트의 인증서를 발행했음을 확인했습니다. 서버에서 인증서 투명성 정보를 제공했으나, 올바르지 않았습니다.</translation>
 <translation id="2119636228670142020">Chromium OS 정보</translation>
 <translation id="2158734852934720349">Chromium OS 오픈소스 라이선스</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">계정의 로그인 세부정보가 오래되어 Chromium OS에서 데이터를 동기화하지 못했습니다.</translation>
 <translation id="2558641060352364164">이 사이트에서 곧 지원이 중단되는 Chromium 프레임 플러그인을 사용하고 있습니다. 플러그인을 제거하고 최신 브라우저로 업그레이드하세요.</translation>
 <translation id="2572494885440352020">Chromium 도우미</translation>
+<translation id="2595977381794111014">앱에 계속 액세스하려면 Chromium 북마크바의 <ph name="APPS_ICON_IMAGE" /> 단축키를 사용하세요.</translation>
 <translation id="2602806952220118310">Chromium - 알림</translation>
 <translation id="2636877269779209383">Chromium이 이 사이트와 카메라를 공유하려면 카메라 액세스가 필요합니다.</translation>
 <translation id="2648074677641340862">설치 중 운영체제 오류가 발생했습니다. Chromium을 다시 다운로드하세요.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">이 모듈은 Chromium과 충돌하는 것으로 알려져 있습니다.</translation>
 <translation id="4423735387467980091">Chromium 맞춤설정 및 제어</translation>
 <translation id="4458285410772214805">변경사항을 적용하려면 로그아웃했다가 다시 로그인하세요.</translation>
-<translation id="4488676065623537541">결제 세부정보가 Chromium에 저장되었습니다.</translation>
 <translation id="4549794359424059447">Chromium 향후 버전에서는 더 이상 Windows XP 또는 Windows Vista를 지원하지 않습니다.</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" />(으)로 로그인되어 있습니다. 이제 로그인한 모든 기기에서 북마크, 방문 기록 및 기타 설정에 액세스할 수 있습니다.</translation>
 <translation id="457845228957001925">Chromium 데이터 관련 중요 정보</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb
index 34871c4..879353c1 100644
--- a/chrome/app/resources/chromium_strings_lt.xtb
+++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Uždarykite visus „Chromium“ langus (įskaitant atidarytus veikiant „Windows 8“ režimui) ir bandykite dar kartą.</translation>
 <translation id="1708666629004767631">Pasiekiama nauja, saugesnė „Chromium“ versija.</translation>
 <translation id="1725059042853530269">„<ph name="FILE_NAME" />“ gali pakenkti jūsų naršymo funkcijoms, todėl „Chromium“ jį užblokavo.</translation>
-<translation id="1745962126679160932">„Chromium“ patikimai saugos jūsų informaciją, kad nebereikėtų jos vėl įvesti, bet ateityje atlikdami mokėjimus vis tiek turėsite patvirtinti kortelės saugos kodą.</translation>
 <translation id="1774152462503052664">Paleisti „Chromium“ fone</translation>
 <translation id="1779356040007214683">Kad „Chromium“ padarytume saugesnę, išjungėme kai kuriuos plėtinius, kurių nėra „<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />“ sąraše ir kurie galėjo būti pridėti be jūsų žinios.</translation>
 <translation id="1808667845054772817">Iš naujo įdiegti „Chromium“</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">„Chromium“ neatsako. Paleisti iš naujo dabar?</translation>
 <translation id="1967743265616885482">Modulis tokiu pačiu pavadinimu žinomas kaip prieštaraujantis „Chromium“.</translation>
 <translation id="2077129598763517140">Kai galima, naudoti aparatinės įrangos paspartinimą</translation>
+<translation id="2103655854491303969">Nutraukiamas „Chromium“ programų paleidimo priemonės teikimas.</translation>
 <translation id="2117181891440368863">„Chromium“ patvirtino, kad „<ph name="ISSUER" />“ išdavė šį svetainės sertifikatą. Serveris pateikė sertifikato skaidrumo informaciją, bet ji negalioja.</translation>
 <translation id="2119636228670142020">Apie &amp;„Chromium“ OS</translation>
 <translation id="2158734852934720349">„Chromium“ OS atvirojo šaltinio licencijos</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">„Chromium“ OS negali sinchronizuoti duomenų, nes paskyros išsami prisijungimo informacija yra pasenusi.</translation>
 <translation id="2558641060352364164">Šioje svetainėje naudojamas „Chromium“ rėmelio papildinys, kuris greitai bus nepalaikomas. Pašalinkite jį ir atsisiųskite modernią naršyklę.</translation>
 <translation id="2572494885440352020">„Chromium“ pagalbos priemonė</translation>
+<translation id="2595977381794111014">„Chromium“ žymių juostoje naudokite spartųjį klavišą <ph name="APPS_ICON_IMAGE" />, kad ir toliau pasiektumėte savo programas.</translation>
 <translation id="2602806952220118310">„Chromium“ – pranešimai</translation>
 <translation id="2636877269779209383">„Chromium“ reikia pasiekti fotoaparatą, kad galėtų bendrinti jį su šia svetaine.</translation>
 <translation id="2648074677641340862">Diegiant įvyko operacinės sistemos klaida. Atsisiųskite „Chromium“ dar kartą.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Šis modulis žinomas kaip prieštaraujantis „Chromium“.</translation>
 <translation id="4423735387467980091">Tinkinkite ir valdykite „Chromium“</translation>
 <translation id="4458285410772214805">Atsijunkite ir prisijunkite iš naujo, kad šis pakeitimas būtų pritaikytas.</translation>
-<translation id="4488676065623537541">Išsami atsiskaitymo informacija išsaugota „Chromium“.</translation>
 <translation id="4549794359424059447">Būsimų versijų „Chromium“ nebebus palaikoma naudojant „Windows XP“ ar „Windows Vista“.</translation>
 <translation id="4567424176335768812">Esate prisijungę kaip <ph name="USER_EMAIL_ADDRESS" />. Dabar galite pasiekti savo žymes, istoriją ir kitus nustatymus visuose įrenginiuose, kuriuose esate prisijungę.</translation>
 <translation id="457845228957001925">Svarbi informacija apie jūsų „Chromium“ duomenis</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb
index 41c5126..55f935c8 100644
--- a/chrome/app/resources/chromium_strings_lv.xtb
+++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Lūdzu, aizveriet visus Chromium logus (tostarp Windows 8 režīmā atvērtos) un mēģiniet vēlreiz.</translation>
 <translation id="1708666629004767631">Ir pieejama jauna un drošāka Chromium versija.</translation>
 <translation id="1725059042853530269">Fails <ph name="FILE_NAME" /> var kaitēt jūsu pārlūkošanas pieredzei, tādēļ Chromium to ir bloķējis.</translation>
-<translation id="1745962126679160932">Pārlūkā Chromium tiks droši saglabāta jūsu informācija, lai jums vairs nevajadzētu to atkārtoti ievadīt, bet, veicot turpmākus maksājumus, jums joprojām būs jāapstiprina kartes drošības kods.</translation>
 <translation id="1774152462503052664">Ļaut Chromium darboties fonā</translation>
 <translation id="1779356040007214683">Lai uzlabotu Chromium drošību, mēs atspējojām dažus paplašinājumus, kas nav norādīti vietnē <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> un, iespējams, tika pievienoti, jums nezinot.</translation>
 <translation id="1808667845054772817">Pārinstalēt Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium nereaģē. Vai restartēt to tūlīt?</translation>
 <translation id="1967743265616885482">Ir zināms, ka modulis ar tādu pašu nosaukumu konfliktē ar Chromium.</translation>
 <translation id="2077129598763517140">Izmantot aparatūras paātrināšanas režīmu, kad tas ir pieejams</translation>
+<translation id="2103655854491303969">Chromium lietotņu palaidēja darbība tiek pārtraukta.</translation>
 <translation id="2117181891440368863">Chromium verificēja, ka <ph name="ISSUER" /> izsniedza šīs vietnes sertifikātu. Serveris sniedza Certificate Transparency informāciju, taču tā nebija derīga.</translation>
 <translation id="2119636228670142020">Par &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Chromium OS atklātā pirmkoda licences</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS nevarēja sinhronizēt jūsu datus, jo jūsu konta pierakstīšanās informācija ir novecojusi.</translation>
 <translation id="2558641060352364164">Šajā vietnē tiek izmantots spraudnis Chromium Frame, kas drīzumā vairs netiks atbalstīts. Lūdzu, atinstalējiet to un veiciet jaunināšanu uz modernu pārlūku.</translation>
 <translation id="2572494885440352020">Chromium palīgs</translation>
+<translation id="2595977381794111014">Lai turpmāk varētu piekļūt savām lietotnēm, izmantojiet saīsni <ph name="APPS_ICON_IMAGE" /> Chromium grāmatzīmju joslā.</translation>
 <translation id="2602806952220118310">Chromium — paziņojumi</translation>
 <translation id="2636877269779209383">Chromium sistēmām ir nepieciešama piekļuve kamerai, lai kopīgotu to ar šo vietni.</translation>
 <translation id="2648074677641340862">Instalācijas laikā radās operētājsistēmas kļūda. Lejupielādējiet Chromium vēlreiz.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Ir zināms, ka šis modulis konfliktē ar Chromium.</translation>
 <translation id="4423735387467980091">Pielāgot un kontrolēt Chromium</translation>
 <translation id="4458285410772214805">Lūdzu, izrakstieties un pierakstieties vēlreiz, lai šīs izmaiņas stātos spēkā.</translation>
-<translation id="4488676065623537541">Jūsu norēķinu dati tika saglabāti pārlūkā Chromium.</translation>
 <translation id="4549794359424059447">Nākamajās Chromium versijās vairs netiks atbalstītas operētājsistēmas Windows XP un Windows Vista.</translation>
 <translation id="4567424176335768812">Jūs esat pierakstījies kā <ph name="USER_EMAIL_ADDRESS" />. Tagad varat piekļūt savām grāmatzīmēm, vēsturei un citiem iestatījumiem visās ierīcēs, kurās esat pierakstījies.</translation>
 <translation id="457845228957001925">Svarīga informācija par jūsu datiem operētājsistēmā Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb
index adf13b3..ba1f643d 100644
--- a/chrome/app/resources/chromium_strings_ml.xtb
+++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">എല്ലാ Chromium വിൻഡോകളും (Windows 8 മോഡിലുള്ളവ ഉൾപ്പെടെ) അടച്ച് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="1708666629004767631">പുതിയതും സുരക്ഷിതവുമായ ഒരു Chromium പതിപ്പ് ലഭ്യമാണ്.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> എന്നത് നിങ്ങളുടെ ബ്രൗസുചെയ്യൽ അനുഭവത്തെ ദോഷകരമായി ബാധിക്കാമെന്നതിനാൽ Chromium ഇതിനെ തടഞ്ഞു.</translation>
-<translation id="1745962126679160932">Chromium നിങ്ങളുടെ വിവരങ്ങൾ സുരക്ഷിതമായി സംഭരിക്കുന്നതിനാൽ നിങ്ങൾക്ക് ഇത് വീണ്ടും ടൈപ്പുചെയ്യേണ്ടിവരില്ല, എങ്കിലും ഭാവിയിലെ പേയ്‌മെന്റുകൾക്കായി നിങ്ങളുടെ കാർഡിന്റെ സുരക്ഷാ കോഡ് തുടർന്നും സ്ഥിരീകരിക്കേണ്ടിവരും.</translation>
 <translation id="1774152462503052664">Chromium-ത്തെ പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കാൻ അനുവദിക്കുക</translation>
 <translation id="1779356040007214683">Chromium സുരക്ഷിതമാക്കുന്നതിന്, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> എന്നതിൽ ലിസ്റ്റുചെയ്യാത്ത ചില വിപുലീകരണങ്ങൾ ഞങ്ങൾ പ്രവർത്തനരഹിതമാക്കി, അവ നിങ്ങളുടെ അറിവില്ലാതെ ചേർത്തിരിക്കാനിടയുണ്ട്.</translation>
 <translation id="1808667845054772817">Chromium വീണ്ടും ഇൻസ്‌റ്റാളുചെയ്യുക</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium പ്രതികരിക്കുന്നില്ല. ഇപ്പോൾ വീണ്ടും സമാരംഭിക്കണോ?</translation>
 <translation id="1967743265616885482">സമാന നാമത്തിലുള്ള ഒരു മൊഡ്യൂൾ Chromium-മായി വൈരുദ്ധ്യം പുലർത്തുന്നതിന് അറിയപ്പെട്ടതാണ്.</translation>
 <translation id="2077129598763517140">ലഭ്യമാകുമ്പോൾ ഹാർഡ്‌വെയർ ത്വരിതപ്പെടുത്തൽ ഉപയോഗിക്കുക</translation>
+<translation id="2103655854491303969">Chromium അപ്ലിക്കേഷൻ ലോഞ്ചർ പ്രവർത്തനം അവസാനിപ്പിക്കാൻ പോവുകയാണ്.</translation>
 <translation id="2117181891440368863">ഈ വെബ്‌സൈറ്റിന്റെ സർട്ടിഫിക്കറ്റ് <ph name="ISSUER" /> നൽകിയതാണെന്ന് Chromium പരിശോധിച്ചുറപ്പിച്ചു. സെർവർ, സർട്ടിഫിക്കറ്റ് സുതാര്യത വിവരം നൽകിയെങ്കിലും, അത് അസാധുവായിരുന്നു.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS-നെക്കുറിച്ച്</translation>
 <translation id="2158734852934720349">Chromium OS ഓപ്പൺ സോഴ്‌സ് ലൈസൻസുകൾ</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">നിങ്ങളുടെ അക്കൗണ്ടിന്റെ സൈൻ ഇൻ വിശദാംശങ്ങൾ കാലഹരണപ്പെട്ടതിനാൽ Chromium OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
 <translation id="2558641060352364164">ഈ സൈറ്റ് ഉടൻ പിന്തുണ നഷ്‌ടപ്പെടാൻ പോകുന്ന Chromium Frame പ്ലഗ് ഇൻ ആണ് ഉപയോഗിക്കുന്നത്. ഇത് അൺഇൻസ്റ്റാളുചെയ്‌ത് ഒരു നൂതന ബ്രൗസറിലേക്ക് അപ്‌ഗ്രേഡുചെയ്യുക.</translation>
 <translation id="2572494885440352020">Chromium ഹെൽപ്പർ</translation>
+<translation id="2595977381794111014">നിങ്ങളുടെ ആപ്‌സ് ആക്‌സസ്സ് ചെയ്യുന്നത് തുടരാൻ, Chromium ബുക്ക്‌മാർക്കുകളിലെ <ph name="APPS_ICON_IMAGE" /> കുറുക്കുവഴി ഉപയോഗിക്കുക.</translation>
 <translation id="2602806952220118310">Chromium - അറിയിപ്പുകൾ</translation>
 <translation id="2636877269779209383">Chromium-ത്തിന് ഈ സൈറ്റുമായി ക്യാമറ പങ്കിടാൻ അതിലേക്ക് ആക്‌സസ്സ് ആവശ്യമാണ്.</translation>
 <translation id="2648074677641340862">ഇൻസ്റ്റാളുചെയ്യുന്നതിനിടെ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പിശക് സംഭവിച്ചു. Chromium വീണ്ടും ഡൗൺലോഡുചെയ്യുക.</translation>
@@ -103,7 +104,6 @@
 <translation id="4330585738697551178">ഈ മൊഡ്യൂൾ Chromium-മായി വൈരുദ്ധ്യം പുലർത്തുന്നതിന് അറിയപ്പെട്ടതാണ്.</translation>
 <translation id="4423735387467980091">Chromium ഇഷ്‌ടാനുസൃതമാക്കുക, നിയന്ത്രിക്കുക</translation>
 <translation id="4458285410772214805">ഈ മാറ്റം പ്രാബല്യത്തിൽ വരുന്നതിന് സൈൻ ഔട്ട് ചെയ്‌ത് വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation>
-<translation id="4488676065623537541">നിങ്ങളുടെ ബില്ലിംഗ് വിശദാംശങ്ങൾ Chromium-ൽ സംരക്ഷിച്ചു.</translation>
 <translation id="4549794359424059447">Chromium-ത്തിന്റെ ഭാവിയിലെ പതിപ്പുകൾ ഇനി Windows XP അല്ലെങ്കിൽ Windows Vista-യെ പിന്തുണയ്‌ക്കില്ല.</translation>
 <translation id="4567424176335768812">നിങ്ങൾ <ph name="USER_EMAIL_ADDRESS" /> ആയി സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു. സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകളും ചരിത്രവും മറ്റ് ക്രമീകരണങ്ങളും ആക്‌സസ്സുചെയ്യാൻ ഇപ്പോൾ നിങ്ങൾക്കാകും.</translation>
 <translation id="457845228957001925">നിങ്ങളുടെ Chromium ഡാറ്റയെ സംബന്ധിച്ച പ്രധാനപ്പെട്ട വിവരങ്ങൾ</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb
index 44e6b1b..a7075aa 100644
--- a/chrome/app/resources/chromium_strings_mr.xtb
+++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -22,7 +22,6 @@
 <translation id="1699664235656412242">कृपया सर्व Chromium विंडो (Windows 8 मोड मधील अशासह) बंद करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="1708666629004767631">Chromium ची नवीन, सुरक्षित आवृत्ती उपलब्ध आहे.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> आपल्या ब्राउझिंग अनुभवास हानी पोहोचवू शकते, म्हणून Chromium ने हे अवरोधित केले आहे.</translation>
-<translation id="1745962126679160932">Chromium आपली माहिती सुरक्षितपणे संचयित करेल यामुळे आपल्याला ती पुन्हा टाइप करण्याची आवश्यकता नाही, परंतु आपल्याला तरीही भविष्यातील देयकांसाठी आपल्या कार्डचा सुरक्षितता कोड सत्यापित करण्याची आवश्यकता असेल.</translation>
 <translation id="1774152462503052664">Chromium पार्श्वभूमीवर चालू द्या</translation>
 <translation id="1779356040007214683">Chromium अधिक सुरक्षित बनविण्‍यासाठी, आम्‍ही <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> मध्‍ये सूचीबद्ध नसलेले आणि आपल्‍या माहिती शिवाय कदाचित जोडले गेलेले काही विस्‍तार अक्षम केले.</translation>
 <translation id="1808667845054772817">Chromium पुनर्स्थापित करा</translation>
@@ -32,6 +31,7 @@
 <translation id="1929939181775079593">Chromium असंवादी आहे. आता पुन्‍हा लाँच करायचे?</translation>
 <translation id="1967743265616885482">यासारख्या नावाचे मॉड्यूल Chromium बरोबर विरोधाकरिता ओळखले जाते.</translation>
 <translation id="2077129598763517140">उपलब्ध असेल तेव्हा हार्डवेअर ऍक्सीलरेशन वापरा</translation>
+<translation id="2103655854491303969">Chromium अ‍ॅप लाँचर जाणार आहे.</translation>
 <translation id="2117181891440368863">Chromium ने सत्यापित केले की <ph name="ISSUER" /> ने या वेबसाइटचे प्रमाणपत्र जारी केले. सर्व्हरने प्रमाणपत्र पारदर्शकता माहिती पुरविली परंतु ती अवैध होती.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS बद्दल</translation>
 <translation id="2158734852934720349">Chromium OS खुला स्त्रोत परवाने</translation>
@@ -47,6 +47,7 @@
 <translation id="2535480412977113886">आपले खाते साइन इन तपशील कालबाह्य झाल्यामुळे Chromium OS आपला डेटा संकालित करू शकले नाही.</translation>
 <translation id="2558641060352364164">ही साइट Chromium फ्रेम प्लगिन वापरत आहे जे लवकरच असमर्थित केले जाईल. कृपया ते विस्थापित करा आणि एका आधुनिक ब्राउझरवर श्रेणीसुधारित करा.</translation>
 <translation id="2572494885440352020">Chromium मदतनीस</translation>
+<translation id="2595977381794111014">आपल्या अॅप्समध्ये प्रवेश करणे सुरु ठेवण्यासाठी Chromium बुकमार्क बार मधील <ph name="APPS_ICON_IMAGE" /> शॉर्टकट वापरा.</translation>
 <translation id="2602806952220118310">Chromium - सूचना</translation>
 <translation id="2636877269779209383">Chromium ला या साइटसह सामायिक करण्‍यासाठी कॅमेर्‍यामध्ये प्रवेश करण्याची आवश्‍यकता असते.</translation>
 <translation id="2648074677641340862">स्‍थापनेदरम्‍यान ऑपरेटिंग प्रणाली त्रुटी आली. कृपया Chromium पुन्‍हा डाउनलोड करा.</translation>
@@ -101,7 +102,6 @@
 <translation id="4330585738697551178">हे मॉड्यूल Chromium बरोबर विरोधाकरिता ओळखले जाते.</translation>
 <translation id="4423735387467980091">Chromium सानुकूल करा आणि नियंत्रित करा</translation>
 <translation id="4458285410772214805">कृपया हा बदल प्रभावी होण्यासाठी साइन आउट करा आणि साइन इन करा.</translation>
-<translation id="4488676065623537541">आपले बिलिंग तपशील Chromium मध्ये जतन करण्यात आले आहेत.</translation>
 <translation id="4549794359424059447">Chromium च्या भविष्‍यातील आवृत्त्या यापुढे Windows XP किंवा Windows Vista ला समर्थन देणार नाहीत.</translation>
 <translation id="4567424176335768812">आपण <ph name="USER_EMAIL_ADDRESS" /> म्हणून साइन इन केले आहे. आता आपण आपल्या सर्व साइन इन केलेल्या डिव्हाइसेसवरील आपल्या बुकमार्क, इतिहास आणि अन्य सेटिंग्जवर प्रवेश करू शकता.</translation>
 <translation id="457845228957001925">आपल्या Chromium डेटाशी संबंधित महत्त्वाची माहिती</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb
index 7c910ff..a159122 100644
--- a/chrome/app/resources/chromium_strings_ms.xtb
+++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Sila tutup semua tetingkap Chromium (termasuk yang di dalam mod Windows 8) dan cuba lagi.</translation>
 <translation id="1708666629004767631">Terdapat versi Chromium baharu yang lebih selamat tersedia.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> boleh membahayakan pelayaran anda, jadi Kromium telah menyekatnya.</translation>
-<translation id="1745962126679160932">Chromium akan menyimpan maklumat anda dengan selamat supaya anda tidak perlu menaipkannya semula, tetapi anda masih perlu mengesahkan kod keselamatan kad anda untuk pembayaran pada masa hadapan.</translation>
 <translation id="1774152462503052664">Benarkan Chromium dijalankan dalam latar belakang</translation>
 <translation id="1779356040007214683">Untuk menjadikan Chromium lebih selamat, kami melumpuhkan beberapa sambungan yang tidak disenaraikan dalam <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dan mungkin telah ditambahkan tanpa pengetahuan anda.</translation>
 <translation id="1808667845054772817">Pasang semula Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium tidak responsif. Lancarkan semula sekarang?</translation>
 <translation id="1967743265616885482">Modul dengan nama yang sama telah diketahui bercanggah dengan Chromium.</translation>
 <translation id="2077129598763517140">Gunakan pecutan perkakasan apabila tersedia</translation>
+<translation id="2103655854491303969">Pelancar Apl Chromium akan ditamatkan.</translation>
 <translation id="2117181891440368863">Chromium mengesahkan bahawa <ph name="ISSUER" /> mengeluarkan sijil tapak web ini. Pelayan membekalkan maklumat Ketelusan Sijil, tetapi tidak sah.</translation>
 <translation id="2119636228670142020">Mengenai &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Lesen sumber terbuka Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">OS Chromium tidak dapat menyegerakkan data anda kerana butiran log masuk akaun anda sudah lapuk.</translation>
 <translation id="2558641060352364164">Tapak ini menggunakan pemalam Chromium Frame yang tidak akan disokong tidak lama lagi. Sila nyahpasangnya dan naik taraf kepada penyemak imbas moden.</translation>
 <translation id="2572494885440352020">Pembantu Chromium</translation>
+<translation id="2595977381794111014">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> dalam bar penanda halaman Chromium untuk terus mengakses apl anda.</translation>
 <translation id="2602806952220118310">Chromium - Pemberitahuan</translation>
 <translation id="2636877269779209383">Chromium memerlukan akses kamera untuk mengongsinya dengan tapak ini.</translation>
 <translation id="2648074677641340862">Ralat sistem pengendalian berlaku semasa pemasangan. Sila muat turun Chromium semula.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Modul ini diketahui bercanggah dengan Chromium.</translation>
 <translation id="4423735387467980091">Sesuaikan dan kawal Chromium</translation>
 <translation id="4458285410772214805">Sila log keluar dan log masuk semula supaya perubahan ini boleh dilaksanakan.</translation>
-<translation id="4488676065623537541">Butiran pengebilan anda telah disimpan dalam Chromium.</translation>
 <translation id="4549794359424059447">Versi Chromium yang akan datang tidak lagi akan menyokong Windows XP atau Windows Vista.</translation>
 <translation id="4567424176335768812">Anda telah log masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Sekarang anda boleh mengakses penanda halaman, sejarah dan tetapan anda yang lain pada semua peranti yang anda gunakan untuk log masuk.</translation>
 <translation id="457845228957001925">Maklumat penting mengenai data Chromium anda</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 04d500c..26c1b44 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Sluit alle Chromium-vensters (inclusief de vensters in Windows 8-modus) en probeer het opnieuw.</translation>
 <translation id="1708666629004767631">Er is een nieuwe, veiligere versie van Chromium beschikbaar.</translation>
 <translation id="1725059042853530269">Chromium heeft <ph name="FILE_NAME" /> geblokkeerd omdat het bestand een negatieve invloed kan hebben op je browserervaring.</translation>
-<translation id="1745962126679160932">Chromium slaat je gegevens veilig op, zodat je deze niet opnieuw hoeft op te geven, maar je moet nog steeds de beveiligingscode van je kaart opgeven voor toekomstige betalingen.</translation>
 <translation id="1774152462503052664">Chromium laten uitvoeren op de achtergrond</translation>
 <translation id="1779356040007214683">Om Chromium veiliger te maken, hebben we een aantal extensies uitgeschakeld die niet worden vermeld in de <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> en mogelijk zonder je medeweten zijn geïnstalleerd.</translation>
 <translation id="1808667845054772817">Chromium opnieuw installeren</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium reageert niet. Nu opnieuw starten?</translation>
 <translation id="1967743265616885482">Van een module met dezelfde naam is bekend dat deze conflicteert met Chromium.</translation>
 <translation id="2077129598763517140">Hardwareversnelling gebruiken indien beschikbaar</translation>
+<translation id="2103655854491303969">De Chromium App Launcher gaat verdwijnen.</translation>
 <translation id="2117181891440368863">Chromium heeft geverifieerd dat <ph name="ISSUER" /> het certificaat van deze website heeft uitgegeven. De server heeft certificaattransparantiegegevens geleverd, maar deze waren ongeldig.</translation>
 <translation id="2119636228670142020">Over &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Open-sourcelicenties van Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium OS kan je gegevens niet synchroniseren omdat de inloggegevens voor je account zijn verouderd.</translation>
 <translation id="2558641060352364164">Deze site maakt gebruik van de plug-in Chromium Frame die binnenkort niet meer wordt ondersteund. Verwijder deze en voer een upgrade naar een moderne browser uit.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Gebruik de snelkoppeling <ph name="APPS_ICON_IMAGE" /> op de Chromium-bladwijzerbalk om toegang te krijgen tot je apps.</translation>
 <translation id="2602806952220118310">Chromium - Meldingen</translation>
 <translation id="2636877269779209383">Chromium heeft cameratoegang nodig om het item te delen met deze site.</translation>
 <translation id="2648074677641340862">Er is tijdens de installatie een fout opgetreden in het besturingssysteem. Download Chromium opnieuw.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Van deze module is bekend dat deze conflicteert met  Chromium.</translation>
 <translation id="4423735387467980091">Chromium aanpassen en beheren</translation>
 <translation id="4458285410772214805">Log uit en log weer in om deze wijziging door te voeren.</translation>
-<translation id="4488676065623537541">Je factureringsgegevens zijn opgeslagen in Chromium.</translation>
 <translation id="4549794359424059447">Toekomstige versies van Chromium bieden geen ondersteuning meer voor Windows XP en Windows Vista.</translation>
 <translation id="4567424176335768812">Je bent ingelogd als <ph name="USER_EMAIL_ADDRESS" />. Je hebt nu toegang tot je bladwijzers, geschiedenis en andere instellingen op al je apparaten waarop je bent ingelogd.</translation>
 <translation id="457845228957001925">Belangrijke informatie over je Chromium-gegevens</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb
index 5390ff73..a42a84d 100644
--- a/chrome/app/resources/chromium_strings_no.xtb
+++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Lukk alle Chromium-vinduene (inkludert de i Windows 8-modus) og prøv på nytt.</translation>
 <translation id="1708666629004767631">En ny, sikrere versjon av Chromium er tilgjengelig.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" />-filen kan gi deg en dårligere leseopplevelse, så Chromium har blokkert den.</translation>
-<translation id="1745962126679160932">Chromium lagrer informasjonen din sikkert, slik at du slipper å skrive den inn på nytt. Du må imidlertid bekrefte sikkerhetskoden for kortet ved fremtidige betalinger.</translation>
 <translation id="1774152462503052664">La Chromium kjøre i bakgrunnen</translation>
 <translation id="1779356040007214683">For å gjøre Chromium tryggere, har vi deaktivert noen utvidelser som ikke er oppført i <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />, og som kan ha blitt lagt uten at du har vært klar over det.</translation>
 <translation id="1808667845054772817">Installer Chromium på nytt</translation>
@@ -100,7 +99,6 @@
 <translation id="4330585738697551178">Denne modulen er kjent for å komme i konflikt med Chromium.</translation>
 <translation id="4423735387467980091">Tilpass og kontrollér Chromium</translation>
 <translation id="4458285410772214805">Logg deg av og så på igjen for at denne endringen skal tre i kraft.</translation>
-<translation id="4488676065623537541">Faktureringsdetaljene dine er lagret i Chromium.</translation>
 <translation id="4549794359424059447">Fremtidige versjoner av Chromium kommer ikke lenger til å støtte Windows XP eller Windows Vista.</translation>
 <translation id="4567424176335768812">Du er logget på som <ph name="USER_EMAIL_ADDRESS" />. Nå kan du bruke bokmerkene, loggen og andre innstillinger på alle enhetene du er logget på.</translation>
 <translation id="457845228957001925">Viktig informasjon om Chromium-dataene dine</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb
index 4ed6ad54..9c42067 100644
--- a/chrome/app/resources/chromium_strings_pl.xtb
+++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Zamknij wszystkie okna Chromium (także te działające w trybie Windows 8) i spróbuj ponownie.</translation>
 <translation id="1708666629004767631">Dostępna jest nowa, bezpieczniejsza wersja Chromium.</translation>
 <translation id="1725059042853530269">Plik <ph name="FILE_NAME" /> może wpływać na działanie Chromium, więc został zablokowany.</translation>
-<translation id="1745962126679160932">Chromium będzie bezpiecznie przechowywać Twoje dane, dzięki czemu nie będzie trzeba wpisywać ich ponownie. W przypadku przyszłych płatności konieczne jednak będzie zweryfikowanie kodu bezpieczeństwa karty.</translation>
 <translation id="1774152462503052664">Zezwól Chromium na działanie w tle</translation>
 <translation id="1779356040007214683">Aby poprawić bezpieczeństwo Chromium, wyłączyliśmy niektóre rozszerzenia niedostępne w <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />, które mogły zostać dodane bez Twojej wiedzy.</translation>
 <translation id="1808667845054772817">Ponownie zainstaluj Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium nie odpowiada. Uruchomić go teraz ponownie?</translation>
 <translation id="1967743265616885482">Znane są przypadki konfliktu modułu o takiej nazwie z Chromium.</translation>
 <translation id="2077129598763517140">Użyj akceleracji sprzętowej, gdy jest dostępna</translation>
+<translation id="2103655854491303969">Wycofujemy program uruchamiający aplikacje Chromium.</translation>
 <translation id="2117181891440368863">Chromium sprawdził, że wydawcą certyfikatu tej witryny jest <ph name="ISSUER" />. Serwer dostarczył informacje o certyfikacie, korzystając z protokołu Certificate Transparency, ale były one nieprawidłowe.</translation>
 <translation id="2119636228670142020">System operacyjny &amp;Chromium – informacje</translation>
 <translation id="2158734852934720349">Licencje oprogramowania typu open source w Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">System operacyjny Chromium nie może zsynchronizować danych, ponieważ dane logowania na Twoje konto są nieaktualne.</translation>
 <translation id="2558641060352364164">Ta strona korzysta z wtyczki Chromium Frame, która wkrótce nie będzie obsługiwana. Odinstaluj wtyczkę i przejdź na nowoczesną przeglądarkę.</translation>
 <translation id="2572494885440352020">Pomoc Chromium</translation>
+<translation id="2595977381794111014">Aby nadal uruchamiać aplikacje, możesz korzystać ze skrótu <ph name="APPS_ICON_IMAGE" /> na pasku zakładek w Chromium.</translation>
 <translation id="2602806952220118310">Chromium – powiadomienia</translation>
 <translation id="2636877269779209383">Chromium potrzebuje dostępu do kamery, by móc ją udostępnić tej stronie.</translation>
 <translation id="2648074677641340862">Podczas instalacji wystąpił błąd systemu operacyjnego. Pobierz Chromium ponownie.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Znane są przypadki konfliktu tego modułu z Chromium.</translation>
 <translation id="4423735387467980091">Dostosowywanie i kontrolowanie Chromium</translation>
 <translation id="4458285410772214805">Wyloguj się i zaloguj ponownie, by zmiana zaczęła obowiązywać.</translation>
-<translation id="4488676065623537541">Szczegóły płatności zostały zapisane w Chromium.</translation>
 <translation id="4549794359424059447">Przyszłe wersje Chromium nie będą już zgodne z Windows XP ani Windows Vista.</translation>
 <translation id="4567424176335768812">Jesteś zalogowany jako <ph name="USER_EMAIL_ADDRESS" />. Teraz możesz korzystać ze swoich zakładek, historii i innych ustawień na wszystkich zalogowanych urządzeniach.</translation>
 <translation id="457845228957001925">Ważne informacje dotyczące Twoich danych Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb
index 6b1894b..39c2507 100644
--- a/chrome/app/resources/chromium_strings_pt-BR.xtb
+++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Feche todas as janelas do Chromium, (incluindo as que estejam no modo Windows 8) e tente novamente.</translation>
 <translation id="1708666629004767631">Há uma nova versão mais segura do Chromium disponível.</translation>
 <translation id="1725059042853530269">O Chromium bloqueou o arquivo <ph name="FILE_NAME" />, porque ele pode prejudicar sua experiência de navegação.</translation>
-<translation id="1745962126679160932">O Chromium armazena suas informações com segurança para que não seja necessário digitá-las novamente, mas ainda é necessário confirmar o código de segurança de seu cartão para pagamentos futuros.</translation>
 <translation id="1774152462503052664">Permitir que o Chromium seja executado em segundo plano</translation>
 <translation id="1779356040007214683">Para tornar o Chromium mais seguro, desativamos algumas extensões que não estão listadas na <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> e podem ser sido adicionadas sem seu conhecimento.</translation>
 <translation id="1808667845054772817">Reinstalar o Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">O Chromium não está respondendo. Reiniciar agora?</translation>
 <translation id="1967743265616885482">Um módulo com o mesmo nome é conhecido por entrar em conflito com o Chromium.</translation>
 <translation id="2077129598763517140">Usar aceleração de hardware quando disponível</translation>
+<translation id="2103655854491303969">O Acesso rápido aos apps do Chromium será desativado.</translation>
 <translation id="2117181891440368863">O Chromium verificou que <ph name="ISSUER" /> emitiu o certificado deste website. O servidor forneceu informações de Transparência de certificado, mas elas eram inválidas.</translation>
 <translation id="2119636228670142020">Sobre o &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licenças de código aberto do Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">O Chromium OS não pôde sincronizar seus dados porque os detalhes de login da sua conta estão desatualizados.</translation>
 <translation id="2558641060352364164">Este site está usando o plug-in Chromium Frame, que não será mais compatível em breve. Desinstale-o e faça upgrade para um navegador moderno.</translation>
 <translation id="2572494885440352020">Assistente do Chromium</translation>
+<translation id="2595977381794111014">Use o atalho <ph name="APPS_ICON_IMAGE" /> na barra de favoritos do Chromium para continuar a acessar seus apps.</translation>
 <translation id="2602806952220118310">Chromium – Notificações</translation>
 <translation id="2636877269779209383">O Chromium precisa de acesso à câmera para compartilhá-la com este site.</translation>
 <translation id="2648074677641340862">Ocorreu um erro no sistema operacional durante a instalação. Faça o download do Chromium novamente.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Este módulo é conhecido por entrar em conflito com o Chromium.</translation>
 <translation id="4423735387467980091">Personalizar e controlar o Chromium</translation>
 <translation id="4458285410772214805">Saia e faça login novamente para que esta alteração entre em vigor.</translation>
-<translation id="4488676065623537541">Seus dados para cobrança foram salvos no Chromium.</translation>
 <translation id="4549794359424059447">As futuras versões do Chromium não serão mais compatível com o Windows XP ou Windows Vista.</translation>
 <translation id="4567424176335768812">Você está conectado como <ph name="USER_EMAIL_ADDRESS" />. Agora você pode acessar seus favoritos, histórico e outras configurações em todos os seus dispositivos conectados.</translation>
 <translation id="457845228957001925">Informação importante sobre seus dados do Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb
index fe424b8e..9201585 100644
--- a/chrome/app/resources/chromium_strings_pt-PT.xtb
+++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Feche todas as janelas do Chromium (incluindo as que estiverem no modo Windows 8) e tente novamente.</translation>
 <translation id="1708666629004767631">Está disponível uma versão nova e mais segura do Chromium.</translation>
 <translation id="1725059042853530269">O ficheiro <ph name="FILE_NAME" /> pode prejudicar a sua experiência de navegação, pelo que foi bloqueado pelo Chromium.</translation>
-<translation id="1745962126679160932">O Chromium armazenará as suas informações em segurança para que não necessite de as introduzir novamente, mas continuará a ser necessário confirmar o código de segurança do seu cartão para futuros pagamentos.</translation>
 <translation id="1774152462503052664">Permitir que o Chromium seja executado em segundo plano</translation>
 <translation id="1779356040007214683">Para tornar o Chromium mais seguro, desativámos algumas extensões que não estão listadas na <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> e é possível que tenham sido adicionadas sem o seu conhecimento.</translation>
 <translation id="1808667845054772817">Reinstalar Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">O Chromium não responde. Reiniciar agora?</translation>
 <translation id="1967743265616885482">É conhecido um módulo com o mesmo nome que entra em conflito com o Chromium.</translation>
 <translation id="2077129598763517140">Utilizar aceleração de hardware sempre que estiver disponível</translation>
+<translation id="2103655854491303969">O Iniciador de Aplicações do Chromium será descontinuado.</translation>
 <translation id="2117181891440368863">O Chromium confirmou que <ph name="ISSUER" /> emitiu o certificado deste Website. O servidor forneceu informações de Transparência do certificado, mas estas eram inválidas.</translation>
 <translation id="2119636228670142020">Acerca do SO &amp;Chromium</translation>
 <translation id="2158734852934720349">Licenças de código aberto do SO Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">O SO Chromium não conseguiu sincronizar os dados porque os detalhes de início de sessão da sua conta estão desatualizados.</translation>
 <translation id="2558641060352364164">Este site está a utilizar o plug-in Chromium Frame, que em breve deixará de ser suportado. Desinstale-o e atualize para um navegador moderno.</translation>
 <translation id="2572494885440352020">Ajuda do Chromium</translation>
+<translation id="2595977381794111014">Utilize o atalho <ph name="APPS_ICON_IMAGE" /> na barra de marcadores do Chromium para continuar a aceder às aplicações.</translation>
 <translation id="2602806952220118310">Chromium – Notificações</translation>
 <translation id="2636877269779209383">O Chromium necessita de acesso à câmara para a partilhar com este site.</translation>
 <translation id="2648074677641340862">Ocorreu um erro no sistema operativo durante a instalação. Transfira novamente o Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Este módulo é conhecido por entrar em conflito com o Chromium.</translation>
 <translation id="4423735387467980091">Personalizar e controlar o Chromium</translation>
 <translation id="4458285410772214805">Termine sessão e volte a iniciar sessão para que esta alteração tenha efeito.</translation>
-<translation id="4488676065623537541">Os seus detalhes de faturação foram guardados no Chromium.</translation>
 <translation id="4549794359424059447">As versões futuras do Chromium não suportarão o Windows XP ou o Windows Vista.</translation>
 <translation id="4567424176335768812">Tem sessão iniciada como <ph name="USER_EMAIL_ADDRESS" />. Agora, pode aceder aos seus marcadores, ao histórico e a outras definições em todos os dispositivos com sessão iniciada.</translation>
 <translation id="457845228957001925">Informações importantes acerca dos seus dados do Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb
index 78a81d8..09f3e2bb 100644
--- a/chrome/app/resources/chromium_strings_ro.xtb
+++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Închideți toate ferestrele Chromium (inclusiv pe cele în modul Windows 8) și încercați din nou.</translation>
 <translation id="1708666629004767631">Chromium este disponibil într-o versiune nouă și mai sigură.</translation>
 <translation id="1725059042853530269">Fișierul <ph name="FILE_NAME" /> poate afecta experiența de navigare. De aceea, Chromium l-a blocat.</translation>
-<translation id="1745962126679160932">Chromium va stoca în siguranță informațiile dvs., astfel încât să nu trebuiască să le introduceți din nou, dar va trebui în continuare să confirmați codul de securitate al cardului pentru viitoarele plăți.</translation>
 <translation id="1774152462503052664">Permiteți Chromium să ruleze în fundal</translation>
 <translation id="1779356040007214683">Pentru mai multă siguranță în Chromium, am dezactivat câteva extensii care nu sunt incluse în <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> și care este posibil să fi fost adăugate fără știrea dvs.</translation>
 <translation id="1808667845054772817">Reinstalați Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium nu mai răspunde. Îl reporniți acum?</translation>
 <translation id="1967743265616885482">Despre un modul cu același nume se cunoaște că intră în conflict cu Chromium.</translation>
 <translation id="2077129598763517140">Utilizează accelerarea hardware când este disponibilă</translation>
+<translation id="2103655854491303969">Lansatorul de aplicații Chromium nu va mai fi disponibil.</translation>
 <translation id="2117181891440368863">Chromium s-a asigurat că certificatul acestui site a fost emis de <ph name="ISSUER" />. Serverul a oferit informații privind Certificate Transparency, însă acestea nu au fost valide.</translation>
 <translation id="2119636228670142020">Despre sistemul de operare &amp;Chromium</translation>
 <translation id="2158734852934720349">Licențe open source pentru sistemul de operare Chromium</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Sistemul de operare Chromium nu a putut sincroniza datele, deoarece detaliile de conectare pentru contul dvs. nu sunt actualizate.</translation>
 <translation id="2558641060352364164">Acest site folosește pluginul Chromium Frame, care nu va mai fi acceptat în curând. Dezinstalează-l și fă upgrade la un browser modern.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">Folosește comanda rapidă <ph name="APPS_ICON_IMAGE" /> din bara de marcaje din Chromium pentru a accesa în continuare aplicațiile.</translation>
 <translation id="2602806952220118310">Chromium – Notificări</translation>
 <translation id="2636877269779209383">Chromium are nevoie de acces la camera foto pentru a-l acorda acestui site.</translation>
 <translation id="2648074677641340862">S-a produs o eroare de sistem de operare în timpul instalării. Descărcați din nou Chromium.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Despre acest modul se cunoaște că intră în conflict cu Chromium.</translation>
 <translation id="4423735387467980091">Personalizați și controlați Chromium</translation>
 <translation id="4458285410772214805">Pentru ca modificarea să fie aplicată, deconectați-vă și conectați-vă din nou.</translation>
-<translation id="4488676065623537541">Detaliile de facturare au fost salvate în Chromium.</translation>
 <translation id="4549794359424059447">Versiunile Chromium ulterioare nu vor mai accepta Windows XP sau Windows Vista.</translation>
 <translation id="4567424176335768812">V-ați conectat ca <ph name="USER_EMAIL_ADDRESS" />. Acum vă puteți accesa marcajele, istoricul și alte setări de pe toate dispozitivele pe care v-ați conectat.</translation>
 <translation id="457845228957001925">Informații importante cu privire la datele dvs. Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb
index 704e763d..7221aa0 100644
--- a/chrome/app/resources/chromium_strings_ru.xtb
+++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Закройте все окна Chromium (включая открытые в режиме Windows 8) и повторите попытку.</translation>
 <translation id="1708666629004767631">Доступна новая, еще более быстрая версия Chromium.</translation>
 <translation id="1725059042853530269">Chromium блокирует файл <ph name="FILE_NAME" />, так как он может нанести вред браузеру.</translation>
-<translation id="1745962126679160932">Chromium будет хранить ваши данные в защищенном виде, и их не придется вводить повторно – достаточно будет лишь указать код безопасности кредитной карты.</translation>
 <translation id="1774152462503052664">Разрешить Chromium работать в фоновом режиме</translation>
 <translation id="1779356040007214683">Чтобы обеспечить безопасность ваших данных, некоторые расширения Chromium были отключены, так как <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> не содержит сведений о них, то есть эти компоненты могли быть установлены без вашего ведома.</translation>
 <translation id="1808667845054772817">Переустановить Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium не отвечает. Перезапустить сейчас?</translation>
 <translation id="1967743265616885482">Известно, что модуль с таким названием конфликтует с Chromium.</translation>
 <translation id="2077129598763517140">Использовать аппаратное ускорение (при наличии)</translation>
+<translation id="2103655854491303969">Мы прекращаем поддержку Панели запуска приложений Chromium</translation>
 <translation id="2117181891440368863">Данные Chromium подтверждают, что издатель сертификата сайта – <ph name="ISSUER" />. Сервер предоставил временные метки сертификата, однако они являются недействительными.</translation>
 <translation id="2119636228670142020">О &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Лицензии Chromium OS на ПО с открытым исходным кодом</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Не удалось выполнить синхронизацию, так как учетные данные устарели.</translation>
 <translation id="2558641060352364164">Этот сайт использует плагин Chromium Frame, поддержка которого скоро будет прекращена. Установите новую версию браузера.</translation>
 <translation id="2572494885440352020">Помощник по Chromium</translation>
+<translation id="2595977381794111014">Используйте ярлык <ph name="APPS_ICON_IMAGE" /> в панели закладок Chromium, чтобы получить доступ к приложениям.</translation>
 <translation id="2602806952220118310">Chromium - Оповещения</translation>
 <translation id="2636877269779209383">Предоставьте браузеру Chromium доступ к камере, чтобы пользоваться ею на этом сайте.</translation>
 <translation id="2648074677641340862">В процессе установки произошла ошибка в операционной системе. Скачайте Chromium ещё раз.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Известно, что модуль с таким названием конфликтует с Chromium.</translation>
 <translation id="4423735387467980091">Настройка и управление Chromium</translation>
 <translation id="4458285410772214805">Чтобы изменения вступили в силу, выполните вход еще раз.</translation>
-<translation id="4488676065623537541">Платежные данные сохранены в Chromium.</translation>
 <translation id="4549794359424059447">В следующих версиях Chromium будет прекращена поддержка Windows XP и Windows Vista.</translation>
 <translation id="4567424176335768812">Вы вошли с помощью аккаунта <ph name="USER_EMAIL_ADDRESS" />. Ваши закладки, история и другие настройки теперь доступны на всех устройствах, где вы используете этот аккаунт.</translation>
 <translation id="457845228957001925">Важная информация о ваших данных в Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb
index 650f771..9db6dcc 100644
--- a/chrome/app/resources/chromium_strings_sk.xtb
+++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Zavrite všetky okná Chromium (vrátane okien v režime systému Windows 8) a skúste to znova.</translation>
 <translation id="1708666629004767631">K dispozícii je nová bezpečnejšia verzia prehliadača Chromium.</translation>
 <translation id="1725059042853530269">Súbor <ph name="FILE_NAME" /> môže poškodiť vaše prostredie na prehliadanie, a preto ho prehliadač Chromium zablokoval.</translation>
-<translation id="1745962126679160932">Chromium vaše informácie bezpečne uloží, aby ste ich už nemuseli zadávať znova. V prípade budúcich platieb však budete musieť bezpečnostný kód svojej karty stále overiť.</translation>
 <translation id="1774152462503052664">Povoliť prehliadaču Chromium spustenie na pozadí</translation>
 <translation id="1779356040007214683">Z dôvodu vyššej bezpečnosti prehliadača Chromium sme zakázali niektoré rozšírenia, ktoré nedodáva <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> a mohli byť pridané bez vášho vedomia.</translation>
 <translation id="1808667845054772817">Preinštalovať prehliadač Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium nereaguje. Chcete ho spustiť znova?</translation>
 <translation id="1967743265616885482">Zistilo sa, že modul s rovnakým názvom spôsobuje konflikt s prehliadačom Chromium.</translation>
 <translation id="2077129598763517140">Používať hardvérovú akceleráciu (keď je dostupná)</translation>
+<translation id="2103655854491303969">Čoskoro ukončíme používanie Spúšťača aplikácií Chromium.</translation>
 <translation id="2117181891440368863">Prehliadač Chromium overil, že certifikát tohto webu bol vydaný vydavateľom <ph name="ISSUER" />. Server poskytol informácie o transparentnosti certifikátu, boli však neplatné.</translation>
 <translation id="2119636228670142020">Informácie o systéme &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licencie open source systému OS Chromium</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Systému OS Chromium sa nepodarilo synchronizovať vaše údaje, pretože vaše prihlasovacie údaje účtu sú zastarané.</translation>
 <translation id="2558641060352364164">Táto stránka používa doplnok Chromium Frame, ktorého podpora sa čoskoro ukončí. Odinštalujte ho a inovujte na moderný prehliadač.</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">K aplikáciám môžete naďalej pristupovať pomocou skratky <ph name="APPS_ICON_IMAGE" /> na paneli so záložkami prehliadača Chromium.</translation>
 <translation id="2602806952220118310">Chromium – upozornenia</translation>
 <translation id="2636877269779209383">Chromium musí mať najprv prístup k fotoaparátu, aby ho mohol s týmito webovými stránkami zdieľať.</translation>
 <translation id="2648074677641340862">V priebehu inštalácie sa vyskytla chyba operačného systému. Stiahnite prehliadač Chromium znova.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Tento modul zvykne spôsobovať konflikt s prehliadačom Chromium.</translation>
 <translation id="4423735387467980091">Prispôsobiť a spravovať Chromium</translation>
 <translation id="4458285410772214805">Ak chcete, aby sa zmeny prejavili, odhláste sa a znova sa prihláste.</translation>
-<translation id="4488676065623537541">Vaše fakturačné údaje sa uložili do prehliadača Chromium.</translation>
 <translation id="4549794359424059447">Budúce verzie prehliadača Chromium už nebudú podporovať systémy Windows XP a Windows Vista.</translation>
 <translation id="4567424176335768812">Ste prihlásený/-á ako <ph name="USER_EMAIL_ADDRESS" />. Teraz môžete na všetkých zariadeniach, kde ste prihlásený/-á, pristupovať k svojim záložkám, histórii a ďalším nastaveniam.</translation>
 <translation id="457845228957001925">Dôležité informácie týkajúce sa údajov prehliadača Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index bfe3f1b..74fc387 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Zaprite vsa okna Chromiuma (tudi tista v načinu Windows 8) in poskusite znova.</translation>
 <translation id="1708666629004767631">Na voljo je nova, varnejša različica Chromiuma.</translation>
 <translation id="1725059042853530269">Datoteka <ph name="FILE_NAME" /> morda škodljivo vpliva na brskanje, zato jo je Chromium blokiral.</translation>
-<translation id="1745962126679160932">Chromium bo varno shranil vaše podatke, tako da vam jih ne bo treba več vnesti, vendar boste za plačila v prihodnosti še vedno morali preveriti varnostno kodo kartice.</translation>
 <translation id="1774152462503052664">Naj se Chromium izvaja v ozadju</translation>
 <translation id="1779356040007214683">Zaradi večje varnosti smo v Chromiumu onemogočili nekatere razširitve, ki niso navedene v storitvi <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> in so bile morda dodane brez vaše vednosti.</translation>
 <translation id="1808667845054772817">Vnovična namestitev Chromiuma</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium se ne odziva. Ga želite znova zagnati?</translation>
 <translation id="1967743265616885482">Modul z istim imenom je že bil v sporu s Chromiumom.</translation>
 <translation id="2077129598763517140">Uporabi strojno pospeševanje, če je na voljo</translation>
+<translation id="2103655854491303969">Zaganjalnik aplikacij v Chromiumu se poslavlja.</translation>
 <translation id="2117181891440368863">Chromium je preveril, da je potrdilo tega spletnega mesta izdal izdajatelj <ph name="ISSUER" />. Strežnik je poslal podatke o preglednosti potrdila, vendar so bili neveljavni.</translation>
 <translation id="2119636228670142020">O sistemu &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Odprtokodne licence za Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium OS ni mogel sinhronizirati podatkov, ker so podatki za prijavo v račun zastareli.</translation>
 <translation id="2558641060352364164">To spletno mesto uporablja vtičnik Chromium Frame, za katerega podpora kmalu ne bo več na voljo. Odstranite ga in nadgradite na sodoben brskalnik.</translation>
 <translation id="2572494885440352020">Pomoč za Chromium</translation>
+<translation id="2595977381794111014">Če želite še naprej dostopati do aplikacij, uporabite bližnjico <ph name="APPS_ICON_IMAGE" /> v zaznamkih v Chromiumu.</translation>
 <translation id="2602806952220118310">Chrome – Obvestila</translation>
 <translation id="2636877269779209383">Chromium potrebuje dostop do kamere, če želite, da temu spletnemu mestu omogoči dostop do nje.</translation>
 <translation id="2648074677641340862">Napaka v operacijskem sistemu med namestitvijo. Znova prenesite Chromium.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Za ta modul je znano, da je v sporu s Chromiumom.</translation>
 <translation id="4423735387467980091">Prilagajanje in nadziranje Chromiuma</translation>
 <translation id="4458285410772214805">Odjavite se in znova prijavite, da bodo te spremembe začele veljati.</translation>
-<translation id="4488676065623537541">Vaše podrobnosti za obračun so shranjene v Chromium.</translation>
 <translation id="4549794359424059447">Prihodnje različice Chromiuma ne bodo več podpirale sistema Windows XP ali Windows Vista.</translation>
 <translation id="4567424176335768812">Prijavljeni ste kot <ph name="USER_EMAIL_ADDRESS" />. Zdaj imate dostop do zaznamkov, zgodovine in drugih nastavitev v vseh napravah, v katerih ste prijavljeni.</translation>
 <translation id="457845228957001925">Pomembne informacije o vaših podatkih v Chromiumu</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb
index 87aceb9b..e3f42d3 100644
--- a/chrome/app/resources/chromium_strings_sr.xtb
+++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Затворите све Chromium прозоре (укључујући оне у режиму Windows 8) и покушајте поново.</translation>
 <translation id="1708666629004767631">Доступна је нова, безбеднија верзија Chromium-а.</translation>
 <translation id="1725059042853530269">Датотека <ph name="FILE_NAME" /> може негативно да утиче на доживљај прегледања, па ју је Chromium блокирао.</translation>
-<translation id="1745962126679160932">Chromium ће безбедно складиштити информације, па нећете морати поново да их уносите, али ћете и даље морати да верификујете безбедносни кôд картице за будућа плаћања.</translation>
 <translation id="1774152462503052664">Нека Chromium ради у позадини</translation>
 <translation id="1779356040007214683">Да бисмо учинили Chromium безбеднијим, онемогућили смо неке додатке које не наводи <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> и који су можда додати без вашег знања.</translation>
 <translation id="1808667845054772817">Поново инсталирај Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium не реагује. Желите ли да га одмах поново покренете?</translation>
 <translation id="1967743265616885482">Модул истог назива се већ сукобљавао са Chromium-ом.</translation>
 <translation id="2077129598763517140">Користи хардверско убрзање када је доступно</translation>
+<translation id="2103655854491303969">Покретач Chromium апликација се укида.</translation>
 <translation id="2117181891440368863">Chromium је верификовао да је <ph name="ISSUER" /> издао сертификат овог сајта. Сервер је послао информације о транспарентности сертификата, али оне су неважеће.</translation>
 <translation id="2119636228670142020">О &amp;Chromium ОС-у</translation>
 <translation id="2158734852934720349">Лиценце отвореног кода за Chromium ОС</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Chromium ОС не може да синхронизује податке зато што су подаци за пријављивање на налог застарели.</translation>
 <translation id="2558641060352364164">Овај сајт користи додатну компоненту Chromium Frame која ускоро више неће бити подржана. Деинсталирајте је и надоградите на модеран прегледач.</translation>
 <translation id="2572494885440352020">Chromium помагач</translation>
+<translation id="2595977381794111014">Користите пречицу за <ph name="APPS_ICON_IMAGE" /> у Chromium траци са обележивачима да бисте наставили да приступате апликацијама.</translation>
 <translation id="2602806952220118310">Chromium – Обавештења</translation>
 <translation id="2636877269779209383">Chromium захтева приступ камери да би је делио са овим сајтом.</translation>
 <translation id="2648074677641340862">Током инсталације је дошло до грешке у оперативном систему. Преузмите Chromium поново.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">За овај модул је познато да се сукобљава са Chromium-ом.</translation>
 <translation id="4423735387467980091">Прилагодите и контролишите Chromium</translation>
 <translation id="4458285410772214805">Одјавите се и поново се пријавите да би ова промена ступила на снагу.</translation>
-<translation id="4488676065623537541">Детаљи обрачуна су сачувани у Chromium-у.</translation>
 <translation id="4549794359424059447">Будуће верзије Chromium-а више неће подржавати Windows XP или Windows Vista-у.</translation>
 <translation id="4567424176335768812">Пријављени сте као <ph name="USER_EMAIL_ADDRESS" />. Сада можете да приступате обележивачима, историји и другим подешавањима на свим уређајима на којима сте пријављени.</translation>
 <translation id="457845228957001925">Важне информације у вези са Chromium подацима</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb
index a85cfb4..43923cb 100644
--- a/chrome/app/resources/chromium_strings_sv.xtb
+++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Stäng alla Chromium-fönster (inklusive i Windows 8-läge) och försök igen.</translation>
 <translation id="1708666629004767631">Det finns en ny, ännu säkrare version av Chromium.</translation>
 <translation id="1725059042853530269">Filen <ph name="FILE_NAME" /> kan skada din surfupplevelse och har därför blockerats av Chromium.</translation>
-<translation id="1745962126679160932">Chromium lagrar din information på ett säkert sätt så att du inte behöver skriva in den igen, men du måste dock bekräfta kortets säkerhetskod vid framtida betalningar.</translation>
 <translation id="1774152462503052664">Låt Chromium köras i bakgrunden</translation>
 <translation id="1779356040007214683">Vi har gjort Chromium säkrare genom att inaktivera vissa tillägg som inte finns i <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> och som kan ha lagts till utan att du vet om det.</translation>
 <translation id="1808667845054772817">Installera om Chromium</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium svarar inte. Vill du starta om?</translation>
 <translation id="1967743265616885482">En modul med samma namn har tidigare varit i konflikt med Chromium.</translation>
 <translation id="2077129598763517140">Använd maskinvaruacceleration när det är tillgängligt</translation>
+<translation id="2103655854491303969">Startprogrammet för appar i Chromium försvinner.</translation>
 <translation id="2117181891440368863">Chromium har verifierat att webbplatsens certifikat har utfärdats av <ph name="ISSUER" />. De certifikattransparensuppgifter som skickades från servern är ogiltiga.</translation>
 <translation id="2119636228670142020">Om &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Licenser för öppen källkod för Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Det gick inte att synkronisera data med Chromium eftersom inloggningsuppgifterna för kontot är inaktuella.</translation>
 <translation id="2558641060352364164">På den här webbplatsen används pluginprogrammet Chromium Frame som snart slutar stödjas. Avinstallera det och uppgradera till en modern webbläsare.</translation>
 <translation id="2572494885440352020">Hjälp för Chromium</translation>
+<translation id="2595977381794111014">Använd genvägen <ph name="APPS_ICON_IMAGE" /> i bokmärkesfältet i Chromium om du fortfarande vill ha tillgång till apparna.</translation>
 <translation id="2602806952220118310">Chromium – meddelanden</translation>
 <translation id="2636877269779209383">Chromium behöver tillgång till kameran för att kunna dela den på den här webbplatsen.</translation>
 <translation id="2648074677641340862">Ett operativsystemsfel inträffade under installationen. Ladda ned Chromium igen.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Den här modulen har tidigare varit i konflikt med Chromium.</translation>
 <translation id="4423735387467980091">Anpassa och kontrollera Chromium</translation>
 <translation id="4458285410772214805">Den här ändringen träder inte i kraft förrän du loggat ut och sedan loggar in igen.</translation>
-<translation id="4488676065623537541">Dina faktureringsuppgifter har sparats i Chromium.</translation>
 <translation id="4549794359424059447">Framtida versioner av Chromium kommer inte att ha stöd för Windows XP och Windows Vista.</translation>
 <translation id="4567424176335768812">Du är inloggad som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du komma åt dina bokmärken, historik och andra inställningar på alla enheter som du är inloggad på.</translation>
 <translation id="457845228957001925">Viktig information om uppgifter i Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb
index 090ce24..2ed043e 100644
--- a/chrome/app/resources/chromium_strings_sw.xtb
+++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -23,7 +23,6 @@
 <translation id="1699664235656412242">Tafadhali funga madirisha yote ya Chromium (pamoja na yaliyo kwenye modi ya Window 8) na ujaribu tena.</translation>
 <translation id="1708666629004767631">Kuna toleo jipya, na salama linalopatikana la Chromium.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> inaweza kudhuru hali yako ya kuvinjari, kwa hivyo Chromium imeizuia.</translation>
-<translation id="1745962126679160932">Chromium itahifadhi kwa usalama maelezo yako ili usihitaji kuyachapa tena, lakini bado utahitaji kudhibitisha msimbo wa usalama wa kadi yako kwa malipo ya siku za usoni.</translation>
 <translation id="1774152462503052664">Acha Chromium iendeshe katika mandharinyuma</translation>
 <translation id="1779356040007214683">Ili kufanya Chromium salama zaidi, tumezima baadhi ya viendelezi ambavyo havijaorodheshwa katika <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> na ambavyo huendwa viliongezwa pasipo ridhaa yako.</translation>
 <translation id="1808667845054772817">Sakinisha Chromium Upya</translation>
@@ -33,6 +32,7 @@
 <translation id="1929939181775079593">Chromium haiamiliki. Zindua upya sasa?</translation>
 <translation id="1967743265616885482">Kijenzi kilicho na jina sawa kimejulikana kuwa na ukinzani na Chromium.</translation>
 <translation id="2077129598763517140">Tumia uongezaji kasi wa maunzi wakati unapatikana</translation>
+<translation id="2103655854491303969">Kifungua Programu cha Chromium kinatoweka.</translation>
 <translation id="2117181891440368863">Chromium ilithibitisha kuwa <ph name="ISSUER" /> ndiye mtoa cheti cha tovuti hii. Seva ilitoa maelezo ya Cheti cha Uwazi, lakini hayakuwa sahihi.</translation>
 <translation id="2119636228670142020">Kuhusu Chromium OS</translation>
 <translation id="2158734852934720349">Leseni za programu huria kwenye Chromium OS</translation>
@@ -48,6 +48,7 @@
 <translation id="2535480412977113886">Mfumo wa Uendeshaji wa Chromium haukuweza kusawazisha data yako kwa sababu maelezo yako ya kuingia katika akaunti yanahitaji kusasishwa.</translation>
 <translation id="2558641060352364164">Tovuti hii inatumia programu-jalizi ya Fremu ya Chromium ambayo haitaweza kutumika hivi karibuni. Tafadhali iondoe na upate toleo jipya la kivinjari cha kisasa.</translation>
 <translation id="2572494885440352020">Kisaidizi cha Chromium</translation>
+<translation id="2595977381794111014">Tumia njia ya mkato ya <ph name="APPS_ICON_IMAGE" /> katika sehemu ya alamisho za Chromium ili uendelee kufikia programu zako.</translation>
 <translation id="2602806952220118310">Chromium - Arifa</translation>
 <translation id="2636877269779209383">Chromium inahitaji idhini ya kufikia kamera ili iishiriki na tovuti hii.</translation>
 <translation id="2648074677641340862">Hitilafu ya mfumo wa uendeshaji imetokea wakati wa usakinishaji. Tafadhali pakua Chromium tena.</translation>
@@ -102,7 +103,6 @@
 <translation id="4330585738697551178">Kijenzi hiki kinajulikana kwa kuwa na ukinzani na Chromium.</translation>
 <translation id="4423735387467980091">Dhibiti na ugeuze Chromium ikufae</translation>
 <translation id="4458285410772214805">Tafadhali toka na uingie tena ili mabadiliko haya yafanye kazi.</translation>
-<translation id="4488676065623537541">Maelezo yako ya utozwaji yamehifadhiwa katika Chromium.</translation>
 <translation id="4549794359424059447">Matoleo ya siku za usoni ya Chromium hayatatumia tena Windows XP au Windows Vista.</translation>
 <translation id="4567424176335768812">Umeingia katika akaunti kama <ph name="USER_EMAIL_ADDRESS" />. Sasa unaweza kupata alamisho, historia, na mipangilio yako mingine kwenye vifaa vyako vyote vilivyoingia katika akaunti.</translation>
 <translation id="457845228957001925">Maelezo muhimu kuhusu data yako ya Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb
index 0a59338..e2856b4 100644
--- a/chrome/app/resources/chromium_strings_ta.xtb
+++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">எல்லா Chromium சாளரங்களையும் (Windows 8 பயன்முறையில் உள்ளவை உள்பட) மூடி, மீண்டும் முயற்சிக்கவும்.</translation>
 <translation id="1708666629004767631">Chromium இன் புதிய, பாதுகாப்பான பதிப்பு கிடைக்கிறது.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> உங்கள் உலாவல் அனுபவத்தைப் பாதிக்கலாம், எனவே இதை Chromium தடுத்துள்ளது.</translation>
-<translation id="1745962126679160932">Chromium உங்கள் தகவலைப் பாதுகாப்பாகச் சேமிக்கும், எனவே நீங்கள் அதை மீண்டும் தட்டச்சு செய்ய வேண்டியதிருக்காது, ஆனாலும் எதிர்காலத்தில் பணம் செலுத்துவதற்கு உங்கள் கார்டின் பாதுகாப்புக் குறியீட்டை நீங்கள் சரிபார்க்க வேண்டியதிருக்கும்.</translation>
 <translation id="1774152462503052664">பின்புலத்தில் Chromium ஐ இயக்கு</translation>
 <translation id="1779356040007214683">Chromium ஐப் பாதுகாப்பானதாக்க <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> இல் பட்டியலிடப்படாத சில நீட்டிப்புகளை நாங்கள் முடக்கிவிட்டோம், மேலும் அவை உங்களுக்குத் தெரியாமல் சேர்க்கப்பட்டிருக்கலாம்.</translation>
 <translation id="1808667845054772817">Chromium ஐ மீண்டும்நிறுவு</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium பதிலளிக்கவில்லை. இப்போது மீண்டும் தொடங்கவா?</translation>
 <translation id="1967743265616885482">இதே பெயரைக் கொண்ட தொகுதிக்கூறு, Chromium உடன் முரண்பட்டிருப்பதாக அறியப்பட்டுள்ளது.</translation>
 <translation id="2077129598763517140">கிடைக்கும்போது வன்பொருளின் முடுக்கத்தைப் பயன்படுத்தவும்</translation>
+<translation id="2103655854491303969">Chromium பயன்பாட்டுத் துவக்கியை நிறுத்தவுள்ளோம்.</translation>
 <translation id="2117181891440368863">இந்த இணையதளத்தின் சான்றிதழ் <ph name="ISSUER" /> ஆல் வழங்கப்பட்டதா என Chromium சரிபார்த்தது. சான்றிதழின் வெளிப்படைத்தன்மைத் தகவலைச் சேவையகம் வழங்கியது, ஆனால் அது செல்லுபடியாகாததாக இருந்தது.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS அறிமுகம்</translation>
 <translation id="2158734852934720349">Chromium OS ஓப்பன் சோர்ஸ் உரிமங்கள்</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">உங்கள் கணக்கின் உள்நுழைவு விவரங்கள் காலாவதியாகிவிட்டதால், உங்கள் தரவை Chromium OS ஆல் ஒத்திசைக்க முடியவில்லை.</translation>
 <translation id="2558641060352364164">இந்தத் தளமானது Chromium சட்டகத்தின் செருகுநிரலைப் பயன்படுத்துகிறது, இந்த செருகுநிரலுக்கான ஆதரவு விரைவில் நிறுத்தப்படும். இதை நிறுவல் நீக்கம் செய்து, இதை நவீன உலாவிக்கு மேம்படுத்தவும்.</translation>
 <translation id="2572494885440352020">Chromium உதவி</translation>
+<translation id="2595977381794111014">பயன்பாடுகளைத் தொடர்ந்து அணுக, Chromium புக்மார்க்ஸ் பட்டியில் <ph name="APPS_ICON_IMAGE" /> குறுக்குவழியைப் பயன்படுத்தவும்.</translation>
 <translation id="2602806952220118310">Chromium - அறிவிப்புகள்</translation>
 <translation id="2636877269779209383">இந்தத் தளத்துடன் கேமரா அணுகலை Chromium பகிர்ந்து கொள்ள வேண்டும்.</translation>
 <translation id="2648074677641340862">நிறுவலின்போது இயக்க முறைமை பிழை ஏற்பட்டது. Chromium ஐ மீண்டும் பதிவிறக்கம் செய்க.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">இந்த தொகுதிக்கூறு Chromium உடன் முரண்படுவதாக அறியப்பட்டுள்ளது.</translation>
 <translation id="4423735387467980091">Chromium ஐ தனிப்பயனாக்கி கட்டுப்படுத்துக</translation>
 <translation id="4458285410772214805">இந்த மாற்றம் செயல்பாட்டிற்கு வர, வெளியேறி, மீண்டும் உள்நுழைக.</translation>
-<translation id="4488676065623537541">உங்களுடைய பில்லிங் விவரங்கள் Chromium இல் சேமிக்கப்பட்டுள்ளன.</translation>
 <translation id="4549794359424059447">Windows XP அல்லது Windows Vista ஆகியவற்றில் Chromium இன் எதிர்காலப் பதிப்புகள் இனி ஆதரிக்கப்படாது.</translation>
 <translation id="4567424176335768812">நீங்கள் <ph name="USER_EMAIL_ADDRESS" /> ஆக உள்நுழைந்துள்ளீர்கள். தற்போது உங்கள் புக்மார்க்குகள், வரலாறு மற்றும் பிற அமைப்புகளை நீங்கள் உள்நுழைந்துள்ள எல்லா சாதனங்களிலும் அணுகலாம்.</translation>
 <translation id="457845228957001925">உங்கள் Chromium தரவு தொடர்பான முக்கியமான தகவல்</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb
index 4475dc8d..b4305da3 100644
--- a/chrome/app/resources/chromium_strings_te.xtb
+++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">దయచేసి అన్ని Chromium విండోలను (Windows 8 మోడ్‌లో తెరిచి ఉన్న వాటితో సహా) మూసివేసి, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="1708666629004767631">Chromium యొక్క క్రొత్త సురక్షితమైన సంస్కరణ అందుబాటులో ఉంది.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> మీ బ్రౌజింగ్ అనుభవానికి హాని కలిగించవచ్చు, అందువలన Chromium దీన్ని బ్లాక్ చేసింది.</translation>
-<translation id="1745962126679160932">Chromium మీ సమాచారాన్ని సురక్షితంగా నిల్వ చేస్తుంది కాబట్టి మీరు దాన్ని మళ్లీ టైప్ చేయవలసిన అవసరం లేదు, కానీ మీరు ఇప్పటికీ భవిష్యత్తు చెల్లింపుల కోసం మీ కార్డ్ యొక్క భద్రతా కోడ్‌ను ధృవీకరించాలి.</translation>
 <translation id="1774152462503052664">నేపథ్యంలో Chromiumని అమలు చేయడానికి అనుమతించు</translation>
 <translation id="1779356040007214683">Chromiumను సురక్షితం చేయడానికి, మేము <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో జాబితా చేయబడని మరియు మీకు తెలియకుండానే జోడించబడిన కొన్ని పొడిగింపులను నిలిపివేసాము.</translation>
 <translation id="1808667845054772817">Chromiumను మళ్లీ ఇన్‌స్టాల్ చేయి</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ప్రతిస్పందించడం లేదు. ఇప్పుడు మళ్లీ ప్రారంభించాలా?</translation>
 <translation id="1967743265616885482">Chromiumతో వైరుధ్యం అయ్యే అదే పేరుతో మాడ్యూల్ ఉంది.</translation>
 <translation id="2077129598763517140">హార్డ్‌వేర్ త్వరితం అందుబాటులో ఉన్నప్పుడు ఉపయోగించు</translation>
+<translation id="2103655854491303969">Chromium అనువర్తన లాంచర్ త్వరలో నిలిపివేయబడుతుంది.</translation>
 <translation id="2117181891440368863">Chromium ఈ వెబ్‌సైట్ ప్రమాణపత్రాన్ని <ph name="ISSUER" /> జారీ చేసినట్లు ధృవీకరించింది. సర్వర్ ప్రమాణపత్ర పారదర్శకత సమాచారాన్ని అందించింది, కానీ అది చెల్లదు.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS గురించి</translation>
 <translation id="2158734852934720349">Chromium OS ఓపెన్ సోర్స్ లైసెన్స్‌లు</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chromium OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation>
 <translation id="2558641060352364164">ఈ సైట్ ఉపయోగిస్తున్న Chromium ఫ్రేమ్ ప్లగిన్‌కు త్వరలో మద్దతు ఉపసంహరించబడుతుంది. దయచేసి దీన్ని అన్ఇన్‌స్టాల్ చేసి, ఆధునిక బ్రౌజర్‌కు అప్‌గ్రేడ్ చేయండి.</translation>
 <translation id="2572494885440352020">Chromium సహాయకం</translation>
+<translation id="2595977381794111014">మీ అనువర్తనాలను ప్రాప్యత చేయడం కొనసాగించడానికి Chromium బుక్‌మార్క్‌ల బార్‌లో <ph name="APPS_ICON_IMAGE" /> సత్వరమార్గాన్ని ఉపయోగించండి.</translation>
 <translation id="2602806952220118310">Chromium - నోటిఫికేషన్‌లు</translation>
 <translation id="2636877269779209383">ఈ సైట్‌కు కెమెరా సామర్థ్యాన్ని భాగస్వామ్యం చేయడానికి Chromiumకి కెమెరా ప్రాప్యతను మంజూరు చేయడం అవసరం.</translation>
 <translation id="2648074677641340862">ఇన్‌స్టాలేషన్ సమయంలో ఆపరేటింగ్ సిస్టమ్ లోపం సంభవించింది. దయచేసి Chromiumని మళ్లీ డౌన్‌లోడ్ చేయండి.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">ఈ మాడ్యూల్ Chromiumతో వైరుధ్యంగా ఉంటుంది.</translation>
 <translation id="4423735387467980091">Chromiumను అనుకూలీకరించండి మరియు నియంత్రించండి</translation>
 <translation id="4458285410772214805">దయచేసి ఈ మార్పు ప్రభావవంతం కావడానికి సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయండి.</translation>
-<translation id="4488676065623537541">మీ బిల్లింగ్ వివరాలు Chromiumలో సేవ్ చేయబడ్డాయి.</translation>
 <translation id="4549794359424059447">భవిష్యత్తు Chromium సంస్కరణల్లో ఇకపై Windows XP లేదా Windows Vistaకి మద్దతు ఉండదు.</translation>
 <translation id="4567424176335768812">మీరు <ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు. ఇప్పుడు మీరు మీ సైన్ ఇన్ చేసిన అన్ని పరికరాల్లో మీ బుక్‌మార్క్‌లు, చరిత్ర మరియు ఇతర సెట్టింగ్‌లను ప్రాప్యత చేయవచ్చు.</translation>
 <translation id="457845228957001925">మీ Chromium డేటాకు సంబంధించిన ముఖ్యమైన సమాచారం</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb
index fd1563d..b9aaffb 100644
--- a/chrome/app/resources/chromium_strings_th.xtb
+++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">โปรดปิดหน้าต่าง Chromium ทั้งหมด (รวมทั้งในโหมด Windows 8 ด้วย) และลองอีกครั้ง</translation>
 <translation id="1708666629004767631">Chromium รุ่นใหม่ที่ปลอดภัยกว่าเดิมพร้อมให้ใช้งานแล้ว</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> อาจเป็นอันตรายต่อการท่องเว็บของคุณ Chromium จึงบล็อกไว้</translation>
-<translation id="1745962126679160932">Chromium จะเก็บข้อมูลของคุณอย่างปลอดภัยเพื่อให้คุณไม่จำเป็นต้องพิมพ์ข้อมูลนั้นอีกครั้ง แต่คุณจะยังคงต้องยืนยันรหัสรักษาความปลอดภัยของบัตรของคุณสำหรับการชำระเงินในอนาคต</translation>
 <translation id="1774152462503052664">ให้ Chromium ทำงานในพื้นหลัง</translation>
 <translation id="1779356040007214683">เพื่อให้ Chromium ปลอดภัยขึ้น เราได้ปิดส่วนขยายบางรายการที่ไม่ได้ระบุไว้ใน <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> และอาจถูกเพิ่มเข้ามาโดยที่คุณไม่รู้ตัว</translation>
 <translation id="1808667845054772817">ติดตั้ง Chromium ใหม่</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium ไม่ตอบสนอง เปิดใหม่เลยหรือไม่</translation>
 <translation id="1967743265616885482">เป็นที่ทราบกันว่าโมดูลที่มีชื่อเดียวกันนี้จะขัดแย้งกับ Chromium</translation>
 <translation id="2077129598763517140">ใช้การเร่งฮาร์ดแวร์เมื่อสามารถใช้ได้</translation>
+<translation id="2103655854491303969">เครื่องเรียกใช้งานแอป Chromium จะเลิกใช้งานในเร็วๆ นี้</translation>
 <translation id="2117181891440368863">Chromium ยืนยันว่า <ph name="ISSUER" /> ได้ออกใบรับรองของเว็บไซต์นี้ และเซิร์ฟเวอร์ให้ข้อมูลความโปร่งใสของใบรับรองแล้ว แต่ข้อมูลไม่ถูกต้อง</translation>
 <translation id="2119636228670142020">เกี่ยวกับ &amp;Chromium OS</translation>
 <translation id="2158734852934720349">ใบอนุญาตโอเพนซอร์สของ Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากรายละเอียดการลงชื่อเข้าใช้บัญชีของคุณล้าสมัย</translation>
 <translation id="2558641060352364164">เว็บไซต์นี้ใช้ปลั๊กอิน Chromium Frame ซึ่งจะยกเลิกการสนับสนุนในเร็วๆ นี้ โปรดถอนการติดตั้งและอัปเกรดเป็นเบราว์เซอร์ที่ทันสมัย</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">ใช้ทางลัด <ph name="APPS_ICON_IMAGE" /> ในแถบบุ๊กมาร์กของ Chromium เพื่อเข้าถึงแอปของคุณต่อไป</translation>
 <translation id="2602806952220118310">Chromium - การแจ้งเตือน</translation>
 <translation id="2636877269779209383">Chromium ต้องการเข้าถึงกล้องถ่ายรูปเพื่อแชร์กับเว็บไซต์นี้</translation>
 <translation id="2648074677641340862">เกิดข้อผิดพลาดของระบบปฏิบัติในระหว่างการติดตั้ง โปรดดาวน์โหลด Chromium อีกครั้ง</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">เป็นที่ทราบกันว่าโมดูลนี้ขัดแย้งกับ Chromium</translation>
 <translation id="4423735387467980091">กำหนดค่าและควบคุม Chromium</translation>
 <translation id="4458285410772214805">โปรดออกจากระบบ และลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงนี้มีผล</translation>
-<translation id="4488676065623537541">รายละเอียดการเรียกเก็บเงินของคุณได้รับการบันทึกไว้ใน Chromium แล้ว</translation>
 <translation id="4549794359424059447">Chromium เวอร์ชันต่อไปจะไม่รองรับ Windows XP หรือ Windows Vista อีกต่อไป</translation>
 <translation id="4567424176335768812">คุณกำลังลงชื่อเข้าใช้เป็น <ph name="USER_EMAIL_ADDRESS" /> ตอนนี้คุณสามารถเข้าถึงบุ๊กมาร์ก ประวัติการเข้าชม และการตั้งค่าอื่นๆ บนอุปกรณ์ทั้งหมดที่ลงชื่อเข้าใช้</translation>
 <translation id="457845228957001925">ข้อมูลสำคัญเกี่ยวกับข้อมูล Chromium ของคุณ</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index c9b82d4..254d0a2 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Lütfen, (Windows 8 modunda olanlar dahil) Chromium pencerelerinin tümünü kapatın ve tekrar deneyin.</translation>
 <translation id="1708666629004767631">Chromium'un kullanabileceğiniz yeni, daha güvenli bir sürümü var.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" />, göz atma deneyiminize olumsuz etki yapabileceği için Chromium tarafından engellendi.</translation>
-<translation id="1745962126679160932">Chromium, bilgilerinizi güvenli şekilde depoladığından bu bilgileri tekrar yazmak zorunda kalmazsınız, ancak yine de bundan sonraki ödemeler için kartınızın güvenlik kodunu doğrulamanız gerekir.</translation>
 <translation id="1774152462503052664">Chromium'un arka planda çalışmasına izin ver</translation>
 <translation id="1779356040007214683">Chromium'u daha güvenli bir hale getirmek için <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> altında listelenmeyen ve bilginiz dışında eklenmiş olabilecek bazı uzantıları devre dışı bıraktık.</translation>
 <translation id="1808667845054772817">Chromium'u yeniden yükle</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium yanıt vermiyor. Şimdi yeniden başlatılsın mı?</translation>
 <translation id="1967743265616885482">Aynı isme sahip bir modülün Chromium'la çakıştığı bilinmektedir.</translation>
 <translation id="2077129598763517140">Kullanılabilir olduğunda donanım ivmesini kullan</translation>
+<translation id="2103655854491303969">Chromium Uygulama Başlatıcı kullanımdan kaldırılıyor.</translation>
 <translation id="2117181891440368863">Chromium, bu web sitesi sertifikasının <ph name="ISSUER" /> tarafından yayınlandığını doğruladı. Sunucu Sertifika Şeffaflığı bilgilerini sağladı, ancak bu bilgiler geçersizdi.</translation>
 <translation id="2119636228670142020">&amp;Chromium OS hakkında</translation>
 <translation id="2158734852934720349">Chromium OS açık kaynak lisansları</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Hesap oturum açma ayrıntılarınız güncel olmadığından Chromium OS, verilerinizi senkronize edemedi.</translation>
 <translation id="2558641060352364164">Bu site, kısa bir süre sonra artık destek verilmeyecek olan Chromium Frame eklentisini kullanıyor. Lütfen bu eklentinin yüklemesini kaldırın ve modern bir tarayıcı sürümüne geçin.</translation>
 <translation id="2572494885440352020">Chromium Yardımcısı</translation>
+<translation id="2595977381794111014">Uygulamalarınıza erişmeye devam etmek için Chromium yer işaretlerindeki <ph name="APPS_ICON_IMAGE" /> kısayolunu kullanın.</translation>
 <translation id="2602806952220118310">Chromium - Bildirimler</translation>
 <translation id="2636877269779209383">Chromium'un, bu siteyle paylaşmak için kameraya erişmesi gerekiyor.</translation>
 <translation id="2648074677641340862">Yükleme sırasında bir işletim sistemi hatası oluştu. Lütfen Chromium'u yeniden indirin.</translation>
@@ -98,7 +99,6 @@
 <translation id="4330585738697551178">Bu modülün Chromium'la çakıştığı biliniyor.</translation>
 <translation id="4423735387467980091">Chromium'u özelleştirin ve kontrol edin</translation>
 <translation id="4458285410772214805">Bu değişikliğin geçerli olabilmesi için lütfen çıkış yapıp tekrar oturum açın.</translation>
-<translation id="4488676065623537541">Fatura ayrıntılarınız Chromium'a kaydedildi.</translation>
 <translation id="4549794359424059447">Chromium'un gelecek sürümleri artık Windows XP veya Windows Vista'yı desteklemeyecek.</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> olarak oturum açtınız. Şimdi oturum açtığınız tüm cihazlarda yer işaretlerinize, geçmişinize ve diğer ayarlarınıza erişebilirsiniz.</translation>
 <translation id="457845228957001925">Chromium verilerinizle ilgili önemli bilgiler</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb
index d8b0195a..695ef3e 100644
--- a/chrome/app/resources/chromium_strings_uk.xtb
+++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Закрийте всі вікна Chromium (зокрема вікна в режимі Windows 8) і повторіть спробу.</translation>
 <translation id="1708666629004767631">Доступна нова, надійніша версія Chromium.</translation>
 <translation id="1725059042853530269">Файл <ph name="FILE_NAME" /> може погіршити перегляд веб-сторінок, тому Chromium блокує його.</translation>
-<translation id="1745962126679160932">Chromium надійно зберігатиме вашу інформацію, тож вам не потрібно буде вводити її знову. Але під час майбутніх платежів ви все одно маєте підтверджувати код безпеки картки.</translation>
 <translation id="1774152462503052664">Дозволити Chromium працювати у фоновому режимі</translation>
 <translation id="1779356040007214683">Щоб зробити Chromium безпечнішим, ми вимкнути деякі розширення, джерелом яких не є <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />, і які, можливо, було додано без вашого відома.</translation>
 <translation id="1808667845054772817">Перевстановити Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium не відповідає. Перезапустити зараз?</translation>
 <translation id="1967743265616885482">Відомо, що модуль із такою назвою конфліктує з Chromium.</translation>
 <translation id="2077129598763517140">Використовувати апаратне прискорення, якщо доступно</translation>
+<translation id="2103655854491303969">Панель запуску додатків Chromium більше не доступна.</translation>
 <translation id="2117181891440368863">Chromium підтвердив, що компанія <ph name="ISSUER" /> видала сертифікат цього веб-сайту. Сервер надав інформацію про прозорість сертифіката, але вона недійсна.</translation>
 <translation id="2119636228670142020">Про &amp;ОС Chromium</translation>
 <translation id="2158734852934720349">Ліцензії ОС Chromium із відкритим кодом</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">ОС Chromium не вдалося синхронізувати ваші дані, оскільки дані для входу в обліковий запис застаріли.</translation>
 <translation id="2558641060352364164">Цей сайт використовує Chromium Frame. Ми припиняємо підтримку цього плагіна. Видаліть його та встановіть сучасний веб-переглядач.</translation>
 <translation id="2572494885440352020">Помічник Chromium</translation>
+<translation id="2595977381794111014">Відкривайте додатки за допомогою ярлика <ph name="APPS_ICON_IMAGE" /> на панелі закладок Chromium.</translation>
 <translation id="2602806952220118310">Chromium – сповіщення</translation>
 <translation id="2636877269779209383">Chromium потрібен доступ до камери, щоб використовувати її на цьому сайті.</translation>
 <translation id="2648074677641340862">Під час встановлення сталася помилка операційної системи. Завантажте Chromium ще раз.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Відомо, що цей модуль конфліктує з Chromium.</translation>
 <translation id="4423735387467980091">Налаштування та керування Chromium</translation>
 <translation id="4458285410772214805">Щоб зміна почала діяти, вийдіть і ввійдіть знову.</translation>
-<translation id="4488676065623537541">Ваші платіжні дані збережено в Chromium.</translation>
 <translation id="4549794359424059447">Наступні версії Chromium не підтримуватимуть Windows XP та Windows Vista.</translation>
 <translation id="4567424176335768812">Ви ввійшли як <ph name="USER_EMAIL_ADDRESS" />. Ваші закладки, історія й інші налаштування будуть доступні на всіх пристроях, на яких ви ввійдете в цей обліковий запис.</translation>
 <translation id="457845228957001925">Важлива інформація про ваші дані Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb
index c70c50f..c04d7a6 100644
--- a/chrome/app/resources/chromium_strings_vi.xtb
+++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">Hãy đóng tất cả cửa sổ Chromium (bao gồm cả những cửa sổ trong chế độ Windows 8) và thử lại.</translation>
 <translation id="1708666629004767631">Hiện đã có phiên bản Chromium mới an toàn hơn.</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> có thể gây hại cho trải nghiệm duyệt web của bạn, vì vậy Chromium đã chặn tệp đó.</translation>
-<translation id="1745962126679160932">Chromium sẽ lưu trữ an toàn thông tin của bạn nên bạn không cần phải nhập lại thông tin nhưng sẽ vẫn phải xác minh mã bảo mật cho thẻ của bạn để thanh toán trong tương lai.</translation>
 <translation id="1774152462503052664">Cho phép Chromium chạy dưới nền</translation>
 <translation id="1779356040007214683">Để làm cho Chromium an toàn hơn, chúng tôi đã vô hiệu hóa một số tiện ích không được liệt kê trong <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> và có thể đã được thêm mà bạn không biết.</translation>
 <translation id="1808667845054772817">Cài đặt lại Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium không phản hồi. Chạy lại ngay bây giờ?</translation>
 <translation id="1967743265616885482">Một mô-đun có cùng tên đã được xác định là xung đột với Chromium.</translation>
 <translation id="2077129598763517140">Sử dụng chế độ tăng tốc phần cứng khi khả dụng</translation>
+<translation id="2103655854491303969">Trình chạy ứng dụng Chromium sắp ngừng hoạt động.</translation>
 <translation id="2117181891440368863">Chromium đã xác minh rằng <ph name="ISSUER" /> cấp chứng chỉ của trang web này. Máy chủ cung cấp thông tin về Tính minh mạch của chứng chỉ nhưng thông tin này không hợp lệ.</translation>
 <translation id="2119636228670142020">Giới thiệu về &amp;Chromium OS</translation>
 <translation id="2158734852934720349">Giấy phép nguồn mở Chromium OS</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">Chromium OS không thể đồng bộ hóa dữ liệu của bạn vì chi tiết đăng nhập tài khoản của bạn đã lỗi thời.</translation>
 <translation id="2558641060352364164">Trang web này đang sử dụng plugin Chromium Frame sắp không còn được hỗ trợ. Vui lòng gỡ cài đặt plugin này và nâng cấp lên một trình duyệt hiện đại.</translation>
 <translation id="2572494885440352020">Trình trợ giúp của Chromium</translation>
+<translation id="2595977381794111014">Hãy sử dụng lối tắt <ph name="APPS_ICON_IMAGE" /> trong thanh dấu trang Chromium để tiếp tục truy cập các ứng dụng của bạn.</translation>
 <translation id="2602806952220118310">Chromium - Thông báo</translation>
 <translation id="2636877269779209383">Chromium cần quyền truy cập vào máy ảnh để chia sẻ máy ảnh với trang web này.</translation>
 <translation id="2648074677641340862">Đã xảy ra lỗi hệ điều hành khi cài đặt. Hãy tải xuống Chromium lại lần nữa.</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">Mô-đun này được xác định xung đột với Chromium.</translation>
 <translation id="4423735387467980091">Tùy chỉnh và điều khiển Chromium</translation>
 <translation id="4458285410772214805">Vui lòng đăng xuất và đăng nhập lại để thay đổi này có hiệu lực.</translation>
-<translation id="4488676065623537541">Chi tiết thanh toán của bạn đã được lưu trong Chromium.</translation>
 <translation id="4549794359424059447">Các phiên bản Chromium trong tương lai sẽ không hỗ trợ Windows XP hoặc Windows Vista nữa.</translation>
 <translation id="4567424176335768812">Bạn đã đăng nhập với tên <ph name="USER_EMAIL_ADDRESS" />. Bây giờ, bạn có thể truy cập dấu trang, lịch sử và các cài đặt khác trên tất cả những thiết bị đã đăng nhập của bạn.</translation>
 <translation id="457845228957001925">Thông tin quan trọng liên quan đến dữ liệu Chromium của bạn</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb
index 9f0dfe3..9f2cf0d4 100644
--- a/chrome/app/resources/chromium_strings_zh-CN.xtb
+++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">请关闭所有 Chromium 窗口(包括 Windows 8 模式下的窗口),然后重试。</translation>
 <translation id="1708666629004767631">Chromium 现已推出更安全的新版本。</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" />会影响您的浏览体验,因此Chromium已将其阻止。</translation>
-<translation id="1745962126679160932">Chromium 会妥善地存储您的信息,这样您日后就不必重新输入了。不过,您将来付款时仍需验证信用卡的安全码。</translation>
 <translation id="1774152462503052664">让 Chromium 在后台运行</translation>
 <translation id="1779356040007214683">为了提高 Chromium 的安全性,系统停用了一些未列在 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />中、可能是在您不知情的情况下添加的扩展程序。</translation>
 <translation id="1808667845054772817">重新安装Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium 未响应。要立即重新启动吗?</translation>
 <translation id="1967743265616885482">已发现一个同名的模块与 Chromium 存在冲突。</translation>
 <translation id="2077129598763517140">使用硬件加速模式(如果可用)</translation>
+<translation id="2103655854491303969">Chromium 应用启动器即将停用。</translation>
 <translation id="2117181891440368863">Chromium 已证实此网站的证书是由<ph name="ISSUER" />签发的。服务器提供了 Certificate Transparency 信息,但这些信息无效。</translation>
 <translation id="2119636228670142020">关于 Chromium 操作系统(&amp;C)</translation>
 <translation id="2158734852934720349">Chromium操作系统开放源代码许可</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">您的帐户登录详细信息已过期,Chromium操作系统无法同步您的数据。</translation>
 <translation id="2558641060352364164">此网站使用的 Chromium 内嵌框架插件即将不受支持。请卸载该插件,然后升级到新型浏览器。</translation>
 <translation id="2572494885440352020">Chromium 帮助程序</translation>
+<translation id="2595977381794111014">请使用 Chromium 书签栏中的 <ph name="APPS_ICON_IMAGE" /> 快捷方式来继续访问您的应用。</translation>
 <translation id="2602806952220118310">Chromium - 通知</translation>
 <translation id="2636877269779209383">Chromium 需要具有摄像头使用权限,才能批准此网站的分享请求。</translation>
 <translation id="2648074677641340862">安装过程中出现操作系统错误。请重新下载 Chromium。</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">已知此模块与 Chromium 存在冲突。</translation>
 <translation id="4423735387467980091">自定义及控制 Chromium</translation>
 <translation id="4458285410772214805">请先退出,然后重新登录,以便此更改生效。</translation>
-<translation id="4488676065623537541">您的帐单明细已保存在 Chromium 中。</translation>
 <translation id="4549794359424059447">Chromium 的后续版本将不再支持 Windows XP 或 Windows Vista。</translation>
 <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。现在您可在已登录的所有设备上访问您的书签、历史记录和其他设置。</translation>
 <translation id="457845228957001925">与您的 Chromium 数据相关的重要信息</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index b5eeb7d..6efd78ea 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -21,7 +21,6 @@
 <translation id="1699664235656412242">請將所有 Chromium 視窗 (包括在 Windows 8 模式中的視窗) 關閉,然後再試一次。</translation>
 <translation id="1708666629004767631">新版 Chromium 現已推出,安全更上一層樓。</translation>
 <translation id="1725059042853530269"><ph name="FILE_NAME" /> 可能會影響您的瀏覽品質,因此 Chromium 已經予以封鎖。</translation>
-<translation id="1745962126679160932">Chromium 會妥善保存您的資訊,讓您日後付款時不必再重新輸入。不過,您仍然必需驗證驗證信用卡安全碼。</translation>
 <translation id="1774152462503052664">讓 Chromium 在背景執行</translation>
 <translation id="1779356040007214683">為了讓 Chromium 的安全性更有保障,我們已將部分未列在 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> 中的擴充功能停用,它們可能在您不知情的情況下加入瀏覽器。</translation>
 <translation id="1808667845054772817">重新安裝 Chromium</translation>
@@ -31,6 +30,7 @@
 <translation id="1929939181775079593">Chromium 沒有回應,要立即重新啟動嗎?</translation>
 <translation id="1967743265616885482">已知相同名稱的模組會與 Chromium 衝突。</translation>
 <translation id="2077129598763517140">在可用時使用硬體加速</translation>
+<translation id="2103655854491303969">Chromium 應用程式啟動器即將停止服務。</translation>
 <translation id="2117181891440368863">Chromium 已驗證這個網站的憑證核發者是 <ph name="ISSUER" />。該伺服器提供了 Certificate Transparency 資訊,但該資訊無效。</translation>
 <translation id="2119636228670142020">關於 Chromium 作業系統(&amp;C)</translation>
 <translation id="2158734852934720349">Chromium 作業系統開放原始碼授權</translation>
@@ -46,6 +46,7 @@
 <translation id="2535480412977113886">您的帳戶登入詳細資料尚未更新,因此 Chromium 作業系統無法同步處理您的資料。</translation>
 <translation id="2558641060352364164">我們即將停止支援這個網站使用的 Chromium 內嵌框架外掛程式。請解除安裝該外掛程式,並升級至新型瀏覽器。</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2595977381794111014">您可以繼續使用 Chromium 書籤列中的 <ph name="APPS_ICON_IMAGE" /> 捷徑存取各項應用程式。</translation>
 <translation id="2602806952220118310">Chromium - 通知</translation>
 <translation id="2636877269779209383">Chromium 需要攝影機存取權,才能與這個網站分享。</translation>
 <translation id="2648074677641340862">安裝期間發生作業系統錯誤,請重新下載 Chromium。</translation>
@@ -100,7 +101,6 @@
 <translation id="4330585738697551178">已知這個模組與 Chromium 衝突。</translation>
 <translation id="4423735387467980091">自訂及控制 Chromium</translation>
 <translation id="4458285410772214805">請先登出,然後重新登入,這項變更才會生效。</translation>
-<translation id="4488676065623537541">Chromium 已儲存您的帳單詳細資訊。</translation>
 <translation id="4549794359424059447">日後發佈的 Chromium 版本將不再支援 Windows XP 或 Windows Vista。</translation>
 <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入,可以在所有登入的裝置上使用您的書籤、紀錄和其他設定。</translation>
 <translation id="457845228957001925">Chromium 資料的相關重要資訊</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index a50becb..e92fd95 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -159,7 +159,6 @@
     መገለጫዎን እንደገና ማዋቀር ይኖርብዎታል።<ph name="BR" />
     <ph name="BR" />
     ችግሩን እንድንፈታው እኛን ለማገዝ እባክዎ በሚቀጥለው ማያ ገጽ ላይ ግብረመልስ ይላኩ።</translation>
-<translation id="1216954813581739968">ትሩን ለዴስክቶፕ ማጋራት አንቃ።</translation>
 <translation id="121827551500866099">ሁሉንም የሚወርዱ አሳይ…</translation>
 <translation id="122082903575839559">የሰርቲፊኬት ፊርማ አልጎሪዝም</translation>
 <translation id="1221024147024329929">PKCS #1 MD2  ከRSA ምስጠራ ጋር</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">ከመጠይቅ ይልቅ %s ያለው ዩአርኤል</translation>
 <translation id="1546280085599573572">ይህ ቅጥያ የመነሻ አዝራሩን ጠቅ ሲያደርጉ የሚታየውን ገጽ ቀይሮታል።</translation>
 <translation id="1546795794523394272">እንኳን በደህና ወደ Chromebox ለስብሰባዎች መጡ!</translation>
+<translation id="1547572086206517271">ማደስ ያስፈልጋል</translation>
 <translation id="1547964879613821194">የካናዳ እንግሊዝኛ</translation>
 <translation id="1548132948283577726">የይለፍ ቃላትን በጭራሽ የማያስቀምጡ ድር ጣቢያዎች እዚህ ይታያሉ።</translation>
 <translation id="1549045574060481141">ማውረድ ያረጋግጡ</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">በቅርቡ የተጎበኙ ገጾች ከመስመር ውጭ ለመጠቀም እነሱን ማከማቸት ያንቁ። «ከመስመር ውጭ ያሉ ገጾች» እንዲነቃ ይፈልጋል።</translation>
 <translation id="1891668193654680795">የሶፍትዌር ሰሪዎችን ለመለየት ይህን የእውቅና ማረጋገጫ ይመኑ።</translation>
 <translation id="189210018541388520">ሙሉ ማያ ገጽ ክፈት</translation>
+<translation id="1892754076732315533">በገጽ ወደሚቀሰቀስ ሙሉ ማያ ገጽ ወይም የመዳፊት ጠቋሚ ቁልፍ ሁኔታዎች ሲገባ ያለ የቀለለ አዲስ የተጠቃሚ ተሞክሮ።</translation>
 <translation id="1893046049133338222">ARC፦ <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">የደመና አቅርቦት ፍሰት አልተሳካም</translation>
 <translation id="189358972401248634">ሌሎች ቋንቋዎች</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">ሁለገብ 2ኛ ደረጃ መሣሪያዎችዎን ይደርስባቸዋል</translation>
 <translation id="2881966438216424900">ለመጨረሻ ጊዜ የተደረሰው፦</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> ዳግም ይጀምርና ለጊዜው ዳግም ይዘጋጃል።</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">ተግባር መሪ</translation>
 <translation id="2887525882758501333">የፒ ዲ ኤፍ ሰነድ</translation>
 <translation id="2888807692577297075">ምንም ፋይሎች ከ&lt;b&gt;«<ph name="SEARCH_STRING" />»&lt;/b&gt; ጋር አይዛመዱም</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">አሁን አይደለም</translation>
 <translation id="3480892288821151001">መስኮት ግራ ላይ ትከል</translation>
 <translation id="3481915276125965083">በዚህ ገጽ ላይ የሚከተሉት ብቅ-ባዮች ታግደዋል፦</translation>
+<translation id="3482214069979148937">ከሙሉ ማያ ገጽ ለመውጣት |<ph name="ACCELERATOR" />|ን ተጭነው ይያዙ</translation>
 <translation id="3484869148456018791">አዲስ የእውቅና ማረጋገጫ ያግኙ</translation>
 <translation id="3487007233252413104">ስም-አልባ ተግባር</translation>
 <translation id="348771913750618459">iframe-ላይ የተመሠረቱ የመለያ መግቢያ ፍሰቶች</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">የሰርቲፊኬት ስም እገዳዎች</translation>
 <translation id="3595596368722241419">ባትሪ ሙሉ ነው</translation>
 <translation id="3600456501114769456">በእርስዎ መሣሪያ ላይ ያሉ የአካባቢያዊ ፋይሎች መዳረሻ በእርስዎ አስተዳዳሪ ተሰናክሏል።</translation>
-<translation id="3601395307734599350">ሁሉም የእርስዎ ቅጥያዎች እዚህ ናቸው</translation>
 <translation id="3603385196401704894">የካናዳ ፈረንሳይኛ</translation>
 <translation id="3603622770190368340">የአውታረ መረብ እውቅና ማረጋገጫ ያግኙ</translation>
 <translation id="3605780360466892872">የኮሌታ ቁልፍ</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">ሁለገብ ነባሪን ተጠቀም (አግኝ)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ትር}one{# ትሮች}other{# ትሮች}}</translation>
 <translation id="4154664944169082762">የጣት አሻራዎች</translation>
-<translation id="4157188838832721931">ተጠቃሚው በይለፍ ቃላት ገጹ ላይ የይለፍ ቃላትን ከመግለጹ በፊት የስርዓተ ክወናው ይለፍ ቃል እንዲሰጥ መጠየቅን አሰናክል።</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">የአጫውት ዝርዝሩን ክፈት</translation>
 <translation id="4159681666905192102">ይህ የህጻናት መለያ በ<ph name="CUSTODIAN_EMAIL" /> እና <ph name="SECOND_CUSTODIAN_EMAIL" /> ነው የሚቀናበረው።</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">ወደ ሌላ መለያ ይግቡ</translation>
 <translation id="4219614746733932747">ከነቃ፣ የይዘት ልኬት ከመሣሪያ ልኬት መጠን ጋር ለማመጣጠን Blink የማጉላት ስልቱን ይጠቀማል።</translation>
 <translation id="4220865787605972627">ማሳያ ባህሪይውን የሚደግፍ ከሆነ የማሳያውን ቀለም መደረዣውን አስችል።</translation>
-<translation id="4233506668751282421">ለዴስክቶፕ ማጋራት ኦዲዮን አንቃ</translation>
 <translation id="4235200303672858594">መላው የማያ ገጽ</translation>
 <translation id="4235813040357936597">ለ<ph name="PROFILE_NAME" /> መለያ አክል</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> በዚህ ቋንቋ ሊታይ አይችልም።</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">የመምሪያ ቅንብሮች በዚህ መሣሪያ ላይ መጫን አልተሳካም፦ <ph name="VALIDATION_ERROR" />።</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> የመዳፊት ጠቋሚዎን ሊያሰናክል ይፈልጋል።</translation>
 <translation id="424546999567421758">ከፍተኛ የዲስክ መጠቀም ተገኝቷል</translation>
-<translation id="4247072926966606568">ይህ ዕልባት በርቶ ሳለ የዴስክቶፕ ማጋራት መራጭ መስኮት አዲዮን ማጋራት ይችል እንደሆነ ተጠቃሚው እንዲመርጥ ያስችለዋል።</translation>
 <translation id="424726838611654458">ሁልጊዜ በAdobe Reader ክፈት</translation>
 <translation id="4249248555939881673">የአውታረ መረብ ግንኙነትን በመጠበቅ ላይ...</translation>
 <translation id="4249373718504745892">ይህ ገጽ ካሜራዎን እና ማይክሮፎንዎን እንዳይደርስባቸው ታግዷል።</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">አድራሻ አክል</translation>
 <translation id="4359408040881008151">በጥገኛ ቅጥያ(ዎች) ምክንያት ተጭኗል።</translation>
 <translation id="4361190688154226069">በእይታዎች ውስጥ በa ላይ የተመሠረተ ማነጣጠር</translation>
-<translation id="4363372140743955595">የይለፍ ቃል አቀናባሪ ዳግም ማረጋገጥ</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ወርዷል</translation>
 <translation id="4364830672918311045">ማሳወቂያዎችን አሳይ</translation>
 <translation id="4365673000813822030">ውይ፣ ማመሳሰል መስራት አቁሟል።</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">ስለራስ-ሙላ</translation>
 <translation id="4449996769074858870">ይህ ትር ድምጽ እያጫወተ ነው።</translation>
 <translation id="4450974146388585462">መርምር</translation>
+<translation id="4452426408005428395">ግድ የለም</translation>
 <translation id="4454939697743986778">ይህ የምስክር ወረቀት በስርዓት አስተዳዳሪዎ ነው የተጫነው።</translation>
 <translation id="445923051607553918">የWi-Fi አውታረ መረብ ይቀላቀሉ</translation>
 <translation id="4462159676511157176">የብጁ ስም አገልጋዮች</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">የአንድ ጊዜ ማግበር፦ Smart Lockን ለማንቃት የይለፍ ቃልዎን ይተይቡ። በSmart Lock አማካኝነት የእርስዎ ስልክ ይህን <ph name="DEVICE_TYPE" /> ያስከፍተዋል—ያለይለፍ ቃል። ይህን ባህሪ ለመቀየር ወይም ለማጥፋት የእርስዎን የ<ph name="DEVICE_TYPE" /> ቅንብሮች ይጎብኙ።</translation>
 <translation id="4595560905247879544">መተግበሪያዎች እና ቅጥያዎች በአስተዳዳሪው ብቻ ነው ሊቀየሩ የሚችሉት (<ph name="CUSTODIAN_NAME" />)።</translation>
 <translation id="4601242977939794209">EMF ለዋጭ</translation>
-<translation id="4601250583401186741">ከአንድ መቆጣጠሪያ ጋር ያጣምሩ</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> ሁልጊዜ ካሜራዎን እና ማይክሮፎንዎን እንዲደርስባቸው ይፍቀዱ</translation>
 <translation id="4605399136610325267">በይነመረብ አልተገናኘም</translation>
 <translation id="4608500690299898628">&amp;አግኝ…</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">ፍቀድ</translation>
 <translation id="5045550434625856497">ትክክል ያልሆነ የይለፍ ቃል</translation>
 <translation id="5048179823246820836">ኖርዲክ</translation>
+<translation id="5048294425697652159">ማሳያን ለመለካት Quirks Clientን አንቃ።</translation>
 <translation id="5053604404986157245">በዘፈቀደ የመነጨው የTPM ይለፍ ቃል አይገኝም። ይሄ ከአንድ Powerwash በኋላ የሚከሰት የተለመደ ነገር ነው።</translation>
 <translation id="5053803681436838483">አዲስ የመላኪያ አድራሻ...</translation>
 <translation id="5055309315264875868">የተመሳሰሉ የይለፍ ቃላትዎን መስመር ላይ ለማቀናበር በይለፍ ቃል አቀናባሪው ውስጥ አንድ አገናኝ አሳይ።</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">ማህደረ መረጃ ለማጫወት የእጅ ምልክት ማስፈለግ</translation>
 <translation id="5189060859917252173">የ«<ph name="CERTIFICATE_NAME" />» እውቅና ማረጋገጫ አንድ የእውቅና ማረጋገጫ ባለስልጣንን ይወክላል።</translation>
-<translation id="5196117515621749903">ችላ ባይ መሸጎጫን ዳግም ይጫኑ</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">በይነመረብ</translation>
 <translation id="5197680270886368025">ማመሳሰል ተጠናቅቋል።</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">ፎቶ ተጥሏል</translation>
 <translation id="5218183485292899140">የስዊዝ ፈረንሳይኛ</translation>
 <translation id="5218766986344577658">ግልፅ የማድረግ ብቅ ባይን አንቃ</translation>
+<translation id="5220992698394817380">የመርጦ-መግቢያ አይኤምኢ ምናሌን አንቃ</translation>
 <translation id="5222676887888702881">ዘግተህ ውጣ</translation>
 <translation id="5225324770654022472">የመተግበሪያዎች አቋራጮችን አሳይ</translation>
 <translation id="5227536357203429560">የግል አውታረ መረብ ያክሉ...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">ቀላል/ባህላዊ ቻይንኛ ሁነታን ይቀያይሩ</translation>
 <translation id="5271549068863921519">የይለፍ ቃሉን አስቀምጥ</translation>
 <translation id="5273628206174272911">ለአግድሞሽ ማሸብለል ምላሽነት የሙከራ ታሪክ አሰሳን ያነቃል።</translation>
+<translation id="5275194674756975076">እሺ፣ አድስ</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> ከዚህ ጣቢያ</translation>
 <translation id="5275973617553375938">ከGoogle Drive መልሰው የተገኙ ፋይሎች</translation>
 <translation id="527605719918376753">ትር ላይ ድምጸ-ከል አድርግ</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">የእርስዎ ስልክ ተቆልፏል። ለመግባት ያስከፍቱት።</translation>
 <translation id="5369927996833026114">የChrome መተግበሪያ አስጀማሪውን ያግኙ</translation>
 <translation id="5370819323174483825">&amp;ዳግም ጫን</translation>
+<translation id="5372066618989754822">በቋንቋ ቅንብሮች ገጽ ላይ አዲሱን የአይኤምኢ ምናሌ መዳረሻ ያንቁ።</translation>
 <translation id="5372529912055771682">የተሰጠው የምዝገባ ሁነታ በዚህ የስርዓተ ክወና ስሪት አይደገፍም። አዲሱን ስሪት እያሂዱ መሆንዎን ያረጋግጡና እንደገና ይሞክሩ።</translation>
 <translation id="5374359983950678924">ስዕል ይቀይሩ</translation>
 <translation id="5376169624176189338">ወደ ኋላ ለመመለስ ጠቅ ያድርጉ፣ ታሪክ ለማየት ይያዙ</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">ስም፦</translation>
 <translation id="5627086634964711283">እንዲሁም የመነሻ አዝራሩን ጠቅ ሲያደርጉት ምን ገጽ እንደሚታይ ይቆጣጠራል።</translation>
 <translation id="5627259319513858869">ገና በግንባታ ላይ ያሉ የሙከራ ሸራ ባህሪያትን ማንቃት ያስችላል።</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">የቁስ ንድፍ  በአሳሹ ከፍተኛ chrome ውስጥ</translation>
 <translation id="5633060877636360447">ይሄ ቢያንስ <ph name="TOTAL_COUNT" /> ንጥሎችን ለዘለዓለም ከዚህ መሣሪያ ይሰርዛል፣ ነገር ግን ከሌሎች መሣሪያዎች የተሰመሩ ንጥሎችን አያጸዳም።</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" />ን ለመጠቀም መጀመሪያ <ph name="LINK_START" />የአውታረ መረቡ መግቢያ ገጹን መጎብኘት<ph name="LINK_END" /> አለብዎት፣ ይህም በጥቂት ሰከንዶች ውስጥ በራስ-ሰር ይከፈታል። ካልሆነ አውታረ መረቡ ስራ ላይ ሊውል አይችልም።</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">ነገርየውን ከቁልፍ ሰሌዳ ትኩረት ጋር አድምቅ</translation>
 <translation id="5678955352098267522">የእርስዎን ውሂብ በ<ph name="WEBSITE_1" /> ላይ ያንብቡ</translation>
 <translation id="5680928275846978395">በአጠቃላይ እይታ ሁነታ ላይ ጽሑፍ ማጣራት</translation>
+<translation id="5683818630978268777">የሙከራ ቁልፍ ሰሌዳ መቆለፊያ በይነገጽ።</translation>
 <translation id="5684661240348539843">የእሴት ለይቶ ማወቂያ</translation>
 <translation id="569068482611873351">አስመጣ...</translation>
 <translation id="56907980372820799">ውሂብ አገናኝ</translation>
@@ -3691,7 +3694,6 @@
 <translation id="6420676428473580225">ወደ ዴስክቶፕ አክል</translation>
 <translation id="6422329785618833949">ፎቶ ተገልጧል</translation>
 <translation id="642282551015776456">ይህ ስም የፋይል ወይም አቃፊ ስም ሆኖ ሊያገለግል አይችልም።</translation>
-<translation id="642322423610046417">የማይፈልጓቸውን ቅጥያዎች ለማስወገድ የአውድ (ቀኝ ጠቅ ማድረግ) ምናሌን ይጠቀሙ።</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader እንደ ነባሪው የፒ ዲ ኤፍ መመልከቻዎ ይጠቀሙበት?</translation>
 <translation id="6425092077175753609">ቁሳዊ</translation>
@@ -3762,6 +3764,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">ትቶ ለመውጣት ተጠቃሚዎች Escን እንዲጫኑ የሚጠይቅ የቁልፍ ሰሌዳ መቆለፊያ ሁነታ ያለው የሙከራ ሙሉ ማያ ገጽ።</translation>
 <translation id="6527303717912515753">አጋራ</translation>
 <translation id="6528546217685656218">የዚህ ደንበኛ የዕውቅና ማረጋገጫ የሆነው የግል ቁልፍ ይጎድላል ወይም አይሰራም።</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" />ን በማመሳሰል ላይ...</translation>
@@ -3941,6 +3944,7 @@
 <translation id="6825883775269213504">ራሽኛ</translation>
 <translation id="6827236167376090743">ላሞቹ ቤት እስኪገቡ ድረስ ይህ ቪዲዮ መጫወቱን ይቀጥላል።</translation>
 <translation id="6828153365543658583">መግባት በሚከተሉት ተጠቃሚዎች ገድብ፦</translation>
+<translation id="6828860976882136098">ለሁሉም ተጠቃሚዎች የራስ-ሰር ዝማኔዎችን ማዋቀር አልተሳካም (የቅድመ በረራ አፈጻጸም ስህተት፦ <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">በእርስዎ <ph name="DEVICE_TYPE" /> እገዛ ያግኙ።</translation>
 <translation id="6829270497922309893">በእርስዎ ድርጅት ውስጥ ይመዝገቡ</translation>
 <translation id="6830590476636787791">በመጀመሪያ ሂደት አጋዥ ስልጠና ላይ በእነማ የቀረቡ ሽግግሮች</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">በትር ውስጥ ክፈት</translation>
 <translation id="6862635236584086457">በዚህ አቃፊ ውስጥ የተቀመጡ ፋይሎች ሁሉ በራስ-ሰር መስመር ላይ መጠባበቂያ ይቀመጥላቸዋል</translation>
 <translation id="6865313869410766144">የራስ-ሙላ ቅጽ ውሂብ</translation>
-<translation id="6865319096921627602">በAndroid ላይ የተዋሃደ የሚዲያ መተላለፊያን ያነቃል።</translation>
 <translation id="6867678160199975333">ወደ <ph name="NEW_PROFILE_NAME" /> ቀይር</translation>
 <translation id="6869402422344886127">ምልክት የተደረገበት አመልካች ሳጥን</translation>
 <translation id="6870130893560916279">የዩክሬይንኛ ቁልፍ ሰሌዳ</translation>
@@ -4003,7 +4006,7 @@
 <translation id="6934265752871836553">Chrome ይዘትን በበለጠ ፍጥነት እንዲስል የበጣም ቅርብ ጊዜ ኮዱን ይጠቀሙ። ከዚህ ዱካ
         በስተጀርባ ያሉ ለውጦች ብዙ ይዘቶችን የመስበር ዕድላቸው ከፍተኛ ነው።</translation>
 <translation id="6935367737854035550">በአሳሹ ከፍተኛ chrome ውስጥ የቁስ ንድፍ አባሎችን ያዘጋጃል።</translation>
-<translation id="6935867720248834680">የጂኤምኤስ አገልግሎቶች አይገኙም</translation>
+<translation id="6935867720248834680">የጂኤምኤስ አገልግሎቶች አይገኙምj</translation>
 <translation id="6937152069980083337">Google ጃፓንኛ ግቤት (ለአሜሪካ ቁልፍ ሰሌዳ)</translation>
 <translation id="693807610556624488">የመጻፍ ክወናው ከየሚከተለው መገለጫ ባሕሪ ከሚፈቀደው ከፍተኛ ርዝመት ይበልጣል፦ «<ph name="DEVICE_NAME" />»።</translation>
 <translation id="6939777852457331078">የአሜሪካ ዎርክማን ቁልፍ ሰሌዳ</translation>
@@ -4059,6 +4062,7 @@
 <translation id="7006017748900345484">የWebRTC H.264 ሶፍትዌር ቪዲዮ መሰወሪያ/ስውር መግለጫ</translation>
 <translation id="7006634003215061422">የታች ኅዳግ</translation>
 <translation id="7006844981395428048">$1 ድምጽ</translation>
+<translation id="7008270479623533562">ይህን ቅጥያ ማሄድ እንዲቻል ገጹን ማደስ አለብዎት። በቅጥያ አዶው ላይ በቀኝ-ጠቅ በማድረግ በዚህ ጣቢያ ላይ ይህን ቅጥያ በራስ-ስር ማስሄድ ይችላሉ።</translation>
 <translation id="7009045250432250765">በአንዲት-ጠቅታ ራስ-ሙላ</translation>
 <translation id="7010160495478792664">ሲገኝ በሃርድዌር የተጣደፈ የቪዲዮ ኮድ መፍታት።</translation>
 <translation id="7010400591230614821">ቆፍጠን ያለ የትር ማስለቀቂያ ስትራቴጂ</translation>
@@ -4225,7 +4229,6 @@
 <translation id="7256710573727326513">በትር ውስጥ ክፈት</translation>
 <translation id="7257173066616499747">የWi-Fi አውታረ መረቦች</translation>
 <translation id="7257666756905341374">የሚቀዱትን እና የሚለጥፉትን ውሂብ ያነብባል</translation>
-<translation id="7260002739296185724">በOS X &gt;= 10.7 ላይ ቪዲዮን ለመቅረጽ እና የቪዲዮ መሣሪያ መከታተልን ለማንቃት የAVFoundation መጠቀምን ያንቁ። አለበለዚያ QTKit ስራ ላይ ይውላል።</translation>
 <translation id="7260504762447901703">መዳረሻን ሻር</translation>
 <translation id="7262004276116528033">ይህ የመለያ መግቢያ አገልግሎት በ<ph name="SAML_DOMAIN" /> የሚስተናገድ ነው</translation>
 <translation id="7262221505565121">በማጠሪያ ውስጥ ያልገባ ተሰኪ መዳረሻ ልዩ ሁኔታዎች</translation>
@@ -4263,7 +4266,6 @@
 <translation id="7314278895724341067">ከመስመር ውጭ ያሉ የNTP ገጾችን ያንቁ</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (የአሁኑ)</translation>
 <translation id="7321545336522791733">አገልጋይ አይደረስበትም</translation>
-<translation id="7324841169865301118">ተጠቃሚ ለዴስክቶፕ ማጋራት አንድ ትር እንዲመረጥ ያስችለዋል።</translation>
 <translation id="7325437708553334317">ባለከፍተኛ ንፅፅር ቅጥያ</translation>
 <translation id="7326565110843845436">የመዳሰሻ ሰሌዳ ሦስት-ጣት ጠቅታ</translation>
 <translation id="73289266812733869">አልተመረጠም</translation>
@@ -5020,7 +5022,6 @@
 <translation id="8426519927982004547">ኤችቲቲፒ/ኤስኤስኤል</translation>
 <translation id="8427933533533814946">ፎቶ በ</translation>
 <translation id="8428213095426709021">ቅንብሮች</translation>
-<translation id="8432590265309978927">በከፍተኛ ደረጃ የሙከራ የሆነ የጣቢያ ሸገር iframes ምስል በተለያዩ ሂደቶች ውስጥ የመስራት ድጋፍ።</translation>
 <translation id="8432745813735585631">የአሜሪካ ኮልማክ ቁልፍ ሰሌዳ</translation>
 <translation id="8434177709403049435">&amp;መቀየር</translation>
 <translation id="8434480141477525001">NaCl ስህተት ማረሚያ ወደብ</translation>
@@ -5217,7 +5218,6 @@
 <translation id="8713979477561846077">በሚነካ ቁልፍ ሰሌዳ ላይ ሲተየብ የሚነካ ቁልፍ ሰሌዳ ራስ-ሰር ማረሚያን ለአሜሪካ ቁልፍ ሰሌዳ ያንቁ።</translation>
 <translation id="871476437400413057">Google ያስቀመጣቸው የይለፍ ቃሎች</translation>
 <translation id="8714838604780058252">የጀርባ ግራፊክስ</translation>
-<translation id="8716065142695381595">በAndroid ላይ የተዋሃደ (Android እና ዴስክቶፕ) የሚዲያ መተላለፊያን ያነቃል።</translation>
 <translation id="8722421161699219904">የአሜሪካ አለምአቀፍ ቁልፍ ሰሌዳ</translation>
 <translation id="872451400847464257">የፍለጋ ፕሮግራም አርትዕ</translation>
 <translation id="8724859055372736596">&amp;በአቃፊ ውስጥ አሳይ</translation>
@@ -5237,6 +5237,7 @@
 <translation id="8737685506611670901"><ph name="PROTOCOL" /> አገናኞች በ<ph name="REPLACED_HANDLER_TITLE" /> ፈንታ ክፈት</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">የንክኪ ማስተካከል ማለት ንክኪዎች ከአይጤ ጋር ሲወዳደሩ ላላቸው ደካማ ጥራት ለማካካስ የሚደረግ የንክኪ ምልክት ማጣራት ሂደትን አስተካክል።</translation>
+<translation id="8743712320294854924">የተዘረጉት የግቤት አማራጮችን በመደርደሪያው ላይ አሳይ።</translation>
 <translation id="874420130893181774">ተለምዷዊ የፒንዪን ግቤት ስልት</translation>
 <translation id="8744525654891896746">ክትትል ለሚደረግለት ይህ ተጠቃሚ አንድ አምሳያ ይምረጡ</translation>
 <translation id="8744641000906923997">ሮማጂ</translation>
@@ -5306,6 +5307,7 @@
 <translation id="8847988622838149491">ዩ ኤስ ቢ</translation>
 <translation id="8848709220963126773">የShift ቁልፍ ሁነታ ቅያሬ</translation>
 <translation id="8852742364582744935">የሚከተሉት መተግበሪያዎች እና ቅጥያዎች ታክለዋል፦</translation>
+<translation id="8853611566624224021">የicc ማሳያ ፋይሎችን ለማሳያ ቀለም መለካት ከQuirks Server ሰርስሮ ማውጣትን አንቃ።</translation>
 <translation id="885381502874625531">የቤላሩስ ቁልፍ ሰሌዳ</translation>
 <translation id="8856844195561710094">የብሉቱዝ መሣሪያን ማግኘት ማቆም አልተቻለም።</translation>
 <translation id="885701979325669005">ማከማቻ</translation>
@@ -5355,7 +5357,6 @@
 <translation id="8925458182817574960">&amp;ቅንብሮች</translation>
 <translation id="8926389886865778422">ደግመው አይጠይቁ</translation>
 <translation id="8926518602592448999">የገንቢ ሁኔታ ቅጥያዎችን ያሰናክሉ</translation>
-<translation id="8929454297483336498">ከQTKit ይልቅ የMac OS X AVFoundation ኤፒአይዎችን መጠቀም</translation>
 <translation id="8931394284949551895">አዲስ መሣሪያዎች</translation>
 <translation id="8932730422557198035">Android Midi ኤፒአይን ይጠቀሙ</translation>
 <translation id="8933960630081805351">በፈላጊ ውስጥ &amp;አሳይ</translation>
@@ -5369,6 +5370,7 @@
 <translation id="894360074127026135">የNetscape አለምአቀፍ አወቃቀር</translation>
 <translation id="8944779739948852228">ማተሚያ ጥበቃ ተደርጎለታል</translation>
 <translation id="8946359700442089734">የማረም ባህሪያት በዚህ የ<ph name="IDS_SHORT_PRODUCT_NAME" /> መሣሪያ ላይ ሙሉ ለሙሉ አልነቁም።</translation>
+<translation id="8946784827990177241">የWebUSB ድጋፍን አንቃ።</translation>
 <translation id="89515141420106838">ለአታሚ አንጻፊዎች የChrome ድር መደብር የሥነ ጥበብ ማዕከልን ያነቃል። መተግበሪያው ከተወሰነ የዩኤስቢ መታወቂያ ጋር ወደ የዩኤስቢ አታሚ ማተምን የሚደግፉ ቅጥያዎችን በChrome ድር መደብር ውስጥ ይፈልጋል።</translation>
 <translation id="895347679606913382">በመጀመር ላይ…</translation>
 <translation id="8954952943849489823">መውሰድ አልተሳካም፣ ያልተጠበቀ ስህተት፦ $1</translation>
@@ -5513,6 +5515,7 @@
 <translation id="9154194610265714752">የተዘመነ</translation>
 <translation id="9154418932169119429">ይህ ምስል ከመስመር ውጪ አይገኝም።</translation>
 <translation id="91568222606626347">አቋራጭ ፍጠር...</translation>
+<translation id="9157697743260533322">ለሁሉም ተጠቃሚዎች ራስ-ሰር ዝማኔዎችን ማዋቀር አልተሳካም (የቅድመ በረራ ማስጀመሪያ ስህተት፦ <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">ውይ!  በማረጋገጥ ጊዜ ላይ አንድ የአውታረ መረብ ግንኙነት ችግር ተከስቷል። እባክዎ የአውታረ መረብዎን ግንኙነት ያረጋግጡና እንደገና ይሞክሩ።</translation>
 <translation id="9159562891634783594">ያልተመዘገቡ የደመና አታሚዎችን ከህትመት ቅድመ እይታ ውስጥ መመዝገብን ያንቁ።</translation>
 <translation id="9166510596677678112">ለዚህ ሰው ኢሜይል ይላኩ</translation>
@@ -5524,7 +5527,6 @@
 <translation id="9170848237812810038">&amp;ቀልብስ</translation>
 <translation id="9170884462774788842">በኮምፒውተርዎ ላይ ያለ ሌላ ፕሮግራም Chrome የሚሰራበት መንገድ ሊቀይር የሚችል አንድ ገጽታ አክሏል።</translation>
 <translation id="9177499212658576372">በአሁኑ ጊዜ ከ<ph name="NETWORK_TYPE" /> አውታረ መረቡ ጋር ተገናኝቷል።</translation>
-<translation id="9177556055091995297">ክሬዲት ካርዶችን ያቀናብሩ</translation>
 <translation id="917858577839511832">ከDTLS 1.2 ድርድር ለWebRTC</translation>
 <translation id="917861274483335838">ተሰኪ እገዳን አቀናብር…</translation>
 <translation id="9179348476548754105">የይለፍ ቃል አስተዳዳሪው እንዴት የስምረት ምስክርነቱ ለግብይታዊ reauth ገጾች ብቻ ራስ-ሙላን እንደሚያቀናብር።</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index ac36fc1..86ac2d2a 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -159,7 +159,6 @@
     سيلزمك إعداد ملفك الشخصي مرةً أخرى.<ph name="BR" />
     <ph name="BR" />
     في الشاشة التالية، يُرجى إرسال تعليقات لمساعدتنا في حل هذه المشكلة.</translation>
-<translation id="1216954813581739968">تمكين علامة التبويب لمشاركة سطح المكتب.</translation>
 <translation id="121827551500866099">عرض جميع التنزيلات...</translation>
 <translation id="122082903575839559">خوارزمية التوقيع على الشهادة</translation>
 <translation id="1221024147024329929">‏PKCS #1 MD2 مع تشفير RSA</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">‏عنوان URL الذي يحتوي على % بدلاً من طلب البحث</translation>
 <translation id="1546280085599573572">غيّرت هذه الإضافة الصفحة التي تظهر عند النقر على زر الصفحة الرئيسية.</translation>
 <translation id="1546795794523394272">‏مرحبًا بكم في Chromebox للاجتماعات</translation>
+<translation id="1547572086206517271">يلزم التحديث</translation>
 <translation id="1547964879613821194">الإنجليزية الكندية</translation>
 <translation id="1548132948283577726">تظهر هنا المواقع التي لا يتم حفظ كلمات المرور لها.</translation>
 <translation id="1549045574060481141">تأكيد التنزيل</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">يُمكن من تخزين الصفحات التي تمت زيارتها مؤخرًا محليًا للاستخدام في وضع عدم الاتصال. وهذا يتطلب تمكين الصفحات في وضع عدم الاتصال.</translation>
 <translation id="1891668193654680795">الوثوق بهذه الشهادة لتحديد هوية مصممي البرامج.</translation>
 <translation id="189210018541388520">فتح في وضع ملء الشاشة</translation>
+<translation id="1892754076732315533">تجربة المستخدم المبسطة الجديدة عند إدخال حالات قفل ملء الشاشة أو مؤشر الماوس المُشغّلة في الصفحة.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">فشل تدفق توفير السحاب</translation>
 <translation id="189358972401248634">لغات أخرى</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">الوصول إلى أجهزة العامل الثاني العالمي</translation>
 <translation id="2881966438216424900">تاريخ آخر دخول:</translation>
 <translation id="2882943222317434580">ستتم إعادة تشغيل <ph name="IDS_SHORT_PRODUCT_NAME" /> وإعادة تعيينه بعد وهلة.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">إدارة المهام</translation>
 <translation id="2887525882758501333">‏مستند PDF</translation>
 <translation id="2888807692577297075">‏لا توجد عناصر متطابقة مع  &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1749,6 +1751,7 @@
 <translation id="3479552764303398839">ليس الآن</translation>
 <translation id="3480892288821151001">إرساء النافذة لليسار</translation>
 <translation id="3481915276125965083">تم منع عرض النوافذ المنبثقة التالية في هذه الصفحة:</translation>
+<translation id="3482214069979148937">اضغط مع الاستمرار على |<ph name="ACCELERATOR" />| للخروج من وضع ملء الشاشة</translation>
 <translation id="3484869148456018791">الحصول على شهادة جديدة</translation>
 <translation id="3487007233252413104">وظيفة مجهولة</translation>
 <translation id="348771913750618459">‏تدفقات تسجيل الدخول المستندة إلى الأطر المدمجة (iframe)</translation>
@@ -1843,7 +1846,6 @@
 <translation id="3593965109698325041">قيود اسم الشهادة</translation>
 <translation id="3595596368722241419">البطارية ممتلئة</translation>
 <translation id="3600456501114769456">عطَّل المشرف إمكانية الدخول إلى الملفات المحلية على جهازك.</translation>
-<translation id="3601395307734599350">جميع الإضافات مبينة هنا الآن.</translation>
 <translation id="3603385196401704894">الفرنسية الكندية</translation>
 <translation id="3603622770190368340">الحصول على شهادة الشبكة</translation>
 <translation id="3605780360466892872">الزر لأسفل</translation>
@@ -2223,7 +2225,6 @@
 <translation id="4151403195736952345">استخدام الإعدادات العمومية الافتراضية (كشف)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{علامة تبويب واحدة}zero{# من علامات التبويب}two{علامتا تبويب (#)}few{# علامات تبويب}many{# علامة تبويب}other{# من علامات التبويب}}</translation>
 <translation id="4154664944169082762">بصمات الأصابع</translation>
-<translation id="4157188838832721931">تعطيل مطالبة المستخدم بإدخال كلمة مرور نظام التشغيل قبل الكشف عن كلمات المرور في صفحة كلمات المرور.</translation>
 <translation id="4157869833395312646">‏تشفير عن طريق بوابة خادم Microsoft</translation>
 <translation id="4158739975813877944">فتح قائمة التشغيل</translation>
 <translation id="4159681666905192102">هذا هو حساب للأطفال يتم إدارته من قبل <ph name="CUSTODIAN_EMAIL" /> و<ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2267,7 +2268,6 @@
 <translation id="4218259925454408822">تسجيل الدخول لحساب آخر</translation>
 <translation id="4219614746733932747">‏عند التمكين، يستخدم Blink آلية التكبير/التصغير لضبط قياس المحتوى لعامل مقياس الجهاز.</translation>
 <translation id="4220865787605972627">السماح بمعايرة لون الشاشة إذا كانت الشاشة تدعم الميزة.</translation>
-<translation id="4233506668751282421">تمكين الصوت لمشاركة سطح المكتب</translation>
 <translation id="4235200303672858594">الشاشة بالكامل</translation>
 <translation id="4235813040357936597">إضافة حساب لـ <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">لا يمكن عرض <ph name="PRODUCT_NAME" /> بهذه اللغة</translation>
@@ -2275,7 +2275,6 @@
 <translation id="4242577469625748426">أخفق تثبيت إعدادات السياسة على الجهاز: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">يريد <ph name="FULLSCREEN_ORIGIN" /> تعطيل مؤشر الماوس.</translation>
 <translation id="424546999567421758">تم اكتشاف استخدام مرتفع للقرص</translation>
-<translation id="4247072926966606568">من خلال تشغيل هذه العلامة، ستسمح نافذة منتقي مشاركة سطح المكتب للمستخدم باختيار مشاركة الصوت أو عدم مشاركته.</translation>
 <translation id="424726838611654458">‏الفتح دائمًا باستخدام Adobe Reader</translation>
 <translation id="4249248555939881673">في انتظار الاتصال بالشبكة...</translation>
 <translation id="4249373718504745892">تم حظر دخول هذه الصفحة إلى الكاميرا والميكروفون التابعين لك.</translation>
@@ -2348,7 +2347,6 @@
 <translation id="4358697938732213860">إضافة عنوان</translation>
 <translation id="4359408040881008151">تم التثبيت بسبب الإضافة (الإضافات) التابعة.</translation>
 <translation id="4361190688154226069">استهداف المستطيل في المشاهدات</translation>
-<translation id="4363372140743955595">إعادة مصادقة مدير كلمات المرور</translation>
 <translation id="4364444725319685468">تم تنزيل <ph name="FILE_NAME" /></translation>
 <translation id="4364830672918311045">عرض الإشعارات</translation>
 <translation id="4365673000813822030">عذرًا، توقفت المزامنة.</translation>
@@ -2405,6 +2403,7 @@
 <translation id="4449935293120761385">حول الملء التلقائي</translation>
 <translation id="4449996769074858870">تشغّل علامة التبويب هذه صوتًا.</translation>
 <translation id="4450974146388585462">التشخيص</translation>
+<translation id="4452426408005428395">تجاهل ذلك</translation>
 <translation id="4454939697743986778">تم تثبيت هذه الشهادة من قِبل مشرف النظام.</translation>
 <translation id="445923051607553918">‏الانضمام إلى شبكة Wi-Fi</translation>
 <translation id="4462159676511157176">خوادم أسماء مخصصة</translation>
@@ -2482,7 +2481,6 @@
 <translation id="4594109696316595112">‏تفعيل لمرة واحدة: اكتب كلمة المرور لتنشيط Smart Lock على <ph name="DEVICE_TYPE" />. مع Smart Lock، سيلغي هاتفك قفل الجهاز بدون كلمة مرور. لتغيير أو إيقاف تشغيل هذه الميزة، تفضل بزيارة إعدادات <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">لا يمكن تعديل التطبيقات والإضافات إلا من قِبل المدير (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">‏محول EMF</translation>
-<translation id="4601250583401186741">الاقتران مع وحدة تحكم</translation>
 <translation id="4602466770786743961">إتاحة دخول <ph name="HOST" /> دومًا إلى الكاميرا والميكروفون التابعين لك</translation>
 <translation id="4605399136610325267">لا يوجد اتصال بالإنترنت</translation>
 <translation id="4608500690299898628">&amp;بحث...</translation>
@@ -2776,6 +2774,7 @@
 <translation id="5039804452771397117">سماح</translation>
 <translation id="5045550434625856497">كلمة مرور غير صحيحة</translation>
 <translation id="5048179823246820836">الإسكندنافيّة</translation>
+<translation id="5048294425697652159">‏تمكين برنامج Quirks لعرض المعايرة.</translation>
 <translation id="5053604404986157245">‏كلمة مرور TPM التي تم إنشاؤها عشوائيًا غير متوفرة. هذا أمر عادي بعد إجراء Powerwash.</translation>
 <translation id="5053803681436838483">عنوان شحن جديد...</translation>
 <translation id="5055309315264875868">عرض رابط في صفحة إعدادات مدير كلمة المرور لإدارة كلمات المرور المتزامنة عبر الإنترنت.</translation>
@@ -2873,7 +2872,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">متطلبات الإيماءات لتشغيل الوسائط</translation>
 <translation id="5189060859917252173">تمثل الشهادة "<ph name="CERTIFICATE_NAME" />" مرجعًا مصدقًا.</translation>
-<translation id="5196117515621749903">إعادة تحميل مع تجاهل ذاكرة التخزين المؤقت</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">الإنترنت</translation>
 <translation id="5197680270886368025">اكتملت المزامنة.</translation>
@@ -2888,6 +2886,7 @@
 <translation id="521582610500777512">تم تجاهل الصورة</translation>
 <translation id="5218183485292899140">الفرنسية السويسرية</translation>
 <translation id="5218766986344577658">النافذة المنبثقة لتوضيح الرابط</translation>
+<translation id="5220992698394817380">‏تمكين التمكين لقائمة IME</translation>
 <translation id="5222676887888702881">الخروج</translation>
 <translation id="5225324770654022472">إظهار اختصار التطبيقات</translation>
 <translation id="5227536357203429560">إضافة شبكة خاصة...</translation>
@@ -2930,6 +2929,7 @@
 <translation id="5271247532544265821">التبديل بين وضعي الصينية المبسطة/التقليدية</translation>
 <translation id="5271549068863921519">حفظ كلمة المرور</translation>
 <translation id="5273628206174272911">التنقل التجريبي عبر السجل استجابة للتمرير الأفقي الزائد.</translation>
+<translation id="5275194674756975076">موافق، تحديث</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> من هذا الموقع</translation>
 <translation id="5275973617553375938">‏الملفات المستردة من Google Drive</translation>
 <translation id="527605719918376753">تجاهل علامة التبويب</translation>
@@ -3003,6 +3003,7 @@
 <translation id="5368720394188453070">هاتفك مغلق. ألغ قفله للدخول.</translation>
 <translation id="5369927996833026114">‏اكتشاف مشغل تطبيقات Chrome</translation>
 <translation id="5370819323174483825">&amp;إعادة تحميل</translation>
+<translation id="5372066618989754822">‏تمكين الوصول إلى قائمة IME الجديدة في صفحة إعدادات اللغة.</translation>
 <translation id="5372529912055771682">لا يتيح هذا الإصدار من نظام التشغيل استخدام وضع التسجيل المزود. الرجاء التأكد من تشغيل أحدث إصدار وإعادة المحاولة.</translation>
 <translation id="5374359983950678924">تغيير صورة</translation>
 <translation id="5376169624176189338">انقر للرجوع إلى الوراء واضغط لمشاهدة السجل</translation>
@@ -3188,6 +3189,7 @@
 <translation id="5626134646977739690">الاسم:</translation>
 <translation id="5627086634964711283">كما أنها تتحكم في الصفحة التي تظهر عند  النقر على زر الصفحة الرئيسية.</translation>
 <translation id="5627259319513858869">لتمكين استخدام ميزات اللوحة التجريبية التي لا تزال قيد التطوير.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">‏التصميم متعدد الأبعاد في chrome العلوي للمتصفح</translation>
 <translation id="5633060877636360447">سيؤدي هذا إلى حذف <ph name="TOTAL_COUNT" /> من العناصر على الأقل من هذا الجهاز نهائيًا، ولكن لن يؤدي إلى مسح العناصر المتزامنة من الأجهزة الأخرى.</translation>
 <translation id="5636996382092289526">لاستخدام <ph name="NETWORK_ID" /> ربما تحتاج أولاً إلى <ph name="LINK_START" />الانتقال إلى صفحة تسجيل الدخول إلى الشبكة<ph name="LINK_END" />، والتي سيتم فتحها تلقائيًا خلال بضع ثوانٍ. إذا لم يحدث ذلك، فلن يمكن استخدام الشبكة.</translation>
@@ -3218,6 +3220,7 @@
 <translation id="5678862612529498267">تمييز الكائن باستخدام تركيز لوحة المفاتيح</translation>
 <translation id="5678955352098267522">قراءة بياناتك على <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">تصفية النص في وضع نظرة عامة</translation>
+<translation id="5683818630978268777">واجهة الاستخدام التجريبية لقفل لوحة المفاتيح.</translation>
 <translation id="5684661240348539843">معرّف الأصول</translation>
 <translation id="569068482611873351">استيراد...</translation>
 <translation id="56907980372820799">ربط البيانات</translation>
@@ -3684,7 +3687,6 @@
 <translation id="6420676428473580225">إضافة إلى سطح المكتب</translation>
 <translation id="6422329785618833949">تم قلب الصورة</translation>
 <translation id="642282551015776456">لا يمكن استخدام هذا الاسم كملف باسم مجلد</translation>
-<translation id="642322423610046417">استخدام قائمة السياق (انقر على زر الماوس الأيمن) لإزالة الإضافات التي لا تحتاج إليها.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">‏هل تريد استخدام Adobe Reader كعارض PDF افتراضي؟</translation>
 <translation id="6425092077175753609">متعدد الأبعاد</translation>
@@ -3755,6 +3757,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">‏يتطلب وضع ملء الشاشة التجريبي مع قفل لوحة المفاتيح من المستخدمين الضغط مع الاستمرار على زر Esc للخروج.</translation>
 <translation id="6527303717912515753">مشاركة</translation>
 <translation id="6528546217685656218">المفتاح الخاص لشهادة العميل هذه مفقود أو غير صحيح.</translation>
 <translation id="653019979737152879">جارٍ مزامنة <ph name="FILE_NAME" />...</translation>
@@ -3934,6 +3937,7 @@
 <translation id="6825883775269213504">الروسية</translation>
 <translation id="6827236167376090743">سيستمر تشغيل هذا الفيديو إلى نهاية الفيلم.</translation>
 <translation id="6828153365543658583">قصر تسجيل الدخول على المستخدمين التالين:</translation>
+<translation id="6828860976882136098">فشل في إعداد التحديثات التلقائية لجميع المستخدمين (خطأ تنفيذ الاختبار المبدئي: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">الحصول على مساعدة بشأن <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">الاشتراك في منظمتك</translation>
 <translation id="6830590476636787791">عمليات النقل المتحركة في البرنامج التعليمي الذي يتم تشغيله لأول مرة</translation>
@@ -3956,7 +3960,6 @@
 <translation id="6860427144121307915">فتح في علامة تبويب</translation>
 <translation id="6862635236584086457">جميع الملفات المحفوظة في هذا المجلد يتم الاحتفاظ بنسخة احتياطية منها تلقائيًا عبر الإنترنت</translation>
 <translation id="6865313869410766144">الملء التلقائي من البيانات</translation>
-<translation id="6865319096921627602">‏تُمكن مسار وسائل الإعلام الموحَّد في نظام التشغيل Android.</translation>
 <translation id="6867678160199975333">التبديل إلى <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">مربّع اختيار محدد</translation>
 <translation id="6870130893560916279">لوحة المفاتيح الأوكرانية</translation>
@@ -4052,6 +4055,7 @@
 <translation id="7006017748900345484">‏برنامج تشفير/برنامج فك التشفير لفيديو برنامج WebRTC H.264</translation>
 <translation id="7006634003215061422">الهامش السفلي</translation>
 <translation id="7006844981395428048">ملف صوت $1</translation>
+<translation id="7008270479623533562">من أجل تشغيل هذه الإضافة، تحتاج لتحديث الصفحة. يمكنك تشغيل هذه الإضافة تلقائيًا على هذا الموقع بالنقر بزر الماوس الأيمن على رمز الإضافة.</translation>
 <translation id="7009045250432250765">الملء التلقائي بنقرة واحدة</translation>
 <translation id="7010160495478792664">فك تشفير فيديو الأجهزة المسرَّعة متى أمكن</translation>
 <translation id="7010400591230614821">إستراتيجية قوية لإصدار علامة التبويب</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">فتح في علامة تبويب</translation>
 <translation id="7257173066616499747">‏شبكات Wi-Fi</translation>
 <translation id="7257666756905341374">قراءة البيانات التي نسختها ولصقتها</translation>
-<translation id="7260002739296185724">‏يمكنك تمكين استخدام AVFoundation لالتقاط الفيديو ومراقبة جهاز الفيديو على نظام التشغيل OS X &gt;= 10.7. سيتم استخدام QTKit بخلاف ذلك.</translation>
 <translation id="7260504762447901703">إبطال حق الدخول</translation>
 <translation id="7262004276116528033">يستضيف <ph name="SAML_DOMAIN" /> خدمة تسجيل الدخول هذه.</translation>
 <translation id="7262221505565121">استثناءات الوصول إلى المكون الإضافي غير المحمي</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">‏تمكين صفحات NTP في وضع عدم الاتصال</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (الحالي)</translation>
 <translation id="7321545336522791733">خادم يتعذر الوصول إليه</translation>
-<translation id="7324841169865301118">تمكين مستخدم لاختيار علامة تبويب لمشاركة سطح المكتب.</translation>
 <translation id="7325437708553334317">إضافة التباين العالي</translation>
 <translation id="7326565110843845436">النقر بثلاثة أصابع على لوحة اللمس</translation>
 <translation id="73289266812733869">غير محدد</translation>
@@ -5007,7 +5009,6 @@
 <translation id="8426519927982004547">‏HTTPS/طبقة المقابس الآمنة (SSL)</translation>
 <translation id="8427933533533814946">صورة لـ</translation>
 <translation id="8428213095426709021">إعدادات</translation>
-<translation id="8432590265309978927">دعم تجريبي ممتاز لعرض نوافذ الأطر المدمجة للمواقع المشتركة في معالجات منفصلة.</translation>
 <translation id="8432745813735585631">‏لوحة المفاتيح الأمريكية Colemak</translation>
 <translation id="8434177709403049435">&amp;التشفير</translation>
 <translation id="8434480141477525001">‏منفذ تصحيح أخطاء NaCl</translation>
@@ -5204,7 +5205,6 @@
 <translation id="8713979477561846077">‏إن التصحيح التلقائي في لوحة المفاتيح الفعلية يمكن تمكينه للوحة مفاتيح US، التي يمكنها تقديم اقتراحات أثناء الكتابة على لوحة المفاتيح الفعلية.</translation>
 <translation id="871476437400413057">‏كلمات مرور Google التي تم حفظها</translation>
 <translation id="8714838604780058252">رسومات الخلفية</translation>
-<translation id="8716065142695381595">‏تمكين مسار وسائل الإعلام الموحد (لأجهزة Android وأجهزة سطح المكتب) على Android.</translation>
 <translation id="8722421161699219904">لوحة المفاتيح الأمريكية الدولية</translation>
 <translation id="872451400847464257">تعديل محرّك البحث</translation>
 <translation id="8724859055372736596">&amp;عرض في المجلد</translation>
@@ -5224,6 +5224,7 @@
 <translation id="8737685506611670901">فتح روابط <ph name="PROTOCOL" /> بدلاً من <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">تحسين وضع إيماءة اللمس بهدف تحفيز عمليات اللمس الضعيفة مقارنة بالماوس.</translation>
+<translation id="8743712320294854924">إظهار خيارات الإدخال الموسعة في الرف.</translation>
 <translation id="874420130893181774">‏أسلوب إدخال Pinyin التقليدي</translation>
 <translation id="8744525654891896746">تحديد صورة شخصية لهذا المستخدم الذي يخضع للإشراف</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5293,6 +5294,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">‏التبديل إلى وضع استخدام مفتاح Shift</translation>
 <translation id="8852742364582744935">تمت إضافة التطبيقات والإضافات التالية:</translation>
+<translation id="8853611566624224021">‏تمكين استرجاع ملفات عرض icc من خادم Quirks لعرض معايرة الألوان.</translation>
 <translation id="885381502874625531">لوحة المفاتيح البيلاروسية</translation>
 <translation id="8856844195561710094">أخفق إيقاف اكتشاف جهاز بلوتوث.</translation>
 <translation id="885701979325669005">التخزين</translation>
@@ -5342,7 +5344,6 @@
 <translation id="8925458182817574960">&amp;الإعدادات</translation>
 <translation id="8926389886865778422">عدم السؤال مرة أخرى</translation>
 <translation id="8926518602592448999">تعطيل إضافات وضع مطور البرامج</translation>
-<translation id="8929454297483336498">‏استخدام واجهات برمجة تطبيقات Mac OS X AVFoundation، بدلاً من QTKit</translation>
 <translation id="8931394284949551895">الأجهزة الجديدة</translation>
 <translation id="8932730422557198035">‏استخدام واجهة برمجة تطبيقات Android Midi</translation>
 <translation id="8933960630081805351">إ&amp;ظهار في الباحث</translation>
@@ -5356,6 +5357,7 @@
 <translation id="894360074127026135">‏الترقية الدولية لـ Netscape</translation>
 <translation id="8944779739948852228">تم اكتشاف طابعة</translation>
 <translation id="8946359700442089734">لم يتم تمكين ميزات التصحيح كليًا على هذا الجهاز <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">‏تمكين دعم WebUSB.</translation>
 <translation id="89515141420106838">‏تمكين تطبيق معرض سوق Chrome الإلكتروني لبرامج تشغيل الطابعة. يبحث التطبيق في سوق Chrome الإلكتروني عن الإضافات التي تدعم الطباعة إلى طابعة USB مع رقم تعريف USB محدد.</translation>
 <translation id="895347679606913382">بدء التحميل...</translation>
 <translation id="8954952943849489823">أخفق النقل، خطأ غير متوقع: $1</translation>
@@ -5500,6 +5502,7 @@
 <translation id="9154194610265714752">تم التحديث</translation>
 <translation id="9154418932169119429">هذه الصورة غير متاحة في وضع عدم الاتصال.</translation>
 <translation id="91568222606626347">جارٍ إنشاء اختصار...</translation>
+<translation id="9157697743260533322">فشل في إعداد التحديثات التلقائية لجميع المستخدمين (خطأ إطلاق الاختبار المبدئي: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">عفوًا!  حدثت مشكلة في الاتصال بالشبكة أثناء المصادقة. يرجى التحقق من الاتصال بالشبكة وإعادة المحاولة.</translation>
 <translation id="9159562891634783594">تمكين تسجيل طابعات السحاب غير المسجلة من معاينة الطباعة.</translation>
 <translation id="9166510596677678112">إرسال رسالة إلكترونية إلى هذا الشخص</translation>
@@ -5511,7 +5514,6 @@
 <translation id="9170848237812810038">&amp;إلغاء</translation>
 <translation id="9170884462774788842">‏أضاف برنامج آخر بجهاز الكمبيوتر مظهرًا قد يؤدي إلى تغيير طريقة عمل Chrome.</translation>
 <translation id="9177499212658576372">إنك متصل حاليًا بشبكة <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">إدارة بطاقات الائتمان</translation>
 <translation id="917858577839511832">‏التوافق مع DTLS 1.2 لأجل WebRTC</translation>
 <translation id="917861274483335838">إدارة حظر المكوّن الإضافي...</translation>
 <translation id="9179348476548754105">كيف يعالج مدير كلمات المرور الملء التلقائي لبيانات اعتماد المزامنة لصفحات إعادة المصادقة المتعلقة بالمعاملة فقط.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index b043c27b..e5bd973 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -159,7 +159,6 @@
 Ще се наложи да настроите отново потребителския си профил.<ph name="BR" />
 <ph name="BR" />
 Моля, изпратете отзиви от следващия екран, за да ни помогнете да отстраним проблема.</translation>
-<translation id="1216954813581739968">Активиране на възможността за избор на раздел при споделяне на работния плот.</translation>
 <translation id="121827551500866099">Показване на всички изтеглени файлове...</translation>
 <translation id="122082903575839559">Алгоритъм за подписа на сертификата</translation>
 <translation id="1221024147024329929">PKCS 1 MD2 с RSA шифроване</translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">URL адрес с %s вместо заявка</translation>
 <translation id="1546280085599573572">Това разширение промени страницата, която се показва при кликване върху бутона „Начална страница“.</translation>
 <translation id="1546795794523394272">Добре дошли в Chromebox за срещи!</translation>
+<translation id="1547572086206517271">Изисква се опресняване</translation>
 <translation id="1547964879613821194">Канадска (английски) клавиатура</translation>
 <translation id="1548132948283577726">Тук ще се покажат сайтовете, паролата за които никога не се запазва.</translation>
 <translation id="1549045574060481141">Потвърждаване на изтеглянето</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">Активирайте локалното съхраняване на наскоро посетените страници с цел използването им офлайн. Функцията за офлайн страници трябва да е включена.</translation>
 <translation id="1891668193654680795">Да се има доверие на този сертификат за идентифициране на производители на софтуер.</translation>
 <translation id="189210018541388520">Отваряне на цял екран</translation>
+<translation id="1892754076732315533">Опростен нов потребителски интерфейс при задействано от страниците преминаване на цял екран или заключване на курсора на мишката.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Процедурата за обезпечаване в облака не бе успешна</translation>
 <translation id="189358972401248634">Други езици</translation>
@@ -1319,6 +1320,7 @@
 <translation id="288042212351694283">Да осъществява достъп до устройствата ви, използвани като универсален втори фактор за удостоверяване.</translation>
 <translation id="2881966438216424900">Последен достъп:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> незабавно ще се рестартира и настройките му ще се нулират</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Диспечер на задачите</translation>
 <translation id="2887525882758501333">PDF документ</translation>
 <translation id="2888807692577297075">Няма елементи, съответстващи на &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt;</translation>
@@ -1748,6 +1750,7 @@
 <translation id="3479552764303398839">Не сега</translation>
 <translation id="3480892288821151001">Закрепване на прозореца отляво</translation>
 <translation id="3481915276125965083">Следните изскачащи прозорци са блокирани на тази страница:</translation>
+<translation id="3482214069979148937">Задръжте |<ph name="ACCELERATOR" />| за изход от режима на цял екран</translation>
 <translation id="3484869148456018791">Получаване на нов сертификат</translation>
 <translation id="3487007233252413104">анонимна функция</translation>
 <translation id="348771913750618459">Основани на вложена рамка процеси за вход</translation>
@@ -1842,7 +1845,6 @@
 <translation id="3593965109698325041">Ограничения за името на сертификата</translation>
 <translation id="3595596368722241419">Батерията е заредена</translation>
 <translation id="3600456501114769456">Достъпът до локални файлове на устройството ви е деактивиран от администратора ви.</translation>
-<translation id="3601395307734599350">Всичките ви разширения са тук</translation>
 <translation id="3603385196401704894">Канадска (френски) клавиатура</translation>
 <translation id="3603622770190368340">Получаване на мрежов сертификат</translation>
 <translation id="3605780360466892872">Костюмар</translation>
@@ -2225,7 +2227,6 @@
 <translation id="4151403195736952345">Използване на глобалната стандартна стойност (Откриване)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 раздел}other{# раздела}}</translation>
 <translation id="4154664944169082762">Пръстови отпечатъци</translation>
-<translation id="4157188838832721931">Деактивирайте подканата за въвеждане на потребителската парола за операционната система, преди паролите да се покажат на съответната страница.</translation>
 <translation id="4157869833395312646">„Преминаваща през сървъра шифрована информация“ от Microsoft</translation>
 <translation id="4158739975813877944">Отваряне на плейлиста</translation>
 <translation id="4159681666905192102">Това е профил за деца, управляван от <ph name="CUSTODIAN_EMAIL" /> и <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2269,7 +2270,6 @@
 <translation id="4218259925454408822">Вход в друг профил</translation>
 <translation id="4219614746733932747">Ако настройката е активирана, механизмът на Blink за мащабиране ще се използва като мащабен коефициент на устройството при промяна на мащаба на съдържанието.</translation>
 <translation id="4220865787605972627">Разрешаване на калибрирането на цветовете на дисплея, ако той поддържа тази функцията.</translation>
-<translation id="4233506668751282421">Активиране на споделянето на звука за работния плот</translation>
 <translation id="4235200303672858594">Цял екран</translation>
 <translation id="4235813040357936597">Добавяне на профил за <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> не може да се покаже на този език</translation>
@@ -2277,7 +2277,6 @@
 <translation id="4242577469625748426">Настройките за правила не бяха инсталирани успешно на устройството: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> иска да деактивира курсора на мишката ви.</translation>
 <translation id="424546999567421758">Установено е използване на много място на диска</translation>
-<translation id="4247072926966606568">Когато флагът е активиран, потребителите ще могат да избират дали да споделят звука от прозореца на инструмента за споделяне на работния плот.</translation>
 <translation id="424726838611654458">Отваряне винаги в Adobe Reader</translation>
 <translation id="4249248555939881673">Изчаква се връзка с мрежата...</translation>
 <translation id="4249373718504745892">Достъпът на тази страница до камерата и микрофона ви е блокиран.</translation>
@@ -2350,7 +2349,6 @@
 <translation id="4358697938732213860">Добавяне на адрес</translation>
 <translation id="4359408040881008151">Инсталирано заради зависимо разширение или съответно разширения.</translation>
 <translation id="4361190688154226069">Основано на правоъгълник насочване в изгледите</translation>
-<translation id="4363372140743955595">Повторно удостоверяване за диспечера на паролите</translation>
 <translation id="4364444725319685468">„<ph name="FILE_NAME" />“ се изтегли</translation>
 <translation id="4364830672918311045">Показване на известия</translation>
 <translation id="4365673000813822030">Ами сега! Синхронизирането спря да работи.</translation>
@@ -2407,6 +2405,7 @@
 <translation id="4449935293120761385">Всичко за автоматичното попълване</translation>
 <translation id="4449996769074858870">В този раздел се възпроизвежда звук.</translation>
 <translation id="4450974146388585462">Диагностициране</translation>
+<translation id="4452426408005428395">Няма значение</translation>
 <translation id="4454939697743986778">Този сертификат е инсталиран от системния ви администратор.</translation>
 <translation id="445923051607553918">Присъединяване към Wi-Fi мрежа</translation>
 <translation id="4462159676511157176">Специално зададени сървъри за имена</translation>
@@ -2484,7 +2483,6 @@
 <translation id="4594109696316595112">Еднократно активиране: Въведете паролата си, за да активирате Smart Lock на този <ph name="DEVICE_TYPE" />. С тази функция отключването на това устройство ще става от телефона ви – без парола. За да промените или изключите функцията, отворете настройките на своя <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Само мениджърът (<ph name="CUSTODIAN_NAME" />) може да променя приложенията и разширенията.</translation>
 <translation id="4601242977939794209">Преобразуване в EMF</translation>
-<translation id="4601250583401186741">Сдвояване с контролер</translation>
 <translation id="4602466770786743961">Достъпът на <ph name="HOST" /> до камерата и микрофона ви да е разрешен винаги</translation>
 <translation id="4605399136610325267">Няма връзка с интернет</translation>
 <translation id="4608500690299898628">&amp;Търсене...</translation>
@@ -2779,6 +2777,7 @@
 <translation id="5039804452771397117">Разрешаване</translation>
 <translation id="5045550434625856497">Неправилна парола</translation>
 <translation id="5048179823246820836">Скандинавски</translation>
+<translation id="5048294425697652159">Активиране на клиентската програма Quirks за калибриране на дисплея.</translation>
 <translation id="5053604404986157245">Произволно генерираната TPM парола не е налице. Това е нормално след Powerwash.</translation>
 <translation id="5053803681436838483">Нов адрес за доставка...</translation>
 <translation id="5055309315264875868">На страницата с настройки за диспечера на паролите се показва връзка за управление на синхронизираните ви пароли онлайн.</translation>
@@ -2876,7 +2875,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Изискване на жест за възпроизвеждане на мултимедия</translation>
 <translation id="5189060859917252173">Сертификатът „<ph name="CERTIFICATE_NAME" />“ представлява сертифициращ орган.</translation>
-<translation id="5196117515621749903">Презареждане с игнориране на кеша</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Интернет</translation>
 <translation id="5197680270886368025">Синхронизирането завърши.</translation>
@@ -2891,6 +2889,7 @@
 <translation id="521582610500777512">Снимката бе отхвърлена</translation>
 <translation id="5218183485292899140">Швейцарска (френски) клавиатура</translation>
 <translation id="5218766986344577658">Изскачащ прозорец за разграничаване на връзките</translation>
+<translation id="5220992698394817380">Активиране на новото меню за редактора за метод на въвеждане (IME)</translation>
 <translation id="5222676887888702881">Изход</translation>
 <translation id="5225324770654022472">Показване на прекия път към приложенията</translation>
 <translation id="5227536357203429560">Добавяне на частна мрежа...</translation>
@@ -2933,6 +2932,7 @@
 <translation id="5271247532544265821">Превключване на режимите за опростен/традиционен китайски</translation>
 <translation id="5271549068863921519">Запазване на паролата</translation>
 <translation id="5273628206174272911">Експериментално придвижване в историята при хоризонтално превъртане до края.</translation>
+<translation id="5275194674756975076">ОK, опресняване</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> от този сайт</translation>
 <translation id="5275973617553375938">Възстановени от Google Диск файлове</translation>
 <translation id="527605719918376753">Спиране на звука на раздела</translation>
@@ -3006,6 +3006,7 @@
 <translation id="5368720394188453070">Телефонът ви е заключен. Отключете го, за да влезете.</translation>
 <translation id="5369927996833026114">Запознайте се със стартовия панел за приложения в Chrome</translation>
 <translation id="5370819323174483825">&amp;Презареждане</translation>
+<translation id="5372066618989754822">Активиране на достъпa до новото меню за редактора за метод на въвеждане (IME) на страницата „Езикови настройки“.</translation>
 <translation id="5372529912055771682">Предоставеният режим за записване не се поддържа от тази версия на операционната система.  Моля, уверете се, че използвате най-новата версия и опитайте отново.</translation>
 <translation id="5374359983950678924">Промяна на снимката</translation>
 <translation id="5376169624176189338">Кликнете, за да се върнете назад. Задръжте, за да видите историята.</translation>
@@ -3192,6 +3193,7 @@
 <translation id="5626134646977739690">Име:</translation>
 <translation id="5627086634964711283">То също контролира коя страница се показва при кликване върху бутона „Начална страница“.</translation>
 <translation id="5627259319513858869">Активира използването на експерименталните функции за увеличен изглед, които още са в процес на разработка.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design в горната част на браузъра Chrome</translation>
 <translation id="5633060877636360447">Поне <ph name="TOTAL_COUNT" /> елемента ще се изтрият за постоянно от това устройство, но няма да се изчистят синхронизираните елементи от други устройства.</translation>
 <translation id="5636996382092289526">За да използвате „<ph name="NETWORK_ID" />“, може да се наложи първо <ph name="LINK_START" />да посетите страницата за вход в мрежата<ph name="LINK_END" />, която ще се отвори автоматично след няколко секунди. Ако това не се случи, мрежата не може да се ползва.</translation>
@@ -3222,6 +3224,7 @@
 <translation id="5678862612529498267">Открояване на елемента, върху който е фокусирана клавиатурата</translation>
 <translation id="5678955352098267522">Четене на данните ви от <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Филтриране чрез текст в режима за общ преглед</translation>
+<translation id="5683818630978268777">Експериментален потребителски интерфейс за заключване на клавиатурата.</translation>
 <translation id="5684661240348539843">Идентификатор на актива</translation>
 <translation id="569068482611873351">Импортиране...</translation>
 <translation id="56907980372820799">Свързване на данните</translation>
@@ -3687,7 +3690,6 @@
 <translation id="6420676428473580225">Добавяне към работния плот</translation>
 <translation id="6422329785618833949">Снимката бе обърната</translation>
 <translation id="642282551015776456">Това име не може да се използва като име на файл или на папка</translation>
-<translation id="642322423610046417">Използвайте контекстното меню (кликнете с десен бутон), за да премахнете разширенията, които не са ви необходими.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Да се използва ли Acrobat Reader като визуализатор по подразбиране на PDF файлове?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Експериментален режим на цял екран със заключване на клавиатурата, при който потребителите трябва да натиснат и задържат „Esc“, за да излязат.</translation>
 <translation id="6527303717912515753">Споделяне</translation>
 <translation id="6528546217685656218">Частният ключ за този клиентски сертификат липсва или е невалиден.</translation>
 <translation id="653019979737152879">„<ph name="FILE_NAME" />“ се синхронизира...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">руски</translation>
 <translation id="6827236167376090743">Видеоклипът ще продължи да се възпроизвежда до края на света.</translation>
 <translation id="6828153365543658583">Влизането да се ограничи до следните потребители:</translation>
+<translation id="6828860976882136098">Настройването на автоматични актуализации за всички потребители не бе успешно (грешка при изпълнението на предстартовия процес: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Получете помощ за устройството си <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Записване в организацията ви</translation>
 <translation id="6830590476636787791">Анимирани преходи в урока при първо стартиране</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">Отваряне в раздел</translation>
 <translation id="6862635236584086457">За всички файлове, запазени в тази папка, автоматично се създават резервни копия онлайн</translation>
 <translation id="6865313869410766144">Данни за автоматично попълване на формуляри</translation>
-<translation id="6865319096921627602">Активиране на обединения канал за мултимедия под Android.</translation>
 <translation id="6867678160199975333">Превключване към <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Отметнато квадратче за отметка</translation>
 <translation id="6870130893560916279">Украинска клавиатура</translation>
@@ -4054,6 +4057,7 @@
 <translation id="7006017748900345484">Основан на WebRTC софтуерен кодер/декодер за видео във формат H.264</translation>
 <translation id="7006634003215061422">Долно поле</translation>
 <translation id="7006844981395428048">Аудиофайл от тип $1</translation>
+<translation id="7008270479623533562">За да се изпълни разширението, трябва да опресните страницата. Можете да го стартирате автоматично на този сайт, като кликнете с десен бутон върху съответната икона.</translation>
 <translation id="7009045250432250765">Автоматично попълване с едно кликване</translation>
 <translation id="7010160495478792664">Хардуерно ускорено декодиране на видеото, когато е възможно.</translation>
 <translation id="7010400591230614821">Агресивна стратегия за освобождаване на раздели</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">Отваряне в раздел</translation>
 <translation id="7257173066616499747">Wi-Fi мрежи</translation>
 <translation id="7257666756905341374">Четене на данните, които копирате и поставяте</translation>
-<translation id="7260002739296185724">Активирайте употребата на AVFoundation за запис на видео и наблюдение на видеоустройства под OS X &gt;= 10.7. В противен случай ще се ползва QTKit.</translation>
 <translation id="7260504762447901703">Отмяна на достъпа</translation>
 <translation id="7262004276116528033">Тази услуга за вход се хоства от <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Изключения за достъп до приставките извън тестова среда</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">Активиране на офлайн страниците в новия раздел в браузъра</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (текущ)</translation>
 <translation id="7321545336522791733">Няма достъп до сървъра</translation>
-<translation id="7324841169865301118">Позволява на потребителите да избират раздел при споделяне на работния плот.</translation>
 <translation id="7325437708553334317">Разширение High Contrast</translation>
 <translation id="7326565110843845436">Кликване с три пръста върху сензорния панел</translation>
 <translation id="73289266812733869">Неизбрано</translation>
@@ -5007,7 +5009,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Снимка от</translation>
 <translation id="8428213095426709021">Настройки</translation>
-<translation id="8432590265309978927">Силно експериментална поддръжка за изобразяване на вложените рамки от различни сайтове чрез отделни процеси.</translation>
 <translation id="8432745813735585631">Американска (Коулмак) клавиатура</translation>
 <translation id="8434177709403049435">&amp;Кодиране</translation>
 <translation id="8434480141477525001">Порт за отстраняване на грешки в клиента с директно изпълнение</translation>
@@ -5204,7 +5205,6 @@
 <translation id="8713979477561846077">Активирайте функцията за автоматични поправки за английски (САЩ). Тя може да предоставя предложения, докато пишете на физическа клавиатура.</translation>
 <translation id="871476437400413057">запазени в Google пароли</translation>
 <translation id="8714838604780058252">Фонова графика</translation>
-<translation id="8716065142695381595">Активира обединения (за Android и работния плот) канал за мултимедия под Android.</translation>
 <translation id="8722421161699219904">Американска международна клавиатура</translation>
 <translation id="872451400847464257">Редактиране на търсещата машина</translation>
 <translation id="8724859055372736596">&amp;Показване в папката</translation>
@@ -5224,6 +5224,7 @@
 <translation id="8737685506611670901">Да отваря връзки от типа „<ph name="PROTOCOL" />“ вместо <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Прецизиране на позицията на жестовете с докосване, за да се компенсира лошата разделителна способност на докосванията в сравнение с мишката.</translation>
+<translation id="8743712320294854924">В лавицата да се показва разгънато меню с опции за въвеждане.</translation>
 <translation id="874420130893181774">Метод на въвеждане за традиционен пинин</translation>
 <translation id="8744525654891896746">Изберете аватар за този контролиран потребител</translation>
 <translation id="8744641000906923997">Ромаджи</translation>
@@ -5293,6 +5294,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Превключване между режими с клавиша „Shift“</translation>
 <translation id="8852742364582744935">Следните приложения и разширения бяха добавени:</translation>
+<translation id="8853611566624224021">Активиране на извличането на ICC файловете за дисплея от сървъра Quirks с цел калибриране на цветовете.</translation>
 <translation id="885381502874625531">Беларуска клавиатура</translation>
 <translation id="8856844195561710094">Спирането на откриването на устройства с Bluetooth не бе успешно.</translation>
 <translation id="885701979325669005">Хранилище</translation>
@@ -5342,7 +5344,6 @@
 <translation id="8925458182817574960">&amp;Настройки</translation>
 <translation id="8926389886865778422">Без повторно питане</translation>
 <translation id="8926518602592448999">Деактивиране на разширенията в режим за програмисти</translation>
-<translation id="8929454297483336498">Използване на приложните програмни интерфейси (API) на AVFoundation под Mac OS X вместо на QTKit</translation>
 <translation id="8931394284949551895">Нови устройства</translation>
 <translation id="8932730422557198035">Използване на приложния програмен интерфейс (API) за MIDI за Android</translation>
 <translation id="8933960630081805351">&amp;Показване във Finder</translation>
@@ -5356,6 +5357,7 @@
 <translation id="894360074127026135">Международно повишаване на сигурността от Netscape</translation>
 <translation id="8944779739948852228">Открит е принтер</translation>
 <translation id="8946359700442089734">Функциите за отстраняване на грешки не бяха напълно активирани на това устройство с <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Активиране на поддръжката за WebUSB.</translation>
 <translation id="89515141420106838">Активира приложението Галерия на уеб магазина на Chrome за драйвери за принтер. Приложението търси в уеб магазина на Chrome разширения, които поддържат отпечатване към USB принтер с конкретен USB идентификатор.</translation>
 <translation id="895347679606913382">Стартира...</translation>
 <translation id="8954952943849489823">Преместването не бе успешно. Неочаквана грешка: $1</translation>
@@ -5500,6 +5502,7 @@
 <translation id="9154194610265714752">Актуализирано</translation>
 <translation id="9154418932169119429">Това изображение не е налице офлайн.</translation>
 <translation id="91568222606626347">Създаване на пряк път...</translation>
+<translation id="9157697743260533322">Настройването на автоматични актуализации за всички потребители не бе успешно (грешка при стартирането на предстартовия процес: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ами сега!  При удостоверяването възникна проблем във връзката с мрежата.  Моля, проверете я и опитайте отново.</translation>
 <translation id="9159562891634783594">Активирайте функцията, с която нерегистрираните принтери в облака се регистрират от визуализацията за печат.</translation>
 <translation id="9166510596677678112">Изпращане на имейл до този човек</translation>
@@ -5511,7 +5514,6 @@
 <translation id="9170848237812810038">&amp;Отмяна</translation>
 <translation id="9170884462774788842">Друга програма на компютъра ви добави тема, която може да промени начина на работа на Chrome.</translation>
 <translation id="9177499212658576372">Понастоящем сте свързани с <ph name="NETWORK_TYPE" /> мрежа.</translation>
-<translation id="9177556055091995297">Управление на кредитните карти</translation>
 <translation id="917858577839511832">Договаряне с DTLS 1.2 за WebRTC</translation>
 <translation id="917861274483335838">Управление на блокирането на приставки...</translation>
 <translation id="9179348476548754105">Посочва поведението на диспечера на паролите при автоматично попълване на идентификационните данни за синхронизиране само на страници с транзакционно повторно удостоверяване.</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 21fb5eb..887f1bc 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -24,6 +24,7 @@
 <translation id="1035590878859356651">এই পৃষ্ঠাটি বুকমার্ক করুন...</translation>
 <translation id="1036348656032585052">বন্ধ করুন</translation>
 <translation id="1036511912703768636">এই USB ডিভাইসগুলির মধ্যে যে কোনোটি অ্যাক্সেস করুন</translation>
+<translation id="1036982837258183574">পূর্ণ স্ক্রীন থেকে বেরিয়ে যেতে |<ph name="ACCELERATOR" />| চাপুন</translation>
 <translation id="1038168778161626396">কেবলমাত্র চিহ্ন প্রদান</translation>
 <translation id="1042174272890264476">আপনার কম্পিউটারও <ph name="SHORT_PRODUCT_NAME" /> এর RLZ লাইব্রেরি বিল্ট ইনের সাথে আসে৷ RLZ অনুসন্ধানগুলি পরিমাপ করার জন্য একটি সাধারণ, ব্যক্তিগতভাবে সনাক্তকরণযোগ্য নয় এমন ট্যাগ নির্ধারণ করে এবং <ph name="SHORT_PRODUCT_NAME" /> এর ব্যবহার একটি নির্দিষ্ট প্রচারাভিযানের মাধ্যমে চালিত হয়৷ এই লেবেলগুলি কখনো কখনো <ph name="PRODUCT_NAME" /> এ Google অনুসন্ধান ক্যোয়ারিগুলিতে প্রদর্শিত হয়৷</translation>
 <translation id="1042574203789536285"><ph name="URL" /> আপনার ডিভাইসে স্থায়ীভাবে বিপুল ডেটা জমা করতে চায়৷</translation>
@@ -158,7 +159,6 @@
     আপনাকে আপনার প্রোফাইল আবার সেট আপ করতে হবে।<ph name="BR" />
     <ph name="BR" />
     পরবর্তী স্ক্রীনে, আমাদেরকে সমস্যাটি সমাধানে সাহায্য করতে দয়া করে প্রতিক্রিয়া পাঠান।</translation>
-<translation id="1216954813581739968">ডেস্কটপ শেয়ারের জন্য ট্যাব সক্রিয় করুন।</translation>
 <translation id="121827551500866099">সকল ডাউনলোড দেখান...</translation>
 <translation id="122082903575839559">শংসাপত্র স্বাক্ষর অ্যালগরিদম</translation>
 <translation id="1221024147024329929">RSA এনক্রিপশানের সাথে PKCS #1 MD2</translation>
@@ -375,6 +375,7 @@
 <translation id="1523350272063152305">মিটিংয়ের জন্য Chromebox ডিভাইস সেট আপের জন্য প্রস্তুত৷</translation>
 <translation id="1524152555482653726">চলচ্চিত্র</translation>
 <translation id="1525475911290901759">এটি অ্যাপ্লিকেশানটির লঞ্চারে একটি নতুন অনুসন্ধান ফলাফল নির্বাচন এবং রেঙ্কিং করার অ্যালগরিদম সক্ষম করে।</translation>
+<translation id="1525835343380843286">সার্ভারে যোগাযোগ করতে ত্রুটি</translation>
 <translation id="1526560967942511387">শিরোনামহীন দস্তাবেজ</translation>
 <translation id="1526925867532626635">সিঙ্ক সেটিংস নিশ্চিত করুন</translation>
 <translation id="1528372117901087631">ইন্টারনেট সংযোগ</translation>
@@ -389,6 +390,7 @@
 <translation id="1545786162090505744">কোয়্যারীর স্থানে %s সহ URL</translation>
 <translation id="1546280085599573572">আপনি হোম বোতাম ক্লিক করলে কোন পৃষ্ঠা দেখানো হবে তা এই এক্সটেনশানটি দ্বারা পরিবর্তন করা করেছে।</translation>
 <translation id="1546795794523394272">মিটিংয়ের জন্য Chromebox এ স্বাগতম!</translation>
+<translation id="1547572086206517271">রিফ্রেশ করা প্রয়োজন</translation>
 <translation id="1547964879613821194">কানাডীয় ইংরেজি</translation>
 <translation id="1548132948283577726">যে সাইটগুলি কখনও পাসওয়ার্ড সংরক্ষণ করে না সেগুলি এখানে উপস্থিত হবে৷</translation>
 <translation id="1549045574060481141">ডাউনলোড নিশ্চিত করুন</translation>
@@ -532,6 +534,7 @@
 <translation id="1744108098763830590">পৃষ্ঠভূমি পৃষ্ঠা</translation>
 <translation id="1747687775439512873">WiMAX অক্ষম করুন</translation>
 <translation id="174773101815569257">মাউস লক</translation>
+<translation id="174937106936716857">মোট ফাইল সংখ্যা</translation>
 <translation id="1749854530031883739">উইন্ডোগুলির পিছনে থাকা TouchView এ (সর্বাধিক মোড) ব্যবহৃত ধূসর উইন্ডো ব্যাকড্রপগুলি, যা বড় করা যায় না৷</translation>
 <translation id="17513872634828108">খোলা ট্যাব</translation>
 <translation id="175196451752279553">বন্ধ ট্যাবটি পু&amp;নঃরায় খুলুন</translation>
@@ -615,8 +618,11 @@
 <translation id="1891196807951270080">অফলাইনে ব্যবহারের জন্য স্থানীয়ভাবে সম্প্রতি ঘুরে দেখা পৃষ্ঠাগুলি সংরক্ষণ করাকে সক্রিয় করে। অফলাইন পৃষ্ঠা সক্ষম করা প্রয়োজন।</translation>
 <translation id="1891668193654680795">সফ্টওয়্যার প্রস্তুতকারকদের সনাক্তকরণের জন্য এই শংসাপত্রটিকে বিশ্বাস করুন৷</translation>
 <translation id="189210018541388520">পূর্ণ স্ক্রিন খুলুন</translation>
+<translation id="1892754076732315533">পৃষ্ঠার ট্রিগার করা পূর্ণ স্ক্রীন বা মাউস পয়েন্টার লক অবস্থায় যাওয়ার সময় একটি সরলীকৃত নতুন ব্যবহারকারি অভিজ্ঞতা।</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
+<translation id="1893406696975231168">ক্লাউড প্রভিসন প্রবাহ ব্যর্থ হয়েছে</translation>
 <translation id="189358972401248634">অন্যান্য ভাষা</translation>
+<translation id="1894288435579641697">ক্যারেট হাইলাইট করুন (পাঠ্য সম্পাদনার সময়)</translation>
 <translation id="1895658205118569222">বন্ধ করুন</translation>
 <translation id="1895934970388272448">এই প্রক্রিয়াটি সম্পূর্ণ করতে আপনাকে অবশ্যই আপনার মূদ্রকের নিবন্ধিকরণ নিশ্চিত করতে হবে - এটিকে এখনি পরীক্ষা করুন৷</translation>
 <translation id="1897762215429052132">নেটওয়ার্ক সংযোগ, ভাষা, কীবোর্ড লেআউট সেটআপ করুন...</translation>
@@ -646,6 +652,7 @@
 <translation id="1936157145127842922">ফোল্ডারে দেখান</translation>
 <translation id="1936717151811561466">ফিনিশ</translation>
 <translation id="1937256809970138538">আপনার স্ক্রীন চালু এবং আনলক থাকাকালীন "Ok Google" বলুন</translation>
+<translation id="1942765061641586207">চিত্রের রেসুলিউশান</translation>
 <translation id="1944921356641260203">আপডেট পাওয়া গেছে</translation>
 <translation id="1947424002851288782">জার্মান কীবোর্ড</translation>
 <translation id="1950295184970569138">* Google প্রোফাইল ফটো (লোড হচ্ছে)</translation>
@@ -814,6 +821,7 @@
 <translation id="2218515861914035131">সাধারণ পাঠ্য হিসাবে আটকে দিন  </translation>
 <translation id="2218947405056773815">সঙ্কট! <ph name="API_NAME" /> এ একটি সমস্যা হয়েছে৷</translation>
 <translation id="2220529011494928058">কোনো সমস্যার প্রতিবেদন করুন</translation>
+<translation id="2220794966865262911">পরিষেবা অনুপলব্ধ</translation>
 <translation id="2222641695352322289">এটি পূর্বাবস্থায় ফিরিয়ে আনার একমাত্র উপায় হল <ph name="IDS_SHORT_PRODUCT_OS_NAME" /> পুনরায় ইনস্টল করা৷</translation>
 <translation id="2224444042887712269">এই সেটিংটি <ph name="OWNER_EMAIL" /> এর৷</translation>
 <translation id="2224551243087462610">ফোল্ডার নাম সম্পাদনা করুন</translation>
@@ -963,6 +971,7 @@
 <translation id="2422426094670600218">&lt;নামবিহীন&gt;</translation>
 <translation id="2423578206845792524">এই রূপে ছবি সং&amp;রক্ষণ করুন...</translation>
 <translation id="2424091190911472304">সর্বদা <ph name="ORIGIN" /> এ চালু রাখুন</translation>
+<translation id="2425665904502185219">ফাইলের মোট আকার</translation>
 <translation id="2431394478374894294">ভার্চুয়াল কীবোর্ডে ভয়েস ইনপুট সক্ষম করে।</translation>
 <translation id="2433452467737464329">এই পৃষ্ঠাটিকে স্বতঃরিফ্রেশ করতে URL একটি ক্যোয়ারী param যোগ করুন: chrome://network/?refresh=&lt;sec&gt;</translation>
 <translation id="2433507940547922241">উপস্থিতি</translation>
@@ -1061,6 +1070,7 @@
 <translation id="2554553592469060349">নির্বাচিত ফাইল খুবই বড়  (সর্বোচ্চ আকার: 3MB )৷</translation>
 <translation id="255632937203580977">ডিভাইস আবিষ্কারের বিজ্ঞপ্তিগুলি</translation>
 <translation id="2557899542277210112">দ্রুত অ্যাক্সেসের জন্য, আপনার বুকমার্কস এখানে বুকমার্কস দণ্ডে রাখুন৷</translation>
+<translation id="2558578666171469771">Google Play স্টোর এখন আপনার <ph name="DEVICE_TYPE" /> এ</translation>
 <translation id="255937426064304553">মার্কিন আন্তর্জাতিক</translation>
 <translation id="2560633531288539217">ভয়েস ও অডিও কার্যকলাপ পরিচালনা করুন</translation>
 <translation id="2562685439590298522">দস্তাবেজ</translation>
@@ -1156,6 +1166,7 @@
 <translation id="2686759344028411998">যে কোনও মডিউল লোড হওয়া সনাক্ত করতে অক্ষম৷</translation>
 <translation id="2688196195245426394">ডিভাইসটি সার্ভারে নথিভুক্ত করার সময়ে ত্রুটি: <ph name="CLIENT_ERROR" />৷</translation>
 <translation id="2694026874607847549">1টি কুকি</translation>
+<translation id="2696862700756109583">পূর্ণ স্ক্রীন ব্যতিক্রমগুলি</translation>
 <translation id="2702540957532124911">কীবোর্ড:</translation>
 <translation id="2704184184447774363">Microsoft Document Signing</translation>
 <translation id="2706892089432507937">USB ডিভাইসগুলি</translation>
@@ -1312,6 +1323,7 @@
 <translation id="288042212351694283">আপনার ইউনিভার্সাল ২য় ফ্যাক্টর ডিভাইসগুলির অ্যাক্সেস রয়েছে</translation>
 <translation id="2881966438216424900">অন্তিমবার অ্যক্সেস করা হয়েছে:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> পুনরায় চালু হবে এবং তাৎক্ষণিকভাবে পুনরায় সেট হবে</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">কার্য পরিচালক</translation>
 <translation id="2887525882758501333">PDF দস্তাবেজ</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; এর সাথে কোনো আইটেম মেলেনি</translation>
@@ -1410,6 +1422,7 @@
 <translation id="302014277942214887">অ্যাপ্লিকেশান ID বা ওয়েব দোকানের URL লিখুন৷</translation>
 <translation id="3020616530769498629">রিফ্রেশ-করতে-টানুন এর সময় যাচাই-অসমর্থন করা পুনঃলোড করণ সক্ষম করে</translation>
 <translation id="3020990233660977256">ক্রমিক সংখ্যা: <ph name="SERIAL_NUMBER" /></translation>
+<translation id="3021245547458004908">সক্ষম করা হলে, সর্বনিম্ন স্ক্রীন dp &gt;= ৮০০ এর ডিভাইসগুলিতে স্ক্রলিংয়ের কারণে সরঞ্জামদণ্ড কখনোই লুকানো হবে না। তবে পৃষ্ঠার বিষয়বস্তু পূর্ণ স্ক্রীনে গেলে, তখন এটি আড়াল করা হবে।</translation>
 <translation id="3021678814754966447">ফ্রেম উৎস &amp;দেখুন</translation>
 <translation id="3024374909719388945">24-ঘন্টার ঘড়ি ব্যবহার করুন</translation>
 <translation id="3025022340603654002">একটি উপাদানের ফর্মের উপর প্রাথমিক মাউস ক্লিক করার স্বতঃপূর্ণ পরামর্শগুলি তৈরি করুন৷</translation>
@@ -1436,6 +1449,7 @@
 <translation id="3065041951436100775">ট্যাব নষ্ট হওয়ার প্রতিক্রিয়া।</translation>
 <translation id="3065140616557457172">অনুসন্ধানের জন্য টাইপ করুন অথবা সমস্তকিছু ঠিকঠাক কাজ করছে - তা নেভিগেট করা জন্য একটি URL প্রবেশ করান৷</translation>
 <translation id="3067198360141518313">এই প্লাগ ইনটি চালনা করুন</translation>
+<translation id="307519606911195071">সেটিংস পৃষ্ঠায় অতিরিক্ত অ্যাক্সেসযোগ্যতার বৈশিষ্ট্যগুলি সক্ষম করুন।</translation>
 <translation id="3075239840551149663">একটি তত্ত্বাবধানে থাকা ব্যবহারকারী হিসেবে <ph name="NEW_PROFILE_NAME" /> তৈরি করা হয়েছে!</translation>
 <translation id="3075874217500066906">পাওয়ারওয়াশ প্রক্রিয়া শুরু করতে রিস্টার্ট করার প্রয়োজন৷ রিস্টার্ট করার পরে আপনার প্রক্রিয়া করার সম্মতি চাওয়া হবে৷</translation>
 <translation id="3076677906922146425">সকলকে Chrome এ কোনো ব্যক্তিকে যোগ করার অনুমতি দিন</translation>
@@ -1585,6 +1599,7 @@
 <translation id="3277710850168074473">মিডিয়া উপাদানগুলি প্লে করার জন্য ব্যবহারকারির অঙ্গভঙ্গীর প্রয়োজনীয়তা। এটি অক্ষম করা হলে স্বতঃবাজানো কাজ করার অনুমতি দেবে।</translation>
 <translation id="3280237271814976245">এই &amp;রূপে সংরক্ষণ করুন...</translation>
 <translation id="3280431534455935878">প্রস্তুতি</translation>
+<translation id="3284674070818187654">অনুসন্ধান এবং অন্যান্য Google পরিষেবাগুলি ব্যক্তিগত করতে Google  আপনার ব্রাউজিং ইতিহাস ব্যবহার করতে পারে। আপনি myaccount.google.com থেকে এটি নিয়ন্ত্রণ করতে পারেন।</translation>
 <translation id="3285322247471302225">নতুন &amp;ট্যাব</translation>
 <translation id="3288047731229977326">বিকাশকারী মোডে চলমান এক্সটেনশানগুলি আপনার কম্পিউটারের ক্ষতি করতে পারে৷ যদি আপনি একজন বিকাশকারী না হন, তবে সুরক্ষিত থাকার জন্য আপনার এই এক্সটেনশানগুলিকে বিকাশকারী মোডে চালানো অক্ষম করা উচিৎ৷</translation>
 <translation id="3289566588497100676">সহজ ইনপুট প্রতীক</translation>
@@ -1686,6 +1701,7 @@
 <translation id="3413122095806433232">CA ইস্যুকারীগণ: <ph name="LOCATION" /></translation>
 <translation id="3414856743105198592">সরানোযোগ্য মিডিয়া বিন্যাস করা সমস্ত ডেটা মুছে দিতে চলেছে৷ আপনি কি চালিয়ে যেতে চান?</translation>
 <translation id="3414952576877147120">মাপ:</translation>
+<translation id="3416248389957650982">সাইন ইন করার পর myaccount.google.com খুলুন</translation>
 <translation id="3420980393175304359">ব্যক্তি পরিবর্তন করুন</translation>
 <translation id="3423858849633684918">দয়া করে <ph name="PRODUCT_NAME" />-কে পুনঃলঞ্চ করুন</translation>
 <translation id="3425233587047449821">নতুন কোরীয় IME</translation>
@@ -1733,6 +1749,7 @@
 <translation id="3479552764303398839">এখনই নয়</translation>
 <translation id="3480892288821151001">উইন্ডো বাম দিকে রাখুন</translation>
 <translation id="3481915276125965083">এই পৃষ্ঠাতে নিম্নোক্ত পপ-আপগুলি ব্লক করা হয়েছে:</translation>
+<translation id="3482214069979148937">পূর্ণ স্ক্রীন থেকে বেরিয়ে যেতে |<ph name="ACCELERATOR" />| ধরে থাকুন</translation>
 <translation id="3484869148456018791">নতুন শংসাপত্র আনুন</translation>
 <translation id="3487007233252413104">নামহীন ক্রিয়াকলাপ</translation>
 <translation id="348771913750618459">আইফ্রেম-ভিত্তিক সাইন ইন প্রবাহ</translation>
@@ -1827,7 +1844,6 @@
 <translation id="3593965109698325041">শংসাপত্র নাম সীমাবদ্ধতাসমূহ</translation>
 <translation id="3595596368722241419">ব্যাটারি পুরো চার্জ</translation>
 <translation id="3600456501114769456">আপনার প্রশাসকের দ্বারা আপনার ডিভাইসে স্থানীয় ফাইলগুলির অ্যাক্সেস অক্ষম করা আছে৷</translation>
-<translation id="3601395307734599350">আপনার সকল এক্সটেনশান এখানে আছে</translation>
 <translation id="3603385196401704894">কানাডীয় ফরাসি</translation>
 <translation id="3603622770190368340">নেটওয়ার্ক শংসাপত্র প্রাপ্ত করুন</translation>
 <translation id="3605780360466892872">বটনডাউন</translation>
@@ -1996,6 +2012,7 @@
     <ph name="BEGIN_LINK" />Google ড্রাইভে<ph name="END_LINK" /> ব্যাকআপ করার জন্য প্রস্তুত</translation>
 <translation id="3816844797124379499">অ্যাপ্লিকেশান জোড়া যায়নি কারণ এটি "<ph name="APP_NAME" />"-এর সাথে সঙ্ঘাত করে৷</translation>
 <translation id="3819007103695653773">পটভূমি পুশ বার্তা পাঠাতে সমস্ত সাইটকে অনুমতি দিন</translation>
+<translation id="3819752733757735746">অ্যাক্সেস সুইচ করুন (মাত্র এক বা দুই সুইচের মাধ্যমে কম্পিউটার নিয়ন্ত্রণ করুন)</translation>
 <translation id="3819800052061700452">&amp;পূর্ণ-স্ক্রীন</translation>
 <translation id="3822265067668554284">আপনার বাস্তবিক অবস্থান ট্র্যাক করতে কোনও সাইটকে অনুমতি দেবেন না</translation>
 <translation id="3825863595139017598">মঙ্গোলিয়ান কীবোর্ড</translation>
@@ -2194,6 +2211,7 @@
 <translation id="4120817667028078560">পাথ অত্যন্ত বড়</translation>
 <translation id="4121428309786185360">এই তারিখে মেয়াদউত্তীর্ণ হয়</translation>
 <translation id="412730574613779332">স্প্যানডেক্স</translation>
+<translation id="4127528900246453928"><ph name="ORIGIN" /> এখন পূর্ণ-স্ক্রীনে রয়েছে।</translation>
 <translation id="4130199216115862831">ডিভাইস লগ</translation>
 <translation id="4130207949184424187">আপনি বহুউপযোগী ক্ষেত্র থেকে অনুসন্ধান করলে কোন পৃষ্ঠাটি দেখানো হবে তা এই এক্সটেনশানটি পরিবর্তন করেছে।</translation>
 <translation id="4130750466177569591">আমি সম্মত</translation>
@@ -2207,7 +2225,6 @@
 <translation id="4151403195736952345">গ্লোবাল ডিফল্ট (সনাক্ত করুন) ব্যবহার করুন</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{১টি ট্যাব}one{#টি ট্যাব}other{#টি ট্যাব}}</translation>
 <translation id="4154664944169082762">আঙ্গুলের ছাপ</translation>
-<translation id="4157188838832721931">পাসওয়ার্ডগুলির পৃষ্ঠাতে পাসওয়ার্ডগুলি প্রকাশ করার আগে ব্যবহারকারীকে তার OS-এর পাসওয়ার্ডের জন্য প্রণোদিত হওয়া অক্ষম করুন।</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">প্লে তালিকা খুলুন</translation>
 <translation id="4159681666905192102">এইটি হল বাচ্চাদের জন্য <ph name="CUSTODIAN_EMAIL" /> এবং <ph name="SECOND_CUSTODIAN_EMAIL" /> দ্বারা পরিচালিত একটি অ্যাকাউন্ট৷</translation>
@@ -2219,6 +2236,7 @@
 <translation id="4172051516777682613">সর্বদা দেখান</translation>
 <translation id="417475959318757854">অ্যাপ্লিকেশান লঞ্চারটিকে কেন্দ্রে আনুন।</translation>
 <translation id="4176463684765177261">অক্ষম</translation>
+<translation id="4179512409951755566">OSK ওভারস্ক্রোল সক্ষম করুন</translation>
 <translation id="4180788401304023883">CA শংসাপত্র "<ph name="CERTIFICATE_NAME" />"মুছবেন?</translation>
 <translation id="418179967336296930">রাশিয়ান ফোনেটিক (YaZHert) কীবোর্ড</translation>
 <translation id="4181841719683918333">ভাষাসমূহ</translation>
@@ -2250,7 +2268,6 @@
 <translation id="4218259925454408822">অন্য একটি অ্যাকাউন্টের সাইন ইন করুন</translation>
 <translation id="4219614746733932747">সক্ষম করা হলে, ডিভাইস স্কেল ফ্যাক্টরের জন্য সামগ্রী স্কেল করতে Blink তার জুম করার প্রক্রিয়া ব্যবহার করে।</translation>
 <translation id="4220865787605972627">যদি বৈশিষ্ট্যটিকে প্রদর্শন সমর্থন করে, তবে প্রদর্শনের রঙ ক্রমাঙ্কন অনুমোদন করুন।</translation>
-<translation id="4233506668751282421">ডেস্কটপ শেয়ারের জন্য অডিও সক্ষম করুন</translation>
 <translation id="4235200303672858594">সম্পূর্ণ স্ক্রীন</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> এর জন্য অ্যাকাউন্ট যোগ করুন</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> এই ভাষাতে প্রদর্শিত হবে না</translation>
@@ -2258,7 +2275,6 @@
 <translation id="4242577469625748426">ডিভাইসে নীতি সেটিংস ইনস্টল ব্যর্থ হয়েছে: <ph name="VALIDATION_ERROR" />৷</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> আপনার মাউস কার্সার গোপন করতে চাইছে৷</translation>
 <translation id="424546999567421758">খুব বেশি পরিমান ডিস্কের ব্যবহার সনাক্ত করা হয়েছে</translation>
-<translation id="4247072926966606568">এই ফ্ল্যাগ চালু থাকলে, অডিও ভাগ করা হবে কিনা তা ডেস্কটপ শেয়ার চয়নকারি উইন্ডো ব্যবহারকারিকে চয়ন করতে দেবে।</translation>
 <translation id="424726838611654458">সর্বদা Adobe Reader এ খুলুন</translation>
 <translation id="4249248555939881673">নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করা হচ্ছে...</translation>
 <translation id="4249373718504745892">এই পৃষ্ঠাটিকে আপনার ক্যামেরা এবং মাইক্রোফোন অ্যাক্সেস করা থেকে অবরুদ্ধ করা হয়েছে৷</translation>
@@ -2330,7 +2346,6 @@
 <translation id="4358697938732213860">একটি ঠিকানা যুক্ত করুন</translation>
 <translation id="4359408040881008151">নির্ভরশীল এক্সটেনশান(গুলি) হওয়ার কারণে ইনস্টল রয়েছে৷</translation>
 <translation id="4361190688154226069">দর্শনগুলিতে আয়তক্ষেত্র-ভিত্তিক টার্গেট</translation>
-<translation id="4363372140743955595">পাসওয়ার্ড পরিচালকের পুনঃপ্রমাণীকরণ</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ডাউনলোড করা হয়েছে</translation>
 <translation id="4364830672918311045">বিজ্ঞপ্তিগুলি প্রদর্শন করুন</translation>
 <translation id="4365673000813822030">উপস, সিঙ্ক কাজ করা বন্ধ করে দিয়েছে৷</translation>
@@ -2387,6 +2402,7 @@
 <translation id="4449935293120761385">স্বতঃপূরণ সম্পর্কে</translation>
 <translation id="4449996769074858870">এই ট্যাবটি অডিও প্লে করছে৷</translation>
 <translation id="4450974146388585462">নির্ণয় করুন</translation>
+<translation id="4452426408005428395">আরে, ঠিক আছে</translation>
 <translation id="4454939697743986778">এই শংসাপত্রটি আপনার সিস্টেম প্রশাসক দ্বারা ইনস্টল করা হয়েছে৷</translation>
 <translation id="445923051607553918">Wi-Fi  নেটওয়ার্কে যোগ দিন</translation>
 <translation id="4462159676511157176">কাস্টম নাম সার্ভার</translation>
@@ -2446,6 +2462,7 @@
 <translation id="4558426062282641716">স্বয়ংক্রিয়ভাবে লঞ্চের অনুমতি অনুরোধ করা হয়েছে</translation>
 <translation id="4563210852471260509">প্রাথমিক ইনপুট  ভাষা  চীনা</translation>
 <translation id="456664934433279154">টুলকিট-দৃশ্য ভিত্তিক Chrome অ্যাপ্লিকেশানগুলির উইন্ডোগুলি ব্যবহার করা হবে কিনা তা নিয়ন্ত্রণ করে।</translation>
+<translation id="4566767428015023961">মাউস কার্সার হাইলাইট করুন</translation>
 <translation id="4569998400745857585">লুক্কায়িত এক্সটেনশনগুলি সমন্বিত মেনু </translation>
 <translation id="4570444215489785449">আপনি এখন 'Chrome পরিচালক' থেকে যেকোনো সময়ে এই ডিভাইসটিকে দূর থেকে লক করতে পারবেন৷</translation>
 <translation id="4572659312570518089">"<ph name="DEVICE_NAME" />" এ সংযুক্ত করার সময় প্রমাণীকরণ বাতিল করা হয়েছে৷</translation>
@@ -2463,7 +2480,6 @@
 <translation id="4594109696316595112">এককালীন সক্রিয়করণ: <ph name="DEVICE_TYPE" /> এ Smart Lock সক্ষম করতে আপনার পাসওয়ার্ড লিখুন। Smart Lock এর মাধ্যমে আপনার ফোন এই ডিভাইসকে আনলক করবে—কোনো পাসওয়ার্ড ছাড়াই। এই বৈশিষ্ট্যটি পরিবর্তন বা বন্ধ করতে আপনার <ph name="DEVICE_TYPE" /> এর সেটিংসে যান।</translation>
 <translation id="4595560905247879544">অ্যাপ্লিকেশান এবং এক্সটেনশানগুলি শুধুমাত্র পরিচালক (<ph name="CUSTODIAN_NAME" />) দ্বারা পরিবর্তন করা যাবে।</translation>
 <translation id="4601242977939794209">EMF রূপান্তর</translation>
-<translation id="4601250583401186741">একটি নিয়ন্ত্রকের সাথে যুক্ত করুন</translation>
 <translation id="4602466770786743961">আপনার ক্যামেরা এবং মাইক্রোফোন যেকোনো সময় অ্যাক্সেস করতে <ph name="HOST" /> কে মঞ্জুরি দেয়</translation>
 <translation id="4605399136610325267">ইন্টারনেট সংযুক্ত নেই</translation>
 <translation id="4608500690299898628">&amp;সন্ধান করুন...</translation>
@@ -2498,6 +2514,7 @@
 <translation id="4645676300727003670">&amp;রাখুন</translation>
 <translation id="4647090755847581616">&amp;Close Tab</translation>
 <translation id="4647697156028544508">দয়া করে "<ph name="DEVICE_NAME" />"-এর পিন লিখুন:</translation>
+<translation id="4647836739603100666">এগিয়ে যাওয়ার মাধ্যমে, আপনি <ph name="BEGIN_LINK" />Google পরিষেবার শর্তাবলী<ph name="END_LINK" /> এবং <ph name="BEGIN_LINK" />গোপনীয়তা নীতিতে<ph name="END_LINK" /> সম্মতি জানাচ্ছেন।</translation>
 <translation id="4648491805942548247">অপর্যাপ্ত অনুমতিগুলি</translation>
 <translation id="4653235815000740718">OS পুনরুদ্ধার মিডিয়াটি তৈরি করার সময় একটি ত্রুটি ছিল৷ ব্যবহৃত সঞ্চয় ডিভাইসটির খোঁজ পাওয়া যায়নি৷</translation>
 <translation id="4654488276758583406">অতি ক্ষুদ্র</translation>
@@ -2717,6 +2734,7 @@
 <translation id="4974733135013075877">প্রস্থান এবং চাইল্ডলক করুন</translation>
 <translation id="497490572025913070">যৌগিক রেন্ডার স্তরের সীমাগুলি</translation>
 <translation id="4977942889532008999">অ্যাক্সেস নিশ্চিত করুন</translation>
+<translation id="4982319280615426980">সরলীকৃত পূর্ণ স্ক্রীন / মাউস লক UI।</translation>
 <translation id="4982718461356080574">যখন স্তুপীকৃত হয়ে যায় তখন নিষ্ক্রিয় ট্যাবগুলির বন্ধ বোতামগুলি গোপন করে</translation>
 <translation id="498294082491145744">কুকিজ, JavaScript, প্লাগ ইন, ভূ-অবস্থান, মাইক্রোফোন, ক্যামেরা ইত্যাদির মতো বৈশিষ্ট্যগুলিতে ওয়েবসাইটগুলির অ্যাক্সেস নিয়ন্ত্রণ করে, আপনার সেই সেটিংস পরিবর্তন করুন।</translation>
 <translation id="4988526792673242964">পৃষ্ঠাসমূহ</translation>
@@ -2754,6 +2772,7 @@
 <translation id="5039804452771397117">মঞ্জুরি দিন</translation>
 <translation id="5045550434625856497">ভুল পাসওয়ার্ড</translation>
 <translation id="5048179823246820836">নরডিক</translation>
+<translation id="5048294425697652159">প্রদর্শন ক্রমাঙ্কনের জন্য Quirks ক্লায়েন্ট সক্ষম করে।</translation>
 <translation id="5053604404986157245">অনিয়মিতভাবে তৈরি TPM পাসওয়ার্ড উপলব্ধ নয়৷ এটি একটি পাওয়ারওয়াশের পরে স্বাভাবিক হয়৷</translation>
 <translation id="5053803681436838483">নতুন শিপিং ঠিকানা...</translation>
 <translation id="5055309315264875868">অনলাইনে আপনার সিঙ্ক হওয়া পাসওয়ার্ডগুলি পরিচালনা করতে পাসওয়ার্ড পরিচালক সেটিংস পৃষ্ঠায় একটি লিঙ্ক দেখান৷</translation>
@@ -2851,7 +2870,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">মিডিয়া প্লেব্যাকের জন্য অঙ্গভঙ্গির প্রয়োজনীয়তা</translation>
 <translation id="5189060859917252173">"<ph name="CERTIFICATE_NAME" />" শংসাপত্রটি একটি শংসাকরণ কর্তৃপক্ষের প্রতিনিধিত্ব করে৷</translation>
-<translation id="5196117515621749903">এড়িয়ে যাওয়ার ক্যাশে পুনরায় লোড করুন</translation>
 <translation id="5196716972587102051">২</translation>
 <translation id="5197255632782567636">ইন্টারনেট</translation>
 <translation id="5197680270886368025">সিঙ্ক সম্পূর্ণ৷</translation>
@@ -2866,6 +2884,7 @@
 <translation id="521582610500777512">ফটো বাতিল হয়েছে</translation>
 <translation id="5218183485292899140">সুইস ফরাসি</translation>
 <translation id="5218766986344577658">লিংকের দ্ব্যর্থতা নিরসনের পপআপ</translation>
+<translation id="5220992698394817380">নির্বাচন করার IME মেনু সক্ষম করে</translation>
 <translation id="5222676887888702881">সাইন আউট</translation>
 <translation id="5225324770654022472">অ্যাপ্লিকেশানগুলির শর্টকাট দেখান</translation>
 <translation id="5227536357203429560">ব্যক্তিগত নেটওয়ার্ক যুক্ত করুন...</translation>
@@ -2908,6 +2927,7 @@
 <translation id="5271247532544265821">সরলীকৃত/ঐতিহ্যশীল চীনা মোড টগল করুন</translation>
 <translation id="5271549068863921519">পাসওয়ার্ড সংরক্ষণ করুন</translation>
 <translation id="5273628206174272911">অনুভূমিক ওভারস্ক্রোলের প্রতিক্রিয়াতে পরীক্ষামূলক ইতিহাস নেভিগেশন৷</translation>
+<translation id="5275194674756975076">ঠিক আছে, রিফ্রেশ করুন</translation>
 <translation id="5275795814002959418">এই সাইট থেকে <ph name="COUNT" />টি</translation>
 <translation id="5275973617553375938">Google ড্রাইভ থেকে উদ্ধার করা ফাইলগুলি</translation>
 <translation id="527605719918376753">ট্যাব নিঃশব্দ করুন</translation>
@@ -2981,6 +3001,7 @@
 <translation id="5368720394188453070">আপনার ফোন লক করা আছে৷ লিখতে আনলক করুন৷</translation>
 <translation id="5369927996833026114">Chrome অ্যাপ্লিকেশান লঞ্চার আবিষ্কার করুন</translation>
 <translation id="5370819323174483825">&amp;পুনরায় লোড করুন</translation>
+<translation id="5372066618989754822">ভাষা সেটিংস পৃষ্ঠায় নতুন IME মেনুতে অ্যাক্সেস সক্ষম করে।</translation>
 <translation id="5372529912055771682">সরবরাহকৃত তালিকাভুক্তি মোড অপারেটিং সিস্টেমের এই সংস্করণ দ্বারা সমর্থিত নয়৷ নিশ্চিত করুন যে আপনি নতুন সংস্করণ চালাচ্ছেন এবং পুনরায় চেষ্টা করুন৷</translation>
 <translation id="5374359983950678924">চিত্র পরিবর্তন করুন</translation>
 <translation id="5376169624176189338">পিছনে যাওয়ার জন্য ক্লিক করুন, ইতিহাস দেখার জন্য ধরে রাখুন</translation>
@@ -3070,6 +3091,7 @@
 <translation id="5486561344817861625">ব্রাউজার আরম্ভ অনুকরণ করুন</translation>
 <translation id="54870580363317966">এই তত্ত্বাবধানে থাকা ব্যবহারকারীর জন্য কোন অবতার চয়ন করুন৷</translation>
 <translation id="5488468185303821006">ছদ্মবেশে মঞ্জুর করুন</translation>
+<translation id="5489789060051091748">মুখে-বলার-জন্য-নির্বাচন-করুন: অনুসন্ধান চেপে ধরে রাখুন এবং যেকোনো কিছু মুখে বলার জন্য ক্লিক করুন অথবা টেনে আনুন</translation>
 <translation id="549294555051714732">স্বতঃপূর্ণ প্রস্তাবনাগুলির জন্য সাবস্ট্রিংয়ের মিল</translation>
 <translation id="5494362494988149300">&amp;সম্পন্ন হলে খুলুন</translation>
 <translation id="5494920125229734069">সকল নির্বাচন করুন</translation>
@@ -3166,6 +3188,7 @@
 <translation id="5626134646977739690">নাম:</translation>
 <translation id="5627086634964711283">আপনি হোম বোতামটি ক্লিক করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation>
 <translation id="5627259319513858869">পরীক্ষামূলক ক্যানভাস বৈশিষ্ট্যের ব্যবহার সক্ষম করে যেগুলি এখনো বিকাশে রয়েছে৷</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ব্রাউজারের উপরের সীমানা ক্রোমে মেটারিয়াল ডিজাইন</translation>
 <translation id="5633060877636360447">এটি স্থায়ীভাবে এই ডিভাইস থেকে অন্তত <ph name="TOTAL_COUNT" />টি আইটমে মুছে ফেলবে কিন্তু অন্যান্য ডিভাইস থেকে সিঙ্ক করা আইটেমগুলি সাফ করবে না।</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> ব্যবহার করতে গেলে আপনাকে প্রথমে <ph name="LINK_START" />নেটওয়ার্কের সাইন-ইন পৃষ্ঠায় যেতে হবে<ph name="LINK_END" />, যা কয়েক সেকেন্ডের মধ্যে স্বয়ংক্রিয়ভাবে খুলবে৷ যদি এমন না হয়, তাহলে নেটওয়ার্কটি ব্যবহার করা যেতে পারে৷</translation>
@@ -3193,8 +3216,10 @@
 <translation id="5677928146339483299">অবরুদ্ধ</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" />-এর পড়া এবং লেখার অ্যাক্সেস মঞ্জুর করা হয়েছে৷</translation>
 <translation id="567881659373499783">সংস্করণ <ph name="PRODUCT_VERSION" /></translation>
+<translation id="5678862612529498267">কীবোর্ড ফোকাসের মাধ্যমে বস্তুটি হাইলাইট করুন</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" />এ আপনার ডেটা পড়ে</translation>
 <translation id="5680928275846978395">ওভারভিউ মোডে পাঠ্য ফিল্টার করা</translation>
+<translation id="5683818630978268777">পরীক্ষামূলক কীবোর্ড লক UI।</translation>
 <translation id="5684661240348539843">সম্পদ শনাক্তকারী</translation>
 <translation id="569068482611873351">আমদানি...</translation>
 <translation id="56907980372820799">ডেটা লিঙ্ক করুন</translation>
@@ -3534,6 +3559,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">স্পর্শ করা সমন্বয়</translation>
 <translation id="6218364611373262432">প্রতি রিস্টার্টে অ্যাপ্লিকেশান লঞ্চার ইনস্টলের স্থিতি পুনরায় সেট করুন৷ এই পতাকা সেট করা থাকলে, প্রতিবার Chrome শুরু হওয়ার সময় ভুলে যায় যে লঞ্চার ইনস্টল রয়েছে৷ এটি অ্যাপ্লিকেশান লঞ্চার ইনস্টল ফ্লো পরীক্ষার জন্য ব্যবহার করা হয়৷</translation>
+<translation id="6219616557885484178">Google Play থেকে ইনস্টল করতে এবং আপনার <ph name="DEVICE_TYPE" /> এ ব্যবহার করতে লাখ লাখের বেশি অ্যাপ্লিকেশান ও গেম থেকে চয়ন করুন</translation>
 <translation id="6219717821796422795">হানইয়ু</translation>
 <translation id="6220413761270491930">এক্সটেনশান লোড হওয়ার সময় ত্রুটি</translation>
 <translation id="6221345481584921695">Google নিরাপদ ব্রাউজিং সাম্প্রতিক <ph name="SITE" /> এ <ph name="BEGIN_LINK" />ম্যালওয়্যার শনাক্ত করেছে<ph name="END_LINK" />। যেসব ওয়েবসাইট সাধারণত নিরাপদ থাকে, সেগুলি কখনও কখনও ম্যালওয়্যার দ্বারা আক্রান্ত হয়। <ph name="SUBRESOURCE_HOST" />, একটি পরিচিত ম্যালওয়্যার বিতরণকারী, থেকে ক্ষতিকারক সামগ্রী আসে। কয়েক ঘণ্টা পরে আপনার ফিরে আসা উচিত।</translation>
@@ -3660,7 +3686,6 @@
 <translation id="6420676428473580225">ডেস্কটপে যোগ করুন</translation>
 <translation id="6422329785618833949">ফটো সরানো হয়েছে</translation>
 <translation id="642282551015776456">ফাইল বা ফোল্ডারের নাম হিসাবে নামটি ব্যবহৃত নাও হতে পারে</translation>
-<translation id="642322423610046417">আপনার যে এক্সটেনশানগুলির দরকার নেই সেগুলি সরাতে প্রসঙ্গ (ডান ক্লিক) মেনু ব্যবহার করুন।</translation>
 <translation id="6423239382391657905">VPN খুলুন</translation>
 <translation id="6423731501149634044">Adobe Reader-কে আপনার ডিফল্ট PDF ভিউয়ার রূপে ব্যবহার করবেন?</translation>
 <translation id="6425092077175753609">মেটারিয়াল</translation>
@@ -3730,6 +3755,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">কীবোর্ড লক মোডে একটি পরীক্ষামূলক পূর্ণ স্ক্রীন যার জন্য ব্যবহারকারিদেরকে বেরিয়ে যাওয়ার জন্য Esc ধরে রাখতে হবে।</translation>
 <translation id="6527303717912515753">শেয়ার করুন</translation>
 <translation id="6528546217685656218">এই ক্লায়েন্ট শংসাপত্রের জন্য ব্যক্তিগত কী পাওয়া যাচ্ছে না বা এটি অবৈধ।</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> সিঙ্ক হচ্ছে...</translation>
@@ -3802,6 +3828,7 @@
 <translation id="6639554308659482635">SQLite স্মৃতি</translation>
 <translation id="6644756108386233011">পরিবর্তিত <ph name="IDS_SHORT_PRODUCT_NAME" /> সেটিংস রিসেট করবেন?</translation>
 <translation id="6647228709620733774">Netscape শংসাপত্র কর্তৃপক্ষ নাকচের URL</translation>
+<translation id="6649018507441623493">একটু অপেক্ষা করুন…</translation>
 <translation id="6649068951642910388">সেশন পুনরুদ্ধার UI, একটি তথ্য দণ্ডের পরিবর্তে একটি বুদবুদে প্রদর্শন করা হবে।</translation>
 <translation id="665061930738760572">&amp;নতুন উইন্ডোতে খুলুন</translation>
 <translation id="6652975592920847366">OS পুনরুদ্ধার মিডিয়া তৈরি করুন</translation>
@@ -3910,6 +3937,7 @@
 <translation id="6825883775269213504">রাশিয়ান</translation>
 <translation id="6827236167376090743">পাশাপাশি এই ভিডিওটি দীর্ঘ সময় ধরে চলতে থাকবে৷</translation>
 <translation id="6828153365543658583">সাইন-ইনকে নিম্নলিখিত ব্যবহারকারীদের মধ্যে সীমাবদ্ধ রাখুন:</translation>
+<translation id="6828860976882136098">সকল ব্যবহারকারীর জন্য স্বয়ংক্রিয় আপডেট সেট আপ করতে ব্যর্থ হয়েছে (ফ্লাইটপূর্ব সম্পাদন ত্রুটি: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">আপনার <ph name="DEVICE_TYPE" /> এর মাধ্যমে সহায়তা পান।</translation>
 <translation id="6829270497922309893">আপনার প্রতিষ্ঠানের মধ্যে নথিভুক্ত করুন</translation>
 <translation id="6830590476636787791">প্রথম-চালিত টিউটোরিয়ালে অ্যানিমেটেড রুপান্তরণ</translation>
@@ -3933,7 +3961,6 @@
 <translation id="6860427144121307915">একটি ট্যাবে খুলুন</translation>
 <translation id="6862635236584086457">এই ফোল্ডারটিতে সংরক্ষিত সব ফাইল অনলাইনে স্বয়ংক্রিয়ভাবে ব্যাক আপ করা হয়েছে</translation>
 <translation id="6865313869410766144">স্বতঃপূর্ণ ফর্ম ডেটা</translation>
-<translation id="6865319096921627602">Android এ সমন্বিত মিডিয়া পাইপলাইন সক্ষম করে।</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> এ স্যুইচ করুন</translation>
 <translation id="6869402422344886127">পরীক্ষিত চেকবাক্স</translation>
 <translation id="6870130893560916279">ইউক্রেনীয় কীবোর্ড</translation>
@@ -3972,6 +3999,7 @@
 <translation id="6930242544192836755">সময়কাল</translation>
 <translation id="6934265752871836553">Chrome যাতে আরো তাড়াতাড়ি সামগ্রী আনতে পারে তাই bleeding-edge কোড ব্যবহার করুন। এই পাথের পিছনের পরিবর্তনগুলি সামগ্রীর দিক থেকে সম্ভবত প্রচুর পরিবর্তন নিয়ে আসবে।</translation>
 <translation id="6935367737854035550">ব্রাউজারের উপরের সীমানা ক্রোমে মেটারিয়াল ডিজাইন উপাদানগুলি সেট করে।</translation>
+<translation id="6935867720248834680">GMS পরিষেবাগুলি অনুপলব্ধ</translation>
 <translation id="6937152069980083337">Google জাপানিয় ইনপুট (ইউএস কীবোর্ডের জন্য)</translation>
 <translation id="693807610556624488">"<ph name="DEVICE_NAME" />" এ লেখার ক্রিয়াকলাপ অ্যাট্রিবিউটের সর্বাধিক দৈর্ঘ্য অতিক্রম করেছে।</translation>
 <translation id="6939777852457331078">মার্কিন ওয়ার্কম্যান কীবোর্ড</translation>
@@ -4026,6 +4054,7 @@
 <translation id="7006017748900345484">WebRTC H.264 সফ্টওয়্যার ভিডিও এনকোডার/ডিকোডার</translation>
 <translation id="7006634003215061422">নীচের মার্জিন</translation>
 <translation id="7006844981395428048">$1 টি অডিও</translation>
+<translation id="7008270479623533562">এই এক্সটেনশানটি চালানোর জন্য, আপনাকে পৃষ্ঠাটি রিফ্রেশ করতে হবে। আপনি এক্সটেনশান আইকনে ডান ক্লিক করে এই সাইটে স্বয়ংক্রিয়ভাবে এই এক্সটেনশনটি চালাতে পারেন।</translation>
 <translation id="7009045250432250765">একক ক্লিকে স্বতঃপূর্ণ</translation>
 <translation id="7010160495478792664">হার্ডওয়্যার দ্বারা দ্রুততর করা ভিডিও ডিকোড যেখানে উপলব্ধ।</translation>
 <translation id="7010400591230614821">আক্রমনাত্মক ট্যাব মুক্তির কৌশল</translation>
@@ -4088,6 +4117,7 @@
 <translation id="7082055294850503883">ডিফল্ট অনুসারে CapsLock স্থিতিটি এবং ইনপুট লোয়ার কেসটি উপেক্ষা করুন</translation>
 <translation id="7088418943933034707">শংসাপত্রগুলি পরিচালনা করুন...</translation>
 <translation id="7088434364990739311">আপডেট যাচাই সূচনা হতে ব্যর্থ হয়েছে (ত্রুটি কোড <ph name="ERROR" />)৷</translation>
+<translation id="708856090370082727">OSK ওভারস্ক্রোল সমর্থন সক্ষম করে। এই ফ্ল্যাগ চালু থাকলে, OSK শুধুমাত্র ভিজুয়াল ভিউপোর্ট ছোট বড় করবে।</translation>
 <translation id="7088674813905715446">প্রশাসকের দ্বারা এই ডিভাইসটি অ্যাক্সেসহীন অবস্থায় রাখা হয়েছে। নথীভুক্তের জন্য এটি সক্ষম করতে, দয়া করে একটি মুলতুবি স্থিতিতে আপনার প্রশাসককে ডিভাইসটি রাখতে দিন।</translation>
 <translation id="708969677220991657">HTTPS মারফত স্থানীয় হোস্টে অনুরোধের অনুমোদন দেয় এমনকি অবৈধ শংসাপত্র থাকলেও৷</translation>
 <translation id="7092106376816104">পপ-আও ব্যতিক্রম</translation>
@@ -4162,6 +4192,7 @@
 <translation id="721331389620694978">ব্রাউজিং অভ্যাস প্রতিফলিত করতে পারে এমন কিছু সেটিংস সাফ করা হবে না।</translation>
 <translation id="7214227951029819508">উজ্জ্বলতা:</translation>
 <translation id="7219357088166514551"><ph name="ENGINE" /> এ অনুসন্ধান করুন বা URL লিখুন</translation>
+<translation id="722055596168483966">Google পরিষেবাগুলিকে ব্যক্তিগত করুন</translation>
 <translation id="7221155467930685510">$১ GB</translation>
 <translation id="7221855153210829124">বিজ্ঞপ্তিগুলি দেখান</translation>
 <translation id="7221869452894271364">এই পৃষ্ঠাটি পুনঃ লোড করুন</translation>
@@ -4188,7 +4219,6 @@
 <translation id="7256710573727326513">একটি ট্যাবে খুলুন</translation>
 <translation id="7257173066616499747">Wi-Fi নেটওয়ার্কগুলি</translation>
 <translation id="7257666756905341374">আপনি যে ডেটা প্রতিলিপি ও লেপন করেন তা পড়ুন</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 এ ভিডিও ক্যাপচার ও ভিডিও ডিভাইস নিয়ন্ত্রণের জন্য AVFoundation'র ব্যবহার সক্ষম করুন৷ অন্যথায়, QTKit ব্যবহার করা হবে৷</translation>
 <translation id="7260504762447901703">অ্যাক্সেস প্রত্যাহার করুন</translation>
 <translation id="7262004276116528033">এই সাইন ইন করা পরিষেবাটি <ph name="SAML_DOMAIN" /> দ্বারা হোস্ট করা হয়</translation>
 <translation id="7262221505565121">আনসান্ডবক্সড প্ল্যাগ ইন অ্যাক্সেস ব্যতিক্রমসমূহ</translation>
@@ -4207,6 +4237,7 @@
 <translation id="7280877790564589615">অনুমতির জন্য অনুরোধ করা হয়েছে</translation>
 <translation id="7282547042039404307">মসৃণ</translation>
 <translation id="7287143125007575591">অ্যাক্সেস অস্বীকার করা হয়েছে।</translation>
+<translation id="7288592446024861651">আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস আপনার Google অ্যাকাউন্টে সিঙ্ক হবে যাতে আপনি আপনার সমস্ত ডিভাইসে সেগুলি ব্যবহার করতে পারেন। কি সিঙ্ক করবেন তা <ph name="BEGIN_LINK" /> থেকে নিয়ন্ত্রণ করুন</translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">নিবন্ধিকরণ নিশ্চিত করুন</translation>
 <translation id="7295019613773647480">তত্ত্বাবধানে থাকা ব্যবহারকারীদের সক্ষম করুন</translation>
@@ -4225,7 +4256,6 @@
 <translation id="7314278895724341067">NTP অফলাইন পৃষ্ঠাগুলি সক্ষম করে</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (বর্তমান)</translation>
 <translation id="7321545336522791733">সার্ভারে সংযোগ করা যাচ্ছে না</translation>
-<translation id="7324841169865301118">ডেস্কটপ শেয়ারের জন্য একটি ট্যাব বেছে নিতে ব্যবহারকারিকে সক্ষম করে।</translation>
 <translation id="7325437708553334317">উচ্চ বৈপরীত্য এক্সটেনশন</translation>
 <translation id="7326565110843845436">টাচপ্যাড তিন-আঙুল-ক্লিক</translation>
 <translation id="73289266812733869">অনির্বাচিত</translation>
@@ -4442,6 +4472,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> স্বয়ংক্রিয়ভাবে আপনার সংরক্ষণ করা পাসওয়ার্ড দিয়ে উপযুক্ত সাইটগুলিতে আপনাকে সাইন ইন করায়।</translation>
 <translation id="7644029910725868934">তত্ত্বাবধানে থাকা ব্যবহারকারীর জন্য পরিচালিত বুকমার্ক ফোল্ডার সক্ষম করুন।</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (মালিক)</translation>
+<translation id="7646771353003624501">ব্রাউজারকে জাগিয়ে তোলা এবং স্বয়ংক্রিয়ভাবে পটভূমিতে অফলাইন পৃষ্ঠাগুলি লোড হওয়া সক্ষম করে।</translation>
 <translation id="7646821968331713409">রাস্টার থ্রেডের সংখ্যা</translation>
 <translation id="7648048654005891115">কীম্যাপ ধরন</translation>
 <translation id="7648595706644580203">ভার্চুয়াল কীবোর্ডের জন্য অঙ্গভঙ্গি সম্পাদনা।</translation>
@@ -4591,6 +4622,7 @@
 <translation id="7878999881405658917">Google এই ফোনে একটি বিজ্ঞপ্তি পাঠিয়েছে। খেয়াল করুন যে, Bluetooth এর মাধ্যমে আপনি আপনার <ph name="DEVICE_TYPE" />-কে ১০০ ফুট দূর থেকে আনলক করে রাখতে পারেন। এটি কোনো ধরনের সমস্যার কারণ হলে, আপনি &lt;a&gt;সাময়িকভাবে এই বৈশিষ্ট্যটি অক্ষমিত করতে পারেন&lt;/a&gt;।</translation>
 <translation id="7879478708475862060">ইনপুট মোড অনুসরণ করুন</translation>
 <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />"এই অ্যাপ্লিকেশান এবং এক্সটেনশানসমূহ যোগ করে:</translation>
+<translation id="7884988936047469945">পরীক্ষামূলক অ্যাক্সেসযোগ্যতার বৈশিষ্ট্যগুলি</translation>
 <translation id="7885253890047913815">সাম্প্রতিক গন্তব্যস্থল</translation>
 <translation id="7885283703487484916">খুবই স্বল্প সময়</translation>
 <translation id="7887192723714330082">স্ক্রিনটি চালু এবং আনলক থাকাকালীন "Ok Google" এ প্রতিক্রিয়া দিন</translation>
@@ -4692,6 +4724,7 @@
 <translation id="8014154204619229810">আপডেটার বর্তমানে চলমান রয়েছে। পুনরায় চেক করতে মিনিটখানেকের মধ্যে রিফ্রেশ করুন।</translation>
 <translation id="8014206674403687691">ইনস্টল করা পূর্ববর্তী সংস্করণে <ph name="IDS_SHORT_PRODUCT_NAME" />কে নিয়ে যাওয়া যায়নি৷ দয়া করে আপনার ডিভাইসকে পুনরায় পাওয়ারওয়াশ করার চেষ্টা করুন৷</translation>
 <translation id="8017335670460187064"><ph name="LABEL" /></translation>
+<translation id="8017667670902200762">ত্রুটিপূর্ণ প্রমাণীকরণ</translation>
 <translation id="8022523925619404071">অটো আপডেট সক্ষম করুন</translation>
 <translation id="8023801379949507775">এক্সটেনশগুলি এখনই আপডেট করুন</translation>
 <translation id="8025789898011765392">কার্যগুলি</translation>
@@ -4699,6 +4732,7 @@
 <translation id="8026334261755873520">ব্রাউজ করা ডেটা সাফ করুন</translation>
 <translation id="8026964361287906498">(এন্টারপ্রাইজ নীতি দ্বারা পরিচালিত)</translation>
 <translation id="8028060951694135607">Microsoft মূল পুনরুদ্ধার</translation>
+<translation id="8028620363061701162">পটভূমিতে অফলাইন পৃষ্ঠাগুলি লোড হওয়া সক্ষম করে</translation>
 <translation id="8028993641010258682">মাপ</translation>
 <translation id="8030169304546394654">সংযোগ বিচ্ছিন্ন</translation>
 <translation id="8031722894461705849">স্লোভাক কীবোর্ড</translation>
@@ -4972,7 +5006,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">এর চিত্র</translation>
 <translation id="8428213095426709021">সেটিংস</translation>
-<translation id="8432590265309978927">পৃথক প্রক্রিয়াতে ক্রস সাইট iframes রেন্ডারিংয়ের জন্য অত্যন্ত পরীক্ষামূলক সমর্থন।</translation>
 <translation id="8432745813735585631">ইউএস কোলেম্যাক কীবোর্ড</translation>
 <translation id="8434177709403049435">&amp;এনকোডিং</translation>
 <translation id="8434480141477525001">NaCl ত্রুটিমুক্ত পোর্ট</translation>
@@ -5169,7 +5202,6 @@
 <translation id="8713979477561846077">US কীবোর্ডের জন্য ফিজিক্যাল কীবোর্ড স্বতঃ-সংশোধন সক্ষম করুন, যা ফিজিক্যাল কীবোর্ডে লেখার সময় প্রস্তাবনাগুলি প্রদান করতে পারে৷</translation>
 <translation id="871476437400413057">Google এর সংরক্ষিত পাসওয়ার্ডগুলি</translation>
 <translation id="8714838604780058252">পটভূমির গ্রাফিক্স</translation>
-<translation id="8716065142695381595">Android এ সমন্বিত (Android ও ডেস্কটপ) মিডিয়া পাইপলাইন সক্ষম করে।</translation>
 <translation id="8722421161699219904">মার্কিন আন্তর্জাতিক কীবোর্ড</translation>
 <translation id="872451400847464257">সার্চ ইঞ্জিন সম্পাদনা করুন</translation>
 <translation id="8724859055372736596">ফোল্ডারে &amp;দেখান</translation>
@@ -5189,6 +5221,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" />-এর পরিবর্তে <ph name="PROTOCOL" /> লিঙ্কসমূহ খুলুন</translation>
 <translation id="8737709691285775803">শিল</translation>
 <translation id="8741881454555234096">একটি মাউসের তুলনায় দূর্বল রেসুলিউশান বিশিষ্ট স্পর্শগুলিকে ক্ষতিপূরণ করার জন্য স্পর্শ করার অঙ্গভঙ্গির অবস্থান রিফাইন করুন।</translation>
+<translation id="8743712320294854924">শেল্ফে প্রসারিত ইনপুট বিকল্পগুলি দেখান।</translation>
 <translation id="874420130893181774">ঐতিহ্যবাহি পিনয়িন ইনপুট পদ্ধতি</translation>
 <translation id="8744525654891896746">এই তত্বাবধানে থাকা ব্যবহারকারীর জন্য একটি অবতার নির্বাচন করুন</translation>
 <translation id="8744641000906923997">রোমাজি</translation>
@@ -5258,6 +5291,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift কী মোড স্যুইচ</translation>
 <translation id="8852742364582744935">নিম্নলিখিত অ্যাপ্লিকেশন এবং এক্সটেনশন জোড়া হয়েছে:</translation>
+<translation id="8853611566624224021">প্রদর্শনের রঙ ক্রমাঙ্কনের জন্য Quirks সার্ভার থেকে icc প্রদর্শন ফাইলগুলির পুনরুদ্ধার সক্ষম করে।</translation>
 <translation id="885381502874625531">বেলারুশীয় কীবোর্ড</translation>
 <translation id="8856844195561710094">ব্লুটুথ ডিভাইস আবিষ্কার বন্ধ করতে ব্যর্থ৷</translation>
 <translation id="885701979325669005">সঞ্চয়স্থান</translation>
@@ -5307,7 +5341,6 @@
 <translation id="8925458182817574960">&amp;সেটিংস</translation>
 <translation id="8926389886865778422">আর জিজ্ঞাসা করবেন না</translation>
 <translation id="8926518602592448999">বিকাশকারী মোডে চলা এক্সটেনশানগুলি অক্ষম করুন</translation>
-<translation id="8929454297483336498">QTKit এর পরিবর্তে Mac OS X AVFoundation APIs এর ব্যবহার</translation>
 <translation id="8931394284949551895">নতুন ডিভাইসগুলি</translation>
 <translation id="8932730422557198035">Android Midi API ব্যবহার করুন</translation>
 <translation id="8933960630081805351">ফাইন্ডারে &amp;দেখান</translation>
@@ -5321,6 +5354,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">মুদ্রক শনাক্ত করা হয়েছে</translation>
 <translation id="8946359700442089734">এই <ph name="IDS_SHORT_PRODUCT_NAME" /> ডিভাইসে ডিবাগিং বৈশিষ্ট্যগুলি সম্পূর্ণরূপে সক্ষম করা নেই৷</translation>
+<translation id="8946784827990177241">WebUSB সমর্থন সক্রিয় করুন।</translation>
 <translation id="89515141420106838">প্রিন্টার ড্রাইভারের জন্য Chrome ওয়েব দোকান গ্যালারি অ্যাপ্লিকেশান সক্ষম করুন। অ্যাপ্লিকেশানটি নির্দিষ্ট USB আইডি দিয়ে একটি USB প্রিন্টারে প্রিন্ট সমর্থন করে এমন এক্সটেনশানগুলির জন্য Chrome ওয়েব দোকানে অনুসন্ধান করে।</translation>
 <translation id="895347679606913382">শুরু হচ্ছে...</translation>
 <translation id="8954952943849489823">স্থানান্তরণ ব্যর্থ হয়েছে, অপ্রত্যাশিত ত্রুটি: $1</translation>
@@ -5465,6 +5499,7 @@
 <translation id="9154194610265714752">আপডেট রয়েছে</translation>
 <translation id="9154418932169119429">এই চিত্রটি অফলাইনে উপলব্ধ নয়৷</translation>
 <translation id="91568222606626347">শর্টকাট তৈরি করুন...</translation>
+<translation id="9157697743260533322">সকল ব্যবহারকারীর জন্য স্বয়ংক্রিয় আপডেট সেট আপ করতে ব্যর্থ হয়েছে (ফ্লাইটপূর্ব লঞ্চ ত্রুটি: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">ওহো! প্রমাণীকরণের সময় একটি নেটওয়ার্ক যোগাযোগ সমস্যা ঘটেছে৷ দয়া করে আপনার নেটওয়ার্ক সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন৷</translation>
 <translation id="9159562891634783594">প্রিন্ট পূর্বরূপ থেকে অনিবন্ধিত মেঘ প্রিন্টগুলির নিবন্ধন সক্রিয় করুন।</translation>
 <translation id="9166510596677678112">এই ব্যক্তিকে ইমেল পাঠান</translation>
@@ -5476,7 +5511,6 @@
 <translation id="9170848237812810038">&amp;পূর্বাবস্থায় ফিরুন</translation>
 <translation id="9170884462774788842">আপনার কম্পিউটারের অন্য একটি প্রোগ্রাম একটি থিম জুড়েছে যা Chrome এর কাজ করার পদ্ধতিকে পাল্টে দিতে পারে৷</translation>
 <translation id="9177499212658576372">আপনি বর্তমানে <ph name="NETWORK_TYPE" /> নেটওয়ার্কের সাথে সংযুক্ত৷</translation>
-<translation id="9177556055091995297">ক্রেডিট কার্ডগুলি পরিচালনা করুন</translation>
 <translation id="917858577839511832">WebRTC এর জন্য DTLS 1.2 এর সাথে নেগোশিয়েশন</translation>
 <translation id="917861274483335838">প্ল্যাগ ইন অবরুদ্ধ করা পরিচালনা করুন...</translation>
 <translation id="9179348476548754105">শুধুমাত্র লেনদেনজনিত পুনঃপ্রমাণীকরণ পৃষ্ঠাগুলির ক্ষেত্রে সিঙ্ক শংসাপত্রের জন্য পাসওয়ার্ড পরিচালক কীভাবে স্বতঃপূর্ণ পরিচালনা করে৷</translation>
@@ -5519,6 +5553,7 @@
 <translation id="951981865514037445"><ph name="URL" /> আপনার ডিভাইসের অবস্থান ব্যবহার করতে চায়৷</translation>
 <translation id="952838760238220631">Brotli সামগ্রী-এনকোডিং সমর্থন সক্ষম করুন।</translation>
 <translation id="952992212772159698">সক্রিয় নেই</translation>
+<translation id="953000875543358078">এতে এক মিনিট বা তার কাছাকাছি সময় লাগতে পারে</translation>
 <translation id="960987915827980018">প্রায় 1 ঘণ্টা বাকি</translation>
 <translation id="96421021576709873">Wi-Fi নেটওয়ার্ক</translation>
 <translation id="965490406356730238">উপলব্ধ থাকলে, ক্যাপচার করা ফ্রেমের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন সমৃদ্ধ MPEG ডিকোড সক্ষম করুন।</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index eed9a3c..0df4366a 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -159,7 +159,6 @@
     Heu de tornar a configurar el perfil.<ph name="BR" />
     <ph name="BR" />
     A la pantalla següent, envieu suggeriments per ajudar-nos a resoldre el problema.</translation>
-<translation id="1216954813581739968">Activa la pestanya per als escriptoris compartits.</translation>
 <translation id="121827551500866099">Mostra totes les baixades...</translation>
 <translation id="122082903575839559">Algoritme de signatura del certificat</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 amb encriptació RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL amb %s en el lloc de la consulta</translation>
 <translation id="1546280085599573572">Aquesta extensió ha canviat la pàgina que es mostra quan feu clic al botó Inici.</translation>
 <translation id="1546795794523394272">Us donem la benvinguda a Chromebox per a reunions</translation>
+<translation id="1547572086206517271">Cal actualitzar la pàgina</translation>
 <translation id="1547964879613821194">Anglès canadenc</translation>
 <translation id="1548132948283577726">Els llocs que mai desen les contrasenyes apareixeran aquí.</translation>
 <translation id="1549045574060481141">Confirmeu la baixada</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Permet emmagatzemar localment les pàgines visitades fa poc per utilitzar-les sense connexió. Requereix que les pàgines sense connexió estiguin activades.</translation>
 <translation id="1891668193654680795">Confia en aquest certificat per identificar generadors de programari.</translation>
 <translation id="189210018541388520">Obre en pantalla completa</translation>
+<translation id="1892754076732315533">Una nova experiència d'usuari simplificada a l'hora d'utilitzar estats de bloqueig del cursor del ratolí o modes de pantalla completa activats per les pàgines.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">S'ha produït un error amb el flux d'administració del núvol</translation>
 <translation id="189358972401248634">Altres idiomes</translation>
@@ -971,7 +972,7 @@
 <translation id="2422426094670600218">&lt;sense nom&gt;</translation>
 <translation id="2423578206845792524">De&amp;sa la imatge com a...</translation>
 <translation id="2424091190911472304">Executa sempre a <ph name="ORIGIN" /></translation>
-<translation id="2425665904502185219">Mida total del fitxer</translation>
+<translation id="2425665904502185219">Mida total dels fitxers</translation>
 <translation id="2431394478374894294">Permet l'entrada de veu al teclat virtual.</translation>
 <translation id="2433452467737464329">Afegiu un paràmetre de consulta a l'URL per actualitzar la pàgina automàticament: chrome://network/?refresh=&lt;seg.&gt;</translation>
 <translation id="2433507940547922241">Aparença</translation>
@@ -1321,6 +1322,7 @@
 <translation id="288042212351694283">Accés als dispositius Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Darrer accés:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> es reiniciarà i es restablirà temporalment.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Gestor de tasques</translation>
 <translation id="2887525882758501333">Document PDF</translation>
 <translation id="2888807692577297075">Cap fitxer coincideix amb &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1750,6 +1752,7 @@
 <translation id="3479552764303398839">Ara no</translation>
 <translation id="3480892288821151001">Redueix la finestra cap a l'esquerra</translation>
 <translation id="3481915276125965083">S'han bloquejat les finestres emergents següents en aquesta pàgina:</translation>
+<translation id="3482214069979148937">Manteniu premut |<ph name="ACCELERATOR" />| per sortir de la pantalla completa</translation>
 <translation id="3484869148456018791">Obtén el certificat nou</translation>
 <translation id="3487007233252413104">funció anònima</translation>
 <translation id="348771913750618459">Fluxos d'inici de sessió basats en iframe</translation>
@@ -1844,7 +1847,6 @@
 <translation id="3593965109698325041">Restriccions del nom de certificat</translation>
 <translation id="3595596368722241419">Bateria carregada.</translation>
 <translation id="3600456501114769456">El vostre administrador ha desactivat l'accés als fitxers locals del vostre dispositiu.</translation>
-<translation id="3601395307734599350">Aquestes són totes les vostres extensions</translation>
 <translation id="3603385196401704894">Francès canadenc</translation>
 <translation id="3603622770190368340">Obtenció del certificat de xarxa</translation>
 <translation id="3605780360466892872">Executiu</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">Utilitza el valor predeterminat global (detecta)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestanya}other{# pestanyes}}</translation>
 <translation id="4154664944169082762">Empremtes</translation>
-<translation id="4157188838832721931">Desactiva la sol·licitud de la contrasenya del sistema operatiu a l'usuari abans de revelar contrasenyes a la pàgina de contrasenyes.</translation>
 <translation id="4157869833395312646">Xifratge activat per servidor de Microsoft</translation>
 <translation id="4158739975813877944">Obre la llista de reproducció</translation>
 <translation id="4159681666905192102">Aquest és un compte infantil gestionat per <ph name="CUSTODIAN_EMAIL" /> i per <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">Inicia la sessió amb un altre compte</translation>
 <translation id="4219614746733932747">Si s'activa aquesta opció, Blink utilitza el seu mecanisme de zoom per redimensionar el contingut per al factor d'escala del dispositiu.</translation>
 <translation id="4220865787605972627">Permet el calibratge de color de la pantalla si la pantalla admet aquesta funció.</translation>
-<translation id="4233506668751282421">Activa l'àudio als escriptoris compartits</translation>
 <translation id="4235200303672858594">Tota la pantalla</translation>
 <translation id="4235813040357936597">Afegeix un compte per a: <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> no es pot visualitzar en aquest idioma</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">No s'ha pogut instal·lar la configuració de la política al dispositiu: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> vol desactivar el cursor del ratolí.</translation>
 <translation id="424546999567421758">Ús de disc elevat detectat</translation>
-<translation id="4247072926966606568">Si aquesta marca està activada, la finestra d'opcions per compartir l'escriptori permetrà que l'usuari triï si vol compartir l'àudio.</translation>
 <translation id="424726838611654458">Obre sempre a Adobe Reader</translation>
 <translation id="4249248555939881673">S'està esperant la connexió de xarxa...</translation>
 <translation id="4249373718504745892">S'ha bloquejat l'accés d'aquesta pàgina a la càmera i al micròfon</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">Afegir una adreça</translation>
 <translation id="4359408040881008151">S'ha instal·lat perquè té extensions que en depenen.</translation>
 <translation id="4361190688154226069">Orientació basada en rectangle a les visualitzacions</translation>
-<translation id="4363372140743955595">Reautenticació del gestor de contrasenyes</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> s'ha baixat</translation>
 <translation id="4364830672918311045">Mostra les notificacions</translation>
 <translation id="4365673000813822030">La sincronització ha deixat de funcionar.</translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">Quant a la funció Emplenament automàtic</translation>
 <translation id="4449996769074858870">En aquesta pestanya s'està reproduint àudio.</translation>
 <translation id="4450974146388585462">Diagnòstic</translation>
+<translation id="4452426408005428395">No cal</translation>
 <translation id="4454939697743986778">L'administrador del sistema ha instal·lat aquest certificat.</translation>
 <translation id="445923051607553918">Connexió a una xarxa Wi-Fi</translation>
 <translation id="4462159676511157176">Servidors de noms personalitzats</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">Activació única: escriviu la contrasenya per activar Smart Lock en aquest <ph name="DEVICE_TYPE" />. El vostre telèfon utilitzarà Smart Lock per desbloquejar el dispositiu sense necessitat de contrasenya. Per canviar o desactivar aquesta funció, accediu a la configuració del vostre dispositiu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Només el gestor (<ph name="CUSTODIAN_NAME" />) pot modificar les aplicacions i les extensions.</translation>
 <translation id="4601242977939794209">Convertidor a EMF</translation>
-<translation id="4601250583401186741">Sincronització amb un controlador</translation>
 <translation id="4602466770786743961">Permet sempre que <ph name="HOST" /> accedeixi a la càmera i al micròfon</translation>
 <translation id="4605399136610325267">No està connectat a Internet</translation>
 <translation id="4608500690299898628">&amp;Cerca...</translation>
@@ -2778,6 +2776,7 @@
 <translation id="5039804452771397117">Permet</translation>
 <translation id="5045550434625856497">Contrasenya incorrecta</translation>
 <translation id="5048179823246820836">Nòrdic</translation>
+<translation id="5048294425697652159">Activa Quirks Client per calibrar la visualització.</translation>
 <translation id="5053604404986157245">La contrasenya de TPM generada aleatòriament no està disponible. Això és normal després d'executar la funció Powerwash.</translation>
 <translation id="5053803681436838483">Adreça d'enviament nova...</translation>
 <translation id="5055309315264875868">Mostra un enllaç a la pàgina de configuració del gestor de contrasenyes que permet administrar les contrasenyes sincronitzades en línia.</translation>
@@ -2873,7 +2872,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Requisit de gestos per a la reproducció multimèdia</translation>
 <translation id="5189060859917252173">El certificat "<ph name="CERTIFICATE_NAME" />" representa una entitat emissora de certificats.</translation>
-<translation id="5196117515621749903">Torna a carregar ignorant la memòria cau</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronització completa.</translation>
@@ -2888,6 +2886,7 @@
 <translation id="521582610500777512">La foto s'ha descartat.</translation>
 <translation id="5218183485292899140">Francès suís</translation>
 <translation id="5218766986344577658">Element emergent de desambiguació de l'enllaç</translation>
+<translation id="5220992698394817380">Activa el menú d'activació d'IME</translation>
 <translation id="5222676887888702881">Tanca la sessió</translation>
 <translation id="5225324770654022472">Mostra la drecera d'aplicacions 
 </translation>
@@ -2931,6 +2930,7 @@
 <translation id="5271247532544265821">Canvia entre xinès mode simplificat/xinès mode tradicional</translation>
 <translation id="5271549068863921519">Desa la contrasenya</translation>
 <translation id="5273628206174272911">Navegació experimental per l'historial en desplaçar-s'hi horitzontalment per sobre.</translation>
+<translation id="5275194674756975076">D'acord, actualitza</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> d'aquest lloc</translation>
 <translation id="5275973617553375938">Fitxers recuperats de Google Drive</translation>
 <translation id="527605719918376753">Silencia la pestanya</translation>
@@ -3004,6 +3004,7 @@
 <translation id="5368720394188453070">El telèfon està bloquejat. Desbloquegeu-lo per accedir-hi.</translation>
 <translation id="5369927996833026114">Descobriu el menú d'aplicacions de Chrome</translation>
 <translation id="5370819323174483825">&amp;Tornar a carregar</translation>
+<translation id="5372066618989754822">Activa l'accés al nou menú d'IME a la pàgina Configuració d'idioma.</translation>
 <translation id="5372529912055771682">El mode d'inscripció proporcionat no és compatible amb aquesta versió del sistema operatiu. Assegureu-vos que estigueu executant la darrera versió i torneu-ho a provar.</translation>
 <translation id="5374359983950678924">Canvia la imatge</translation>
 <translation id="5376169624176189338">Feu clic per tornar enrere o manteniu premut per veure l'historial</translation>
@@ -3190,6 +3191,7 @@
 <translation id="5626134646977739690">Nom:</translation>
 <translation id="5627086634964711283">També controla la pàgina que es mostra quan feu clic al botó Inici.</translation>
 <translation id="5627259319513858869">Permet utilitzar funcions de dibuix experimentals que estiguin en desenvolupament.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design a la part superior del navegador</translation>
 <translation id="5633060877636360447">Amb aquesta acció, se suprimiran almenys <ph name="TOTAL_COUNT" /> elements d'aquest dispositiu de manera permanent, però els elements sincronitzats no s'esborraran d'altres dispositius.</translation>
 <translation id="5636996382092289526">Per utilitzar <ph name="NETWORK_ID" />, és possible que abans calgui que <ph name="LINK_START" />visiteu la pàgina d'inici de sessió de la xarxa<ph name="LINK_END" />, que s'obrirà automàticament d'aquí a pocs segons. Si no s'obre, no podreu utilitzar la xarxa.</translation>
@@ -3220,6 +3222,7 @@
 <translation id="5678862612529498267">Ressalta l'objecte amb el focus del teclat</translation>
 <translation id="5678955352098267522">Llegir les dades del lloc <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtre de text en mode de visió general</translation>
+<translation id="5683818630978268777">IU experimental amb mode de bloqueig de teclat.</translation>
 <translation id="5684661240348539843">Identificador d'elements</translation>
 <translation id="569068482611873351">Importa...</translation>
 <translation id="56907980372820799">Enllaça les dades</translation>
@@ -3559,7 +3562,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">Ajust tàctil</translation>
 <translation id="6218364611373262432">Restableix l'estat d'instal·lació del Menú d'aplicacions en cada reinici. Mentre estigui activada aquesta opció, Chrome oblidarà que el menú s'ha instal·lat cada vegada que s'iniciï. Aquesta opció s'utilitza per fer proves al flux d'instal·lació del Menú d'aplicacions.</translation>
-<translation id="6219616557885484178">Trieu més d'un milió d'aplicacions i de jocs a Google Play per instal·lar-los i utilitzar-los a <ph name="DEVICE_TYPE" />.</translation>
+<translation id="6219616557885484178">Trieu entre més d'un milió d'aplicacions i de jocs a Google Play per instal·lar-los i utilitzar-los a <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Error en carregar l'extensió</translation>
 <translation id="6221345481584921695">Navegació segura de Google ha <ph name="BEGIN_LINK" />detectat programari maliciós<ph name="END_LINK" /> recentment a <ph name="SITE" />. De vegades, els llocs web que acostumen a ser segurs s'infecten amb programari maliciós. El contingut maliciós prové de l'amfitrió <ph name="SUBRESOURCE_HOST" />, un distribuïdor conegut de programari maliciós.</translation>
@@ -3686,7 +3689,6 @@
 <translation id="6420676428473580225">Afegeix a l'escriptori</translation>
 <translation id="6422329785618833949">Foto girada</translation>
 <translation id="642282551015776456">Aquest nom no es pot utilitzar com a nom de fitxer o de carpeta</translation>
-<translation id="642322423610046417">Utilitzeu el menú contextual (feu-hi clic amb el botó secundari) per suprimir les extensions que no necessiteu.</translation>
 <translation id="6423239382391657905">VPN oberta</translation>
 <translation id="6423731501149634044">Voleu utilitzar Adobe Reader com a lector de PDF predeterminat?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3756,13 +3758,14 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Pantalla completa experimental amb mode de bloqueig de teclat en què els usuaris han de mantenir premuda la tecla Esc per sortir-ne.</translation>
 <translation id="6527303717912515753">Comparteix</translation>
 <translation id="6528546217685656218">Falta la clau privada d'aquest certificat del client o no és vàlida.</translation>
 <translation id="653019979737152879">S'està sincronitzant <ph name="FILE_NAME" />...</translation>
 <translation id="6534583978616527129">Inicialitzeu la connexió</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Nota:<ph name="END_BOLD" /> activeu aquesta opció només si sabeu què esteu fent o si se us ha demanat que ho feu, ja que la recopilació de dades pot reduir el rendiment.</translation>
 <translation id="654233263479157500">Utilitza un servei web per solucionar els errors de navegació</translation>
-<translation id="6545834809683560467">Utilitzeu un servei de predicció per completar fàcilment les cerques i els URL introduïts a la barra d'adreces o al quadre de cerca del menú d'aplicacions.</translation>
+<translation id="6545834809683560467">Utilitza un servei de predicció per completar fàcilment les cerques i els URL introduïts a la barra d'adreces o al quadre de cerca del menú d'aplicacions.</translation>
 <translation id="6546624164157740757">Pestanya: <ph name="CHROME_TAB_TITLE" /></translation>
 <translation id="6546686722964485737">Inscripció a la xarxa Wimax</translation>
 <translation id="6547316139431024316">No em tornis a avisar per a aquesta extensió</translation>
@@ -3935,13 +3938,14 @@
 <translation id="6825883775269213504">Rus</translation>
 <translation id="6827236167376090743">La reproducció d'aquest vídeo continuarà indefinidament.</translation>
 <translation id="6828153365543658583">Restringeix l'inici de sessió als usuaris següents:</translation>
+<translation id="6828860976882136098">No s'han pogut configurar actualitzacions automàtiques per a tots els usuaris (error d'execució preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Obteniu ajuda per al dispositiu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Inscripció a la vostra organització</translation>
 <translation id="6830590476636787791">Transicions animades al tutorial de la primera execució</translation>
 <translation id="6831043979455480757">Tradueix</translation>
 <translation id="6832874810062085277">pregunta</translation>
 <translation id="6833901631330113163">Europa meridional</translation>
-<translation id="683526731807555621">Afegeix un motor</translation>
+<translation id="683526731807555621">Afegiu un motor</translation>
 <translation id="6835762382653651563">Connecteu-vos a Internet per actualitzar el dispositiu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6839225236531462745">Error de supressió del certificat</translation>
 <translation id="6840184929775541289">No és una entitat emissora de certificats</translation>
@@ -3957,7 +3961,6 @@
 <translation id="6860427144121307915">Obre en una pestanya</translation>
 <translation id="6862635236584086457">Es fa una còpia de seguretat en línia automàticament de tots els fitxers desats en aquesta carpeta</translation>
 <translation id="6865313869410766144">Dades d'emplenament automàtic de formularis</translation>
-<translation id="6865319096921627602">Activa el pipeline multimèdia unificat a Android.</translation>
 <translation id="6867678160199975333">Canvia a <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Casella de selecció activada</translation>
 <translation id="6870130893560916279">Teclat ucraïnès</translation>
@@ -4053,6 +4056,7 @@
 <translation id="7006017748900345484">Codificador/descodificador de vídeo per a programari H.264 de WebRTC</translation>
 <translation id="7006634003215061422">Marge inferior</translation>
 <translation id="7006844981395428048">Àudio en $1</translation>
+<translation id="7008270479623533562">Per poder executar aquesta extensió, heu d'actualitzar la pàgina. Podeu executar-la automàticament en aquest lloc fent clic amb el botó dret a la icona de l'extensió.</translation>
 <translation id="7009045250432250765">Emplenament automàtic amb un sol clic</translation>
 <translation id="7010160495478792664">Descodificació de vídeo accelerada mitjançant maquinari on estigui disponible.</translation>
 <translation id="7010400591230614821">Estratègia agressiva d'alliberament de pestanyes</translation>
@@ -4217,7 +4221,6 @@
 <translation id="7256710573727326513">Obre en una pestanya</translation>
 <translation id="7257173066616499747">Xarxes Wi-Fi</translation>
 <translation id="7257666756905341374">Llegeix les dades que es copiïn i s'enganxin</translation>
-<translation id="7260002739296185724">Activa l'ús d'AV Foundation per capturar vídeo i controlar dispositius de vídeo a OS X 10.7 (o posteriors); si no s'activa, s'utilitzarà QTKit.</translation>
 <translation id="7260504762447901703">Revoca l'accés</translation>
 <translation id="7262004276116528033">Aquest servei d'inici de sessió s'allotja a <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Excepcions d'accés del connector de fora de la zona de proves</translation>
@@ -4236,7 +4239,7 @@
 <translation id="7280877790564589615">Permís sol·licitat</translation>
 <translation id="7282547042039404307">Suau</translation>
 <translation id="7287143125007575591">Accés denegat.</translation>
-<translation id="7288592446024861651">Les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració se sincronitzaran amb el vostre compte de Google, perquè els pugueu utilitzar en tots els dispositius. Controleu què se sincronitza a <ph name="BEGIN_LINK" />.</translation>
+<translation id="7288592446024861651">Les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració se sincronitzaran amb el vostre compte de Google, perquè els pugueu utilitzar en tots els dispositius. Controleu què se sincronitza a <ph name="BEGIN_LINK" /></translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" /> x <ph name="VERTICAL_DPI" /> ppp</translation>
 <translation id="7290594223351252791">Confirmació del registre</translation>
 <translation id="7295019613773647480">Activa els usuaris supervisats</translation>
@@ -4255,7 +4258,6 @@
 <translation id="7314278895724341067">Activa les pàgines sense connexió a la pàgina Pestanya nova</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (actual)</translation>
 <translation id="7321545336522791733">No s'ha pogut accedir al servidor</translation>
-<translation id="7324841169865301118">Permet que l'usuari triï una pestanya per als escriptoris compartits.</translation>
 <translation id="7325437708553334317">Extensió d'alt contrast</translation>
 <translation id="7326565110843845436">Clic amb tres dits al ratolí tàctil</translation>
 <translation id="73289266812733869">Ja no està seleccionat</translation>
@@ -4725,7 +4727,7 @@
 <translation id="8026334261755873520">Esborra les dades de navegació</translation>
 <translation id="8026964361287906498">(Gestionat per la política de l'empresa)</translation>
 <translation id="8028060951694135607">Recuperació de claus de Microsoft</translation>
-<translation id="8028620363061701162">Permet que les pàgines sense connexió es carreguin en segon terme</translation>
+<translation id="8028620363061701162">Permet que les pàgines sense connexió es carreguin en segon pla</translation>
 <translation id="8028993641010258682">Mida</translation>
 <translation id="8030169304546394654">Desconnectat</translation>
 <translation id="8031722894461705849">Teclat eslovac</translation>
@@ -4997,7 +4999,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto de</translation>
 <translation id="8428213095426709021">Configuració</translation>
-<translation id="8432590265309978927">Assistència molt experimental per renderitzar iframes entre llocs en processos separats.</translation>
 <translation id="8432745813735585631">Teclat Colemak nord-americà</translation>
 <translation id="8434177709403049435">&amp;Codificació</translation>
 <translation id="8434480141477525001">Port de depuració NaCI</translation>
@@ -5194,7 +5195,6 @@
 <translation id="8713979477561846077">Activa la correcció automàtica al teclat físic dels EUA, per obtenir suggeriments a mesura que s'escriu en un teclat físic.</translation>
 <translation id="871476437400413057">Contrasenyes desades de Google</translation>
 <translation id="8714838604780058252">Gràfics de fons</translation>
-<translation id="8716065142695381595">Activa el pipeline multimèdia unificat (Android i ordinador) a Android.</translation>
 <translation id="8722421161699219904">Teclat internacional nord-americà</translation>
 <translation id="872451400847464257">Edita el motor de cerca</translation>
 <translation id="8724859055372736596">&amp;Mostra a la carpeta</translation>
@@ -5214,6 +5214,7 @@
 <translation id="8737685506611670901">Obrir els enllaços del protocol <ph name="PROTOCOL" /> en lloc del gestor <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Defineix millor la posició d'un gest tàctil per poder compensar els tocs que tenen poca resolució en comparació amb un ratolí.</translation>
+<translation id="8743712320294854924">Mostra opcions d'entrada ampliades al prestatge.</translation>
 <translation id="874420130893181774">Mètode d'introducció de pinyin tradicional</translation>
 <translation id="8744525654891896746">Selecció d'un avatar per a l'usuari supervisat</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5283,6 +5284,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Canvi de mode amb la tecla Maj</translation>
 <translation id="8852742364582744935">S'han afegit les aplicacions i les extensions següents:</translation>
+<translation id="8853611566624224021">Activa la recuperació dels fitxers de visualització icc de Quirks Server per calibrar el color de la visualització.</translation>
 <translation id="885381502874625531">Teclat bielorús</translation>
 <translation id="8856844195561710094">No s'ha pogut aturar la detecció de dispositius Bluetooth.</translation>
 <translation id="885701979325669005">Emmagatzematge</translation>
@@ -5332,7 +5334,6 @@
 <translation id="8925458182817574960">&amp;Configuració</translation>
 <translation id="8926389886865778422">No m'ho tornis a preguntar</translation>
 <translation id="8926518602592448999">Desactivació de les extensions del mode desenvolupador</translation>
-<translation id="8929454297483336498">Utilitza les API de Mac OS X AVFoundation, en lloc de QTKit</translation>
 <translation id="8931394284949551895">Dispositius nous</translation>
 <translation id="8932730422557198035">Utilitza l'API Midi d'Android</translation>
 <translation id="8933960630081805351">&amp;Mostra a Finder</translation>
@@ -5346,6 +5347,7 @@
 <translation id="894360074127026135">Entrada progressiva internacional de Netscape</translation>
 <translation id="8944779739948852228">Impressora detectada</translation>
 <translation id="8946359700442089734">Les funcions de depuració no s'han activat del tot en aquest dispositiu <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Activa la compatibilitat amb WebUSB.</translation>
 <translation id="89515141420106838">Activa l'aplicació Galeria de Chrome Web Store per a controladors d'impressora. L'aplicació cerca extensions a Chrome Web Store que siguin compatibles amb la impressió mitjançant una impressora USB amb un identificador USB específic.</translation>
 <translation id="895347679606913382">S'està iniciant...</translation>
 <translation id="8954952943849489823">El trasllat ha fallat, s'ha produït un error inesperat: $1</translation>
@@ -5489,6 +5491,7 @@
 <translation id="9154194610265714752">S'ha actualitzat.</translation>
 <translation id="9154418932169119429">Aquesta imatge no està disponible fora de línia.</translation>
 <translation id="91568222606626347">Crea una drecera...</translation>
+<translation id="9157697743260533322">No s'han pogut configurar les actualitzacions automàtiques per a tots els usuaris (error de llançament preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">S'ha produït un problema de comunicació de xarxa durant l'autenticació. Comproveu la connexió de xarxa i torneu-ho a provar.</translation>
 <translation id="9159562891634783594">Activa el registre d'impressores al núvol no registrades des de la previsualització d'impressió.</translation>
 <translation id="9166510596677678112">Envia un correu electrònic a aquesta persona</translation>
@@ -5500,7 +5503,6 @@
 <translation id="9170848237812810038">&amp;Desfés</translation>
 <translation id="9170884462774788842">Un altre programa de l'ordinador ha afegit un tema que pot canviar el funcionament de Chrome.</translation>
 <translation id="9177499212658576372">Actualment esteu connectat a la xarxa <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gestiona les targetes de crèdit</translation>
 <translation id="917858577839511832">Negociació amb DTLS 1.2 per a WebRTC</translation>
 <translation id="917861274483335838">Gestioneu el bloqueig de connectors...</translation>
 <translation id="9179348476548754105">Defineix la manera com el gestor de contrasenyes gestiona l'emplenament automàtic de credencials de sincronització només a les pàgines de transaccions per a noves autenticacions.</translation>
@@ -5543,7 +5545,7 @@
 <translation id="951981865514037445"><ph name="URL" /> vol fer servir la ubicació del dispositiu.</translation>
 <translation id="952838760238220631">Activa la compatibilitat amb la codificació de contingut Brotli.</translation>
 <translation id="952992212772159698">No activat</translation>
-<translation id="953000875543358078">Això pot tardar uns quants minuts</translation>
+<translation id="953000875543358078">Això pot tardar més o menys un minut</translation>
 <translation id="960987915827980018">Queda cosa d'una hora</translation>
 <translation id="96421021576709873">Xarxa Wi-Fi</translation>
 <translation id="965490406356730238">Si està disponible, activeu la descodificació de mjpeg accelerada amb maquinari per als fotogrames capturats.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 7d265de..18b6160a 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -159,7 +159,6 @@
 Profil bude třeba znovu nastavit.<ph name="BR" />
 <ph name="BR" />
 Na následující obrazovce prosím zadejte zpětnou vazbu, která nám problém pomůže vyřešit.</translation>
-<translation id="1216954813581739968">Povolit kartu pro sdílení plochy</translation>
 <translation id="121827551500866099">Zobrazit všechny stažené soubory...</translation>
 <translation id="122082903575839559">Algoritmus podpisu certifikátu</translation>
 <translation id="1221024147024329929">Šifrování PKCS #1 MD2 s RSA</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL se značkou %s místo dotazu</translation>
 <translation id="1546280085599573572">Toto rozšíření změnilo stránku, která se zobrazí po kliknutí na tlačítko Domovská stránka.</translation>
 <translation id="1546795794523394272">Vítejte ve službě Chromebox pro videokonference!</translation>
+<translation id="1547572086206517271">Je vyžadováno obnovení</translation>
 <translation id="1547964879613821194">Kanadská anglická klávesnice</translation>
 <translation id="1548132948283577726">Zde se zobrazí weby, které nikdy neukládají heslo.</translation>
 <translation id="1549045574060481141">Potvrzení stahování</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">Povolit místní ukládání nedávno navštívených stránek k použití offline. Vyžaduje, aby offline stránky byly povoleny.</translation>
 <translation id="1891668193654680795">Důvěřovat tomuto certifikátu při ověřování identity výrobců softwaru.</translation>
 <translation id="189210018541388520">Otevřít v režimu celé obrazovky</translation>
+<translation id="1892754076732315533">Zjednodušené nové uživatelské prostředí při přechodu do režimu celé obrazovky aktivovaného stránkou nebo do stavů uzamčení ukazatele myši.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Proces správy účtů v cloudu selhal</translation>
 <translation id="189358972401248634">Ostatní jazyky</translation>
@@ -1320,6 +1321,7 @@
 <translation id="288042212351694283">Přístup k zařízením s univerzálním druhým faktorem</translation>
 <translation id="2881966438216424900">Poslední přístup:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> se za chvíli restartuje a resetuje</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Správce úloh</translation>
 <translation id="2887525882758501333">Dokumenty PDF</translation>
 <translation id="2888807692577297075">Vyhledávacímu dotazu &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt; neodpovídají žádné soubory.</translation>
@@ -1747,6 +1749,7 @@
 <translation id="3479552764303398839">Nyní ne</translation>
 <translation id="3480892288821151001">Ukotvit okno vlevo</translation>
 <translation id="3481915276125965083">Na této stránce byla zablokována následující vyskakovací okna:</translation>
+<translation id="3482214069979148937">Režim celé obrazovky ukončíte podržením klávesy |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Získat nový certifikát</translation>
 <translation id="3487007233252413104">anonymní funkce</translation>
 <translation id="348771913750618459">Procesy přihlášení založené na rámcích iframe</translation>
@@ -1841,7 +1844,6 @@
 <translation id="3593965109698325041">Omezení názvu certifikátu</translation>
 <translation id="3595596368722241419">Baterie je nabitá</translation>
 <translation id="3600456501114769456">Správce přístup k místním souborům v tomto zařízení zakázal.</translation>
-<translation id="3601395307734599350">Zde jsou všechna vaše rozšíření</translation>
 <translation id="3603385196401704894">Kanadská francouzská klávesnice</translation>
 <translation id="3603622770190368340">Získání certifikátu sítě</translation>
 <translation id="3605780360466892872">Manažer</translation>
@@ -2223,7 +2225,6 @@
 <translation id="4151403195736952345">Použít globální výchozí nastavení (zjistit)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# karty}other{# karet}}</translation>
 <translation id="4154664944169082762">Digitální otisky</translation>
-<translation id="4157188838832721931">Zakázat zobrazení výzvy k zadání hesla operačního systému před zobrazením hesel na stránce s hesly.</translation>
 <translation id="4157869833395312646">Technologie Microsoft SGC (Server Gated Cryptography)</translation>
 <translation id="4158739975813877944">Otevřít seznam přehrávání</translation>
 <translation id="4159681666905192102">Toto je dětský účet spravovaný uživateli <ph name="CUSTODIAN_EMAIL" /> a <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2267,7 +2268,6 @@
 <translation id="4218259925454408822">Přihlásit jiný účet</translation>
 <translation id="4219614746733932747">Pokud je tento příznak aktivován, Blink použije mechanismus přibližování, aby přizpůsobil obsah měřítku zařízení.</translation>
 <translation id="4220865787605972627">Povolí barevnou kalibraci displeje v případě, že displej tuto funkci podporuje.</translation>
-<translation id="4233506668751282421">Povolit sdílení zvuku mezi počítači</translation>
 <translation id="4235200303672858594">Celá obrazovka</translation>
 <translation id="4235813040357936597">Přidat účet pro profil <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">V tomto jazyce systém <ph name="PRODUCT_NAME" /> nelze použít.</translation>
@@ -2275,7 +2275,6 @@
 <translation id="4242577469625748426">Instalace nastavení zásady v zařízení se nezdařila: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Stránka <ph name="FULLSCREEN_ORIGIN" /> chce deaktivovat ukazatel myši.</translation>
 <translation id="424546999567421758">Bylo zjištěno vysoké využití disku</translation>
-<translation id="4247072926966606568">Pokud je tento příznak aktivní, v okně výběru sdílení počítače si uživatel může vybrat, zda chce sdílet zvuk.</translation>
 <translation id="424726838611654458">Vždy otevřít v aplikaci Adobe Reader</translation>
 <translation id="4249248555939881673">Čeká se na připojení k síti...</translation>
 <translation id="4249373718504745892">Přístup této stránky k vaší webové kameře a mikrofonu je zablokován.</translation>
@@ -2348,7 +2347,6 @@
 <translation id="4358697938732213860">Přidat adresu</translation>
 <translation id="4359408040881008151">Rozšíření bylo nainstalováno kvůli závislým rozšířením.</translation>
 <translation id="4361190688154226069">Cílení založené na obdélníku v zobrazeních</translation>
-<translation id="4363372140743955595">Opětovné ověření Správce hesel</translation>
 <translation id="4364444725319685468">Soubor <ph name="FILE_NAME" /> byl stažen</translation>
 <translation id="4364830672918311045">Zobrazování oznámení</translation>
 <translation id="4365673000813822030">Jejda, synchronizace přestala fungovat.</translation>
@@ -2405,6 +2403,7 @@
 <translation id="4449935293120761385">O funkci Automatické vyplňování</translation>
 <translation id="4449996769074858870">Tato karta přehrává zvuk.</translation>
 <translation id="4450974146388585462">Diagnostikovat</translation>
+<translation id="4452426408005428395">Zrušit</translation>
 <translation id="4454939697743986778">Tento certifikát byl nainstalován administrátorem systému.</translation>
 <translation id="445923051607553918">Připojit se k síti Wi-Fi</translation>
 <translation id="4462159676511157176">Vlastní názvové servery</translation>
@@ -2482,7 +2481,6 @@
 <translation id="4594109696316595112">Jednorázová aktivace: Smart Lock v tomto zařízení <ph name="DEVICE_TYPE" /> aktivujete zadáním hesla. Díky funkci Smart Lock budete toto zařízení moci odemknout pomocí telefonu bez nutnosti zadání hesla. Chcete-li tuto funkci změnit nebo vypnout, přejděte do nastavení zařízení <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikace a rozšíření může upravit pouze správce (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Konvertor do formátu EMF</translation>
-<translation id="4601250583401186741">Spárování s ovladačem</translation>
 <translation id="4602466770786743961">Vždy povolit webu <ph name="HOST" /> přístup k webové kameře a mikrofonu</translation>
 <translation id="4605399136610325267">Připojení k internetu není k dispozici</translation>
 <translation id="4608500690299898628">&amp;Najít...</translation>
@@ -2776,6 +2774,7 @@
 <translation id="5039804452771397117">Povolit</translation>
 <translation id="5045550434625856497">Nesprávné heslo</translation>
 <translation id="5048179823246820836">Severské jazyky</translation>
+<translation id="5048294425697652159">Povolit klienta Quirks Client pro kalibraci displeje</translation>
 <translation id="5053604404986157245">Náhodně generované heslo TPM není k dispozici. Po použití funkce Powerwash je to normální.</translation>
 <translation id="5053803681436838483">Nová dodací adresa...</translation>
 <translation id="5055309315264875868">Na stránce nastavení správce hesel zobrazovat odkaz ke správě synchronizovaných hesel online.</translation>
@@ -2871,7 +2870,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Požadování gest pro přehrávání médií</translation>
 <translation id="5189060859917252173">Certifikát <ph name="CERTIFICATE_NAME" /> reprezentuje certifikační autoritu.</translation>
-<translation id="5196117515621749903">Znovu načíst bez použití mezipaměti</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronizace byla dokončena.</translation>
@@ -2886,6 +2884,7 @@
 <translation id="521582610500777512">Fotografie byla zahozena</translation>
 <translation id="5218183485292899140">Švýcarská klávesnice (francouzština)</translation>
 <translation id="5218766986344577658">Vyskakovací bublina pro výběr odkazu</translation>
+<translation id="5220992698394817380">Povolit volitelnou nabídku editorů IME</translation>
 <translation id="5222676887888702881">Odhlásit se</translation>
 <translation id="5225324770654022472">Zobrazit zástupce aplikací</translation>
 <translation id="5227536357203429560">Přidat soukromou síť...</translation>
@@ -2928,6 +2927,7 @@
 <translation id="5271247532544265821">Přepnout režim zjednodušené / tradiční čínštiny</translation>
 <translation id="5271549068863921519">Uložit heslo</translation>
 <translation id="5273628206174272911">Experimentální navigace v historii spouštěná horizontálním posouváním</translation>
+<translation id="5275194674756975076">OK, obnovit</translation>
 <translation id="5275795814002959418">Z tohoto webu: <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Obnovené soubory z Disku Google</translation>
 <translation id="527605719918376753">Vypnout zvuk karty</translation>
@@ -3001,6 +3001,7 @@
 <translation id="5368720394188453070">Telefon je uzamčen. Chcete-li pokračovat, odemkněte jej.</translation>
 <translation id="5369927996833026114">Objevte Spouštěč aplikací Chrome</translation>
 <translation id="5370819323174483825">Načíst &amp;znovu</translation>
+<translation id="5372066618989754822">Povolí na stránce Nastavení jazyka novou nabídku IME.</translation>
 <translation id="5372529912055771682">Uvedený režim registrace není touto verzí operačního systému podporován. Zkontrolujte prosím, zda máte spuštěnou nejnovější verzi, a zkuste to znovu.</translation>
 <translation id="5374359983950678924">Změnit obrázek</translation>
 <translation id="5376169624176189338">Kliknutím se vrátíte zpět, přidržením se zobrazí historie</translation>
@@ -3186,6 +3187,7 @@
 <translation id="5626134646977739690">Jméno:</translation>
 <translation id="5627086634964711283">Také řídí, která stránka se zobrazí po kliknutí na tlačítko Domovská stránka.</translation>
 <translation id="5627259319513858869">Umožňuje použití experimentálních funkcí Canvas, které jsou stále ještě ve vývoji.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design na horní liště prohlížeče</translation>
 <translation id="5633060877636360447">Touto akcí smažete několik položek z tohoto zařízení (minimálně <ph name="TOTAL_COUNT" />). Z jiných zařízení se však synchronizované položky nesmažou.</translation>
 <translation id="5636996382092289526">Chcete-li používat síť <ph name="NETWORK_ID" />, je třeba nejdříve <ph name="LINK_START" />přejít na přihlašovací stránku sítě<ph name="LINK_END" />, která se za několik sekund automaticky otevře. Pokud se tak nestane, nelze síť použít.</translation>
@@ -3216,6 +3218,7 @@
 <translation id="5678862612529498267">Zvýraznit objekt se zaměřením pro zadávání</translation>
 <translation id="5678955352098267522">Čtení vašich dat na webu <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrování textu v režimu přehledu</translation>
+<translation id="5683818630978268777">Experimentální uživatelské rozhraní se zámkem klávesnice</translation>
 <translation id="5684661240348539843">Identifikátor položky</translation>
 <translation id="569068482611873351">Import...</translation>
 <translation id="56907980372820799">Propojit data</translation>
@@ -3683,7 +3686,6 @@
 <translation id="6420676428473580225">Přidat na plochu</translation>
 <translation id="6422329785618833949">Fotka byla zrcadlově obrácena</translation>
 <translation id="642282551015776456">Tento název nelze použít k pojmenování souboru ani složky.</translation>
-<translation id="642322423610046417">Použijte kontextovou nabídku (pravé tlačítko myši) a odeberte nepotřebná rozšíření.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Použít Adobe Reader jako výchozí prohlížeč souborů PDF?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3754,6 +3756,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Experimentální režim celé obrazovky se zámkem klávesnice, který uživatelé mohou opustit podržením klávesy Esc.</translation>
 <translation id="6527303717912515753">Sdílet</translation>
 <translation id="6528546217685656218">Soukromý klíč tohoto klientského certifikátu chybí nebo je neplatný.</translation>
 <translation id="653019979737152879">Synchronizace souboru <ph name="FILE_NAME" />...</translation>
@@ -3933,6 +3936,7 @@
 <translation id="6825883775269213504">ruština</translation>
 <translation id="6827236167376090743">Toto video se bude přehrávat až do skonání času.</translation>
 <translation id="6828153365543658583">Omezit přihlášení na následující uživatele:</translation>
+<translation id="6828860976882136098">Nastavení automatických aktualizací pro všechny uživatele se nezdařilo (chyba při předběžném spuštění: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Získejte nápovědu k zařízení <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registrace do organizace</translation>
 <translation id="6830590476636787791">Animované přechody v úvodním výukovém programu</translation>
@@ -3955,7 +3959,6 @@
 <translation id="6860427144121307915">Otevřít na kartě</translation>
 <translation id="6862635236584086457">Všechny soubory uložené v této složce se automaticky zálohují online</translation>
 <translation id="6865313869410766144">Automatické vyplňování formulářů</translation>
-<translation id="6865319096921627602">Aktivovat sjednocený kanál médií pro Android</translation>
 <translation id="6867678160199975333">Přepnout na profil <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Označené zaškrtávací políčko</translation>
 <translation id="6870130893560916279">Ukrajinská klávesnice</translation>
@@ -4050,6 +4053,7 @@
 <translation id="7006017748900345484">Softwarový kodér/dekodér videa WebRTC H.264</translation>
 <translation id="7006634003215061422">Dolní okraj</translation>
 <translation id="7006844981395428048">Zvuk ve formátu $1</translation>
+<translation id="7008270479623533562">Chcete-li spustit toto rozšíření, je třeba obnovit stránku. Toto rozšíření na tomto webu můžete spustit automaticky tím, že pravým tlačítkem kliknete na ikonu rozšíření.</translation>
 <translation id="7009045250432250765">Automatické vyplňování jedním kliknutím</translation>
 <translation id="7010160495478792664">Aktivuje hardwarové akcelerované dekódování videa, pokud je k dispozici.</translation>
 <translation id="7010400591230614821">Agresivní strategie uvolnění karet</translation>
@@ -4216,7 +4220,6 @@
 <translation id="7256710573727326513">Otevřít na kartě</translation>
 <translation id="7257173066616499747">Sítě Wi-Fi</translation>
 <translation id="7257666756905341374">Číst data, která kopírujete a vkládáte</translation>
-<translation id="7260002739296185724">Povolí v systému OS X 10.7 a novějších verzích použití rozhraní AV Foundation pro záznam videa a sledování videozařízení. V jiných případech bude použito rozhraní QTKit.</translation>
 <translation id="7260504762447901703">Zrušit přístup</translation>
 <translation id="7262004276116528033">Přihlašovací služba je hostována doménou <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Výjimky přístupu pluginu mimo izolovaný prostor</translation>
@@ -4235,7 +4238,7 @@
 <translation id="7280877790564589615">Jsou požadována oprávnění</translation>
 <translation id="7282547042039404307">Plynulé</translation>
 <translation id="7287143125007575591">Přístup byl odepřen.</translation>
-<translation id="7288592446024861651">Vaše záložky, historie, hesla a další nastavení budou synchronizována do účtu Google, abyste je mohli používat ve všech svých zařízeních. Synchronizované položky můžete zvolit v <ph name="BEGIN_LINK" /></translation>
+<translation id="7288592446024861651">Vaše záložky, historie, hesla a další nastavení budou synchronizovány do účtu Google, abyste je mohli používat ve všech svých zařízeních. Synchronizované položky můžete zvolit v <ph name="BEGIN_LINK" /></translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">Potvrzení registrace</translation>
 <translation id="7295019613773647480">Aktivovat dozorovaného uživatele</translation>
@@ -4254,7 +4257,6 @@
 <translation id="7314278895724341067">Povolit offline stránky na stránce Nová karta</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (aktuální)</translation>
 <translation id="7321545336522791733">Server je nedostupný</translation>
-<translation id="7324841169865301118">Umožňuje uživateli vybrat kartu pro sdílení plochy.</translation>
 <translation id="7325437708553334317">Rozšíření Vysoký kontrast</translation>
 <translation id="7326565110843845436">Aktivovat klepnutí třemi prsty na touchpad</translation>
 <translation id="73289266812733869">Nevybráno</translation>
@@ -5002,7 +5004,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Autor fotografie</translation>
 <translation id="8428213095426709021">Nastavení</translation>
-<translation id="8432590265309978927">Vysoce experimentální podpora vykreslování prvků iframe napříč weby v samostatných procesech.</translation>
 <translation id="8432745813735585631">Americká klávesnice s rozložením Colemak</translation>
 <translation id="8434177709403049435">Kódování</translation>
 <translation id="8434480141477525001">Port ladění klientu NaCl</translation>
@@ -5199,7 +5200,6 @@
 <translation id="8713979477561846077">Umožňuje aktivovat automatické opravy vstupu fyzické klávesnice pro anglickou (USA) klávesnici, které během psaní na fyzické klávesnici mohou zobrazovat návrhy.</translation>
 <translation id="871476437400413057">hesla uložená Googlem</translation>
 <translation id="8714838604780058252">Grafika na pozadí</translation>
-<translation id="8716065142695381595">Aktivuje sjednocený kanál médií pro Android (týká se médií určených pro platformu Android a pro počítače).</translation>
 <translation id="8722421161699219904">Mezinárodní americká klávesnice</translation>
 <translation id="872451400847464257">Upravit vyhledávač</translation>
 <translation id="8724859055372736596">Zobrazit ve &amp;složce</translation>
@@ -5219,6 +5219,7 @@
 <translation id="8737685506611670901">Otevírat odkazy <ph name="PROTOCOL" /> namísto aplikace <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Upřesnit pozici dotykových gest za účelem kompenzace nižší kvality rozlišení dotyku oproti myši.</translation>
+<translation id="8743712320294854924">Zobrazit na poličce rozbalené možnosti vstupu.</translation>
 <translation id="874420130893181774">Metoda zadávání textu tradiční Pchin-jin</translation>
 <translation id="8744525654891896746">Vyberte avatara pro dozorovaného uživatele</translation>
 <translation id="8744641000906923997">Rómadži</translation>
@@ -5288,6 +5289,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Přepínání režimu klávesou Shift</translation>
 <translation id="8852742364582744935">Byly přidány následující aplikace a rozšíření:</translation>
+<translation id="8853611566624224021">Povolit stažení souborů ICC displejů ze serveru Quirks Server pro kalibraci barev displeje.</translation>
 <translation id="885381502874625531">Běloruská klávesnice</translation>
 <translation id="8856844195561710094">Vyhledávání zařízení Bluetooth se nepodařilo zastavit.</translation>
 <translation id="885701979325669005">Úložiště</translation>
@@ -5337,7 +5339,6 @@
 <translation id="8925458182817574960">&amp;Nastavení</translation>
 <translation id="8926389886865778422">Dotaz již nezobrazovat</translation>
 <translation id="8926518602592448999">Deaktivovat rozšíření v režimu pro vývojáře</translation>
-<translation id="8929454297483336498">Namísto rozhraní QTKit používat rozhraní Mac OS X AVFoundation API</translation>
 <translation id="8931394284949551895">Nová zařízení</translation>
 <translation id="8932730422557198035">Použít rozhraní Android Midi API</translation>
 <translation id="8933960630081805351">Zobrazit ve &amp;službě Finder</translation>
@@ -5351,6 +5352,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Byla rozpoznána tiskárna</translation>
 <translation id="8946359700442089734">V tomto zařízení <ph name="IDS_SHORT_PRODUCT_NAME" /> nebyly úplně povoleny funkce ladění.</translation>
+<translation id="8946784827990177241">Aktivuje podporu rozhraní WebUSB.</translation>
 <translation id="89515141420106838">Aktivuje aplikaci Galerie Internetového obchodu Chrome za účelem vyhledávání ovladačů tiskáren. Aplikace v Internetovém obchodu Chrome vyhledá rozšíření, která podporují tisk v tiskárně USB s konkrétním ID rozhraní USB.</translation>
 <translation id="895347679606913382">Spouštění...</translation>
 <translation id="8954952943849489823">Přesun se nezdařil, neočekávaná chyba: $1</translation>
@@ -5495,6 +5497,7 @@
 <translation id="9154194610265714752">Aktualizováno</translation>
 <translation id="9154418932169119429">Tento obrázek není k dispozici v režimu offline.</translation>
 <translation id="91568222606626347">Vytvořit zástupce...</translation>
+<translation id="9157697743260533322">Nastavení automatických aktualizací pro všechny uživatele se nezdařilo (chyba předběžného spuštění: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Jejda! Během ověřování došlo k problému s komunikací se sítí. Zkontrolujte prosím připojení k síti a zkuste to znovu.</translation>
 <translation id="9159562891634783594">Povolit registraci neregistrovaných cloudových tiskáren z náhledu tisku.</translation>
 <translation id="9166510596677678112">Odeslat této osobě e-mail</translation>
@@ -5506,7 +5509,6 @@
 <translation id="9170848237812810038">Z&amp;pět</translation>
 <translation id="9170884462774788842">Jiný program ve vašem počítači nainstaloval motiv, který může měnit funkce Chromu.</translation>
 <translation id="9177499212658576372">V současnosti jste připojeni k síti typu <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Spravovat platební karty</translation>
 <translation id="917858577839511832">Vyjednávání s protokolem DTLS 1.2 pro WebRTC</translation>
 <translation id="917861274483335838">Spravovat blokování pluginů...</translation>
 <translation id="9179348476548754105">Určuje, jak správce hesel nakládá s automatickým vyplňováním identifikačních údajů pro synchronizaci na stránkách opětovné autorizace transakcí.</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 55a63f0..9192082 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -159,7 +159,6 @@
     Du er nødt til at oprette din profil igen.<ph name="BR" />
     <ph name="BR" />
     På næste skærm kan du sende feedback og hjælpe os med at løse problemet.</translation>
-<translation id="1216954813581739968">Aktivér fane til skrivebordsdeling.</translation>
 <translation id="121827551500866099">Vis alle downloads...</translation>
 <translation id="122082903575839559">Algoritme for certifikatsignatur</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 med RSA-kryptering</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL med %s i stedet for forespørgsel</translation>
 <translation id="1546280085599573572">Denne udvidelse har ændret, hvilken side der vises, når du klikker på knappen Startside.</translation>
 <translation id="1546795794523394272">Velkommen til Chromebox videokonference</translation>
+<translation id="1547572086206517271">Der kræves en opdatering</translation>
 <translation id="1547964879613821194">Canadisk (engelsk)</translation>
 <translation id="1548132948283577726">Websites, som aldrig gemmer adgangskoder, vises her.</translation>
 <translation id="1549045574060481141">Bekræft download</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">Aktiverer lagring af sider, du har besøgt for nylig, til brug offline. Kræver, at offlinesider er aktiveret.</translation>
 <translation id="1891668193654680795">Hav tillid til dette certifikat med hensyn til identifikation af softwareproducenter.</translation>
 <translation id="189210018541388520">Åbn fuld skærm</translation>
+<translation id="1892754076732315533">En forenklet ny brugeroplevelse, når en side udløser visning i fuld skærm eller låser musemarkøren.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Administrationsflowet for skyen mislykkedes</translation>
 <translation id="189358972401248634">Andre sprog</translation>
@@ -1320,6 +1321,7 @@
 <translation id="288042212351694283">Får adgang til dine Universal 2nd Factor-enheder</translation>
 <translation id="2881966438216424900">Sidst åbnet:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> Genstart og nulstilling påbegyndes om et øjeblik</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Jobliste</translation>
 <translation id="2887525882758501333">PDF-dokument</translation>
 <translation id="2888807692577297075">Ingen filer matcher &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1750,6 +1752,7 @@
 <translation id="3479552764303398839">Ikke nu</translation>
 <translation id="3480892288821151001">Fastgør vinduet til venstre</translation>
 <translation id="3481915276125965083">Følgende pop op-vinduer blev blokeret på denne side:</translation>
+<translation id="3482214069979148937">Hold |<ph name="ACCELERATOR" />| nede for at afslutte visning i fuld skærm</translation>
 <translation id="3484869148456018791">Få et nyt certifikat</translation>
 <translation id="3487007233252413104">anonym funktion</translation>
 <translation id="348771913750618459">iframe-baserede loginprocesser</translation>
@@ -1844,7 +1847,6 @@
 <translation id="3593965109698325041">Begrænsninger for certifikatnavn</translation>
 <translation id="3595596368722241419">Batteri helt opladet</translation>
 <translation id="3600456501114769456">Din administrator har deaktiveret adgangen til lokale filer på din enhed.</translation>
-<translation id="3601395307734599350">Alle dine udvidelser er her</translation>
 <translation id="3603385196401704894">Fransk (Canada)</translation>
 <translation id="3603622770190368340">Få fat i et netværkscertifikat</translation>
 <translation id="3605780360466892872">Asger</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">Brug globale standardindstillinger (registrer)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 fane}one{# faner}other{# faner}}</translation>
 <translation id="4154664944169082762">Fingeraftryk</translation>
-<translation id="4157188838832721931">Deaktiver anmodning om brugerens OS-adgangskode, inden vedkommende afslører sine adgangskoder på siden med adgangskoder.</translation>
 <translation id="4157869833395312646">Microsoft-kryptering via server</translation>
 <translation id="4158739975813877944">Åbn playlisten</translation>
 <translation id="4159681666905192102">Dette er en børnekonto, der administreres af <ph name="CUSTODIAN_EMAIL" /> og <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">Log ind på en anden konto</translation>
 <translation id="4219614746733932747">Hvis det er aktiveret, bruges Blinks zoommekanisme til at skalere indhold til enhedens skaleringsfaktor.</translation>
 <translation id="4220865787605972627">Tillad farvekalibrering af skærmen, hvis denne understøtter funktionen.</translation>
-<translation id="4233506668751282421">Aktivér lyd ved skrivebordsdeling</translation>
 <translation id="4235200303672858594">Hele skærmen</translation>
 <translation id="4235813040357936597">Tilføj konto for <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> kan ikke vises på dette sprog</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">Det lykkedes ikke at installere politikindstillinger på enheden: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> ønsker at deaktivere din musemarkør.</translation>
 <translation id="424546999567421758">Et højt forbrug af diskplads er blevet registreret</translation>
-<translation id="4247072926966606568">Når dette flag er tilføjet, kan brugere vælge, om lyden skal deles, i vinduet for skrivebordsdeling.</translation>
 <translation id="424726838611654458">Altid åben i Adobe Reader</translation>
 <translation id="4249248555939881673">Venter på netværksforbindelse...</translation>
 <translation id="4249373718504745892">Denne sides adgang til dit kamera og din mikrofon er blevet blokeret.</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">Tilføj en adresse</translation>
 <translation id="4359408040881008151">Installeret på grund af andre udvidelser, der er afhængige af den.</translation>
 <translation id="4361190688154226069">Visning af målretningsområde i rektangel</translation>
-<translation id="4363372140743955595">Godkendelse af adgangskodeadministrator</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> er downloadet</translation>
 <translation id="4364830672918311045">Vis underretninger</translation>
 <translation id="4365673000813822030">Ups, synkroniseringen fungerer ikke.</translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">Om AutoFyld</translation>
 <translation id="4449996769074858870">Denne fane afspiller lyd.</translation>
 <translation id="4450974146388585462">Diagnosticer</translation>
+<translation id="4452426408005428395">Annuller</translation>
 <translation id="4454939697743986778">Dette certifikat er installeret af din systemadministrator.</translation>
 <translation id="445923051607553918">Vælg Wi-Fi-netværk</translation>
 <translation id="4462159676511157176">Tilpassede navneservere</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">Engangsaktivering: Indtast din adgangskode for at aktivere Smart Lock på denne <ph name="DEVICE_TYPE" />. Med Smart Lock kan din telefon låse denne enhed op uden adgangskode. Du kan ændre eller deaktivere denne funktion i indstillingerne for din <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Apps og udvidelser kan kun ændres af administratoren (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF-konverteringsprogram</translation>
-<translation id="4601250583401186741">Par med en berøringscontroller</translation>
 <translation id="4602466770786743961">Tillad altid, at <ph name="HOST" /> har adgang til dit kamera og din mikrofon</translation>
 <translation id="4605399136610325267">Ingen forbindelse til internettet</translation>
 <translation id="4608500690299898628">&amp;Find...</translation>
@@ -2780,6 +2778,7 @@
 <translation id="5039804452771397117">Tillad</translation>
 <translation id="5045550434625856497">Ugyldig adgangskode</translation>
 <translation id="5048179823246820836">Nordisk</translation>
+<translation id="5048294425697652159">Aktivér Quirks-klient til kalibrering af visningen.</translation>
 <translation id="5053604404986157245">Den vilkårligt genererede TPM-adgangskode er ikke tilgængelig. Dette er normalt efter en Powerwash.</translation>
 <translation id="5053803681436838483">Ny leveringsadresse...</translation>
 <translation id="5055309315264875868">Vis et link på indstillingssiden i adgangskodeadministrator til administration af dine adgangskoder til synkronisering på nettet.</translation>
@@ -2876,7 +2875,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Påkrævede bevægelser for medieafspilning.</translation>
 <translation id="5189060859917252173">Certifikatet "<ph name="CERTIFICATE_NAME" />" repræsenterer en certificeringsautoritet.</translation>
-<translation id="5196117515621749903">Genindlæs ignoreret cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synkroniseringen er fuldført.</translation>
@@ -2891,6 +2889,7 @@
 <translation id="521582610500777512">Billede blev kasseret</translation>
 <translation id="5218183485292899140">Schweizisk (fransk)</translation>
 <translation id="5218766986344577658">Pop op-vindue med fremhævning af link</translation>
+<translation id="5220992698394817380">Aktivér IME-tilvalgsmenuen</translation>
 <translation id="5222676887888702881">Log ud</translation>
 <translation id="5225324770654022472">Vis genvejen for apps</translation>
 <translation id="5227536357203429560">Tilføj privat netværk...</translation>
@@ -2933,6 +2932,7 @@
 <translation id="5271247532544265821">Skift mellem forenklet/traditionelt kinesisk</translation>
 <translation id="5271549068863921519">Gem adgangskode</translation>
 <translation id="5273628206174272911">Eksperimentel funktion, der muliggør vandret rulning i historikken.</translation>
+<translation id="5275194674756975076">OK, opdater</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> fra dette website</translation>
 <translation id="5275973617553375938">Gendannede filer fra Google Drev</translation>
 <translation id="527605719918376753">Slå fanens lyd fra</translation>
@@ -3006,6 +3006,7 @@
 <translation id="5368720394188453070">Din telefon er låst. Lås den op for at få adgang.</translation>
 <translation id="5369927996833026114">Oplev Chrome-applikationslisten</translation>
 <translation id="5370819323174483825">&amp;Opdater</translation>
+<translation id="5372066618989754822">Aktivér adgang til den nye IME-menu på siden Sprogindstillinger.</translation>
 <translation id="5372529912055771682">Den medfølgende tilstand for tilmelding understøttes ikke af denne version af operativsystemet. Sørg for, at du kører den nyeste version, og prøv igen.</translation>
 <translation id="5374359983950678924">Skift billede</translation>
 <translation id="5376169624176189338">Klik for at gå tilbage. Hold knappen inde for at se historikken.</translation>
@@ -3191,6 +3192,7 @@
 <translation id="5626134646977739690">Navn:</translation>
 <translation id="5627086634964711283">Den styrer også, hvilken side der vises, når du klikker på knappen Startside.</translation>
 <translation id="5627259319513858869">Muliggør brugen af eksperimentelle kanvasfunktioner, som stadig er under udvikling.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design øverst i browserens chrome</translation>
 <translation id="5633060877636360447">Denne handling sletter mindst <ph name="TOTAL_COUNT" /> elementer permanent fra denne enhed, men synkroniserede elementer ryddes ikke fra andre enheder.</translation>
 <translation id="5636996382092289526">Hvis du vil bruge <ph name="NETWORK_ID" />, skal du først <ph name="LINK_START" />gå til netværkets loginside<ph name="LINK_END" />, som åbner automatisk om et par sekunder. Hvis ikke, kan netværket ikke bruges.</translation>
@@ -3221,6 +3223,7 @@
 <translation id="5678862612529498267">Fremhæv elementet med tastaturfokus</translation>
 <translation id="5678955352098267522">Læs dine data på <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Tekstfiltrering i oversigtstilstand</translation>
+<translation id="5683818630978268777">Eksperimentel brugerflade for tastaturlås.</translation>
 <translation id="5684661240348539843">Aktiv-id</translation>
 <translation id="569068482611873351">Importer...</translation>
 <translation id="56907980372820799">Tilknyt data</translation>
@@ -3687,7 +3690,6 @@
 <translation id="6420676428473580225">Føj til skrivebordet</translation>
 <translation id="6422329785618833949">Vend billede</translation>
 <translation id="642282551015776456">Dette navn kan ikke bruges som fil- eller mappenavn</translation>
-<translation id="642322423610046417">Brug genvejsmenuen (højreklik) til at fjerne de udvidelser, du ikke har brug for.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Vil du have Adobe Reader som dit standard visningsprogram for PDF'er?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">En eksperimentel visning i fuld skærm med tastaturlås, der kræver, at brugerne holder Esc nede for at afslutte.</translation>
 <translation id="6527303717912515753">Del</translation>
 <translation id="6528546217685656218">Den private nøgle til dette klientcertifikat mangler eller er ugyldig.</translation>
 <translation id="653019979737152879">Synkroniserer <ph name="FILE_NAME" />...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">Russisk</translation>
 <translation id="6827236167376090743">Denne video vil spille lige til juleaften.</translation>
 <translation id="6828153365543658583">Begræns login for følgende brugere:</translation>
+<translation id="6828860976882136098">Automatiske opdateringer kunne ikke konfigureres for alle brugere (fejl ved forhåndsudførelse: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Få hjælp til din <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Tilmeld dig din organisation</translation>
 <translation id="6830590476636787791">Animerede overgange i selvstudiet til førstegangsbrugere</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">Åbn på en fane</translation>
 <translation id="6862635236584086457">Alle de filer, der er gemt i denne mappe, sikkerhedskopieres automatisk online</translation>
 <translation id="6865313869410766144">Formulardata for AutoFyld</translation>
-<translation id="6865319096921627602">Aktiverer den fælles mediekanal i Android.</translation>
 <translation id="6867678160199975333">Skift til <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Markeret afkrydsningsfelt</translation>
 <translation id="6870130893560916279">Ukrainsk tastatur</translation>
@@ -4054,6 +4057,7 @@
 <translation id="7006017748900345484">Videokoder-/afkoder til WebRTC H.264-software</translation>
 <translation id="7006634003215061422">Bundmargen</translation>
 <translation id="7006844981395428048">$1 lyd</translation>
+<translation id="7008270479623533562">Du skal opdatere siden, før denne udvidelse kan køres. Du kan køre denne udvidelse automatisk på dette website ved at højreklikke på ikonet for udvidelsen.</translation>
 <translation id="7009045250432250765">Automatisk udfyldning med ét klik</translation>
 <translation id="7010160495478792664">Hardwareaccelereret videoafkodning, hvor det er muligt.</translation>
 <translation id="7010400591230614821">Aggressiv strategi for frigivelse af faner</translation>
@@ -4116,7 +4120,7 @@
 <translation id="7082055294850503883">Ignorer som standard CapsLock og indtastning af små bogstaver</translation>
 <translation id="7088418943933034707">Administrer certifikater...</translation>
 <translation id="7088434364990739311">Der kunne ikke søges efter opdateringer (fejlkode <ph name="ERROR" />).</translation>
-<translation id="708856090370082727">Aktivér understøttelse af overrulning for skærmtastatur. når dette flag er sat, ændrer skærmtastaturet kun størrelsen på den synlige visning.</translation>
+<translation id="708856090370082727">Aktivér understøttelse af overrulning for skærmtastatur. Når dette flag er sat, ændrer skærmtastaturet kun størrelsen på den synlige visning.</translation>
 <translation id="7088674813905715446">Denne enhed er blevet sat i tilstanden Fjernet af administratoren. Hvis du vil have, at den aktiveres med henblik på tilmelding, skal du bede administratoren om at sætte enheden i tilstanden Afventer.</translation>
 <translation id="708969677220991657">Tillader anmodninger til localhost via HTTPS, selv når der vises et ugyldigt certifikat.</translation>
 <translation id="7092106376816104">Undtagelser for pop op-vinduer</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">Åbn på en fane</translation>
 <translation id="7257173066616499747">Wi-Fi-netværk</translation>
 <translation id="7257666756905341374">Læs de data, du kopierer og indsætter</translation>
-<translation id="7260002739296185724">Aktivér brug af AVFoundation til optagelse af video og overvågning af videoenheder i OS X &gt;= 10.7. Hvis AVFoundation ikke aktiveres, bruges QTKit i stedet.</translation>
 <translation id="7260504762447901703">Tilbagekald adgangstilladelsen</translation>
 <translation id="7262004276116528033">Denne logintjeneste hostes af <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Undtagelser for adgang til plugins, der ikke er gemt i sandbox</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">Aktiverer NTP-offlinesider</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (nuværende)</translation>
 <translation id="7321545336522791733">Serveren er utilgængelig</translation>
-<translation id="7324841169865301118">Giver brugeren mulighed for at vælge en fane til skrivebordsdeling.</translation>
 <translation id="7325437708553334317">Udvidelsen Høj kontrast</translation>
 <translation id="7326565110843845436">Trefingerklik på touchpad</translation>
 <translation id="73289266812733869">Ikke valgt</translation>
@@ -5007,7 +5009,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto af</translation>
 <translation id="8428213095426709021">Indstillinger</translation>
-<translation id="8432590265309978927">Meget eksperimentel understøttelse af gengivelse af iframes på tværs af websites i særskilte processer.</translation>
 <translation id="8432745813735585631">Amerikansk (Colemak) tastatur</translation>
 <translation id="8434177709403049435">&amp;Kodning</translation>
 <translation id="8434480141477525001">NaCl-fejlretningsport</translation>
@@ -5204,7 +5205,6 @@
 <translation id="8713979477561846077">Aktivér fysisk tastaturstavekontrol for amerikansk tastatur, som kan give forslag, mens der tastes på det fysiske tastatur.</translation>
 <translation id="871476437400413057">Gemte adgangskoder på Google</translation>
 <translation id="8714838604780058252">Baggrundsgrafik</translation>
-<translation id="8716065142695381595">Aktiverer den fælles mediekanal (for Android og computer) i Android.</translation>
 <translation id="8722421161699219904">Internationalt amerikansk tastatur</translation>
 <translation id="872451400847464257">Rediger søgemaskine</translation>
 <translation id="8724859055372736596">&amp;Vis i mappe</translation>
@@ -5224,6 +5224,7 @@
 <translation id="8737685506611670901">Åbne <ph name="PROTOCOL" />-links i stedet for <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Juster positionen af en berøring for at kompensere for, at berøringer har en ringe præcision sammenlignet med en mus.</translation>
+<translation id="8743712320294854924">Vis udvidede indtastningsmuligheder på hylden.</translation>
 <translation id="874420130893181774">Traditionel Pinyin-indtastningsmetode</translation>
 <translation id="8744525654891896746">Vælg en avatar for denne administrerede bruger</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5294,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Skift mellem tilstande for Shift-tast</translation>
 <translation id="8852742364582744935">Følgende apps og udvidelser blev tilføjet:</translation>
+<translation id="8853611566624224021">Aktivér hentning af icc-filer til visning fra Quirks-serveren til farvekalibrering af visningen.</translation>
 <translation id="885381502874625531">Hviderussisk tastatur</translation>
 <translation id="8856844195561710094">Kunne ikke standse opdagelse af Bluetooth-enhed.</translation>
 <translation id="885701979325669005">Lagerplads</translation>
@@ -5343,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;Indstillinger</translation>
 <translation id="8926389886865778422">Spørg ikke igen</translation>
 <translation id="8926518602592448999">Deaktiver udvidelser, der kører i udviklertilstand</translation>
-<translation id="8929454297483336498">Brug af Mac OS X AVFoundation-API'er i stedet for QTKit</translation>
 <translation id="8931394284949551895">Nye enheder</translation>
 <translation id="8932730422557198035">Anvend Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Vis i Finder</translation>
@@ -5357,6 +5358,7 @@
 <translation id="894360074127026135">Netscape, international optrapning</translation>
 <translation id="8944779739948852228">Der er fundet en printer</translation>
 <translation id="8946359700442089734">Fejlfindingsfunktionerne blev ikke aktiveret korrekt på denne <ph name="IDS_SHORT_PRODUCT_NAME" />-enhed.</translation>
+<translation id="8946784827990177241">Aktivér WebUSB-support.</translation>
 <translation id="89515141420106838">Aktiverer Chrome Webshop Galleri-appen til printerdrivere. Appen søger efter udvidelser i Chrome Webshop, der understøtter udskrivning til en USB-printer med specifikt USB-id.</translation>
 <translation id="895347679606913382">Begynder...</translation>
 <translation id="8954952943849489823">Flytningen mislykkedes. Uventet fejl: $1</translation>
@@ -5501,6 +5503,7 @@
 <translation id="9154194610265714752">Opdateret</translation>
 <translation id="9154418932169119429">Dette billede er ikke tilgængeligt offline.</translation>
 <translation id="91568222606626347">Opret genvej...</translation>
+<translation id="9157697743260533322">Automatiske opdateringer kunne ikke konfigureres for alle brugere (fejl ved forhåndsopstart: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ups! Der opstod et problem med netværkskommunikationen under godkendelsen. Kontrollér din netværksforbindelse, og prøv igen.</translation>
 <translation id="9159562891634783594">Aktivér registrering af uregistrerede cloudprintere fra Vis udskrift.</translation>
 <translation id="9166510596677678112">Send e-mail til denne person</translation>
@@ -5512,7 +5515,6 @@
 <translation id="9170848237812810038">&amp;Fortryd</translation>
 <translation id="9170884462774788842">Et andet program på din computer tilføjede et tema, der kan ændre den måde, hvorpå Chrome fungerer.</translation>
 <translation id="9177499212658576372">Du har i øjeblikket forbindelse til netværket <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Administrer kreditkort</translation>
 <translation id="917858577839511832">Forhandling med DTLS 1.2 til WebRTC</translation>
 <translation id="917861274483335838">Administrer blokering af plugins...</translation>
 <translation id="9179348476548754105">Sådan håndterer adgangskodeadministratoren autofyld udelukkende for loginoplysningerne til synkronisering for transaktionsrelaterede sider til ny godkendelse.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 0cdb0dc..5f90a7b 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -159,7 +159,6 @@
     Bitte richten Sie Ihr Profil wieder ein.<ph name="BR" />
     <ph name="BR" />
     Auf dem nächsten Bildschirm können Sie uns Feedback geben und uns damit bei der Lösung des Problems helfen.</translation>
-<translation id="1216954813581739968">Tab "Für Desktopfreigabe" aktivieren.</translation>
 <translation id="121827551500866099">Alle Downloads anzeigen...</translation>
 <translation id="122082903575839559">Algorithmus für Zertifikatsignatur</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 mit RSA-Verschlüsselung</translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">URL mit %s statt der Suchanfrage</translation>
 <translation id="1546280085599573572">Durch diese Erweiterung wurde die Seite geändert, die beim Klicken auf die Schaltfläche "Startseite" erscheint.</translation>
 <translation id="1546795794523394272">Willkommen bei Chromebox für Meetings!</translation>
+<translation id="1547572086206517271">Seite muss aktualisiert werden</translation>
 <translation id="1547964879613821194">Kanadisches Englisch</translation>
 <translation id="1548132948283577726">Hier erscheinen Websites, für die keine Passwörter gespeichert werden.</translation>
 <translation id="1549045574060481141">Download bestätigen</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">Aktiviert das lokale Speichern kürzlich besuchter Seiten zur Offlinenutzung. Offlineseiten müssen aktiviert sein.</translation>
 <translation id="1891668193654680795">Diesem Zertifikat zur Identifizierung von Softwareherstellern vertrauen</translation>
 <translation id="189210018541388520">In Vollbildmodus öffnen</translation>
+<translation id="1892754076732315533">Eine vereinfachte neue Nutzererfahrung bei der auf einer Seite ausgelösten Vollbildanzeige oder Mauszeigersperre.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Cloud-Bereitstellungsfluss fehlgeschlagen</translation>
 <translation id="189358972401248634">Sonstige Sprachen</translation>
@@ -1318,6 +1319,7 @@
 <translation id="288042212351694283">Auf Ihre Universal 2nd Factor-Geräte zugreifen</translation>
 <translation id="2881966438216424900">Letzter Zugriff am:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> wird in wenigen Augenblicken neu gestartet und zurückgesetzt.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Taskmanager</translation>
 <translation id="2887525882758501333">PDF-Dokument</translation>
 <translation id="2888807692577297075">Keine Elemente für &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt; gefunden</translation>
@@ -1748,6 +1750,7 @@
 <translation id="3479552764303398839">Jetzt nicht</translation>
 <translation id="3480892288821151001">Fenster links verankern</translation>
 <translation id="3481915276125965083">Die folgenden Pop-ups wurden auf dieser Seite blockiert:</translation>
+<translation id="3482214069979148937">Halten Sie |<ph name="ACCELERATOR" />| gedrückt, um den Vollbildmodus zu beenden</translation>
 <translation id="3484869148456018791">Neues Zertifikat anfordern</translation>
 <translation id="3487007233252413104">Anonyme Funktion</translation>
 <translation id="348771913750618459">iFrame-basierte Anmeldevorgänge</translation>
@@ -1842,7 +1845,6 @@
 <translation id="3593965109698325041">Beschränkungen für Zertifikatsnamen</translation>
 <translation id="3595596368722241419">Akku voll</translation>
 <translation id="3600456501114769456">Der Zugriff auf lokale Dateien auf Ihrem Gerät wurde von Ihrem Administrator deaktiviert.</translation>
-<translation id="3601395307734599350">Alle Ihre Erweiterungen sind hier aufgeführt.</translation>
 <translation id="3603385196401704894">Kanadisches Französisch</translation>
 <translation id="3603622770190368340">Netzwerkzertifikat anfordern</translation>
 <translation id="3605780360466892872">Hemdträger</translation>
@@ -2225,7 +2227,6 @@
 <translation id="4151403195736952345">Globalen Standard verwenden (Erkennen)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 Tab}other{# Tabs}}</translation>
 <translation id="4154664944169082762">Fingerabdrücke</translation>
-<translation id="4157188838832721931">Deaktiviert die Aufforderung an Nutzer zur Eingabe ihres Betriebssystem-Passworts, bevor Passwörter auf der Passwortseite sichtbar gemacht werden</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Wiedergabeliste öffnen</translation>
 <translation id="4159681666905192102">Dies ist ein Konto für Kinder, das von <ph name="CUSTODIAN_EMAIL" /> und <ph name="SECOND_CUSTODIAN_EMAIL" /> verwaltet wird.</translation>
@@ -2269,7 +2270,6 @@
 <translation id="4218259925454408822">In anderem Konto anmelden</translation>
 <translation id="4219614746733932747">Wenn diese Option aktiviert ist, verwendet Blink einen Zoommechanismus, um Inhalte entsprechend des Skalierungsfaktors des Geräts zu skalieren.</translation>
 <translation id="4220865787605972627">Farbkalibrierung des Bildschirms zulassen, wenn der Bildschirm die Funktion unterstützt.</translation>
-<translation id="4233506668751282421">Audio für Desktopfreigabe aktivieren</translation>
 <translation id="4235200303672858594">Gesamter Bildschirm</translation>
 <translation id="4235813040357936597">Konto für <ph name="PROFILE_NAME" /> hinzufügen</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> kann in dieser Sprache nicht angezeigt werden.</translation>
@@ -2277,7 +2277,6 @@
 <translation id="4242577469625748426">Fehler beim Installieren der Richtlinieneinstellungen auf dem Gerät: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> möchte den Mauszeiger deaktivieren.</translation>
 <translation id="424546999567421758">Hohe Festplattennutzung festgestellt</translation>
-<translation id="4247072926966606568">Wenn diese Markierung aktiviert ist, kann der Nutzer auf seinem Desktop in einem Fenster auswählen, ob er die Audioinhalte freigeben möchte.</translation>
 <translation id="424726838611654458">Immer mit Adobe Reader öffnen</translation>
 <translation id="4249248555939881673">Auf Netzwerkverbindung warten...</translation>
 <translation id="4249373718504745892">Diese Seite darf nicht auf die Kamera und das Mikrofon zugreifen.</translation>
@@ -2350,7 +2349,6 @@
 <translation id="4358697938732213860">Adresse hinzufügen</translation>
 <translation id="4359408040881008151">Wurde aufgrund der abhängigen Erweiterungen installiert</translation>
 <translation id="4361190688154226069">Zielbestimmung in Ansichten mithilfe von Rechtecken</translation>
-<translation id="4363372140743955595">Erneute Authentifizierung von Passwortmanager</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> heruntergeladen</translation>
 <translation id="4364830672918311045">Benachrichtigungen einblenden</translation>
 <translation id="4365673000813822030">Hoppla, die Synchronisierung funktioniert nicht mehr.</translation>
@@ -2407,6 +2405,7 @@
 <translation id="4449935293120761385">Über AutoFill</translation>
 <translation id="4449996769074858870">Auf diesem Tab wird Audio wiedergegeben.</translation>
 <translation id="4450974146388585462">Diagnose</translation>
+<translation id="4452426408005428395">Abbrechen</translation>
 <translation id="4454939697743986778">Dieses Zertifikat wurde von Ihrem Systemadministrator installiert.</translation>
 <translation id="445923051607553918">Mit WLAN-Netzwerk verbinden</translation>
 <translation id="4462159676511157176">Benutzerdefinierte Nameserver</translation>
@@ -2484,7 +2483,6 @@
 <translation id="4594109696316595112">Einmalige Aktivierung: Geben Sie Ihr Passwort ein, um Smart Lock auf diesem <ph name="DEVICE_TYPE" /> zu aktivieren. Mit Smart Lock können Sie Ihr Gerät mit Ihrem Smartphone entsperren ‒ ganz ohne Passwort. Sie können diese Funktion in den Einstellungen Ihres <ph name="DEVICE_TYPE" /> ändern oder deaktivieren.</translation>
 <translation id="4595560905247879544">Apps und Erweiterungen können nur vom Administrator, <ph name="CUSTODIAN_NAME" />, geändert werden.</translation>
 <translation id="4601242977939794209">EMF-Konverter</translation>
-<translation id="4601250583401186741">Pairing mit einem Controller durchführen</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> immer Zugriff auf Kamera und Mikrofon gestatten</translation>
 <translation id="4605399136610325267">Keine Internetverbindung</translation>
 <translation id="4608500690299898628">&amp;Suchen...</translation>
@@ -2777,6 +2775,7 @@
 <translation id="5039804452771397117">Zulassen</translation>
 <translation id="5045550434625856497">Falsches Passwort</translation>
 <translation id="5048179823246820836">Nordisch</translation>
+<translation id="5048294425697652159">Quirks-Client zur Kalibrierung der Anzeige aktivieren.</translation>
 <translation id="5053604404986157245">Das nach dem Zufallsprinzip erzeugte TPM-Passwort ist nicht verfügbar. Dies ist nach einem Powerwash normal.</translation>
 <translation id="5053803681436838483">Neue Versandadresse...</translation>
 <translation id="5055309315264875868">Anzeige eines Links auf der Einstellungsseite des Passwortmanagers, über den Sie Ihre synchronisierten Passwörter online verwalten können</translation>
@@ -2872,7 +2871,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Bewegungsanforderung für Medienwiedergabe</translation>
 <translation id="5189060859917252173">Das Zertifikat "<ph name="CERTIFICATE_NAME" />" repräsentiert eine Zertifizierungsstelle.</translation>
-<translation id="5196117515621749903">Ignorierten Cache neu laden</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronisierung abgeschlossen</translation>
@@ -2887,6 +2885,7 @@
 <translation id="521582610500777512">Das Foto wurde verworfen.</translation>
 <translation id="5218183485292899140">Schweizer Französisch</translation>
 <translation id="5218766986344577658">Pop-up zur Linkauswahl</translation>
+<translation id="5220992698394817380">IME-Aktivierungsmenü aktivieren</translation>
 <translation id="5222676887888702881">Abmelden</translation>
 <translation id="5225324770654022472">Verknüpfung "Apps" anzeigen</translation>
 <translation id="5227536357203429560">Privates Netzwerk hinzufügen...</translation>
@@ -2929,6 +2928,7 @@
 <translation id="5271247532544265821">Zwischen Modi für vereinfachtes/traditionelles Chinesisch umschalten</translation>
 <translation id="5271549068863921519">Passwort speichern</translation>
 <translation id="5273628206174272911">Experimentelle Navigation im Verlauf durch waagrechten Overscroll</translation>
+<translation id="5275194674756975076">OK, aktualisieren</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> von dieser Website</translation>
 <translation id="5275973617553375938">Wiederhergestellte Dateien von Google Drive</translation>
 <translation id="527605719918376753">Tab stummschalten</translation>
@@ -3002,6 +3002,7 @@
 <translation id="5368720394188453070">Ihr Telefon ist gesperrt. Entsperren Sie es, um fortzufahren.</translation>
 <translation id="5369927996833026114">Jetzt Chrome App Launcher entdecken!</translation>
 <translation id="5370819323174483825">&amp;Neu laden</translation>
+<translation id="5372066618989754822">Zugriff auf das neue IME-Menü auf der Seite "Spracheinstellungen" aktivieren.</translation>
 <translation id="5372529912055771682">Der bereitgestellte Anmeldemodus wird von dieser Betriebssystemversion nicht unterstützt. Führen Sie eine Aktualisierung auf die neueste Version aus und versuchen Sie es dann erneut.</translation>
 <translation id="5374359983950678924">Bild ändern</translation>
 <translation id="5376169624176189338">Klicken, um zurückzugehen. Gedrückt halten, um Verlauf aufzurufen</translation>
@@ -3187,6 +3188,7 @@
 <translation id="5626134646977739690">Name:</translation>
 <translation id="5627086634964711283">Die Erweiterung legt auch fest, welche Seite beim Klicken auf die Schaltfläche "Startseite" erscheint.</translation>
 <translation id="5627259319513858869">Ermöglicht die Verwendung experimenteller Canvas-Funktionen, die sich noch in Entwicklung befinden</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design in der oberen Leiste des Chrome-Browsers</translation>
 <translation id="5633060877636360447">Dadurch werden mindestens <ph name="TOTAL_COUNT" /> Elemente dauerhaft von diesem Gerät gelöscht. Synchronisierte Elemente von anderen Geräten sind davon nicht betroffen.</translation>
 <translation id="5636996382092289526">Zur Verwendung von <ph name="NETWORK_ID" /> müssen Sie eventuell zuerst die <ph name="LINK_START" />Anmeldeseite des Netzwerks besuchen<ph name="LINK_END" />. Diese wird in einigen Sekunden automatisch geöffnet. Anderenfalls kann das Netzwerk nicht verwendet werden.</translation>
@@ -3217,6 +3219,7 @@
 <translation id="5678862612529498267">Objekt mit Tastaturfokus hervorheben</translation>
 <translation id="5678955352098267522">Ihre Daten auf <ph name="WEBSITE_1" /> lesen</translation>
 <translation id="5680928275846978395">Textfilterung im Übersichtsmodus</translation>
+<translation id="5683818630978268777">Experimentelle Benutzeroberfläche mit Tastatursperre.</translation>
 <translation id="5684661240348539843">Geräte-ID</translation>
 <translation id="569068482611873351">Importieren...</translation>
 <translation id="56907980372820799">Daten verknüpfen</translation>
@@ -3682,7 +3685,6 @@
 <translation id="6420676428473580225">Zu Desktop hinzufügen</translation>
 <translation id="6422329785618833949">Foto gespiegelt</translation>
 <translation id="642282551015776456">Dieser Name darf nicht als Datei- oder Ordnername verwendet werden.</translation>
-<translation id="642322423610046417">Rufen Sie per Rechtsklick das Kontextmenü auf und entfernen Sie die Erweiterungen, die Sie nicht benötigen.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader als Standard-PDF-Viewer verwenden?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3753,6 +3755,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Ein experimenteller Vollbildmodus mit Tastatursperre, der durch Halten der Taste "Esc" beendet wird.</translation>
 <translation id="6527303717912515753">Teilen</translation>
 <translation id="6528546217685656218">Der private Schlüssel für dieses Clientzertifikat fehlt oder ist ungültig.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> wird synchronisiert...</translation>
@@ -3932,6 +3935,7 @@
 <translation id="6825883775269213504">Russisch</translation>
 <translation id="6827236167376090743">Dieses Video läuft immer weiter und weiter...</translation>
 <translation id="6828153365543658583">Anmeldung auf die folgenden Nutzer beschränken:</translation>
+<translation id="6828860976882136098">Automatische Updates für alle Nutzer konnten nicht eingerichtet werden (Preflight-Ausführungsfehler: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Hilfe zu Ihrem Gerät (<ph name="DEVICE_TYPE" />)</translation>
 <translation id="6829270497922309893">Anmeldung in Ihrer Organisation</translation>
 <translation id="6830590476636787791">Animierte Übergänge bei der Einführung</translation>
@@ -3954,7 +3958,6 @@
 <translation id="6860427144121307915">In Tab öffnen</translation>
 <translation id="6862635236584086457">Alle in diesem Ordner gespeicherten Dateien werden automatisch online gesichert.</translation>
 <translation id="6865313869410766144">AutoFill-Formulardaten</translation>
-<translation id="6865319096921627602">Aktiviert die einheitliche Medienpipeline unter Android</translation>
 <translation id="6867678160199975333">Zu <ph name="NEW_PROFILE_NAME" /> wechseln</translation>
 <translation id="6869402422344886127">Aktiviertes Kästchen</translation>
 <translation id="6870130893560916279">Ukrainische Tastatur</translation>
@@ -4048,6 +4051,7 @@
 <translation id="7006017748900345484">Softwarebasierter Codierer/Decodierer für WebRTC-H.264-Videos</translation>
 <translation id="7006634003215061422">Unterer Rand</translation>
 <translation id="7006844981395428048">$1-Audio</translation>
+<translation id="7008270479623533562">Aktualisieren Sie die Seite, wenn Sie diese Erweiterung ausführen möchten. Sie können diese Erweiterung automatisch ausführen, indem Sie mit der rechten Maustaste auf das Erweiterungssymbol klicken.</translation>
 <translation id="7009045250432250765">AutoFill mit einem Klick</translation>
 <translation id="7010160495478792664">Bei Verfügbarkeit hardwarebeschleunigte Videodecodierung.</translation>
 <translation id="7010400591230614821">Aggressive Tab-Freigabestrategie</translation>
@@ -4212,7 +4216,6 @@
 <translation id="7256710573727326513">In Tab öffnen</translation>
 <translation id="7257173066616499747">WLAN-Netzwerke</translation>
 <translation id="7257666756905341374">Daten lesen, die Sie kopieren und einfügen</translation>
-<translation id="7260002739296185724">Aktiviert AVFoundation für Videoaufnahmen und Videoüberwachung auf Geräten mit OS X 10.7 oder höher. Andernfalls wird QTKit verwendet.</translation>
 <translation id="7260504762447901703">Zugriff entziehen</translation>
 <translation id="7262004276116528033">Dieser Anmeldedienst wird von <ph name="SAML_DOMAIN" /> gehostet.</translation>
 <translation id="7262221505565121">Ausnahmen für Plug-in-Zugriff ohne Sandbox</translation>
@@ -4250,7 +4253,6 @@
 <translation id="7314278895724341067">"Neuer Tab"-Offlineseiten aktivieren</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (aktuell)</translation>
 <translation id="7321545336522791733">Server nicht erreichbar</translation>
-<translation id="7324841169865301118">Ermöglicht dem Nutzer die Auswahl eines Tabs für die Desktopfreigabe.</translation>
 <translation id="7325437708553334317">High Contrast-Erweiterung</translation>
 <translation id="7326565110843845436">Klicken mit drei Fingern für das Touchpad</translation>
 <translation id="73289266812733869">Markierung aufgehoben</translation>
@@ -5003,7 +5005,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto von</translation>
 <translation id="8428213095426709021">Einstellungen</translation>
-<translation id="8432590265309978927">Sehr experimentelle Unterstützung des Renderings von websiteübergreifenden iFrames in separaten Prozessen</translation>
 <translation id="8432745813735585631">US-amerikanische Colemak-Tastatur</translation>
 <translation id="8434177709403049435">&amp;Codierung</translation>
 <translation id="8434480141477525001">NaCl-Debug-Port</translation>
@@ -5200,7 +5201,6 @@
 <translation id="8713979477561846077">Aktiviert die Autokorrektur für physische Tastaturen für Englisch (USA). Damit erhalten Sie Vorschläge bei der Eingabe auf einer physischen Tastatur.</translation>
 <translation id="871476437400413057">In Google gespeicherte Passwörter</translation>
 <translation id="8714838604780058252">Hintergrundgrafiken</translation>
-<translation id="8716065142695381595">Aktiviert die einheitliche Medienpipeline für Android und die Desktop-Version unter Android.</translation>
 <translation id="8722421161699219904">Internationale US-amerikanische Tastatur</translation>
 <translation id="872451400847464257">Suchmaschine bearbeiten</translation>
 <translation id="8724859055372736596">&amp;In Ordner anzeigen</translation>
@@ -5220,6 +5220,7 @@
 <translation id="8737685506611670901"><ph name="PROTOCOL" />-Links anstelle von <ph name="REPLACED_HANDLER_TITLE" /> öffnen</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Position einer Berührung eindeutiger definieren, um die schlechte Auflösung von Berührungen im Vergleich zu einem Mauscursor zu kompensieren.</translation>
+<translation id="8743712320294854924">Erweiterte Eingabeoptionen in der Ablage anzeigen.</translation>
 <translation id="874420130893181774">Traditionelle Pinyin-Eingabemethode</translation>
 <translation id="8744525654891896746">Avatar für den betreuten Nutzer auswählen</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5289,6 +5290,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Moduswechsel mit Shift</translation>
 <translation id="8852742364582744935">Folgende Apps und Erweiterungen wurden hinzugefügt:</translation>
+<translation id="8853611566624224021">Abrufen der icc-Anzeigedateien für die Farbkalibrierung der Anzeige vom Quirks-Server aktivieren.</translation>
 <translation id="885381502874625531">Weißrussische Tastatur</translation>
 <translation id="8856844195561710094">Bluetooth-Geräteerkennung konnte nicht beendet werden.</translation>
 <translation id="885701979325669005">Speicher</translation>
@@ -5338,7 +5340,6 @@
 <translation id="8925458182817574960">&amp;Einstellungen</translation>
 <translation id="8926389886865778422">Nicht mehr fragen</translation>
 <translation id="8926518602592448999">Erweiterungen im Entwicklermodus deaktivieren</translation>
-<translation id="8929454297483336498">AVFoundation APIs für Mac OS X verwenden (statt QTKit)</translation>
 <translation id="8931394284949551895">Neue Geräte</translation>
 <translation id="8932730422557198035">Android Midi API verwenden</translation>
 <translation id="8933960630081805351">Im Finder &amp;anzeigen</translation>
@@ -5352,6 +5353,7 @@
 <translation id="894360074127026135">Netscape International Step-up</translation>
 <translation id="8944779739948852228">Drucker gefunden</translation>
 <translation id="8946359700442089734">Die Debugging-Funktionen wurden auf diesem <ph name="IDS_SHORT_PRODUCT_NAME" />-Gerät nicht vollständig aktiviert.</translation>
+<translation id="8946784827990177241">WebUSB-Unterstützung aktivieren.</translation>
 <translation id="89515141420106838">Aktiviert Chrome Web Store-Galerie App für Druckertreiber. Die App sucht im Chrome Web Store nach Erweiterungen, die das Drucken auf einem USB-Drucker mit spezifischer USB-ID unterstützen.</translation>
 <translation id="895347679606913382">Wird gestartet...</translation>
 <translation id="8954952943849489823">Unerwarteter Fehler beim Verschieben: $1</translation>
@@ -5495,6 +5497,7 @@
 <translation id="9154194610265714752">Aktualisiert</translation>
 <translation id="9154418932169119429">Dieses Bild ist offline nicht verfügbar.</translation>
 <translation id="91568222606626347">Verknüpfung erstellen...</translation>
+<translation id="9157697743260533322">Automatische Updates für alle Nutzer konnten nicht eingerichtet werden (Preflight-Startfehler: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Hoppla! Während der Authentifizierung ist ein Kommunikationsproblem mit dem Netzwerk aufgetreten. Überprüfen Sie bitte Ihre Netzwerkverbindung und versuchen Sie es erneut.</translation>
 <translation id="9159562891634783594">Registrierung nicht registrierter Cloud-Drucker über die Druckvorschau aktivieren</translation>
 <translation id="9166510596677678112">E-Mail an diese Person senden</translation>
@@ -5506,7 +5509,6 @@
 <translation id="9170848237812810038">&amp;Rückgängig</translation>
 <translation id="9170884462774788842">Ein anderes Programm auf Ihrem Computer hat ein Design hinzugefügt, das sich möglicherweise auf die Funktionsweise von Chrome auswirkt.</translation>
 <translation id="9177499212658576372">Sie sind derzeit mit dem <ph name="NETWORK_TYPE" />-Netzwerk verbunden.</translation>
-<translation id="9177556055091995297">Kreditkarten verwalten</translation>
 <translation id="917858577839511832">Aushandlung mit DTLS 1.2 für WebRTC</translation>
 <translation id="917861274483335838">Plug-in-Blockierung verwalten...</translation>
 <translation id="9179348476548754105">Regelt die Verwendung der AutoFill-Funktion für Synchronisierungsanmeldedaten bei Transaktionsseiten mit erneuter Authentifizierung im Passwortmanager.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index e0065e2e..dae922c5 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -160,7 +160,6 @@
     Θα πρέπει να ρυθμίσετε ξανά το προφίλ σας.<ph name="BR" />
     <ph name="BR" />
     Στην επόμενη οθόνη, σας προτείνουμε να μας στείλετε περισσότερες πληροφορίες για να μπορέσουμε να διορθώσουμε το πρόβλημα.</translation>
-<translation id="1216954813581739968">Ενεργοποίηση καρτέλας για κοινή χρήση υπολογιστή.</translation>
 <translation id="121827551500866099">Εμφάνιση όλων των λήψεων...</translation>
 <translation id="122082903575839559">Αλγόριθμος υπογραφής πιστοποιητικού</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 με κρυπτογράφηση RSA</translation>
@@ -392,6 +391,7 @@
 <translation id="1545786162090505744">URL με % στη θέση του ερωτήματος</translation>
 <translation id="1546280085599573572">Αυτή η επέκταση άλλαξε τη σελίδα που εμφανίζεται όταν κάνετε κλικ στο κουμπί αρχικής σελίδας.</translation>
 <translation id="1546795794523394272">Καλωσήρθατε στο Chromebox για συναντήσεις!</translation>
+<translation id="1547572086206517271">Απαιτείται ανανέωση</translation>
 <translation id="1547964879613821194">Αγγλικά Καναδά</translation>
 <translation id="1548132948283577726">Οι ιστότοποι που δεν αποθηκεύουν ποτέ κωδικούς πρόσβασης θα εμφανιστούν εδώ.</translation>
 <translation id="1549045574060481141">Επιβεβαίωση λήψης</translation>
@@ -620,6 +620,7 @@
 <translation id="1891196807951270080">Ενεργοποίηση τοπικής αποθήκευσης σελίδων για χρήση εκτός σύνδεσης. Απαιτεί την ενεργοποίηση των Σελίδων εκτός σύνδεσης.</translation>
 <translation id="1891668193654680795">Να γίνεται αποδεκτό αυτό το πιστοποιητικό για την ταυτοποίηση κατασκευαστών λογισμικού.</translation>
 <translation id="189210018541388520">Άνοιγμα πλήρους οθόνης</translation>
+<translation id="1892754076732315533">Μια απλουστευμένη νέα εμπειρία χρήστη κατά την είσοδο σε πλήρη οθόνη που ενεργοποιείται από μια σελίδα ή σε καταστάσεις κλειδώματος του δείκτη του ποντικιού.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Αποτυχία ροής παροχής cloud</translation>
 <translation id="189358972401248634">Άλλες γλώσσες</translation>
@@ -1327,6 +1328,7 @@
 <translation id="288042212351694283">Πρόσβαση στις συσκευές με Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Τελευταία πρόσβαση:</translation>
 <translation id="2882943222317434580">Θα γίνει άμεσα επανεκκίνηση και επαναφορά του <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Διαχείριση εργασιών</translation>
 <translation id="2887525882758501333">Έγγραφο PDF</translation>
 <translation id="2888807692577297075">Δεν υπάρχουν στοιχεία σε αντιστοιχία με το &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1760,6 +1762,7 @@
 <translation id="3479552764303398839">Όχι τώρα</translation>
 <translation id="3480892288821151001">Αγκύρωση παραθύρου αριστερά</translation>
 <translation id="3481915276125965083">Έγινε αποκλεισμός των ακόλουθων αναδυόμενων παραθύρων σε αυτήν τη σελίδα:</translation>
+<translation id="3482214069979148937">Πατήστε το |<ph name="ACCELERATOR" />| παρατεταμένα για να εξέλθετε από την πλήρη οθόνη</translation>
 <translation id="3484869148456018791">Λήψη νέου πιστοποιητικού</translation>
 <translation id="3487007233252413104">ανώνυμη λειτουργία</translation>
 <translation id="348771913750618459">Ροές σύνδεσης που βασίζονται σε iframe</translation>
@@ -1855,7 +1858,6 @@
 <translation id="3593965109698325041">Περιορισμοί ονόματος πιστοποιητικού</translation>
 <translation id="3595596368722241419">Μπαταρία πλήρης</translation>
 <translation id="3600456501114769456">Η πρόσβαση στα τοπικά αρχεία στη συσκευή σας έχει απενεργοποιηθεί από τον διαχειριστή σας.</translation>
-<translation id="3601395307734599350">Όλες οι επεκτάσεις σας βρίσκονται εδώ</translation>
 <translation id="3603385196401704894">Γαλλικά Καναδά</translation>
 <translation id="3603622770190368340">Απόκτηση πιστοποιητικού δικτύου</translation>
 <translation id="3605780360466892872">Άνετος</translation>
@@ -2239,7 +2241,6 @@
 <translation id="4151403195736952345">Χρήση καθολικής προεπιλογής (Εντοπισμός)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 καρτέλα}other{# καρτέλες}}</translation>
 <translation id="4154664944169082762">Αποτυπώματα</translation>
-<translation id="4157188838832721931">Απενεργοποίηση ερώτησης του χρήστη προτού αποκαλυφθούν οι κωδικοί πρόσβασης λειτουργικού συστήματος στη σελίδα των κωδικών πρόσβασης.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Άνοιγμα playlist</translation>
 <translation id="4159681666905192102">Αυτός είναι ένας λογαριασμός για παιδιά τον οποίο διαχειρίζονται οι χρήστες <ph name="CUSTODIAN_EMAIL" /> και <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2283,7 +2284,6 @@
 <translation id="4218259925454408822">Σύνδεση σε άλλο λογαριασμό…</translation>
 <translation id="4219614746733932747">Εάν είναι ενεργό, το Blink χρησιμοποιεί το μηχανισμό ζουμ για να προβάλλει περιεχόμενο σε κλίμακα, σύμφωνα με τον παράγοντα κλίμακας της συσκευής.</translation>
 <translation id="4220865787605972627">Να επιτρέπεται η βαθμονόμηση χρωμάτων της οθόνης, εάν η οθόνη υποστηρίζει τη λειτουργία.</translation>
-<translation id="4233506668751282421">Ενεργοποίηση ήχου για κοινή χρήση υπολογιστή</translation>
 <translation id="4235200303672858594">Πλήρης οθόνη</translation>
 <translation id="4235813040357936597">Προσθήκη λογαριασμού για <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Δεν είναι δυνατή η εμφάνιση του <ph name="PRODUCT_NAME" /> σε αυτή τη γλώσσα</translation>
@@ -2291,7 +2291,6 @@
 <translation id="4242577469625748426">Αποτυχία εγκατάστασης ρυθμίσεων πολιτικής στη συσκευή: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Το <ph name="FULLSCREEN_ORIGIN" /> θέλει να απενεργοποιήσει τον δείκτη του ποντικιού σας.</translation>
 <translation id="424546999567421758">Εντοπίστηκε υψηλή χρήση του δίσκου</translation>
-<translation id="4247072926966606568">Εάν έχει αυτήν την επισήμανση, το παράθυρο εργαλείου επιλογής κοινής χρήσης υπολογιστή θα δίνει τη δυνατότητα στο χρήστη να επιλέξει εάν θα επιτρέψει την κοινή χρήση ήχου.</translation>
 <translation id="424726838611654458">Να είναι πάντα ανοικτό στο Adobe Reader</translation>
 <translation id="4249248555939881673">Αναμονή για σύνδεση δικτύου…</translation>
 <translation id="4249373718504745892">Αποκλείστηκε η πρόσβαση αυτής της σελίδας στην κάμερα και στο μικρόφωνό σας.</translation>
@@ -2364,7 +2363,6 @@
 <translation id="4358697938732213860">Προσθήκη διεύθυνσης</translation>
 <translation id="4359408040881008151">Εγκαταστάθηκε λόγω των εξαρτώμενων επεκτάσεων</translation>
 <translation id="4361190688154226069">Στόχευση σε σχήμα ορθογωνίου στις προβολές</translation>
-<translation id="4363372140743955595">Εκ νέου έλεγχος ταυτότητας διαχειριστή κωδικού πρόσβασης</translation>
 <translation id="4364444725319685468">Έγινε λήψη του αρχείου <ph name="FILE_NAME" /></translation>
 <translation id="4364830672918311045">Εμφάνιση ειδοποιήσεων</translation>
 <translation id="4365673000813822030">Ωχ, ο συγχρονισμός σταμάτησε να λειτουργεί.</translation>
@@ -2421,6 +2419,7 @@
 <translation id="4449935293120761385">Σχετικά με την Αυτόματη συμπλήρωση</translation>
 <translation id="4449996769074858870">Αυτή η καρτέλα πραγματοποιεί αναπαραγωγή ήχου.</translation>
 <translation id="4450974146388585462">Διάγνωση</translation>
+<translation id="4452426408005428395">Δεν πειράζει</translation>
 <translation id="4454939697743986778">Αυτό το πιστοποιητικό έχει εγκατασταθεί από το διαχειριστή του συστήματός σας.</translation>
 <translation id="445923051607553918">Σύνδεση με δίκτυο Wi-Fi</translation>
 <translation id="4462159676511157176">Προσαρμοσμένοι διακομιστές ονομάτων</translation>
@@ -2498,7 +2497,6 @@
 <translation id="4594109696316595112">Εφάπαξ ενεργοποίηση: Πληκτρολογήστε τον κωδικό πρόσβασής σας για να ενεργοποιήσετε τη λειτουργία Smart Lock σε αυτήν τη συσκευή <ph name="DEVICE_TYPE" />. Με τη λειτουργία Smart Lock, το τηλέφωνό σας θα ξεκλειδώσει αυτήν τη συσκευή χωρίς κωδικό πρόσβασης. Για να αλλάξετε ή να απενεργοποιήσετε αυτήν τη λειτουργία, ανατρέξτε στις ρυθμίσεις της συσκευής <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Οι εφαρμογές και οι επεκτάσεις μπορούν να τροποποιηθούν μόνο από τον διαχειριστή(<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Εργαλείο μετατροπής EMF</translation>
-<translation id="4601250583401186741">Σύζευξη με ελεγκτή</translation>
 <translation id="4602466770786743961">Να επιτρέπεται πάντα στο <ph name="HOST" /> η πρόσβαση στην κάμερα και στο μικρόφωνό σας</translation>
 <translation id="4605399136610325267">Δεν υπάρχει σύνδεση στο διαδίκτυο</translation>
 <translation id="4608500690299898628">&amp;Εύρεση...</translation>
@@ -2796,6 +2794,7 @@
 <translation id="5039804452771397117">Επιτρέπεται</translation>
 <translation id="5045550434625856497">Λανθασμένος κωδικός πρόσβασης</translation>
 <translation id="5048179823246820836">Σκανδιναβική</translation>
+<translation id="5048294425697652159">Ενεργοποίηση εφαρμογής πελάτη Quirks για βαθμονόμηση οθόνης.</translation>
 <translation id="5053604404986157245">Ο κωδικός πρόσβασης TPM που δημιουργήθηκε τυχαία δεν είναι διαθέσιμος. Αυτό είναι φυσιολογικό μετά το Powerwash.</translation>
 <translation id="5053803681436838483">Νέα διεύθυνση αποστολής…</translation>
 <translation id="5055309315264875868">Εμφάνιση ενός συνδέσμου στη σελίδα ρυθμίσεων της διαχείρισης κωδικών πρόσβασης για τη διαχείριση των συγχρονισμένων κωδικών σας στο διαδίκτυο.</translation>
@@ -2895,7 +2894,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Απαίτηση κίνησης για αναπαραγωγή μέσων</translation>
 <translation id="5189060859917252173">Το πιστοποιητικό "<ph name="CERTIFICATE_NAME" />" αντιπροσωπεύει μια Αρχή Πιστοποίησης.</translation>
-<translation id="5196117515621749903">Επανάληψη φόρτωσης με παράβλεψη της προσωρινής μνήμης</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Ο συγχρονισμός ολοκληρώθηκε.</translation>
@@ -2910,6 +2908,7 @@
 <translation id="521582610500777512">Η φωτογραφία απορρίφτηκε</translation>
 <translation id="5218183485292899140">Γαλλικά Ελβετίας</translation>
 <translation id="5218766986344577658">Αναδυόμενο παράθυρο αποσαφήνισης συνδέσμου</translation>
+<translation id="5220992698394817380">Ενεργοποίηση μενού IME συμμετοχής</translation>
 <translation id="5222676887888702881">Έξοδος</translation>
 <translation id="5225324770654022472">Εμφάνιση συντόμευσης εφαρμογών</translation>
 <translation id="5227536357203429560">Προσθήκη ιδιωτικού δικτύου...</translation>
@@ -2952,6 +2951,7 @@
 <translation id="5271247532544265821">Εναλλαγή λειτουργίας απλοποιημένων/παραδοσιακών κινέζικων.</translation>
 <translation id="5271549068863921519">Αποθήκευση κωδικού πρόσβασης</translation>
 <translation id="5273628206174272911">Πειραματική πλοήγηση ιστορικού ως απόκριση στο οριζόντιο overscroll.</translation>
+<translation id="5275194674756975076">Εντάξει, να γίνει ανανέωση</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> από αυτόν τον ιστότοπο</translation>
 <translation id="5275973617553375938">Ανακτημένα αρχεία από το Google Drive</translation>
 <translation id="527605719918376753">Σίγαση καρτέλας</translation>
@@ -3025,6 +3025,7 @@
 <translation id="5368720394188453070">Το τηλέφωνό σας είναι κλειδωμένο. Ξεκλειδώστε το για να εισέλθετε.</translation>
 <translation id="5369927996833026114">Ανακαλύψτε τη Λειτουργία εκκίνησης εφαρμογών του Chrome</translation>
 <translation id="5370819323174483825">Ε&amp;πανάληψη φόρτωσης</translation>
+<translation id="5372066618989754822">Ενεργοποίηση πρόσβασης στο νέο μενού IME στη σελίδα "Ρυθμίσεις γλώσσας".</translation>
 <translation id="5372529912055771682">Η παρεχόμενη λειτουργία εγγραφής δεν υποστηρίζεται από αυτήν την έκδοση του λειτουργικού συστήματος.  Βεβαιωθείτε ότι εκτελείτε την πιο πρόσφατη έκδοση και δοκιμάστε ξανά.</translation>
 <translation id="5374359983950678924">Αλλαγή εικόνας</translation>
 <translation id="5376169624176189338">Κάντε κλικ για για να πάτε πίσω, κρατήστε το κουμπί πατημένο για να δείτε το ιστορικό</translation>
@@ -3212,6 +3213,7 @@
 <translation id="5626134646977739690">Όνομα:</translation>
 <translation id="5627086634964711283">Επίσης, ελέγχει τη σελίδα που εμφανίζεται όταν κάνετε κλικ στο κουμπί αρχικής σελίδας.</translation>
 <translation id="5627259319513858869">Επιτρέπει τη χρήση πειραματικών λειτουργιών καμβά, οι οποίες βρίσκονται ακόμα υπό ανάπτυξη.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design στο επάνω μέρος του προγράμματος περιήγησης Chrome</translation>
 <translation id="5633060877636360447">Με αυτή την ενέργεια θα διαγραφούν οριστικά τουλάχιστον <ph name="TOTAL_COUNT" /> στοιχεία από αυτή τη συσκευή, αλλά δεν θα γίνει εκκαθάριση των συγχρονισμένων στοιχείων από άλλες συσκευές.</translation>
 <translation id="5636996382092289526">Για να χρησιμοποιήσετε το <ph name="NETWORK_ID" /> ίσως χρειαστεί πρώτα να <ph name="LINK_START" />επισκεφτείτε τη σελίδα σύνδεσης του δικτύου<ph name="LINK_END" />, η οποία θα ανοίξει αυτόματα σε λίγα δευτερόλεπτα. Εάν αυτό δεν συμβεί, δεν είναι δυνατή η χρήση του δικτύου.</translation>
@@ -3242,6 +3244,7 @@
 <translation id="5678862612529498267">Επισήμανση του αντικειμένου με εστίαση στο πληκτρολόγιο</translation>
 <translation id="5678955352098267522">Ανάγνωση των δεδομένων σας στο <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Φιλτράρισμα κειμένου στη λειτουργία επισκόπησης</translation>
+<translation id="5683818630978268777">Διεπαφή χρήστη πειραματικού κλειδώματος πληκτρολογίου.</translation>
 <translation id="5684661240348539843">Αναγνωριστικό στοιχείου</translation>
 <translation id="569068482611873351">Εισαγωγή...</translation>
 <translation id="56907980372820799">Σύνδεση δεδομένων</translation>
@@ -3707,7 +3710,6 @@
 <translation id="6420676428473580225">Προσθήκη στην επιφάνεια εργασίας</translation>
 <translation id="6422329785618833949">Η φωτογραφία μετακινήθηκε</translation>
 <translation id="642282551015776456">Αυτό το όνομα δεν μπορεί να χρησιμοποιηθεί ως όνομα αρχείου ή φακέλου</translation>
-<translation id="642322423610046417">Χρησιμοποιήστε το μενού περιβάλλοντος (δεξί κλικ) για να καταργήσετε τις επεκτάσεις που δεν χρειάζεστε.</translation>
 <translation id="6423239382391657905">Άνοιγμα VPN</translation>
 <translation id="6423731501149634044">Να χρησιμοποιείται από προεπιλογή το Adobe Reader για προβολή αρχείων PDF;</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3778,6 +3780,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Μια πειραματική πλήρης οθόνη με λειτουργία κλειδώματος πληκτρολογίου, η οποία απαιτεί από τους χρήστες παρατεταμένο πάτημα του Esc για έξοδο.</translation>
 <translation id="6527303717912515753">Κοινή χρήση</translation>
 <translation id="6528546217685656218">Το Ιδιωτικό κλειδί για αυτό το Πιστοποιητικό πελάτη λείπει ή δεν είναι έγκυρο.</translation>
 <translation id="653019979737152879">Συγχρονισμός <ph name="FILE_NAME" />…</translation>
@@ -3958,6 +3961,7 @@
 </translation>
 <translation id="6827236167376090743">Αυτό το βίντεο θα συνεχίσει να παίζει για πάντα.</translation>
 <translation id="6828153365543658583">Περιορισμός σύνδεσης στους ακόλουθους χρήστες:</translation>
+<translation id="6828860976882136098">Αποτυχία ρύθμισης αυτόματων ενημερώσεων για όλους τους χρήστες (σφάλμα προληπτικής εκτέλεσης: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Λάβετε βοήθεια για τη συσκευή σας <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Εγγραφή στον οργανισμό σας</translation>
 <translation id="6830590476636787791">Κινούμενες μεταβάσεις στον οδηγό πρώτης εκκίνησης</translation>
@@ -3981,7 +3985,6 @@
 <translation id="6860427144121307915">Άνοιγμα σε καρτέλα</translation>
 <translation id="6862635236584086457">Για όλα τα αρχεία που αποθηκεύονται σε αυτόν το φάκελο δημιουργούνται αυτόματα αντίγραφα ασφαλείας στο διαδίκτυο</translation>
 <translation id="6865313869410766144">Δεδομένα φόρμας αυτόματης συμπλήρωσης</translation>
-<translation id="6865319096921627602">Ενεργοποιεί την ενοποιημένη διοχέτευση πολυμέσων στο Android.</translation>
 <translation id="6867678160199975333">Εναλλαγή στο χρήστη <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Επιλεγμένο πλαίσιο ελέγχου</translation>
 <translation id="6870130893560916279">Πληκτρολόγιο με ουκρανικούς χαρακτήρες</translation>
@@ -4076,6 +4079,7 @@
 <translation id="7006017748900345484">Κωδικοποιητής/αποκωδικοποιητής βίντεο λογισμικού WebRTC H.264</translation>
 <translation id="7006634003215061422">Κάτω περιθώριο</translation>
 <translation id="7006844981395428048">$1 αρχείο ήχου</translation>
+<translation id="7008270479623533562">Θα πρέπει να ανανεώσετε τη σελίδα προκειμένου να εκτελεστεί αυτή η επέκταση. Μπορείτε να εκτελέσετε αυτήν την επέκταση αυτόματα σε αυτόν τον ιστότοπο, κάνοντας δεξί κλικ στο εικονίδιο της επέκτασης.</translation>
 <translation id="7009045250432250765">Αυτόματη συμπλήρωση με ένα κλικ</translation>
 <translation id="7010160495478792664">Αποκωδικοποίηση βίντεο με επιτάχυνση υλικού όπου διατίθεται.</translation>
 <translation id="7010400591230614821">Στρατηγική υποχρεωτικής απελευθέρωσης καρτελών</translation>
@@ -4242,7 +4246,6 @@
 <translation id="7256710573727326513">Άνοιγμα σε καρτέλα</translation>
 <translation id="7257173066616499747">Δίκτυα Wi-Fi</translation>
 <translation id="7257666756905341374">Ανάγνωση δεδομένων που αντιγράφετε και επικολλάτε</translation>
-<translation id="7260002739296185724">Ενεργοποίηση χρήσης AVFoundation για λήψη βίντεο και παρακολούθηση συσκευής βίντεο σε OS X &gt;= 10.7. Σε διαφορετική περίπτωση θα χρησιμοποιηθεί το QTKit.</translation>
 <translation id="7260504762447901703">Ανάκληση πρόσβασης</translation>
 <translation id="7262004276116528033">Η υπηρεσία σύνδεσης φιλοξενείται από τον τομέα <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Εξαιρέσεις πρόσβασης σε προσθήκη εκτός περιβάλλοντος δοκιμών</translation>
@@ -4280,7 +4283,6 @@
 <translation id="7314278895724341067">Ενεργοποίηση σελίδων εκτός σύνδεσης NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (τρέχον)</translation>
 <translation id="7321545336522791733">Μη προσβάσιμος διακομιστής</translation>
-<translation id="7324841169865301118">Επιτρέπει στο χρήστη να επιλέξει μια καρτέλα για κοινή χρήση υπολογιστή.</translation>
 <translation id="7325437708553334317">Επέκταση για τις "Αντιθέσεις"</translation>
 <translation id="7326565110843845436">Κλικ με τρία δάχτυλα σε επιφάνεια αφής</translation>
 <translation id="73289266812733869">Μη επιλεγμένο</translation>
@@ -5037,7 +5039,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Φωτογραφία από τον χρήστη</translation>
 <translation id="8428213095426709021">Ρυθμίσεις</translation>
-<translation id="8432590265309978927">Άκρως πειραματική υποστήριξη για την απόδοση iframe σε ολόκληρο τον ιστότοπο σε ξεχωριστές διαδικασίες.</translation>
 <translation id="8432745813735585631">Πληκτρολόγιο Colemak ΗΠΑ</translation>
 <translation id="8434177709403049435">Κωδικο&amp;ποίηση</translation>
 <translation id="8434480141477525001">NaCl Εντοπισμός σφαλμάτων θύρας</translation>
@@ -5236,7 +5237,6 @@
 <translation id="8713979477561846077">Ενεργοποιήστε την αυτόματη διόρθωση φυσικού πληκτρολογίου για το πληκτρολόγιο ΗΠΑ, η οποία μπορεί να παρέχει προτάσεις καθώς πληκτρολογείτε στο φυσικό πληκτρολόγιο.</translation>
 <translation id="871476437400413057">Κωδικοί πρόσβασης που έχουν αποθηκευτεί από το Google</translation>
 <translation id="8714838604780058252">Γραφικά φόντου</translation>
-<translation id="8716065142695381595">Ενεργοποιεί την ενοποιημένη (Android και υπολογιστές) διοχέτευση πολυμέσων στο Android.</translation>
 <translation id="8722421161699219904">Διεθνές πληκτρολόγιο ΗΠΑ</translation>
 <translation id="872451400847464257">Επεξεργασία μηχανής αναζήτησης</translation>
 <translation id="8724859055372736596">&amp;Εμφάνιση στο φάκελο</translation>
@@ -5257,6 +5257,7 @@
 <translation id="8737685506611670901">Άνοιγμα συνδέσμων <ph name="PROTOCOL" /> αντί για <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Συγκεκριμενοποίηση της θέσης μιας κίνησης αφής για αντιστάθμιση των κινήσεων αφής χαμηλής ανάλυσης σε σύγκριση με το ποντίκι.</translation>
+<translation id="8743712320294854924">Εμφάνιση ανεπτυγμένων επιλογών εισόδου στο ράφι.</translation>
 <translation id="874420130893181774">Μέθοδος εισαγωγής παραδοσιακών Πινγίν</translation>
 <translation id="8744525654891896746">Επιλέξτε avatar για αυτόν το χρήστη υπό επίβλεψη</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5324,6 +5325,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Εναλλαγή λειτουργίας με πλήκτρο Shift</translation>
 <translation id="8852742364582744935">Προστέθηκαν οι παρακάτω εφαρμογές και επεκτάσεις:</translation>
+<translation id="8853611566624224021">Ενεργοποίηση ανάκτησης αρχείων προβολής icc από το διακομιστή Quirks, για βαθμονόμηση χρωμάτων της οθόνης.</translation>
 <translation id="885381502874625531">Λευκορωσικό πληκτρολόγιο</translation>
 <translation id="8856844195561710094">Αποτυχία διακοπής αναζήτησης συσκευών Bluetooth.</translation>
 <translation id="885701979325669005">Αποθήκευση</translation>
@@ -5375,7 +5377,6 @@
 <translation id="8925458182817574960">&amp;Ρυθμίσεις</translation>
 <translation id="8926389886865778422">Να μην ερωτηθώ ξανά</translation>
 <translation id="8926518602592448999">Απενεργοποίηση επεκτάσεων λειτουργίας προγραμματιστή</translation>
-<translation id="8929454297483336498">Χρήση των API OS X AVFoundation, αντί του QTKit</translation>
 <translation id="8931394284949551895">Νέες συσκευές</translation>
 <translation id="8932730422557198035">Χρήση Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Εμφάνιση στο Finder</translation>
@@ -5389,6 +5390,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Εντοπίστηκε εκτυπωτής</translation>
 <translation id="8946359700442089734">Οι λειτουργίες εντοπισμού σφαλμάτων δεν ήταν πλήρως ενεργοποιημένες σε αυτήν τη συσκευή <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Ενεργοποίηση υποστήριξης WebUSB.</translation>
 <translation id="89515141420106838">Ενεργοποιεί την εφαρμογή Chrome Web Store Gallery για προγράμματα οδήγησης εκτυπωτών. Η εφαρμογή εκτελεί αναζήτηση στο Chrome Web Store για επεκτάσεις που υποστηρίζουν την εκτύπωση σε έναν εκτυπωτή USB με συγκεκριμένο αναγνωριστικό USB.</translation>
 <translation id="895347679606913382">Έναρξη...</translation>
 <translation id="8954952943849489823">Αποτυχία μετακίνησης, μη αναμενόμενο σφάλμα: $1</translation>
@@ -5532,6 +5534,7 @@
 <translation id="9154194610265714752">Ενημερώθηκε</translation>
 <translation id="9154418932169119429">Αυτή η εικόνα δεν είναι διαθέσιμη εκτός σύνδεσης.</translation>
 <translation id="91568222606626347">Δημιουργία συντόμευσης…</translation>
+<translation id="9157697743260533322">Αποτυχία ρύθμισης αυτόματων ενημερώσεων για όλους τους χρήστες (σφάλμα προληπτικής εκκίνησης: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ωχ!  Προέκυψε κάποιο πρόβλημα σχετικά με την επικοινωνία του δικτύου κατά τη διάρκεια του ελέγχου ταυτότητας.  Ελέγξτε τη σύνδεση του δικτύου σας και δοκιμάστε ξανά.</translation>
 <translation id="9159562891634783594">Ενεργοποίηση εγγραφής μη εγγεγραμμένων εκτυπωτών cloud από την προεπισκόπηση εκτύπωσης.</translation>
 <translation id="9166510596677678112">Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε αυτό το άτομο</translation>
@@ -5543,7 +5546,6 @@
 <translation id="9170848237812810038">Αναί&amp;ρεση</translation>
 <translation id="9170884462774788842">Κάποιο άλλο πρόγραμμα στον υπολογιστή σας πρόσθεσε ένα θέμα, το οποίο ενδέχεται να αλλάξει τον τρόπο λειτουργίας του Chrome.</translation>
 <translation id="9177499212658576372">Αυτήν τη στιγμή είστε συνδεδεμένοι στο δίκτυο <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Διαχείριση πιστωτικών καρτών</translation>
 <translation id="917858577839511832">Διαπραγμάτευση με DTLS 1.2 για WebRTC</translation>
 <translation id="917861274483335838">Διαχείριση αποκλεισμού προσθηκών…</translation>
 <translation id="9179348476548754105">Πώς χειρίζεται η διαχείριση κωδικού πρόσβασης την αυτόματη συμπλήρωση μόνο για το συγχρονισμό των διαπιστευτηρίων.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 35fdd3fc..798143e 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -159,7 +159,6 @@
     You'll have to set up your profile again.<ph name="BR" />
     <ph name="BR" />
     On the next screen, please send feedback to help us fix the issue.</translation>
-<translation id="1216954813581739968">Enable tab For Desktop Share.</translation>
 <translation id="121827551500866099">Show all downloads...</translation>
 <translation id="122082903575839559">Certificate Signature Algorithm</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 With RSA Encryption</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL with %s in place of query</translation>
 <translation id="1546280085599573572">This extension has changed the page that is shown when you click the Home button.</translation>
 <translation id="1546795794523394272">Welcome to Chromebox for meetings!</translation>
+<translation id="1547572086206517271">Refresh required</translation>
 <translation id="1547964879613821194">Canadian English</translation>
 <translation id="1548132948283577726">Sites which never save passwords will appear here.</translation>
 <translation id="1549045574060481141">Confirm Download</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">Enable recently visited pages to be stored locally for offline use. Requires Offline Pages to be enabled.</translation>
 <translation id="1891668193654680795">Trust this certificate for identifying software makers.</translation>
 <translation id="189210018541388520">Open full screen</translation>
+<translation id="1892754076732315533">A simplified new user experience when entering page-triggered full screen or mouse pointer lock states.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Cloud provision flow failed</translation>
 <translation id="189358972401248634">Other languages</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Access your Universal 2nd Factor devices</translation>
 <translation id="2881966438216424900">Last accessed:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> will restart and reset momentarily</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2887525882758501333">PDF document</translation>
 <translation id="2888807692577297075">No items match &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Not now</translation>
 <translation id="3480892288821151001">Dock window left</translation>
 <translation id="3481915276125965083">The following pop-ups were blocked on this page:</translation>
+<translation id="3482214069979148937">Hold |<ph name="ACCELERATOR" />| to exit full screen</translation>
 <translation id="3484869148456018791">Get new certificate</translation>
 <translation id="3487007233252413104">anonymous function</translation>
 <translation id="348771913750618459">Iframe-based sign-in flows</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Certificate Name Constraints</translation>
 <translation id="3595596368722241419">Battery full</translation>
 <translation id="3600456501114769456">Access to local files on your device is disabled by your administrator.</translation>
-<translation id="3601395307734599350">All your extensions are here</translation>
 <translation id="3603385196401704894">Canadian French</translation>
 <translation id="3603622770190368340">Obtain network certificate</translation>
 <translation id="3605780360466892872">Smartboy</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Use global default (Detect)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tabs}}</translation>
 <translation id="4154664944169082762">Fingerprints</translation>
-<translation id="4157188838832721931">Disable prompting the user for their OS password before revealing passwords on the passwords page.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Open play list</translation>
 <translation id="4159681666905192102">This is an account for kids managed by <ph name="CUSTODIAN_EMAIL" /> and <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Sign in another account</translation>
 <translation id="4219614746733932747">If enabled, Blink uses its zooming mechanism to scale content for device scale factor.</translation>
 <translation id="4220865787605972627">Allow colour calibration of the display if the display supports the feature.</translation>
-<translation id="4233506668751282421">Enable Audio For Desktop Share</translation>
 <translation id="4235200303672858594">Entire screen</translation>
 <translation id="4235813040357936597">Add Account for <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> cannot be displayed in this language</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Failed to install policy settings on the device: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> wants to disable your mouse cursor.</translation>
 <translation id="424546999567421758">High disk usage detected</translation>
-<translation id="4247072926966606568">With this flag on, desktop share picker window will let the user to choose whether to share audio.</translation>
 <translation id="424726838611654458">Always open in Adobe Reader</translation>
 <translation id="4249248555939881673">Waiting for network connection...</translation>
 <translation id="4249373718504745892">This page has been blocked from accessing your camera and microphone.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Add an address</translation>
 <translation id="4359408040881008151">Installed because of dependent extension(s).</translation>
 <translation id="4361190688154226069">Rect-based targeting in views</translation>
-<translation id="4363372140743955595">Password Manager Reauthentication</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> downloaded</translation>
 <translation id="4364830672918311045">Display notifications</translation>
 <translation id="4365673000813822030">Whoops, Sync has stopped working.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">About Auto-fill</translation>
 <translation id="4449996769074858870">This tab is playing audio.</translation>
 <translation id="4450974146388585462">Diagnose</translation>
+<translation id="4452426408005428395">Never mind</translation>
 <translation id="4454939697743986778">This certificate has been installed by your system administrator.</translation>
 <translation id="445923051607553918">Join Wi-Fi network</translation>
 <translation id="4462159676511157176">Custom name servers</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">One-time activation: Type your password to activate Smart Lock on this <ph name="DEVICE_TYPE" />. With Smart Lock, your phone will unlock this device – without a password. To change or turn off this feature, visit your <ph name="DEVICE_TYPE" />'s settings.</translation>
 <translation id="4595560905247879544">Apps and extensions can only be modified by the manager (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF Convertor</translation>
-<translation id="4601250583401186741">Pair with a controller</translation>
 <translation id="4602466770786743961">Always allow <ph name="HOST" /> to access your camera and microphone</translation>
 <translation id="4605399136610325267">Internet not connected</translation>
 <translation id="4608500690299898628">&amp;Find...</translation>
@@ -2785,6 +2783,7 @@
 <translation id="5039804452771397117">Allow</translation>
 <translation id="5045550434625856497">Incorrect password</translation>
 <translation id="5048179823246820836">Nordic</translation>
+<translation id="5048294425697652159">Enable Quirks Client for display calibration.</translation>
 <translation id="5053604404986157245">The randomly generated TPM password is not available. This is normal after a Powerwash.</translation>
 <translation id="5053803681436838483">New delivery address...</translation>
 <translation id="5055309315264875868">Show a link in the password manager settings page to manage your synced passwords online.</translation>
@@ -2882,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Gesture requirement for media playback</translation>
 <translation id="5189060859917252173">The certificate "<ph name="CERTIFICATE_NAME" />" represents a Certification Authority.</translation>
-<translation id="5196117515621749903">Reload, ignoring cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sync complete.</translation>
@@ -2897,6 +2895,7 @@
 <translation id="521582610500777512">Photo was discarded</translation>
 <translation id="5218183485292899140">Swiss French</translation>
 <translation id="5218766986344577658">Link Disambiguation Pop-up</translation>
+<translation id="5220992698394817380">Enable opt-in IME menu</translation>
 <translation id="5222676887888702881">Sign out</translation>
 <translation id="5225324770654022472">Show apps shortcut</translation>
 <translation id="5227536357203429560">Add private network...</translation>
@@ -2939,6 +2938,7 @@
 <translation id="5271247532544265821">Toggle Simplified/Traditional Chinese mode</translation>
 <translation id="5271549068863921519">Save password</translation>
 <translation id="5273628206174272911">Experimental history navigation in response to horizontal overscroll.</translation>
+<translation id="5275194674756975076">OK, refresh</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> from this site</translation>
 <translation id="5275973617553375938">Recovered files from Google Drive</translation>
 <translation id="527605719918376753">Mute tab</translation>
@@ -3012,6 +3012,7 @@
 <translation id="5368720394188453070">Your phone is locked. Unlock it to enter.</translation>
 <translation id="5369927996833026114">Discover the Chrome App Launcher</translation>
 <translation id="5370819323174483825">&amp;Reload</translation>
+<translation id="5372066618989754822">Enable access to the new IME menu in the Language Settings page.</translation>
 <translation id="5372529912055771682">The supplied enrolment mode is not supported by this version of the operating system. Please make sure you are running the newest version and try again.</translation>
 <translation id="5374359983950678924">Change picture</translation>
 <translation id="5376169624176189338">Click to go back, hold to see history</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">Name:</translation>
 <translation id="5627086634964711283">It also controls what page is shown when you click the Home button.</translation>
 <translation id="5627259319513858869">Enables the use of experimental canvas features which are still in development.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design in the browser's top Chrome</translation>
 <translation id="5633060877636360447">This will permanently delete at least <ph name="TOTAL_COUNT" /> items from this device but will not clear synced items from other devices.</translation>
 <translation id="5636996382092289526">To use <ph name="NETWORK_ID" /> you may first need to <ph name="LINK_START" />visit the network's sign-in page<ph name="LINK_END" />, which will open automatically in a few seconds. If it doesn't happen, the network can't be used.</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">Highlight the object with keyboard focus</translation>
 <translation id="5678955352098267522">Read your data on <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Text filtering in Overview Mode</translation>
+<translation id="5683818630978268777">Experimental keyboard lock UI.</translation>
 <translation id="5684661240348539843">Asset Identifier</translation>
 <translation id="569068482611873351">Import...</translation>
 <translation id="56907980372820799">Link data</translation>
@@ -3694,7 +3697,6 @@
 <translation id="6420676428473580225">Add to Desktop</translation>
 <translation id="6422329785618833949">Photo flipped</translation>
 <translation id="642282551015776456">This name may not be used as a file or folder name</translation>
-<translation id="642322423610046417">Use the context (right-click) menu to remove the extensions that you don't need.</translation>
 <translation id="6423239382391657905">Open VPN</translation>
 <translation id="6423731501149634044">Use Adobe Reader as your default PDF viewer?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3765,6 +3767,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">An experimental full screen with keyboard lock mode requiring users to hold Esc to exit.</translation>
 <translation id="6527303717912515753">Share</translation>
 <translation id="6528546217685656218">The private key for this client certificate is missing or invalid.</translation>
 <translation id="653019979737152879">Syncing <ph name="FILE_NAME" />...</translation>
@@ -3944,6 +3947,7 @@
 <translation id="6825883775269213504">Russian</translation>
 <translation id="6827236167376090743">This video will keep playing until the cows come home.</translation>
 <translation id="6828153365543658583">Restrict sign-in to the following users:</translation>
+<translation id="6828860976882136098">Failed to set up automatic updates for all users (preflight execution error: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Get help with your <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Enrol in your organisation</translation>
 <translation id="6830590476636787791">Animated transitions in the first-run tutorial</translation>
@@ -3966,7 +3970,6 @@
 <translation id="6860427144121307915">Open in a Tab</translation>
 <translation id="6862635236584086457">All files saved in this folder are backed up online automatically</translation>
 <translation id="6865313869410766144">Autofill form data</translation>
-<translation id="6865319096921627602">Enables the unified media pipeline on Android.</translation>
 <translation id="6867678160199975333">Switch to <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Ticked checkbox</translation>
 <translation id="6870130893560916279">Ukrainian keyboard</translation>
@@ -4062,6 +4065,7 @@
 <translation id="7006017748900345484">WebRTC H.264 software video encoder/decoder</translation>
 <translation id="7006634003215061422">Bottom margin</translation>
 <translation id="7006844981395428048">$1 audio</translation>
+<translation id="7008270479623533562">In order to run this extension, you need to refresh the page. You can run this extension automatically on this site by right-clicking on the extension icon.</translation>
 <translation id="7009045250432250765">Single-click auto-fill</translation>
 <translation id="7010160495478792664">Hardware-accelerated video decode where available.</translation>
 <translation id="7010400591230614821">Aggressive tab release strategy</translation>
@@ -4228,7 +4232,6 @@
 <translation id="7256710573727326513">Open in a tab</translation>
 <translation id="7257173066616499747">Wi-Fi networks</translation>
 <translation id="7257666756905341374">Read data that you copy and paste</translation>
-<translation id="7260002739296185724">Enable AVFoundation use for video capture and video device monitoring on OS X &gt;= 10.7. QTKit will be used otherwise.</translation>
 <translation id="7260504762447901703">Revoke access</translation>
 <translation id="7262004276116528033">This sign-in service is hosted by <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Unsandboxed plug-in access exceptions</translation>
@@ -4266,7 +4269,6 @@
 <translation id="7314278895724341067">Enable NTP offline pages</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (current)</translation>
 <translation id="7321545336522791733">Server unreachable</translation>
-<translation id="7324841169865301118">Enables user to chose a tab for desktop share.</translation>
 <translation id="7325437708553334317">High Contrast Extension</translation>
 <translation id="7326565110843845436">Touchpad three-finger-click</translation>
 <translation id="73289266812733869">Unselected</translation>
@@ -5018,7 +5020,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Photo by</translation>
 <translation id="8428213095426709021">Settings</translation>
-<translation id="8432590265309978927">Highly experimental support for rendering cross-site iframes in separate processes.</translation>
 <translation id="8432745813735585631">US Colemak keyboard</translation>
 <translation id="8434177709403049435">&amp;Encoding</translation>
 <translation id="8434480141477525001">NaCl Debug Port</translation>
@@ -5215,7 +5216,6 @@
 <translation id="8713979477561846077">Enable physical keyboard auto-correct for US keyboard, which can provide suggestions while typing on physical keyboard.</translation>
 <translation id="871476437400413057">Google saved passwords</translation>
 <translation id="8714838604780058252">Background graphics</translation>
-<translation id="8716065142695381595">Enables the unified (Android and desktop) media pipeline on Android.</translation>
 <translation id="8722421161699219904">US International keyboard</translation>
 <translation id="872451400847464257">Edit Search Engine</translation>
 <translation id="8724859055372736596">&amp;Show in Folder</translation>
@@ -5235,6 +5235,7 @@
 <translation id="8737685506611670901">Open <ph name="PROTOCOL" /> links instead of <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Refine the position of a touch gesture in order to compensate for touches having poor resolution compared to a mouse.</translation>
+<translation id="8743712320294854924">Show expanded input options in the shelf.</translation>
 <translation id="874420130893181774">Traditional Pinyin input method</translation>
 <translation id="8744525654891896746">Select an avatar for this supervised user</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5304,6 +5305,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift-key mode switch</translation>
 <translation id="8852742364582744935">The following apps and extensions were added:</translation>
+<translation id="8853611566624224021">Enable retrieval of ICC display files from Quirks Server for display colour calibration.</translation>
 <translation id="885381502874625531">Belarusian keyboard</translation>
 <translation id="8856844195561710094">Failed to stop Bluetooth device discovery.</translation>
 <translation id="885701979325669005">Storage</translation>
@@ -5353,7 +5355,6 @@
 <translation id="8925458182817574960">&amp;Settings</translation>
 <translation id="8926389886865778422">Don't ask again</translation>
 <translation id="8926518602592448999">Disable Developer Mode Extensions</translation>
-<translation id="8929454297483336498">Use of Mac OS X AVFoundation APIs, instead of QTKit</translation>
 <translation id="8931394284949551895">New devices</translation>
 <translation id="8932730422557198035">Use Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Show in Finder</translation>
@@ -5367,6 +5368,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Printer detected</translation>
 <translation id="8946359700442089734">Debugging features were not completely enabled on this <ph name="IDS_SHORT_PRODUCT_NAME" /> device.</translation>
+<translation id="8946784827990177241">Enable WebUSB support.</translation>
 <translation id="89515141420106838">Enables Chrome Web Store Gallery app for printer drivers. The app searches Chrome Web Store for extensions that support printing to a USB printer with specific USB ID.</translation>
 <translation id="895347679606913382">Starting...</translation>
 <translation id="8954952943849489823">Move failed, unexpected error: $1</translation>
@@ -5511,6 +5513,7 @@
 <translation id="9154194610265714752">Updated</translation>
 <translation id="9154418932169119429">This image is not available offline.</translation>
 <translation id="91568222606626347">Create Shortcut...</translation>
+<translation id="9157697743260533322">Failed to set up automatic updates for all users (preflight launch error: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Oops!  A network communication problem occurred during authentication. Please check your network connection and try again.</translation>
 <translation id="9159562891634783594">Enable registering of unregistered cloud printers from print preview.</translation>
 <translation id="9166510596677678112">Email this person</translation>
@@ -5522,7 +5525,6 @@
 <translation id="9170848237812810038">&amp;Undo</translation>
 <translation id="9170884462774788842">Another programme on your computer added a theme that may change the way Chrome works.</translation>
 <translation id="9177499212658576372">You are currently connected to the <ph name="NETWORK_TYPE" /> network.</translation>
-<translation id="9177556055091995297">Manage credit cards</translation>
 <translation id="917858577839511832">Negotiation with DTLS 1.2 for WebRTC</translation>
 <translation id="917861274483335838">Manage plug-in blocking...</translation>
 <translation id="9179348476548754105">How the password manager handles autofill for the sync credential only for transactional reauth pages.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 150978d..e80415e 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -159,7 +159,6 @@
     Deberás configurar tu perfil nuevamente.<ph name="BR" />
     <ph name="BR" />
     En la próxima pantalla, envía un comentario para ayudarnos a solucionar este problema.</translation>
-<translation id="1216954813581739968">Habilitar pestaña para uso compartido de escritorio</translation>
 <translation id="121827551500866099">Mostrar todas las descargas...</translation>
 <translation id="122082903575839559">Algoritmo de firma del certificado</translation>
 <translation id="1221024147024329929">PKCS N. º 1 MD2 con encriptación RSA</translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">URL con %s en el lugar de la consulta</translation>
 <translation id="1546280085599573572">Esta extensión cambió la página que se muestra al hacer clic en el botón Página principal.</translation>
 <translation id="1546795794523394272">Te damos la bienvenida a Chromebox para reuniones</translation>
+<translation id="1547572086206517271">Se requiere una actualización</translation>
 <translation id="1547964879613821194">Inglés (Canadá)</translation>
 <translation id="1548132948283577726">Aquí aparecerán los sitios que nunca guardan las contraseñas.</translation>
 <translation id="1549045574060481141">Confirmar la descarga</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">Habilita el almacenamiento local de las páginas visitadas recientemente para el uso sin conexión. La opción "Páginas sin conexión" debe estar habilitada.</translation>
 <translation id="1891668193654680795">Confiar en este certificado para identificar fabricantes de software.</translation>
 <translation id="189210018541388520">Abrir pantalla completa</translation>
+<translation id="1892754076732315533">Una nueva experiencia del usuario simplificada al acceder a la pantalla completa que activa la página o a los estados de bloqueo del puntero del mouse</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Se produjo un error en el flujo de aprovisionamiento de la nube</translation>
 <translation id="189358972401248634">Otros idiomas</translation>
@@ -1319,6 +1320,7 @@
 <translation id="288042212351694283">Accede a tus dispositivos U2F (Universal 2nd Factor).</translation>
 <translation id="2881966438216424900">Último acceso:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> se reiniciará y se restablecerá en un momento.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Administrador de tareas</translation>
 <translation id="2887525882758501333">Documento PDF</translation>
 <translation id="2888807692577297075">No hay elementos que coincidan con &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;.</translation>
@@ -1749,6 +1751,7 @@
 <translation id="3479552764303398839">Ahora no</translation>
 <translation id="3480892288821151001">Acoplar ventana a la izquierda</translation>
 <translation id="3481915276125965083">Se bloquearon las siguientes ventanas emergentes en esta página:</translation>
+<translation id="3482214069979148937">Mantén presionada la tecla |<ph name="ACCELERATOR" />| para salir de la pantalla completa</translation>
 <translation id="3484869148456018791">Obtener nuevo certificado</translation>
 <translation id="3487007233252413104">función anónima</translation>
 <translation id="348771913750618459">Flujos de acceso basados en marcos flotantes</translation>
@@ -1843,7 +1846,6 @@
 <translation id="3593965109698325041">Restricciones para el nombre del certificado</translation>
 <translation id="3595596368722241419">Batería completa</translation>
 <translation id="3600456501114769456">El administrador inhabilitó el acceso a los archivos locales de tu dispositivo.</translation>
-<translation id="3601395307734599350">Todas tus extensiones se muestran aquí</translation>
 <translation id="3603385196401704894">Francés (Canadá)</translation>
 <translation id="3603622770190368340">Obtener certificado de red</translation>
 <translation id="3605780360466892872">Amancio</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">Utilizar opción predeterminada global (detectar)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestaña}other{# pestañas}}</translation>
 <translation id="4154664944169082762">Huellas digitales</translation>
-<translation id="4157188838832721931">Inhabilita la acción de solicitar al usuario la contraseña del sistema operativo antes de mostrar las contraseñas en la página correspondiente.</translation>
 <translation id="4157869833395312646">Criptografía controlada por servidor de Microsoft</translation>
 <translation id="4158739975813877944">Abrir lista de reproducción</translation>
 <translation id="4159681666905192102">Esta es una cuenta para niños administrada por <ph name="CUSTODIAN_EMAIL" /> y <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">Acceder con otra cuenta</translation>
 <translation id="4219614746733932747">Si se habilita, Blink usa su mecanismo de zoom a fin de modificar la escala del contenido para el factor de escalas del dispositivo.</translation>
 <translation id="4220865787605972627">Permite la calibración del color de la pantalla si la pantalla admite la función.</translation>
-<translation id="4233506668751282421">Habilitar el uso compartido de audio para escritorio</translation>
 <translation id="4235200303672858594">Toda la pantalla</translation>
 <translation id="4235813040357936597">Agregar cuenta para <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> no se puede mostrar en este idioma</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">Se produjo un error al instalar la configuración de la política en el dispositivo: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> desea inhabilitar el cursor del mouse.</translation>
 <translation id="424546999567421758">Se detectó un uso elevado del disco</translation>
-<translation id="4247072926966606568">Cuando esta opción está marcada, la ventana con el selector para compartir escritorio le permitirá al usuario elegir si desea compartir el audio.</translation>
 <translation id="424726838611654458">Abrir siempre en Adobe Reader</translation>
 <translation id="4249248555939881673">Esperando la conexión de red...</translation>
 <translation id="4249373718504745892">Se bloqueó el acceso de esta página a la cámara y el micrófono.</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">Agregar una dirección</translation>
 <translation id="4359408040881008151">Instalada a causa de las extensiones dependientes</translation>
 <translation id="4361190688154226069">Destino basado en rectángulo en las vistas</translation>
-<translation id="4363372140743955595">Nueva autenticación del Administrador de contraseñas</translation>
 <translation id="4364444725319685468">Se descargó <ph name="FILE_NAME" />.</translation>
 <translation id="4364830672918311045">Mostrar notificaciones</translation>
 <translation id="4365673000813822030">¡Vaya! La sincronización ha dejado de funcionar.</translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">Acerca de Autocompletar</translation>
 <translation id="4449996769074858870">Esta pestaña está reproduciendo audio.</translation>
 <translation id="4450974146388585462">Diagnosticar</translation>
+<translation id="4452426408005428395">Cancelar</translation>
 <translation id="4454939697743986778">El administrador del sistema instaló este certificado.</translation>
 <translation id="445923051607553918">Únete a la red Wi-Fi</translation>
 <translation id="4462159676511157176">Servidores de nombres personalizados</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">Activación por única vez: escribe tu contraseña para activar Smart Lock en este dispositivo <ph name="DEVICE_TYPE" />. Con Smart Lock, tu teléfono desbloqueará el dispositivo (sin contraseña). Para modificar o desactivar esta función, visita la configuración de tu dispositivo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Solo el administrador (<ph name="CUSTODIAN_NAME" />) puede modificar las apps y extensiones.</translation>
 <translation id="4601242977939794209">Convertidor de EMF</translation>
-<translation id="4601250583401186741">Sincronizar con un controlador</translation>
 <translation id="4602466770786743961">Siempre permitir que <ph name="HOST" /> acceda a la cámara y al micrófono</translation>
 <translation id="4605399136610325267">El dispositivo no está conectado a Internet.</translation>
 <translation id="4608500690299898628">&amp;Buscar</translation>
@@ -2780,6 +2778,7 @@
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5045550434625856497">Contraseña incorrecta</translation>
 <translation id="5048179823246820836">Nórdico</translation>
+<translation id="5048294425697652159">Habilita Quirks Client para calibrar la pantalla.</translation>
 <translation id="5053604404986157245">La contraseña TPM generada al azar no está disponible. Esto es normal después de un Powerwash.</translation>
 <translation id="5053803681436838483">Nueva dirección de envío…</translation>
 <translation id="5055309315264875868">Muestra un vínculo en la página de configuración del administrador de contraseñas para administrar tus contraseñas sincronizadas en línea.</translation>
@@ -2877,7 +2876,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Requisito de gestos para la reproducción multimedia</translation>
 <translation id="5189060859917252173">El certificado "<ph name="CERTIFICATE_NAME" />" representa a una Entidad de certificación.</translation>
-<translation id="5196117515621749903">Vuelve a cargar ignorando la memoria caché</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronización finalizada</translation>
@@ -2892,6 +2890,7 @@
 <translation id="521582610500777512">Se descartó la foto.</translation>
 <translation id="5218183485292899140">Francés (Suiza)</translation>
 <translation id="5218766986344577658">Contenido emergente de desambiguación de vínculos</translation>
+<translation id="5220992698394817380">Habilitar menú IME de aceptación</translation>
 <translation id="5222676887888702881">Salir</translation>
 <translation id="5225324770654022472">Mostrar acceso directo a las aplicaciones</translation>
 <translation id="5227536357203429560">Agregar red privada...</translation>
@@ -2934,6 +2933,7 @@
 <translation id="5271247532544265821">Alternar modo chino simplificado/tradicional</translation>
 <translation id="5271549068863921519">Guardar contraseña</translation>
 <translation id="5273628206174272911">Navegación experimental por el historial en respuesta al desplazamiento horizontal</translation>
+<translation id="5275194674756975076">Aceptar, actualizar</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> de este sitio</translation>
 <translation id="5275973617553375938">Archivos recuperados de Google Drive</translation>
 <translation id="527605719918376753">Silenciar pestaña</translation>
@@ -3007,6 +3007,7 @@
 <translation id="5368720394188453070">El teléfono está bloqueado. Desbloquéalo para ingresar.</translation>
 <translation id="5369927996833026114">Descubre el Selector de aplicaciones de Chrome</translation>
 <translation id="5370819323174483825">&amp;Volver a cargar</translation>
+<translation id="5372066618989754822">Habilita el acceso al nuevo menú IME en la página Configuración de idiomas.</translation>
 <translation id="5372529912055771682">El modo de inscripción proporcionado no es compatible con esta versión del sistema operativo. Asegúrate de que estás ejecutando la versión más reciente y vuelve a intentarlo.</translation>
 <translation id="5374359983950678924">Cambiar imagen</translation>
 <translation id="5376169624176189338">Haz clic para volver atrás o espera para ver el historial</translation>
@@ -3192,6 +3193,7 @@
 <translation id="5626134646977739690">Nombre:</translation>
 <translation id="5627086634964711283">También controla qué página se muestra al hacer clic en el botón de página principal.</translation>
 <translation id="5627259319513858869">Permite usar elementos canvas experimentales que todavía se encuentran en desarrollo.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design en la parte superior del navegador de Chrome</translation>
 <translation id="5633060877636360447">Esta acción borrará permanentemente, al menos, <ph name="TOTAL_COUNT" /> elementos de este dispositivo, pero no quitará elementos sincronizados de otros dispositivos.</translation>
 <translation id="5636996382092289526">Para utilizar la red <ph name="NETWORK_ID" />, es posible que primero debas <ph name="LINK_START" />ingresar a la página de acceso a la red<ph name="LINK_END" />, que se abrirá de forma automática en unos segundos. Si no se abre, no podrás utilizar la red.</translation>
@@ -3222,6 +3224,7 @@
 <translation id="5678862612529498267">Resaltar el objeto con el enfoque del teclado</translation>
 <translation id="5678955352098267522">Leer los datos en <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrado de texto en el modo de vista general</translation>
+<translation id="5683818630978268777">Interfaz de usuario de bloqueo del teclado experimental</translation>
 <translation id="5684661240348539843">Identificador de recursos</translation>
 <translation id="569068482611873351">Importar...</translation>
 <translation id="56907980372820799">Vincular datos</translation>
@@ -3687,7 +3690,6 @@
 <translation id="6420676428473580225">Agregar al escritorio</translation>
 <translation id="6422329785618833949">Foto girada</translation>
 <translation id="642282551015776456">Este nombre no se puede utilizar como archivo del nombre de la carpeta</translation>
-<translation id="642322423610046417">Usa el menú contextual (clic derecho) para quitar las extensiones que no necesitas.</translation>
 <translation id="6423239382391657905">VPN abierto</translation>
 <translation id="6423731501149634044">¿Usar Adobe Reader como tu visualizador de PDF predeterminado?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Una pantalla completa experimental con modo de bloqueo de teclado que requiere que los usuarios mantengan presionada la tecla Esc para salir</translation>
 <translation id="6527303717912515753">Compartir</translation>
 <translation id="6528546217685656218">Falta la clave privada para este Certificado de cliente o no es válida.</translation>
 <translation id="653019979737152879">Sincronizando <ph name="FILE_NAME" />…</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">Ruso</translation>
 <translation id="6827236167376090743">Este video seguirá reproduciéndose sin parar.</translation>
 <translation id="6828153365543658583">Restringir el inicio de sesión a los siguientes usuarios:</translation>
+<translation id="6828860976882136098">No se pudieron configurar actualizaciones automáticas para todos los usuarios (error de ejecución preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Obtén ayuda con tu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registro en tu organización</translation>
 <translation id="6830590476636787791">Transiciones animadas en el tutorial de primera ejecución</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">Abrir en una pestaña</translation>
 <translation id="6862635236584086457">Se realiza automáticamente una copia de seguridad en línea de todos los archivos guardados en esta carpeta.</translation>
 <translation id="6865313869410766144">Datos del formulario de autocompletar</translation>
-<translation id="6865319096921627602">Habilitar el canal de contenido multimedia unificado en Android</translation>
 <translation id="6867678160199975333">Cambiar a <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Casilla de verificación marcada</translation>
 <translation id="6870130893560916279">Teclado ucraniano</translation>
@@ -4054,6 +4057,7 @@
 <translation id="7006017748900345484">Códec del estándar H.264 para videos de software para WebRTC</translation>
 <translation id="7006634003215061422">Margen inferior</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Para ejecutar esta extensión, debes actualizar la página. Para ejecutar esta extensión automáticamente en este sitio, haz clic con el botón derecho sobre el ícono de la extensión.</translation>
 <translation id="7009045250432250765">Autocompletar con un solo clic</translation>
 <translation id="7010160495478792664">Decodificación de video acelerada por hardware cuando esté disponible</translation>
 <translation id="7010400591230614821">Estrategia de liberación agresiva de pestañas</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">Abrir en una pestaña</translation>
 <translation id="7257173066616499747">Redes Wi-Fi</translation>
 <translation id="7257666756905341374">Leer los datos que copias y pegas</translation>
-<translation id="7260002739296185724">Permite habilitar el uso de AVFoundation para capturar videos y supervisar dispositivos de video en OS X &gt;= 10.7. De lo contrario, se utilizará QTKit.</translation>
 <translation id="7260504762447901703">Revocar acceso</translation>
 <translation id="7262004276116528033">El servicio de acceso a la cuenta está alojado en <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Excepciones para el acceso de complementos no incluidos en la zona de pruebas</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">Habilitar las páginas sin conexión en la NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (actual)</translation>
 <translation id="7321545336522791733">No se puede acceder al servidor</translation>
-<translation id="7324841169865301118">Permite que el usuario elija una pestaña para el uso compartido para escritorio.</translation>
 <translation id="7325437708553334317">Extensión de alto contraste</translation>
 <translation id="7326565110843845436">Panel táctil para hacer clic con tres dedos</translation>
 <translation id="73289266812733869">Desmarcado</translation>
@@ -5006,7 +5008,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto de</translation>
 <translation id="8428213095426709021">Configuración</translation>
-<translation id="8432590265309978927">Permite la compatibilidad experimental para procesar iframes entre sitios en procesos separados.</translation>
 <translation id="8432745813735585631">Teclado Colemak en inglés de EE.UU.</translation>
 <translation id="8434177709403049435">&amp;Codificación</translation>
 <translation id="8434480141477525001">Puerto de depuración NaCl</translation>
@@ -5203,7 +5204,6 @@
 <translation id="8713979477561846077">Habilitar la autocorrección de teclado físico para un teclado de los Estados Unidos que ofrece sugerencias mientras escribes en un teclado físico</translation>
 <translation id="871476437400413057">Contraseñas guardadas por Google</translation>
 <translation id="8714838604780058252">Gráficos en segundo plano</translation>
-<translation id="8716065142695381595">Habilita el canal de contenido multimedia unificado (Android y escritorio) en Android.</translation>
 <translation id="8722421161699219904">Teclado internacional de EE. UU.</translation>
 <translation id="872451400847464257">Editar motor de búsqueda</translation>
 <translation id="8724859055372736596">Mo&amp;strar en carpeta</translation>
@@ -5223,6 +5223,7 @@
 <translation id="8737685506611670901">Abrir vínculos de <ph name="PROTOCOL" /> en lugar de <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Define mejor la posición de un gesto táctil para compensar la baja resolución de los toques con respecto a un mouse.</translation>
+<translation id="8743712320294854924">Mostrar opciones de entrada expandidas en la biblioteca</translation>
 <translation id="874420130893181774">Método de entrada de pinyin tradicional</translation>
 <translation id="8744525654891896746">Seleccionar un avatar para este usuario supervisado</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5292,6 +5293,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Cambiar interruptor de modo clave</translation>
 <translation id="8852742364582744935">Se agregaron las siguientes aplicaciones y extensiones:</translation>
+<translation id="8853611566624224021">Habilita la recuperación de archivos de pantalla ICC de Quirks Server para calibrar el color de la pantalla.</translation>
 <translation id="885381502874625531">Teclado bielorruso</translation>
 <translation id="8856844195561710094">Error al detener la detección del dispositivo Bluetooth</translation>
 <translation id="885701979325669005">Almacenamiento</translation>
@@ -5341,7 +5343,6 @@
 <translation id="8925458182817574960">&amp;Configuración</translation>
 <translation id="8926389886865778422">No volver a preguntar</translation>
 <translation id="8926518602592448999">Inhabilitar extensiones en modo de programador</translation>
-<translation id="8929454297483336498">Uso de las API de AVFoundation para Mac OS X en lugar de QTKit</translation>
 <translation id="8931394284949551895">Nuevos dispositivos</translation>
 <translation id="8932730422557198035">Usa la API de Android Midi</translation>
 <translation id="8933960630081805351">Mo&amp;strar en Buscador</translation>
@@ -5355,6 +5356,7 @@
 <translation id="894360074127026135">Suplemento especial internacional de Netscape</translation>
 <translation id="8944779739948852228">Impresora detectada</translation>
 <translation id="8946359700442089734">Las funciones de depuración no se habilitaron completamente en este dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Habilita la compatibilidad con WebUSB.</translation>
 <translation id="89515141420106838">Permite habilitar la aplicación de la galería de Chrome Web Store para controladores de impresora. La aplicación busca, en Chrome Web Store, expansiones que admitan la impresión en una impresora USB con un ID de USB específico.</translation>
 <translation id="895347679606913382">Iniciando...</translation>
 <translation id="8954952943849489823">Se produjo un error al mover el archivo (error inesperado "$1").</translation>
@@ -5498,6 +5500,7 @@
 <translation id="9154194610265714752">Actualizado</translation>
 <translation id="9154418932169119429">Esta imagen no está disponible sin conexión.</translation>
 <translation id="91568222606626347">Crear acceso directo…</translation>
+<translation id="9157697743260533322">No se pudieron configurar actualizaciones automáticas para todos los usuarios (error de inicio preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Se produjo un problema de comunicación de red durante la autenticación. Verifica tu conexión de red y vuelve a intentarlo.</translation>
 <translation id="9159562891634783594">Habilita el registro de impresoras en la nube desde la vista previa de impresión.</translation>
 <translation id="9166510596677678112">Envía un correo electrónico a esta persona.</translation>
@@ -5509,7 +5512,6 @@
 <translation id="9170848237812810038">&amp;Deshacer</translation>
 <translation id="9170884462774788842">Otro programa en tu computadora agregó un tema que puede cambiar el funcionamiento de Chrome.</translation>
 <translation id="9177499212658576372">Actualmente, estás conectado a la red <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Administrar tarjetas de crédito</translation>
 <translation id="917858577839511832">Negociación con DTLS 1.2 para WebRTC</translation>
 <translation id="917861274483335838">Administrar el bloqueo de complementos…</translation>
 <translation id="9179348476548754105">Establece la forma en que el administrador de contraseñas controla la función de autocompletar para la credencial de sincronización solo en las páginas de nueva autenticación de transacciones.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 42b6b3f..467e6a3e 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -159,7 +159,6 @@
     Debes volver a configurar tu perfil.<ph name="BR" />
     <ph name="BR" />
     Envíanos tus comentarios a través de la siguiente pantalla para ayudarnos a solucionar el problema.</translation>
-<translation id="1216954813581739968">Habilitar la función de compartir pestañas en el escritorio remoto.</translation>
 <translation id="121827551500866099">Mostrar todas las descargas...</translation>
 <translation id="122082903575839559">Algoritmo de firma de certificado</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 con cifrado RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL con %s en el lugar de la consulta</translation>
 <translation id="1546280085599573572">Esta extensión ha cambiado la página que se muestra al hacer clic en el botón Página de inicio.</translation>
 <translation id="1546795794523394272">Te damos la bienvenida a Chromebox para reuniones</translation>
+<translation id="1547572086206517271">Es necesario actualizar</translation>
 <translation id="1547964879613821194">Inglés canadiense</translation>
 <translation id="1548132948283577726">Los sitios de los que nunca se guarda la contraseña aparecerán aquí.</translation>
 <translation id="1549045574060481141">Confirmar descarga</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Habilita el almacenamiento de las páginas visitadas recientemente de forma local para usarlas sin conexión. Es necesario que las páginas sin conexión estén habilitadas.</translation>
 <translation id="1891668193654680795">Confiar en este certificado para identificar a los fabricantes de software</translation>
 <translation id="189210018541388520">Abrir en pantalla completa</translation>
+<translation id="1892754076732315533">Disfruta de una nueva experiencia de usuario simplificada al acceder al modo de pantalla completa de la página activada o a los estados de bloqueo del puntero del ratón.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Error en el flujo de aprovisionamiento en la nube</translation>
 <translation id="189358972401248634">Otros idiomas</translation>
@@ -1325,6 +1326,7 @@
 <translation id="288042212351694283">Acceso a tus dispositivos U2F (Universal 2nd Factor)</translation>
 <translation id="2881966438216424900">Último acceso:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> se reiniciará y se restablecerá momentáneamente</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Administrador de tareas</translation>
 <translation id="2887525882758501333">Documento PDF</translation>
 <translation id="2888807692577297075">No se ha encontrado ningún elemento que coincida con &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;.</translation>
@@ -1600,7 +1602,7 @@
 <translation id="3277710850168074473">El usuario debe realizar un gesto para reproducir elementos multimedia. Al inhabilitar esta función, podrás utilizar la reproducción automática.</translation>
 <translation id="3280237271814976245">Gu&amp;ardar como...</translation>
 <translation id="3280431534455935878">Preparando</translation>
-<translation id="3284674070818187654">Google puede utilizar tu historial de navegación para personalizar la Búsqueda de Google y otros servicios de Google. Puedes controlar esta opción en la página myaccount.google.com.</translation>
+<translation id="3284674070818187654">Google puede utilizar tu historial de navegación para personalizar la Búsqueda y otros servicios de Google. Puedes controlar esta opción en la página myaccount.google.com.</translation>
 <translation id="3285322247471302225">Nueva &amp;pestaña</translation>
 <translation id="3288047731229977326">Las extensiones que se ejecutan en modo de desarrollador pueden causar daños en el ordenador. Si no eres desarrollador, debes inhabilitar esas extensiones para mantener protegido tu ordenador.</translation>
 <translation id="3289566588497100676">Introducción sencilla de símbolos</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Ahora no</translation>
 <translation id="3480892288821151001">Acoplar ventana a la izquierda</translation>
 <translation id="3481915276125965083">Se han bloqueado los siguientes pop-ups en esta página:</translation>
+<translation id="3482214069979148937">Mantén pulsada la tecla |<ph name="ACCELERATOR" />| para salir del modo de pantalla completa</translation>
 <translation id="3484869148456018791">Obtener nuevo certificado</translation>
 <translation id="3487007233252413104">función anónima</translation>
 <translation id="348771913750618459">Flujos de inicio de sesión basados en iframes</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Restricciones de nombres de certificado</translation>
 <translation id="3595596368722241419">Batería al máximo</translation>
 <translation id="3600456501114769456">Tu administrador ha inhabilitado el acceso a los archivos locales de tu dispositivo.</translation>
-<translation id="3601395307734599350">Todas las extensiones aparecerán aquí</translation>
 <translation id="3603385196401704894">Francés canadiense</translation>
 <translation id="3603622770190368340">Obtener certificado de red</translation>
 <translation id="3605780360466892872">Amancio</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">Utilizar valor predeterminado global (por defecto)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestaña}other{# pestañas}}</translation>
 <translation id="4154664944169082762">Huellas digitales</translation>
-<translation id="4157188838832721931">Inhabilitar el mensaje para solicitar al usuario su contraseña del sistema operativo antes de mostrar contraseñas en la página de contraseñas.</translation>
 <translation id="4157869833395312646">Criptografía activada por servidor de Microsoft</translation>
 <translation id="4158739975813877944">Abrir lista de reproducción</translation>
 <translation id="4159681666905192102">Esta es una cuenta infantil administrada por <ph name="CUSTODIAN_EMAIL" /> y <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">Iniciar sesión con otra cuenta</translation>
 <translation id="4219614746733932747">Si se habilita esta opción, Blink utilizará su mecanismo de zoom para escalar contenido al implementar el factor de escala del dispositivo.</translation>
 <translation id="4220865787605972627">Permite calibrar el color de la pantalla si esta admite la función.</translation>
-<translation id="4233506668751282421">Habilitar la función de compartir audio en el escritorio remoto</translation>
 <translation id="4235200303672858594">Toda la pantalla</translation>
 <translation id="4235813040357936597">Añadir cuenta de <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> no se puede mostrar en este idioma.</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">Se ha producido un error al instalar la configuración de política en el dispositivo (<ph name="VALIDATION_ERROR" />).</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> quiere inhabilitar el cursor del ratón.</translation>
 <translation id="424546999567421758">Se ha detectado un uso elevado del disco</translation>
-<translation id="4247072926966606568">Con esta marca activada, la ventana selectora para compartir escritorio permite al usuario elegir si quiere compartir el audio.</translation>
 <translation id="424726838611654458">Abrir siempre en Adobe Reader</translation>
 <translation id="4249248555939881673">Esperando conexión de red...</translation>
 <translation id="4249373718504745892">Esta página no tiene permiso para acceder a la cámara y al micrófono.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">Añadir una dirección</translation>
 <translation id="4359408040881008151">Instalada debido a las extensiones dependientes</translation>
 <translation id="4361190688154226069">Destino basado en rectángulo en las vistas</translation>
-<translation id="4363372140743955595">Nueva autenticación del administrador de contraseñas</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> descargado</translation>
 <translation id="4364830672918311045">Mostrar notificaciones</translation>
 <translation id="4365673000813822030">¡Ups! La sincronización ha dejado de funcionar.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">Sobre la función Autocompletar</translation>
 <translation id="4449996769074858870">Esta pestaña está reproduciendo audio.</translation>
 <translation id="4450974146388585462">Diagnosticar</translation>
+<translation id="4452426408005428395">Cancelar</translation>
 <translation id="4454939697743986778">El administrador de tu sistema ha instalado este certificado.</translation>
 <translation id="445923051607553918">Conectar a una red Wi-Fi</translation>
 <translation id="4462159676511157176">Servidores de nombres personalizados</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">Activación única: escribe tu contraseña para activar Smart Lock en este <ph name="DEVICE_TYPE" />. Tu teléfono utilizará Smart Lock para desbloquear este dispositivo sin introducir una contraseña. Para modificar o desactivar esta función, accede a los ajustes de tu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Únicamente el administrador (<ph name="CUSTODIAN_NAME" />) puede modificar las aplicaciones y las extensiones.</translation>
 <translation id="4601242977939794209">Conversor a EMF</translation>
-<translation id="4601250583401186741">Vincular con un controlador</translation>
 <translation id="4602466770786743961">Permitir que <ph name="HOST" /> acceda siempre a la cámara y al micrófono</translation>
 <translation id="4605399136610325267">El dispositivo no está conectado a Internet.</translation>
 <translation id="4608500690299898628">&amp;Buscar...</translation>
@@ -2743,7 +2741,7 @@
 <translation id="4974733135013075877">Salir y bloquear</translation>
 <translation id="497490572025913070">Bordes de capas procesadas compuestas</translation>
 <translation id="4977942889532008999">Confirmar acceso</translation>
-<translation id="4982319280615426980">Pantalla completa simplificada/IU de bloqueo del ratón.</translation>
+<translation id="4982319280615426980">IU de pantalla completa y de bloqueo del ratón simplificada.</translation>
 <translation id="4982718461356080574">Ocultar botones de cierre en pestañas inactivas cuando están apiladas</translation>
 <translation id="498294082491145744">Cambiar la configuración que controla el acceso de los sitios web a funciones como las cookies, JavaScript, los complementos, la ubicación geográfica, el micrófono o la cámara.</translation>
 <translation id="4988526792673242964">Páginas</translation>
@@ -2781,6 +2779,7 @@
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5045550434625856497">Contraseña incorrecta</translation>
 <translation id="5048179823246820836">Nórdico</translation>
+<translation id="5048294425697652159">Habilitar cliente de Quirks para calibrar la pantalla.</translation>
 <translation id="5053604404986157245">La contraseña de TPM generada de forma aleatoria no está disponible. Esto es normal después de un Powerwash.</translation>
 <translation id="5053803681436838483">Nueva dirección de envío...</translation>
 <translation id="5055309315264875868">Muestra un enlace en la página de configuración del administrador de contraseñas que permite administrar las contraseñas sincronizadas online.</translation>
@@ -2876,7 +2875,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Gesto obligatorio para reproducir contenido multimedia</translation>
 <translation id="5189060859917252173">El certificado "<ph name="CERTIFICATE_NAME" />" representa a una entidad emisora de certificados.</translation>
-<translation id="5196117515621749903">Cargar de nuevo ignorando la caché</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronización finalizada</translation>
@@ -2891,6 +2889,7 @@
 <translation id="521582610500777512">Se ha descartado la foto</translation>
 <translation id="5218183485292899140">Francés (suizo)</translation>
 <translation id="5218766986344577658">Ventana emergente para desambiguación de enlaces</translation>
+<translation id="5220992698394817380">Habilitar el menú de IME opcional</translation>
 <translation id="5222676887888702881">Cerrar sesión</translation>
 <translation id="5225324770654022472">Mostrar acceso directo de aplicaciones</translation>
 <translation id="5227536357203429560">Añadir red privada...</translation>
@@ -2933,6 +2932,7 @@
 <translation id="5271247532544265821">Alternar modo chino tradicional y simplificado</translation>
 <translation id="5271549068863921519">Guardar contraseña</translation>
 <translation id="5273628206174272911">Permite habilitar la función experimental de navegación por el historial en respuesta al desplazamiento horizontal con rebote.</translation>
+<translation id="5275194674756975076">Sí, actualizar</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> de este sitio web</translation>
 <translation id="5275973617553375938">Archivos recuperados de Google Drive</translation>
 <translation id="527605719918376753">Silenciar pestaña</translation>
@@ -2960,7 +2960,7 @@
 <translation id="5301954838959518834">Entendido</translation>
 <translation id="5302048478445481009">Idioma</translation>
 <translation id="5305688511332277257">No hay certificados instalados</translation>
-<translation id="5308380583665731573">Conexiones</translation>
+<translation id="5308380583665731573">Conectar</translation>
 <translation id="5311260548612583999">Clave privada (opcional):</translation>
 <translation id="5316588172263354223">Haz búsquedas por voz en cualquier momento</translation>
 <translation id="5316716239522500219">Copiar monitores</translation>
@@ -3006,6 +3006,7 @@
 <translation id="5368720394188453070">Tu teléfono está bloqueado. Desbloquéalo para acceder.</translation>
 <translation id="5369927996833026114">Descubre la barra de aplicaciones de Chrome</translation>
 <translation id="5370819323174483825">&amp;Volver a cargar</translation>
+<translation id="5372066618989754822">Habilita el acceso al nuevo menú de IME en la página Configuración de idioma.</translation>
 <translation id="5372529912055771682">El modo de inscripción proporcionado no es compatible con esta versión del sistema operativo. Comprueba que estés utilizando la última versión y vuelve a intentarlo.</translation>
 <translation id="5374359983950678924">Cambiar imagen</translation>
 <translation id="5376169624176189338">Haz clic para retroceder una página o pulsa unos segundos para ver el historial</translation>
@@ -3191,6 +3192,7 @@
 <translation id="5626134646977739690">Nombre:</translation>
 <translation id="5627086634964711283">También controla qué página se muestra al hacer clic en el botón Página de inicio.</translation>
 <translation id="5627259319513858869">Permite el uso de elementos canvas experimentales que aún se encuentran en desarrollo.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design en la interfaz gráfica del navegador</translation>
 <translation id="5633060877636360447">Se eliminarán de forma permanente al menos <ph name="TOTAL_COUNT" /> elementos de este dispositivo, pero no se eliminarán los elementos sincronizados de otros dispositivos.</translation>
 <translation id="5636996382092289526">Para utilizar la red <ph name="NETWORK_ID" />, es posible que primero tengas que <ph name="LINK_START" />acceder a la página de inicio de sesión de la red<ph name="LINK_END" />, que se abrirá de forma automática en unos segundos. Si no se abre, no podrás utilizar esa red.</translation>
@@ -3221,6 +3223,7 @@
 <translation id="5678862612529498267">Resaltar el objeto con el foco del teclado</translation>
 <translation id="5678955352098267522">Leer tus datos en <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrado de texto en modo de vista general</translation>
+<translation id="5683818630978268777">IU de bloqueo de teclado experimental.</translation>
 <translation id="5684661240348539843">Identificador de recurso</translation>
 <translation id="569068482611873351">Importar...</translation>
 <translation id="56907980372820799">Vincular datos</translation>
@@ -3688,7 +3691,6 @@
 <translation id="6420676428473580225">Añadir al escritorio</translation>
 <translation id="6422329785618833949">Foto girada</translation>
 <translation id="642282551015776456">Este nombre no se puede utilizar como nombre de archivo de carpeta.</translation>
-<translation id="642322423610046417">Utiliza el menú contextual (clic derecho) para eliminar las extensiones que no necesites.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">¿Quieres utilizar Adobe Reader como lector de documentos PDF predeterminado?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
 <ph name="FILE_INFO" />
 <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Una pantalla completa experimental con el modo de bloqueo de teclado en la que los usuarios deben mantener pulsada la tecla Esc para salir.</translation>
 <translation id="6527303717912515753">Compartir</translation>
 <translation id="6528546217685656218">Falta la clave privada para este certificado de cliente o no es válida.</translation>
 <translation id="653019979737152879">Sincronizando <ph name="FILE_NAME" />...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">Ruso</translation>
 <translation id="6827236167376090743">Este vídeo seguirá reproduciéndose sin parar.</translation>
 <translation id="6828153365543658583">Restringir el inicio de sesión a los siguientes usuarios:</translation>
+<translation id="6828860976882136098">Se ha producido un error al configurar las actualizaciones automáticas para todos los usuarios (error de ejecución preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Recibe ayuda para tu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registro en tu organización</translation>
 <translation id="6830590476636787791">Transiciones animadas en el tutorial de primera ejecución</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">Abrir en una pestaña</translation>
 <translation id="6862635236584086457">Se realiza una copia de seguridad online de forma automática de todos los archivos guardados en esta carpeta .</translation>
 <translation id="6865313869410766144">Datos de Autocompletar formulario</translation>
-<translation id="6865319096921627602">Habilitar el flujo unificado de contenidos multimedia en Android.</translation>
 <translation id="6867678160199975333">Cambiar a <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Casilla de verificación seleccionada</translation>
 <translation id="6870130893560916279">Teclado ucraniano</translation>
@@ -4053,6 +4056,7 @@
 <translation id="7006017748900345484">Software codificador y decodificador de vídeo H.264 de WebRTC</translation>
 <translation id="7006634003215061422">Margen inferior</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Para ejecutar esta extensión, debes actualizar la página. Haz clic con el botón derecho en el icono de la extensión para ejecutarla automáticamente.</translation>
 <translation id="7009045250432250765">Autocompletado con un clic</translation>
 <translation id="7010160495478792664">Decodificación de vídeo acelerada por hardware si está disponible</translation>
 <translation id="7010400591230614821">Estrategia de liberación de pestañas agresiva</translation>
@@ -4219,7 +4223,6 @@
 <translation id="7256710573727326513">Abrir en una pestaña</translation>
 <translation id="7257173066616499747">Redes Wi-Fi</translation>
 <translation id="7257666756905341374">Leer los datos que copias y pegas</translation>
-<translation id="7260002739296185724">Habilita el uso de AV Foundation para capturar ví­deos y controlar dispositivos de vídeo en OS X 10.7 y versiones posteriores. De lo contrario, se utiliza QTKit.</translation>
 <translation id="7260504762447901703">Revoca el acceso</translation>
 <translation id="7262004276116528033">Este servicio de inicio de sesión está alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Excepciones de acceso de complementos no incluidos en la zona de pruebas</translation>
@@ -4257,7 +4260,6 @@
 <translation id="7314278895724341067">Habilitar páginas Nueva pestaña sin conexión</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (actual)</translation>
 <translation id="7321545336522791733">No se puede acceder al servidor</translation>
-<translation id="7324841169865301118">Habilita un usuario para que pueda seleccionar pestañas y compartirlas en el escritorio remoto.</translation>
 <translation id="7325437708553334317">Extensión de contraste alto</translation>
 <translation id="7326565110843845436">Clic con tres dedos en el panel táctil</translation>
 <translation id="73289266812733869">Sin seleccionar</translation>
@@ -5008,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto de</translation>
 <translation id="8428213095426709021">Configuración</translation>
-<translation id="8432590265309978927">Compatibilidad altamente experimental para representar marcos flotantes entre sitios en procesos distintos.</translation>
 <translation id="8432745813735585631">Teclado EE.UU. Colemak</translation>
 <translation id="8434177709403049435">&amp;Codificación</translation>
 <translation id="8434480141477525001">Puerto de depuración NaCl</translation>
@@ -5205,7 +5206,6 @@
 <translation id="8713979477561846077">Habilita la autocorrección de teclado físico para el teclado de Estados Unidos, lo que permite mostrar sugerencias al escribir en el teclado físico.</translation>
 <translation id="871476437400413057">Contraseñas guardadas de Google</translation>
 <translation id="8714838604780058252">Gráficos de fondo</translation>
-<translation id="8716065142695381595">Habilita el flujo unificado de contenidos multimedia (Android y ordenador) en Android.</translation>
 <translation id="8722421161699219904">Teclado internacional de EE. UU.</translation>
 <translation id="872451400847464257">Editar motor de búsqueda</translation>
 <translation id="8724859055372736596">&amp;Mostrar en carpeta</translation>
@@ -5225,6 +5225,7 @@
 <translation id="8737685506611670901">Abrir enlaces de <ph name="PROTOCOL" /> en lugar de <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Ajusta la posición de un gesto táctil para compensar la baja resolución de los toques con respecto a un ratón.</translation>
+<translation id="8743712320294854924">Mostrar opciones de entrada ampliadas en la estantería.</translation>
 <translation id="874420130893181774">Método de entrada de pinyin tradicional</translation>
 <translation id="8744525654891896746">Seleccionar un avatar para este usuario supervisado</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5294,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Cambiar a modo de tecla Mayús</translation>
 <translation id="8852742364582744935">Se han añadido las siguientes aplicaciones y extensiones:</translation>
+<translation id="8853611566624224021">Habilita la recuperación de archivos de pantalla ICC del servidor de Quirks para calibrar el color de la pantalla.</translation>
 <translation id="885381502874625531">Teclado bielorruso</translation>
 <translation id="8856844195561710094">Error al detener la detección del dispositivo Bluetooth</translation>
 <translation id="885701979325669005">Almacenamiento</translation>
@@ -5343,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;Configuración</translation>
 <translation id="8926389886865778422">No preguntar de nuevo</translation>
 <translation id="8926518602592448999">Inhabilitar extensiones en modo de desarrollador</translation>
-<translation id="8929454297483336498">Utiliza las API de AV Foundation de Mac OS X en lugar de utilizar QTKit</translation>
 <translation id="8931394284949551895">Nuevos dispositivos</translation>
 <translation id="8932730422557198035">Utilizar la API de Android Midi</translation>
 <translation id="8933960630081805351">&amp;Mostrar en Finder</translation>
@@ -5357,6 +5358,7 @@
 <translation id="894360074127026135">Certificado Step-Up International de Netscape</translation>
 <translation id="8944779739948852228">Impresora detectada</translation>
 <translation id="8946359700442089734">Las funciones de depuración no se han habilitado completamente en este dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Habilita la compatibilidad con WebUSB.</translation>
 <translation id="89515141420106838">Habilita la aplicación Galería de Chrome Web Store para controladores de impresora. La aplicación busca extensiones en Chrome Web Store que permitan imprimir en una impresora USB con un ID USB específico.</translation>
 <translation id="895347679606913382">Iniciando...</translation>
 <translation id="8954952943849489823">No se ha podido mover el archivo porque se ha producido un error inesperado ($1).</translation>
@@ -5501,6 +5503,7 @@
 <translation id="9154194610265714752">Actualizado</translation>
 <translation id="9154418932169119429">Esta imagen no está disponible sin conexión.</translation>
 <translation id="91568222606626347">Crear acceso directo...</translation>
+<translation id="9157697743260533322">Se ha producido un error al configurar las actualizaciones automáticas para todos los usuarios (error de lanzamiento preliminar: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">¡Vaya! Se ha producido un problema de comunicación de red durante el proceso de autenticación. Comprueba tu conexión de red e inténtalo de nuevo.</translation>
 <translation id="9159562891634783594">Habilita el registro de impresoras en la nube desde la vista previa de impresión.</translation>
 <translation id="9166510596677678112">Enviar correo electrónico a esta persona</translation>
@@ -5512,7 +5515,6 @@
 <translation id="9170848237812810038">&amp;Deshacer</translation>
 <translation id="9170884462774788842">Otro programa de tu ordenador ha añadido un tema que puede cambiar el funcionamiento de Chrome.</translation>
 <translation id="9177499212658576372">Actualmente estás conectado a la red <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Administrar tarjetas de crédito</translation>
 <translation id="917858577839511832">Negociación con DTLS 1.2 para WebRTC</translation>
 <translation id="917861274483335838">Administrar bloqueo de complementos...</translation>
 <translation id="9179348476548754105">Muestra cómo el administrador de contraseñas gestiona la función Autocompletar para la credencial de sincronización solo en las páginas de nueva autenticación de transacciones.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index a212b61..aa3ad79 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -159,7 +159,6 @@
     Peate oma profiili uuesti seadistama.<ph name="BR" />
     <ph name="BR" />
     Saatke järgmisel ekraanil tagasisidet, et saaksime probleemi lahendamisel abiks olla.</translation>
-<translation id="1216954813581739968">Luba vaheleht lauaarvutis jagamiseks.</translation>
 <translation id="121827551500866099">Kuva kõik allalaadimised...</translation>
 <translation id="122082903575839559">Sertifikaadi allkirjaalgoritm</translation>
 <translation id="1221024147024329929">PKCS 1 MD2 koos RSA krüpteerimisega</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL, kus päringu kohal on %s</translation>
 <translation id="1546280085599573572">See laiendus muutis seda, milline leht kuvatakse avalehe nupul klõpsamisel.</translation>
 <translation id="1546795794523394272">Tere tulemast Chromeboxi koosolekutele!</translation>
+<translation id="1547572086206517271">Vajalik on värskendamine</translation>
 <translation id="1547964879613821194">Kanada inglise</translation>
 <translation id="1548132948283577726">Siin kuvatakse saidid, millel paroole ei salvestata.</translation>
 <translation id="1549045574060481141">Allalaadimise kinnitamine</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Lubatakse hiljuti külastatud lehtete kohalik salvestamine võrguühenduseta kasutuseks. Selleks peab olema lubatud funktsioon Võrguühenduseta lehed.</translation>
 <translation id="1891668193654680795">Usalda seda sertifikaati tarkvarategijate tuvastamiseks.</translation>
 <translation id="189210018541388520">Ava täisekraanil</translation>
+<translation id="1892754076732315533">Uus lihtsustatud kasutuskogemus, kui sisenetakse lehe käivitatavale täisekraanile või lukustatud hiirekursori olekusse.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Pilve sätete voog ebaõnnestus</translation>
 <translation id="189358972401248634">Teised keeled</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Juurdepääs teie Universal 2nd Factori seadmetele</translation>
 <translation id="2881966438216424900">Viimati kasutatud:</translation>
 <translation id="2882943222317434580">Teenus <ph name="IDS_SHORT_PRODUCT_NAME" /> taaskäivitatakse ja lähtestatakse hetke pärast</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Tegumihaldur</translation>
 <translation id="2887525882758501333">PDF-dokument</translation>
 <translation id="2888807692577297075">Päringule &lt;b&gt;„<ph name="SEARCH_STRING" />”&lt;/b&gt; ei leitud ühtki vastet</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Mitte praegu</translation>
 <translation id="3480892288821151001">Doki aken vasakule</translation>
 <translation id="3481915276125965083">Sellel lehel blokeeriti järgmised hüpikaknad:</translation>
+<translation id="3482214069979148937">Täisekraanilt väljumiseks hoidke all klahvi |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Hangi uus sertifikaat</translation>
 <translation id="3487007233252413104">anonüümne funktsioon</translation>
 <translation id="348771913750618459">iframe'il põhinevad sisslogimisvood</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Sertifikaadi nimepiirangud</translation>
 <translation id="3595596368722241419">Aku on täis</translation>
 <translation id="3600456501114769456">Teie administraator on keelanud seadmes juurdepääsu kohalikele failidele.</translation>
-<translation id="3601395307734599350">Kõik teie laiendused on siin</translation>
 <translation id="3603385196401704894">Kanada prantsuse</translation>
 <translation id="3603622770190368340">Võrgusertifikaadi hankimine</translation>
 <translation id="3605780360466892872">Triiksärk</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Kasuta üldist vaikevalikut (tuvasta)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 vaheleht}other{# vahelehte}}</translation>
 <translation id="4154664944169082762">Sõrmejäljed</translation>
-<translation id="4157188838832721931">Kasutajalt enne paroolide lehel paroolide näitamist tema OS-i parooli küsimise keelamine.</translation>
 <translation id="4157869833395312646">Microsofti Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Ava esitusloend</translation>
 <translation id="4159681666905192102">Seda lastekontot haldavad <ph name="CUSTODIAN_EMAIL" /> ja <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Logige sisse teisele kontole</translation>
 <translation id="4219614746733932747">Kui see on lubatud, kasutab Blink seadme skaleerimisteguri sisu skaleerimiseks suumimehhanismi.</translation>
 <translation id="4220865787605972627">Lubab ekraani värvide kalibreerimise, kui ekraan toetab seda funktsiooni.</translation>
-<translation id="4233506668751282421">Heli lubamine lauaarvutis jagamiseks</translation>
 <translation id="4235200303672858594">Kogu ekraan</translation>
 <translation id="4235813040357936597">Lisa konto profiilile <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" />-i ei saa selles keeles kuvada</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Reegli seadeid ei õnnestunud seadmesse installida: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> soovib keelata teie hiirekursori.</translation>
 <translation id="424546999567421758">Tuvastati suur kettakasutus</translation>
-<translation id="4247072926966606568">Selle märgistusega võimaldab lauaarvuti jagamise valimisaken kasutajal valida, kas ta soovib heli jagada.</translation>
 <translation id="424726838611654458">Ava alati programmis Adobe Reader</translation>
 <translation id="4249248555939881673">Võrguühenduse ootamine ...</translation>
 <translation id="4249373718504745892">Sellele lehele on juurdepääs teie kaamerale ja mikrofonile blokeeritud.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">Lisa aadress</translation>
 <translation id="4359408040881008151">Installitud sõltuva(te) laiendus(t)e tõttu.</translation>
 <translation id="4361190688154226069">Ristkülikul põhinev sihtimine kuvades.</translation>
-<translation id="4363372140743955595">Paroolihalduri uuesti autentimine</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> on alla laaditud</translation>
 <translation id="4364830672918311045">Kuva märguanded</translation>
 <translation id="4365673000813822030">Vabandust, sünkroonimine on lakanud töötamast.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">Teave automaatse täitmise kohta</translation>
 <translation id="4449996769074858870">See vahekaart esitab heli.</translation>
 <translation id="4450974146388585462">Diagnoosi</translation>
+<translation id="4452426408005428395">Siiski mitte</translation>
 <translation id="4454939697743986778">Selle sertifikaadi on installinud teie süsteemiadministraator.</translation>
 <translation id="445923051607553918">WiFi-võrguga ühinemine</translation>
 <translation id="4462159676511157176">Kohandatud nimeserverid</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">Ühekordne aktiveerimine: sisestage selles seadmes <ph name="DEVICE_TYPE" /> Smart Locki aktiveerimiseks oma parool. Smart Locki kasutamisel avab teie telefon selle seadme ilma, et peaksite parooli sisestama. Funktsiooni muutmiseks või väljalülitamiseks avage seadme <ph name="DEVICE_TYPE" /> seaded.</translation>
 <translation id="4595560905247879544">Rakendusi ja laiendusi saab muuta ainult haldur (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF-i konverteerija</translation>
-<translation id="4601250583401186741">Seo kontrolleriga</translation>
 <translation id="4602466770786743961">Luba hostile <ph name="HOST" /> alati juurdepääs kaamerale ja mikrofonile</translation>
 <translation id="4605399136610325267">Interneti-ühendus puudub</translation>
 <translation id="4608500690299898628">&amp;Otsi...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">Luba</translation>
 <translation id="5045550434625856497">Vale parool</translation>
 <translation id="5048179823246820836">Põhjamaade</translation>
+<translation id="5048294425697652159">Luba Quirksi kliendil ekraani kalibreerida.</translation>
 <translation id="5053604404986157245">Juhuslikult loodud TPM-i parool pole saadaval. See on pärast Powerwashi tavapärane.</translation>
 <translation id="5053803681436838483">Uus tarneaadress ...</translation>
 <translation id="5055309315264875868">Kuvab paroolihalduri seadete lehel lingi, et saaksite hallata sünkroonitud paroole veebis.</translation>
@@ -2881,7 +2880,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Liigutuse nõue meedia taasesitamise jaoks</translation>
 <translation id="5189060859917252173">Sertifikaat „<ph name="CERTIFICATE_NAME" />” esindab sertifitseerimisorganit.</translation>
-<translation id="5196117515621749903">Laadib uuesti vahemälu eirates</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sünkroonimine on lõpetatud.</translation>
@@ -2896,6 +2894,7 @@
 <translation id="521582610500777512">Fotost loobuti</translation>
 <translation id="5218183485292899140">Šveitsi prantsuse</translation>
 <translation id="5218766986344577658">Lingi ühestuse hüpik</translation>
+<translation id="5220992698394817380">Luba IME menüü lubamine</translation>
 <translation id="5222676887888702881">Logi välja</translation>
 <translation id="5225324770654022472">Kuva rakenduste otsetee</translation>
 <translation id="5227536357203429560">Lisa privaatne võrk ...</translation>
@@ -2938,6 +2937,7 @@
 <translation id="5271247532544265821">Vaheta lihtsustatud/traditsioonilise hiina keele vahel</translation>
 <translation id="5271549068863921519">Salvesta parool</translation>
 <translation id="5273628206174272911">Ajaloos katseline navigeerimine horisontaalse ülekerimisega.</translation>
+<translation id="5275194674756975076">OK, värskenda</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> sellelt saidilt</translation>
 <translation id="5275973617553375938">Google Drive'ist taastatud failid</translation>
 <translation id="527605719918376753">Summuta vahekaart</translation>
@@ -3011,6 +3011,7 @@
 <translation id="5368720394188453070">Teie telefon on lukus. Avage see sisenemiseks.</translation>
 <translation id="5369927996833026114">Chrome'i rakenduste käivitiga tutvumine</translation>
 <translation id="5370819323174483825">&amp;Laadi uuesti</translation>
+<translation id="5372066618989754822">Keeleseadete lehel lubatakse juurdepääs uuele IME menüüle.</translation>
 <translation id="5372529912055771682">Operatsioonisüsteemi see versioon ei toeta valitud registreerimisviisi. Veenduge, et käitate uusimat versiooni, ja proovige uuesti.</translation>
 <translation id="5374359983950678924">Muuda pilti</translation>
 <translation id="5376169624176189338">Klõpsake tagasi minemiseks, hoidke all ajaloo kuvamiseks</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Nimi:</translation>
 <translation id="5627086634964711283">Lisaks juhib see seda, mis lehte kuvatakse avalehe nupul klõpsamisel.</translation>
 <translation id="5627259319513858869">Lubab kasutada alles arendusjärgus olevaid eksperimentaalseid lõuendifunktsioone.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Materiaalne disain brauseri ülemises Chrome'i osas</translation>
 <translation id="5633060877636360447">See kustutab sellest seadmest jäädavalt vähemalt <ph name="TOTAL_COUNT" /> üksust, kuid sünkroonitud üksusi muudest seadmetest ei kustutata.</translation>
 <translation id="5636996382092289526">Võimalik, et võrgu <ph name="NETWORK_ID" /> kasutamiseks tuleb teil esmalt <ph name="LINK_START" />külastada võrgu sisselogimislehte<ph name="LINK_END" />, mis avaneb mõne sekundi pärast automaatselt. Kui see ei avane, ei saa võrku kasutada.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Objekti klaviatuuri fookusega esiletõstmine</translation>
 <translation id="5678955352098267522">Lugege oma andmeid veebisaidil <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Teksti filtreerimine ülevaaterežiimis</translation>
+<translation id="5683818630978268777">Katseline klaviatuuriluku kasutajaliides.</translation>
 <translation id="5684661240348539843">Vara kood</translation>
 <translation id="569068482611873351">Impordi ...</translation>
 <translation id="56907980372820799">Lingi andmed</translation>
@@ -3693,7 +3696,6 @@
 <translation id="6420676428473580225">Töölauale lisamine</translation>
 <translation id="6422329785618833949">Foto on ümber pööratud</translation>
 <translation id="642282551015776456">Seda nime ei saa faili või kausta nimena kasutada</translation>
-<translation id="642322423610046417">Mittevajalike laienduste eemaldamiseks kasutage kontekstimenüüd (paremklikk).</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Kas kasutada Adobe Readerit PDF-i vaikevaaturina?</translation>
 <translation id="6425092077175753609">Materiaalne</translation>
@@ -3764,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Katselises klaviatuurilukuga täisekraanirežiimis peavad kasutajad väljumiseks hoidma all paoklahvi Esc.</translation>
 <translation id="6527303717912515753">Jaga</translation>
 <translation id="6528546217685656218">Selle kliendi sertifikaadi privaatvõti puudub või on sobimatu.</translation>
 <translation id="653019979737152879">Faili <ph name="FILE_NAME" /> sünkroonimine ...</translation>
@@ -3943,6 +3946,7 @@
 <translation id="6825883775269213504">vene keel</translation>
 <translation id="6827236167376090743">Seda videot esitatakse seni, kuni lehmad koju jõuavad.</translation>
 <translation id="6828153365543658583">Piira järgmiste kasutajate sisselogimist:</translation>
+<translation id="6828860976882136098">Automaatvärskenduste seadistamine kõikidele kasutajatele ebaõnnestus (esituseelne käivitamisviga: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Abi hankimine seadme <ph name="DEVICE_TYPE" /> puhul.</translation>
 <translation id="6829270497922309893">Registreerumine teie organisatsioonis</translation>
 <translation id="6830590476636787791">Animeeritud üleminekud esmakordse käitamise õpetustes</translation>
@@ -3965,7 +3969,6 @@
 <translation id="6860427144121307915">Ava vahekaardil</translation>
 <translation id="6862635236584086457">Kõik sellesse kausta salvestatud failid varundatakse võrgus automaatselt</translation>
 <translation id="6865313869410766144">Automaattäitmise vormiandmed</translation>
-<translation id="6865319096921627602">Androidis lubatakse ühendatud meedia konveier.</translation>
 <translation id="6867678160199975333">Aktiveeri <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Märgitud märkeruut</translation>
 <translation id="6870130893560916279">Ukraina klaviatuur</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">WebRTC H.264 tarkvara videokooder/-dekooder</translation>
 <translation id="7006634003215061422">Alumine veeris</translation>
 <translation id="7006844981395428048">$1-heli</translation>
+<translation id="7008270479623533562">Selle laienduse käitamiseks peate lehte värskendama. Laienduse saate sellel saidil automaatselt käitada, kui paremklõpsate laienduse ikoonil.</translation>
 <translation id="7009045250432250765">Automaatne täitmine ühe klõpsuga</translation>
 <translation id="7010160495478792664">Videod dekodeeritakse riistvaralise kiirendusega, kui see on saadaval.</translation>
 <translation id="7010400591230614821">Agressiivne vahekaartide vabastamise strateegia</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">Ava vahekaardil</translation>
 <translation id="7257173066616499747">WiFi-võrgud</translation>
 <translation id="7257666756905341374">Kopeeritud ja kleebitud andmete lugemine</translation>
-<translation id="7260002739296185724">Lubab AVFoundationi kasutamise videohõiveks ja videoseadme jälgimiseks operatsioonisüsteemi OS X versiooni 10.7 või vanemate versioonide puhul. Muidu kasutatakse QTKit-i.</translation>
 <translation id="7260504762447901703">Juurdepääsu tühistamine</translation>
 <translation id="7262004276116528033">Sisselogimisteenust hostib <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Liivakastist eemaldatud pistikprogrammi juurdepääsu erandid</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">Uue vahelehe võrguühenduseta lehtede lubamine</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (praegune)</translation>
 <translation id="7321545336522791733">Serveriga ei saa ühendust</translation>
-<translation id="7324841169865301118">Lubab kasutajal lauaarvutis jagamiseks valida vahelehe.</translation>
 <translation id="7325437708553334317">Kõrge kontrastsuse laiendus</translation>
 <translation id="7326565110843845436">Puuteplaadi kolme sõrmega klõps</translation>
 <translation id="73289266812733869">Valimata</translation>
@@ -5015,7 +5017,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto autor:</translation>
 <translation id="8428213095426709021">Seaded</translation>
-<translation id="8432590265309978927">Algses katsejärgus olev tugi saitidevaheliste iframe'ide renderdamiseks eraldi protsessides.</translation>
 <translation id="8432745813735585631">US Colemaki klaviatuur</translation>
 <translation id="8434177709403049435">&amp;Kodeerimine</translation>
 <translation id="8434480141477525001">NaCl silumisport</translation>
@@ -5212,7 +5213,6 @@
 <translation id="8713979477561846077">Luba füüsilise klaviatuuri automaatparanduse funktsioon USA klaviatuuril, mis pakub füüsilisel klaviatuuril teksti sisestades soovitusi.</translation>
 <translation id="871476437400413057">Google'i salvestatud paroolid</translation>
 <translation id="8714838604780058252">Taustagraafika</translation>
-<translation id="8716065142695381595">Androidis lubatakse ühendatud (Androidi ja lauaarvutite) meedia konveier.</translation>
 <translation id="8722421161699219904">USA rahvusvaheline klaviatuur</translation>
 <translation id="872451400847464257">Muuda otsingumootorit</translation>
 <translation id="8724859055372736596">&amp;Kuva kaustas</translation>
@@ -5232,6 +5232,7 @@
 <translation id="8737685506611670901">Ava protokolli <ph name="PROTOCOL" /> lingid teenuse <ph name="REPLACED_HANDLER_TITLE" /> asemel</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Saate täpsustada puuteliigutuse positsiooni, mis kompenseerib puudutuste väikest eraldusvõimet võrreldes hiirega.</translation>
+<translation id="8743712320294854924">Kuva riiulil laiendatud sisestusvalikud.</translation>
 <translation id="874420130893181774">Traditsiooniline pinyini sisestusmeetod</translation>
 <translation id="8744525654891896746">Valige sellele jälgitavale kasutajale avatar.</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5301,6 +5302,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Tõstuklahvi režiimi ümberlülitamine</translation>
 <translation id="8852742364582744935">Lisati järgmised rakendused ja laiendused:</translation>
+<translation id="8853611566624224021">Lubatakse ICC-ekraanifailide toomine Quirksi serverist ekraani värvide kalibreerimiseks.</translation>
 <translation id="885381502874625531">Valgevene klaviatuur</translation>
 <translation id="8856844195561710094">Bluetooth-seadme otsimise katkestamine nurjus.</translation>
 <translation id="885701979325669005">Salvestamine</translation>
@@ -5350,7 +5352,6 @@
 <translation id="8925458182817574960">&amp;Seaded</translation>
 <translation id="8926389886865778422">Ära enam küsi</translation>
 <translation id="8926518602592448999">Arendaja režiimis töötavate laienduste keelamine</translation>
-<translation id="8929454297483336498">QTKiti asemel Mac OS X-i AVFoundationi API-de kasutamine</translation>
 <translation id="8931394284949551895">Uued seadmed</translation>
 <translation id="8932730422557198035">Kasuta Android Midi API-t</translation>
 <translation id="8933960630081805351">&amp;Näita otsijas</translation>
@@ -5364,6 +5365,7 @@
 <translation id="894360074127026135">Netscape'i rahvusvaheline seadistus</translation>
 <translation id="8944779739948852228">Printer on tuvastatud</translation>
 <translation id="8946359700442089734">Silumisfunktsioone ei lubatud täielikult selles toote <ph name="IDS_SHORT_PRODUCT_NAME" /> seadmes.</translation>
+<translation id="8946784827990177241">Lubatakse WebUSB tugi.</translation>
 <translation id="89515141420106838">Lubatakse Chrome'i veebipoe galerii rakendus printeridraiveritele. Rakendus otsib Chrome'i veebipoest laiendusi, mis toetavad printimist kindla USB ID-ga USB-printeriga.</translation>
 <translation id="895347679606913382">Alustamine...</translation>
 <translation id="8954952943849489823">Teisaldamine ebaõnnestus, ootamatu viga: $1</translation>
@@ -5508,6 +5510,7 @@
 <translation id="9154194610265714752">Värskendatud</translation>
 <translation id="9154418932169119429">Kujutis ei ole võrguühenduseta saadaval.</translation>
 <translation id="91568222606626347">Otsetee loomine ...</translation>
+<translation id="9157697743260533322">Automaatvärskenduste seadistamine kõikidele kasutajatele ebaõnnestus (esituseelne käivitamisviga: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Vabandust! Autentimise ajal ilmnes võrguside probleem. Kontrollige võrguühendust ja proovige uuesti.</translation>
 <translation id="9159562891634783594">Registreerimata pilvprinterite printimise eelvaates registreerimise lubamine.</translation>
 <translation id="9166510596677678112">Saatke sellele isikule kiri</translation>
@@ -5519,7 +5522,6 @@
 <translation id="9170848237812810038">&amp;Võta tagasi</translation>
 <translation id="9170884462774788842">Teine programm teie arvutis lisas teema, mis võib muuta Chrome'i toimimist.</translation>
 <translation id="9177499212658576372">Olete praegu ühendatud võrguga <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Krediitkaartide haldamine</translation>
 <translation id="917858577839511832">DTLS 1.2 läbirääkimine WebRTC jaoks</translation>
 <translation id="917861274483335838">Hallake pistikprogrammi blokeerimist ...</translation>
 <translation id="9179348476548754105">Määrab, kuidas paroolihaldur käsitleb ainult tehingu uuesti volitamise lehtedel sünkroonimise mandaadi automaatset täitmist.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 21147e0fb..7daf2e7 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -159,7 +159,6 @@
     باید نمایه‌تان را دوباره راه‌اندازی کنید.<ph name="BR" />
     <ph name="BR" />
     در صفحه بعدی، لطفاً برای کمک به ما جهت اصلاح مشکل، بازخوردی ارسال کنید.</translation>
-<translation id="1216954813581739968">فعال کردن برگه برای اشتراک‌گذاری میزکار.</translation>
 <translation id="121827551500866099">نمایش همه فایل‌های بارگیری‌شده...</translation>
 <translation id="122082903575839559">الگوریتم امضای گواهی</translation>
 <translation id="1221024147024329929">‏PKCS #1 MD2 با رمزگذاری RSA</translation>
@@ -388,6 +387,7 @@
 <translation id="1545786162090505744">‏نشانی وب با %s به جای پرسش</translation>
 <translation id="1546280085599573572">این افزونه، صفحه‌ای را با کلیک روی دکمه صفحه اصلی نمایش داده می‌شود، تغییر داده است.</translation>
 <translation id="1546795794523394272">‏به Chromebox برای جلسات خوش آمدید!</translation>
+<translation id="1547572086206517271">باید بازخوانی شود</translation>
 <translation id="1547964879613821194">انگلیسی کانادا</translation>
 <translation id="1548132948283577726">سایت‌هایی که اصلاً گذرواژه ذخیره نمی‌کنند در اینجا ظاهر می‌شوند.</translation>
 <translation id="1549045574060481141">تأیید دانلود</translation>
@@ -616,6 +616,7 @@
 <translation id="1891196807951270080">ذخیره صفحه‌های بازدیدشده اخیر را به‌صورت محلی برای استفاده آفلاین فعال می‌کند. به این منظور، «صفحه‌های آفلاین» باید فعال باشند.</translation>
 <translation id="1891668193654680795">برای شناسایی سازندگان نرم‌افزار، به این مجوز اطمینان شود.</translation>
 <translation id="189210018541388520">باز کردن تمام صفحه</translation>
+<translation id="1892754076732315533">تجربه کاربری جدید و ساده‌شده‌ هنگام ورود به حالت‌های قفل نشانگر موشواره یا تمام صفحه آغازشده از طرف صفحه.</translation>
 <translation id="1893046049133338222">‏ACR: ‏<ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">جریان ابری ناموفق بود</translation>
 <translation id="189358972401248634">زبان‌های دیگر</translation>
@@ -1319,6 +1320,7 @@
 <translation id="288042212351694283">‏دسترسی به دستگاه‌های Universal 2nd Factor شما</translation>
 <translation id="2881966438216424900">آخرین دسترسی:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> راه‌اندازی مجدد و به صورت لحظه‌ای بازنشانی می‌شود</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">مدیر فعالیت‌ها</translation>
 <translation id="2887525882758501333">‏سند PDF</translation>
 <translation id="2888807692577297075">‏هیچ موردی با &lt;b&gt;«<ph name="SEARCH_STRING" />»&lt;/b&gt; مطابق نیست</translation>
@@ -1749,6 +1751,7 @@
 <translation id="3479552764303398839">اکنون نه</translation>
 <translation id="3480892288821151001">قراردادن پنجره در چپ</translation>
 <translation id="3481915276125965083">پنجره‌های بازشوی زیر در این صفحه مسدود شده‌اند:</translation>
+<translation id="3482214069979148937">دکمه |<ph name="ACCELERATOR" />| را برای خروج از تمام صفحه نگه‌دارید</translation>
 <translation id="3484869148456018791">دریافت گواهی‌نامه جدید</translation>
 <translation id="3487007233252413104">تابع ناشناس</translation>
 <translation id="348771913750618459">‏جریان‌های ورود به سیستم مبتنی بر iframe</translation>
@@ -1843,7 +1846,6 @@
 <translation id="3593965109698325041">محدودیتهای نام گواهی</translation>
 <translation id="3595596368722241419">باتری پر است</translation>
 <translation id="3600456501114769456">دسترسی به فایل‌های محلی بر روی دستگاه شما توسط سرپرست سیستم شما از کار افتاده است.</translation>
-<translation id="3601395307734599350">همه افزونه‌هایتان در اینجا هستند</translation>
 <translation id="3603385196401704894">فرانسوی کانادا</translation>
 <translation id="3603622770190368340">دریافت گواهی‌نامه شبکه</translation>
 <translation id="3605780360466892872">تاجر</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">استفاده از پیش‌فرض کلی (تشخیص)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{‏۱ برگه}one{‏# برگه}other{‏# برگه}}</translation>
 <translation id="4154664944169082762">اثر انگشت</translation>
-<translation id="4157188838832721931">درخواست از کاربر برای وارد کردن گذرواژه سیستم عامل وی قبل از آشکار ساختن گذرواژه‌ها در صفحه گذرواژه‌ها را غیرفعال می‌کند.</translation>
 <translation id="4157869833395312646">‏رمزنگاری انتقال یافته از دروازه سرور Microsoft</translation>
 <translation id="4158739975813877944">باز کردن فهرست پخش</translation>
 <translation id="4159681666905192102">این یک حساب مخصوص بچه‌ها است که توسط <ph name="CUSTODIAN_EMAIL" /> و <ph name="SECOND_CUSTODIAN_EMAIL" /> مدیریت می‌شود.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">ورود به سیستم حسابی دیگر</translation>
 <translation id="4219614746733932747">‏اگر فعال شود، Blink از مکانیسم بزرگ‌نمایی خود برای مقیاس کردن محتوا برای فاکتور مقیاس دستگاه استفاده می‌کند.</translation>
 <translation id="4220865787605972627">کالیبراسیون نمایشگر را فعال می‌کند (اگر نمایشگر از این قابلیت پشتیبانی کند).</translation>
-<translation id="4233506668751282421">فعال کردن صوت برای اشتراک‌گذاری میزکار</translation>
 <translation id="4235200303672858594">کل صفحه</translation>
 <translation id="4235813040357936597">افزودن حساب برای <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> به این زبان قابل نمایش نیست.</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">تنظیمات خط‌مشی روی دستگاه نصب نشد: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> می‌خواهد مکان‌نمای ماوس شما را غیرفعال کند.</translation>
 <translation id="424546999567421758">مصرف بالای دیسک شناسایی شد</translation>
-<translation id="4247072926966606568">وقتی این پرچم روشن است، پنجره انتخابگر اشتراک‌گذاری میز کار، به کاربر امکان می‌دهد انتخاب کند صوت به اشتراک گذاشته شود یا خیر.</translation>
 <translation id="424726838611654458">‏همیشه در Adobe Reader باز شود</translation>
 <translation id="4249248555939881673">در انتظار اتصال شبکه...</translation>
 <translation id="4249373718504745892">این صفحه از دسترسی به دوربین و میکروفون شما بازداشته شده است.</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">افزودن آدرس</translation>
 <translation id="4359408040881008151">به دلیل برنامه(های) افزودنی وابسته نصب شد.</translation>
 <translation id="4361190688154226069">هدف‌یابی بر مبنای مستطیل در بازدیدها</translation>
-<translation id="4363372140743955595">احراز هویت مجدد مدیر گذرواژه</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> بارگیری شد</translation>
 <translation id="4364830672918311045">نمایش اعلان‌ها</translation>
 <translation id="4365673000813822030">وای، همگام‌سازی متوقف شده است.</translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">درباره تکمیل خودکار</translation>
 <translation id="4449996769074858870">این برگه در حال پخش صدا است.</translation>
 <translation id="4450974146388585462">تشخیص</translation>
+<translation id="4452426408005428395">انصراف</translation>
 <translation id="4454939697743986778">این گواهینامه توسط سرپرست سیستم شما نصب شده است.</translation>
 <translation id="445923051607553918">‏پیوستن به شبکه Wi-Fi</translation>
 <translation id="4462159676511157176">سرورهای نام سفارشی</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">‏فعال‌سازی یک‌باره: برای فعال کردن Smart Lock در این <ph name="DEVICE_TYPE" />، گذرواژه‌تان را تایپ کنید. با Smart Lock، تلفن شما قفل این دستگاه را باز می‌کند—بدون گذرواژه. برای تغییر دادن یا خاموش کردن این ویژگی، به تنظیمات <ph name="DEVICE_TYPE" /> بروید.</translation>
 <translation id="4595560905247879544">برنامه‌ها و افزونه‌ها فقط توسط مدیر (<ph name="CUSTODIAN_NAME" />) قابل تغییر هستند.</translation>
 <translation id="4601242977939794209">‏مبدل EMF</translation>
-<translation id="4601250583401186741">مرتبط‌سازی با کنترل‌کننده</translation>
 <translation id="4602466770786743961">همیشه به <ph name="HOST" /> اجازه داده شود به دوربین و میکروفون شما دسترسی داشته باشد</translation>
 <translation id="4605399136610325267">اینترنت وصل نیست</translation>
 <translation id="4608500690299898628">&amp;یافتن...</translation>
@@ -2779,6 +2777,7 @@
 <translation id="5039804452771397117">اجازه دادن</translation>
 <translation id="5045550434625856497">گذرواژه نامعتبر</translation>
 <translation id="5048179823246820836">نوردیک</translation>
+<translation id="5048294425697652159">‏فعال کردن Quirks Client برای کالیبراسیون نمایشگر.</translation>
 <translation id="5053604404986157245">‏‫گذرواژه TPM، که به صورت تصادفی ایجاد می‌شود، در دسترس نیست. پس از Powerwash این اتفاق عادی است.</translation>
 <translation id="5053803681436838483">آدرس ارسال جدید...</translation>
 <translation id="5055309315264875868">پیوندی را در صفحه تنظیمات مدیریت گذرواژه نشان دهید تا گذرواژه همگام‌سازی شده‌ خودتان را آنلاین مدیریت کنید.</translation>
@@ -2877,7 +2876,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">نیاز به اشاره برای بازپخش رسانه</translation>
 <translation id="5189060859917252173">مجوز "<ph name="CERTIFICATE_NAME" />" نشان دهنده یک ارائه دهنده مجوز است.</translation>
-<translation id="5196117515621749903">تازه‌سازی صرفنظر از حافظهٔ پنهان</translation>
 <translation id="5196716972587102051">۲</translation>
 <translation id="5197255632782567636">اینترنت</translation>
 <translation id="5197680270886368025">همگام‌سازی کامل شد.</translation>
@@ -2892,6 +2890,7 @@
 <translation id="521582610500777512">عکس صرف‌ نظر شد</translation>
 <translation id="5218183485292899140">فرانسوی سوئیس</translation>
 <translation id="5218766986344577658">پنجره بازشوی ابهام‌زدایی پیوند</translation>
+<translation id="5220992698394817380">‏فعال کردن منوی شرکت در IME</translation>
 <translation id="5222676887888702881">خروج از سیستم</translation>
 <translation id="5225324770654022472">نمایش میان‌بر برنامه‌ها</translation>
 <translation id="5227536357203429560">افزودن شبکه خصوصی...</translation>
@@ -2934,6 +2933,7 @@
 <translation id="5271247532544265821">تغییر وضعیت بین حالت چینی ساده/سنتی</translation>
 <translation id="5271549068863921519">ذخیره گذرواژه</translation>
 <translation id="5273628206174272911">پیمایش آزمایشی سابقه در مقایسه با پیمایش افقی.</translation>
+<translation id="5275194674756975076">بله، بازخوانی شود</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> از این سایت</translation>
 <translation id="5275973617553375938">‏فایل‌های بازیابی‌شده از Google Drive</translation>
 <translation id="527605719918376753">بی‌صدا کردن برگه</translation>
@@ -3007,6 +3007,7 @@
 <translation id="5368720394188453070">تلفنتان قفل است. برای وارد شدن قفل آن را باز کنید.</translation>
 <translation id="5369927996833026114">‏آشنایی با راه‌انداز برنامه Chrome</translation>
 <translation id="5370819323174483825">&amp;تازه‌سازی</translation>
+<translation id="5372066618989754822">‏دسترسی به منوی جدید IME را در صفحه تنظیمات زبان فعال می‌کند.</translation>
 <translation id="5372529912055771682">حالت ثبت‌نام ارائه شده توسط این نسخه از سیستم عامل پشتیبانی نمی‌شود. لطفاً مطمئن شوید که جدیدترین نسخه را اجرا می‌کنید و دوباره امتحان کنید.</translation>
 <translation id="5374359983950678924">تغییر عکس</translation>
 <translation id="5376169624176189338">برای برگشت به عقب کلیک کنید، برای دیدن سابقه نگه دارید</translation>
@@ -3192,6 +3193,7 @@
 <translation id="5626134646977739690">نام:</translation>
 <translation id="5627086634964711283">این برنامه افزودنی همچنین صفحه‌ای را که هنگام کلیک کردن روی دکمه اصلی نشان داده می‌شود، کنترل می‌کند.</translation>
 <translation id="5627259319513858869">استفاده از قابلیت‌های کانواس آزمایشی در حال توسعه را به کار می‌اندازد.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">‏طراحی سه‌بعدی در chrome بالای مرورگر</translation>
 <translation id="5633060877636360447">این کار حداقل <ph name="TOTAL_COUNT" /> مورد را برای همیشه از این دستگاه حذف می‌کند، اما موارد همگام‌سازی شده از دستگاه‌های دیگر پاکسازی نمی‌شوند.</translation>
 <translation id="5636996382092289526">برای استفاده از <ph name="NETWORK_ID" /> ابتدا باید به <ph name="LINK_START" />صفحه ورود به سیستم شبکه بروید<ph name="LINK_END" />، که تا چند ثانیه دیگر به‌طور خودکار باز می‌شود. اگر این اتفاق نیافتد، نمی‌توان از شبکه استفاده کرد.</translation>
@@ -3222,6 +3224,7 @@
 <translation id="5678862612529498267">روشنی دادن به شیء با فوکوس صفحه‌کلید</translation>
 <translation id="5678955352098267522">خواندن داده‌های شما در <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">فیلتر کردن نوشتار در حالت نمای کلی</translation>
+<translation id="5683818630978268777">واسط کاربری قفل صفحه‌کلید آزمایشی.</translation>
 <translation id="5684661240348539843">شناسه دارایی</translation>
 <translation id="569068482611873351">وارد کردن...</translation>
 <translation id="56907980372820799">داده‌های پیوند</translation>
@@ -3687,7 +3690,6 @@
 <translation id="6420676428473580225">افزودن به میز کار</translation>
 <translation id="6422329785618833949">عکس وارونه شده</translation>
 <translation id="642282551015776456">این نام ممکن است به‌عنوان نام فایلی از پوشه استفاده نشود</translation>
-<translation id="642322423610046417">از منوی بافت (راست کلیک) برای برداشتن افزونه‌هایی که نیاز ندارید استفاده کنید.</translation>
 <translation id="6423239382391657905">‏باز کردن VPN</translation>
 <translation id="6423731501149634044">‏از Adobe Reader به‌عنوان مشاهده گر PDF پیش‌فرض شما استفاده شود؟</translation>
 <translation id="6425092077175753609">سه‌بعدی</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         ‏<ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">‏تمام‌صفحه آزمایشی با حالت قفل صفحه‌کلید، کاربران را ملزم به فشاردادن و نگه‌داشتن کلید Esc برای خروج می‌کند.</translation>
 <translation id="6527303717912515753">اشتراک‌گذاری</translation>
 <translation id="6528546217685656218">کلید خصوصی برای این گواهی کلاینت مفقود شده یا نامعتبر است.</translation>
 <translation id="653019979737152879">در حال همگام‌سازی <ph name="FILE_NAME" />...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">روسی</translation>
 <translation id="6827236167376090743">پخش این ویدیو ادامه می‌یابد و تکرار می‌شود.</translation>
 <translation id="6828153365543658583">محدود کردن ورود به سیستم برای کاربران زیر:</translation>
+<translation id="6828860976882136098">راه‌اندازی به‌روزرسانی‌های خودکار برای همه کاربران انجام نشد (خطای اجرای پیش از تولید:‏ <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">برای <ph name="DEVICE_TYPE" /> راهنمایی دریافت کنید.</translation>
 <translation id="6829270497922309893">ثبت‌نام در سازمان شما</translation>
 <translation id="6830590476636787791">انتقال‌های پویانمایی‌شده در اولین اجرای آموزش گام به گام</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">باز کردن در یک برگه</translation>
 <translation id="6862635236584086457">از همه فایل‌های ذخیره شده در این پوشه به‌صورت خودکار و آنلاین نسخهٔ پشتیبان تهیه می‌شود</translation>
 <translation id="6865313869410766144">تکمیل خودکار داده‌های فرم</translation>
-<translation id="6865319096921627602">‏پایپ لاین رسانه یکپارچه را در Android فعال می‌کند.</translation>
 <translation id="6867678160199975333">تغییر به <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">کادر انتخاب علامت زده شده</translation>
 <translation id="6870130893560916279">صفحه‌کلید اوکراینی</translation>
@@ -4054,6 +4057,7 @@
 <translation id="7006017748900345484">‏رمزگذار/رمزگشای ویدیوی نرم‌افزار WebRTC H.264</translation>
 <translation id="7006634003215061422">حاشیه پایین</translation>
 <translation id="7006844981395428048">صدای $1</translation>
+<translation id="7008270479623533562">برای اجرای این افزونه، باید صفحه را بازخوانی کنید. با کلیک راست روی نماد افزونه می‌توانید آن را به‌صورت خودکار روی این سایت اجرا کنید.</translation>
 <translation id="7009045250432250765">تکمیل خودکار با یک کلیک</translation>
 <translation id="7010160495478792664">رمزگشایی ویدیو با شتاب سخت‌افزاری در صورت در دسترس بودن.</translation>
 <translation id="7010400591230614821">راهبرد تهاجمی آزادسازی برگه</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">باز کردن در برگه</translation>
 <translation id="7257173066616499747">‏شبکه‌های Wi-Fi</translation>
 <translation id="7257666756905341374">خواندن داده‌هایی که کپی و جای‌گذاری می‌کنید</translation>
-<translation id="7260002739296185724">‏استفاده از AVFoundation را برای ضبط ویدیو فعال کنید تا کنترل دستگاه ویدیو در OS X &gt;= 10.7. در غیر این صورت QTKit استفاده شود.</translation>
 <translation id="7260504762447901703">لغو دسترسی</translation>
 <translation id="7262004276116528033">این خدمات ورود به سیستم توسط <ph name="SAML_DOMAIN" /> میزبانی شده است</translation>
 <translation id="7262221505565121">استثناهای دستیابی افزایه آزمایشی نشده</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">‏فعال کردن صفحه‌های آفلاین NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (کنونی)</translation>
 <translation id="7321545336522791733">سرور غیرقابل دسترسی است</translation>
-<translation id="7324841169865301118">به کاربران امکان می‌دهد برگه‌ای برای به اشتراک گذاشتن میزکار انتخاب کنند.</translation>
 <translation id="7325437708553334317">برنامهٔ افزودنی کنتراست بالا</translation>
 <translation id="7326565110843845436">کلیک سه انگشتی صفحه لمسی</translation>
 <translation id="73289266812733869">انتخاب نشده</translation>
@@ -5007,7 +5009,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">عکس توسط</translation>
 <translation id="8428213095426709021">تنظیمات</translation>
-<translation id="8432590265309978927">‏پشتیبانی آزمایشی برای تولید تصویر iframe های بین سایتی در پردازش‌های جداگانه.</translation>
 <translation id="8432745813735585631">صفحه‌کلید کلماک آمریکایی</translation>
 <translation id="8434177709403049435">&amp;رمزگذاری</translation>
 <translation id="8434480141477525001">‏درگاه اشکال‌زدایی NaCl</translation>
@@ -5204,7 +5205,6 @@
 <translation id="8713979477561846077">تصحیح خودکار صفحه‌کلید فیزیکی را برای صفحه‌کلید آمریکایی فعال می‌کند، این صفحه‌کلید می‌تواند پیشنهاداتی را در حین تایپ در صفحه‌کلید فیزیکی ارائه کند.</translation>
 <translation id="871476437400413057">‏گذرواژه‌های ذخیره‌شده Google</translation>
 <translation id="8714838604780058252">گرافیک‌های پس‌زمینه</translation>
-<translation id="8716065142695381595">‏پایپ لاین رسانه یکپارچه (Android و رایانه لوحی) را در Android فعال می‌کند.</translation>
 <translation id="8722421161699219904">صفحه‌کلید بین‌المللی آمریکایی</translation>
 <translation id="872451400847464257">ویرایش موتور جستجو</translation>
 <translation id="8724859055372736596">&amp;نمایش در پوشه</translation>
@@ -5224,6 +5224,7 @@
 <translation id="8737685506611670901">باز کردن پیوندهای <ph name="PROTOCOL" /> به جای <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">اصلاح موقعیت اشاره لمسی به‌منظور جبران لمس‌هایی که در مقایسه با موشواره، وضوح ضعیف‌تری دارند.</translation>
+<translation id="8743712320294854924">نمایش گزینه‌های ورودی بزرگ‌شده در قفسه.</translation>
 <translation id="874420130893181774">روش ورودی پین‌یین سنتی</translation>
 <translation id="8744525654891896746">یک چهره‌نما برای این کاربر نظارت‌شده انتخاب کنید</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5293,6 +5294,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">‏تغییر حالت کلید shift</translation>
 <translation id="8852742364582744935">برنامه‌ها و افزودنه‌های زیر اضافه شدند:</translation>
+<translation id="8853611566624224021">‏فعال کردن بازیابی فایل‌های نمایشگر icc از Quirks Server برای کالیبراسیون رنگ نمایشگر.</translation>
 <translation id="885381502874625531">صفحه‌کلید بلاروسی</translation>
 <translation id="8856844195561710094">توقف کاوش دستگاه بلوتوث ناموفق بود.</translation>
 <translation id="885701979325669005">فضای ذخیره‌سازی</translation>
@@ -5342,7 +5344,6 @@
 <translation id="8925458182817574960">&amp;تنظیمات</translation>
 <translation id="8926389886865778422">دوباره سؤال نشود</translation>
 <translation id="8926518602592448999">غیرفعال کردن افزونه‌های حالت برنامه‌نویس</translation>
-<translation id="8929454297483336498">‏استفاده از فایل‌های Mac OS X AVFoundation API به‌جای QTKit</translation>
 <translation id="8931394284949551895">دستگاه‌های جدید</translation>
 <translation id="8932730422557198035">‏استفاده از Android Midi API</translation>
 <translation id="8933960630081805351">‏&amp;نمایش در Finder</translation>
@@ -5356,6 +5357,7 @@
 <translation id="894360074127026135">‏ارتقاء بین‌المللی Netscape</translation>
 <translation id="8944779739948852228">چاپگر شناسایی شد</translation>
 <translation id="8946359700442089734">ویژگی‌های رفع اشکال در این دستگاه <ph name="IDS_SHORT_PRODUCT_NAME" /> کاملاً فعال نشدند.</translation>
+<translation id="8946784827990177241">‏فعال کردن پشتیبانی WebUSB.</translation>
 <translation id="89515141420106838">‏برنامه گالری فروشگاه وب Chrome را برای درایورهای چاپگر فعال می‌کند. برنامه فروشگاه وب Chrome را برای افزونه‌هایی جستجو می‌کند که از چاپ در چاپگر USB با شناسه USB خاص پشتیبانی می‌کنند.</translation>
 <translation id="895347679606913382">در حال شروع...</translation>
 <translation id="8954952943849489823">انتقال انجام نشد، خطای پیش‌بینی‌نشده: $1</translation>
@@ -5500,6 +5502,7 @@
 <translation id="9154194610265714752">به‌روزرسانی ‌شد</translation>
 <translation id="9154418932169119429">این تصویر به‌صورت آفلاین در دسترس نیست.</translation>
 <translation id="91568222606626347">ایجاد میان‌بر...</translation>
+<translation id="9157697743260533322">راه‌اندازی به‌روزرسانی‌های خودکار برای همه کاربران انجام نشد (خطای راه‌اندازی قبل از تولید: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">اوه! هنگام تأیید اعتبار مشکلی در ارتباط شبکه رخ داد. لطفاً اتصال شبکه را بررسی کنید و دوباره امتحان کنید.</translation>
 <translation id="9159562891634783594">‏گزینه ثبت چاپگرهای cloud ثبت نشده را در بخش پیش‌نمایش چاپ فعال می‌کند.</translation>
 <translation id="9166510596677678112">ارسال ایمیل برای این شخص</translation>
@@ -5511,7 +5514,6 @@
 <translation id="9170848237812810038">&amp;واگرد</translation>
 <translation id="9170884462774788842">‏برنامه‌ای دیگر بر روی رایانه شما یک طرح زمینه را اضافه کرده است که ممکن است نحوه کارکرد Chrome را تغییر دهد.</translation>
 <translation id="9177499212658576372">در حال حاضر به شبکه <ph name="NETWORK_TYPE" /> متصل هستید.</translation>
-<translation id="9177556055091995297">مدیریت کارت‌های اعتباری</translation>
 <translation id="917858577839511832">‏ارتباط با DTLS 1.2 برای WebRTC</translation>
 <translation id="917861274483335838">مدیریت انسداد افزایه…</translation>
 <translation id="9179348476548754105">مدیر گذرواژه چگونه تکمیل خودکار اعتبارنامه همگام‌سازی را فقط برای صفحات احراز هویت مجدد تراکنشی کنترل می‌کند.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index e92403a..0e05b46 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -159,7 +159,6 @@
     Sinun on asetettava profiilisi uudelleen.<ph name="BR" />
     <ph name="BR" />
     Lähetä meille palautetta seuraavalla ruudulla, jotta voimme korjata ongelman.</translation>
-<translation id="1216954813581739968">Ota käyttöön jaetun työpöydän tilassa</translation>
 <translation id="121827551500866099">Näytä kaikki lataukset...</translation>
 <translation id="122082903575839559">Varmenteen allekirjoitusalgoritmi</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 ja RSA-salaus</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL-osoite jonka %s käytössä ennen hakua</translation>
 <translation id="1546280085599573572">Tämä laajennus on vaihtanut Etusivu-painikkeella avattavan sivun.</translation>
 <translation id="1546795794523394272">Tervetuloa Chromebox kokouksille -palveluun!</translation>
+<translation id="1547572086206517271">Päivitä sivu</translation>
 <translation id="1547964879613821194">englanti (Kanada)</translation>
 <translation id="1548132948283577726">Tässä näytetään sivustot, jotka eivät koskaan tallenna salasanoja.</translation>
 <translation id="1549045574060481141">Vahvista lataus</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Ota käyttöön äskettäin vierailtujen sivujen tallentaminen offline-käyttöä varten. Edellyttää, että offline-sivut on otettu käyttöön.</translation>
 <translation id="1891668193654680795">Luota tähän varmenteeseen ohjelmiston tekijöitä tunnistettaessa.</translation>
 <translation id="189210018541388520">Avaa koko näytössä</translation>
+<translation id="1892754076732315533">Uusi ja yksinkertaistettu käyttöliittymä, joka käynnistyy sivun siirtyessä koko näytön tilaan tai lukitessa hiiren osoittimen</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Käyttäjien hallinnan pilvityönkulku epäonnistui.</translation>
 <translation id="189358972401248634">Muut kielet</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Käytä Universal 2nd Factor -laitteita</translation>
 <translation id="2881966438216424900">Viimeksi käytetty:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> käynnistyy uudelleen ja nollautuu hetkellisesti</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Tehtävänhallinta</translation>
 <translation id="2887525882758501333">PDF-asiakirja</translation>
 <translation id="2888807692577297075">Haulla &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt; ei löytynyt kohteita</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Ei nyt</translation>
 <translation id="3480892288821151001">Kiinnitä ikkuna vasemmalle</translation>
 <translation id="3481915276125965083">Seuraavat ponnahdusikkunat estettiin tällä sivulla:</translation>
+<translation id="3482214069979148937">Poistu koko näytön tilasta pitämällä |<ph name="ACCELERATOR" />| painettuna.</translation>
 <translation id="3484869148456018791">Hanki uusi varmenne</translation>
 <translation id="3487007233252413104">tuntematon toiminto</translation>
 <translation id="348771913750618459">Iframe-pohjainen kirjautuminen</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Varmenteen nimirajoitukset</translation>
 <translation id="3595596368722241419">Akku täynnä</translation>
 <translation id="3600456501114769456">Järjestelmänvalvojasi on estänyt sinua käyttämästä laitteeseen tallennettuja tiedostoja.</translation>
-<translation id="3601395307734599350">Kaikki laajennuksesi ovat täällä</translation>
 <translation id="3603385196401704894">ranska (Kanada)</translation>
 <translation id="3603622770190368340">Hanki verkkovarmenne</translation>
 <translation id="3605780360466892872">Dave</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">Käytä yleistä oletusta (havaitse)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 välilehti}other{# välilehteä}}</translation>
 <translation id="4154664944169082762">Tunnistetiedostot</translation>
-<translation id="4157188838832721931">Poista käytöstä käyttöjärjestelmän salasanan pyytäminen käyttäjältä ennen salasanojen paljastamista salasanasivulla.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Avaa soittolista</translation>
 <translation id="4159681666905192102">Tämä on lapsen tili, jota hallinnoivat <ph name="CUSTODIAN_EMAIL" /> ja <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">Kirjaudu sisään toiseen tiliin</translation>
 <translation id="4219614746733932747">Jos tämä on käytössä, Blink skaalaa zoomausjärjestelmänsä avulla sisältöä laiteskaalauskertoimen mukaisesti.</translation>
 <translation id="4220865787605972627">Sallii näytön värien kalibroinnin, jos näyttö tukee sitä.</translation>
-<translation id="4233506668751282421">Ota äänen jakaminen käyttöön jaetun työpöydän tilassa</translation>
 <translation id="4235200303672858594">Koko ruutu</translation>
 <translation id="4235813040357936597">Lisää tili henkilölle <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ei voi näyttää tällä kielellä.</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">Käytäntöasetuksien asentaminen laitteelle epäonnistui: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> haluaa poistaa hiiren osoittimen käytöstä.</translation>
 <translation id="424546999567421758">Kohde käyttää paljon levytilaa</translation>
-<translation id="4247072926966606568">Kun tämä merkintä on käytössä, käyttäjä voi jaetun työpöydän valitsinikkunassa valita, jaetaanko myös ääni.</translation>
 <translation id="424726838611654458">Avaa aina Adobe Readerissa</translation>
 <translation id="4249248555939881673">Odotetaan verkkoyhteyttä…</translation>
 <translation id="4249373718504745892">Tältä sivulta on estetty kameran ja mikrofonin käyttö.</translation>
@@ -2350,7 +2349,6 @@
 <translation id="4358697938732213860">Lisää osoite</translation>
 <translation id="4359408040881008151">Asennettiin, koska muut laajennukset ovat riippuvaisia tästä laajennuksesta.</translation>
 <translation id="4361190688154226069">Suorakulmaan perustuva kohdistaminen näkymissä</translation>
-<translation id="4363372140743955595">Salasanojen hallintaohjelman uudelleentodennus</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ladattiin.</translation>
 <translation id="4364830672918311045">Näytä ilmoitukset</translation>
 <translation id="4365673000813822030">Hups, synkronointi on lakannut toimimasta.</translation>
@@ -2407,6 +2405,7 @@
 <translation id="4449935293120761385">Tietoja Automaattisesta täytöstä</translation>
 <translation id="4449996769074858870">Tämä välilehti toistaa ääntä.</translation>
 <translation id="4450974146388585462">Diagnosoi</translation>
+<translation id="4452426408005428395">Peruuta</translation>
 <translation id="4454939697743986778">Tämän varmenteen on asentanut järjestelmänvalvojasi.</translation>
 <translation id="445923051607553918">Yhdistä Wi-Fi-verkkoon</translation>
 <translation id="4462159676511157176">Omat nimipalvelimet</translation>
@@ -2484,7 +2483,6 @@
 <translation id="4594109696316595112">Kertaluonteinen aktivointi: kirjoita salasanasi, niin <ph name="DEVICE_TYPE" /> aktivoi Smart Lockin. Kun Smart Lock on käytössä, puhelimesi avaa laitteen lukituksen – ilman salasanaa. Voit muuttaa tätä ominaisuutta tai poistaa sen käytöstä <ph name="DEVICE_TYPE" />-asetuksissa.</translation>
 <translation id="4595560905247879544">Vain ylläpitäjä (<ph name="CUSTODIAN_NAME" />) voi muokata sovelluksia ja laajennuksia.</translation>
 <translation id="4601242977939794209">EMF-muuntaja</translation>
-<translation id="4601250583401186741">Ohjaimen sisältävä laitepari</translation>
 <translation id="4602466770786743961">Anna sivuston <ph name="HOST" /> aina käyttää kameraasi ja mikrofoniasi</translation>
 <translation id="4605399136610325267">Internetyhteys ei käytössä</translation>
 <translation id="4608500690299898628">&amp;Haku...</translation>
@@ -2775,6 +2773,7 @@
 <translation id="5039804452771397117">Salli</translation>
 <translation id="5045550434625856497">Väärä salasana</translation>
 <translation id="5048179823246820836">pohjoismainen</translation>
+<translation id="5048294425697652159">Salli Quirks Clientin käyttö näytön kalibroinnissa</translation>
 <translation id="5053604404986157245">Sattumanvarainen TPM-salasana ei ole saatavilla. Tämä on normaalia Powerwashin jälkeen.</translation>
 <translation id="5053803681436838483">Uusi toimitusosoite…</translation>
 <translation id="5055309315264875868">Näytä linkki salasanan hallinnan asetussivulla, jotta voit hallita synkronoituja salasanojasi verkossa.</translation>
@@ -2870,7 +2869,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Käyttäjän toimenpiteiden vaatimus mediatoistossa</translation>
 <translation id="5189060859917252173">Varmenne <ph name="CERTIFICATE_NAME" /> edustaa varmenteen myöntäjää. </translation>
-<translation id="5196117515621749903">Päivitä sivu käyttämättä välimuistia</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synkronointi valmis.</translation>
@@ -2885,6 +2883,7 @@
 <translation id="521582610500777512">Kuva hylättiin</translation>
 <translation id="5218183485292899140">ranska (Sveitsi)</translation>
 <translation id="5218766986344577658">Linkin valinta ponnahdusikkunassa</translation>
+<translation id="5220992698394817380">Ota valinnainen IME-valikko käyttöön</translation>
 <translation id="5222676887888702881">Kirjaudu ulos</translation>
 <translation id="5225324770654022472">Näytä sovellusten oikopolku</translation>
 <translation id="5227536357203429560">Lisää salattu verkko...</translation>
@@ -2927,6 +2926,7 @@
 <translation id="5271247532544265821">Ota käyttöön yksinkertaistettu/perinteinen kiina</translation>
 <translation id="5271549068863921519">Tallenna salasana</translation>
 <translation id="5273628206174272911">Kokeellinen historian navigointi vaakasuuntaisen ylivierityksen seurauksena.</translation>
+<translation id="5275194674756975076">OK, päivitä</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> tältä sivustolta</translation>
 <translation id="5275973617553375938">Google Drivesta palautetut tiedostot</translation>
 <translation id="527605719918376753">Mykistä välilehti</translation>
@@ -3000,6 +3000,7 @@
 <translation id="5368720394188453070">Puhelimesi on lukittu. Avaa lukitus käyttääksesi sitä.</translation>
 <translation id="5369927996833026114">Tutustu Chromen sovelluksien käynnistysohjelmaan</translation>
 <translation id="5370819323174483825">&amp;Lataa uudelleen</translation>
+<translation id="5372066618989754822">Salli uuden IME-valikon käyttö Kieliasetukset-sivulla.</translation>
 <translation id="5372529912055771682">Tämä käyttöjärjestelmän versio ei tue annettua käyttöönottotilaa. Varmista, että käytössä on uusin versio, ja yritä uudelleen.</translation>
 <translation id="5374359983950678924">Vaihda kuva</translation>
 <translation id="5376169624176189338">Siirry taaksepäin klikkaamalla, tarkastele historiaa pitämällä alhaalla</translation>
@@ -3185,6 +3186,7 @@
 <translation id="5626134646977739690">Nimi:</translation>
 <translation id="5627086634964711283">Määrittää myös Etusivu-painikkeella avattavan sivun.</translation>
 <translation id="5627259319513858869">Ottaa käyttöön kokeellisten, vielä kehitettävien canvas-ominaisuuksien käytön.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design selaimen yläosassa</translation>
 <translation id="5633060877636360447">Tämä poistaa pysyvästi vähintään <ph name="TOTAL_COUNT" /> kohdetta tältä laitteelta, mutta ei tyhjennä synkronoituja kohteita muilta laitteilta.</translation>
 <translation id="5636996382092289526">Jos haluat käyttää verkkoa <ph name="NETWORK_ID" />, voit joutua <ph name="LINK_START" />käymään verkon kirjautumissivulla<ph name="LINK_END" />, joka avautuu automaattisesti muutaman sekunnin kuluttua. Jos sivu ei avaudu, tätä verkkoa ei voi käyttää.</translation>
@@ -3215,6 +3217,7 @@
 <translation id="5678862612529498267">Korosta tekstin syöttökohde</translation>
 <translation id="5678955352098267522">Lukea tietojasi sivustossa <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Yleiskatsaustilan suodatus tekstillä</translation>
+<translation id="5683818630978268777">Kokeellinen näppäimistön lukituksen käyttöliittymä</translation>
 <translation id="5684661240348539843">Laitteen tunnus</translation>
 <translation id="569068482611873351">Tuo...</translation>
 <translation id="56907980372820799">Yhdistä tiedot</translation>
@@ -3682,7 +3685,6 @@
 <translation id="6420676428473580225">Lisää työpöydälle</translation>
 <translation id="6422329785618833949">Kuva käännettiin</translation>
 <translation id="642282551015776456">Tätä nimeä ei voi käyttää tiedoston tai kansion nimenä.</translation>
-<translation id="642322423610046417">Voit poistaa tarpeettomat laajennukset (hiiren oikealla painikkeella avautuvan) kontekstivalikon kautta.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Käytetäänkö Adobe Readeria PDF-asiakirjojen oletuskatseluohjelmana?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3753,6 +3755,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Kokeellinen näppäimistön lukitseva koko näytön tila, joka suljetaan painamalla Esc-näppäintä pitkään</translation>
 <translation id="6527303717912515753">Jaa</translation>
 <translation id="6528546217685656218">Tämän käyttöoikeusvarmenteen yksityinen avain puuttuu tai on virheellinen.</translation>
 <translation id="653019979737152879">Synkronoidaan kohdetta <ph name="FILE_NAME" />…</translation>
@@ -3932,6 +3935,7 @@
 <translation id="6825883775269213504">venäjä</translation>
 <translation id="6827236167376090743">Tätä videota näytetään niin kauan, kunnes lehmät tulevat kotiin.</translation>
 <translation id="6828153365543658583">Rajaa kirjautuminen vain seuraaville käyttäjille:</translation>
+<translation id="6828860976882136098">Automaattisten päivitysten käyttöönotto kaikille käyttäjille epäonnistui (suoritusvirhe valmistelun aikana: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="6829250331733125857">Lue ohjeita laitteen <ph name="DEVICE_TYPE" /> käyttöön.</translation>
 <translation id="6829270497922309893">Ilmoittaudu organisaatioosi</translation>
 <translation id="6830590476636787791">Animoidut siirtymät alkuesittelyssä</translation>
@@ -3954,7 +3958,6 @@
 <translation id="6860427144121307915">Avaa välilehdessä</translation>
 <translation id="6862635236584086457">Kaikki tähän kansioon tallennetut tiedostot varmuuskopioidaan verkkoon automaattisesti</translation>
 <translation id="6865313869410766144">Automaattisesti täydennetyt lomaketiedot</translation>
-<translation id="6865319096921627602">Ottaa käyttöön yhdistetyn mediaympäristön Androidilla.</translation>
 <translation id="6867678160199975333">Vaihda profiiliin <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Valittu valintaruutu</translation>
 <translation id="6870130893560916279">Näppäimistö: ukraina</translation>
@@ -4048,6 +4051,7 @@
 <translation id="7006017748900345484">WebRTC H.264 ‑standardin mukainen ohjelmiston videoenkooderi/-dekooderi</translation>
 <translation id="7006634003215061422">Alareuna</translation>
 <translation id="7006844981395428048">Äänitiedosto ($1)</translation>
+<translation id="7008270479623533562">Tämän laajennuksen käynnistäminen edellyttää sivun päivittämistä. Voit käynnistää laajennuksen tällä sivustolla automaattisesti klikkaamalla laajennuksen kuvaketta hiiren kakkospainikkeella.</translation>
 <translation id="7009045250432250765">Automaattinen täyttö yhdellä klikkauksella</translation>
 <translation id="7010160495478792664">Laitteistokiihdytetty videon dekoodaus aina kun mahdollista.</translation>
 <translation id="7010400591230614821">Aggressiivinen välilehtien julkaisustrategia</translation>
@@ -4212,7 +4216,6 @@
 <translation id="7256710573727326513">Avaa välilehdessä</translation>
 <translation id="7257173066616499747">Wi-Fi-verkot</translation>
 <translation id="7257666756905341374">Lukea kopioimiasi ja liittämiäsi tietoja</translation>
-<translation id="7260002739296185724">Käytä AVFoundationia videon kaappaukseen ja videolaitteiden hallintaan OS X -versiota 10.7 uudemmissa käyttöjärjestelmissä. QTKit-sovelluskehystä käytetään muissa tapauksissa.</translation>
 <translation id="7260504762447901703">Peruuta käyttöoikeus</translation>
 <translation id="7262004276116528033">Tätä kirjautumispalvelua ylläpitää <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Ei hiekkalaatikossa toimivien laajennusten käyttöpoikkeukset</translation>
@@ -4250,7 +4253,6 @@
 <translation id="7314278895724341067">Ota käyttöön NTP-offline-sivut</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (nykyinen)</translation>
 <translation id="7321545336522791733">Palvelimeen ei saada yhteyttä.</translation>
-<translation id="7324841169865301118">Tämä merkintä sallii käyttäjän valita välilehden työpöydän jakamista varten.</translation>
 <translation id="7325437708553334317">Suuri kontrasti -laajennus</translation>
 <translation id="7326565110843845436">Kolmen sormen klikkaus kosketuslevyllä</translation>
 <translation id="73289266812733869">Ei-valittu</translation>
@@ -4999,7 +5001,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Kuvaaja:</translation>
 <translation id="8428213095426709021">Asetukset</translation>
-<translation id="8432590265309978927">Hyvin kokeellinen tuki eri sivustoissa olevien iframe-kehysten hahmontamiselle erillisissä prosesseissa.</translation>
 <translation id="8432745813735585631">Näppäimistö: US, Colemak</translation>
 <translation id="8434177709403049435">&amp;Koodaus</translation>
 <translation id="8434480141477525001">NaCl-vianetsintäportti</translation>
@@ -5196,7 +5197,6 @@
 <translation id="8713979477561846077">Ota käyttöön fyysisen näppäimistön automaattinen oikeinkirjoituksen tarkistus yhdysvaltalaiselle näppäimistölle. Ominaisuus voi tarjota ehdotuksia kirjoittaessasi fyysisellä näppäimistöllä.</translation>
 <translation id="871476437400413057">Googlen tallentamia salasanoja</translation>
 <translation id="8714838604780058252">Taustagrafiikka</translation>
-<translation id="8716065142695381595">Ottaa käyttöön yhdistetyn (Androidin ja tietokoneet sisältävän) mediaympäristön Androidilla.</translation>
 <translation id="8722421161699219904">Yhdysvaltain kansainvälinen näppäimistö</translation>
 <translation id="872451400847464257">Muokkaa hakukonetta</translation>
 <translation id="8724859055372736596">Näytä ka&amp;nsiossa</translation>
@@ -5216,6 +5216,7 @@
 <translation id="8737685506611670901">Avata <ph name="PROTOCOL" />-linkit palvelun <ph name="REPLACED_HANDLER_TITLE" /> sijaan.</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Tarkentaa kosketuseleen sijaintia ja kompensoi kosketuksen epätarkkuutta hiireen verrattuna.</translation>
+<translation id="8743712320294854924">Näytä laajennetut syöttöasetukset hyllyssä</translation>
 <translation id="874420130893181774">Perinteinen pinyin-syöttötapa</translation>
 <translation id="8744525654891896746">Valitse avatar tälle valvotulle käyttäjälle</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5285,6 +5286,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Tilanvaihto vaihtonäppäimellä</translation>
 <translation id="8852742364582744935">Seuraavat sovellukset ja laajennukset lisättiin:</translation>
+<translation id="8853611566624224021">Salli ICC-näyttötiedostojen noutaminen Quirks Serveriltä näytön värien kalibrointia varten.</translation>
 <translation id="885381502874625531">Valkovenäläinen näppäimistö</translation>
 <translation id="8856844195561710094">Bluetooth-laitehaun pysäyttäminen epäonnistui.</translation>
 <translation id="885701979325669005">Tallennus</translation>
@@ -5334,7 +5336,6 @@
 <translation id="8925458182817574960">A&amp;setukset</translation>
 <translation id="8926389886865778422">Älä kysy uudestaan</translation>
 <translation id="8926518602592448999">Poista kehittäjätilassa olevat laajennukset käytöstä</translation>
-<translation id="8929454297483336498">Käytä Mac OS X:n AVFoundation-sovellusliittymiä QTKitin sijaan</translation>
 <translation id="8931394284949551895">Uudet laitteet</translation>
 <translation id="8932730422557198035">Käytä Android Midi -sovellusliittymää</translation>
 <translation id="8933960630081805351">Näytä Finderi&amp;ssä</translation>
@@ -5348,6 +5349,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Tulostin havaittiin</translation>
 <translation id="8946359700442089734">Virheenkorjausominaisuudet eivät olleet täysin käytössä tällä <ph name="IDS_SHORT_PRODUCT_NAME" />-laitteella.</translation>
+<translation id="8946784827990177241">Ota WebUSB-tuki käyttöön.</translation>
 <translation id="89515141420106838">Ottaa käyttöön Chrome Web Store Gallery -sovelluksen tulostinajureille. Sovellus etsii Chrome Web Storesta laajennuksia, jotka tukevat tulostamista USB-tulostimella, jolla on tietty USB-tunnus.</translation>
 <translation id="895347679606913382">Käynnistää...</translation>
 <translation id="8954952943849489823">Siirto epäonnistui, odottamaton virhe: $1</translation>
@@ -5491,6 +5493,7 @@
 <translation id="9154194610265714752">Päivitetty</translation>
 <translation id="9154418932169119429">Tämä kuva ei ole käytettävissä offline-tilassa.</translation>
 <translation id="91568222606626347">Luo pikakuvake…</translation>
+<translation id="9157697743260533322">Automaattisten päivitysten käyttöönotto kaikille käyttäjille epäonnistui (käynnistysvirhe valmistelun aikana: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="9158715103698450907">Hups! Todennuksen aikana tapahtui verkkovirhe. Tarkista internetyhteytesi ja yritä uudelleen.</translation>
 <translation id="9159562891634783594">Ota käyttöön rekisteröimättömien pilvitulostimien rekisteröinti tulostuksen esikatselusta.</translation>
 <translation id="9166510596677678112">Lähetä sähköpostia tälle henkilölle</translation>
@@ -5502,7 +5505,6 @@
 <translation id="9170848237812810038">K&amp;umoa</translation>
 <translation id="9170884462774788842">Toinen tietokoneellasi oleva ohjelma lisäsi teeman, joka voi muuttaa Chromen toimintaa.</translation>
 <translation id="9177499212658576372">Olet nyt yhdistettynä <ph name="NETWORK_TYPE" />verkkoon.</translation>
-<translation id="9177556055091995297">Hallinnoi luottokortteja</translation>
 <translation id="917858577839511832">DTLS 1.2 -neuvottelu WebRTC:ssä</translation>
 <translation id="917861274483335838">Hallinnoi laajennuksien estoa…</translation>
 <translation id="9179348476548754105">Kuinka salasanan hallinta käsittelee synkronointitunnusten automaattista täyttöä vain maksutapahtumien reauth-sivuilla.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index f577331a6..59b1b1a 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -159,7 +159,6 @@
     Kakailanganin mong i-set up muli ang iyong profile.<ph name="BR" />
     <ph name="BR" />
     Sa susunod na screen, mangyaring magpadala ng feedback upang tulungan kaming ayusin ang isyu.</translation>
-<translation id="1216954813581739968">I-enable ang tab para sa Pagbabahagi sa Desktop.</translation>
 <translation id="121827551500866099">Ipakita ang lahat ng mga pag-download...</translation>
 <translation id="122082903575839559">Certificate Signature Algorithm</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 na May RSA Encryption</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL na may mga % sa lugar ng query</translation>
 <translation id="1546280085599573572">Binago ng extension na ito ang ipinapakitang page kapag na-click mo ang button ng Home.</translation>
 <translation id="1546795794523394272">Welcome sa Chromebox for meetings!</translation>
+<translation id="1547572086206517271">Kinakailangang i-refresh</translation>
 <translation id="1547964879613821194">Canadian English</translation>
 <translation id="1548132948283577726">Lalabas dito ang mga site na hindi kailanman nagsa-save ng mga password.</translation>
 <translation id="1549045574060481141">Kumpirmahin ang Pag-download</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">I-enable ang lokal na pag-iimbak ng mga page na binisita kamakailan para sa offline na paggamit. Kinakailangang i-enable ang Mga Offline na Page.</translation>
 <translation id="1891668193654680795">Pagkatiwalaan ang certificate na ito para sa pagkilala sa mga gumagawa ng software.</translation>
 <translation id="189210018541388520">Buksan sa buong screen</translation>
+<translation id="1892754076732315533">Isang pinasimpleng karanasan ng bagong user kapag pumapasok sa full screen na tini-trigger ng page o mga state ng mouse pointer lock.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Hindi naging matagumpay ang daloy ng provision ng cloud</translation>
 <translation id="189358972401248634">Iba pang mga wika</translation>
@@ -1325,6 +1326,7 @@
 <translation id="288042212351694283">Ina-access ang iyong mga Universal 2nd Factor device</translation>
 <translation id="2881966438216424900">Huling na-access:</translation>
 <translation id="2882943222317434580">Magre-restart at magre-reset ang <ph name="IDS_SHORT_PRODUCT_NAME" /> sa ilang sandali</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2887525882758501333">PDF na dokumento</translation>
 <translation id="2888807692577297075">Walang mga item na tumutugma sa &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1755,6 +1757,7 @@
 <translation id="3479552764303398839">Hindi ngayon</translation>
 <translation id="3480892288821151001">I-dock ang window sa kaliwa</translation>
 <translation id="3481915276125965083">Hinarang ang mga sumusunod na pop-up sa pahinang ito:</translation>
+<translation id="3482214069979148937">I-hold ang |<ph name="ACCELERATOR" />| upang lumabas sa full screen</translation>
 <translation id="3484869148456018791">Kumuha ng bagong certificate</translation>
 <translation id="3487007233252413104">hindi kilalang function</translation>
 <translation id="348771913750618459">Mga daloy ng pag-sign in na batay sa iframe</translation>
@@ -1849,7 +1852,6 @@
 <translation id="3593965109698325041">Mga Limitasyon sa Pangalan ng Certificate</translation>
 <translation id="3595596368722241419">Puno na ang baterya</translation>
 <translation id="3600456501114769456">Hindi pinagana ng iyong administrator ang access sa mga lokal na file sa iyong device.</translation>
-<translation id="3601395307734599350">Narito ang lahat ng iyong extension</translation>
 <translation id="3603385196401704894">Canadian French</translation>
 <translation id="3603622770190368340">Kunin ang certificate ng network</translation>
 <translation id="3605780360466892872">Bossing</translation>
@@ -2233,7 +2235,6 @@
 <translation id="4151403195736952345">Gamitin ang pangkalahatang default (Tukuyin)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}one{# tab}other{# na tab}}</translation>
 <translation id="4154664944169082762">Mga fingerprint</translation>
-<translation id="4157188838832721931">I-disable ang pag-prompt sa user para sa kanilang password sa OS bago ipakita ang mga password sa pahina ng mga password.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Buksan ang play list</translation>
 <translation id="4159681666905192102">Isa itong account para sa mga bata na pinamamahalaan nina <ph name="CUSTODIAN_EMAIL" /> at <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2277,7 +2278,6 @@
 <translation id="4218259925454408822">Mag-sign in sa isa pang account</translation>
 <translation id="4219614746733932747">Kung naka-enable, gagamitin ng Blink ang mekanismo sa pagzu-zoom nito upang i-scale ang content para sa scale factor ng device.</translation>
 <translation id="4220865787605972627">Payagan ang pag-calibrate sa kulay ng display kung sinusuportahan ng display ang feature.</translation>
-<translation id="4233506668751282421">I-enable ang Pagbabahagi ng Audio Para Sa Desktop</translation>
 <translation id="4235200303672858594">Buong screen</translation>
 <translation id="4235813040357936597">Magdagdag ng Account para kay <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Hindi maipakita sa wikang ito ang <ph name="PRODUCT_NAME" /></translation>
@@ -2285,7 +2285,6 @@
 <translation id="4242577469625748426">Nabigong i-install ang mga setting ng patakaran sa device: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Gustong hindi paganahin ng <ph name="FULLSCREEN_ORIGIN" /> ang cursor ng iyong mouse.</translation>
 <translation id="424546999567421758">Natukoy ang mataas na paggamit ng disk</translation>
-<translation id="4247072926966606568">Kapag naka-on ang flag na ito, hahayaan ng window ng picker para sa pagbabahagi sa desktop ang user na pumili kung gusto ba niyang magbahagi ng audio.</translation>
 <translation id="424726838611654458">Palaging buksan sa Adobe Reader</translation>
 <translation id="4249248555939881673">Naghihintay ng koneksyon sa network...</translation>
 <translation id="4249373718504745892">Na-block ang pahinang ito sa pag-access ng iyong camera at mikropono.</translation>
@@ -2358,7 +2357,6 @@
 <translation id="4358697938732213860">Magdagdag ng isang address</translation>
 <translation id="4359408040881008151">Na-install dahil sa (mga) nakadependeng extension.</translation>
 <translation id="4361190688154226069">Rect-based na pag-target sa mga view</translation>
-<translation id="4363372140743955595">Muling Pagpapatotoo sa Tagapamahala ng Password</translation>
 <translation id="4364444725319685468">Na-download na ang <ph name="FILE_NAME" /></translation>
 <translation id="4364830672918311045">Ipakita ang mga notification</translation>
 <translation id="4365673000813822030">Oops, tumigil sa paggana ang Sync.</translation>
@@ -2415,6 +2413,7 @@
 <translation id="4449935293120761385">Tungkol sa AutoFill</translation>
 <translation id="4449996769074858870">Nagpe-play ng audio ang tab na ito.</translation>
 <translation id="4450974146388585462">I-diagnose</translation>
+<translation id="4452426408005428395">Balewalain</translation>
 <translation id="4454939697743986778">Na-install na ang certificate na ito ng iyong system administrator.</translation>
 <translation id="445923051607553918">Sumali sa network ng Wi-Fi</translation>
 <translation id="4462159676511157176">Custom na mga server ng pangalan</translation>
@@ -2492,7 +2491,6 @@
 <translation id="4594109696316595112">Isahang beses na pag-activate: I-type ang iyong password upang ma-activate ang Smart Lock sa <ph name="DEVICE_TYPE" /> na ito. Gamit ang Smart Lock, ia-unlock ng iyong telepono ang device na ito—nang walang password. Upang baguhin o i-off ang feature na ito, bisitahin ang mga setting ng iyong <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Ang manager (<ph name="CUSTODIAN_NAME" />) lang ang may kakayahang magbago sa mga app at extension.</translation>
 <translation id="4601242977939794209">Pang-convert ng EMF</translation>
-<translation id="4601250583401186741">Ipares sa isang controller</translation>
 <translation id="4602466770786743961">Palaging payagan ang <ph name="HOST" /> na i-access ang iyong camera at mikropono</translation>
 <translation id="4605399136610325267">Hindi konektado ang internet</translation>
 <translation id="4608500690299898628">&amp;Hanapin...</translation>
@@ -2788,6 +2786,7 @@
 <translation id="5039804452771397117">Payagan</translation>
 <translation id="5045550434625856497">Hindi wastong password</translation>
 <translation id="5048179823246820836">Nordic</translation>
+<translation id="5048294425697652159">I-enable ang Quirks Client para sa calibration ng display.</translation>
 <translation id="5053604404986157245">Hindi available ang random na nabuong TPM password. Normal ito pagkatapos ng Powerwash.</translation>
 <translation id="5053803681436838483">Bagong shipping address...</translation>
 <translation id="5055309315264875868">Magpakita ng link sa page ng mga setting ng tagapamahala ng password upang pamahalaan ang iyong mga naka-sync na password online.</translation>
@@ -2885,7 +2884,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Kinakailangang galaw para sa pag-playback ng media</translation>
 <translation id="5189060859917252173">Kumakatawan ang certificate na "<ph name="CERTIFICATE_NAME" />" ng Certification Authority.</translation>
-<translation id="5196117515621749903">I-reload ang nagbabalewalang cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Kumpleto na ang pag-sync.</translation>
@@ -2900,6 +2898,7 @@
 <translation id="521582610500777512">Na-discard ang larawan</translation>
 <translation id="5218183485292899140">Swiss French</translation>
 <translation id="5218766986344577658">Link Disambiguation Popup</translation>
+<translation id="5220992698394817380">I-enable ang pag-opt in sa menu ng IME</translation>
 <translation id="5222676887888702881">Mag-sign out</translation>
 <translation id="5225324770654022472">Ipakita ang shortcut ng mga app</translation>
 <translation id="5227536357203429560">Magdagdag ng pribadong network...</translation>
@@ -2942,6 +2941,7 @@
 <translation id="5271247532544265821">I-toggle ang Simplified/Traditional Chinese mode</translation>
 <translation id="5271549068863921519">I-save ang password</translation>
 <translation id="5273628206174272911">Pang-eksperimentong pag-navigate sa kasaysayan bilang tugon sa horizontal na overscroll.</translation>
+<translation id="5275194674756975076">OK, i-refresh</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> mula sa site na ito</translation>
 <translation id="5275973617553375938">Mga nabawing file mula sa Google Drive</translation>
 <translation id="527605719918376753">I-mute ang tab</translation>
@@ -3015,6 +3015,7 @@
 <translation id="5368720394188453070">Naka-lock ang iyong telepono. I-unlock ito upang makapasok.</translation>
 <translation id="5369927996833026114">Tuklasin ang App Launcher ng Chrome</translation>
 <translation id="5370819323174483825">I-&amp;reload</translation>
+<translation id="5372066618989754822">I-enable ang access sa bagong menu ng IME sa page ng Mga Setting ng Wika.</translation>
 <translation id="5372529912055771682">Hindi sinusuportahan ng bersyong ito ng operating system ang ibinigay na mode ng pagpapatala.  Pakitiyak na pinapatakbo mo ang pinakabagong bersyon at subukang muli.</translation>
 <translation id="5374359983950678924">Palitan ang larawan</translation>
 <translation id="5376169624176189338">I-click upang bumalik, pindutin nang matagal upang makita ang history</translation>
@@ -3200,6 +3201,7 @@
 <translation id="5626134646977739690">Pangalan:</translation>
 <translation id="5627086634964711283">Kinokontrol din nito kung anong pahina ang ipinapakita kapag na-click mo ang button ng Home.</translation>
 <translation id="5627259319513858869">Nagbibigay-daan sa paggamit ng mga pang-eksperimentong tampok ng canvas na binubuo pa.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design sa chrome sa itaas ng browser</translation>
 <translation id="5633060877636360447">Permanente itong magde-delete ng hindi bababa sa <ph name="TOTAL_COUNT" /> (na) item sa device na ito ngunit hindi nito iki-clear ang mga naka-sync na item mula sa iba pang mga device.</translation>
 <translation id="5636996382092289526">Upang gamitin ang <ph name="NETWORK_ID" />, maaaring kailangan mo munang <ph name="LINK_START" />bisitahin ang pahina sa pag-sign in ng network<ph name="LINK_END" />, na awtomatikong bubukas sa loob ng ilang segundo. Kung hindi ito mangyayari, hindi magagamit ang network.</translation>
@@ -3230,6 +3232,7 @@
 <translation id="5678862612529498267">I-highlight ang object gamit ang keyboard focus</translation>
 <translation id="5678955352098267522">Basahin ang iyong data sa <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Pagfi-filter ng text sa Overview Mode</translation>
+<translation id="5683818630978268777">Pang-eksperimentong UI ng keyboard lock.</translation>
 <translation id="5684661240348539843">Identifier ng Asset</translation>
 <translation id="569068482611873351">I-import...</translation>
 <translation id="56907980372820799">I-link ang data</translation>
@@ -3697,7 +3700,6 @@
 <translation id="6420676428473580225">Idagdag sa Desktop</translation>
 <translation id="6422329785618833949">Na-flip ang larawan</translation>
 <translation id="642282551015776456">Hindi maaaring gamitin ang pangalang ito bilang isang pangalan ng file o folder</translation>
-<translation id="642322423610046417">Gamitin ang (pag-right click) menu ng konteksto upang maalis ang mga extension na hindi mo kailangan.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Gamitin ang Adobe Reader bilang iyong default na PDF viewer?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3768,6 +3770,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Isang pang-eksperimentong full screen na may keyboard lock mode kung saan kailangang i-hold ng mga user ang Esc upang lumabas.</translation>
 <translation id="6527303717912515753">Ibahagi</translation>
 <translation id="6528546217685656218">Nawawala o di-wasto ang Pribadong Key para sa Client Certificate na ito.</translation>
 <translation id="653019979737152879">Sini-sync ang <ph name="FILE_NAME" />...</translation>
@@ -3947,6 +3950,7 @@
 <translation id="6825883775269213504">Russian</translation>
 <translation id="6827236167376090743">Magpe-play ang video na ito nang paulit-ulit sa napakahabang panahon.</translation>
 <translation id="6828153365543658583">Higpitan ang pag-sign-in sa mga sumusunod na user:</translation>
+<translation id="6828860976882136098">Hindi na-set up ang mga awtomatikong pag-update para sa lahat ng user (error sa pagpapatupad sa preflight: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Makakuha ng tulong sa iyong <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">I-enroll sa iyong organisasyon</translation>
 <translation id="6830590476636787791">Mga naka-animate na transition sa tutorial para sa unang pagpapatakbo</translation>
@@ -3970,7 +3974,6 @@
 <translation id="6860427144121307915">Buksan sa isang Tab</translation>
 <translation id="6862635236584086457">Lahat ng file na na-save sa folder na ito ay awtomatikong na-back up online</translation>
 <translation id="6865313869410766144">Data ng form ng autofill</translation>
-<translation id="6865319096921627602">Ine-enable ang pinag-isang media pipeline sa Android.</translation>
 <translation id="6867678160199975333">Lumipat sa <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Sinuri na ang check box</translation>
 <translation id="6870130893560916279">Ukrainian na keyboard</translation>
@@ -4066,6 +4069,7 @@
 <translation id="7006017748900345484">WebRTC H.264 software video encoder/decoder</translation>
 <translation id="7006634003215061422">Margin sa ibaba</translation>
 <translation id="7006844981395428048">Audio na $1</translation>
+<translation id="7008270479623533562">Upang mapagana ang extension na ito, kailangan mong i-refresh ang page. Maaari mong awtomatikong paganahin ang extension na iyon sa site na ito sa pamamagitan ng pagra-right-click sa icon ng extension.</translation>
 <translation id="7009045250432250765">Isang click na pag-autofill</translation>
 <translation id="7010160495478792664">Pag-decode ng video na pinabilis ng hardware kapag available.</translation>
 <translation id="7010400591230614821">Agresibong diskarte sa pag-release ng tab</translation>
@@ -4232,7 +4236,6 @@
 <translation id="7256710573727326513">Buksan sa isang tab</translation>
 <translation id="7257173066616499747">Mga Wi-Fi network</translation>
 <translation id="7257666756905341374">Basahin ang data na iyong kinokopya at pine-paste</translation>
-<translation id="7260002739296185724">I-enable ang paggamit ng AV Foundation para sa pag-capture ng video at pagsubaybay sa video device sa OS X &gt;= 10.7. Sa halip ay gagamitin ang QTKit.</translation>
 <translation id="7260504762447901703">Bawiin ang access</translation>
 <translation id="7262004276116528033">Hino-host ng <ph name="SAML_DOMAIN" /> ang serbisyo sa pag-sign in</translation>
 <translation id="7262221505565121">Mga pagbubukod sa access ng hindi naka-sandbox na plugin</translation>
@@ -4270,7 +4273,6 @@
 <translation id="7314278895724341067">I-enable ang mga NTP offline page</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (kasalukuyan)</translation>
 <translation id="7321545336522791733">Hindi makakonekta sa server</translation>
-<translation id="7324841169865301118">Nagbibigay-daan sa user na pumili ng tab para sa pagbabahagi sa desktop.</translation>
 <translation id="7325437708553334317">Extension ng Mataas na Contrast</translation>
 <translation id="7326565110843845436">Pag-click sa touchpad gamit ang tatlong daliri</translation>
 <translation id="73289266812733869">Hindi pinili</translation>
@@ -5023,7 +5025,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Larawan ni</translation>
 <translation id="8428213095426709021">Mga Setting</translation>
-<translation id="8432590265309978927">Lubos na pang-eksperimentong suporta para sa pagre-render ng mga cross-site na iframe sa hiwa-hiwalay na proseso.</translation>
 <translation id="8432745813735585631">US Colemak na keyboard</translation>
 <translation id="8434177709403049435">&amp;Encoding</translation>
 <translation id="8434480141477525001">NaCl Debug Port</translation>
@@ -5221,7 +5222,6 @@
 <translation id="8713979477561846077">I-enable ang autocorrect ng pisikal na keyboard para sa US keyboard, na makapagbibigay ng mga suhestyon habang nagta-type sa pisikal na keyboard.</translation>
 <translation id="871476437400413057">Mga password na naka-save sa Google</translation>
 <translation id="8714838604780058252">Graphics sa background</translation>
-<translation id="8716065142695381595">Ine-enable ang pinag-isang (Android at desktop) media pipeline sa Android.</translation>
 <translation id="8722421161699219904">US International keyboard</translation>
 <translation id="872451400847464257">I-edit ang Search Engine</translation>
 <translation id="8724859055372736596">&amp;Ipakita sa Folder</translation>
@@ -5241,6 +5241,7 @@
 <translation id="8737685506611670901">Buksan ang mga link ng <ph name="PROTOCOL" /> sa halip na ang <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Pinuhin ang posisyon ng isang pagpindot dahil mas mababa ang resolution ng mga pagpindot kumpara sa isang mouse.</translation>
+<translation id="8743712320294854924">Ipakita ang pinalawak na mga opsyon sa pag-input sa shelf.</translation>
 <translation id="874420130893181774">Tradisyonal na Pinyin na paraan ng pag-input</translation>
 <translation id="8744525654891896746">Pumili ng isang avatar para sa pinangangasiwaang user na ito.</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5310,6 +5311,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Switch ng mode ng pindutang shift</translation>
 <translation id="8852742364582744935">Idinagdag ang mga sumusunod na apps at extension:</translation>
+<translation id="8853611566624224021">I-enable ang pag-retrieve ng mga display file ng icc mula sa Quirks Server para sa calibration ng kulay ng display.</translation>
 <translation id="885381502874625531">Belarusian na keyboard</translation>
 <translation id="8856844195561710094">Nabigong pahintuin ang paghanap ng Bluetooth na device.</translation>
 <translation id="885701979325669005">Storage</translation>
@@ -5360,7 +5362,6 @@
 <translation id="8925458182817574960">&amp;Mga Setting</translation>
 <translation id="8926389886865778422">Huwag nang itanong ulit</translation>
 <translation id="8926518602592448999">I-disable ang Mga Extension sa Developer Mode</translation>
-<translation id="8929454297483336498">Gamitin ang mga Mac OS X AVFoundation API, sa halip na ang QTKit</translation>
 <translation id="8931394284949551895">Mga bagong device</translation>
 <translation id="8932730422557198035">Gamitin ang Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Show in Finder</translation>
@@ -5374,6 +5375,7 @@
 <translation id="894360074127026135">International Step-Up ng Netscape</translation>
 <translation id="8944779739948852228">Na-detect ang printer</translation>
 <translation id="8946359700442089734">Ang mga feature para sa pagde-debug ay hindi ganap na na-enable sa <ph name="IDS_SHORT_PRODUCT_NAME" /> device na ito.</translation>
+<translation id="8946784827990177241">I-enable ang suporta sa WebUSB.</translation>
 <translation id="89515141420106838">Ine-enable ang Chrome Web Store Gallery app para sa mga driver ng printer. Naghahanap ang app sa Chrome Web Store ng mga extension na sumusuporta sa pagpi-print sa isang USB printer na mayroong partikular na USB ID.</translation>
 <translation id="895347679606913382">Nagsisimula...</translation>
 <translation id="8954952943849489823">Nabigo ang paglipat, hindi inaasahang error: $1</translation>
@@ -5518,6 +5520,7 @@
 <translation id="9154194610265714752">Na-update</translation>
 <translation id="9154418932169119429">Hindi available offline ang larawang ito.</translation>
 <translation id="91568222606626347">Gumawa ng Shortcut...</translation>
+<translation id="9157697743260533322">Hindi na-set up ang mga awtomatikong pag-update para sa lahat ng user (error sa paglunsad ng preflight: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Naku! Nagkaroon ng problema sa pakikipag-ugnay sa network sa panahon ng pagpapatotoo. Mangyaring suriin ang iyong koneksyon sa network at subukang muli.</translation>
 <translation id="9159562891634783594">I-enable ang pagpaparehistro ng mga hindi naka-rehistrong cloud printer mula sa preview ng pag-print.</translation>
 <translation id="9166510596677678112">I-email ang taong ito</translation>
@@ -5529,7 +5532,6 @@
 <translation id="9170848237812810038">&amp;I-undo</translation>
 <translation id="9170884462774788842">Ang isa pang program sa iyong computer ay nagdagdag ng tema na maaaring magpabago sa paraan ng paggana ng Chrome.</translation>
 <translation id="9177499212658576372">Kasalukuyan kang nakakonekta sa <ph name="NETWORK_TYPE" /> network.</translation>
-<translation id="9177556055091995297">Pamahalaan ang mga credit card</translation>
 <translation id="917858577839511832">Pag-negotiate sa DTLS 1.2 para sa WebRTC</translation>
 <translation id="917861274483335838">Pamahalaan ang pag-block ng plugin...</translation>
 <translation id="9179348476548754105">Paraan kung paano pinapangasiwaan ng tagapamahala ng password ang pag-autofill sa kredensyal sa pag-sync para lang sa mga pang-transaksyong reauth page.</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 402ba14..435552f 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -159,7 +159,6 @@
     Vous devrez configurer votre profil de nouveau.<ph name="BR" />
     <ph name="BR" />
     Veuillez nous envoyer vos commentaires depuis l'écran suivant pour nous aider à résoudre le problème.</translation>
-<translation id="1216954813581739968">Activer l'onglet lors du partage du Bureau.</translation>
 <translation id="121827551500866099">Afficher tous les téléchargements...</translation>
 <translation id="122082903575839559">Algorithme de signature du certificat</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 avec chiffrement RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL avec %s à la place de la requête</translation>
 <translation id="1546280085599573572">Cette extension a modifié la page affichée lorsque vous cliquez sur le bouton "Accueil".</translation>
 <translation id="1546795794523394272">Bienvenue dans Chromebox pour la visioconférence</translation>
+<translation id="1547572086206517271">Actualisation requise</translation>
 <translation id="1547964879613821194">Anglais canadien</translation>
 <translation id="1548132948283577726">Les sites pour lesquels vos mots de passe ne seront jamais enregistrés s'afficheront ici.</translation>
 <translation id="1549045574060481141">Confirmer le téléchargement</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Activer le stockage en local des pages consultées récemment pour une utilisation hors connexion. Les pages hors connexion doivent être activées.</translation>
 <translation id="1891668193654680795">Considérer ce certificat comme fiable pour identifier les développeurs de logiciels.</translation>
 <translation id="189210018541388520">Ouvrir en mode plein écran</translation>
+<translation id="1892754076732315533">Il s'agit d'une nouvelle expérience utilisateur simplifiée, en lien avec le déclenchement du mode plein écran sur une page et le verrouillage de la souris.</translation>
 <translation id="1893046049133338222">ARC : <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Échec de la procédure de gestion des comptes cloud</translation>
 <translation id="189358972401248634">Autres langues</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Accès aux appareils U2F</translation>
 <translation id="2881966438216424900">Dernier accès :</translation>
 <translation id="2882943222317434580">Dans un instant, <ph name="IDS_SHORT_PRODUCT_NAME" /> va redémarrer et être réinitialisé.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Gestionnaire de tâches</translation>
 <translation id="2887525882758501333">Document PDF</translation>
 <translation id="2888807692577297075">Aucun élément ne correspond à votre recherche ("<ph name="SEARCH_STRING" />").</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Pas maintenant</translation>
 <translation id="3480892288821151001">Ancrer la fenêtre à gauche</translation>
 <translation id="3481915276125965083">Les fenêtres pop-up suivantes ont été bloquées sur cette page :</translation>
+<translation id="3482214069979148937">Appuyez sur |<ph name="ACCELERATOR" />| pour quitter le mode plein écran.</translation>
 <translation id="3484869148456018791">Obtenir un nouveau certificat</translation>
 <translation id="3487007233252413104">fonction anonyme</translation>
 <translation id="348771913750618459">Flux de connexion basés sur des cadres iFrame</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Contraintes de nom du certificat</translation>
 <translation id="3595596368722241419">Batterie pleine</translation>
 <translation id="3600456501114769456">Votre administrateur a désactivé l'accès aux fichiers locaux sur votre appareil.</translation>
-<translation id="3601395307734599350">Toutes vos extensions sont affichées ici</translation>
 <translation id="3603385196401704894">Français canadien</translation>
 <translation id="3603622770190368340">Obtenir un certificat réseau</translation>
 <translation id="3605780360466892872">Businessman</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Utiliser la valeur par défaut globale (Détection)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 onglet}one{# onglet}other{# onglets}}</translation>
 <translation id="4154664944169082762">Empreintes</translation>
-<translation id="4157188838832721931">Ne plus demander à l'utilisateur le mot de passe de son OS avant d'afficher les mots de passe sur la page correspondante</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Ouvrir la playlist</translation>
 <translation id="4159681666905192102">Il s'agit d'un compte pour enfants géré par <ph name="CUSTODIAN_EMAIL" /> et <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Se connecter avec un autre compte</translation>
 <translation id="4219614746733932747">Si cette option est activée, Blink utilise son mécanisme de zoom pour adapter le contenu dans le cadre du facteur d'adaptation de l'appareil.</translation>
 <translation id="4220865787605972627">Cette option autorise l'étalonnage de la couleur de l'écran, si ce dernier est compatible avec cette fonctionnalité.</translation>
-<translation id="4233506668751282421">Activer l'audio lors du partage du Bureau</translation>
 <translation id="4235200303672858594">Plein écran</translation>
 <translation id="4235813040357936597">Ajouter un compte pour <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ne peut pas être affiché dans cette langue.</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Échec de l'installation des paramètres des règles sur l'appareil : <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> veut désactiver le curseur de votre souris.</translation>
 <translation id="424546999567421758">Utilisation intensive du disque détectée</translation>
-<translation id="4247072926966606568">Lorsque cet indicateur est activé, la fenêtre de l'outil de sélection du partage du Bureau permet à l'utilisateur de choisir s'il souhaite partager le contenu audio.</translation>
 <translation id="424726838611654458">Toujours ouvrir dans Adobe Reader</translation>
 <translation id="4249248555939881673">Connexion réseau en attente…</translation>
 <translation id="4249373718504745892">L'accès à votre caméra et à votre micro est bloqué pour cette page</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">Ajouter une adresse</translation>
 <translation id="4359408040881008151">Installée, car une ou plusieurs extensions dépendent de celle-ci.</translation>
 <translation id="4361190688154226069">Ciblage basé sur un rectangle</translation>
-<translation id="4363372140743955595">Nouvelle authentification du gestionnaire de mots de passe</translation>
 <translation id="4364444725319685468">"<ph name="FILE_NAME" />" téléchargé</translation>
 <translation id="4364830672918311045">Afficher les notifications</translation>
 <translation id="4365673000813822030">Petit problème… La synchronisation s'est arrêtée.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">À propos de la saisie automatique</translation>
 <translation id="4449996769074858870">Cet onglet lit des fichiers audio.</translation>
 <translation id="4450974146388585462">Analyser</translation>
+<translation id="4452426408005428395">Ignorer</translation>
 <translation id="4454939697743986778">Ce certificat a été installé par votre administrateur système.</translation>
 <translation id="445923051607553918">Se connecter à un réseau Wi-Fi</translation>
 <translation id="4462159676511157176">Serveurs de noms personnalisés</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">Activation unique : saisissez votre mot de passe pour activer Smart Lock sur votre <ph name="DEVICE_TYPE" />. Smart Lock permet à votre téléphone de déverrouiller cet appareil, sans faire usage d'un mot de passe. Pour modifier cette fonctionnalité ou la désactiver, accédez aux paramètres de votre <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Seul l'administrateur (<ph name="CUSTODIAN_NAME" />) est autorisé à modifier les applications et les extensions.</translation>
 <translation id="4601242977939794209">Conversion au format EMF</translation>
-<translation id="4601250583401186741">Associer à un contrôleur</translation>
 <translation id="4602466770786743961">Toujours autoriser <ph name="HOST" /> à accéder à votre caméra et à votre micro</translation>
 <translation id="4605399136610325267">Non connecté à Internet.</translation>
 <translation id="4608500690299898628">&amp;Rechercher...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">Autoriser</translation>
 <translation id="5045550434625856497">Mot de passe incorrect.</translation>
 <translation id="5048179823246820836">Nordique</translation>
+<translation id="5048294425697652159">Activer Quirks Client pour l'étalonnage de l'écran.</translation>
 <translation id="5053604404986157245">Le mot de passe TPM généré de manière aléatoire n'est pas disponible, ce qui est normal après un Powerwash.</translation>
 <translation id="5053803681436838483">Nouvelle adresse de livraison…</translation>
 <translation id="5055309315264875868">Afficher un lien sur la page des paramètres du gestionnaire de mots de passe pour gérer vos mots de passe synchronisés en ligne</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Exiger un geste de l'utilisateur pour lire des éléments multimédias</translation>
 <translation id="5189060859917252173">Le certificat "<ph name="CERTIFICATE_NAME" />" représente une autorité de certification.</translation>
-<translation id="5196117515621749903">Actualiser sans utiliser le cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronisation terminée.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">La photo a été supprimée.</translation>
 <translation id="5218183485292899140">Français suisse</translation>
 <translation id="5218766986344577658">Fenêtre pop-up de sélection des liens</translation>
+<translation id="5220992698394817380">Activer le menu d'acceptation IME</translation>
 <translation id="5222676887888702881">Déconnexion</translation>
 <translation id="5225324770654022472">Afficher le raccourci des applications</translation>
 <translation id="5227536357203429560">Ajouter un réseau privé...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Basculer en mode chinois simplifié/traditionnel</translation>
 <translation id="5271549068863921519">Enregistrer le mot de passe</translation>
 <translation id="5273628206174272911">Fonctionnalité expérimentale de défilement tactile horizontal dans l'historique</translation>
+<translation id="5275194674756975076">OK, actualiser</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> de ce site</translation>
 <translation id="5275973617553375938">Fichiers récupérés sur Google Drive</translation>
 <translation id="527605719918376753">Couper le son de l'onglet</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">Votre téléphone est verrouillé. Déverrouillez-le pour y accéder.</translation>
 <translation id="5369927996833026114">Découvrez le lanceur d'applications Chrome</translation>
 <translation id="5370819323174483825">&amp;Actualiser</translation>
+<translation id="5372066618989754822">Activer l'accès au nouveau menu IME dans la page "Paramètres de langue".</translation>
 <translation id="5372529912055771682">Le mode d'inscription fourni n'est pas compatible avec cette version du système d'exploitation. Veuillez vous assurer que vous utilisez bien la dernière version, puis réessayer.</translation>
 <translation id="5374359983950678924">Modifier l'image</translation>
 <translation id="5376169624176189338">Cliquer pour revenir en arrière, maintenir pour voir l'historique</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Nom :</translation>
 <translation id="5627086634964711283">Elle contrôle également la page qui s'affiche lorsque vous cliquez sur le bouton "Accueil".</translation>
 <translation id="5627259319513858869">Permet d'utiliser des fonctionnalités de canvas expérimentales qui sont toujours en phase de développement.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design dans le chrome supérieur du navigateur</translation>
 <translation id="5633060877636360447">Cette action aura pour effet de supprimer définitivement au moins <ph name="TOTAL_COUNT" /> éléments de cet appareil, mais cela n'effacera pas les éléments synchronisés sur d'autres appareils.</translation>
 <translation id="5636996382092289526">Pour utiliser <ph name="NETWORK_ID" />, vous devez d'abord <ph name="LINK_START" />accéder à la page de connexion du réseau<ph name="LINK_END" />, qui s'ouvrira automatiquement dans quelques secondes. Dans le cas contraire, ce réseau ne pourra pas être utilisé pour la connexion Internet.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Mettre en surbrillance l'objet avec le clavier</translation>
 <translation id="5678955352098267522">Lire vos données sur <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrage textuel en mode aperçu</translation>
+<translation id="5683818630978268777">Interface utilisateur expérimentale pour le verrouillage du clavier.</translation>
 <translation id="5684661240348539843">Identifiant d'élément</translation>
 <translation id="569068482611873351">Importer...</translation>
 <translation id="56907980372820799">Associer les données</translation>
@@ -3693,7 +3696,6 @@
 <translation id="6420676428473580225">Ajouter au bureau</translation>
 <translation id="6422329785618833949">Photo retournée.</translation>
 <translation id="642282551015776456">Ce nom ne peut pas être utilisé comme nom de fichier ni de dossier.</translation>
-<translation id="642322423610046417">Utilisez le menu contextuel (clic droit) pour supprimer les extensions dont vous n'avez pas besoin.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Définir Adobe Reader comme visionneuse de documents PDF par défaut ?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3764,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Mode plein écran expérimental avec verrouillage du clavier. Les utilisateurs doivent appuyer sur Échap pour le quitter.</translation>
 <translation id="6527303717912515753">Partager</translation>
 <translation id="6528546217685656218">La clé privée de ce certificat client est manquante ou incorrecte.</translation>
 <translation id="653019979737152879">Synchronisation de <ph name="FILE_NAME" /> en cours…</translation>
@@ -3943,6 +3946,7 @@
 <translation id="6825883775269213504">Russe</translation>
 <translation id="6827236167376090743">Cette vidéo va être lue en boucle.</translation>
 <translation id="6828153365543658583">Autoriser uniquement les utilisateurs suivants à se connecter :</translation>
+<translation id="6828860976882136098">Échec de la configuration des mises à jour automatiques pour tous les utilisateurs (erreur d'exécution avant la période de diffusion : <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Obtenir de l'aide pour votre <ph name="DEVICE_TYPE" /></translation>
 <translation id="6829270497922309893">Inscrivez-vous à votre organisation</translation>
 <translation id="6830590476636787791">Transitions animées dans le didacticiel de démarrage</translation>
@@ -3965,7 +3969,6 @@
 <translation id="6860427144121307915">Ouvrir dans un onglet</translation>
 <translation id="6862635236584086457">Tous les fichiers enregistrés dans ce dossier sont automatiquement sauvegardés en ligne.</translation>
 <translation id="6865313869410766144">Données de saisie automatique</translation>
-<translation id="6865319096921627602">Active le pipeline unifié pour les médias sur Android.</translation>
 <translation id="6867678160199975333">Passer au profil "<ph name="NEW_PROFILE_NAME" />"</translation>
 <translation id="6869402422344886127">Case cochée</translation>
 <translation id="6870130893560916279">Clavier ukrainien</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">Encodeur/décodeur vidéo logiciel H.264 WebRTC</translation>
 <translation id="7006634003215061422">Marge inférieure</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Pour exécuter cette extension, vous devez actualiser la page. Vous pouvez exécuter l'extension automatiquement sur ce site au moyen d'un clic droit sur l'icône de l'extension.</translation>
 <translation id="7009045250432250765">Saisie automatique à l'aide d'un simple clic</translation>
 <translation id="7010160495478792664">Cette option permet d'effectuer un décodage vidéo avec accélération matérielle, si disponible.</translation>
 <translation id="7010400591230614821">Stratégie de suppression systématique des onglets</translation>
@@ -4224,7 +4228,6 @@
 <translation id="7256710573727326513">Ouvrir dans un onglet</translation>
 <translation id="7257173066616499747">Réseaux Wi-Fi</translation>
 <translation id="7257666756905341374">Accéder aux données que vous copiez et collez</translation>
-<translation id="7260002739296185724">Activez l'utilisation d'AVFoundation pour la capture vidéo et le contrôle d'appareil vidéo sur OS X 10.7 ou version ultérieure. Dans les autres cas, le framework QTKit sera utilisé.</translation>
 <translation id="7260504762447901703">Révoquer l'accès</translation>
 <translation id="7262004276116528033">Ce service de connexion est hébergé par <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Exceptions liées à l'accès d'un plug-in sans système de bac à sable</translation>
@@ -4262,7 +4265,6 @@
 <translation id="7314278895724341067">Activer les pages hors connexion sur la page Nouvel onglet</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (profil actuel)</translation>
 <translation id="7321545336522791733">Serveur inaccessible</translation>
-<translation id="7324841169865301118">Permet à l'utilisateur de sélectionner un onglet pour le partage du Bureau.</translation>
 <translation id="7325437708553334317">Extension Contraste élevé</translation>
 <translation id="7326565110843845436">Clic à trois doigts sur le pavé tactile</translation>
 <translation id="73289266812733869">Désélectionné</translation>
@@ -5013,7 +5015,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Photo de</translation>
 <translation id="8428213095426709021">Paramètres</translation>
-<translation id="8432590265309978927">Fonctionnalité hautement expérimentale de rendu des cadres iFrame inter-sites dans des processus distincts</translation>
 <translation id="8432745813735585631">Clavier Colemak américain</translation>
 <translation id="8434177709403049435">Codag&amp;e</translation>
 <translation id="8434480141477525001">Port de débogage de Native Client</translation>
@@ -5210,7 +5211,6 @@
 <translation id="8713979477561846077">Activez la correction automatique du clavier physique, qui offre des suggestions pendant la saisie, pour le clavier américain.</translation>
 <translation id="871476437400413057">Mots de passe Google enregistrés</translation>
 <translation id="8714838604780058252">Graphiques d'arrière-plan</translation>
-<translation id="8716065142695381595">Active le pipeline unifié (Android et bureau) pour les médias sur Android.</translation>
 <translation id="8722421161699219904">Clavier international américain</translation>
 <translation id="872451400847464257">Modifier le moteur de recherche</translation>
 <translation id="8724859055372736596">&amp;Afficher dans le dossier</translation>
@@ -5230,6 +5230,7 @@
 <translation id="8737685506611670901">Ouvrir les liens "<ph name="PROTOCOL" />" à la place de "<ph name="REPLACED_HANDLER_TITLE" />"</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Cette option permet d'affiner la position des gestes pour compenser le fait qu'ils sont moins précis, par rapport à la souris.</translation>
+<translation id="8743712320294854924">Afficher les options de saisie développées sur l'étagère.</translation>
 <translation id="874420130893181774">Mode de saisie pinyin traditionnel</translation>
 <translation id="8744525654891896746">Sélectionner un avatar pour cet utilisateur supervisé</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5299,6 +5300,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Changement de mode via la touche Maj</translation>
 <translation id="8852742364582744935">Les applications et extensions suivantes ont été ajoutées :</translation>
+<translation id="8853611566624224021">Activer la récupération des fichiers d'affichage icc issus de Quirks Server pour l'étalonnage des couleurs de l'écran.</translation>
 <translation id="885381502874625531">Clavier biélorusse</translation>
 <translation id="8856844195561710094">Impossible d'arrêter la détection des périphériques Bluetooth.</translation>
 <translation id="885701979325669005">Stockage</translation>
@@ -5348,7 +5350,6 @@
 <translation id="8925458182817574960">&amp;Paramètres</translation>
 <translation id="8926389886865778422">Ne plus afficher ce message</translation>
 <translation id="8926518602592448999">Désactiver les extensions exécutées en mode développeur ?</translation>
-<translation id="8929454297483336498">Utilisation des API Mac OS X AVFoundation, au lieu du framework QTKit</translation>
 <translation id="8931394284949551895">Nouveaux périphériques</translation>
 <translation id="8932730422557198035">Utiliser l'API Android Midi</translation>
 <translation id="8933960630081805351">&amp;Afficher dans le Finder</translation>
@@ -5362,6 +5363,7 @@
 <translation id="894360074127026135">Fonction d'optimisation internationale Netscape </translation>
 <translation id="8944779739948852228">Imprimante détectée</translation>
 <translation id="8946359700442089734">Les fonctionnalités de débogage n'ont pas été complètement activées sur cet appareil <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Activer la compatibilité WebUSB.</translation>
 <translation id="89515141420106838">Active l'application Chrome Web Store Gallery pour les pilotes d'imprimante. Celle-ci recherche sur le Chrome Web Store des extensions permettant d'imprimer sur une imprimante USB avec un identifiant USB spécifique.</translation>
 <translation id="895347679606913382">Démarrage...</translation>
 <translation id="8954952943849489823">Échec du transfert en raison d'une erreur inattendue : $1.</translation>
@@ -5506,6 +5508,7 @@
 <translation id="9154194610265714752">Mis à jour</translation>
 <translation id="9154418932169119429">Cette image n'est pas disponible hors connexion.</translation>
 <translation id="91568222606626347">Créer un raccourci…</translation>
+<translation id="9157697743260533322">Échec de la configuration des mises à jour automatiques pour tous les utilisateurs (erreur de lancement avant la période de diffusion : <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Petit problème… Une erreur de communication réseau s'est produite lors de l'authentification. Veuillez vérifier votre connexion réseau, puis réessayer.</translation>
 <translation id="9159562891634783594">Activer l'enregistrement des imprimantes à partir de l'aperçu avant impression</translation>
 <translation id="9166510596677678112">Envoyer un e-mail à cette personne</translation>
@@ -5517,7 +5520,6 @@
 <translation id="9170848237812810038">Ann&amp;uler</translation>
 <translation id="9170884462774788842">Un autre programme sur votre ordinateur a ajouté un thème qui risque de modifier le fonctionnement de Google Chrome.</translation>
 <translation id="9177499212658576372">Vous êtes actuellement connecté au réseau <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gérer les cartes de paiement</translation>
 <translation id="917858577839511832">Négociation avec DTLS 1.2 pour WebRTC</translation>
 <translation id="917861274483335838">Gérer le blocage des plug-ins…</translation>
 <translation id="9179348476548754105">Méthode de saisie automatique utilisée par le gestionnaire de mots de passe dans le cas des identifiants de synchronisation sur les pages reauth relatives aux transactions uniquement</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index e24fee77..3d7e74d 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -159,7 +159,6 @@
     તમારે ફરીથી તમારી પ્રોફાઇલ સેટ કરવાની જરૂર પડશે.<ph name="BR" />
     <ph name="BR" />
     આગલી સ્ક્રીન પર, આ સમસ્યાને ઠીક કરવામાં અમારી સહાય કરવા માટે કૃપા કરીને પ્રતિસાદ મોકલો.</translation>
-<translation id="1216954813581739968">ડેસ્કટૉપ શેર માટે ટૅબ સક્ષમ કરો.</translation>
 <translation id="121827551500866099">બધા ડાઉનલોડ્સ બતાવો...</translation>
 <translation id="122082903575839559">પ્રમાણપત્ર હસ્તાક્ષર અલ્ગોરિધમ</translation>
 <translation id="1221024147024329929">RSA એન્ક્રિપ્શનવાળું PKCS #1 MD2 </translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">ક્વેરીના બદલે %s વાળું URL</translation>
 <translation id="1546280085599573572">જ્યારે તમે હોમ બટન ક્લિક કરો છો ત્યારે જે પૃષ્ઠ દર્શાવવામાં આવે છે તે આ એક્સટેન્શને બદલ્યું છે.</translation>
 <translation id="1546795794523394272">મીટિંગ સાથે Chromebox પર સ્વાગત છે!</translation>
+<translation id="1547572086206517271">તાજું કરવું આવશ્યક</translation>
 <translation id="1547964879613821194">કેનેડિયન અંગ્રેજી</translation>
 <translation id="1548132948283577726">ક્યારેય પાસવર્ડ્સ ન સાચવતી સાઇટ્સ અહીં દેખાશે.</translation>
 <translation id="1549045574060481141">ડાઉનલોડની પુષ્ટિ કરો</translation>
@@ -614,6 +614,7 @@
 <translation id="1891196807951270080">તાજેતરમાં મુલાકાત લીધેલ પૃષ્ઠોને ઑફલાઇન ઉપયોગ માટે સ્થાનિક રીતે સંગ્રહ કરવાનું સક્ષમ કરો. ઑફલાઇન પૃષ્ઠો સક્ષમ કરેલા હોવા જરૂરી છે.</translation>
 <translation id="1891668193654680795">સૉફ્ટવેર માર્કર્સને ઓળખવા માટે આ પ્રમાણપત્ર પર વિશ્વાસ કરો.</translation>
 <translation id="189210018541388520">પૂર્ણ સ્ક્રીન ખોલો</translation>
+<translation id="1892754076732315533">પૃષ્ઠ-ટ્રિગર કરેલ પૂર્ણ સ્ક્રીન અથવા માઉસ પોઇન્ટર લૉક સ્થિતિમાં પ્રવેશતી વખતે એક સરળ બનાવેલ નવો વપરાશકર્તા અનુભવ.</translation>
 <translation id="1893046049133338222">આર્ક: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">મેઘ જોગવાઈ પ્રવાહ નિષ્ફળ થયો</translation>
 <translation id="189358972401248634">અન્ય ભાષાઓ</translation>
@@ -1319,6 +1320,7 @@
 <translation id="288042212351694283">તમારા યુનિવર્સલ 2જા ફેક્ટરના ઉપકરણોની ઍક્સેસ</translation>
 <translation id="2881966438216424900">છેલ્લે ઍક્સેસ કર્યું:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> પુનઃપ્રારંભ થશે અને પળવારમાં ફરીથી સેટ થશે</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">કાર્ય વ્યવસ્થાપક</translation>
 <translation id="2887525882758501333">PDF દસ્તાવેજ</translation>
 <translation id="2888807692577297075">કોઈ આઇટમ્સ &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; થી મેળ ખાતી નથી</translation>
@@ -1749,6 +1751,7 @@
 <translation id="3479552764303398839">હમણાં નહીં</translation>
 <translation id="3480892288821151001">વિન્ડો ડાબે ડૉક કરો</translation>
 <translation id="3481915276125965083">આ પૃષ્ઠ પર નીચેના પૉપ-અપ્સ અવરોધિત હતા:</translation>
+<translation id="3482214069979148937">પૂર્ણ સ્ક્રીનથી બહાર નીકળવા માટે |<ph name="ACCELERATOR" />| ને દબાવી રાખો</translation>
 <translation id="3484869148456018791">નવું પ્રમાણપત્ર મેળવો</translation>
 <translation id="3487007233252413104">અનામી કાર્ય</translation>
 <translation id="348771913750618459">iframe-આધારિત સાઇન-ઇન પ્રવાહો</translation>
@@ -1843,7 +1846,6 @@
 <translation id="3593965109698325041">પ્રમાણપત્રના નામની મર્યાદાઓ</translation>
 <translation id="3595596368722241419">બૅટરી પૂર્ણ ચાર્જ</translation>
 <translation id="3600456501114769456">તમારા ઉપકરણ પર સ્થાનિક ફાઇલોની ઍક્સેસ તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરેલી છે.</translation>
-<translation id="3601395307734599350">તમારા બધા વિસ્તારો અહીં છે</translation>
 <translation id="3603385196401704894">કેનેડિયન ફ્રેંચ</translation>
 <translation id="3603622770190368340">નેટવર્ક પ્રમાણપત્ર મેળવો</translation>
 <translation id="3605780360466892872">બટનડાઉન</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (શોધો)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ટેબ}one{# ટેબ્સ}other{# ટેબ્સ}}</translation>
 <translation id="4154664944169082762">ફિંગરપ્રીંટ્સ</translation>
-<translation id="4157188838832721931">પાસવર્ડ્સ પૃષ્ઠ પર પાસવર્ડ્સ બતાવતાં પહેલાં વપરાશકર્તાને તેમના OS પાસવર્ડ માટે સંકેત આપવાનું અક્ષમ કરો.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">પ્લે લિસ્ટ ખોલો</translation>
 <translation id="4159681666905192102">આ <ph name="CUSTODIAN_EMAIL" /> અને <ph name="SECOND_CUSTODIAN_EMAIL" /> દ્વારા સંચાલિત બાળકોનું એકાઉન્ટ છે.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">બીજા એકાઉન્ટમાં સાઇન ઇન કરો</translation>
 <translation id="4219614746733932747">જો સક્ષમ કરેલ હોય, તો ઉપકરણ માપ પરિબળ માટે સામગ્રીને માપવા Blink તેની ઝૂમિંગ કાર્યપદ્ધતિનો ઉપયોગ કરે છે.</translation>
 <translation id="4220865787605972627">ડિસ્પ્લે આ સુવિધાને સમર્થન કરતી હોય તો ડિસ્પ્લેના રંગના માપાંકનને મંજૂરી આપે છે.</translation>
-<translation id="4233506668751282421">ડેસ્કટૉપ શેર માટે ઑડિઓ સક્ષમ કરો</translation>
 <translation id="4235200303672858594">સમગ્ર સ્ક્રીન</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> માટે એકાઉન્ટ ઉમેરો</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" />ને આ ભાષામાં પ્રદર્શિત કરી શકાતું નથી.</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">આ ઉપકરણ પર નીતિ સેટિંગ્સ ઇન્સ્ટોલ કરવામાં નિષ્ફળ ગયું: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> તમારા માઉસ કર્સરને અક્ષમ કરવા માગે છે.</translation>
 <translation id="424546999567421758">ઉચ્ચ ડિસ્ક વપરાશ મળ્યો</translation>
-<translation id="4247072926966606568">આ ફ્લેગ ચાલુ હોવા પર, ડેસ્કટૉપ શેર પીકર વિંડો વપરાશકર્તાને ઑડિઓ શેર કરવું કે નહીં તે પસંદ કરવા દેશે.</translation>
 <translation id="424726838611654458">હંમેશાં Adobe Reader માં ખોલો</translation>
 <translation id="4249248555939881673">નેટવર્ક કનેક્શનની રાહ જોઈ રહ્યાં છે...</translation>
 <translation id="4249373718504745892">આ પૃષ્ઠને તમારા કૅમેરા અને માઇક્રોફોનને ઍક્સેસ કરવાથી અવરોધિત કરવામાં આવ્યું છે.</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">એક સરનામું ઉમેરો</translation>
 <translation id="4359408040881008151">નિર્ભર એક્સ્ટેન્શન(એક્સ્ટેન્શન્સ)ને લીધે ઇન્સ્ટોલ કર્યું.</translation>
 <translation id="4361190688154226069">દૃશ્યોમાં લંબ-આધારિત લક્ષ્યીકરણ</translation>
-<translation id="4363372140743955595">પાસવર્ડ વ્યવસ્થાપક પુનઃપ્રમાણીકરણ</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ડાઉનલોડ કર્યું</translation>
 <translation id="4364830672918311045">સૂચનાઓ પ્રદર્શિત કરો</translation>
 <translation id="4365673000813822030">ઊફ્ફ, સમન્વયન કામ કરતું બંધ થઈ ગયું છે. </translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">સ્વતઃભરો વિશે</translation>
 <translation id="4449996769074858870">આ ટેબ ઑડિઓ ચલાવી રહ્યું છે.</translation>
 <translation id="4450974146388585462">તપાસ કરો</translation>
+<translation id="4452426408005428395">કોઇ વાંધો નહીં</translation>
 <translation id="4454939697743986778">આ પ્રમાણપત્ર તમારા સિસ્ટમ વ્યવસ્થાપક દ્વારા ઇન્સ્ટોલ કરવામાં આવ્યું છે.</translation>
 <translation id="445923051607553918">Wi-Fi નેટવર્કથી જોડાઓ</translation>
 <translation id="4462159676511157176">કસ્ટમ નામ સર્વર્સ</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">એક-વખતનું સક્રિયકરણ: આ <ph name="DEVICE_TYPE" /> પર Smart Lock સક્રિય કરવા માટે તમારો પાસવર્ડ લખો. Smart Lock સાથે, તમારો ફોન આ ઉપકરણને—પાસવર્ડ વગર અનલૉક કરશે. આ સુવિધા બદલવા અથવા બંધ કરવા, તમારા <ph name="DEVICE_TYPE" /> ની સેટિંગ્સની મુલાકાત લો.</translation>
 <translation id="4595560905247879544">ઍપ્લિકેશન્સ અને એક્સટેન્શન્સને માત્ર સંચાલક (<ph name="CUSTODIAN_NAME" />) દ્વારા જ સંશોધિત કરી શકાય છે.</translation>
 <translation id="4601242977939794209">EMF કન્વર્ટર</translation>
-<translation id="4601250583401186741">નિયંત્રક સાથે જોડી કરો</translation>
 <translation id="4602466770786743961">તમારા કૅમેરા અને માઇક્રોફોનને ઍક્સેસ કરવા માટે હંમેશાં <ph name="HOST" /> ને મંજૂરી આપો</translation>
 <translation id="4605399136610325267">ઇન્ટરનેટ કનેક્ટ નથી</translation>
 <translation id="4608500690299898628">&amp;શોધો...</translation>
@@ -2780,6 +2778,7 @@
 <translation id="5039804452771397117">મંજૂરી આપો</translation>
 <translation id="5045550434625856497">ખોટો પાસવર્ડ</translation>
 <translation id="5048179823246820836">નોર્ડિક</translation>
+<translation id="5048294425697652159">પ્રદર્શન કૅલિબ્રેશન માટે Quirks ક્લાઇન્ટને સક્ષમ કરો.</translation>
 <translation id="5053604404986157245">રેન્ડમલી બનાવેલ TPM પાસવર્ડ ઉપલબ્ધ નથી. Powerwash પછી આ સામાન્ય હોય છે.</translation>
 <translation id="5053803681436838483">નવું શિપિંગ સરનામું...</translation>
 <translation id="5055309315264875868">તમારા સમન્વયિત પાસવર્ડ્સને ઓનલાઇન સંચાલિત કરવા માટે પાસવર્ડ સંચાલક સેટિંગ્સમાં એક લિંક દર્શાવો.</translation>
@@ -2875,7 +2874,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">મીડિયા પ્લેબેક માટે હાવભાવ આવશ્યકતાઓ</translation>
 <translation id="5189060859917252173">પ્રમાણપત્ર "<ph name="CERTIFICATE_NAME" />" એ પ્રમાણન અધિકારીનું પ્રતિનિધિત્વ કરે છે.</translation>
-<translation id="5196117515621749903">કેશને અવગણીને ફરીથી લોડ કરો</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">ઇન્ટરનેટ</translation>
 <translation id="5197680270886368025">સમન્વયન પૂર્ણ થયું.</translation>
@@ -2890,6 +2888,7 @@
 <translation id="521582610500777512">ફોટો નિકાળવામાં આવ્યો હતો</translation>
 <translation id="5218183485292899140">સ્વિસ ફ્રેંચ</translation>
 <translation id="5218766986344577658">લિંક વિભાવના પૉપઅપ</translation>
+<translation id="5220992698394817380">IME પસંદ કરો મેનૂને સક્ષમ કરો</translation>
 <translation id="5222676887888702881">સાઇન આઉટ</translation>
 <translation id="5225324770654022472">એપ્લિકેશનો શોર્ટકટ બતાવો</translation>
 <translation id="5227536357203429560">ખાનગી નેટવર્ક ઉમેરો...</translation>
@@ -2932,6 +2931,7 @@
 <translation id="5271247532544265821">સરળીકૃત/પરંપરાગત ચાઇનીઝ મોડને ટૉગલ કરો</translation>
 <translation id="5271549068863921519">પાસવર્ડ સાચવો</translation>
 <translation id="5273628206174272911">આડા ઑવરસ્ક્રોલના જવાબમાં પ્રાયોગિક ઇતિહાસ નેવિગેશન.</translation>
+<translation id="5275194674756975076">ઑકે, તાજું કરો</translation>
 <translation id="5275795814002959418">આ સાઇટ પરથી <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google ડ્રાઇવમાંથી પુનર્પ્રાપ્ત ફાઇલો</translation>
 <translation id="527605719918376753">ટૅબ મ્યૂટ કરો</translation>
@@ -3005,6 +3005,7 @@
 <translation id="5368720394188453070">તમારો ફોન લૉક કરેલો છે. દાખલ કરવા માટે તેને અનલૉક કરો.</translation>
 <translation id="5369927996833026114">Chrome એપ્લિકેશન લોન્ચર શોધો</translation>
 <translation id="5370819323174483825">&amp;ફરીથી લોડ કરો</translation>
+<translation id="5372066618989754822">ભાષા સેટિંગ્સ પૃષ્ઠમાં નવા IME મેનૂની ઍક્સેસને સક્ષમ કરો.</translation>
 <translation id="5372529912055771682">પૂરો પાડેલો નોંધણી મોડ ઑપરેટિંગ સિસ્ટમનાં આ સંસ્કરણ દ્વારા સપોર્ટેડ નથી. કૃપા કરીને ખાતરી કરો કે તમે નવીનતમ સંસ્કરણ ચલાવી રહ્યાં છો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="5374359983950678924">ચિત્ર બદલો</translation>
 <translation id="5376169624176189338">પાછળ જવા માટે ક્લિક કરો, ઇતિહાસ જોવા માટે હોલ્ડ કરો</translation>
@@ -3191,6 +3192,7 @@
 <translation id="5626134646977739690">નામ:</translation>
 <translation id="5627086634964711283">જ્યારે તમે હોમ બટન ક્લિક કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation>
 <translation id="5627259319513858869">પ્રાયોગિક કેનવાસ સુવિધાઓનો ઉપયોગ સક્ષમ કરે છે કે જેમાં હજી વિકાસકાર્ય ચાલુ છે.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">બ્રાઉઝરના ટોચનાં Chrome માં સામગ્રી ડિઝાઇન</translation>
 <translation id="5633060877636360447">આ ઓછામાં ઓછી <ph name="TOTAL_COUNT" /> આઇટમ્સને આ ઉપકરણમાંથી સ્થાયી રૂપે કાઢી નાખશે પરંતુ અન્ય ઉપકરણોમાંથી સમન્વયિત થયેલી આઇટમ્સને સાફ કરશે નહિ.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> નો ઉપયોગ કરવા માટે તમારે પહેલા <ph name="LINK_START" />નેટવર્કના સાઇન-ઇન પૃષ્ઠની મુલાકાત લેવી<ph name="LINK_END" /> જરૂરી છે, જે થોડીવારમાં આપમેળે ખુલશે. જો આવું ન થાય, તો નેટવર્કનો ઉપયોગ કરી શકાતો નથી.</translation>
@@ -3221,6 +3223,7 @@
 <translation id="5678862612529498267">કીબોર્ડ ફોકસ વડે ઑબ્જેક્ટને હાઇલાઇટ કરો</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> પર તમારો ડેટા વાંચી શકે છે</translation>
 <translation id="5680928275846978395">વિહંગાવલોકન મોડમાં ટેક્સ્ટ ફિલ્ટરિંગ</translation>
+<translation id="5683818630978268777">પ્રાયોગિક કીબોર્ડ લૉક UI.</translation>
 <translation id="5684661240348539843">સંપત્તિ ઓળખકર્તા</translation>
 <translation id="569068482611873351">આયાત કરો...</translation>
 <translation id="56907980372820799">ડેટાને લિંક કરો</translation>
@@ -3686,7 +3689,6 @@
 <translation id="6420676428473580225">ડેસ્કટૉપ પર ઉમેરો</translation>
 <translation id="6422329785618833949">ફોટો ફ્લિપ કર્યો</translation>
 <translation id="642282551015776456">આ નામનો ઉપયોગ ફોલ્ડર નામની કોઈ ફાઇલ તરીકે થઈ શકશે નહીં</translation>
-<translation id="642322423610046417">તમારે જરૂર ન હોય તેવા એકસટેન્શન્સ દૂર કરવા માટે સંદર્ભ (જમણી-ક્લિક) મેનૂનો ઉપયોગ કરો.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">તમારા ડિફૉલ્ટ PDF દર્શક તરીકે Adobe Reader નો ઉપયોગ કરીએ?</translation>
 <translation id="6425092077175753609">સામગ્રી</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">કીબોર્ડ લૉક મોડ સાથે પ્રાયોગિક પૂર્ણ સ્ક્રીન માટે આવશ્યક છે કે વપરાશકર્તા બહાર નીકળવા Esc દબાવી રાખે.</translation>
 <translation id="6527303717912515753">શેર કરો</translation>
 <translation id="6528546217685656218">આ ક્લાઇન્ટ પ્રમાણપત્ર માટેની ખાનગી કી ખૂટે છે અથવા અમાન્ય છે.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> સમન્વયિત કરી રહ્યું છે...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">રશિયન</translation>
 <translation id="6827236167376090743">આ વિડિઓ સમીસાંજ સુધી ચાલુ રહેશે.</translation>
 <translation id="6828153365543658583">નીચેના વપરાશકર્તાઓ માટે સાઇન-ઇન નિયંત્રિત કરો:</translation>
+<translation id="6828860976882136098">તમામ વપરાશકર્તાઓ માટે સ્વચલિત અપડેટ્સને સેટ કરવામાં નિષ્ફળ થયાં (પ્રીફ્લાઇટ અમલીકરણની ભૂલ: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">તમારા <ph name="DEVICE_TYPE" /> સાથે સહાય મેળવો.</translation>
 <translation id="6829270497922309893">તમારા સંગઠનમાં નોંધણી કરો</translation>
 <translation id="6830590476636787791">પ્રથમવાર-શરૂ કરેલ ટ્યૂટૉરિઅલમાં એનિમેટ કરેલ સંક્રમણો</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">એક ટેબમાં ખોલો</translation>
 <translation id="6862635236584086457">આ ફોલ્ડરમાં સાચવેલી તમામ ફાઇલોનો આપમેળે ઑનલાઇન બૅકઅપ લેવાય છે</translation>
 <translation id="6865313869410766144">સ્વતઃભરણ ફોર્મ ડેટા</translation>
-<translation id="6865319096921627602">Android પર એકીકૃત મીડિયા પાઇપલાઇનને સક્ષમ કરે છે.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> પર સ્વિચ કરો</translation>
 <translation id="6869402422344886127">ચેક કરેલું ચેક બૉક્સ</translation>
 <translation id="6870130893560916279">યુક્રેનિયન કીબોર્ડ</translation>
@@ -4055,6 +4058,7 @@
 <translation id="7006017748900345484">WebRTC H.264 સોફ્ટવેર વિડિઓ એન્કોડર/ડિકોડર</translation>
 <translation id="7006634003215061422">નીચેનો હાસિયો</translation>
 <translation id="7006844981395428048">$1 ઓડિયો</translation>
+<translation id="7008270479623533562">આ એક્સ્ટેન્શનને ચલાવવા માટે, તમારે પૃષ્ઠને તાજું કરવું પડશે. તમે એક્સ્ટેન્શન આઇકન પર રાઇટ-ક્લિક કરીને આ સાઇટ પર આ એક્સ્ટેન્શનને આપમેળે ચલાવી શકો છો.</translation>
 <translation id="7009045250432250765">એકલ-ક્લિક સ્વતઃભરણ</translation>
 <translation id="7010160495478792664">જ્યાં ઉપલબ્ધ હોય ત્યારે હાર્ડવેર-એક્સિલરેટેડ વિડિઓ ડીકોડ</translation>
 <translation id="7010400591230614821">પ્રબળ ટેબ રીલિઝ વ્યૂહરચના</translation>
@@ -4219,7 +4223,6 @@
 <translation id="7256710573727326513">એક ટેબમાં ખોલો</translation>
 <translation id="7257173066616499747">Wi-Fi નેટવર્ક્સ</translation>
 <translation id="7257666756905341374">તમે કૉપિ અને પેસ્ટ કરો એ ડેટાને વાંચો</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 પર વિડિઓ કેપ્ચર અને વિડિઓ ઉપકરણ નિરીક્ષણ માટે AVFoundation ઉપયોગને સક્ષમ કરો. અન્યથા QTKit નો ઉપયોગ કરવામાં આવશે.</translation>
 <translation id="7260504762447901703">ઍક્સેસ રદબાતલ કરો</translation>
 <translation id="7262004276116528033">આ સાઇન-ઇન સેવા <ph name="SAML_DOMAIN" /> દ્વારા હોસ્ટ થયેલી છે.</translation>
 <translation id="7262221505565121">અનસેન્ડબૉક્સ કરેલાં પ્લગિન ઍક્સેસના અપવાદો</translation>
@@ -4257,7 +4260,6 @@
 <translation id="7314278895724341067">NTP ઑફલાઇન પૃષ્ઠો સક્ષમ કરો</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (ચાલુ)</translation>
 <translation id="7321545336522791733">સર્વર પહોંચની બહાર છે</translation>
-<translation id="7324841169865301118">ડેસ્કટૉપ શેર માટે એક ટૅબ પસંદ કરવા વપરાશકર્તાને સક્ષમ કરે છે.</translation>
 <translation id="7325437708553334317">હાઇ કોન્ટ્રાસ્ટ એક્સ્ટેંશન</translation>
 <translation id="7326565110843845436">ટચપેડ થ્રી-ફિંગર ક્લિક</translation>
 <translation id="73289266812733869">પસંદ ન કરેલું</translation>
@@ -5005,7 +5007,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">આમના દ્વારા ફોટો</translation>
 <translation id="8428213095426709021">સેટિંગ્સ</translation>
-<translation id="8432590265309978927">અલગ પ્રક્રિયાઓમાં ક્રોસ-સાઇટ iframes રેન્ડર કરવા માટે ઉચ્ચ પ્રયોગાત્મક સમર્થન.</translation>
 <translation id="8432745813735585631">યુએસ કોલમેક કીબોર્ડ</translation>
 <translation id="8434177709403049435">&amp;એન્કોંડિંગ</translation>
 <translation id="8434480141477525001">NaCl ડિબગ પોર્ટ</translation>
@@ -5202,7 +5203,6 @@
 <translation id="8713979477561846077">US કીબોર્ડ માટે ભૌતિક કીબોર્ડ સ્વતઃસુધારો સક્ષમ કરો, જે ભૌતિક કીબોર્ડ પર ટાઇપ કરતાની સાથે જ સૂચનો પ્રદાન કરી શકે છે.</translation>
 <translation id="871476437400413057">Google સાચવેલ પાસવર્ડ્સ</translation>
 <translation id="8714838604780058252">પૃષ્ઠભૂમિ ગ્રાફિક્સ</translation>
-<translation id="8716065142695381595">Android પર એકીકૃત (Android અને ડેસ્કટૉપ) મીડિયા પાઇપલાઇનને સક્ષમ કરે છે.</translation>
 <translation id="8722421161699219904">યુએસ આંતરરાષ્ટ્રીય કીબોર્ડ</translation>
 <translation id="872451400847464257">શોધ એન્જિન સંપાદિત કરો</translation>
 <translation id="8724859055372736596">ફોલ્ડરમાં બતાવો</translation>
@@ -5222,6 +5222,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> ને બદલે <ph name="PROTOCOL" /> લિંક્સ ખોલો</translation>
 <translation id="8737709691285775803">શિલ</translation>
 <translation id="8741881454555234096">માઉસની તુલનામાં ખરાબ રિઝોલ્યુશન ધરાવતાં ટચને સરભર કરવા માટે ટચ હાવભાવની સ્થિતિને સુધારો.</translation>
+<translation id="8743712320294854924">શેલ્ફમાં વિસ્તૃત ઇનપુટ વિકલ્પો બતાવો.</translation>
 <translation id="874420130893181774">પરંપરાગત પિનયિન ઇનપુટ પદ્ધતિ</translation>
 <translation id="8744525654891896746">આ નિરીક્ષિત વપરાશકર્તા માટે એક અવતાર પસંદ કરો</translation>
 <translation id="8744641000906923997">રોમાજી</translation>
@@ -5291,6 +5292,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">શિફ્ટ કી મોડ સ્વિચ</translation>
 <translation id="8852742364582744935">નીચેની એપ્લિકેશંસ અને એક્સટેંશંસ ઉમેરેલા હતાં:</translation>
+<translation id="8853611566624224021">પ્રદર્શન રંગ કૅલિબ્રેશન માટે Quirks સર્વરથી icc પ્રદર્શન ફાઇલોની પુનઃપ્રાપ્તિને સક્ષમ કરો.</translation>
 <translation id="885381502874625531">બેલારુસિયન કીબોર્ડ</translation>
 <translation id="8856844195561710094">Bluetooth ડિવાઇસ શોધ રોકવામાં નિષ્ફળ થયું.</translation>
 <translation id="885701979325669005">સ્ટોરેજ</translation>
@@ -5340,7 +5342,6 @@
 <translation id="8925458182817574960">&amp;સેટિંગ્સ</translation>
 <translation id="8926389886865778422">ફરિથી પુછશો નહીં</translation>
 <translation id="8926518602592448999">વિકાસકર્તા મોડ એક્સ્ટેન્શન્સ અક્ષમ કરો</translation>
-<translation id="8929454297483336498">QTKit ને બદલે Mac OS X AVFoundation API નો ઉપયોગ કરો</translation>
 <translation id="8931394284949551895">નવા ઉપકરણો</translation>
 <translation id="8932730422557198035">Android Midi API નો ઉપયોગ કરો</translation>
 <translation id="8933960630081805351">ફાઇન્ડર માં &amp;બતાવો</translation>
@@ -5354,6 +5355,7 @@
 <translation id="894360074127026135">નેટસ્કેપ ઇન્ટરનેશનલ સ્ટેપ-અપ</translation>
 <translation id="8944779739948852228">પ્રિન્ટર મળ્યું</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="895347679606913382">પ્રારંભ કરે છે...</translation>
 <translation id="8954952943849489823">ખસેડવું નિષ્ફળ થયું, અનપેક્ષિત ભૂલ: $1</translation>
@@ -5498,6 +5500,7 @@
 <translation id="9154194610265714752">અપડેટેડ</translation>
 <translation id="9154418932169119429">આ છબી ઑફલાઇન ઉપલબ્ધ નથી.</translation>
 <translation id="91568222606626347">શૉર્ટકટ બનાવો...</translation>
+<translation id="9157697743260533322">તમામ વપરાશકર્તાઓ માટે સ્વચલિત અપડેટ્સને સેટ કરવામાં નિષ્ફળ થયાં (પ્રીફ્લાઇટ લોંચની ભૂલ: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">અરે! નેટવર્ક સંચાર સમસ્યા પ્રમાણીકરણ દરમિયાન આવી છે. કૃપા કરીને તમારું નેટવર્ક કનેક્શન તપાસો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="9159562891634783594">છાપ પૂર્વાવલોકનથી બિનનોંધાયેલા મેઘ પ્રિન્ટર્સને નોંધવાનું સક્ષમ કરો.</translation>
 <translation id="9166510596677678112">આ વ્યક્તિને ઇમેઇલ કરો</translation>
@@ -5509,7 +5512,6 @@
 <translation id="9170848237812810038">&amp;પૂર્વવત્ કરો</translation>
 <translation id="9170884462774788842">તમારા કમ્પ્યુટર પરના બીજા પ્રોગ્રામે એક થીમ ઉમેરી જે Chrome કાર્ય કરે છે તે રીતને બદલી શકે છે.</translation>
 <translation id="9177499212658576372">તમે હાલમાં <ph name="NETWORK_TYPE" /> નેટવર્કથી કનેક્ટ કરેલું છે.</translation>
-<translation id="9177556055091995297">ક્રેડિટ કાર્ડ્સનું સંચાલન કરો</translation>
 <translation id="917858577839511832">WebRTC માટે DTLS 1.2 સાથે વહેવાર</translation>
 <translation id="917861274483335838">પ્લગિનને અવરોધિત કરવું સંચાલિત કરો...</translation>
 <translation id="9179348476548754105">માત્ર ટ્રાન્ઝેક્શનલ પુનઃપ્રમાણન પૃષ્ઠો માટે સમન્વયન ઓળખપત્ર માટે સ્વતઃભરણને પાસવર્ડ સંચાલક કેવી રીતે હેન્ડલ કરે છે.</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 774630e..8de418e 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -159,7 +159,6 @@
     आपको अपनी प्रोफ़ाइल फिर से सेट करनी होगी.<ph name="BR" />
     <ph name="BR" />
     अगली स्क्रीन पर, समस्या को ठीक करने में सहायता के लिए कृपया फ़ीडबैक भेजें.</translation>
-<translation id="1216954813581739968">डेस्कटॉप साझा के लिए टैब सक्षम करें.</translation>
 <translation id="121827551500866099">सभी डाउनलोड दिखाएं...</translation>
 <translation id="122082903575839559">प्रमाणपत्र हस्ताक्षर कलन विधि</translation>
 <translation id="1221024147024329929">RSA सुरक्षित तरीका के साथ PKCS #1 MD2</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">क्वेरी के स्थान पर %s वाला URL</translation>
 <translation id="1546280085599573572">इस एक्सटेंशन ने यह बदल दिया है कि जब आप होम बटन क्लिक करते हैं तब कौन सा पृष्ठ दिखाया जाए.</translation>
 <translation id="1546795794523394272">मीटिंग के लिए Chromebox में स्‍वागत है!</translation>
+<translation id="1547572086206517271">रीफ्रेश करने की आवश्यकता है</translation>
 <translation id="1547964879613821194">कनाडाई अंग्रेज़ी</translation>
 <translation id="1548132948283577726">वे साइटें जो कभी पासवर्ड नहीं सहेजती हैं, यहां दिखाई देंगी.</translation>
 <translation id="1549045574060481141">डाउनलोड की दुबारा पूछें</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">हाल ही में देखे गए पृष्ठों को ऑफ़लाइन उपयोग के लिए स्थानीय रूप से संग्रहीत करना सक्षम करता है. ऑफ़लाइन पृष्ठ को सक्षम किया जाना आवश्यक है.</translation>
 <translation id="1891668193654680795">सॉफ़्टवेयर निर्माताओं की पहचान करने के लिए इस प्रमाणपत्र पर विश्वास करें</translation>
 <translation id="189210018541388520">पूर्ण स्‍क्रीन खोलें</translation>
+<translation id="1892754076732315533">पृष्ठ के द्वारा ट्रिगर की गई पूर्ण स्क्रीन या माउस सूचक लॉक स्थितियों में प्रवेश करते समय एक सरलीकृत नया उपयोगकर्ता अनुभव.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">क्लाउड प्रावधान प्रवाह विफल</translation>
 <translation id="189358972401248634">अन्य भाषाएं</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">अपने यूनीवर्सल सेकंड फ़ैक्टर डिवाइस एक्सेस करें</translation>
 <translation id="2881966438216424900">अंतिम बार पहुंच प्राप्त करने की तिथि:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> पुन: प्रारंभ होगा और जल्‍दी ही रीेसेट हो जाएगा</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">कार्य प्रबंधक</translation>
 <translation id="2887525882758501333">PDF दस्‍तावेज़</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; से किसी आइटम का मिलान नहीं होता</translation>
@@ -1597,7 +1599,7 @@
 <translation id="3277710850168074473">मीडिया तत्वों को चलाने के लिए उपयोगकर्ता हावभाव की आवश्यकता. इसे अक्षम करने से स्वत: चलाएं काम करने लगेगा.</translation>
 <translation id="3280237271814976245">इस &amp;रूप में सहेजें...</translation>
 <translation id="3280431534455935878">तैयार कर रहा है</translation>
-<translation id="3284674070818187654">खोज और Google सेवाओं को वैयक्तिकृत करने के लिए Google आपके ब्राउज़िंग इतिहास का उपयोग कर सकता है. आप इसे myaccount.google.com पर नियंत्रित कर सकते हैं.</translation>
+<translation id="3284674070818187654">खोज और अन्य Google सेवाओं को वैयक्तिकृत करने के लिए Google आपके ब्राउज़िंग इतिहास का उपयोग कर सकता है. आप इसे myaccount.google.com पर नियंत्रित कर सकते हैं.</translation>
 <translation id="3285322247471302225">नया &amp;टैब</translation>
 <translation id="3288047731229977326">डेवलपर मोड में चलने वाले एक्सटेंशन आपके कंप्यूटर को नुकसान पहुंचा सकते हैं. यदि आप कोई डेवलपर नहीं हैं, तो सुरक्षित रहने के लिए आपको डेवलपर मोड मे चलने वाले इन एक्सटेंशन को अक्षम करना चाहिए.</translation>
 <translation id="3289566588497100676">आसान प्रतीक इनपुट</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">अभी नहीं</translation>
 <translation id="3480892288821151001">विंडो को बाईं ओर डॉक करें</translation>
 <translation id="3481915276125965083">इस पृष्ठ पर निम्न पॉप-अप अवरोधित कर दिए गए थे:</translation>
+<translation id="3482214069979148937">पूर्ण स्क्रीन से बाहर निकलने के लिए |<ph name="ACCELERATOR" />| को दबाएं</translation>
 <translation id="3484869148456018791">नया प्रमाणपत्र प्राप्त करें</translation>
 <translation id="3487007233252413104">अनाम फ़ंक्शन</translation>
 <translation id="348771913750618459">iframe-आधारित प्रवेश प्रवाह</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">प्रमाणपत्र नाम बाध्यताएं</translation>
 <translation id="3595596368722241419">बैटरी पूर्ण</translation>
 <translation id="3600456501114769456">आपके डिवाइस की स्थानीय फ़ाइलों की एक्सेस आपके व्यवस्थापक द्वारा अक्षम कर दी गई है.</translation>
-<translation id="3601395307734599350">आपके सभी एक्सटेंशन यहां हैं</translation>
 <translation id="3603385196401704894">कनाडाई फ़्रेंच</translation>
 <translation id="3603622770190368340">नेटवर्क प्रमाणपत्र प्राप्त करें</translation>
 <translation id="3605780360466892872">बटनडाउन</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">वैश्‍विक डिफ़ॉल्‍ट का उपयोग करें (पता करें)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 टैब}one{# टैब}other{# टैब}}</translation>
 <translation id="4154664944169082762">फ़िंगरप्रिंट</translation>
-<translation id="4157188838832721931">पासवर्ड पृष्ठ पर पासवर्ड दिखाने से पहले उपयोगकर्ता को उनके OS पासवर्ड का संकेत देना अक्षम करें.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">प्‍ले लिस्‍ट खोलें</translation>
 <translation id="4159681666905192102">यह बच्‍चों के लिए बनाया गया खाता है जिसे <ph name="CUSTODIAN_EMAIL" /> और <ph name="SECOND_CUSTODIAN_EMAIL" /> द्वारा प्रबंधित किया जाता है.</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">अन्य खाते में प्रवेश करें</translation>
 <translation id="4219614746733932747">यदि सक्षम किया गया हो, तो Blink अपने ज़ूमिंग तंत्र का उपयोग करता है ताकि डिवाइस माप कारक की सामग्री मापी जा सके.</translation>
 <translation id="4220865787605972627">यदि स्क्रीन सुविधा का समर्थन करती है तो स्क्रीन के रंग अंशांकन की अनुमति दें.</translation>
-<translation id="4233506668751282421">डेस्कटॉप साझा के लिए ऑडियो सक्षम करें</translation>
 <translation id="4235200303672858594">संपूर्ण स्क्रीन</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> के लिए खाता जोड़ें</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> को इस भाषा में प्रदर्शित नहीं किया जा सकता</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">डिवाइस पर नीति सेटिंग इंस्टॉल करने में विफल रहा: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> आपका माउस कर्सर अक्षम करना चाहता है.</translation>
 <translation id="424546999567421758">अधिक डिस्क उपयोग का पता चला</translation>
-<translation id="4247072926966606568">इस फ़्लैग के चालू होने पर, डेस्कटॉप साझा पिकर विंडो उपयोगकर्ता को यह चुनने देती है कि ऑडियो साझा करें या नहीं.</translation>
 <translation id="424726838611654458">हमेशा Adobe Reader में खोलें</translation>
 <translation id="4249248555939881673">नेटवर्क कनेक्शन के लिए प्रतीक्षारत...</translation>
 <translation id="4249373718504745892">इस पृष्ठ को आपके कैमरे और माइक्रोफ़ोन को एक्सेस करने से अवरोधित कर दिया गया है.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">कोई पता जोड़ें</translation>
 <translation id="4359408040881008151">निर्भर एक्सटेंशन के कारण इंस्टॉल किया गया.</translation>
 <translation id="4361190688154226069">दृश्यों में रेक्ट-आधारित लक्ष्यीकरण</translation>
-<translation id="4363372140743955595">पासवर्ड प्रबंधक पुन: प्रमाणीकरण</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> डाउनलोड किया गया</translation>
 <translation id="4364830672918311045">प्रदर्शन नोटिफिकेशन</translation>
 <translation id="4365673000813822030">ओह, समन्‍वयन ने कार्य करना बंद कर दिया.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">स्‍वत: भरण के बारे में</translation>
 <translation id="4449996769074858870">यह टैब ऑडियो चला रहा है.</translation>
 <translation id="4450974146388585462">निदान करें</translation>
+<translation id="4452426408005428395">कोई बात नहीं</translation>
 <translation id="4454939697743986778">आपके सिस्टम व्यवस्थापक द्वारा प्रमाणपत्र इंस्टॉल कर दिया गया है.</translation>
 <translation id="445923051607553918">वाई-फ़ाई  नेटवर्क से जुड़ें</translation>
 <translation id="4462159676511157176">कस्टम नाम सर्वर</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">एक बार का सक्रियण: इस <ph name="DEVICE_TYPE" /> पर Smart Lock सक्रिय करने के लिए अपना पासवर्ड लिखें. Smart Lock के साथ, आपका फ़ोन पासवर्ड के बिना ही इस डिवाइस को अनलॉक कर लेगा. इस सुविधा को बदलने या बंद करने के लिए, अपने <ph name="DEVICE_TYPE" /> की सेटिंग पर जाएं.</translation>
 <translation id="4595560905247879544">ऐप्स और एक्सटेंशन केवल प्रबंधक (<ph name="CUSTODIAN_NAME" />) के द्वारा बदले जा सकते हैं.</translation>
 <translation id="4601242977939794209">EMF कन्‍वर्टर</translation>
-<translation id="4601250583401186741">नियंत्रक के साथ युग्‍मित करें</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> को अपना कैमरा और माइक्रोफ़ोन हमेशा एक्सेस करने दें</translation>
 <translation id="4605399136610325267">इंटरनेट कनेक्‍ट नहीं है</translation>
 <translation id="4608500690299898628">&amp;ढूंढें...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">अनुमति दें</translation>
 <translation id="5045550434625856497">गलत पासवर्ड</translation>
 <translation id="5048179823246820836">नोर्डिक</translation>
+<translation id="5048294425697652159">प्रदर्शन कैलिब्रेशन के लिए Quirks Client को सक्षम करें.</translation>
 <translation id="5053604404986157245">यादृच्छिक रूप से जेनरेट किया गया TPM पासवर्ड उपलब्ध नहीं है. Powerwash के बाद ऐसा होना सामान्य बात है.</translation>
 <translation id="5053803681436838483">नया शिपिंग पता...</translation>
 <translation id="5055309315264875868">अपने समन्वयित पासवर्ड ऑनलाइन प्रबंधित करने के लिए पासवर्ड प्रबंधक सेटिंग पृष्ठ में एक लिंक दिखाएं.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">मीडिया प्लेबैक के लिए हावभाव आवश्यकता</translation>
 <translation id="5189060859917252173">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" एक प्रमाणन प्राधिकरण का प्रतिनिधित्व करता है.</translation>
-<translation id="5196117515621749903">संचय पर ध्यान दिए बिना पुन: लोड करें</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">इंटरनेट</translation>
 <translation id="5197680270886368025">समन्वयन पूर्ण.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">फ़ोटो को छोड़ दिया गया था</translation>
 <translation id="5218183485292899140">स्विस फ़्रेंच</translation>
 <translation id="5218766986344577658">लिंक स्‍पष्‍ट करने वाला पॉपअप</translation>
+<translation id="5220992698394817380">ऑप्ट-इन IME मेनू को सक्षम करें</translation>
 <translation id="5222676887888702881">प्रस्थान करें</translation>
 <translation id="5225324770654022472">ऐप्स  शॉर्टकट दिखाएं</translation>
 <translation id="5227536357203429560">निजी नेटवर्क जोड़ें...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">सरलीकृत/पारंपरिक चीनी मोड टॉगल करें</translation>
 <translation id="5271549068863921519">पासवर्ड सहेजें</translation>
 <translation id="5273628206174272911">क्षैतिज ओवरस्क्रॉल के उत्तर में प्रयोगात्मक इतिहास मार्गदर्शक.</translation>
+<translation id="5275194674756975076">ठीक, रीफ्रेश करें</translation>
 <translation id="5275795814002959418">इस साइट से <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google डिस्क से पुनर्प्राप्त की गई फ़ाइलें</translation>
 <translation id="527605719918376753">टैब म्‍यूट करना</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">आपका फ़ोन लॉक हो गया है. प्रवेश करने के लिए उसे अनलॉक करें.</translation>
 <translation id="5369927996833026114">Chrome ऐप्स  लॉन्चर खोजें</translation>
 <translation id="5370819323174483825">&amp;पुन: लोड करें</translation>
+<translation id="5372066618989754822">भाषा सेटिंग पृष्ठ में नए IME मेनू के लिए एक्सेस सक्षम करें.</translation>
 <translation id="5372529912055771682">आपूर्ति किया गया नामांकन मोड, ऑपरेटिंग सिस्‍टम के इस वर्शन द्वारा समर्थित नहीं है. कृपया सुनिश्चित करें कि आप नवीनतम वर्शन चला रहे हैं और पुन: प्रयास करें.</translation>
 <translation id="5374359983950678924">चित्र बदलें</translation>
 <translation id="5376169624176189338">वापस जाने के लिए क्लिक करें, इतिहास देखने के लिए दबाए रखें</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">नाम:</translation>
 <translation id="5627086634964711283">इससे यह भी नियंत्रित होता है कि जब आप होम बटन क्लिक करते हैं तब कौन सा पृष्‍ठ दिखाया जाए.</translation>
 <translation id="5627259319513858869">ऐसी प्रयोगात्मक कैनवास सुविधाओं का उपयोग करना सक्षम करता है जो अभी भी विकास के चरण में हैं.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ब्राउज़र के प्रमुख chrome में मटीरियल डिज़ाइन</translation>
 <translation id="5633060877636360447">इससे इस डिवाइस से कम से कम <ph name="TOTAL_COUNT" /> आइटम स्थायी रूप से हट जाएंगे लेकिन अन्य डिवाइस से समन्वयित आइटम साफ़ नहीं किए जाएंगे.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> का उपयोग करने के लिए आपको सबसे पहले <ph name="LINK_START" />नेटवर्क के साइन-इन पृष्ठ पर जाना<ph name="LINK_END" /> होगा, जो कुछ ही सेकंड में स्वचालित रूप से खुल जाएगा. यदि ऐसा नहीं होता, तो नेटवर्क का उपयोग नहीं किया जा सकेगा.</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">कीबोर्ड फ़ोकस से ऑब्जेक्ट हाइलाइट करें</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> पर अपना डेटा पढ़ें</translation>
 <translation id="5680928275846978395">अवलोकन मोड में लेख फ़िल्टरिंग</translation>
+<translation id="5683818630978268777">प्रयोगात्मक कीबोर्ड लॉक UI.</translation>
 <translation id="5684661240348539843">एसेट पहचानकर्ता</translation>
 <translation id="569068482611873351">आयात करें...</translation>
 <translation id="56907980372820799">डेटा लिंक करें</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">डेस्‍कटॉप पर जोड़ें</translation>
 <translation id="6422329785618833949">फ़ोटो फ़्लिप किया गया</translation>
 <translation id="642282551015776456">यह नाम कि‍सी फ़ाइल या फ़ोल्‍डर के लि‍ए उपयोग नहीं कि‍या जा सकता</translation>
-<translation id="642322423610046417">जिन एक्सटेंशन की आपको आवश्यकता नहीं है, उन्हें निकालने के लिए प्रसंग (राइट-क्लिक) मेनू का उपयोग करें.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader को आपके डिफ़ॉल्ट व्यूअर के रूप में उपयोग करें?</translation>
 <translation id="6425092077175753609">मटीरियल</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">कीबोर्ड लॉक मोड के साथ प्रयोगात्मक पूर्ण स्क्रीन जिसमें से बाहर निकलने के लिए उपयोगकर्ताओं को Esc दबाना होगा.</translation>
 <translation id="6527303717912515753">साझा करें</translation>
 <translation id="6528546217685656218">इस क्‍लाइंट प्रमाणपत्र की निजी कुंजी अनुपलब्‍ध या अमान्‍य है.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> समन्वयित किया जा रहा है...</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">रूसी</translation>
 <translation id="6827236167376090743">यह वीडियो शाम होने तक चलता रहेगा.</translation>
 <translation id="6828153365543658583">निम्‍नलिखित उपयोगर्ताओं के लिए साइन-इन प्रतिबंधित करें:</translation>
+<translation id="6828860976882136098">सभी उपयोगकर्ताओं के लिए स्वचालित अपडेट सेट करने में विफल (प्रीफ़्लाइट निष्पादन त्रुटि: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">अपने <ph name="DEVICE_TYPE" /> के साथ सहायता प्राप्त करें.</translation>
 <translation id="6829270497922309893">अपने संगठन में नामांकित करें</translation>
 <translation id="6830590476636787791">फ़र्स्ट-रन ट्यूटोरियल में ऐनिमेट होने वाले संक्रमण</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">टैब में खोलें</translation>
 <translation id="6862635236584086457">इस फ़ोल्डर में सहेजी गई सभी फ़ाइलों का अपने आप ऑनलाइन बैकअप लिया जाता है</translation>
 <translation id="6865313869410766144">स्‍वत: भरण फ़ॉर्म डेटा</translation>
-<translation id="6865319096921627602">Android पर एकीकृत मीडिया पाइपलाइन सक्षम करता है.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> पर स्विच करें</translation>
 <translation id="6869402422344886127">चयनित चेक बॉक्‍स</translation>
 <translation id="6870130893560916279">यूक्रेनियाई कीबोर्ड</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">WebRTC H.264 सॉफ़्टवेयर वीडियो एन्कोडर/डीकोडर</translation>
 <translation id="7006634003215061422">निचला हाशिया</translation>
 <translation id="7006844981395428048">$1 ऑडियो</translation>
+<translation id="7008270479623533562">इस एक्सटेंशन को चलाने के लिए, आपको पृष्ठ को रीफ्रेश करना होगा. आप एक्सटेंशन आइकन पर राइट-क्लिक करके इस साइट पर एक्सटेंशन को अपने आप चला सकते हैं.</translation>
 <translation id="7009045250432250765">एकल-क्लिक स्वतः-भरण</translation>
 <translation id="7010160495478792664">उपलब्ध होने पर, हार्डवेयर-त्वरित वीडियो डीकोड.</translation>
 <translation id="7010400591230614821">टैब रिलीज़ के लिए सख्त रणनीति</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">टैब में खोलें</translation>
 <translation id="7257173066616499747">वाई-फ़ाई नेटवर्क</translation>
 <translation id="7257666756905341374">प्रतिलिपि बनाया और चिपकाया जाने वाला डेटा पढ़ें</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 पर वीडियो कैप्चर करने और वीडियो डिवाइस को मॉनिटर करने के लिए AVFoundation के उपयोग को सक्षम करें. अन्यथा QTKit का उपयोग किया जाएगा.</translation>
 <translation id="7260504762447901703">एक्सेस निरस्त करें</translation>
 <translation id="7262004276116528033">यह प्रवेश सेवा <ph name="SAML_DOMAIN" /> द्वारा होस्‍ट की गई है</translation>
 <translation id="7262221505565121">सैंडबॉक्स नहीं किए गए प्लग इन एेक्सेस अपवाद</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">NTP ऑफ़लाइन पृष्ठों को सक्षम करें</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (वर्तमान)</translation>
 <translation id="7321545336522791733">सर्वर पहुंच योग्य नहीं है</translation>
-<translation id="7324841169865301118">डेस्कटॉप साझा के लिए उपयोगकर्ता को टैब चुनने के लिए सक्षम बनाता है.</translation>
 <translation id="7325437708553334317">उच्च कंट्रास्ट एक्सटेंशन</translation>
 <translation id="7326565110843845436">टचपैड तीन-अंगुली-क्लिक</translation>
 <translation id="73289266812733869">अचयनित</translation>
@@ -5014,7 +5016,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">इनके द्वारा फ़ोटो</translation>
 <translation id="8428213095426709021">सेटिंग्स</translation>
-<translation id="8432590265309978927">क्रॉस-साइट iframes को अलग-अलग प्रक्रियाओं में रेंडर करने के लिए उच्‍च प्रयोगात्‍मक सहायता.</translation>
 <translation id="8432745813735585631">यूएस कोलमैक कीबोर्ड</translation>
 <translation id="8434177709403049435">&amp;एन्कोडिंग</translation>
 <translation id="8434480141477525001">NaCl डीबग पोर्ट</translation>
@@ -5211,7 +5212,6 @@
 <translation id="8713979477561846077">यूएस कीबोर्ड के लिए भौतिक कीबोर्ड स्‍वत: सुधार सक्षम करें, जिससे भौतिक कीबोर्ड पर लिखते समय सुझाव प्रदान किए जा सकते हैं.</translation>
 <translation id="871476437400413057">Google द्वारा सहेजे गए पासवर्ड</translation>
 <translation id="8714838604780058252">पृष्‍ठभूमि ग्राफ़िक</translation>
-<translation id="8716065142695381595">Android पर एकीकृत (Android और डेस्कटॉप) मीडिया पाइपलाइन सक्षम करता है.</translation>
 <translation id="8722421161699219904">यूएस अंतर्राष्‍ट्रीय कीबोर्ड</translation>
 <translation id="872451400847464257">खोज इंजन संपादित करें</translation>
 <translation id="8724859055372736596">खोजकर्ता में &amp;दिखाएं</translation>
@@ -5231,6 +5231,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> के बजाय <ph name="PROTOCOL" /> लिंक खोलें</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">माउस की तुलना में कमज़ोर रिज़ॉल्यूशन वाले स्पर्शों की पूर्ति करने के लिए हावभाव की स्थिति को परिष्कृत करें.</translation>
+<translation id="8743712320294854924">शेल्फ़ में विस्तृत इनपुट विकल्प दिखाएं.</translation>
 <translation id="874420130893181774">पारंपरिक पिनयिन इनपुट पद्धति</translation>
 <translation id="8744525654891896746">इस पर्यवेक्षित उपयोगकर्ता के लिए कोई अवतार चुनें</translation>
 <translation id="8744641000906923997">रोमाजी</translation>
@@ -5300,6 +5301,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift कुंजी मोड स्विच</translation>
 <translation id="8852742364582744935">निम्‍न ऐप्स  और एक्‍सटेंशन जोड़े गए थे:</translation>
+<translation id="8853611566624224021">प्रदर्शन रंग कैलिब्रेशन के लिए Quirks Server से icc प्रदर्शन फ़ाइलों की पुनर्प्राप्ति को सक्षम करें.</translation>
 <translation id="885381502874625531">बेलारूसियन कीबोर्ड</translation>
 <translation id="8856844195561710094">ब्लूटूथ डिवाइस अन्‍वेषण बंद करने में विफल.</translation>
 <translation id="885701979325669005">मेमोरी</translation>
@@ -5349,7 +5351,6 @@
 <translation id="8925458182817574960">&amp;सेटिंग</translation>
 <translation id="8926389886865778422">दोबारा न पूछें</translation>
 <translation id="8926518602592448999">डेवलपर मोड एक्सटेंशन अक्षम करना</translation>
-<translation id="8929454297483336498">QTKit के बजाय Mac OS X AVFoundation API का उपयोग</translation>
 <translation id="8931394284949551895">नए डिवाइस</translation>
 <translation id="8932730422557198035">Android Midi API का उपयोग करें</translation>
 <translation id="8933960630081805351">खोजकर्ता में &amp;दिखाएं</translation>
@@ -5363,6 +5364,7 @@
 <translation id="894360074127026135">Netscape अंतर्राष्ट्रीय स्टेप-अप</translation>
 <translation id="8944779739948852228">प्रिंटर का पता चला</translation>
 <translation id="8946359700442089734">डीबग करने वाली सुविधाएं इस <ph name="IDS_SHORT_PRODUCT_NAME" /> डिवाइस पर पूरी तरह सक्षम नहीं की गई थीं.</translation>
+<translation id="8946784827990177241">WebUSB समर्थन सक्षम करें.</translation>
 <translation id="89515141420106838">Chrome वेब स्टोर गैलरी ऐप को प्रिंटर ड्राइवर के लिए सक्षम करता है. ऐप, ऐसे एक्‍सटेंशन के लिए Chrome वेब स्टोर में खोज करता है जो विशिष्ट USB आईडी वाले USB प्रिंटर से प्रिंट करने का समर्थन करते हैं.</translation>
 <translation id="895347679606913382">प्रारंभ कर रहा है...</translation>
 <translation id="8954952943849489823">ले जाना विफल रहा, अप्रत्याशित त्रुटि: $1</translation>
@@ -5506,6 +5508,7 @@
 <translation id="9154194610265714752">अपडेट किया गया</translation>
 <translation id="9154418932169119429">यह चित्र ऑफ़लाइन उपलब्ध नहीं है.</translation>
 <translation id="91568222606626347">शॉर्टकट बनाएं...</translation>
+<translation id="9157697743260533322">सभी उपयोगकर्ताओं के लिए स्वचालित अपडेट सेट करने में विफल (प्रीफ़्लाइट लॉन्च त्रुटि: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">ओह!  प्रमाणीकरण के दौरान एक नेटवर्क संचार समस्या आई.  कृपया अपना नेटवर्क कनेक्शन जांचें और पुन: प्रयास करें.</translation>
 <translation id="9159562891634783594">प्रिंट पूर्वावलोकन से अपंजीकृत क्लाउड प्रिंटर को पंजीकृत करना सक्षम करें.</translation>
 <translation id="9166510596677678112">इस व्यक्ति को ईमेल करें</translation>
@@ -5517,7 +5520,6 @@
 <translation id="9170848237812810038">&amp;पूर्ववत् करें</translation>
 <translation id="9170884462774788842">आपके कंप्यूटर पर किसी अन्य प्रोग्राम ने एक्सटेंशन जोड़ा है, जो Chrome के काम करने के तरीके को बदल सकता है.</translation>
 <translation id="9177499212658576372">वर्तमान में आप <ph name="NETWORK_TYPE" /> नेटवर्क से कनेक्ट हैं.</translation>
-<translation id="9177556055091995297">क्रेडिट कार्ड प्रबंधित करें</translation>
 <translation id="917858577839511832">WebRTC के लिए DTLS 1.2 के साथ निर्धारण</translation>
 <translation id="917861274483335838">प्‍लग इन अवरुद्ध करना प्रबंधित करें...</translation>
 <translation id="9179348476548754105">पासवर्ड प्रबंधक, केवल लेन-देन संबंधी reauth पृष्ठों के समन्वयन क्रेडेंशियल के लिए स्वत:-भरण को कैसे प्रबंधित करता है.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 6a4176f..5959bdf5d 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -159,7 +159,6 @@
     Morate ponovo postaviti profil.<ph name="BR" />
     <ph name="BR" />
     Na sljedećem zaslonu pošaljite povratne informacije kako biste nam pomogli riješiti poteškoću.</translation>
-<translation id="1216954813581739968">Omogući karticu za dijeljenje radne površine</translation>
 <translation id="121827551500866099">Prikaži sva preuzimanja...</translation>
 <translation id="122082903575839559">Algoritam potpisa certifikata</translation>
 <translation id="1221024147024329929">PKCS br. 1 MD2 s RSA enkripcijom</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL s %s na mjestu upita</translation>
 <translation id="1546280085599573572">Ovo proširenje promijenilo je stranicu koja se prikazuje kada se klikne gumb Početna.</translation>
 <translation id="1546795794523394272">Dobro došli u Chromebox za sastanke!</translation>
+<translation id="1547572086206517271">Morate osvježiti stranicu</translation>
 <translation id="1547964879613821194">kanadska (engleska)</translation>
 <translation id="1548132948283577726">Ovdje će se pojaviti web-lokacije koje nikad ne spremaju zaporke.</translation>
 <translation id="1549045574060481141">Potvrda preuzimanja</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Omogućivanje lokalnog pohranjivanja nedavno posjećenih stranica za offline upotrebu. Potrebno je omogućiti offline stranice.</translation>
 <translation id="1891668193654680795">Vjeruj ovom certifikatu za identifikaciju proizvođača softvera.</translation>
 <translation id="189210018541388520">Otvori cijeli zaslon</translation>
+<translation id="1892754076732315533">Pojednostavljeni novi korisnički doživljaj prilikom otvaranja cijelog zaslona koje pokreće stranica ili stanja zaključavanja pokazivača miša.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Pogreška u tijeku omogućivanja oblaka</translation>
 <translation id="189358972401248634">Drugi jezici</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Pristupite svojim Universal 2nd Factor uređajima</translation>
 <translation id="2881966438216424900">Posljednji pristup:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> će se odmah ponovo pokrenuti i vratiti na zadano</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Upravitelj zadataka</translation>
 <translation id="2887525882758501333">PDF dokument</translation>
 <translation id="2888807692577297075">Nijedna stavka ne odgovara pretraživanju &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt;</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">Ne sada</translation>
 <translation id="3480892288821151001">Usidri prozor ulijevo</translation>
 <translation id="3481915276125965083">Na ovoj su stranici blokirani sljedeći skočni prozori:</translation>
+<translation id="3482214069979148937">Držite |<ph name="ACCELERATOR" />| da biste napustili prikaz na cijelom zaslonu</translation>
 <translation id="3484869148456018791">Preuzmi novi certifikat</translation>
 <translation id="3487007233252413104">anonimna funkcija</translation>
 <translation id="348771913750618459">Prijave putem iframea</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">Ograničenja naziva certifikata</translation>
 <translation id="3595596368722241419">Baterija je puna</translation>
 <translation id="3600456501114769456">Pristup lokalnim datotekama na vašem uređaju onemogućio je administrator.</translation>
-<translation id="3601395307734599350">Ovdje su sva vaša proširenja</translation>
 <translation id="3603385196401704894">francuska (kanadska)</translation>
 <translation id="3603622770190368340">Dobivanje certifikata mreže</translation>
 <translation id="3605780360466892872">Poslovnjak</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">Upotrijebi globalnu zadanu postavku (Otkrij)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 kartica}one{# kartica}few{# kartice}other{# kartica}}</translation>
 <translation id="4154664944169082762">Otisci prstiju</translation>
-<translation id="4157188838832721931">Onemogući prikazivanje odzivne poruke korisniku za unošenje zaporke OS-a prije otkrivanja zaporki na stranici sa zaporkama.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Otvori popis pjesama</translation>
 <translation id="4159681666905192102">Ovo je račun za djecu kojim upravljaju <ph name="CUSTODIAN_EMAIL" /> i <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">Prijavi još jedan račun</translation>
 <translation id="4219614746733932747">Ako je omogućeno, Blink upotrebljava svoje mehanizme zumiranja kako bi skalirao sadržaj na temelju faktora skaliranja za uređaj.</translation>
 <translation id="4220865787605972627">Dopušta kalibraciju boja na zaslonu ako zaslon podržava tu značajku.</translation>
-<translation id="4233506668751282421">Omogući audio za dijeljenje radne površine</translation>
 <translation id="4235200303672858594">Cijeli zaslon</translation>
 <translation id="4235813040357936597">Dodaj račun za profil <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ne može se prikazati na ovom jeziku</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">Instalacija postavki pravila nije uspjela na uređaju: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> želi onemogućiti pokazivač miša.</translation>
 <translation id="424546999567421758">Otkrivena je intenzivna upotreba diska</translation>
-<translation id="4247072926966606568">Kada je ta oznaka uključena, prozor alata za odabir dijeljenja radne površine omogućit će korisniku da odabere hoće li dijeliti audio.</translation>
 <translation id="424726838611654458">Uvijek otvaraj u Adobe Readeru</translation>
 <translation id="4249248555939881673">Čekanje mrežne veze...</translation>
 <translation id="4249373718504745892">Stranici je blokiran pristup vašoj kameri i vašem mikrofonu.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">Dodaj adresu</translation>
 <translation id="4359408040881008151">Instalirano zbog ovisnih proširenja.</translation>
 <translation id="4361190688154226069">Ciljanje na temelju pravokutnika u prikazima</translation>
-<translation id="4363372140743955595">Ponovna autentifikacija upravitelja zaporki</translation>
 <translation id="4364444725319685468">Datoteka <ph name="FILE_NAME" /> je preuzeta</translation>
 <translation id="4364830672918311045">Prikaži obavijesti</translation>
 <translation id="4365673000813822030">Ups, sinkronizacija je prekinuta.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">O Automatskom popunjavanju</translation>
 <translation id="4449996769074858870">Ta kartica reproducira zvuk.</translation>
 <translation id="4450974146388585462">Dijagnosticiranje</translation>
+<translation id="4452426408005428395">Zanemari</translation>
 <translation id="4454939697743986778">Taj je certifikat instalirao vaš administrator sustava.</translation>
 <translation id="445923051607553918">Spoji se s Wi-Fi mrežom</translation>
 <translation id="4462159676511157176">Prilagođeni poslužitelji naziva</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">Jednokratna aktivacija: unesite zaporku da biste aktivirali Smart Lock na ovom uređaju <ph name="DEVICE_TYPE" />. Smart Lock omogućuje vašem telefonu otključavanje ovog uređaja bez zaporke. Tu značajku možete promijeniti ili isključiti u postavkama uređaja <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikacije i proširenja može mijenjati samo voditelj (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Pretvaranje u EMF</translation>
-<translation id="4601250583401186741">Upari s upravljačem</translation>
 <translation id="4602466770786743961">Uvijek dopusti hostu <ph name="HOST" /> pristup kameri i mikrofonu</translation>
 <translation id="4605399136610325267">Nema veze s internetom</translation>
 <translation id="4608500690299898628">&amp;Traži...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">Dopusti</translation>
 <translation id="5045550434625856497">Netočna zaporka</translation>
 <translation id="5048179823246820836">nordijski</translation>
+<translation id="5048294425697652159">Omogući Quirks Client za kalibraciju zaslona.</translation>
 <translation id="5053604404986157245">Nasumično generirana TPM zaporka nije dostupna. To je uobičajeno nakon primjene funkcije Powerwash.</translation>
 <translation id="5053803681436838483">Nova adresa za dostavu...</translation>
 <translation id="5055309315264875868">Prikažite vezu u postavkama upravitelja zaporki kako biste svojim sinkroniziranim zaporkama upravljali online.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Za reprodukciju medija potreban je pokret</translation>
 <translation id="5189060859917252173">Certifikat "<ph name="CERTIFICATE_NAME" />" predstavlja Tijelo za izdavanje certifikata.</translation>
-<translation id="5196117515621749903">Ponovno učitavanje predmemorije sa zanemarivanjem</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sinkronizacija je dovršena.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">Fotografija je odbačena</translation>
 <translation id="5218183485292899140">švicarska (francuska)</translation>
 <translation id="5218766986344577658">Skočni prozor razdvajanja veza</translation>
+<translation id="5220992698394817380">Omogući dodatni izbornik IME-a</translation>
 <translation id="5222676887888702881">Odjava</translation>
 <translation id="5225324770654022472">Prikaži prečac za aplikacije</translation>
 <translation id="5227536357203429560">Dodaj privatnu mrežu...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Sakrij način pojednostavljenog/tradicionalnog kineskog</translation>
 <translation id="5271549068863921519">Spremi zaporku</translation>
 <translation id="5273628206174272911">Eksperimentalna navigacija po povijesti kao odgovor na vodoravno pomicanje preko ruba.</translation>
+<translation id="5275194674756975076">U redu, osvježi</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> s ove web-lokacije</translation>
 <translation id="5275973617553375938">Oporavljene datoteke s Google diska</translation>
 <translation id="527605719918376753">Isključi zvuk kartice</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">Vaš je telefon zaključan. Otključajte ga da biste mu pristupili.</translation>
 <translation id="5369927996833026114">Otkrijte Pokretač aplikacija za Chrome</translation>
 <translation id="5370819323174483825">&amp;Ponovo učitaj</translation>
+<translation id="5372066618989754822">Omogućivanje pristupa novom izborniku IME-a na stranici jezičnih postavki.</translation>
 <translation id="5372529912055771682">Ova verzija operativnog sustava ne podržava uneseni način prijave. Svakako pokrenite najnoviju verziju i pokušajte ponovo.</translation>
 <translation id="5374359983950678924">Promijeni sliku</translation>
 <translation id="5376169624176189338">Kliknite da biste se vratili natrag, zadržite da biste vidjeli povijest</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">Naziv:</translation>
 <translation id="5627086634964711283">Upravlja i time koja se stranica prikazuje kada se klikne gumb Početna.</translation>
 <translation id="5627259319513858869">Omogućuje upotrebu eksperimentalnih značajki platna koje su još u izgradnji.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Dizajn materijala u najvišem Chromeu preglednika</translation>
 <translation id="5633060877636360447">Time će se trajno izbrisati najmanje <ph name="TOTAL_COUNT" /> stav. s ovog uređaja, ali se neće izbrisati sinkronizirane stavke s drugih uređaja.</translation>
 <translation id="5636996382092289526">Za upotrebu mreže <ph name="NETWORK_ID" /> možda ćete prvo morati <ph name="LINK_START" />posjetiti njezinu stranicu za prijavu<ph name="LINK_END" /> koja će se automatski otvoriti za nekoliko sekundi. Ako se to ne dogodi, mreža se ne može upotrebljavati.</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">Istaknite objekt fokusom na tipkovnici</translation>
 <translation id="5678955352098267522">čitati vaše podatke s web-lokacije <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtriranje teksta u načinu pregleda</translation>
+<translation id="5683818630978268777">Eksperimentalno korisničko sučelje za zaključavanje tipkovnice.</translation>
 <translation id="5684661240348539843">Identifikator uređaja</translation>
 <translation id="569068482611873351">Uvezi...</translation>
 <translation id="56907980372820799">Povežite podatke</translation>
@@ -3690,7 +3693,6 @@
 <translation id="6420676428473580225">Dodavanje na radnu površinu</translation>
 <translation id="6422329785618833949">Fotografija je okrenuta</translation>
 <translation id="642282551015776456">To ime ne može se upotrijebiti kao datoteka naziva mape</translation>
-<translation id="642322423610046417">Da biste uklonili nepotrebna proširenja, kliknite kontekstni izbornik desnom tipkom.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Upotrijebiti Adobe Reader kao zadani PDF preglednik?</translation>
 <translation id="6425092077175753609">Materijal</translation>
@@ -3761,6 +3763,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Eksperimentalni način prikaza na cijelom zaslonu sa zaključavanjem tipkovnice koji zahtijeva da korisnici pritisnu Esc da bi ga zatvorili.</translation>
 <translation id="6527303717912515753">Podijeli</translation>
 <translation id="6528546217685656218">Privatni ključ za ovaj certifikat klijenta nedostaje ili nije važeći.</translation>
 <translation id="653019979737152879">Sinkronizacija datoteke <ph name="FILE_NAME" />...</translation>
@@ -3940,6 +3943,7 @@
 <translation id="6825883775269213504">Ruski</translation>
 <translation id="6827236167376090743">Videozapis će se reproducirati unedogled.</translation>
 <translation id="6828153365543658583">Ograniči prijavu na sljedeće korisnike:</translation>
+<translation id="6828860976882136098">Postavljanje automatskih ažuriranja za sve korisnike nije uspjelo (pogreška prilikom izvršavanja pripremne provjere: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Pomoć za uređaj <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Prijavite u svoju organizaciju</translation>
 <translation id="6830590476636787791">Animirani prijelazi u vodiču za prvo pokretanje</translation>
@@ -3962,7 +3966,6 @@
 <translation id="6860427144121307915">Otvori u kartici</translation>
 <translation id="6862635236584086457">Za sve datoteke spremljene u ovoj mapi automatski se izrađuje sigurnosna kopija na mreži</translation>
 <translation id="6865313869410766144">Automatski ispuni podatke u obrascu</translation>
-<translation id="6865319096921627602">Omogućuje objedinjeni medijski kanal na Androidu.</translation>
 <translation id="6867678160199975333">Prebaci na korisnika <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Označeni okvir za izbor</translation>
 <translation id="6870130893560916279">Ukrajinska tipkovnica</translation>
@@ -4056,6 +4059,7 @@
 <translation id="7006017748900345484">Softverski WebRTC H.264 videokoder/dekoder</translation>
 <translation id="7006634003215061422">Donja margina</translation>
 <translation id="7006844981395428048">$1 audiozapis</translation>
+<translation id="7008270479623533562">Da biste pokrenuli proširenje, morate osvježiti stranicu. Proširenje se može pokrenuti automatski na ovoj web-lokaciji tako da kliknete njegovu ikonu desnom tipkom.</translation>
 <translation id="7009045250432250765">Automatsko popunjavanje jednim klikom</translation>
 <translation id="7010160495478792664">Videozapisi se hardverski ubrzano dekodiraju kada je to moguće.</translation>
 <translation id="7010400591230614821">Agresivna strategija oslobađanja kartica</translation>
@@ -4220,7 +4224,6 @@
 <translation id="7256710573727326513">Otvori na kartici</translation>
 <translation id="7257173066616499747">Wi-Fi mreže</translation>
 <translation id="7257666756905341374">čitati podatke koje kopirate i lijepite</translation>
-<translation id="7260002739296185724">Omogući upotrebu AVFoundationa za snimanje videozapisa i nadzor videouređaja na OS-u X 10.7 i novijim verzijama. U suprotnom će se upotrebljavati QTKit.</translation>
 <translation id="7260504762447901703">Opoziv pristupa</translation>
 <translation id="7262004276116528033">Tu uslugu prijave hostira <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Iznimke pristupa dodatka izvan testnog okruženja</translation>
@@ -4258,7 +4261,6 @@
 <translation id="7314278895724341067">Omogući offline stranice na web-stranici nove kartice</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (trenutačno)</translation>
 <translation id="7321545336522791733">Poslužitelj nije dostupan</translation>
-<translation id="7324841169865301118">Omogućuje korisniku da odabere karticu za dijeljenje radne površine.</translation>
 <translation id="7325437708553334317">Proširenje za visoki kontrast</translation>
 <translation id="7326565110843845436">Klik s tri prsta po dodirnoj podlozi</translation>
 <translation id="73289266812733869">Neoznačeno</translation>
@@ -5007,7 +5009,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Autor fotografije</translation>
 <translation id="8428213095426709021">Postavke</translation>
-<translation id="8432590265309978927">Vrlo eksperimentalna podrška za generiranje iframeova za više web-lokacija u zasebnim procesima.</translation>
 <translation id="8432745813735585631">SAD Colemak tipkovnica</translation>
 <translation id="8434177709403049435">&amp;Kodiranje</translation>
 <translation id="8434480141477525001">Priključak za otklanjanje pogrešaka lokalnog klijenta</translation>
@@ -5204,7 +5205,6 @@
 <translation id="8713979477561846077">Omogućivanje automatskog ispravljanja za američku tipkovnicu koje može davati prijedloge prilikom pisanja pomoću fizičke tipkovnice.</translation>
 <translation id="871476437400413057">Google spremljene zaporke</translation>
 <translation id="8714838604780058252">Pozadinska grafika</translation>
-<translation id="8716065142695381595">Omogućuje objedinjeni medijski kanal na Androidu (za Android i računala).</translation>
 <translation id="8722421161699219904">američka međunarodna tipkovnica</translation>
 <translation id="872451400847464257">Uredi tražilicu</translation>
 <translation id="8724859055372736596">&amp;Prikaži u mapi</translation>
@@ -5224,6 +5224,7 @@
 <translation id="8737685506611670901">otvoriti veze za protokol <ph name="PROTOCOL" /> umjesto <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Precizira položaj pokreta dodira radi nadomještanja dodira čija je razlučivost u usporedbi s mišem slaba.</translation>
+<translation id="8743712320294854924">Prikaži proširene opcije unosa na polici.</translation>
 <translation id="874420130893181774">tradicionalni pinyin način unosa</translation>
 <translation id="8744525654891896746">Odaberite avatar za tog zaštićenog korisnika</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5293,6 +5294,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Prijelaz na način tipke "Shift"</translation>
 <translation id="8852742364582744935">Dodane su sljedeće aplikacije i proširenja:</translation>
+<translation id="8853611566624224021">Omogućuje dohvaćanje datoteka ICC zaslona s Quirksova poslužitelja za kalibraciju boje na zaslonu.</translation>
 <translation id="885381502874625531">Bjeloruska tipkovnica</translation>
 <translation id="8856844195561710094">Zaustavljanje otkrivanja Bluetooth uređaja nije uspjelo.</translation>
 <translation id="885701979325669005">Prostor za pohranu</translation>
@@ -5342,7 +5344,6 @@
 <translation id="8925458182817574960">&amp;Postavke</translation>
 <translation id="8926389886865778422">Više me ne pitaj</translation>
 <translation id="8926518602592448999">Onemogućivanje proširenja u načinu rada razvojnog programera</translation>
-<translation id="8929454297483336498">Upotreba Mac OS X AVFoundation API-ja umjesto QTKita</translation>
 <translation id="8931394284949551895">Novi uređaji</translation>
 <translation id="8932730422557198035">Koristi Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Prikaži u programu Finder</translation>
@@ -5356,6 +5357,7 @@
 <translation id="894360074127026135">Netscape međunarodni iskorak</translation>
 <translation id="8944779739948852228">Otkriven je pisač</translation>
 <translation id="8946359700442089734">Značajke uklanjanja pogrešaka nisu posve omogućene na ovom uređaju <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Omogućuje podršku za WebUSB.</translation>
 <translation id="89515141420106838">Omogućuje aplikaciju Galerija Chrome web-trgovine za upravljačke programe pisača. Ta aplikacija u Chrome web-trgovini traži proširenja koja podržavaju ispis na USB pisačima s određenim ID-jem USB-a.</translation>
 <translation id="895347679606913382">Početak...</translation>
 <translation id="8954952943849489823">Premještanje nije uspjelo, neočekivana pogreška: $1</translation>
@@ -5499,6 +5501,7 @@
 <translation id="9154194610265714752">Ažurirano</translation>
 <translation id="9154418932169119429">Ova slika nije dostupna izvan mreže.</translation>
 <translation id="91568222606626347">Napravi prečac...</translation>
+<translation id="9157697743260533322">Postavljanje automatskih ažuriranja za sve korisnike nije uspjelo (pogreška prilikom pokretanja pripremne provjere: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ups! Tijekom autentifikacije došlo je do problema u mrežnoj komunikaciji. Provjerite svoju mrežnu vezu i pokušajte ponovo.</translation>
 <translation id="9159562891634783594">Omogući registriranje neregistriranih pisača u oblaku iz pregleda ispisa.</translation>
 <translation id="9166510596677678112">Pošaljite e-poruku toj osobi</translation>
@@ -5510,7 +5513,6 @@
 <translation id="9170848237812810038">&amp;Poništi</translation>
 <translation id="9170884462774788842">Drugi program na vašem računalu dodao je temu koja može promijeniti način na koji radi Chrome.</translation>
 <translation id="9177499212658576372">Trenutačno ste povezani sa sljedećom vrstom mreže: <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Upravljanje kreditnim karticama</translation>
 <translation id="917858577839511832">Pregovaranje s DTLS-om 1.2 za WebRTC</translation>
 <translation id="917861274483335838">Upravljanje blokiranjem dodataka...</translation>
 <translation id="9179348476548754105">Način na koji upravitelj zaporki upravlja automatskim popunjavanjem za vjerodajnicu sinkronizacije samo za stranice za ponovnu autorizaciju transakcija.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index ab0764f..4e497350 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -159,7 +159,6 @@
     Ismét be kell állítania profilját.<ph name="BR" />
     <ph name="BR" />
     Kérjük, hogy a következő képernyőn küldjön visszajelzést: visszajelzésével segítséget nyújt a probléma kijavításához.</translation>
-<translation id="1216954813581739968">Lap engedélyezése az asztal megosztásánál</translation>
 <translation id="121827551500866099">Összes letöltés megjelenítése...</translation>
 <translation id="122082903575839559">Tanúsítvány aláírási algoritmusa</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 RSA titkosítással</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL, ahol a lekérdezést a %s helyettesíti</translation>
 <translation id="1546280085599573572">Ez a bővítmény azt módosította, hogy melyik oldal jelenjen meg a Kezdőlap gombra való kattintás esetén.</translation>
 <translation id="1546795794523394272">Üdvözli a videokonferenciákhoz készült Chromebox eszköz!</translation>
+<translation id="1547572086206517271">Frissítés szükséges</translation>
 <translation id="1547964879613821194">kanadai angol</translation>
 <translation id="1548132948283577726">Itt jelennek meg azok a weboldalak, amelyekhez a jelszavak mentése meg lett tiltva.</translation>
 <translation id="1549045574060481141">Letöltés megerősítése</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">A nemrég felkeresett oldalak helyi tárolásának engedélyezése offline használatra. Szükséges hozzá az offline oldalak engedélyezése.</translation>
 <translation id="1891668193654680795">Bízzon meg ebben a tanúsítványban a szoftvergyártók azonosításakor.</translation>
 <translation id="189210018541388520">Megnyitás teljes képernyőn</translation>
+<translation id="1892754076732315533">Új, egyszerűsített felhasználói mód az oldal által kiváltott teljes képernyős nézet, illetve az egérmutató zárolása esetén.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Felhőszolgáltatási folyamat hibája</translation>
 <translation id="189358972401248634">Más nyelvek</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">U2F (Universal 2nd Factor) eszközökhöz való hozzáférés</translation>
 <translation id="2881966438216424900">Utolsó hozzáférés ideje:</translation>
 <translation id="2882943222317434580">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> rövidesen újraindul, és alapállapotba áll</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Feladatkezelő</translation>
 <translation id="2887525882758501333">PDF-dokumentum</translation>
 <translation id="2888807692577297075">Nincs &lt;b&gt;„<ph name="SEARCH_STRING" />”&lt;/b&gt; keresésnek megfelelő elem</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Ne most</translation>
 <translation id="3480892288821151001">Ablak rögzítése balra</translation>
 <translation id="3481915276125965083">A következő előugró ablakokat letiltottuk ezen az oldalon:</translation>
+<translation id="3482214069979148937">A teljes képernyős nézetből való kilépéshez tartsa lenyomva a következő billentyűt: |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Új tanúsítvány kérése</translation>
 <translation id="3487007233252413104">névtelen funkció</translation>
 <translation id="348771913750618459">Iframe-alapú bejelentkezési folyamatok</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Tanúsítvány nevének megkötései</translation>
 <translation id="3595596368722241419">Akkumulátor feltöltve</translation>
 <translation id="3600456501114769456">A rendszergazda letiltotta a helyi fájlok elérését az eszközön.</translation>
-<translation id="3601395307734599350">Az összes bővítményét megtalálja itt</translation>
 <translation id="3603385196401704894">kanadai francia</translation>
 <translation id="3603622770190368340">Hálózati tanúsítvány beszerzése</translation>
 <translation id="3605780360466892872">Üzletember</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Globális alapértelmezés használata (Észlelés)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 lap}other{# lap}}</translation>
 <translation id="4154664944169082762">Ujjlenyomatok</translation>
-<translation id="4157188838832721931">Annak letiltása, hogy a jelszavak jelszóoldalon történő megjelenítése előtt rákérdezzen a felhasználónál az operációs rendszer jelszavára.</translation>
 <translation id="4157869833395312646">Microsoft - szerver által kezdeményezett erős titkosítás (SGC)</translation>
 <translation id="4158739975813877944">Lejátszási lista megnyitása</translation>
 <translation id="4159681666905192102">Ez a fiók gyerekeknek készült; <ph name="CUSTODIAN_EMAIL" /> és <ph name="SECOND_CUSTODIAN_EMAIL" /> felügyelete mellett.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Bejelentkezés másik fiókba</translation>
 <translation id="4219614746733932747">Ha engedélyezve van, a Blink a saját nagyítási módszerét használja az eszköz skálázási tényezőjéhez igazodó tartalomméretezésre.</translation>
 <translation id="4220865787605972627">A kijelző színkalibrálásának engedélyezése, ha a kijelző támogatja a funkciót.</translation>
-<translation id="4233506668751282421">Hang engedélyezése az asztal megosztásánál</translation>
 <translation id="4235200303672858594">Teljes képernyő</translation>
 <translation id="4235813040357936597">Fiók hozzáadása a következőhöz: <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">A <ph name="PRODUCT_NAME" /> nem jeleníthető meg ezen a nyelven</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Az irányelv-beállítások telepítése az eszközre sikertelen: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">A(z) <ph name="FULLSCREEN_ORIGIN" /> le akarja tiltani az egérmutatót.</translation>
 <translation id="424546999567421758">Magas lemezfelhasználás észlelve</translation>
-<translation id="4247072926966606568">A jelölő bekapcsolása esetén a felhasználó az asztal megosztásának kiválasztására szolgáló ablakban kiválaszthatja, hogy meg szeretné-e osztani a hangot.</translation>
 <translation id="424726838611654458">Megnyitás mindig az Adobe Readerben</translation>
 <translation id="4249248555939881673">Várakozás a hálózati kapcsolatra...</translation>
 <translation id="4249373718504745892">Az oldal nem férhet hozzá az Ön kamerájához és mikrofonjához.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">Cím hozzáadása</translation>
 <translation id="4359408040881008151">Telepítve az ezt nélkülözni nem tudó bővítmény(ek) miatt.</translation>
 <translation id="4361190688154226069">Téglalap alapú célzás a nézetekben</translation>
-<translation id="4363372140743955595">Jelszókezelő újrahitelesítése</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> letöltve</translation>
 <translation id="4364830672918311045">Értesítések megjelenítése</translation>
 <translation id="4365673000813822030">Hoppá, a szinkronizálás leállt.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">Az Automatikus kitöltésről</translation>
 <translation id="4449996769074858870">Ez a lap hangot játszik le.</translation>
 <translation id="4450974146388585462">Elemzés</translation>
+<translation id="4452426408005428395">Inkább mégsem</translation>
 <translation id="4454939697743986778">Ezt a tanúsítványt az Ön rendszergazdája telepítette.</translation>
 <translation id="445923051607553918">Belépés Wi-Fi hálózatra</translation>
 <translation id="4462159676511157176">Egyéni névszerverek</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">Egyszeri aktiválás: Írja be jelszavát a Smart Lock aktiválásához. A Smart Lock használata esetén telefonja jelszó nélkül oldja fel ezt a(z) <ph name="DEVICE_TYPE" /> eszközt. A funkció módosításához vagy kikapcsolásához nyissa meg a(z) <ph name="DEVICE_TYPE" /> eszköz beállításait.</translation>
 <translation id="4595560905247879544">Az alkalmazásokat és bővítményeket csak a kezelő (<ph name="CUSTODIAN_NAME" />) módosíthatja.</translation>
 <translation id="4601242977939794209">EMF-konvertáló</translation>
-<translation id="4601250583401186741">Párosítás egy vezérlővel</translation>
 <translation id="4602466770786743961">A(z) <ph name="HOST" /> mindig hozzáférhet a kamerához és mikrofonhoz</translation>
 <translation id="4605399136610325267">Nincs internetkapcsolat</translation>
 <translation id="4608500690299898628">&amp;Keresés...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">Engedélyezés</translation>
 <translation id="5045550434625856497">Téves jelszó</translation>
 <translation id="5048179823246820836">Skandináv</translation>
+<translation id="5048294425697652159">Quirks-ügyfél engedélyezése a kijelző kalibrálásához.</translation>
 <translation id="5053604404986157245">Nem áll rendelkezésre véletlenszerűen generált TPM jelszó. Powerwash után ez normális.</translation>
 <translation id="5053803681436838483">Új szállítási cím...</translation>
 <translation id="5055309315264875868">Link megjelenítése a jelszókezelő beállítások oldalán a szinkronizált jelszavak online kezeléséhez.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Megkövetelt kézmozdulat médialejátszáshoz</translation>
 <translation id="5189060859917252173">A "<ph name="CERTIFICATE_NAME" />" tanúsítvány egy tanúsítványkibocsátót képvisel.</translation>
-<translation id="5196117515621749903">Újratöltés a gyorsítótár figyelmen kívül hagyásával</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">A szinkronizálás befejeződött.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">A fotót elvetették</translation>
 <translation id="5218183485292899140">svájci francia</translation>
 <translation id="5218766986344577658">Link egyértelműsítése előugró ablak</translation>
+<translation id="5220992698394817380">Regisztrációs IME-menü engedélyezése</translation>
 <translation id="5222676887888702881">Kijelentkezés</translation>
 <translation id="5225324770654022472">Alkalmazások parancsikon megjelenítése</translation>
 <translation id="5227536357203429560">Privát hálózat hozzáadása...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Váltás az egyszerű/hagyományos kínai mód között</translation>
 <translation id="5271549068863921519">Jelszó mentése</translation>
 <translation id="5273628206174272911">Kísérleti előzménynavigáció a vízszintes túlgörgetésre válaszul.</translation>
+<translation id="5275194674756975076">Rendben, frissítés</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> elem erről a webhelyről</translation>
 <translation id="5275973617553375938">A Google Drive-ról visszaállított fájlok</translation>
 <translation id="527605719918376753">Lap némítása</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">A telefon zárolva van. Oldja fel a belépéshez.</translation>
 <translation id="5369927996833026114">Fedezze fel a Chrome alkalmazásindítót</translation>
 <translation id="5370819323174483825">Új&amp;ratöltés</translation>
+<translation id="5372066618989754822">Az új IME-menühöz való hozzáférés engedélyezése a Nyelvi beállítások oldalon.</translation>
 <translation id="5372529912055771682">Az operációs rendszer jelen verziója nem támogatja a kínált regisztrációs módot. Kérjük, győződjön meg arról, hogy a legújabb verziót használja, majd próbálkozzon újra.</translation>
 <translation id="5374359983950678924">Kép lecserélése</translation>
 <translation id="5376169624176189338">Kattintson, ha az előző oldalra szeretne lépni; tartsa lenyomva, ha látni szeretné az előzményeket</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Név:</translation>
 <translation id="5627086634964711283">Továbbá azt is szabályozza, hogy melyik oldal jelenik meg a Kezdőlap gombra történő kattintáskor.</translation>
 <translation id="5627259319513858869">Lehetővé teszi a még fejlesztés alatt álló kísérleti vászonfunkciók használatát.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Anyagszerű megjelenés a böngésző felső részén</translation>
 <translation id="5633060877636360447">Ezzel véglegesen töröl legalább <ph name="TOTAL_COUNT" /> elemet erről az eszközről, viszont nem törli a szinkronizált elemeket a többi eszközről.</translation>
 <translation id="5636996382092289526">A(z) <ph name="NETWORK_ID" /> használatához először <ph name="LINK_START" />fel kell keresnie a hálózat bejelentkezési oldalát<ph name="LINK_END" />, amely automatikusan megnyílik néhány másodpercen belül. Ha ez nem történik meg, akkor a hálózat nem használható.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Az elem kiemelése a billentyűzetfókusszal</translation>
 <translation id="5678955352098267522">Adatok beolvasása a következő webhelyen: <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Szöveg általi szűrés áttekintés módban</translation>
+<translation id="5683818630978268777">Kísérleti billentyűzetzároló kezelőfelület.</translation>
 <translation id="5684661240348539843">Tartalomazonosító</translation>
 <translation id="569068482611873351">Importálás...</translation>
 <translation id="56907980372820799">Adatok összekapcsolása</translation>
@@ -3691,7 +3694,6 @@
 <translation id="6420676428473580225">Hozzáadás az asztalhoz</translation>
 <translation id="6422329785618833949">Fénykép megfordítva</translation>
 <translation id="642282551015776456">Ezt a nevet nem lehet mappa fájlneveként használni</translation>
-<translation id="642322423610046417">A (jobb kattintással előhívható) helyi menü használatával távolíthatja el a szükségtelen bővítményeket.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Az Adobe Reader legyen az alapértelmezett PDF-megjelenítő?</translation>
 <translation id="6425092077175753609">Anyag</translation>
@@ -3762,6 +3764,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Kísérleti teljes képernyős üzemmód billentyűzetzárral – a kilépéshez a felhasználóknak lenyomva kell tartaniuk az Esc billentyűt.</translation>
 <translation id="6527303717912515753">Megosztás</translation>
 <translation id="6528546217685656218">Az ügyféltanúsítvány privát kulcsa hiányzik vagy érvénytelen.</translation>
 <translation id="653019979737152879">A(z) <ph name="FILE_NAME" /> szinkronizálása…</translation>
@@ -3941,6 +3944,7 @@
 <translation id="6825883775269213504">orosz</translation>
 <translation id="6827236167376090743">A videó lejátszása a végtelenségig folytatódik.</translation>
 <translation id="6828153365543658583">Bejelentkezés korlátozása a következő felhasználókra:</translation>
+<translation id="6828860976882136098">Nem sikerült beállítani az automatikus frissítéseket az összes felhasználó számára (előzetes lekérdezés végrehajtási hibája: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Kérjen segítséget <ph name="DEVICE_TYPE" /> eszközéhez.</translation>
 <translation id="6829270497922309893">Csatlakozás a szervezetén belül</translation>
 <translation id="6830590476636787791">Animált átmenetek az útmutató első indításakor</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">Megnyitás lapon</translation>
 <translation id="6862635236584086457">Az ebbe a mappába mentett minden fájlról online biztonsági másolat készül</translation>
 <translation id="6865313869410766144">Automatikus kitöltési űrlapadatok</translation>
-<translation id="6865319096921627602">Engedélyezi az egyesített média-adatcsatornát Androidon.</translation>
 <translation id="6867678160199975333">Váltás a következő felhasználóra: <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Bejelölt jelölőnégyzet</translation>
 <translation id="6870130893560916279">Ukrán billentyűzet</translation>
@@ -4058,6 +4061,7 @@
 <translation id="7006017748900345484">WebRTC H.264 szoftveres videókódoló/-dekódoló</translation>
 <translation id="7006634003215061422">Alsó margó</translation>
 <translation id="7006844981395428048">$1 hangfájl</translation>
+<translation id="7008270479623533562">A bővítmény futtatásához frissítenie kell az oldalt. A bővítményt automatikusan futtathatja ezen a webhelyen, ha jobb gombbal rákattint a bővítmény ikonjára.</translation>
 <translation id="7009045250432250765">Automatikus kitöltés egyetlen kattintással</translation>
 <translation id="7010160495478792664">Hardveresen gyorsított videodekódolás, amennyiben az lehetséges.</translation>
 <translation id="7010400591230614821">Agresszív lapfelszabadítási stratégia</translation>
@@ -4222,7 +4226,6 @@
 <translation id="7256710573727326513">Megnyitás lapon</translation>
 <translation id="7257173066616499747">Wi-Fi-hálózatok</translation>
 <translation id="7257666756905341374">Az Ön által másolt és beillesztett adatok olvasása</translation>
-<translation id="7260002739296185724">Az AVFoundation használatának engedélyezése a videorögzítéshez és a videoeszköz felügyeletéhez a legalább 10.7-es verziószámú OS X esetében. Egyéb esetben a rendszer a QTKitet használja.</translation>
 <translation id="7260504762447901703">Hozzáférés visszavonása</translation>
 <translation id="7262004276116528033">Ezt a bejelentkezési szolgáltatást a(z) <ph name="SAML_DOMAIN" /> biztosítja</translation>
 <translation id="7262221505565121">Sandboxon kívüli beépülő modulok hozzáférésének kivételei</translation>
@@ -4260,7 +4263,6 @@
 <translation id="7314278895724341067">Új lap oldal offline oldalainak engedélyezése</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (jelenlegi)</translation>
 <translation id="7321545336522791733">A szerver nem áll rendelkezésre</translation>
-<translation id="7324841169865301118">Lehetővé teszi a felhasználó számára, hogy kiválasszon egy lapot az asztali megosztáshoz.</translation>
 <translation id="7325437708553334317">Kontrasztos megjelenítés bővítmény</translation>
 <translation id="7326565110843845436">Háromujjas kattintás az érintőpadon</translation>
 <translation id="73289266812733869">Nincs kijelölve</translation>
@@ -5010,7 +5012,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">A fotót készítette:</translation>
 <translation id="8428213095426709021">Beállítások</translation>
-<translation id="8432590265309978927">Erősen kísérleti támogatás webhelyek közti iframe-ek megjelenítéséhez külön folyamatban.</translation>
 <translation id="8432745813735585631">Amerikai Colemak billentyűzet</translation>
 <translation id="8434177709403049435">&amp;Karakterkódolás</translation>
 <translation id="8434480141477525001">NaCl hibakeresési port</translation>
@@ -5208,7 +5209,6 @@
 <translation id="8713979477561846077">Fizikai billentyűzet automatikus javításának engedélyezése USA-beli kiosztást használó billentyűzetek esetén, hogy javaslatok jelenjenek meg a fizikai billentyűzeten történő gépelés közben.</translation>
 <translation id="871476437400413057">Mentett Google-jelszavak</translation>
 <translation id="8714838604780058252">Háttérgrafika</translation>
-<translation id="8716065142695381595">Engedélyezi az egyesített (androidos és asztali) média-adatcsatornát Androidon.</translation>
 <translation id="8722421161699219904">Amerikai nemzetközi billentyűzet</translation>
 <translation id="872451400847464257">Keresőmotor beállítása</translation>
 <translation id="8724859055372736596">&amp;Megjelenítés mappában</translation>
@@ -5228,6 +5228,7 @@
 <translation id="8737685506611670901"><ph name="PROTOCOL" /> linkek megnyitása a(z) <ph name="REPLACED_HANDLER_TITLE" /> helyett</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Finomítja az érintési kézmozdulatok helyzetét, ellensúlyozva az érintések egérmozdulatokhoz viszonyított gyengébb pontosságát.</translation>
+<translation id="8743712320294854924">Kibővített beviteli lehetőségek megjelenítése a polcon.</translation>
 <translation id="874420130893181774">Hagyományos pinjin beviteli mód</translation>
 <translation id="8744525654891896746">Válasszon egy avatart a felügyelt felhasználó számára</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5297,6 +5298,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift billentyűmód kapcsolója</translation>
 <translation id="8852742364582744935">Az alábbi alkalmazásokat és bővítményeket adta hozzá:</translation>
+<translation id="8853611566624224021">Az ICC (színprofil)-fájlok Quirks Servertől való lekérésének engedélyezése a kijelző színkalibrálásához.</translation>
 <translation id="885381502874625531">Fehérorosz billentyűzet</translation>
 <translation id="8856844195561710094">Nem sikerült leállítani a Bluetooth-eszközkeresést.</translation>
 <translation id="885701979325669005">Tárolás</translation>
@@ -5346,7 +5348,6 @@
 <translation id="8925458182817574960">&amp;Beállítások</translation>
 <translation id="8926389886865778422">Többször ne figyelmeztessen</translation>
 <translation id="8926518602592448999">A fejlesztői módban futó bővítmények kikapcsolása</translation>
-<translation id="8929454297483336498">A Mac OS X AVFoundation API-k használata a QTKit helyett</translation>
 <translation id="8931394284949551895">Új eszközök</translation>
 <translation id="8932730422557198035">Android Midi API használata</translation>
 <translation id="8933960630081805351">&amp;Megjelenítés a Finderben</translation>
@@ -5360,6 +5361,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Nyomtató észlelve</translation>
 <translation id="8946359700442089734">A hibakereső szolgáltatásokat nem kapcsolták be teljes körűen ezen a(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> eszközön.</translation>
+<translation id="8946784827990177241">WebUSB-támogatás engedélyezése.</translation>
 <translation id="89515141420106838">Engedélyezi a Chrome Internetes áruház Galéria alkalmazást a nyomtatóillesztőknél. Az alkalmazás rákeres a Chrome Internetes áruházban azokra a bővítményekre, amelyek támogatják a nyomtatást az adott USB-azonosítóval rendelkező USB-s nyomtatókon.</translation>
 <translation id="895347679606913382">Kezdés...</translation>
 <translation id="8954952943849489823">Az áthelyezés sikertelen, nem várt hiba: $1</translation>
@@ -5503,6 +5505,7 @@
 <translation id="9154194610265714752">Frissítve</translation>
 <translation id="9154418932169119429">Ez a kép nem érhető el offline.</translation>
 <translation id="91568222606626347">Parancsikon létrehozása</translation>
+<translation id="9157697743260533322">Nem sikerült beállítani az automatikus frissítéseket az összes felhasználó számára (előzetes lekérdezés indítási hibája: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Hoppá! Hálózati kommunikációs probléma merült fel a hitelesítés során. Kérjük, ellenőrizze hálózati kapcsolatát, és próbálkozzon újra.</translation>
 <translation id="9159562891634783594">A regisztrálatlan felhőnyomtatók nyomtatási előnézetből való regisztrálásának engedélyezése.</translation>
 <translation id="9166510596677678112">E-mail küldése ennek a személynek</translation>
@@ -5514,7 +5517,6 @@
 <translation id="9170848237812810038">&amp;Visszavonás</translation>
 <translation id="9170884462774788842">A számítógépen lévő egyik program olyan témát adott hozzá, amely módosíthatja a Chrome működését.</translation>
 <translation id="9177499212658576372">Jelenleg <ph name="NETWORK_TYPE" /> hálózathoz kapcsolódik.</translation>
-<translation id="9177556055091995297">Hitelkártyák kezelése</translation>
 <translation id="917858577839511832">A DTLS 1.2 protokollal való egyeztetés a WebRTC számára</translation>
 <translation id="917861274483335838">Beépülő modulok letiltásának kezelése...</translation>
 <translation id="9179348476548754105">Hogyan szabályozza a jelszókezelő a szinkronizálási hitelesítő adatoknak a kizárólag a tranzakció-újrahitelesítő oldalak esetében történő automatikus kitöltését.</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index c456f23a..341bd1d 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -159,7 +159,6 @@
     Anda harus menyiapkan kembali profil Anda.<ph name="BR" />
     <ph name="BR" />
     Di layar berikutnya, kirimkan masukan untuk membantu kami memperbaiki masalah.</translation>
-<translation id="1216954813581739968">Aktifkan tab untuk Berbagi Desktop.</translation>
 <translation id="121827551500866099">Tampilkan semua unduhan...</translation>
 <translation id="122082903575839559">Algoritme Tanda Tangan Sertifikat</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 Dengan Enkripsi RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL dengan %s di tempat kueri</translation>
 <translation id="1546280085599573572">Ekstensi ini telah mengubah laman apa yang ditampilkan saat Anda mengeklik tombol Beranda.</translation>
 <translation id="1546795794523394272">Selamat datang di Chromebox untuk rapat!</translation>
+<translation id="1547572086206517271">Perlu penyegaran</translation>
 <translation id="1547964879613821194">Inggris Kanada</translation>
 <translation id="1548132948283577726">Situs yang tidak pernah menyimpan sandi akan muncul di sini.</translation>
 <translation id="1549045574060481141">Konfirmasi Unduhan</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Mengaktifkan penyimpanan lokal bagi laman yang baru dikunjungi untuk digunakan secara offline. Laman Offline harus diaktifkan.</translation>
 <translation id="1891668193654680795">Percayai sertifikat ini untuk mengidentifikasi pembuat perangkat lunak.</translation>
 <translation id="189210018541388520">Buka layar penuh</translation>
+<translation id="1892754076732315533">Pengalaman pengguna baru yang disederhanakan saat memasuki mode layar penuh yang dipicu laman atau kondisi penguncian kursor mouse.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Aliran penyediaan awan gagal</translation>
 <translation id="189358972401248634">Bahasa lain</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Akses perangkat Universal 2nd Factor Anda</translation>
 <translation id="2881966438216424900">Terakhir diakses:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> akan segera dimulai dan disetel ulang</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Pengelola Tugas</translation>
 <translation id="2887525882758501333">Dokumen PDF</translation>
 <translation id="2888807692577297075">Tidak ada item yang cocok &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Jangan sekarang</translation>
 <translation id="3480892288821151001">Galangkan jendela ke kiri</translation>
 <translation id="3481915276125965083">Munculan berikut dicekal di laman ini:</translation>
+<translation id="3482214069979148937">Tahan |<ph name="ACCELERATOR" />| untuk keluar dari layar penuh</translation>
 <translation id="3484869148456018791">Dapatkan sertifikat baru</translation>
 <translation id="3487007233252413104">fungsi anonim</translation>
 <translation id="348771913750618459">Alur masuk berbasis iframe</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Kendala Nama Sertifikat</translation>
 <translation id="3595596368722241419">Baterai penuh</translation>
 <translation id="3600456501114769456">Akses ke file lokal di perangkat Anda dinonaktifkan oleh administrator Anda.</translation>
-<translation id="3601395307734599350">Semua ekstensi Anda ada di sini</translation>
 <translation id="3603385196401704894">Prancis Kanada</translation>
 <translation id="3603622770190368340">Mendapatkan sertifikat jaringan</translation>
 <translation id="3605780360466892872">Pria Berdasi</translation>
@@ -2015,7 +2017,7 @@
     Siap mencadangkan ke <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3816844797124379499">Tidak dapat menambahkan aplikasi karena bentrok dengan "<ph name="APP_NAME" />".</translation>
 <translation id="3819007103695653773">Izinkan semua situs mengirimkan pesan push latar belakang</translation>
-<translation id="3819752733757735746">Sakelar akses (mengontrol komputer hanya menggunakan satu atau dua sakelar)</translation>
+<translation id="3819752733757735746">Tuas akses (mengontrol komputer hanya menggunakan satu atau dua tuas)</translation>
 <translation id="3819800052061700452">Layar penuh</translation>
 <translation id="3822265067668554284">Jangan izinkan situs apa pun melacak lokasi fisik Anda</translation>
 <translation id="3825863595139017598">Keyboard Mongolia</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Gunakan default global (Deteksi)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation>
 <translation id="4154664944169082762">Sidik jari</translation>
-<translation id="4157188838832721931">Menonaktifkan permintaan sandi OS kepada pengguna sebelum menampilkan sandi di laman sandi.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Buka daftar putar</translation>
 <translation id="4159681666905192102">Ini adalah akun untuk anak yang dikelola oleh <ph name="CUSTODIAN_EMAIL" /> dan <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Masuk ke akun lain</translation>
 <translation id="4219614746733932747">Jika diaktifkan, Blink akan menggunakan mekanisme perbesar/perkecil untuk menskalakan konten untuk faktor skala perangkat.</translation>
 <translation id="4220865787605972627">Memungkinkan kalibrasi warna layar jika layar mendukung fitur tersebut.</translation>
-<translation id="4233506668751282421">Aktifkan Audio untuk Berbagi Desktop</translation>
 <translation id="4235200303672858594">Seluruh layar</translation>
 <translation id="4235813040357936597">Tambahkan Akun untuk <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> tidak dapat ditampilkan dalam bahasa ini</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Gagal memasang setelan kebijakan di perangkat: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> ingin menonaktifkan kursor mouse Anda.</translation>
 <translation id="424546999567421758">Penggunaan disk tinggi terdeteksi</translation>
-<translation id="4247072926966606568">Jika tanda ini aktif, jendela pemilih berbagi dekstop akan mengizinkan pengguna memilih untuk membagikan audio atau tidak.</translation>
 <translation id="424726838611654458">Selalu buka di Adobe Reader</translation>
 <translation id="4249248555939881673">Menunggu sambungan jaringan...</translation>
 <translation id="4249373718504745892">Laman ini telah diblokir agar tidak dapat mengakses kamera dan mikrofon Anda.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">Tambahkan alamat</translation>
 <translation id="4359408040881008151">Dipasang karena ekstensi dependen.</translation>
 <translation id="4361190688154226069">Penargetan berbasis kotak pada tampilan</translation>
-<translation id="4363372140743955595">Pengautentikasian Ulang Pengelola Sandi</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> diunduh</translation>
 <translation id="4364830672918311045">Tampilkan notifikasi</translation>
 <translation id="4365673000813822030">Ups, Sinkronisasi berhenti bekerja.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">Tentang IsiOtomatis</translation>
 <translation id="4449996769074858870">Tab ini memutar audio.</translation>
 <translation id="4450974146388585462">Diagnosis</translation>
+<translation id="4452426408005428395">Abaikan saja</translation>
 <translation id="4454939697743986778">Sertifikat ini dipasang oleh administrator sistem Anda.</translation>
 <translation id="445923051607553918">Bergabung dengan jaringan Wi-Fi</translation>
 <translation id="4462159676511157176">Server nama khusus</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">Aktivasi satu kali: Ketik sandi Anda untuk mengaktifkan Smart Lock di <ph name="DEVICE_TYPE" /> ini. Dengan Smart Lock, ponsel dapat digunakan untuk membuka kunci perangkat ini—tanpa sandi. Untuk mengubah atau menonaktifkan fitur ini, buka setelan <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikasi dan ekstensi hanya dapat diubah oleh pengelola (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Pengonversi EMF</translation>
-<translation id="4601250583401186741">Menyandingkan dengan pengontrol</translation>
 <translation id="4602466770786743961">Selelu izinkan <ph name="HOST" /> mengakses kamera dan mikrofon Anda</translation>
 <translation id="4605399136610325267">Internet tidak tersambung</translation>
 <translation id="4608500690299898628">&amp;Temukan...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">Izinkan</translation>
 <translation id="5045550434625856497">Sandi salah</translation>
 <translation id="5048179823246820836">Nordik</translation>
+<translation id="5048294425697652159">Aktifkan Quirks Client untuk kalibrasi tampilan.</translation>
 <translation id="5053604404986157245">Sandi TPM yang dibuat secara acak tidak tersedia. Hal ini normal setelah menjalankan Powerwash.</translation>
 <translation id="5053803681436838483">Alamat pengiriman baru...</translation>
 <translation id="5055309315264875868">Menampilkan tautan di laman setelan pengelola sandi untuk mengelola sandi Anda yang disinkronkan secara online.</translation>
@@ -2881,7 +2880,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Persyaratan isyarat untuk pemutaran media</translation>
 <translation id="5189060859917252173">Sertifikat "<ph name="CERTIFICATE_NAME" />" mewakili Otoritas Sertifikasi.</translation>
-<translation id="5196117515621749903">Muat ulang cache yang diabaikan</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sinkronisasi selesai.</translation>
@@ -2896,6 +2894,7 @@
 <translation id="521582610500777512">Foto dibuang</translation>
 <translation id="5218183485292899140">Prancis Swiss</translation>
 <translation id="5218766986344577658">Munculan Disambiguasi Tautan</translation>
+<translation id="5220992698394817380">Aktifkan menu IME keikutsertaan</translation>
 <translation id="5222676887888702881">Keluar</translation>
 <translation id="5225324770654022472">Tampilkan pintasan aplikasi</translation>
 <translation id="5227536357203429560">Tambahkan jaringan pribadi...</translation>
@@ -2938,6 +2937,7 @@
 <translation id="5271247532544265821">Mode China Aksara Modern/Tradisional</translation>
 <translation id="5271549068863921519">Simpan sandi</translation>
 <translation id="5273628206174272911">Navigasi riwayat eksperimental saat menanggapi gulir horizontal.</translation>
+<translation id="5275194674756975076">Oke, segarkan</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> dari situs ini</translation>
 <translation id="5275973617553375938">File yang dipulihkan dari Google Drive</translation>
 <translation id="527605719918376753">Nonaktifkan tab</translation>
@@ -3011,6 +3011,7 @@
 <translation id="5368720394188453070">Ponsel terkunci. Buka kunci untuk masuk.</translation>
 <translation id="5369927996833026114">Temukan Peluncur Aplikasi Chrome</translation>
 <translation id="5370819323174483825">&amp;Muat ulang</translation>
+<translation id="5372066618989754822">Aktifkan akses ke menu IME baru di laman Setelan Bahasa.</translation>
 <translation id="5372529912055771682">Mode pendaftaran yang disediakan tidak didukung oleh versi sistem operasi ini.  Pastikan Anda menjalankan versi terbaru dan coba lagi.</translation>
 <translation id="5374359983950678924">Ubah gambar</translation>
 <translation id="5376169624176189338">Klik untuk mundur, tahan untuk melihat riwayat</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Nama:</translation>
 <translation id="5627086634964711283">Juga mengontrol apa yang ditampilkan laman saat Anda mengeklik tombol Beranda.</translation>
 <translation id="5627259319513858869">Mengaktifkan fitur kanvas eksperimental yang masih dalam pengembangan.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Desain material dalam chrome teratas browser</translation>
 <translation id="5633060877636360447">Tindakan ini akan menghapus setidaknya <ph name="TOTAL_COUNT" /> item dari perangkat ini secara permanen, namun tidak menghapus item yang disinkronkan dari perangkat lain.</translation>
 <translation id="5636996382092289526">Untuk menggunakan <ph name="NETWORK_ID" />, pertama Anda harus <ph name="LINK_START" />mengunjungi laman proses masuk jaringan<ph name="LINK_END" />, yang akan otomatis terbuka dalam beberapa detik. Jika hal itu tidak terjadi, jaringan tidak akan dapat digunakan.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Sorot objek dengan fokus keyboard</translation>
 <translation id="5678955352098267522">Membaca data Anda di <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Pemfilteran teks di Mode Ikhtisar</translation>
+<translation id="5683818630978268777">UI penguncian keyboard eksperimental.</translation>
 <translation id="5684661240348539843">Pengenal Aset</translation>
 <translation id="569068482611873351">Impor...</translation>
 <translation id="56907980372820799">Tautkan data</translation>
@@ -3691,7 +3694,6 @@
 <translation id="6420676428473580225">Tambahkan ke Desktop</translation>
 <translation id="6422329785618833949">Foto dibalik</translation>
 <translation id="642282551015776456">Nama ini tidak dapat digunakan sebagai nama file atau folder</translation>
-<translation id="642322423610046417">Gunakan menu konteks (klik kanan) untuk menghapus ekstensi yang tidak diperlukan.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Gunakan Adobe Reader sebagai penampil PDF baku?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3762,6 +3764,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Layar penuh eksperimental dengan mode penguncian keyboard mewajibkan pengguna menahan Esc untuk keluar.</translation>
 <translation id="6527303717912515753">Bagikan</translation>
 <translation id="6528546217685656218">Kunci Pribadi untuk Sertifikat Klien ini tidak ditemukan atau tidak valid.</translation>
 <translation id="653019979737152879">Menyinkronkan <ph name="FILE_NAME" />...</translation>
@@ -3941,6 +3944,7 @@
 <translation id="6825883775269213504">Rusia</translation>
 <translation id="6827236167376090743">Video ini akan terus berputar sampai sapinya pulang.</translation>
 <translation id="6828153365543658583">Batasi akses masuk hanya untuk pengguna berikut:</translation>
+<translation id="6828860976882136098">Gagal menyiapkan pembaruan otomatis bagi semua pengguna (terjadi error saat mengeksekusi praterbang: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Dapatkan bantuan terkait <ph name="DEVICE_TYPE" /> Anda.</translation>
 <translation id="6829270497922309893">Mendaftar ke organisasi Anda</translation>
 <translation id="6830590476636787791">Animasi transisi di tutorial awal</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">Buka di Tab</translation>
 <translation id="6862635236584086457">Semua file yang disimpan dalam folder ini otomatis dicadangkan secara online</translation>
 <translation id="6865313869410766144">Data formulir IsiOtomatis</translation>
-<translation id="6865319096921627602">Aktifkan saluran pipa media terpadu di Android.</translation>
 <translation id="6867678160199975333">Beralih ke <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Kotak centang yang telah dicentang</translation>
 <translation id="6870130893560916279">Keyboard untuk bahasa Ukraina</translation>
@@ -4058,6 +4061,7 @@
 <translation id="7006017748900345484">Pembuat enkode/dekode video perangkat lunak WebRTC H.264</translation>
 <translation id="7006634003215061422">Batas bawah</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Untuk menjalankan ekstensi ini, Anda perlu menyegarkan laman. Anda dapat menjalankan ekstensi ini secara otomatis di situs ini dengan mengeklik kanan ikon ekstensi.</translation>
 <translation id="7009045250432250765">IsiOtomatis klik tunggal</translation>
 <translation id="7010160495478792664">Dekode video yang dipercepat perangkat keras apabila tersedia.</translation>
 <translation id="7010400591230614821">Strategi rilis tab yang agresif</translation>
@@ -4222,7 +4226,6 @@
 <translation id="7256710573727326513">Buka di tab</translation>
 <translation id="7257173066616499747">Jaringan Wi-Fi</translation>
 <translation id="7257666756905341374">Mengakses data yang Anda salin dan tempel</translation>
-<translation id="7260002739296185724">Aktifkan penggunaan AVFoundation untuk perekaman video dan pemantauan perangkat video di OS X &gt;= 10.7. QTKit akan digunakan sebagai gantinya.</translation>
 <translation id="7260504762447901703">Cabut akses</translation>
 <translation id="7262004276116528033">Layanan masuk ini dihosting oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Pengecualian akses plugin yang tidak dimasukkan kotak pasir</translation>
@@ -4260,7 +4263,6 @@
 <translation id="7314278895724341067">Aktifkan laman offline NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (sedang dipakai)</translation>
 <translation id="7321545336522791733">Server tidak dapat dijangkau</translation>
-<translation id="7324841169865301118">Memungkinkan pengguna memilih tab untuk berbagi desktop.</translation>
 <translation id="7325437708553334317">Ekstensi Kontras Tinggi</translation>
 <translation id="7326565110843845436">Klik tiga jari touchpad</translation>
 <translation id="73289266812733869">Tidak dipilih</translation>
@@ -4478,7 +4480,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> otomatis memasukkan Anda ke situs yang memenuhi syarat menggunakan sandi tersimpan.</translation>
 <translation id="7644029910725868934">Mengaktifkan folder bookmark yang dikelola untuk pengguna yang dilindungi.</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (pemilik)</translation>
-<translation id="7646771353003624501">Memungkinkan browser terbangun dan memuat laman offline secara otomatis di latar belakang.</translation>
+<translation id="7646771353003624501">Memungkinkan browser untuk aktif dan memuat laman offline secara otomatis di latar belakang.</translation>
 <translation id="7646821968331713409">Jumlah untaian raster</translation>
 <translation id="7648048654005891115">Gaya keymap</translation>
 <translation id="7648595706644580203">Pengeditan isyarat untuk keyboard virtual.</translation>
@@ -5010,7 +5012,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto oleh</translation>
 <translation id="8428213095426709021">Setelan</translation>
-<translation id="8432590265309978927">Dukungan yang sangat eksperimental untuk merender iframe antarsitus dalam proses terpisah.</translation>
 <translation id="8432745813735585631">Keyboard Colemak AS</translation>
 <translation id="8434177709403049435">&amp;Pengaksaraan</translation>
 <translation id="8434480141477525001">Port Debug NaCl</translation>
@@ -5207,7 +5208,6 @@
 <translation id="8713979477561846077">Aktifkan koreksi otomatis keyboard fisik untuk keyboard AS, yang dapat memberikan saran saat mengetik di keyboard fisik.</translation>
 <translation id="871476437400413057">Sandi yang disimpan Google</translation>
 <translation id="8714838604780058252">Grafis latar belakang</translation>
-<translation id="8716065142695381595">Mengaktifkan saluran pipa media terpadu (Android dan desktop) di Android.</translation>
 <translation id="8722421161699219904">Keyboard Internasional AS</translation>
 <translation id="872451400847464257">Edit Mesin Telusur</translation>
 <translation id="8724859055372736596">&amp;Tampilkan dalam Folder</translation>
@@ -5227,6 +5227,7 @@
 <translation id="8737685506611670901">Membuka tautan <ph name="PROTOCOL" /> sebagai ganti <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Menyempurnakan posisi isyarat sentuh untuk mengompensasi sentuhan yang memiliki resolusi yang buruk dibandingkan dengan mouse.</translation>
+<translation id="8743712320294854924">Tampilkan opsi masukan yang diluaskan di rak.</translation>
 <translation id="874420130893181774">Metode masukan Pinyin Tradisional</translation>
 <translation id="8744525654891896746">Pilih avatar untuk pengguna yang dilindungi ini</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5296,6 +5297,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Sakelar mode tombol shift</translation>
 <translation id="8852742364582744935">Apikasil dan ekstensi berikut telah ditambahkan:</translation>
+<translation id="8853611566624224021">Mengaktifkan pengambilan file tampilan icc dari Quirks Server untuk kalibrasi warna tampilan.</translation>
 <translation id="885381502874625531">Keyboard Belarusia</translation>
 <translation id="8856844195561710094">Gagal menghentikan pencarian perangkat Bluetooth.</translation>
 <translation id="885701979325669005">Penyimpanan</translation>
@@ -5345,7 +5347,6 @@
 <translation id="8925458182817574960">&amp;Setelan</translation>
 <translation id="8926389886865778422">Jangan tanya lagi</translation>
 <translation id="8926518602592448999">Nonaktifkan Ekstensi Mode Pengembang</translation>
-<translation id="8929454297483336498">Penggunaan API AVFoundation Mac OS X, sebagai ganti QTKit</translation>
 <translation id="8931394284949551895">Perangkat baru</translation>
 <translation id="8932730422557198035">Gunakan API Android Midi</translation>
 <translation id="8933960630081805351">&amp;Tampilkan dalam Penemu</translation>
@@ -5359,6 +5360,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Printer terdeteksi</translation>
 <translation id="8946359700442089734">Fitur debug belum diaktifkan sepenuhnya di perangkat <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Mengaktifkan dukungan WebUSB.</translation>
 <translation id="89515141420106838">Mengaktifkan aplikasi Galeri Toko Web Chrome untuk driver printer. Aplikasi ini akan menelusuri ekstensi yang mendukung pencetakan ke printer USB dengan ID USB khusus di Toko Web Chrome.</translation>
 <translation id="895347679606913382">Memulai...</translation>
 <translation id="8954952943849489823">Pemindahan gagal, terjadi kesalahan tak diduga: $1</translation>
@@ -5502,6 +5504,7 @@
 <translation id="9154194610265714752">Diperbarui</translation>
 <translation id="9154418932169119429">Gambar ini tidak tersedia secara offline.</translation>
 <translation id="91568222606626347">Membuat Pintasan...</translation>
+<translation id="9157697743260533322">Gagal menyiapkan pembaruan otomatis untuk semua pengguna (terjadi error saat meluncurkan praterbang: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ups! Terjadi masalah komunikasi jaringan selama autentikasi. Periksa sambungan jaringan Anda dan coba lagi.</translation>
 <translation id="9159562891634783594">Mengaktifkan pendaftaran printer awan yang belum didaftarkan dari pratinjau cetak.</translation>
 <translation id="9166510596677678112">Kirimkan email ke orang ini</translation>
@@ -5513,7 +5516,6 @@
 <translation id="9170848237812810038">&amp;Urung</translation>
 <translation id="9170884462774788842">Program lain di komputer Anda menambahkan tema yang dapat mengubah cara kerja Chrome.</translation>
 <translation id="9177499212658576372">Saat ini Anda tersambung ke jaringan <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Kelola kartu kredit</translation>
 <translation id="917858577839511832">Negosiasi dengan DTLS 1.2 untuk WebRTC</translation>
 <translation id="917861274483335838">Kelola pemblokiran plugin...</translation>
 <translation id="9179348476548754105">Cara pengelola sandi menangani isi otomatis kredensial sinkronisasi, hanya untuk laman autentikasi ulang transaksi.</translation>
@@ -5556,7 +5558,7 @@
 <translation id="951981865514037445"><ph name="URL" /> ingin menggunakan lokasi perangkat Anda.</translation>
 <translation id="952838760238220631">Aktifkan dukungan Enkode Konten Brotli.</translation>
 <translation id="952992212772159698">Tidak diaktifkan</translation>
-<translation id="953000875543358078">Tindakan ini memakan waktu beberapa menit</translation>
+<translation id="953000875543358078">Tindakan ini dapat memakan waktu beberapa menit</translation>
 <translation id="960987915827980018">Sekitar 1 jam lagi</translation>
 <translation id="96421021576709873">Jaringan Wi-Fi</translation>
 <translation id="965490406356730238">Mengaktifkan dekode mjpeg dengan percepatan perangkat keras untuk bingkai yang dijepret jika tersedia.</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index b1c25e4..4488d54c 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -159,7 +159,6 @@
     Devi configurare nuovamente il profilo.<ph name="BR" />
     <ph name="BR" />
     Nella seguente schermata, invia un feedback per aiutarci a risolvere il problema.</translation>
-<translation id="1216954813581739968">Attiva scheda per condivisione desktop.</translation>
 <translation id="121827551500866099">Mostra tutti i download...</translation>
 <translation id="122082903575839559">Algoritmo di firma certificato</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 con crittografia RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL con %s al posto della query</translation>
 <translation id="1546280085599573572">Questa estensione ha cambiato la pagina mostrata quando fai clic sul pulsante Pagina iniziale.</translation>
 <translation id="1546795794523394272">Benvenuto in Chromebox per videoconferenze.</translation>
+<translation id="1547572086206517271">Aggiornamento necessario</translation>
 <translation id="1547964879613821194">Inglese canadese</translation>
 <translation id="1548132948283577726">I siti che non salvano mai le password verranno visualizzati qui.</translation>
 <translation id="1549045574060481141">Conferma download</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Consente di attivare la memorizzazione in locale delle pagine visitate di recente da utilizzare offline. È necessario attivare le pagine offline.</translation>
 <translation id="1891668193654680795">Considera attendibile questo certificato per l'identificazione dei creatori di software.</translation>
 <translation id="189210018541388520">Apri a schermo intero</translation>
+<translation id="1892754076732315533">Una nuova esperienza utente semplificata per gli stati di blocco del puntatore del mouse e di schermo intero attivati nelle pagine.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Flusso di provisioning della cloud non riuscito</translation>
 <translation id="189358972401248634">Altre lingue</translation>
@@ -1320,6 +1321,7 @@
 <translation id="288042212351694283">Accesso ai tuoi dispositivi Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Ultimo accesso:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> verrà riavviato e ripristinato tra poco</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2887525882758501333">Documento PDF</translation>
 <translation id="2888807692577297075">Nessun elemento corrispondente a &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1748,6 +1750,7 @@
 <translation id="3479552764303398839">Non adesso</translation>
 <translation id="3480892288821151001">Aggancia la finestra a sinistra</translation>
 <translation id="3481915276125965083">I seguenti popup sono stati bloccati in questa pagina:</translation>
+<translation id="3482214069979148937">Tieni premuto |<ph name="ACCELERATOR" />| per uscire dalla modalità a schermo intero</translation>
 <translation id="3484869148456018791">Richiedi nuovo certificato</translation>
 <translation id="3487007233252413104">funzione anonima</translation>
 <translation id="348771913750618459">Flussi di accesso basati su iframe</translation>
@@ -1842,7 +1845,6 @@
 <translation id="3593965109698325041">Vincoli nomi certificati</translation>
 <translation id="3595596368722241419">Batteria carica</translation>
 <translation id="3600456501114769456">L'accesso ai file locali sul tuo dispositivo è stato disattivato dal tuo amministratore.</translation>
-<translation id="3601395307734599350">Qui puoi trovare tutte le tue estensioni</translation>
 <translation id="3603385196401704894">Francese canadese</translation>
 <translation id="3603622770190368340">Ottieni certificato di rete</translation>
 <translation id="3605780360466892872">Ventiquattrore</translation>
@@ -2225,7 +2227,6 @@
 <translation id="4151403195736952345">Utilizza impostazioni predefinite globali (Rileva)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 scheda}other{# schede}}</translation>
 <translation id="4154664944169082762">Impronte digitali</translation>
-<translation id="4157188838832721931">Consente di disattivare la richiesta all'utente della sua password del sistema operativo prima di visualizzare le password nella relativa pagina.</translation>
 <translation id="4157869833395312646">Server Gated Cryptography Microsoft</translation>
 <translation id="4158739975813877944">Apri playlist</translation>
 <translation id="4159681666905192102">Si tratta di un account di minori gestito da <ph name="CUSTODIAN_EMAIL" /> e <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2269,7 +2270,6 @@
 <translation id="4218259925454408822">Accedi a un altro account</translation>
 <translation id="4219614746733932747">Se attivi questa opzione, Blink utilizza il proprio meccanismo di zoom per ridimensionare i contenuti per il fattore di scala del dispositivo.</translation>
 <translation id="4220865787605972627">Consente di attivare la calibrazione del colore del display se quest'ultimo la supporta.</translation>
-<translation id="4233506668751282421">Attiva audio per condivisione desktop</translation>
 <translation id="4235200303672858594">Schermo intero</translation>
 <translation id="4235813040357936597">Aggiungi account per <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> non può essere visualizzato in questa lingua</translation>
@@ -2277,7 +2277,6 @@
 <translation id="4242577469625748426">Installazione delle impostazioni criterio sul dispositivo non riuscita. <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> vuole disattivare il puntatore del mouse.</translation>
 <translation id="424546999567421758">È stato rilevato un elevato utilizzo del disco</translation>
-<translation id="4247072926966606568">Se questo flag è selezionato, la finestra del selettore per la condivisione desktop consente all'utente di scegliere se condividere l'audio.</translation>
 <translation id="424726838611654458">Apri sempre in Adobe Reader</translation>
 <translation id="4249248555939881673">In attesa della connessione di rete...</translation>
 <translation id="4249373718504745892">A questa pagina è stato impedito l'accesso alla webcam e al microfono.</translation>
@@ -2350,7 +2349,6 @@
 <translation id="4358697938732213860">Aggiungi un indirizzo</translation>
 <translation id="4359408040881008151">Installata a causa di estensioni dipendenti.</translation>
 <translation id="4361190688154226069">Targeting basato su rettangolo nelle visualizzazioni</translation>
-<translation id="4363372140743955595">Nuova autenticazione Gestione password</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> scaricato</translation>
 <translation id="4364830672918311045">Mostra notifiche</translation>
 <translation id="4365673000813822030">Spiacenti, la sincronizzazione si è interrotta.</translation>
@@ -2407,6 +2405,7 @@
 <translation id="4449935293120761385">Informazioni su Compilazione automatica</translation>
 <translation id="4449996769074858870">In questa scheda c'è audio in riproduzione.</translation>
 <translation id="4450974146388585462">Diagnostica</translation>
+<translation id="4452426408005428395">Non importa</translation>
 <translation id="4454939697743986778">Questo certificato è stato installato dall'amministratore di sistema.</translation>
 <translation id="445923051607553918">Connetti a rete Wi-Fi</translation>
 <translation id="4462159676511157176">Assegna nomi personalizzati a server</translation>
@@ -2484,7 +2483,6 @@
 <translation id="4594109696316595112">Un'unica attivazione. Digita la password per attivare Smart Lock su questo dispositivo <ph name="DEVICE_TYPE" />. La funzione Smart Lock ti consente di sbloccare il dispositivo con il telefono, senza dover digitare la password. Per modificare o disattivare questa funzione, accedi alle impostazioni del dispositivo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Le app e le estensioni possono essere modificate solo dal gestore (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF Convertor</translation>
-<translation id="4601250583401186741">Accoppia con un controller</translation>
 <translation id="4602466770786743961">Consenti sempre a <ph name="HOST" /> di accedere alla webcam e al microfono</translation>
 <translation id="4605399136610325267">Non connesso a Internet</translation>
 <translation id="4608500690299898628">&amp;Trova...</translation>
@@ -2777,6 +2775,7 @@
 <translation id="5039804452771397117">Consenti</translation>
 <translation id="5045550434625856497">Password non corretta</translation>
 <translation id="5048179823246820836">Nordico</translation>
+<translation id="5048294425697652159">Attiva calibrazione dello schermo per Quirks Client.</translation>
 <translation id="5053604404986157245">La password TPM generata in modo casuale non è disponibile, ma è normale dopo un Powerwash.</translation>
 <translation id="5053803681436838483">Nuovo indirizzo di spedizione...</translation>
 <translation id="5055309315264875868">Consente di visualizzare nella pagina di impostazioni di gestione password un link per gestire le password sincronizzate online.</translation>
@@ -2874,7 +2873,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Gesto obbligatorio per la riproduzione di contenuti multimediali</translation>
 <translation id="5189060859917252173">Il certificato "<ph name="CERTIFICATE_NAME" />" rappresenta un'autorità di certificazione.</translation>
-<translation id="5196117515621749903">Ricarica ignorando la cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronizzazione completata.</translation>
@@ -2889,6 +2887,7 @@
 <translation id="521582610500777512">La foto è stata eliminata</translation>
 <translation id="5218183485292899140">Francese svizzero</translation>
 <translation id="5218766986344577658">Popup per rimuovere l'ambiguità dei link</translation>
+<translation id="5220992698394817380">Attiva menu IME</translation>
 <translation id="5222676887888702881">Esci</translation>
 <translation id="5225324770654022472">Mostra scorciatoia app</translation>
 <translation id="5227536357203429560">Aggiungi rete privata...</translation>
@@ -2931,6 +2930,7 @@
 <translation id="5271247532544265821">Attiva/disattiva modalità cinese tradizionale/cinese semplificato</translation>
 <translation id="5271549068863921519">Salva password</translation>
 <translation id="5273628206174272911">Navigazione sperimentale nella cronologia in risposta allo scorrimento orizzontale.</translation>
+<translation id="5275194674756975076">OK, aggiorna</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> da questo sito</translation>
 <translation id="5275973617553375938">File recuperati da Google Drive</translation>
 <translation id="527605719918376753">Disattiva audio scheda</translation>
@@ -3004,6 +3004,7 @@
 <translation id="5368720394188453070">Il telefono è stato bloccato. Sbloccalo per accedere.</translation>
 <translation id="5369927996833026114">Scopri Avvio applicazioni di Chrome</translation>
 <translation id="5370819323174483825">&amp;Ricarica</translation>
+<translation id="5372066618989754822">Attiva l'accesso al nuovo menu IME nella pagina Impostazioni lingua.</translation>
 <translation id="5372529912055771682">La modalità di iscrizione specificata non è supportata da questa versione del sistema operativo. Assicurati che sia installata l'ultima versione e riprova.</translation>
 <translation id="5374359983950678924">Cambia immagine</translation>
 <translation id="5376169624176189338">Fai clic per tornare indietro, tieni premuto per vedere la cronologia</translation>
@@ -3189,6 +3190,7 @@
 <translation id="5626134646977739690">Nome:</translation>
 <translation id="5627086634964711283">Controlla anche la pagina visualizzata quando fai clic sul pulsante Pagina iniziale.</translation>
 <translation id="5627259319513858869">Consente l'utilizzo di funzioni canvas sperimentali che sono ancora in fase di sviluppo.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design nel riquadro superiore del browser</translation>
 <translation id="5633060877636360447">Verranno eliminati definitivamente almeno <ph name="TOTAL_COUNT" /> elementi da questo dispositivo, ma non verranno cancellati gli elementi sincronizzati da altri dispositivi.</translation>
 <translation id="5636996382092289526">Per poter utilizzare la rete <ph name="NETWORK_ID" />, potrebbe essere necessario <ph name="LINK_START" />visitare la pagina di accesso della rete<ph name="LINK_END" />, che si aprirà automaticamente tra alcuni secondi. In caso contrario, non è possibile utilizzare la rete.</translation>
@@ -3219,6 +3221,7 @@
 <translation id="5678862612529498267">Evidenzia l'oggetto tramite l'elemento attivo della tastiera</translation>
 <translation id="5678955352098267522">Lettura dei dati su <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Applicazione di filtri mediante inserimento di testo in modalità Panoramica</translation>
+<translation id="5683818630978268777">Interfaccia utente sperimentale con blocco della tastiera.</translation>
 <translation id="5684661240348539843">Identificatore asset</translation>
 <translation id="569068482611873351">Importa...</translation>
 <translation id="56907980372820799">Collega dati</translation>
@@ -3684,7 +3687,6 @@
 <translation id="6420676428473580225">Aggiungi al desktop</translation>
 <translation id="6422329785618833949">Foto capovolta orizzontalmente</translation>
 <translation id="642282551015776456">Questo nome non può essere utilizzato per un file o una cartella</translation>
-<translation id="642322423610046417">Utilizza il menu contestuale (visualizzabile facendo clic con il pulsante destro del mouse) per rimuovere le estensioni che non ti servono.</translation>
 <translation id="6423239382391657905">VPN aperta</translation>
 <translation id="6423731501149634044">Utilizzare Adobe Reader come visualizzatore di file PDF predefinito?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3755,6 +3757,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Schermo intero sperimentale con modalità di blocco della tastiera, da cui gli utenti possono uscire tenendo premuto ESC.</translation>
 <translation id="6527303717912515753">Condividi</translation>
 <translation id="6528546217685656218">La chiave privata per il certificato client manca o non è valida.</translation>
 <translation id="653019979737152879">Sincronizzazione del file <ph name="FILE_NAME" /> in corso...</translation>
@@ -3934,6 +3937,7 @@
 <translation id="6825883775269213504">Russo</translation>
 <translation id="6827236167376090743">La riproduzione di questo video continuerà indefinitamente.</translation>
 <translation id="6828153365543658583">Limita l'accesso ai seguenti utenti</translation>
+<translation id="6828860976882136098">Impostazione degli aggiornamenti automatici per tutti gli utenti non riuscita (errore di esecuzione preliminare: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Ricevi assistenza per il tuo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registra nella tua organizzazione</translation>
 <translation id="6830590476636787791">Transizioni animate nel tutorial alla prima esecuzione</translation>
@@ -3957,7 +3961,6 @@
 <translation id="6860427144121307915">Apri in una scheda</translation>
 <translation id="6862635236584086457">Per tutti i file salvati in questa cartella viene effettuato automaticamente il backup online</translation>
 <translation id="6865313869410766144">Dati della Compilazione automatica dei moduli</translation>
-<translation id="6865319096921627602">Attiva la pipeline dei media unificata su Android.</translation>
 <translation id="6867678160199975333">Passa a <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Casella di controllo selezionata</translation>
 <translation id="6870130893560916279">Tastiera ucraina</translation>
@@ -4052,6 +4055,7 @@
 <translation id="7006017748900345484">Software di codifica/decodifica video WebRTC H.264</translation>
 <translation id="7006634003215061422">Margine inferiore</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Per eseguire l'estensione è necessario aggiornare la pagina. Puoi eseguire automaticamente l'estensione su questo sito facendo clic con il pulsante destro del mouse sulla relativa icona.</translation>
 <translation id="7009045250432250765">Compilazione automatica con singolo clic</translation>
 <translation id="7010160495478792664">Decodifica video con accelerazione hardware dove disponibile.</translation>
 <translation id="7010400591230614821">Strategia aggressiva di rilascio delle schede</translation>
@@ -4216,7 +4220,6 @@
 <translation id="7256710573727326513">Apri in una scheda</translation>
 <translation id="7257173066616499747">Reti Wi-Fi</translation>
 <translation id="7257666756905341374">Lettura dei dati copiati e incollati</translation>
-<translation id="7260002739296185724">Consente di attivare l'utilizzo di AVFoundation per l'acquisizione di video e il monitoraggio di dispositivi video su OS X &gt;= 10.7. In caso contrario verrà utilizzato QTKit.</translation>
 <translation id="7260504762447901703">Revoca accesso</translation>
 <translation id="7262004276116528033">Questo servizio di accesso è in hosting su <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Eccezioni all'accesso con plug-in senza sandbox</translation>
@@ -4254,7 +4257,6 @@
 <translation id="7314278895724341067">Attiva le pagine offline nella pagina Nuova scheda</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (corrente)</translation>
 <translation id="7321545336522791733">Server non raggiungibile</translation>
-<translation id="7324841169865301118">Consente agli utenti di scegliere una scheda per la condivisione del desktop.</translation>
 <translation id="7325437708553334317">Estensione Contrasto elevato</translation>
 <translation id="7326565110843845436">Clic con tre dita su touchpad</translation>
 <translation id="73289266812733869">Deselezionato</translation>
@@ -4995,7 +4997,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto di</translation>
 <translation id="8428213095426709021">Impostazioni</translation>
-<translation id="8432590265309978927">Supporto altamente sperimentale del rendering di iframe tra siti in processi separati.</translation>
 <translation id="8432745813735585631">Tastiera Colemak USA</translation>
 <translation id="8434177709403049435">&amp;Codifica</translation>
 <translation id="8434480141477525001">Porta di debug NaCl</translation>
@@ -5192,7 +5193,6 @@
 <translation id="8713979477561846077">Consente di attivare la correzione automatica per la tastiera fisica americana, che può fornire suggerimenti durante la digitazione con la tastiera fisica.</translation>
 <translation id="871476437400413057">Password Google salvate</translation>
 <translation id="8714838604780058252">Grafica in background</translation>
-<translation id="8716065142695381595">Consente di attivare la pipeline dei media unificata (Android e desktop) su Android.</translation>
 <translation id="8722421161699219904">Tastiera internazionale americana</translation>
 <translation id="872451400847464257">Modifica motore di ricerca</translation>
 <translation id="8724859055372736596">Mo&amp;stra nella cartella</translation>
@@ -5212,6 +5212,7 @@
 <translation id="8737685506611670901">Aprire link <ph name="PROTOCOL" /> anziché <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Consente di perfezionare la posizione dei gesti di tocco poiché i tocchi hanno un grado di precisione inferiore rispetto al puntatore di un mouse.</translation>
+<translation id="8743712320294854924">Mostra opzioni di immissione estese nella shelf.</translation>
 <translation id="874420130893181774">Metodo di immissione Pinyin tradizionale</translation>
 <translation id="8744525654891896746">Seleziona un avatar per questo utente controllato</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5281,6 +5282,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Passaggio a modalità tasto Maiusc</translation>
 <translation id="8852742364582744935">Sono state aggiunte le seguenti applicazioni ed estensioni:</translation>
+<translation id="8853611566624224021">Attiva recupero file icc dello schermo da Quirks Server per la calibrazione dei colori.</translation>
 <translation id="885381502874625531">Tastiera Bielorusso</translation>
 <translation id="8856844195561710094">Impossibile interrompere il rilevamento del dispositivo Bluetooth.</translation>
 <translation id="885701979325669005">Memoria</translation>
@@ -5330,7 +5332,6 @@
 <translation id="8925458182817574960">&amp;Impostazioni</translation>
 <translation id="8926389886865778422">Non visualizzare più questo avviso</translation>
 <translation id="8926518602592448999">Disattiva estensioni in modalità sviluppatore</translation>
-<translation id="8929454297483336498">Utilizzo delle API Mac OS X AVFoundation anziché di QTKit</translation>
 <translation id="8931394284949551895">Nuovi dispositivi</translation>
 <translation id="8932730422557198035">Utilizza l'API Android Midi</translation>
 <translation id="8933960630081805351">Mo&amp;stra nel Finder</translation>
@@ -5344,6 +5345,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Stampante rilevata</translation>
 <translation id="8946359700442089734">Le funzioni di debug non sono state attivate completamente su questo dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Attiva supporto WebUSB.</translation>
 <translation id="89515141420106838">Consente di attivare l'app Chrome Web Store Gallery per i driver delle stampanti. L'app cerca nel Chrome Web Store estensioni che supportino la stampa tramite stampante USB con uno specifico ID USB.</translation>
 <translation id="895347679606913382">Avvio download in corso...</translation>
 <translation id="8954952943849489823">Spostamento non riuscito, errore imprevisto: $1</translation>
@@ -5487,6 +5489,7 @@
 <translation id="9154194610265714752">Aggiornato</translation>
 <translation id="9154418932169119429">Questa immagine non è disponibile offline.</translation>
 <translation id="91568222606626347">Crea scorciatoia...</translation>
+<translation id="9157697743260533322">Impostazione degli aggiornamenti automatici per tutti gli utenti non riuscita (errore di avvio preliminare: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Spiacenti. Si è verificato un problema di comunicazione sulla rete durante l'autenticazione. Controlla la connessione di rete e riprova.</translation>
 <translation id="9159562891634783594">Consente di attivare la registrazione di stampanti cloud non registrate dall'anteprima di stampa.</translation>
 <translation id="9166510596677678112">Invia email a questa persona</translation>
@@ -5498,7 +5501,6 @@
 <translation id="9170848237812810038">&amp;Annulla</translation>
 <translation id="9170884462774788842">Un altro programma sul computer ha aggiunto un tema che potrebbe modificare il funzionamento di Chrome.</translation>
 <translation id="9177499212658576372">Al momento sei collegato alla rete <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gestisci carte di credito</translation>
 <translation id="917858577839511832">Negoziazione con DTLS 1.2 per WebRTC</translation>
 <translation id="917861274483335838">Gestisci il blocco dei plug-in...</translation>
 <translation id="9179348476548754105">Modalità di gestione in gestione password della compilazione automatica della credenziale di sincronizzazione solo per le pagine di riautenticazione relative alle transazioni.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 0fade060..a583a60 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -73,7 +73,7 @@
 <translation id="1104652314727136854">‏הפעל שילוב מערכת הפעלה של שיוכי קבצים עבור יישומי Chrome.</translation>
 <translation id="1105162038795579389">החבילה "<ph name="BUNDLE_NAME" />" מוסיפה את האפליקציות והתוספים האלה בשביל <ph name="USER_NAME" />:</translation>
 <translation id="1108600514891325577">&amp;הפסק</translation>
-<translation id="1108685299869803282">למעלה מ-80% מהאנשים שרואים אזהרה זו מעדיפים לבחור באפשרות הבטוחה במקום להסתכן בתוכנה זדונית. עם זאת, אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
+<translation id="1108685299869803282">למעלה מ-80% מהאנשים שרואים אזהרה זו מעדיפים לבחור באפשרות הבטוחה במקום להסתכן בתוכנה זדונית. עם זאת, אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
 <translation id="110918622319006905">‏VPN של צד שלישי</translation>
 <translation id="1110155001042129815">המתן</translation>
 <translation id="1110753181581583968">{NUM_DOWNLOAD,plural, =1{המשך את ההורדה}two{המשך את ההורדות}many{המשך את ההורדות}other{המשך את ההורדות}}</translation>
@@ -159,7 +159,6 @@
     עליך להגדיר את הפרופיל פעם נוספת.<ph name="BR" />
     <ph name="BR" />
     במסך הבא, שלח אלינו משוב כדי לעזור לנו לתקן את הבעיה.</translation>
-<translation id="1216954813581739968">הפעלת כרטיסייה לשיתוף שולחן עבודה.</translation>
 <translation id="121827551500866099">הצג את כל ההורדות...</translation>
 <translation id="122082903575839559">אלגוריתם חתימה של אישור </translation>
 <translation id="1221024147024329929">‏PKCS #1 MD2 עם הצפנת RSA</translation>
@@ -386,6 +385,7 @@
 <translation id="1545786162090505744">‏כתובת אתר עם %s במקום שאילתה</translation>
 <translation id="1546280085599573572">התוסף הזה שינה את הדף שמוצג כשאתה לוחץ על הלחצן 'דף הבית'.</translation>
 <translation id="1546795794523394272">‏ברוך הבא ל-Chromebox לפגישות!</translation>
+<translation id="1547572086206517271">נדרש רענון</translation>
 <translation id="1547964879613821194">אנגלית קנדית</translation>
 <translation id="1548132948283577726">אתרים שלעולם אינם שומרים סיסמאות יופיעו כאן.</translation>
 <translation id="1549045574060481141">אשר הורדה</translation>
@@ -530,7 +530,7 @@
 <translation id="1744108098763830590">דף רקע</translation>
 <translation id="1747687775439512873">‏השבת את WiMAX</translation>
 <translation id="174773101815569257">נעילת עכבר</translation>
-<translation id="174937106936716857">ספירת הקבצים הכוללת</translation>
+<translation id="174937106936716857">מספר הקבצים הכולל</translation>
 <translation id="1749854530031883739">‏הצג את רקעי החלון האפורים ב-TouchView (מצב גודל מקסימלי) מאחורי חלונות שלא ניתן להגדיל לגודל מקסימלי.</translation>
 <translation id="17513872634828108">כרטיסיות פתוחות</translation>
 <translation id="175196451752279553">פ&amp;תח מחדש את הכרטיסייה הסגורה</translation>
@@ -614,10 +614,11 @@
 <translation id="1891196807951270080">אפשר אחסון של דפים שבהם ביקרת לאחרונה לשימוש לא מקוון. יש להפעיל לשם כך דפים במצב לא מקוון.</translation>
 <translation id="1891668193654680795">בטח באישור זה לזיהוי יצרני תוכנה.</translation>
 <translation id="189210018541388520">פתח מסך מלא</translation>
+<translation id="1892754076732315533">חוויית משתמש חדשה ופשוטה יותר בעת מעבר למסך מלא שהופעל על ידי דף או למצבי נעילה של סמן העכבר.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">תהליך ההקצאות לענן נכשל</translation>
 <translation id="189358972401248634">שפות אחרות</translation>
-<translation id="1894288435579641697">הדגש את סימן הקארה (בעת עריכת טקסט)</translation>
+<translation id="1894288435579641697">הדגש את סימן הקארה (בעריכת טקסט)</translation>
 <translation id="1895658205118569222">כיבוי</translation>
 <translation id="1895934970388272448">עליך לאשר את הרישום במדפסת כדי לסיים תהליך זה - בדוק את המדפסת כעת.</translation>
 <translation id="1897762215429052132">הגדרה של חיבור רשת, שפה, פריסת מקלדת...</translation>
@@ -983,7 +984,7 @@
 <translation id="2448312741937722512">סוג</translation>
 <translation id="2449267011068443460">אל תאפשר</translation>
 <translation id="2450223707519584812">‏לא תוכל להוסיף משתמשים מפני שהמפתחות של Google API חסרים. לפרטים, עבור אל <ph name="DETAILS_URL" />.</translation>
-<translation id="2450531422290975480">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> (לא מומלץ) לפני הסרת התכניות המסוכנות.</translation>
+<translation id="2450531422290975480">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> (לא מומלץ) לפני הסרת התכניות המסוכנות.</translation>
 <translation id="2452539774207938933">עבור למשתמש: <ph name="PROFILE_NAME" /></translation>
 <translation id="2453021845418314664">הגדרות סנכרון מתקדמות</translation>
 <translation id="2453576648990281505">הקובץ כבר קיים</translation>
@@ -1061,7 +1062,7 @@
 <translation id="2554553592469060349">‏הקובץ שנבחר גדול מדי (גודל מרבי: ‎3mb).</translation>
 <translation id="255632937203580977">הודעות על גילוי מכשירים</translation>
 <translation id="2557899542277210112">לגישה מהירה, מקם כאן את הסימניות שלך בסרגל הסימניות.</translation>
-<translation id="2558578666171469771">‏חנות Google Play זמינה כעת ב-<ph name="DEVICE_TYPE" /> שלך</translation>
+<translation id="2558578666171469771">‏חנות Google Play זמינה עכשיו ב-<ph name="DEVICE_TYPE" /> שלך</translation>
 <translation id="255937426064304553">ארה"ב - בינלאומית</translation>
 <translation id="2560633531288539217">ניהול פעילות קול ואודיו</translation>
 <translation id="2562685439590298522">מסמכים</translation>
@@ -1313,6 +1314,7 @@
 <translation id="288042212351694283">‏גישה למכשירי Universal 2nd Factor שלך</translation>
 <translation id="2881966438216424900">גישה אחרונה:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> יבצע אתחול ואיפוס בעוד מספר רגעים</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">מנהל המשימות</translation>
 <translation id="2887525882758501333">‏מסמך PDF</translation>
 <translation id="2888807692577297075">‏אין פריטים התואמים ל-&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1510,7 +1512,7 @@
 <translation id="3158564748719736353">אם ההגדרה מופעלת, מוצגת הודעה כשהמכשיר מחובר לרשת המצריכה כניסה דרך פורטל חובה.</translation>
 <translation id="3160041952246459240">יש לך אישורים בקובץ המזהים שרתים אלה:</translation>
 <translation id="316125635462764134">הסר יישום</translation>
-<translation id="3162559335345991374">‏ייתכן שתידרש לבקר בדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש.</translation>
+<translation id="3162559335345991374">‏ייתכן שתידרש להיכנס לדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש.</translation>
 <translation id="316307797510303346">הצג את האתרים שבהם משתמש זה מבקר מתוך <ph name="CUSTODIAN_EMAIL" /> ושלוט בהם. פרטי הכניסה שלך אינם עדכניים.</translation>
 <translation id="3166571619128686629">‏לחץ או אמור "Ok Google" כדי להתחיל חיפוש קולי</translation>
 <translation id="3170072451822350649">ניתן גם לדלג על הכניסה ו<ph name="LINK_START" />לגלוש כאורח<ph name="LINK_END" />.</translation>
@@ -1587,7 +1589,7 @@
 <translation id="3277710850168074473">הצורך בתנועת משתמש להפעלה של רכיבי מדיה. השבתת התכונה הזו תאפשר הפעלה אוטומטית.</translation>
 <translation id="3280237271814976245">שמור &amp;בשם...</translation>
 <translation id="3280431534455935878">מכין</translation>
-<translation id="3284674070818187654">‏Google עשויה להשתמש בהיסטוריית הגלישה שלך כדי להתאים אישית את החיפוש ושירותי Google אחרים. תוכל לשנות את ההגדרות האלה בכתובת myaccount.google.com.</translation>
+<translation id="3284674070818187654">‏Google עשויה להשתמש בהיסטוריית הגלישה שלך כדי להתאים אישית את החיפוש ושירותים נוספים של Google. תוכל לשנות את ההגדרות האלה בכתובת myaccount.google.com.</translation>
 <translation id="3285322247471302225">כרטיסייה &amp;חדשה</translation>
 <translation id="3288047731229977326">תוספים הרצים במצב מפתח יכולים להזיק למחשב שלך. אם אינך מפתח, עליך להשבית את התוספים הרצים במצב מפתח כדי לשמור על ביטחונך.</translation>
 <translation id="3289566588497100676">קלט סמלים קל</translation>
@@ -1742,6 +1744,7 @@
 <translation id="3479552764303398839">לא עכשיו</translation>
 <translation id="3480892288821151001">עגן חלון לשמאל</translation>
 <translation id="3481915276125965083">ההודעות הקופצות הבאות נחסמו בדף זה:</translation>
+<translation id="3482214069979148937">הקש באריכות על |<ph name="ACCELERATOR" />| כדי לצאת ממסך מלא</translation>
 <translation id="3484869148456018791">קבל אישור חדש</translation>
 <translation id="3487007233252413104">פונקציה אנונימית</translation>
 <translation id="348771913750618459">‏תהליכי כניסה מבוססי iframe</translation>
@@ -1802,7 +1805,7 @@
 <translation id="3561217442734750519">ערך קלט עבור מפתח פרטי חייב להיות נתיב חוקי.</translation>
 <translation id="3563432852173030730">לא ניתן היה להוריד את יישום הקיוסק.</translation>
 <translation id="3563701887348306786">‏תמיכה ב-WebRTC לקידוד זרמי וידאו באמצעות חומרת פלטפורמה.</translation>
-<translation id="3564334271939054422">‏ייתכן שתתבקש לבקר בדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש (<ph name="NETWORK_ID" />).</translation>
+<translation id="3564334271939054422">‏ייתכן שתתבקש להיכנס לדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש (<ph name="NETWORK_ID" />).</translation>
 <translation id="3564708465992574908">רמות מרחק התצוגה</translation>
 <translation id="356512994079769807">הגדרות התקנת המערכת</translation>
 <translation id="3569382839528428029">האם אתה רוצה ש-<ph name="APP_NAME" /> ישתף את המסך שלך?</translation>
@@ -1836,7 +1839,6 @@
 <translation id="3593965109698325041">מגבלות שם אישור </translation>
 <translation id="3595596368722241419">סוללה מלאה</translation>
 <translation id="3600456501114769456">מנהל המערכת ביטל את הגישה לקבצים מקומיים במכשיר שלך.</translation>
-<translation id="3601395307734599350">כל התוספים שלך כאן</translation>
 <translation id="3603385196401704894">צרפתית קנדית</translation>
 <translation id="3603622770190368340">השג אישור רשת</translation>
 <translation id="3605780360466892872">מר מכופתר</translation>
@@ -1914,7 +1916,7 @@
 <translation id="3696411085566228381">ללא</translation>
 <translation id="3697100740575341996">‏מנהל ה-IT שלך השבית את התוספות ל-Chrome עבור המכשיר שלך. <ph name="MORE_INFO_LINK" /></translation>
 <translation id="3699624789011381381">כתובת אימייל</translation>
-<translation id="3704162925118123524">ייתכן שתוצג דרישה לבקר בדף ההתחברות של הרשת שבה אתה משתמש.</translation>
+<translation id="3704162925118123524">ייתכן שתוצג דרישה להיכנס לדף ההתחברות של הרשת שבה אתה משתמש.</translation>
 <translation id="3704331259350077894">הפסקת פעולה</translation>
 <translation id="3705722231355495246">-</translation>
 <translation id="370665806235115550">טוען...</translation>
@@ -1939,7 +1941,7 @@
 <translation id="3730639321086573427">יעדים מקומיים</translation>
 <translation id="3733127536501031542">‏שרת SSL עם הגברה</translation>
 <translation id="3734816294831429815"><ph name="PRODUCT_NAME" /> יופעל מחדש בתוך <ph name="SECONDS" /> שניות.</translation>
-<translation id="3736520371357197498">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
+<translation id="3736520371357197498">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
 <translation id="3738924763801731196"><ph name="OID" />:</translation>
 <translation id="3739798227959604811">השהייה לפני חזרה:</translation>
 <translation id="3741158646617793859"><ph name="DEVICE_NAME" /> יופיע כעת במסוף הניהול</translation>
@@ -2155,7 +2157,7 @@
 <translation id="4059285154003114015">&amp;הדפס מסגרת...</translation>
 <translation id="406070391919917862">יישומים ברקע</translation>
 <translation id="4062251648694601778">תיהנה ממכשיר <ph name="SHORT_PRODUCT_NAME" /> שלך. יש לך שאלות? תוכל תמיד לקבל עזרה על ידי לחיצה על הסמל "?" שמופיע במגש הסטטוס.</translation>
-<translation id="4065876735068446555">ייתכן שתוצג דרישה לבקר בדף ההתחברות של הרשת שבה אתה משתמש (<ph name="NETWORK_ID" />).</translation>
+<translation id="4065876735068446555">ייתכן שתוצג דרישה להיכנס לדף ההתחברות של הרשת שבה אתה משתמש (<ph name="NETWORK_ID" />).</translation>
 <translation id="4068506536726151626">דף זה מכיל אלמנטים מהאתרים הבאים העוקבים אחר המיקום שלך:</translation>
 <translation id="4070370845051020638">שיטת קלט קנטונזית</translation>
 <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: כניסה שגויה</translation>
@@ -2219,7 +2221,6 @@
 <translation id="4151403195736952345">השתמש בברירת מחדל גלובלית (זיהוי)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{כרטיסייה אחת}two{# כרטיסיות}many{# כרטיסיות}other{# כרטיסיות}}</translation>
 <translation id="4154664944169082762">טביעות אצבע</translation>
-<translation id="4157188838832721931">השבת בקשות מהמשתמש להזין את הסיסמה של מערכת ההפעלה לפני חשיפת סיסמאות בדף הסיסמאות.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">פתח פלייליסט</translation>
 <translation id="4159681666905192102">זהו חשבון לילדים המנוהל על-ידי <ph name="CUSTODIAN_EMAIL" /> ועל-ידי <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2263,7 +2264,6 @@
 <translation id="4218259925454408822">היכנס לחשבון אחר</translation>
 <translation id="4219614746733932747">‏אם מופעל, Blink משתמש במנגנון שינוי המרחק מהתצוגה כדי לשנות את גודל התוכן בהתאם לגודל המסך של המכשיר.</translation>
 <translation id="4220865787605972627">אפשר כיול צבע של המסך, אם המסך תומך בתכונה הזו.</translation>
-<translation id="4233506668751282421">הפעלת אודיו בשיתוף של שולחן העבודה</translation>
 <translation id="4235200303672858594">כל המסך</translation>
 <translation id="4235813040357936597">הוסף חשבון עבור <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">לא ניתן להציג את <ph name="PRODUCT_NAME" /> בשפה זו</translation>
@@ -2271,7 +2271,6 @@
 <translation id="4242577469625748426">התקנת הגדרות המדיניות במכשיר: <ph name="VALIDATION_ERROR" /> נכשלה.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> מעוניין להשבית את סמן העכבר שלך.</translation>
 <translation id="424546999567421758">אותר שימוש בכמות גדולה מנפח הדיסק</translation>
-<translation id="4247072926966606568">כשהסימון הזה פועל, החלון לבחירה של שיתוף שולחן העבודה יאפשר למשתמש לבחור האם לשתף אודיו.</translation>
 <translation id="424726838611654458">‏פתח תמיד ב-Adobe Reader</translation>
 <translation id="4249248555939881673">ממתין לחיבור רשת...</translation>
 <translation id="4249373718504745892">הגישה של הדף הזה למצלמה ולמיקרופון נחסמה.</translation>
@@ -2344,7 +2343,6 @@
 <translation id="4358697938732213860">הוסף כתובת</translation>
 <translation id="4359408040881008151">הותקן מפני שיש תוספים התלויים בו.</translation>
 <translation id="4361190688154226069">מיקוד מבוסס-מלבן בתצוגות</translation>
-<translation id="4363372140743955595">אימות חוזר של מנהל הסיסמאות</translation>
 <translation id="4364444725319685468">ההורדה של <ph name="FILE_NAME" /> בוצעה</translation>
 <translation id="4364830672918311045">הצגת הודעות</translation>
 <translation id="4365673000813822030">אופס, הסינכרון הפסיק לפעול.</translation>
@@ -2401,6 +2399,7 @@
 <translation id="4449935293120761385">על 'מילוי אוטומטי'</translation>
 <translation id="4449996769074858870">הכרטיסייה הזו מפעילה תוכן אודיו.</translation>
 <translation id="4450974146388585462">אבחן</translation>
+<translation id="4452426408005428395">לא חשוב</translation>
 <translation id="4454939697743986778">אישור זה הותקן על ידי מנהל המערכת שלך.</translation>
 <translation id="445923051607553918">‏הצטרף לרשת Wi-Fi</translation>
 <translation id="4462159676511157176">שרתי שמות מותאמים אישית</translation>
@@ -2478,7 +2477,6 @@
 <translation id="4594109696316595112">‏הפעלה חד-פעמית: הקלד את הסיסמה שלך כדי להפעיל את Smart Lock ב-<ph name="DEVICE_TYPE" /> הזה. באמצעות Smart Lock, הטלפון שלך יבטל את נעילת המכשיר - ללא צורך בסיסמה. כדי לשנות או להשבית תכונה זו, עבור אל ההגדרות של <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">רק המנהל (<ph name="CUSTODIAN_NAME" />) יכול לשנות יישומים ותוספים.</translation>
 <translation id="4601242977939794209">‏ממיר EMF</translation>
-<translation id="4601250583401186741">התאם לבקר</translation>
 <translation id="4602466770786743961">התר תמיד ל-<ph name="HOST" /> לגשת למצלמה ולמיקרופון</translation>
 <translation id="4605399136610325267">אין חיבור לאינטרנט</translation>
 <translation id="4608500690299898628">&amp;מצא...</translation>
@@ -2774,6 +2772,7 @@
 <translation id="5039804452771397117">אפשר</translation>
 <translation id="5045550434625856497">סיסמה שגויה</translation>
 <translation id="5048179823246820836">נורדית</translation>
+<translation id="5048294425697652159">‏הפעל את Quirks Client לכיול המסך.</translation>
 <translation id="5053604404986157245">‏סיסמת ה-TPM הנוצרת באופן אקראי אינה זמינה. המצב הזה נורמלי לאחר Powerwash.</translation>
 <translation id="5053803681436838483">כתובת חדשה למשלוח...</translation>
 <translation id="5055309315264875868">הצג קישור בדף ההגדרות של מנהל הסיסמאות כדי לנהל את הסיסמאות המסונכרנות שלך באינטרנט.</translation>
@@ -2871,7 +2870,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> ‏(<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">הצורך בתנועה להפעלת מדיה</translation>
 <translation id="5189060859917252173">האישור "<ph name="CERTIFICATE_NAME" />" מייצג רשות אישורים</translation>
-<translation id="5196117515621749903">טען מחדש והתעלם מהקובץ השמור</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">אינטרנט</translation>
 <translation id="5197680270886368025">הסנכרון הושלם.</translation>
@@ -2886,6 +2884,7 @@
 <translation id="521582610500777512">התצלום נמחק</translation>
 <translation id="5218183485292899140">צרפתית שוויצרית</translation>
 <translation id="5218766986344577658">חלון קופץ לבחירת קישור יחיד</translation>
+<translation id="5220992698394817380">‏הפעל הסכמה לתפריט IME</translation>
 <translation id="5222676887888702881">יציאה</translation>
 <translation id="5225324770654022472">הצג קיצורי יישומים</translation>
 <translation id="5227536357203429560">הוסף רשת פרטית...</translation>
@@ -2928,6 +2927,7 @@
 <translation id="5271247532544265821">עבור בין מצבים של סינית פשוטה/מסורתית</translation>
 <translation id="5271549068863921519">שמור סיסמה</translation>
 <translation id="5273628206174272911">תכונה ניסיונית לניווט בהיסטוריה בתגובה לגלילת יתר אופקית.</translation>
+<translation id="5275194674756975076">בסדר, רענן</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> מאתר זה</translation>
 <translation id="5275973617553375938">‏קבצים ששוחזרו מ-Google Drive</translation>
 <translation id="527605719918376753">השתק כרטיסייה</translation>
@@ -3001,6 +3001,7 @@
 <translation id="5368720394188453070">הטלפון שלך נעול. בטל את הנעילה כדי להיכנס.</translation>
 <translation id="5369927996833026114">‏גלה את מפעיל היישומים של Chrome</translation>
 <translation id="5370819323174483825">&amp;טען מחדש</translation>
+<translation id="5372066618989754822">‏הפעל גישה לתפריט ה-IME החדש בדף הגדרות השפה.</translation>
 <translation id="5372529912055771682">מצב ההרשמה שסופק אינו נתמך על ידי גרסה זו של מערכת ההפעלה. ודא שאתה מפעיל את הגרסה החדשה ביותר ונסה שוב.</translation>
 <translation id="5374359983950678924">שנה תמונה</translation>
 <translation id="5376169624176189338">לחץ כדי לחזור, לחץ והחזק כדי לראות את ההיסטוריה</translation>
@@ -3090,7 +3091,7 @@
 <translation id="5486561344817861625">ביצוע הדמיה של הפעלת דפדפן מחדש</translation>
 <translation id="54870580363317966">בחר דמות עבור משתמש בפיקוח זה.</translation>
 <translation id="5488468185303821006">אפשר במצב גלישה פרטית</translation>
-<translation id="5489789060051091748">בחירת טקסט לאמירה בקול: החזק את החיפוש ולחץ או גרור כדי שטקסט יאמר בקול</translation>
+<translation id="5489789060051091748">בחירת טקסט לאמירה בקול: החזק את החיפוש ולחץ או גרור כדי שטקסט יוקרא בקול</translation>
 <translation id="549294555051714732">התאמה של מחרוזות משנה להצעות של מילוי אוטומטי</translation>
 <translation id="5494362494988149300">פתח &amp;בסיום</translation>
 <translation id="5494920125229734069">בחר הכל</translation>
@@ -3186,9 +3187,10 @@
 <translation id="5626134646977739690">שם:</translation>
 <translation id="5627086634964711283">הגדרה זו גם קובעת איזה דף מוצג כשאתה לוחץ על הלחצן 'דף הבית'.</translation>
 <translation id="5627259319513858869">הפעלת השימוש בתכונות ניסיוניות של בד ציור שעדיין נמצאות בפיתוח.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">‏עיצוב חדשני תלת ממדי ב-Chrome העליון של הדפדפן</translation>
 <translation id="5633060877636360447">הפעולה תמחק לצמיתות לפחות <ph name="TOTAL_COUNT" /> פריטים מהמכשיר הזה, אבל לא תנקה פריטים שסונכרנו ממכשירים אחרים.</translation>
-<translation id="5636996382092289526">כדי להשתמש ב-<ph name="NETWORK_ID" /> ייתכן שראשית יהיה עליך <ph name="LINK_START" />לבקר בדף הכניסה של הרשת<ph name="LINK_END" />, שייפתח אוטומטית בעוד כמה שניות. אם הוא לא נפתח, לא ניתן יהיה להשתמש ברשת.</translation>
+<translation id="5636996382092289526">כדי להשתמש ב-<ph name="NETWORK_ID" /> ייתכן שראשית יהיה עליך <ph name="LINK_START" />להיכנס לדף הכניסה של הרשת<ph name="LINK_END" />, שייפתח אוטומטית בעוד כמה שניות. אם הוא לא נפתח, לא ניתן יהיה להשתמש ברשת.</translation>
 <translation id="5637357908912398026">אילוץ שמירה של סיסמאות</translation>
 <translation id="5637380810526272785">שיטת קלט</translation>
 <translation id="5639549361331209298">טען מחדש את הדף, לחץ לחיצה ארוכה כדי להציג אפשרויות נוספות</translation>
@@ -3216,6 +3218,7 @@
 <translation id="5678862612529498267">הדגש את האובייקט עם מיקוד מקלדת</translation>
 <translation id="5678955352098267522">קריאת הנתונים שלך באתר <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">סינון טקסט במצב סקירה כללית</translation>
+<translation id="5683818630978268777">ממשק משתמש ניסיוני לנעילת מקשים.</translation>
 <translation id="5684661240348539843">מזהה נכסים</translation>
 <translation id="569068482611873351">יבא...</translation>
 <translation id="56907980372820799">קשר נתונים</translation>
@@ -3681,7 +3684,6 @@
 <translation id="6420676428473580225">הוספה לשולחן העבודה</translation>
 <translation id="6422329785618833949">התמונה סובבה</translation>
 <translation id="642282551015776456">ייתכן שלא ניתן להשתמש בשם זה כשם קובץ או תיקייה</translation>
-<translation id="642322423610046417">השתמש בתפריט ההקשר (לחיצה ימנית) כדי להסיר את התוספים שאינך זקוק להם.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">‏האם להשתמש ב-Adobe Reader כמציג ברירת המחדל עבור PDF?</translation>
 <translation id="6425092077175753609">עיצוב חדשני תלת-ממדי</translation>
@@ -3752,6 +3754,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">‏מסך מלא ניסיוני עם מצב נעילת מקשים הדורש מהמשתמשים להקיש באריכות על Esc כדי לצאת.</translation>
 <translation id="6527303717912515753">שתף</translation>
 <translation id="6528546217685656218">המפתח הפרטי לאישור לקוח זה חסר או אינו חוקי.</translation>
 <translation id="653019979737152879">מסנכרן את <ph name="FILE_NAME" />...</translation>
@@ -3883,7 +3886,7 @@
 <translation id="6736329909263487977"><ph name="ISSUED_BY" /> ‏[<ph name="ISSUED_TO" />]‏</translation>
 <translation id="6739254200873843030">תוקף הכרטיס פג. בדוק את התאריך או הזן כרטיס חדש.</translation>
 <translation id="6740234557573873150"><ph name="FILE_NAME" /> הושהה</translation>
-<translation id="6740369132746915122">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />לבקר באתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
+<translation id="6740369132746915122">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
 <translation id="6745592621698551453">עדכן כעת</translation>
 <translation id="6745994589677103306">אל תעשה דבר</translation>
 <translation id="674632704103926902">הפעל גרירה והקשה</translation>
@@ -3931,6 +3934,7 @@
 <translation id="6825883775269213504">רוסית</translation>
 <translation id="6827236167376090743">סרטון זה ימשיך לפעול ללא הפסקה.</translation>
 <translation id="6828153365543658583">הגבל כניסה של המשתמשים הבאים:</translation>
+<translation id="6828860976882136098">הגדרת עדכונים אוטומטיים לכל המשתמשים נכשלה (שגיאת קדם-הפעלה: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">קבל עזרה בשביל ה-<ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">הירשם לארגון שלך</translation>
 <translation id="6830590476636787791">אנימציית מעברים בהפעלה הראשונה של המדריך</translation>
@@ -3953,7 +3957,6 @@
 <translation id="6860427144121307915">פתח בכרטיסייה</translation>
 <translation id="6862635236584086457">כל הקבצים השמורים בתיקיה זו מגובים באופן אוטומטי באינטרנט</translation>
 <translation id="6865313869410766144">נתוני טפסים למילוי אוטומטי</translation>
-<translation id="6865319096921627602">‏הפעלת צינור המדיה המאוחד ב-Android.</translation>
 <translation id="6867678160199975333">עבור אל <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">תיבת סימון שסומנה</translation>
 <translation id="6870130893560916279">מקלדת אוקראינית</translation>
@@ -4047,6 +4050,7 @@
 <translation id="7006017748900345484">‏מקודד/מפענח תוכנה לווידאו מסוג WebRTC H.264</translation>
 <translation id="7006634003215061422">שוליים תחתונים</translation>
 <translation id="7006844981395428048">אודיו $1</translation>
+<translation id="7008270479623533562">כדי להריץ תוסף זה, עליך לרענן את הדף. תוכל להריץ תוסף זה באופן אוטומטי באתר זה על ידי קליק ימני על סמל התוסף.</translation>
 <translation id="7009045250432250765">מילוי אוטומטי בלחיצה אחת</translation>
 <translation id="7010160495478792664">פענוח וידאו עם האצת חומרה כאשר זמין.</translation>
 <translation id="7010400591230614821">אסטרטגיית שחרור אגרסיבי של כרטיסיות</translation>
@@ -4211,7 +4215,6 @@
 <translation id="7256710573727326513">פתח בכרטיסייה</translation>
 <translation id="7257173066616499747">‏רשתות Wi-Fi</translation>
 <translation id="7257666756905341374">קריאת נתונים שאתה מעתיק ומדביק</translation>
-<translation id="7260002739296185724">‏הפעל שימוש ב-AVFoundation לצילום וידאו ולמעקב אחר מכשירי וידאו בגרסת OS X‏ 10.7 ואילך. אחרת, ייעשה שימוש ב-QTKit.</translation>
 <translation id="7260504762447901703">בטל גישה</translation>
 <translation id="7262004276116528033">שירות הכניסה הזה מתארח ב-<ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">חריגים בגישה של יישומי פלאגין ללא ארגז חול</translation>
@@ -4249,7 +4252,6 @@
 <translation id="7314278895724341067">הפעל דפים לא מקוונים בדף כרטיסייה חדשה</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (הנוכחי)</translation>
 <translation id="7321545336522791733">השרת אינו נגיש</translation>
-<translation id="7324841169865301118">מאפשר למשתמש לבחור כרטיסייה לשיתוף שולחן עבודה.</translation>
 <translation id="7325437708553334317">תוסף ניגודיות גבוהה</translation>
 <translation id="7326565110843845436">לחיצה בשלוש אצבעות על לוח המגע</translation>
 <translation id="73289266812733869">לא נבחר</translation>
@@ -4373,7 +4375,7 @@
 <translation id="7505167922889582512">הצג קבצים מוסתרים</translation>
 <translation id="7507930499305566459">אישור מגיב סטטוס</translation>
 <translation id="7508545000531937079">מצגת שקופיות</translation>
-<translation id="7511955381719512146">‏ייתכן שתידרש לבקר ב-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש.</translation>
+<translation id="7511955381719512146">‏ייתכן שתידרש להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש.</translation>
 <translation id="7513996269498582533">זיהוי על ידך</translation>
 <translation id="751507702149411736">ביילורוסית</translation>
 <translation id="7517569744831774757">החזר את ההגדרות לברירות המחדל המקוריות שלהן.</translation>
@@ -4569,7 +4571,7 @@
 <translation id="7825543042214876779">נחסם על ידי המדיניות</translation>
 <translation id="782590969421016895">השתמש בדפים הנוכחיים</translation>
 <translation id="7828106701649804503">ציין את רוחב האריח שישמש כברירת מחדל.</translation>
-<translation id="782886543891417279">‏ייתכן שתידרש לבקר בדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש (<ph name="WIFI_NAME" />).</translation>
+<translation id="782886543891417279">‏ייתכן שתידרש להיכנס לדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש (<ph name="WIFI_NAME" />).</translation>
 <translation id="7831368056091621108">‏כדי שהתוסף הזה, ההיסטוריה שלך והגדרות Chrome אחרות יהיו זמינים בכל המכשירים שלך.</translation>
 <translation id="7831754656372780761"><ph name="TAB_TITLE" /> <ph name="EMOJI_MUTING" /></translation>
 <translation id="7839051173341654115">הצג/גבה מדיה</translation>
@@ -4756,7 +4758,7 @@
 <translation id="8088137642766812908">שים לב, התכונה הזו עלולה לגרום נזק</translation>
 <translation id="8089520772729574115">‏פחות מ-‎1 MB</translation>
 <translation id="8090234456044969073">עיין ברשימת אתרי האינטרנט שבהם אתה מבקר הכי הרבה</translation>
-<translation id="8094917007353911263">ייתכן שתידרש לבקר ב-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור הרשת שבה אתה משתמש.</translation>
+<translation id="8094917007353911263">ייתכן שתידרש להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור הרשת שבה אתה משתמש.</translation>
 <translation id="8098352321677019742"><ph name="PRODUCT_NAME" /> - הודעות</translation>
 <translation id="8098975406164436557">להשתמש בטלפון זה כדי לבטל את נעילת ה-<ph name="DEVICE_TYPE" /> שלך?</translation>
 <translation id="810066391692572978">הקובץ משתמש בתכונות שאינן נתמכות.</translation>
@@ -4908,7 +4910,7 @@
 <translation id="8286227656784970313">השתמש במילון המערכת</translation>
 <translation id="8286817579635702504">מפעיל מספר תכונות אבטחה שכנראה ישבשו דף אחד או יותר מהדפים שבהם אתה מבקר על בסיס יומי. לדוגמה, בדיקה מחמירה של תוכן מעורב, ונעילת תכונות חזקות לצורך אבטחת הקשרים. מן הסתם, הסימון הזה ירגיז אותך.</translation>
 <translation id="8297012244086013755">Hangul 3 Set (No Shift)‎</translation>
-<translation id="8298115750975731693">‏ייתכן שתידרש לבקר ב-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש (<ph name="WIFI_NAME" />).</translation>
+<translation id="8298115750975731693">‏ייתכן שתידרש להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש (<ph name="WIFI_NAME" />).</translation>
 <translation id="8299269255470343364">יפנית</translation>
 <translation id="8299319456683969623">אינך מחובר לאינטרנט כרגע</translation>
 <translation id="8300259894948942413">ניתן להפעיל גרירה ושחרור באמצעות מגע על ידי לחיצה ארוכה על רכיב הניתן לגרירה.</translation>
@@ -4937,7 +4939,7 @@
 <translation id="8338952601723052325">אתר האינטרנט של המפתח</translation>
 <translation id="8339012082103782726">אל תאפשר לאתרים לגשת למיקרופון שלך</translation>
 <translation id="8342318071240498787">קובץ או ספריה עם אותו שם כבר קיימים.</translation>
-<translation id="834457929814110454">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
+<translation id="834457929814110454">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
 <translation id="8345553596530559351">‏אם האפשרות תופעל, כתובת האתר /chrome://history‎ תטען את דף ההיסטוריה בעיצוב חדשני תלת ממדי.</translation>
 <translation id="8351419472474436977">‏תוסף זה השתלט על הגדרות שרת ה-Proxy שלך. משמעות הדבר היא שהוא יכול לשנות, לקטוע או לצותת לכל פעולה שתבצע באינטרנט. אם אינך יודע בוודאות מדוע שינוי זה התרחש, סביר להניח שזהו שינוי לא רצוי.</translation>
 <translation id="8352772353338965963">הוסף חשבון לכניסה עם מספר חשבונות. כל החשבונות שאליהם נכנסת נגישים ללא סיסמה, לכן יש להשתמש בתכונה זו עם חשבונות אמינים בלבד.</translation>
@@ -4991,7 +4993,6 @@
 <translation id="8426519927982004547">‏HTTPS/‏SSL</translation>
 <translation id="8427933533533814946">צולם על ידי</translation>
 <translation id="8428213095426709021">הגדרות</translation>
-<translation id="8432590265309978927">‏תמיכה ניסיונית מאוד בעיבוד iframes חוצי אתרים בתהליכים נפרדים.</translation>
 <translation id="8432745813735585631">‏מקלדת Colemak אנגלית (ארה"ב)</translation>
 <translation id="8434177709403049435">&amp;קידוד</translation>
 <translation id="8434480141477525001">יציאת ניפוי באגים של לקוח מקומי</translation>
@@ -5055,7 +5056,7 @@
 <translation id="8528962588711550376">מבצע כניסה.</translation>
 <translation id="8535005006684281994">‏כתובת אתר לחידוש אישור Netscape</translation>
 <translation id="8539727552378197395">‏לא (Http בלבד)</translation>
-<translation id="8543181531796978784">באפשרותך <ph name="BEGIN_ERROR_LINK" />לדווח על בעיית זיהוי<ph name="END_ERROR_LINK" /> או, אם אתה מבין את סיכוני האבטחה, <ph name="BEGIN_LINK" />לבקר באתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
+<translation id="8543181531796978784">באפשרותך <ph name="BEGIN_ERROR_LINK" />לדווח על בעיית זיהוי<ph name="END_ERROR_LINK" /> או, אם אתה מבין את סיכוני האבטחה, <ph name="BEGIN_LINK" />להיכנס לאתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
 <translation id="8545107379349809705">הסתר פרטים....</translation>
 <translation id="8545211332741562162">‏מאפשר לדפי אינטרנט להשתמש בתכונות ניסיוניות של JavaScript.</translation>
 <translation id="8545575359873600875">מצטערים, לא ניתן לאמת את הסיסמה שלך. ייתכן שהמנהל של המשתמש בפיקוח שינה את הסיסמה לאחרונה. במצב כזה הסיסמה החדשה תחול בפעם הבאה שתבצע כניסה. נסה להשתמש בסיסמה הישנה שלך.</translation>
@@ -5188,7 +5189,6 @@
 <translation id="8713979477561846077">הפעל תיקון אוטומטי של מקלדת פיזית עבור מקלדת באנגלית ארה"ב, אשר יכולה לספק הצעות כמו בהקלדה במקלדת פיזית.</translation>
 <translation id="871476437400413057">‏סיסמאות שמורות ב-Google</translation>
 <translation id="8714838604780058252">גרפיקת רקע</translation>
-<translation id="8716065142695381595">‏מפעיל את צינור המדיה המאוחד (Android ומחשב שולחני) ב-Android.</translation>
 <translation id="8722421161699219904">מקלדת בינ"ל של ארה"ב</translation>
 <translation id="872451400847464257">ערוך מנוע חיפוש</translation>
 <translation id="8724859055372736596">&amp;הצג בתיקייה</translation>
@@ -5208,6 +5208,7 @@
 <translation id="8737685506611670901">פתיחת קישורי <ph name="PROTOCOL" /> במקום <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">צמצם את המיקום של תנועת מגע כדי לפצות על כך שדיוק המגע נמוך בהשוואה לעכבר.</translation>
+<translation id="8743712320294854924">אפשרויות להצגת קלט מורחב במדף.</translation>
 <translation id="874420130893181774">‏שיטת קלט Traditional Pinyin</translation>
 <translation id="8744525654891896746">בחירת דמות עבור משתמש בפיקוח זה</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5277,6 +5278,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">‏החלפת מצב של מקש ה-Shift</translation>
 <translation id="8852742364582744935">היישומים והתוספים הבאים נוספו:</translation>
+<translation id="8853611566624224021">‏הפעל אחזור של קבצי תצוגה מסוג icc מ-Quirks Server לכיול צבעי המסך.</translation>
 <translation id="885381502874625531">מקלדת בלארוסית</translation>
 <translation id="8856844195561710094">‏הפסקת גילוי מכשיר Bluetooth נכשלה.</translation>
 <translation id="885701979325669005">אחסון</translation>
@@ -5326,7 +5328,6 @@
 <translation id="8925458182817574960">&amp;הגדרות</translation>
 <translation id="8926389886865778422">אל תשאל שוב</translation>
 <translation id="8926518602592448999">השבתת תוספים במצב מפתח</translation>
-<translation id="8929454297483336498">‏שימוש ב-AVFoundation APIs של Mac OS X, במקום ב-QTKit</translation>
 <translation id="8931394284949551895">מכשירים חדשים</translation>
 <translation id="8932730422557198035">‏השתמש בממשק ה-API של Android Midi</translation>
 <translation id="8933960630081805351">‏ה&amp;צג ב-Finder</translation>
@@ -5340,6 +5341,7 @@
 <translation id="894360074127026135">‏הגברה בינלאומית של Netscape</translation>
 <translation id="8944779739948852228">אותרה מדפסת</translation>
 <translation id="8946359700442089734">תכונות לניפוי באגים לא הופעלו באופן מלא במכשיר <ph name="IDS_SHORT_PRODUCT_NAME" /> זה.</translation>
+<translation id="8946784827990177241">‏הפעל תמיכה ב-WebUSB.</translation>
 <translation id="89515141420106838">‏מפעיל את הגלריה של חנות האינטרנט של Chrome למנהלי התקן למדפסות. היישום מחפש בחנות האינטרנט של Chrome תוספים שתומכים בהדפסה למדפסת USB עם מזהה USB ספציפי.</translation>
 <translation id="895347679606913382">מתחיל...</translation>
 <translation id="8954952943849489823">ההעברה נכשלה, שגיאה לא צפויה: $1</translation>
@@ -5483,6 +5485,7 @@
 <translation id="9154194610265714752">עודכן</translation>
 <translation id="9154418932169119429">תמונה זו אינה זמינה במצב לא מקוון.</translation>
 <translation id="91568222606626347">צור מקש קיצור...</translation>
+<translation id="9157697743260533322">הגדרת עדכונים אוטומטיים לכל המשתמשים נכשלה (שגיאת קדם-הפעלה: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">אופס!  אירעה בעיה של תקשורת רשת במהלך האימות.  בדוק את חיבור הרשת ונסה שוב.</translation>
 <translation id="9159562891634783594">הפעל רישום של מדפסות בענן שאינן רשומות דרך התצוגה המקדימה לפני הדפסה.</translation>
 <translation id="9166510596677678112">שלח הודעת אימייל אל האדם הזה</translation>
@@ -5494,7 +5497,6 @@
 <translation id="9170848237812810038">&amp;ביטול</translation>
 <translation id="9170884462774788842">‏תכנית אחרת במחשב שלך הוסיפה עיצוב שעשוי לשנות את אופן הפעולה של Chrome.</translation>
 <translation id="9177499212658576372">אתה מחובר כעת לרשת <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">נהל כרטיסי אשראי</translation>
 <translation id="917858577839511832">‏משא ומתן עם DTLS 1.2 ל-WebRTC</translation>
 <translation id="917861274483335838">נהל חסימה של יישומי פלאגין...</translation>
 <translation id="9179348476548754105">האופן שבו מנהל הסיסמאות מטפל במילוי האוטומטי של פרטי כניסה לסנכרון רק לדפי אישור מחדש של עסקאות.</translation>
@@ -5537,7 +5539,7 @@
 <translation id="951981865514037445"><ph name="URL" />‏ רוצה להשתמש במיקום המכשיר שלך.</translation>
 <translation id="952838760238220631">‏הפעל תמיכה בקידוד תוכן Brotli.</translation>
 <translation id="952992212772159698">לא פעיל</translation>
-<translation id="953000875543358078">ייתכן שהפעולה תארך עד כדקה</translation>
+<translation id="953000875543358078">ייתכן שהפעולה תימשך עד כדקה</translation>
 <translation id="960987915827980018">נותרה בערך שעה אחת</translation>
 <translation id="96421021576709873">‏רשת Wi-Fi</translation>
 <translation id="965490406356730238">‏היכן שהדבר אפשרי, הפעל פענוח של קובצי mjpeg עם האצה באמצעות חומרה בשביל מסגרת שצולמה.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index ddae058..94a9778 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -159,7 +159,6 @@
     プロフィールをもう一度設定する必要があります。<ph name="BR" />
     <ph name="BR" />
     次の画面でフィードバックをお送りください。この問題の解決に役立てさせていただきます。</translation>
-<translation id="1216954813581739968">デスクトップ共有用にタブを有効にする。</translation>
 <translation id="121827551500866099">すべてのダウンロードを表示</translation>
 <translation id="122082903575839559">証明書の署名アルゴリズム</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 with RSA 暗号化</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL(%s=検索語句)</translation>
 <translation id="1546280085599573572">この拡張機能により、ホームボタンをクリックしたときに表示されるページが変更されました。</translation>
 <translation id="1546795794523394272">Chromebox for meetings へようこそ。</translation>
+<translation id="1547572086206517271">更新が必要です</translation>
 <translation id="1547964879613821194">カナダ英語</translation>
 <translation id="1548132948283577726">パスワードを保存していないサイトはこちらに表示されます。</translation>
 <translation id="1549045574060481141">ダウンロードを確認</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">最近アクセスしたページをローカルに保存してオフラインで使用できるようにします。オフライン ページを有効にする必要があります。</translation>
 <translation id="1891668193654680795">ソフトウェア メーカーの身元を特定するこの証明書を信頼します。</translation>
 <translation id="189210018541388520">全画面表示</translation>
+<translation id="1892754076732315533">ページが全画面表示されたとき、またはマウスポインタがロックされたときの、新しい簡易版ユーザー エクスペリエンスです。</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">クラウドのプロビジョニング フローが失敗しました</translation>
 <translation id="189358972401248634">その他の言語</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">U2F(Universal 2nd Factor)デバイスにアクセスできませんでした。</translation>
 <translation id="2881966438216424900">最終アクセス日:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> の再起動とリセットを行います</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">タスク マネージャ</translation>
 <translation id="2887525882758501333">PDF ドキュメント</translation>
 <translation id="2888807692577297075">&lt;b&gt;「<ph name="SEARCH_STRING" />」&lt;/b&gt;に一致するアイテムはありません</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">後で</translation>
 <translation id="3480892288821151001">ウィンドウを左に固定</translation>
 <translation id="3481915276125965083">このページの次のポップアップがブロックされました:</translation>
+<translation id="3482214069979148937">全画面表示を終了するには |<ph name="ACCELERATOR" />| を押し続けます</translation>
 <translation id="3484869148456018791">新しい証明書を取得</translation>
 <translation id="3487007233252413104">無名関数</translation>
 <translation id="348771913750618459">iframe を使ったログインフロー</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">証明書名の制約</translation>
 <translation id="3595596368722241419">バッテリー残量: 満</translation>
 <translation id="3600456501114769456">端末のローカルファイルへのアクセスは管理者によって禁止されています。</translation>
-<translation id="3601395307734599350">すべての拡張機能が表示されています</translation>
 <translation id="3603385196401704894">フランス語(カナダ)</translation>
 <translation id="3603622770190368340">ネットワーク証明書を取得</translation>
 <translation id="3605780360466892872">ボタンダウン</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">全体の既定値を使用(検出)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 個のタブ}other{# 個のタブ}}</translation>
 <translation id="4154664944169082762">指紋</translation>
-<translation id="4157188838832721931">パスワード ページでのパスワード表示前の、OS パスワードの入力要求を無効にします。</translation>
 <translation id="4157869833395312646">Microsoft SGC(Server Gated Cryptography)</translation>
 <translation id="4158739975813877944">再生リストを開く</translation>
 <translation id="4159681666905192102">これは <ph name="CUSTODIAN_EMAIL" /> と <ph name="SECOND_CUSTODIAN_EMAIL" /> によって管理されている子供向けのアカウントです。</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">別のアカウントにログイン</translation>
 <translation id="4219614746733932747">有効の場合、Blink はズーム メカニズムを使ってコンテンツをデバイス倍率に合わせて拡大 / 縮小します。</translation>
 <translation id="4220865787605972627">ディスプレイで色補正機能がサポートされている場合に、ディスプレイの色補正を許可します。</translation>
-<translation id="4233506668751282421">デスクトップ共有で音声を有効にする</translation>
 <translation id="4235200303672858594">画面全体</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> のアカウントを追加</translation>
 <translation id="4240069395079660403">この言語で <ph name="PRODUCT_NAME" /> を表示することはできません</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">デバイスにポリシー設定をインストールできませんでした: <ph name="VALIDATION_ERROR" />。</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> ではマウス カーソルが無効になります。</translation>
 <translation id="424546999567421758">ディスクの使用率が高くなっています</translation>
-<translation id="4247072926966606568">このフラグをオンにすると、ユーザーがデスクトップ共有の選択ウィンドウで音声を共有するかどうかを選択できます。</translation>
 <translation id="424726838611654458">常に Adobe Reader で開く</translation>
 <translation id="4249248555939881673">ネットワークに接続しています...</translation>
 <translation id="4249373718504745892">このページではカメラとマイクへのアクセスがブロックされています。</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">住所を追加</translation>
 <translation id="4359408040881008151">依存関係にある拡張機能によってインストールされました。</translation>
 <translation id="4361190688154226069">目標を四角形のエリアから認識する</translation>
-<translation id="4363372140743955595">パスワード マネージャの再認証</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> をダウンロードしました</translation>
 <translation id="4364830672918311045">通知を表示</translation>
 <translation id="4365673000813822030">同期は停止されました。</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">自動入力について</translation>
 <translation id="4449996769074858870">このタブは音声の再生中です。</translation>
 <translation id="4450974146388585462">診断</translation>
+<translation id="4452426408005428395">キャンセル</translation>
 <translation id="4454939697743986778">この証明書はシステム管理者によってインストールされたものです。</translation>
 <translation id="445923051607553918">Wi-Fi ネットワークへの接続</translation>
 <translation id="4462159676511157176">カスタム ネーム サーバー</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">1 回限りの有効化: この <ph name="DEVICE_TYPE" /> で Smart Lock を有効にするにはパスワードを入力します。Smart Lock を使用すると、パスワードを入力することなくスマートフォンからこのデバイスのロックを解除できます。この機能を変更または無効にするには、<ph name="DEVICE_TYPE" /> の設定画面で行います。</translation>
 <translation id="4595560905247879544">アプリと拡張機能は管理者(<ph name="CUSTODIAN_NAME" />)だけが変更できます。</translation>
 <translation id="4601242977939794209">EMF 変換機能</translation>
-<translation id="4601250583401186741">コントローラのペア設定</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> によるカメラとマイクへのアクセスを常に許可する</translation>
 <translation id="4605399136610325267">インターネットに接続していません</translation>
 <translation id="4608500690299898628">検索(&amp;F)...</translation>
@@ -2785,6 +2783,7 @@
 <translation id="5039804452771397117">許可</translation>
 <translation id="5045550434625856497">パスワードが正しくありません</translation>
 <translation id="5048179823246820836">北欧</translation>
+<translation id="5048294425697652159">ディスプレイ キャリブレーション用に Quirks クライアントを有効にする。</translation>
 <translation id="5053604404986157245">ランダムに生成された TPM パスワードは使用できません。これは Powerwash 後の通常の動作です。</translation>
 <translation id="5053803681436838483">新しい配送先住所...</translation>
 <translation id="5055309315264875868">パスワード マネージャの設定ページに、同期済みのパスワードをオンラインで管理するためのリンクを表示します。</translation>
@@ -2882,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" />(<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">メディア再生の操作要件</translation>
 <translation id="5189060859917252173">証明書「<ph name="CERTIFICATE_NAME" />」は認証局を示します。</translation>
-<translation id="5196117515621749903">キャッシュを無視して再読み込みする</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">インターネット</translation>
 <translation id="5197680270886368025">同期が完了しました。</translation>
@@ -2897,6 +2895,7 @@
 <translation id="521582610500777512">写真を破棄しました</translation>
 <translation id="5218183485292899140">フランス語(スイス)</translation>
 <translation id="5218766986344577658">リンクの拡大ポップアップ</translation>
+<translation id="5220992698394817380">IME オプトイン メニューを有効にする</translation>
 <translation id="5222676887888702881">ログアウト</translation>
 <translation id="5225324770654022472">アプリのショートカットを表示</translation>
 <translation id="5227536357203429560">プライベート ネットワークを追加...</translation>
@@ -2939,6 +2938,7 @@
 <translation id="5271247532544265821">中国語の簡体/繁体モードを切り替える</translation>
 <translation id="5271549068863921519">パスワードを保存</translation>
 <translation id="5273628206174272911">横方向のオーバースクロールに応じた履歴表示(試験運用版)。</translation>
+<translation id="5275194674756975076">OK(更新)</translation>
 <translation id="5275795814002959418">このサイトから <ph name="COUNT" /> 個</translation>
 <translation id="5275973617553375938">Google ドライブから復元されたファイル</translation>
 <translation id="527605719918376753">タブをミュート</translation>
@@ -3012,6 +3012,7 @@
 <translation id="5368720394188453070">スマートフォンがロックされています。ログインするにはロックを解除してしてください。</translation>
 <translation id="5369927996833026114">Chrome アプリ ランチャーの紹介</translation>
 <translation id="5370819323174483825">再読み込み(&amp;R)</translation>
+<translation id="5372066618989754822">言語設定ページで新しい IME メニューを使用できるようにします。</translation>
 <translation id="5372529912055771682">指定の登録モードは、このバージョンのオペレーティング システムではサポートされていません。最新バージョンであることを確認してから、もう一度お試しください。</translation>
 <translation id="5374359983950678924">画像を変更</translation>
 <translation id="5376169624176189338">クリックすると前に戻ります。押したまま待つと履歴が表示されます。</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">名前:</translation>
 <translation id="5627086634964711283">この拡張機能では、ホーム ボタンのクリック時に表示されるページも制御されます。</translation>
 <translation id="5627259319513858869">開発中の canvas 試験運用機能を使用できるようにします。</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ブラウザのトップ chrome 部分のマテリアル デザイン</translation>
 <translation id="5633060877636360447">このデバイスから少なくとも <ph name="TOTAL_COUNT" /> 件の項目が完全に削除されますが、同期された項目が他のデバイスから消去されることはありません。</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> を使用するには、最初に<ph name="LINK_START" />ネットワークのログイン ページにアクセス<ph name="LINK_END" />する必要がある場合があります。その場合は、数秒でログイン ページが自動的に開きます。ログイン ページが自動的に開かない場合、そのネットワークは使用できません。</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">キーボードのフォーカスがある項目を強調表示する</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> でのユーザーデータの読み取り</translation>
 <translation id="5680928275846978395">概観モードでのテキストの絞り込み</translation>
+<translation id="5683818630978268777">キーボード ロックの試験運用画面</translation>
 <translation id="5684661240348539843">アセット ID</translation>
 <translation id="569068482611873351">インポート...</translation>
 <translation id="56907980372820799">データをリンク</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">デスクトップに追加</translation>
 <translation id="6422329785618833949">写真を反転しました</translation>
 <translation id="642282551015776456">この名前はフォルダのファイル名として使用できません</translation>
-<translation id="642322423610046417">不要な拡張機能を削除するには、コンテキスト メニュー(右クリック メニュー)を使用します。</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader をデフォルトの PDF ビューアとして使用しますか?</translation>
 <translation id="6425092077175753609">マテリアル</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">試験運用版のキーボード ロック付き全画面表示モードを終了するには、Esc キーを押し続けます。</translation>
 <translation id="6527303717912515753">共有</translation>
 <translation id="6528546217685656218">このクライアント証明書の秘密鍵がないか無効です。</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> を同期しています...</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">ロシア語</translation>
 <translation id="6827236167376090743">この動画は繰り返し再生されます。</translation>
 <translation id="6828153365543658583">ログインを以下のユーザーに制限する:</translation>
+<translation id="6828860976882136098">すべてのユーザーで自動更新を行うよう設定できませんでした(プリフライト実行エラー: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857"><ph name="DEVICE_TYPE" /> に関するヘルプを表示します。</translation>
 <translation id="6829270497922309893">組織への登録</translation>
 <translation id="6830590476636787791">初回実行時のチュートリアルでのアニメーションによる切り替え</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">タブで開く</translation>
 <translation id="6862635236584086457">このフォルダに保存されているすべてのファイルが自動的にオンラインにバックアップされます。</translation>
 <translation id="6865313869410766144">自動入力フォームのデータ</translation>
-<translation id="6865319096921627602">Android で統合メディア パイプラインを有効にする。</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> に切り替える</translation>
 <translation id="6869402422344886127">チェックボックスがオン</translation>
 <translation id="6870130893560916279">ウクライナ語のキーボード</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">WebRTC H.264 ソフトウェア動画エンコーダー / デコーダー</translation>
 <translation id="7006634003215061422">下余白</translation>
 <translation id="7006844981395428048">$1 音声</translation>
+<translation id="7008270479623533562">この拡張機能を実行するにはページを更新する必要があります。拡張機能アイコンを右クリックして、この拡張機能をこのサイトで自動的に実行するよう指定できます。</translation>
 <translation id="7009045250432250765">ワンクリックでの自動入力</translation>
 <translation id="7010160495478792664">可能な場合にハードウェア アクセラレーションによる動画デコードを行います。</translation>
 <translation id="7010400591230614821">タブを積極的に解放する</translation>
@@ -4224,7 +4228,6 @@
 <translation id="7256710573727326513">タブで開く</translation>
 <translation id="7257173066616499747">Wi-Fi ネットワーク</translation>
 <translation id="7257666756905341374">コピー&ペーストするデータの読み取り</translation>
-<translation id="7260002739296185724">OS X 10.7 以上で、動画キャプチャと動画デバイスの監視に AVFoundation を使用できるようにします。AVFoundation を使用しない場合、QTKit が代わりに使用されます。</translation>
 <translation id="7260504762447901703">アクセス権を取り消します</translation>
 <translation id="7262004276116528033">このログイン サービスは <ph name="SAML_DOMAIN" /> でホストされています</translation>
 <translation id="7262221505565121">サンドボックス無効化プラグインのアクセスの例外</translation>
@@ -4262,7 +4265,6 @@
 <translation id="7314278895724341067">NTP オフライン ページを有効にする</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" />(現在)</translation>
 <translation id="7321545336522791733">サーバーにアクセスできません</translation>
-<translation id="7324841169865301118">デスクトップ共有用のタブをユーザーが選択できるようにします。</translation>
 <translation id="7325437708553334317">ハイコントラスト用拡張機能</translation>
 <translation id="7326565110843845436">タッチパッドの 3 本指タップ</translation>
 <translation id="73289266812733869">選択されていません</translation>
@@ -5014,7 +5016,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">撮影者</translation>
 <translation id="8428213095426709021">設定</translation>
-<translation id="8432590265309978927">クロスサイト iframe の別プロセスによるレンダリングを試験的にサポートします。</translation>
 <translation id="8432745813735585631">Colemak キーボード(米国)</translation>
 <translation id="8434177709403049435">エンコード(&amp;E)</translation>
 <translation id="8434480141477525001">NaCl デバッグ ポート</translation>
@@ -5211,7 +5212,6 @@
 <translation id="8713979477561846077">US キーボードに対し、物理キーボードの自動修正機能を有効にします。この場合、物理キーボードで文字を入力すると候補が表示されます。</translation>
 <translation id="871476437400413057">Google で保存したパスワード</translation>
 <translation id="8714838604780058252">背景のグラフィック</translation>
-<translation id="8716065142695381595">Android で統合(Android とパソコン)メディア パイプラインを有効にします。</translation>
 <translation id="8722421161699219904">US(インターナショナル)キーボード</translation>
 <translation id="872451400847464257">検索エンジンの編集</translation>
 <translation id="8724859055372736596">フォルダを開く(&amp;S)</translation>
@@ -5231,6 +5231,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> の代わりに「<ph name="PROTOCOL" />」リンクを開く</translation>
 <translation id="8737709691285775803">サクラ</translation>
 <translation id="8741881454555234096">マウスポインタの精度に近づけるためにタップ操作の位置を微調整します。</translation>
+<translation id="8743712320294854924">シェルフで入力オプションを展開して表示</translation>
 <translation id="874420130893181774">繁体字ピンイン入力方法</translation>
 <translation id="8744525654891896746">この監視対象ユーザーのアバターを選択してください</translation>
 <translation id="8744641000906923997">ローマ字</translation>
@@ -5300,6 +5301,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift キー モードの切り替え</translation>
 <translation id="8852742364582744935">次のアプリと拡張機能が追加されました:</translation>
+<translation id="8853611566624224021">ディスプレイ キャリブレーション用に Quirks サーバーから ICC ディスプレイ ファイルを取得できるようにします。</translation>
 <translation id="885381502874625531">ベラルーシ語キーボード</translation>
 <translation id="8856844195561710094">Bluetooth デバイスの検出を停止できませんでした。</translation>
 <translation id="885701979325669005">ストレージ</translation>
@@ -5349,7 +5351,6 @@
 <translation id="8925458182817574960">設定(&amp;S)</translation>
 <translation id="8926389886865778422">再表示させない</translation>
 <translation id="8926518602592448999">デベロッパー モードの拡張機能を無効にする</translation>
-<translation id="8929454297483336498">QTKit の代わりに Mac OS X AVFoundation API を使用する</translation>
 <translation id="8931394284949551895">新しいデバイス</translation>
 <translation id="8932730422557198035">Android Midi API を使用する</translation>
 <translation id="8933960630081805351">Finder で表示(&amp;S)</translation>
@@ -5363,6 +5364,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">プリンタが検出されました</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="895347679606913382">開始しています...</translation>
 <translation id="8954952943849489823">移動できませんでした。予期しないエラー: $1</translation>
@@ -5506,6 +5508,7 @@
 <translation id="9154194610265714752">更新完了</translation>
 <translation id="9154418932169119429">この画像はオフラインでは表示できません。</translation>
 <translation id="91568222606626347">ショートカットを作成...</translation>
+<translation id="9157697743260533322">すべてのユーザーで自動更新を行うよう設定できませんでした(プリフライト開始エラー: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">認証時にネットワーク通信の問題が発生しました。ネットワーク接続を確認して、もう一度お試しください。</translation>
 <translation id="9159562891634783594">印刷プレビューからの、未登録のクラウド プリンタの登録を有効にします。</translation>
 <translation id="9166510596677678112">このユーザーにメールを送る</translation>
@@ -5517,7 +5520,6 @@
 <translation id="9170848237812810038">取消(&amp;U)</translation>
 <translation id="9170884462774788842">パソコン上の別のプログラムにより、Chrome の動作方法を変更する可能性のあるテーマが追加されました。</translation>
 <translation id="9177499212658576372">現在 <ph name="NETWORK_TYPE" /> ネットワークに接続しています。</translation>
-<translation id="9177556055091995297">クレジット カードを管理</translation>
 <translation id="917858577839511832">WebRTC による DTLS 1.2 とのネゴシエーション</translation>
 <translation id="917861274483335838">プラグインのブロックを管理する...</translation>
 <translation id="9179348476548754105">パスワード マネージャで、トランザクション再認証ページでのみ同期の認証情報を自動入力する方法を指定します。</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 159256b..51b2622 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -159,7 +159,6 @@
      ನೀವು ಮತ್ತೆ ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.<ph name="BR" />
      <ph name="BR" />
      ಮುಂದಿನ ಪರದೆಯಲ್ಲಿ, ಸಮಸ್ಯೆಯನ್ನು ಬಗೆಹರಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು ದಯವಿಟ್ಟು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ.</translation>
-<translation id="1216954813581739968">ಡೆಸ್ಕ್‌ಟಾಪ್ ಹಂಚಿಕೆಗಾಗಿ ಟ್ಯಾಬ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="121827551500866099">ಎಲ್ಲಾ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ತೋರಿಸು...</translation>
 <translation id="122082903575839559">ಪ್ರಮಾಣಪತ್ರ ಸಹಿ ಅಲ್ಗಾರಿದಮ್</translation>
 <translation id="1221024147024329929">RSA ಎನ್‌ಕ್ರಿಪ್ಶನ್‌ನೊಂದಿಗೆ PKCS #1 MD2</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">ಕ್ವೈರಿ ಸ್ಥಳದಲ್ಲಿ %s ನೊಂದಿಗೆ URL</translation>
 <translation id="1546280085599573572">ನೀವು ಮುಖಪುಟದ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ತೋರಿಸಬೇಕಾದ ಪುಟವನ್ನು ಈ ವಿಸ್ತರಣೆಯು ಬದಲಾಯಿಸಿದೆ.</translation>
 <translation id="1546795794523394272">ಸಭೆಗಳಿಗಾಗಿ Chromebox ಗೆ ಸುಸ್ವಾಗತ!</translation>
+<translation id="1547572086206517271">ರಿಫ್ರೆಶ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="1547964879613821194">ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್</translation>
 <translation id="1548132948283577726">ಎಂದಿಗೂ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸದೆ ಇರುವಂತಹ ಸೈಟ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation>
 <translation id="1549045574060481141">ಡೌನ್‌ಲೋಡ್ ಅನ್ನು ದೃಢೀಕರಿಸಿ</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">ಆಫ್‌ಲೈನ್ ಬಳಕೆಗಾಗಿ ಸ್ಥಳೀಯವಾಗಿ ಇತ್ತೀಚೆಗೆ ಭೇಟಿ ನೀಡಿದ ಪುಟಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಆಫ್‌ಲೈನ್ ಪುಟಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಅಗತ್ಯವಿರುತ್ತದೆ.</translation>
 <translation id="1891668193654680795">ಸಾಫ್ಟ್‌ವೇರ್ ತಯಾರಕರನ್ನು ಗುರುತಿಸುವುದಕ್ಕಾಗಿ ಈ ಪ್ರಮಾಣಪತ್ರದ ಮೇಲೆ ವಿಶ್ವಾಸವಿಡಿ.</translation>
 <translation id="189210018541388520">ಪೂರ್ಣ ಪರದೆಯನ್ನು ತೆರೆಯಿರಿ</translation>
+<translation id="1892754076732315533">ಪುಟ-ಟ್ರಿಗರ್ ಮಾಡಲಾದ ಪೂರ್ಣಪರದೆ ಅಥವಾ ಮೌಸ್ ಪಾಯಿಂಟರ್ ಲಾಕ್ ಸ್ಥಿತಿಗಳನ್ನು ಪ್ರವೇಶಿಸುವಲ್ಲಿ ಹೊಸ ಬಳಕೆದಾರರ ಸರಳೀಕೃತ ಅನುಭವ.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">ಮೇಘ ಒದಗಿಸುವಿಕೆ ಫ್ಲೋ ವಿಫಲವಾಗಿದೆ</translation>
 <translation id="189358972401248634">ಇತರೆ ಭಾಷೆಗಳು</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">ನಿಮ್ಮ ಯುನಿವರ್ಸಲ್ 2ನೇ ಫ್ಯಾಕ್ಟರ್ ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="2881966438216424900">ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಿರುವುದು:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> ಮರು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ಮರು ಹೊಂದಿಸಲಾಗುತ್ತದೆ</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">ಕಾರ್ಯ ನಿರ್ವಾಹಕ</translation>
 <translation id="2887525882758501333">PDF  ಡಾಕ್ಯುಮೆಂಟ್</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; ಗೆ ಯಾವ ಐಟಂಗಳೂ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">ಈಗ ಬೇಡ</translation>
 <translation id="3480892288821151001">ವಿಂಡೋದ ಎಡಕ್ಕೆ ಡಾಕ್ ಮಾಡಿ</translation>
 <translation id="3481915276125965083">ಕೆಳಗಿನ ಪಾಪ್-ಅಪ್‌ಗಳನ್ನು ಈ ಪುಟದಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ:</translation>
+<translation id="3482214069979148937">ಪೂರ್ಣಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಲು |<ph name="ACCELERATOR" />| ಹೋಲ್ಡ್ ಮಾಡಿ</translation>
 <translation id="3484869148456018791">ಹೊಸ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪಡೆಯಿರಿ</translation>
 <translation id="3487007233252413104">ಅನಾಮಧೇಯ ಕಾರ್ಯ</translation>
 <translation id="348771913750618459">iframe-ಆಧಾರಿತ ಸೈನ್‌-ಇನ್‌ ಹರಿವುಗಳು</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">ಪ್ರಮಾಣಪತ್ರ ಹೆಸರು ನಿರ್ಬಂಧಗಳು</translation>
 <translation id="3595596368722241419">ಬ್ಯಾಟರಿ ಭರ್ತಿಯಾಗಿದೆ</translation>
 <translation id="3600456501114769456">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸ್ಥಳೀಯ ಫೈಲ್‌ಗಳ ಪ್ರವೇಶವನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.</translation>
-<translation id="3601395307734599350">ನಿಮ್ಮ ಎಲ್ಲಾ ವಿಸ್ತರಣೆಗಳು ಇಲ್ಲಿವೆ</translation>
 <translation id="3603385196401704894">ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್</translation>
 <translation id="3603622770190368340">ನೆಟ್‌ವರ್ಕ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ</translation>
 <translation id="3605780360466892872">ಬಟನ್‌ಡೌನ್</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">ಜಾಗತಿಕ ಡೀಫಾಲ್ಟ್ ಬಳಸಿ (ಪತ್ತೆ ಮಾಡಿ)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ಟ್ಯಾಬ್}one{# ಟ್ಯಾಬ್‌ಗಳು}other{# ಟ್ಯಾಬ್‌ಗಳು}}</translation>
 <translation id="4154664944169082762">ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳು</translation>
-<translation id="4157188838832721931">ಪಾಸ್‌ವರ್ಡ್‌ಗಳ ಪುಟದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌‌ಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುವುದಕ್ಕೂ ಮೊದಲು ಅವರ OS ಪಾಸ್‌ವರ್ಡ್‌ಗಾಗಿ ಬಳಕೆದಾರರನ್ನು ಪ್ರಾಂಪ್ಟ್‌ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">ಪ್ಲೇಪಟ್ಟಿ ತೆರೆಯಿರಿ</translation>
 <translation id="4159681666905192102"><ph name="CUSTODIAN_EMAIL" /> ಮತ್ತು <ph name="SECOND_CUSTODIAN_EMAIL" /> ಅವರು ಮಕ್ಕಳಿಗೆ ನಿರ್ವಹಿಸುವಂತಹ ಖಾತೆಯಾಗಿರುತ್ತದೆ.</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">ಮತ್ತೊಂದು ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="4219614746733932747">ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಸಾಧನದ ಅಳತೆಯ ಅಂಶಕ್ಕೆ ವಿಷಯವನ್ನು ಅಳತೆಮಾಡಲು ತನ್ನ ಝೂಮ್ ಮಾಡುವಿಕೆಯ ಕಾರ್ಯತಂತ್ರವನ್ನು Blink ಬಳಸುತ್ತದೆ.</translation>
 <translation id="4220865787605972627">ಪ್ರದರ್ಶನವು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬೆಂಬಲಿಸಿದರೆ ಪ್ರದರ್ಶನದ ಬಣ್ಣ ಮಾಪನಾಂಕವನ್ನು ಅನುಮತಿಸಿ.</translation>
-<translation id="4233506668751282421">ಡೆಸ್ಕ್‌ಟಾಪ್ ಹಂಚಿಕೆಗೆ ಆಡಿಯೋ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="4235200303672858594">ಸಂಪೂರ್ಣ ಪರದೆ</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> ಗಾಗಿ ಖಾತೆಯನ್ನು ಸೇರಿಸು</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ಈ ಭಾಷೆಯಲ್ಲಿ ಪ್ರರ್ದಶಿತವಾಗುವುದಿಲ್ಲ</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">ಸಾಧನದಲ್ಲಿ ನೀತಿಯ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ವಿಫಲವಾಗಿದೆ: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">ನಿಮ್ಮ ಮೌಸ್ ಕರ್ಸರ್ ಅನ್ನು ಮರೆಮಾಡಲು <ph name="FULLSCREEN_ORIGIN" /> ಬೇಕಾಗಿದೆ.</translation>
 <translation id="424546999567421758">ಅಧಿಕ ಡಿಸ್ಕ್ ಬಳಕೆಯನ್ನು ಪತ್ತೆ ಹಚ್ಚಲಾಗಿದೆ</translation>
-<translation id="4247072926966606568">ಈ ಫ್ಲ್ಯಾಗ್‌ ಅನ್ನು ಆನ್ ಮಾಡುವುದರೊಂದಿಗೆ, ಡೆಸ್ಕ್‌ಟಾಪ್ ಹಂಚಿಕೆ ಪಿಕರ್ ವಿಂಡೋ ಆಡಿಯೋವನ್ನು ಹಂಚಿಕೊಳ್ಳುವ ಆಯ್ಕೆಯನ್ನು ಬಳಕೆದಾರರಿಗೆ ಆರಿಸಿಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ.</translation>
 <translation id="424726838611654458">ಯಾವಾಗಲೂ Adobe Reader ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="4249248555939881673">ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕಕ್ಕಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="4249373718504745892">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಹಾಗೂ ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವುದರಿಂದ ಈ ಪುಟವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">ವಿಳಾಸವೊಂದನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="4359408040881008151">ಅವಲಂಬಿತ ವಿಸ್ತರಣೆ(ಗಳು) ಯಿಂದಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.</translation>
 <translation id="4361190688154226069">ವೀಕ್ಷಣೆಗಳಲ್ಲಿ  ಆಯತಾಧಾರಿತ ಗುರಿಗಳು</translation>
-<translation id="4363372140743955595">ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ ಮರುದೃಢೀಕರಣ</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="4364830672918311045">ಅಧಿಸೂಚನೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ</translation>
 <translation id="4365673000813822030">ಓಹ್, ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">ಸ್ವಯಂತುಂಬುವಿಕೆ ಬಗ್ಗೆ</translation>
 <translation id="4449996769074858870">ಈ ಟ್ಯಾಬ್ ಆಡಿಯೋ ಪ್ಲೇ ಮಾಡುತ್ತಿದೆ.</translation>
 <translation id="4450974146388585462">ಪತ್ತೆಹಚ್ಚುವಿಕೆ</translation>
+<translation id="4452426408005428395">ಪರವಾಗಿಲ್ಲ</translation>
 <translation id="4454939697743986778">ಈ ಪ್ರಮಾಣಪತ್ರವನ್ನು ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರಿಂದ ಸ್ಛಾಪಿಸಲಾಗಿದೆ.</translation>
 <translation id="445923051607553918">Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸೇರಿ</translation>
 <translation id="4462159676511157176">ಕಸ್ಟಮ್ ಹೆಸರು ಸರ್ವರ್‌ಗಳು</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">ಒಂದು ಬಾರಿಯ ಸಕ್ರಿಯತೆ: ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನದಲ್ಲಿ Smart Lock ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಟೈಪ್ ಮಾಡಿ. Smart Lock ಜೊತೆಗೆ, ಪಾಸ್‌ವರ್ಡ್ ಇಲ್ಲದೆ—ನಿಮ್ಮ ಫೋನ್ ಈ ಸಾಧನವನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡುತ್ತದೆ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬದಲಾಯಿಸಲು ಅಥವಾ ಆಫ್ ಮಾಡಲು, ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಭೇಟಿ ನೀಡಿ.</translation>
 <translation id="4595560905247879544">ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳನ್ನು ಮ್ಯಾನೇಜರ್ (<ph name="CUSTODIAN_NAME" />) ರಿಂದ ಮಾತ್ರ ಮಾರ್ಪಡಿಸಬಹುದು.</translation>
 <translation id="4601242977939794209">EMF ಪರಿವರ್ತಕ</translation>
-<translation id="4601250583401186741">ನಿಯಂತ್ರಕದ ಜೊತೆಗೆ ಜೋಡಿಸಿ</translation>
 <translation id="4602466770786743961">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಹಾಗೂ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶಿಸಲು <ph name="HOST" /> ಅನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
 <translation id="4605399136610325267">ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿಲ್ಲ</translation>
 <translation id="4608500690299898628">&amp;ಹುಡುಕು...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">ಅನುಮತಿಸು</translation>
 <translation id="5045550434625856497">ತಪ್ಪಾದ ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="5048179823246820836">ನೋರ್ಡಿಕ್</translation>
+<translation id="5048294425697652159">ಪ್ರದರ್ಶನ ಮಾಪನಾಂಕಕ್ಕೆ Quirks ಕ್ಲೈಂಟ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="5053604404986157245">ಯಾದೃಚ್ಛಿಕವಾಗಿ ರಚಿಸಲಾದ TPM ಪಾಸ್‌ವರ್ಡ್ ಲಭ್ಯವಿಲ್ಲ. Powerwash ನ ನಂತರ ಇದು ಸಾಮಾನ್ಯವಾಗಿದೆ.</translation>
 <translation id="5053803681436838483">ಹೊಸ ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸ...</translation>
 <translation id="5055309315264875868">ನಿಮ್ಮ ಸಿಂಕ್‌ ಮಾಡಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ನಿರ್ವಹಿಸಲು ಪಾಸ್‌ವರ್ಡ್‌ ನಿರ್ವಾಹಕ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಪುಟದಲ್ಲಿ ಲಿಂಕ್‌ ಅನ್ನು ತೋರಿಸು.</translation>
@@ -2883,7 +2882,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">ಮಾಧ್ಯಮ ಪ್ಲೇಬ್ಯಾಕ್‌ಗೆ ಗೆಸ್ಚರ್‌ನ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="5189060859917252173">ಪ್ರಮಾಣಪತ್ರವು "<ph name="CERTIFICATE_NAME" />" ಪ್ರಮಾಣೀಕರಣದ ಪ್ರಾಧಿಕಾರವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.</translation>
-<translation id="5196117515621749903">ತಿರಸ್ಕೃತ ಸಂಗ್ರಹವನ್ನು ಅನ್ನು ಮರುಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">ಇಂಟರ್ನೆಟ್</translation>
 <translation id="5197680270886368025">ಸಿಂಕ್ ಪೂರ್ಣಗೊಂಡಿದೆ.</translation>
@@ -2898,6 +2896,7 @@
 <translation id="521582610500777512">ಫೋಟೋವನ್ನು ತ್ಯಜಿಸಲಾಗಿದೆ</translation>
 <translation id="5218183485292899140">ಸ್ವಿಸ್ ಫ್ರೆಂಚ್</translation>
 <translation id="5218766986344577658">ಲಿಂಕ್ ಅಸ್ಪಷ್ಟತೆ ನಿವಾರಣೆಯ ಪಾಪ್ಅಪ್</translation>
+<translation id="5220992698394817380">IME ಮೆನುವಿನಲ್ಲಿ ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation>
 <translation id="5225324770654022472">ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಶಾರ್ಟ್‌ಕಟ್ ತೋರಿಸು</translation>
 <translation id="5227536357203429560">ಖಾಸಗಿ ನೆಟ್‌ವರ್ಕ್ ಸೇರಿಸಿ...</translation>
@@ -2940,6 +2939,7 @@
 <translation id="5271247532544265821">ಸರಳವಾದ ಟಾಗಲ್/ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ ಮೋಡ್</translation>
 <translation id="5271549068863921519">ಪಾಸ್‌ವರ್ಡ್ ಉಳಿಸಿ</translation>
 <translation id="5273628206174272911">ಅಡ್ಡಲಾಗಿರುವ ಓವರ್‌ಸ್ಕ್ರೋಲ್‌ಗೆ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ ಪ್ರಾಯೋಗಿಕ ಇತಿಹಾಸ ನ್ಯಾವಿಗೇಷನ್.</translation>
+<translation id="5275194674756975076">ಸರಿ, ರಿಫ್ರೆಶ್ ಮಾಡು</translation>
 <translation id="5275795814002959418">ಈ ಸೈಟ್‌ನಿಂದ <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google ಡ್ರೈವ್‌ನಿಂದ ಮರುಪಡೆಯಲಾದ ಫೈಲ್‌ಗಳು</translation>
 <translation id="527605719918376753">ಟ್ಯಾಬ್ ಮ್ಯೂಟ್ ಮಾಡಿ</translation>
@@ -3013,6 +3013,7 @@
 <translation id="5368720394188453070">ನಿಮ್ಮ ಫೋನ್ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ. ಪ್ರವೇಶಿಸಲು ಅದನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿ.</translation>
 <translation id="5369927996833026114">Chrome ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚರ್ ಅನ್ನು ಅನ್ವೇಷಿಸಿ</translation>
 <translation id="5370819323174483825">&amp;ಮರುಲೋಡ್</translation>
+<translation id="5372066618989754822">ಭಾಷೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಪುಟದಲ್ಲಿ ಹೊಸ IME ಮೆನುಗೆ ಪ್ರವೇಶ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="5372529912055771682">ಪೂರೈಸಿದ ದಾಖಲಾತಿ ಮೋಡ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನ ಈ ಆವೃತ್ತಿಯ ಮೂಲಕ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ. ನೀವು ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಚಾಲನೆಗೊಳಿಸುತ್ತಿರುವಿರಿ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="5374359983950678924">ಚಿತ್ರವನ್ನು ಬದಲಿಸಿ</translation>
 <translation id="5376169624176189338">ಹಿಂದಕ್ಕೆ ಹೋಗಲು ಕ್ಲಿಕ್ ಮಾಡಿ, ಇತಿಹಾಸ ವೀಕ್ಷಿಸಲು ಒತ್ತಿಹಿಡಿಯಿರಿ</translation>
@@ -3199,6 +3200,7 @@
 <translation id="5626134646977739690">ಹೆಸರು:</translation>
 <translation id="5627086634964711283">ನೀವು ಮುಖಪುಟ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಪುಟವನ್ನು ಕೂಡಾ ಇದು ನಿಯಂತ್ರಿಸುತ್ತದೆ.</translation>
 <translation id="5627259319513858869">ಇನ್ನೂ ಪ್ರಗತಿಯ ಹಂತದಲ್ಲಿರುವ ಪ್ರಾಯೋಗಿಕ ಕ್ಯಾನ್ವಾಸ್ ವೈಶಿಷ್ಟ್ಯಗಳ ಬಳಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ಬ್ರೌಸರ್‌ನ ಉನ್ನತ Chrome ನಲ್ಲಿ ವಸ್ತು ವಿನ್ಯಾಸ</translation>
 <translation id="5633060877636360447">ಇದು ಈ ಸಾಧನದಿಂದ ಖಾಯಂ ಆಗಿ ಕನಿಷ್ಟ <ph name="TOTAL_COUNT" /> ಐಟಂಗಳನ್ನು ಅಳಿಸುತ್ತದೆ. ಆದರೆ ಇತರ ಸಾಧನಗಳಿಂದ ಸಿಂಕ್ ಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೆರವುಗೊಳಿಸುವುದಿಲ್ಲ.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> ಅನ್ನು ಬಳಸಲು ನೀವು ಮೊದಲಿಗೆ ಕೆಲವು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆರೆಯುವಂತಹ, <ph name="LINK_START" />ನೆಟ್‌ವರ್ಕ್‌ನ ಸೈನ್-ಇನ್ ಪುಟವನ್ನು ಭೇಟಿ ಮಾಡಬೇಕಾಗಿದೆ<ph name="LINK_END" />. ಇದು ಸಂಭವಿಸದಿದ್ದರೆ, ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
@@ -3229,6 +3231,7 @@
 <translation id="5678862612529498267">ಕೀಬೋರ್ಡ್‌ ಫೋಕಸ್‌ ಮೂಲಕ ವಿಷಯವನ್ನು ಎದ್ದುಗಾಣಿಸಿ</translation>
 <translation id="5678955352098267522">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="WEBSITE_1" /> ನಲ್ಲಿ ಓದಿ</translation>
 <translation id="5680928275846978395">ಸಮಗ್ರ ನೋಟ ಮೋಡ್‌ನಲ್ಲಿ ಪಠ್ಯ ಫಿಲ್ಟರ್‌ ಮಾಡುವಿಕೆ</translation>
+<translation id="5683818630978268777">ಪ್ರಾಯೋಗಿಕ ಕೀಬೋರ್ಡ್ ಲಾಕ್ UI.</translation>
 <translation id="5684661240348539843">ಸ್ವತ್ತು ಗುರುತಿಸುವಿಕೆ</translation>
 <translation id="569068482611873351">ಆಮದು...</translation>
 <translation id="56907980372820799">ಲಿಂಕ್ ಡೇಟಾ</translation>
@@ -3694,7 +3697,6 @@
 <translation id="6420676428473580225">ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗೆ ಸೇರಿಸಿ</translation>
 <translation id="6422329785618833949">ಫೋಟೋ ತಿರುಗಿಸು</translation>
 <translation id="642282551015776456">ಈ ಹೆಸರನ್ನು ಫೋಲ್ಡರ್‌ನ ಫೈಲ್‌ನಂತೆ ಬಳಸಲಾಗುವುದಿಲ್ಲ</translation>
-<translation id="642322423610046417">ನಿಮಗೆ ಅಗತ್ಯವಿಲ್ಲದ ವಿಸ್ತರಣೆಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಸಂದರ್ಭದ (ರೈಟ್-ಕ್ಲಿಕ್) ಮೆನು ಬಳಸಿ.</translation>
 <translation id="6423239382391657905">VPN ತೆರೆಯಿರಿ</translation>
 <translation id="6423731501149634044">ನಿಮ್ಮ ಪೂರ್ವನಿಯೋಜಿತ PDF ವೀಕ್ಷಕದಂತೆ Adobe Reader ಬಳಸುವಿರಾ?</translation>
 <translation id="6425092077175753609">ವಸ್ತು</translation>
@@ -3764,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">ಕೀಬೋರ್ಡ್ ಲಾಕ್ ಮೋಡ್‌ನೊಂದಿಗೆ ಪ್ರಾಯೋಗಿಕ ಪೂರ್ಣ ಪರದೆ ನಿರ್ಗಮಿಸಲು Esc ಹೋಲ್ಡ್ ಮಾಡುವ ಬಳಕೆದಾರರು ಅಗತ್ಯವಿದೆ.</translation>
 <translation id="6527303717912515753">ಹಂಚಿಕೊಳ್ಳು</translation>
 <translation id="6528546217685656218">ಈ ಕ್ಲೈಂಟ್ ಪ್ರಮಾಣಪತ್ರಕ್ಕೆ ವೈಯಕ್ತಿಕ ಕೀಯು ತಪ್ಪಿ ಹೋಗಿದೆ ಅಥವಾ ಅಮಾನ್ಯವಾಗಿದೆ.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> ಸಿಂಕ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
@@ -3943,6 +3946,7 @@
 <translation id="6825883775269213504">ರಷ್ಯನ್</translation>
 <translation id="6827236167376090743">ಈ ವೀಡಿಯೊ ಸತತವಾಗಿ ಪ್ಲೇ ಆಗುತ್ತಲೇ ಇರುತ್ತದೆ.</translation>
 <translation id="6828153365543658583">ಕೆಳಗಿನ ಬಳಕೆದಾರರಿಗೆ ಸೈನ್-ಇನ್ ಮಾಡುವುದನ್ನು ನಿರ್ಬಂಧಿಸು:</translation>
+<translation id="6828860976882136098">ಎಲ್ಲ ಬಳಕೆದಾರರಿಗೆ ಸ್ವಯಂಚಾಲಿತ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಹೊಂದಿಸುವುದು ವಿಫಲವಾಗಿದೆ (ಪ್ರೀಫ್ಲೈಟ್ ಅನುಷ್ಠಾನ ದೋಷ: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಮೂಲಕ ಸಹಾಯವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.</translation>
 <translation id="6829270497922309893">ನಿಮ್ಮ ಸಂಸ್ಥೆಯಲ್ಲಿ ದಾಖಲಿಸಿಕೊಳ್ಳಿ</translation>
 <translation id="6830590476636787791">ಪ್ರಥಮ-ರನ್ ಟ್ಯುಟೋರಿಯಲ್‌‌ನಲ್ಲಿ ಅನಿಮೇಟ್ ಮಾಡಿರುವ ಪರಿವರ್ತನೆಗಳು</translation>
@@ -3966,7 +3970,6 @@
 <translation id="6860427144121307915">ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="6862635236584086457">ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಉಳಿಸಲಾದ ಎಲ್ಲಾ ಫೈಲ್‌ಗಳನ್ನು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="6865313869410766144">ಸ್ವಯಂತುಂಬುವಿಕೆ ಫಾರ್ಮ್ ಡೇಟಾ</translation>
-<translation id="6865319096921627602">Android ನಲ್ಲಿ ಏಕೀಕೃತ ಮಾಧ್ಯಮ ಪೈಪ್‌ಲೈನ್ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> ಗೆ ಬದಲಿಸಿ</translation>
 <translation id="6869402422344886127">ಗುರುತಿಸಿದ ಚೆಕ್ ಬಾಕ್ಸ್</translation>
 <translation id="6870130893560916279">ಉಕ್ರೇನಿಯನ್ ಕೀಬೋರ್ಡ್</translation>
@@ -4061,6 +4064,7 @@
 <translation id="7006017748900345484">WebRTC H.264 ಸಾಫ್ಟ್‌ವೇರ್ ವೀಡಿಯೊ ಎನ್‌‍‌‌‌‌‌‌‌‌ಕೋಡರ್/ಡಿಕೋಡರ್</translation>
 <translation id="7006634003215061422">ಕೆಳಗಿನ ಅಂಚು</translation>
 <translation id="7006844981395428048">$1 ಆಡಿಯೊ</translation>
+<translation id="7008270479623533562">ಈ ವಿಸ್ತರಣೆಯನ್ನು ರನ್ ಮಾಡಲು, ನೀವು ಪುಟ ರಿಫ್ರೆಶ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ. ನೀವು ವಿಸ್ತರಣೆ ಐಕಾನ್ ಮೇಲೆ ರೈಟ್-ಕ್ಲಿಕ್ ಮಾಡುವುದರ ಮೂಲಕ ಈ ಸೈಟ್‌ನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ವಿಸ್ತರಣೆಯನ್ನು ರನ್ ಮಾಡಬಹುದು.</translation>
 <translation id="7009045250432250765">ಏಕ-ಕ್ಲಿಕ್ ಸ್ವಯಂತುಂಬುವಿಕೆ</translation>
 <translation id="7010160495478792664">ಲಭ್ಯವಿರುವಲ್ಲಿ ಹಾರ್ಡ್‌ವೇರ್-ವೇಗವರ್ಧಿತ ವೀಡಿಯೊ ಡೀಕೋಡ್.</translation>
 <translation id="7010400591230614821">ಆಕ್ರಮಣಕಾರಿ ಟ್ಯಾಬ್ ಬಿಡುಗಡೆ ಕಾರ್ಯತಂತ್ರ</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="7257173066616499747">Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳು</translation>
 <translation id="7257666756905341374">ನೀವು ನಕಲಿಸಿದ ಮತ್ತು ಅಂಟಿಸಿದ ಡೇಟಾವನ್ನು ಓದಿರಿ</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 ನಲ್ಲಿ ವೀಡಿಯೊ ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ಸಾಧನದ ಪರಿವೀಕ್ಷಣೆಯ ಬಳಕೆಗಾಗಿ AVFoundation ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಇಲ್ಲವಾದಲ್ಲಿ QTKit ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="7260504762447901703">ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
 <translation id="7262004276116528033">ಈ ಸೈನ್ ಇನ್ ಸೇವೆಯನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="7262221505565121">ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್ ಪ್ರವೇಶ ವಿನಾಯಿತಿಗಳು</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">NTP ಆಫ್‌ಲೈನ್‌ ಪುಟಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (ಪ್ರಸ್ತುತ)</translation>
 <translation id="7321545336522791733">ಸರ್ವರ್ ತಲುಪಲಾಗುತ್ತಿಲ್ಲ</translation>
-<translation id="7324841169865301118">ಡೆಸ್ಕ್‌ಟಾಪ್ ಹಂಚಿಕೆಗೆ ಟ್ಯಾಬ್ ಆರಿಸಿಕೊಳ್ಳಲು ಬಳಕೆದಾರರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation>
 <translation id="7325437708553334317">ಉನ್ನತ ಕಾಂಟ್ರಾಸ್ಟ್ ವಿಸ್ತರಣೆ</translation>
 <translation id="7326565110843845436">ಟಚ್‌ಪ್ಯಾಡ್ ಮೂರು-ಬೆರಳು-ಕ್ಲಿಕ್</translation>
 <translation id="73289266812733869">ಆಯ್ಕೆ ಮಾಡಲಾಗಿಲ್ಲ</translation>
@@ -5011,7 +5013,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">ಇವರಿಂದ ಫೋಟೋ</translation>
 <translation id="8428213095426709021">ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
-<translation id="8432590265309978927">ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಗಳಲ್ಲಿ ಕ್ರಾಸ್-ಸೈಟ್ iframe ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಲು ಹೆಚ್ಚು ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲ.</translation>
 <translation id="8432745813735585631">ಯುಎಸ್ ಕೋಲ್‌ಮಾರ್ಕ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="8434177709403049435">&amp;ಎನ್ಕೋಡಿಂಗ್</translation>
 <translation id="8434480141477525001">NaCl ಡೀಬಗ್‌ ಪೋರ್ಟ್‌</translation>
@@ -5208,7 +5209,6 @@
 <translation id="8713979477561846077">US ಕೀಬೋರ್ಡ್‌ಗೆ ಭೌತಿಕ ಕೀಬೋರ್ಡ್ ಸ್ವಯಂಸರಿಪಡಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ, ಇದು ಭೌತಿಕ ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದಂತೆ ಸಲಹೆಗಳನ್ನು ನೀಡುತ್ತದೆ.</translation>
 <translation id="871476437400413057">Google ಉಳಿಸಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
 <translation id="8714838604780058252">ಹಿನ್ನೆಲೆ ಗ್ರಾಫಿಕ್ಸ್</translation>
-<translation id="8716065142695381595">Android ನಲ್ಲಿ ಏಕೀಕೃತ (Android ಮತ್ತು ಡೆಸ್ಕ್‌ಟಾಪ್) ಮಾಧ್ಯಮ ಪೈಪ್‌ಲೈನ್ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation>
 <translation id="8722421161699219904">ಯುಎಸ್ ಅಂತರರಾಷ್ಟ್ರೀಯ ಕೀಬೋರ್ಡ್</translation>
 <translation id="872451400847464257">ಹುಡುಕಾಟ ಇಂಜಿನ್ ಅನ್ನು ಸಂಪಾದಿಸಿ</translation>
 <translation id="8724859055372736596">ಫೋಲ್ಡರ್‌ನಲ್ಲಿ &amp;ತೋರಿಸಿ</translation>
@@ -5228,6 +5228,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> ಬದಲಾಗಿ <ph name="PROTOCOL" /> ಲಿಂಕ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="8737709691285775803">ಶಿಲ್</translation>
 <translation id="8741881454555234096">ಮೌಸ್‌ಗೆ ಹೋಲಿಸಿದರೆ ಕಳಪೆ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ಹೊಂದಿರುವ ಸ್ಪರ್ಶಗಳಿಗಾಗಿ ಸರಿಹೊಂದಿಸಲು ಸ್ಪರ್ಶ ಗೆಸ್ಚರ್‌ನ ಸ್ಥಿತಿಯನ್ನು ಸಂಸ್ಕರಿಸಿ.</translation>
+<translation id="8743712320294854924">ಶೆಲ್ಫ್‌ನಲ್ಲಿ ವಿಸ್ತರಿಸಲಾದ ಇನ್‌ಪುಟ್ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸಿ.</translation>
 <translation id="874420130893181774">ಸಾಂಪ್ರದಾಯಿಕ ಪಿನ್‌ಯಿನ್ ಇನ್‌ಪುಟ್ ವಿಧಾನ</translation>
 <translation id="8744525654891896746">ಈ ಮೇಲ್ವಿಚಾರಣೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಒಂದು ಅವತಾರ್ ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="8744641000906923997">ರೊಮಾಜಿ</translation>
@@ -5297,6 +5298,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">ಶಿಫ್ಟ್ ಕೀ ಮೋಡ್ ಸ್ವಿಚ್</translation>
 <translation id="8852742364582744935">ಕೆಳಗಿನ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ:</translation>
+<translation id="8853611566624224021">ಪ್ರದರ್ಶನ ಬಣ್ಣ ಮಾಪನಾಂಕಕ್ಕೆ Quirks ಸರ್ವರ್‌ನಿಂದ icc ಪ್ರದರ್ಶನ ಫೈಲ್‌ಗಳನ್ನು ಪುನಃ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="885381502874625531">ಬೆಲರೂಸಿಯನ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="8856844195561710094">Bluetooth ಸಾಧನ ಅನಾವರಣವನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲು ವಿಫಲಗೊಂಡಿದೆ.</translation>
 <translation id="885701979325669005">ಸಂಗ್ರಹಣೆ</translation>
@@ -5346,7 +5348,6 @@
 <translation id="8925458182817574960">&amp;ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="8926389886865778422">ಮತ್ತೆ ಕೇಳಬೇಡಿ</translation>
 <translation id="8926518602592448999">ಡೆವೆಲಪರ್ ಮೋಡ್ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation>
-<translation id="8929454297483336498">QTKit ಬದಲಾಗಿ, Mac OS X AVFoundation API ಗಳ ಬಳಕೆ</translation>
 <translation id="8931394284949551895">ಹೊಸ ಸಾಧನಗಳು</translation>
 <translation id="8932730422557198035">Android Midi API ಬಳಸಿ</translation>
 <translation id="8933960630081805351">ಫೈಂಡರ್‌ನಲ್ಲಿ &amp;ತೋರಿಸಿ</translation>
@@ -5360,6 +5361,7 @@
 <translation id="894360074127026135">Netscape ಅಂತರರಾಷ್ಟ್ರೀಯ ಸ್ಟೆಪ್-ಅಪ್</translation>
 <translation id="8944779739948852228">ಪ್ರಿಂಟರ್ ಪತ್ತೆಯಾಗಿದೆ</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="895347679606913382">ಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತಿದೆ...</translation>
 <translation id="8954952943849489823">ಸರಿಸುವುದು ವಿಫಲವಾಗಿದೆ, ಅನಿರೀಕ್ಷಿತ ದೋಷ: $1</translation>
@@ -5504,6 +5506,7 @@
 <translation id="9154194610265714752">ನವೀಕರಿಸಲಾಗಿದೆ</translation>
 <translation id="9154418932169119429">ಈ ಚಿತ್ರವು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ.</translation>
 <translation id="91568222606626347">ಶಾರ್ಟ್‌ಕಟ್‌ ರಚಿಸಿ...</translation>
+<translation id="9157697743260533322">ಎಲ್ಲ ಬಳಕೆದಾರರಿಗೆ ಸ್ವಯಂಚಾಲಿತ ನವೀಕರಣಗಳನ್ನು ಹೊಂದಿಸುವುದು ವಿಫಲವಾಗಿದೆ (ಪ್ರೀಫ್ಲೈಟ್ ಲಾಂಚ್ ದೋಷ: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">ಓಹ್! ದೃಢೀಕರಣ ಸಮಯದಲ್ಲಿ ನೆಟ್‌ವರ್ಕ್ ಸಂಹವನ ಸಮಸ್ಯೆಯು ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಸಂರ್ಪಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="9159562891634783594">ಮುದ್ರಣ ಮುನ್ನೋಟದಿಂದ ನೋಂದಾಯಿಸದಿರುವ ಮೇಘ ಮುದ್ರಕಗಳ ನೋಂದಣಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
 <translation id="9166510596677678112">ಈ ವ್ಯಕ್ತಿಗೆ ಇಮೇಲ್ ಕಳುಹಿಸು</translation>
@@ -5515,7 +5518,6 @@
 <translation id="9170848237812810038">&amp;ರದ್ದುಮಾಡು</translation>
 <translation id="9170884462774788842">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂ Chrome ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಿಸಬಹುದಾದಂತಹ ಥೀಮ್ ಅನ್ನು ಸೇರಿಸಿದೆ.</translation>
 <translation id="9177499212658576372">ನೀವು ಪ್ರಸ್ತುತ <ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಿರಿ.</translation>
-<translation id="9177556055091995297">ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="917858577839511832">WebRTC ಗೆ DTLS 1.2 ಬಳಸಿಕೊಂಡು ಪರಿಹರಿಸುವಿಕೆ</translation>
 <translation id="917861274483335838">ಪ್ಲಗ್-ಇನ್ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ನಿರ್ವಹಿಸಿ...</translation>
 <translation id="9179348476548754105">ವಹಿವಾಟು ಮರುದೃಢೀಕರಣ ಪುಟಗಳಿಗೆ ಸಿಂಕ್‌ ರುಜುವಾತುಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ ಮೇನೇಜರ್ ಸ್ವಯಂ ತುಂಬುವಿಕೆಯನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ.</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 4cf74ff..fd7ec7c 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -159,7 +159,6 @@
     프로필을 다시 설정해야 합니다.<ph name="BR" />
     <ph name="BR" />
     다음 화면에서 Google이 문제를 해결할 수 있도록 의견을 보내주시기 바랍니다.</translation>
-<translation id="1216954813581739968">데스크톱 공유를 위해 탭 사용</translation>
 <translation id="121827551500866099">다운로드 항목 모두 표시...</translation>
 <translation id="122082903575839559">인증서 서명 알고리즘</translation>
 <translation id="1221024147024329929">PKCS #1 MD2(RSA 암호화 사용)</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL(검색어 자리에 % 입력)</translation>
 <translation id="1546280085599573572">홈 버튼을 클릭하면 표시되는 페이지가 이 확장 프로그램으로 인해 변경되었습니다.</translation>
 <translation id="1546795794523394272">Chromebox 화상회의 시스템에 오신 것을 환영합니다!</translation>
+<translation id="1547572086206517271">새로고침해야 함</translation>
 <translation id="1547964879613821194">영어(캐나다)</translation>
 <translation id="1548132948283577726">비밀번호를 저장하지 않은 사이트가 표시됩니다.</translation>
 <translation id="1549045574060481141">다운로드 확인</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">오프라인 사용을 위해 최근 방문한 페이지를 로컬에 저장하도록 설정합니다. 오프라인 페이지가 사용 설정되어야 합니다.</translation>
 <translation id="1891668193654680795">소프트웨어 제작자를 식별하기 위해 이 인증서를 신뢰합니다.</translation>
 <translation id="189210018541388520">전체화면 열기</translation>
+<translation id="1892754076732315533">페이지 트리거 전체화면 또는 마우스 포인터 잠금 상태로 전환될 때 제공되는 새롭고 간소화된 사용자 환경입니다.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">클라우드 프로비전 플로 실패함</translation>
 <translation id="189358972401248634">다른 언어</translation>
@@ -1324,6 +1325,7 @@
 <translation id="288042212351694283">Universal 2nd Factor 기기에 액세스</translation>
 <translation id="2881966438216424900">마지막 액세스 날짜:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" />이(가) 다시 시작되어 곧 재설정됩니다.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">작업 관리자</translation>
 <translation id="2887525882758501333">PDF 문서</translation>
 <translation id="2888807692577297075">&lt;b&gt;'<ph name="SEARCH_STRING" />'&lt;/b&gt;와(과) 일치하는 항목 없음</translation>
@@ -1754,6 +1756,7 @@
 <translation id="3479552764303398839">나중에</translation>
 <translation id="3480892288821151001">창을 왼쪽에 고정</translation>
 <translation id="3481915276125965083">이 페이지에서 다음 팝업이 차단되었습니다.</translation>
+<translation id="3482214069979148937">전체화면을 종료하려면 |<ph name="ACCELERATOR" />|을(를) 누르세요.</translation>
 <translation id="3484869148456018791">새로운 인증서 받기</translation>
 <translation id="3487007233252413104">익명의 함수</translation>
 <translation id="348771913750618459">iframe 기반 로그인 절차</translation>
@@ -1848,7 +1851,6 @@
 <translation id="3593965109698325041">인증서 이름 제약조건</translation>
 <translation id="3595596368722241419">배터리 충전 완료</translation>
 <translation id="3600456501114769456">관리자가 사용자 기기의 로컬 파일에 대한 액세스를 차단했습니다.</translation>
-<translation id="3601395307734599350">모든 확장 프로그램이 여기에 표시됨</translation>
 <translation id="3603385196401704894">프랑스어(캐나다)</translation>
 <translation id="3603622770190368340">네트워크 인증서 받기</translation>
 <translation id="3605780360466892872">와이셔츠</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">글로벌 기본값 사용(감지)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{탭 1개}other{탭 #개}}</translation>
 <translation id="4154664944169082762">지문</translation>
-<translation id="4157188838832721931">비밀번호 페이지에서 비밀번호를 표시하기 전에 사용자의 OS 비밀번호 입력을 요청하는 메시지 표시 기능을 사용 중지합니다.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">재생목록 열기</translation>
 <translation id="4159681666905192102"><ph name="CUSTODIAN_EMAIL" />님과 <ph name="SECOND_CUSTODIAN_EMAIL" />님이 관리하는 어린이용 계정입니다.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">다른 계정에 로그인</translation>
 <translation id="4219614746733932747">사용하도록 설정하면 Blink에서 확대/축소 매커니즘을 사용하여 기기 배율에 맞게 콘텐츠를 조정합니다.</translation>
 <translation id="4220865787605972627">디스플레이가 디스플레이 색상 보정을 지원하는 경우 기능을 허용합니다.</translation>
-<translation id="4233506668751282421">데스크톱 공유를 위해 오디오 사용</translation>
 <translation id="4235200303672858594">전체 화면</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" />에 계정 추가</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" />을 이 언어로 사용할 수 없습니다.</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">기기에 정책 설정을 설치하지 못함: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" />에서 마우스 커서를 사용 중지하려고 합니다.</translation>
 <translation id="424546999567421758">디스크 사용률이 높음</translation>
-<translation id="4247072926966606568">이 플래그를 사용하도록 설정하면 사용자가 데스크톱 공유 선택기 창을 통해 오디오를 공유할 것인지 여부를 선택할 수 있게 됩니다.</translation>
 <translation id="424726838611654458">항상 Adobe Reader에서 열기</translation>
 <translation id="4249248555939881673">네트워크 연결 대기 중...</translation>
 <translation id="4249373718504745892">카메라와 마이크 액세스가 차단된 페이지입니다.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">주소 추가</translation>
 <translation id="4359408040881008151">함께 설치된 확장 프로그램입니다.</translation>
 <translation id="4361190688154226069">보기에 사각형 기반 타겟팅 사용</translation>
-<translation id="4363372140743955595">비밀번호 관리자 다시 인증</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" />(이)가 다운로드됨</translation>
 <translation id="4364830672918311045">알림 표시</translation>
 <translation id="4365673000813822030">동기화 작업이 중지되었습니다.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">자동완성 정보</translation>
 <translation id="4449996769074858870">이 탭은 오디오를 재생합니다.</translation>
 <translation id="4450974146388585462">진단</translation>
+<translation id="4452426408005428395">닫기</translation>
 <translation id="4454939697743986778">이 인증서는 시스템 관리자가 설치했습니다.</translation>
 <translation id="445923051607553918">WiFi 네트워크 연결</translation>
 <translation id="4462159676511157176">맞춤 이름 서버</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">한번에 활성화: 비밀번호를 입력하여 이 <ph name="DEVICE_TYPE" />에서 Smart Lock을 활성화하세요. Smart Lock을 이용하면 비밀번호를 입력할 필요 없이 휴대전화로 이 기기를 잠금 해제할 수 있습니다. 이 기능을 변경하거나 사용 중지하려면 <ph name="DEVICE_TYPE" />의 설정으로 이동하세요.</translation>
 <translation id="4595560905247879544">앱 및 확장 프로그램은 관리자(<ph name="CUSTODIAN_NAME" />)만 수정할 수 있습니다.</translation>
 <translation id="4601242977939794209">EMF 변환기</translation>
-<translation id="4601250583401186741">컨트롤러와 페어링</translation>
 <translation id="4602466770786743961"><ph name="HOST" />에서 카메라와 마이크에 액세스하도록 항상 허용</translation>
 <translation id="4605399136610325267">인터넷에 연결되지 않았습니다.</translation>
 <translation id="4608500690299898628">찾기(&amp;F)...</translation>
@@ -2785,6 +2783,7 @@
 <translation id="5039804452771397117">허용</translation>
 <translation id="5045550434625856497">비밀번호가 잘못되었습니다.</translation>
 <translation id="5048179823246820836">북유럽어</translation>
+<translation id="5048294425697652159">디스플레이 보정 Quirks Client 사용</translation>
 <translation id="5053604404986157245">임의로 생성된 TPM 비밀번호는 사용할 수 없습니다. Powerwash 이후에는 정상입니다.</translation>
 <translation id="5053803681436838483">새 배송지 주소...</translation>
 <translation id="5055309315264875868">동기화된 비밀번호를 온라인에서 관리하도록 비밀번호 관리자 설정 페이지에 링크를 표시합니다.</translation>
@@ -2882,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" />(<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">미디어 재생 시의 동작 요구사항</translation>
 <translation id="5189060859917252173">'<ph name="CERTIFICATE_NAME" />' 인증서는 인증 기관을 나타냅니다.</translation>
-<translation id="5196117515621749903">캐시 무시하고 새로고침</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">인터넷</translation>
 <translation id="5197680270886368025">동기화가 완료되었습니다.</translation>
@@ -2897,6 +2895,7 @@
 <translation id="521582610500777512">사진이 삭제되었습니다.</translation>
 <translation id="5218183485292899140">프랑스어(스위스)</translation>
 <translation id="5218766986344577658">링크 경로 확인 팝업</translation>
+<translation id="5220992698394817380">IME 메뉴 선택 사용</translation>
 <translation id="5222676887888702881">로그아웃</translation>
 <translation id="5225324770654022472">앱 단축키 표시</translation>
 <translation id="5227536357203429560">사설 네트워크 추가...</translation>
@@ -2939,6 +2938,7 @@
 <translation id="5271247532544265821">중국어 간체/번체 모드 전환</translation>
 <translation id="5271549068863921519">비밀번호 저장</translation>
 <translation id="5273628206174272911">가로 오버스크롤에 반응하는 기록 탐색(실험 기능)입니다.</translation>
+<translation id="5275194674756975076">새로고침</translation>
 <translation id="5275795814002959418">이 사이트에서 <ph name="COUNT" />개</translation>
 <translation id="5275973617553375938">Google 드라이브에서 복구된 파일</translation>
 <translation id="527605719918376753">탭 음소거</translation>
@@ -3012,6 +3012,7 @@
 <translation id="5368720394188453070">휴대전화가 잠겨있습니다. 이용하려면 기기를 잠금 해제하세요.</translation>
 <translation id="5369927996833026114">Chrome 앱 실행기 소개</translation>
 <translation id="5370819323174483825">새로고침(&amp;R)</translation>
+<translation id="5372066618989754822">언어 설정 페이지의 새 IME 메뉴에 액세스할 수 있습니다.</translation>
 <translation id="5372529912055771682">제공된 등록 모드는 해당 버전의 운영 체제에서 지원되지 않습니다. 최신 버전을 실행하고 있는지 확인한 뒤 다시 시도하세요.</translation>
 <translation id="5374359983950678924">사진 변경</translation>
 <translation id="5376169624176189338">클릭하면 이전 페이지로 가고 누르고 있으면 방문 기록이 나타납니다.</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">이름:</translation>
 <translation id="5627086634964711283">또한 홈 버튼을 클릭할 때 표시되는 페이지를 설정합니다.</translation>
 <translation id="5627259319513858869">아직 개발 중인 캔버스 실험 기능을 사용합니다.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">브라우저 상단 Chrome의 머티리얼 디자인</translation>
 <translation id="5633060877636360447">기기에서 <ph name="TOTAL_COUNT" />개 이상의 항목이 영구적으로 삭제되지만 다른 기기에 동기화된 항목은 삭제되지 않습니다.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" />을(를) 사용하려면 먼저 몇 초 뒤에 자동으로 열리는 <ph name="LINK_START" />네트워크 로그인 페이지로 이동<ph name="LINK_END" />해야 합니다. 네트워크 로그인 페이지가 자동으로 열리지 않으면 네트워크를 사용할 수 없습니다.</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">키보드 포커스를 사용해 사물 강조표시</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" />에서 데이터 읽기</translation>
 <translation id="5680928275846978395">최근 사용 모드에서 텍스트 필터링</translation>
+<translation id="5683818630978268777">실험 키보드 잠금 UI</translation>
 <translation id="5684661240348539843">애셋 식별자</translation>
 <translation id="569068482611873351">가져오기...</translation>
 <translation id="56907980372820799">데이터 연결</translation>
@@ -3567,7 +3570,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">터치 조정</translation>
 <translation id="6218364611373262432">다시 시작할 때마다 앱 런처 설치 상태를 다시 설정합니다. 이 플래그가 설정된 동안 Chrome을 시작할 때마다 런처가 설치되었다는 정보를 Chrome에서 삭제합니다. 이 기능은 앱 런처 설치 흐름을 테스트하는 데 사용합니다.</translation>
-<translation id="6219616557885484178">Google Play에서 백만 개 이상의 앱 및 게임 중에 선택하여 <ph name="DEVICE_TYPE" />에 설치하고 사용하세요.</translation>
+<translation id="6219616557885484178">Google Play에서 수많은 앱과 게임 중에 골라 <ph name="DEVICE_TYPE" />에 설치하고 사용하세요.</translation>
 <translation id="6219717821796422795">한어(Hanyu)</translation>
 <translation id="6220413761270491930">확장 프로그램 로드 중 오류</translation>
 <translation id="6221345481584921695">Google 세이프 브라우징이 최근 <ph name="SITE" />에서 <ph name="BEGIN_LINK" />멀웨어를 감지<ph name="END_LINK" />했습니다. 평소에 안전한 웹사이트도 멀웨어에 감염될 수가 있습니다. 악성 콘텐츠의 출처는 알려진 멀웨어 배포자인 <ph name="SUBRESOURCE_HOST" />입니다.</translation>
@@ -3694,7 +3697,6 @@
 <translation id="6420676428473580225">바탕화면에 추가</translation>
 <translation id="6422329785618833949">사진이 뒤집힘</translation>
 <translation id="642282551015776456">폴더 이름의 파일으로 사용할 수 없는 이름입니다.</translation>
-<translation id="642322423610046417">컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 사용하여 필요 없는 확장 프로그램을 삭제하세요.</translation>
 <translation id="6423239382391657905">공개 VPN</translation>
 <translation id="6423731501149634044">Adobe Reader를 기본 PDF 뷰어로 사용하시겠습니까?</translation>
 <translation id="6425092077175753609">머티리얼</translation>
@@ -3765,6 +3767,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">키보드 잠금 모드를 사용하는 실험 전체화면을 종료하려면 ESC 키를 길게 누르세요.</translation>
 <translation id="6527303717912515753">공유</translation>
 <translation id="6528546217685656218">이 클라이언트 인증서의 비공개 키가 없거나 잘못되었습니다.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" />을(를) 동기화하는 중...</translation>
@@ -3944,6 +3947,7 @@
 <translation id="6825883775269213504">러시아어</translation>
 <translation id="6827236167376090743">이 동영상이 계속 반복 재생됩니다.</translation>
 <translation id="6828153365543658583">로그인할 수 있는 사용자 설정:</translation>
+<translation id="6828860976882136098">모든 사용자에 대해 자동 업데이트를 설정하지 못했습니다(프리플라이트 실행 오류: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="6829250331733125857"><ph name="DEVICE_TYPE" /> 사용과 관련하여 도움을 받으세요.</translation>
 <translation id="6829270497922309893">조직에 등록</translation>
 <translation id="6830590476636787791">첫 실행 가이드에서 전환을 애니메이션으로 실행</translation>
@@ -3966,7 +3970,6 @@
 <translation id="6860427144121307915">탭에서 열기</translation>
 <translation id="6862635236584086457">이 폴더에 저장된 모든 파일은 온라인으로 자동 백업됨</translation>
 <translation id="6865313869410766144">양식 데이터 자동완성</translation>
-<translation id="6865319096921627602">Android에서 통합 미디어 파이프라인을 사용합니다.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" />(으)로 전환</translation>
 <translation id="6869402422344886127">확인란 선택함</translation>
 <translation id="6870130893560916279">우크라이나어 키보드</translation>
@@ -4061,6 +4064,7 @@
 <translation id="7006017748900345484">WebRTC H.264 소프트웨어 동영상 인코더/디코더</translation>
 <translation id="7006634003215061422">하단 여백</translation>
 <translation id="7006844981395428048">$1 오디오</translation>
+<translation id="7008270479623533562">이 확장 프로그램을 실행하려면 페이지를 새로고침해야 합니다. 확장 프로그램 아이콘을 오른쪽 버튼으로 클릭하여 이 사이트에서 자동으로 확장 프로그램을 실행할 수 있습니다.</translation>
 <translation id="7009045250432250765">한 번 클릭하여 자동완성</translation>
 <translation id="7010160495478792664">가능한 경우 하드웨어 가속을 통해 동영상을 디코딩합니다.</translation>
 <translation id="7010400591230614821">적극적인 탭 개방 전략</translation>
@@ -4227,7 +4231,6 @@
 <translation id="7256710573727326513">탭에서 열기</translation>
 <translation id="7257173066616499747">Wi-Fi 네트워크</translation>
 <translation id="7257666756905341374">복사하여 붙여넣은 데이터 조회</translation>
-<translation id="7260002739296185724">OS X 10.7 이상에서 동영상 캡처 및 동영상 기기 모니터링에 AVFoundation을 사용하도록 설정합니다. 설정하지 않을 경우 QTKit이 사용됩니다.</translation>
 <translation id="7260504762447901703">액세스 취소</translation>
 <translation id="7262004276116528033">이 로그인 서비스는 <ph name="SAML_DOMAIN" />에서 호스팅됩니다.</translation>
 <translation id="7262221505565121">샌드박스 처리되지 않은 플러그인 액세스 예외</translation>
@@ -4246,7 +4249,7 @@
 <translation id="7280877790564589615">권한 요청됨</translation>
 <translation id="7282547042039404307">원활함</translation>
 <translation id="7287143125007575591">액세스가 거부되었습니다.</translation>
-<translation id="7288592446024861651">북마크, 방문 기록, 비밀번호, 기타 설정이 Google 계정에 동기화되므로 모든 기기에서 사용할 수 있습니다. <ph name="BEGIN_LINK" />에서 무엇을 동기화할지 제어하세요.</translation>
+<translation id="7288592446024861651">북마크, 방문 기록, 비밀번호, 기타 설정이 Google 계정에 동기화되므로 모든 기기에서 사용할 수 있습니다. <ph name="BEGIN_LINK" />에서 무엇을 동기화할지 관리하세요.</translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" />dpi</translation>
 <translation id="7290594223351252791">등록 확인</translation>
 <translation id="7295019613773647480">관리 대상 사용자를 사용하도록 설정</translation>
@@ -4265,7 +4268,6 @@
 <translation id="7314278895724341067">NTP 오프라인 페이지 사용</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" />(현재)</translation>
 <translation id="7321545336522791733">서버에 연결할 수 없음</translation>
-<translation id="7324841169865301118">사용자가 데스크톱 공유를 위해 탭을 선택할 수 있도록 합니다.</translation>
 <translation id="7325437708553334317">고대비 확장 프로그램</translation>
 <translation id="7326565110843845436">세 손가락으로 터치패드 클릭</translation>
 <translation id="73289266812733869">선택 안함</translation>
@@ -5017,7 +5019,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">사진:</translation>
 <translation id="8428213095426709021">설정</translation>
-<translation id="8432590265309978927">별도의 프로세스에서 교차 사이트 iframe 렌더링에 고도로 실험적인 지원을 제공합니다.</translation>
 <translation id="8432745813735585631">영어(미국식) 콜맥 키보드</translation>
 <translation id="8434177709403049435">인코딩(&amp;E)</translation>
 <translation id="8434480141477525001">NaCl 디버그 포트</translation>
@@ -5214,7 +5215,6 @@
 <translation id="8713979477561846077">미국식 키보드에 물리적 키보드 자동수정을 사용 설정합니다. 이렇게 하면 물리적 키보드로 입력할 때 추천 항목이 표시됩니다.</translation>
 <translation id="871476437400413057">Google에 저장된 비밀번호</translation>
 <translation id="8714838604780058252">배경 그래픽</translation>
-<translation id="8716065142695381595">Android에서 통합(Android 및 데스크톱) 미디어 파이프라인을 사용합니다.</translation>
 <translation id="8722421161699219904">미국 국제 키보드</translation>
 <translation id="872451400847464257" />
 <translation id="8724859055372736596">폴더 열기(&amp;S)</translation>
@@ -5234,6 +5234,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> 대신 <ph name="PROTOCOL" /> 링크 열기</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">터치가 마우스에 비해 해상도가 낮은 것을 보완하기 위해 터치 동작의 위치를 수정합니다.</translation>
+<translation id="8743712320294854924">실행기에서 확장된 입력 옵션을 표시합니다.</translation>
 <translation id="874420130893181774">번체 병음 입력 방법</translation>
 <translation id="8744525654891896746">이 관리 대상 사용자의 아바타 선택</translation>
 <translation id="8744641000906923997">로마자(Romaji)</translation>
@@ -5303,6 +5304,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift 키 모드 전환</translation>
 <translation id="8852742364582744935">추가된 앱 및 확장 프로그램:</translation>
+<translation id="8853611566624224021">디스플레이 색상 보정 Quirks 서버에서 icc 디스플레이 파일 검색을 사용합니다.</translation>
 <translation id="885381502874625531">벨라루스어 키보드</translation>
 <translation id="8856844195561710094">블루투스 기기 검색을 중단하지 못했습니다.</translation>
 <translation id="885701979325669005">저장소</translation>
@@ -5352,7 +5354,6 @@
 <translation id="8925458182817574960">설정(&amp;S)</translation>
 <translation id="8926389886865778422">이 메시지 그만 보기</translation>
 <translation id="8926518602592448999">개발자 모드 확장 프로그램 사용 중지</translation>
-<translation id="8929454297483336498">QTKit 대신 Mac OS X AVFoundation API 사용</translation>
 <translation id="8931394284949551895">새 기기</translation>
 <translation id="8932730422557198035">Android Midi API 사용</translation>
 <translation id="8933960630081805351">Finder에서 보기(&amp;S)</translation>
@@ -5366,6 +5367,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">프린터 검색됨</translation>
 <translation id="8946359700442089734">이 <ph name="IDS_SHORT_PRODUCT_NAME" /> 기기에서 디버깅 기능의 사용 설정을 완료하지 못했습니다.</translation>
+<translation id="8946784827990177241">WebUSB 지원을 사용합니다.</translation>
 <translation id="89515141420106838">프린터 드라이버에 대해 Chrome 웹 스토어 갤러리 앱을 사용 설정합니다. 그러면 앱이 Chrome 웹 스토어에서 특정 USB ID를 사용하는 USB 프린터로의 인쇄를 지원하는 확장 프로그램을 검색합니다.</translation>
 <translation id="895347679606913382">다운로드 시작...</translation>
 <translation id="8954952943849489823">이동에 실패했습니다. 예기치 않은 오류: $1</translation>
@@ -5510,6 +5512,7 @@
 <translation id="9154194610265714752">업데이트됨</translation>
 <translation id="9154418932169119429">이 이미지는 오프라인에서 사용할 수 없습니다.</translation>
 <translation id="91568222606626347">바로가기 만들기...</translation>
+<translation id="9157697743260533322">모든 사용자에 대해 자동 업데이트를 설정하지 못했습니다(프리플라이트 실행 오류: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="9158715103698450907">인증하는 중에 네트워크 통신 문제가 발생했습니다.  네트워크 연결을 확인한 뒤 다시 시도해 주세요.</translation>
 <translation id="9159562891634783594">인쇄 미리보기에서 등록되지 않은 클라우드 프린터를 등록할 수 있도록 설정합니다.</translation>
 <translation id="9166510596677678112">이메일 보내기</translation>
@@ -5521,7 +5524,6 @@
 <translation id="9170848237812810038">실행 취소(&amp;U)</translation>
 <translation id="9170884462774788842">컴퓨터의 다른 프로그램에서 Chrome 작동에 영향을 줄 수 있는 테마를 추가했습니다.</translation>
 <translation id="9177499212658576372">현재 <ph name="NETWORK_TYPE" /> 네트워크에 연결되어 있습니다.</translation>
-<translation id="9177556055091995297">신용카드 관리</translation>
 <translation id="917858577839511832">WebRTC에 대해 DTLS 1.2와 협상</translation>
 <translation id="917861274483335838">플러그인 차단 관리...</translation>
 <translation id="9179348476548754105">비밀번호 관리자가 거래 재인증 페이지에서만 동기화된 사용자 인증 정보를 자동완성하는 방식</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 37d13d9..0b48744 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -159,7 +159,6 @@
     Turėsite dar kartą nustatyti profilį.<ph name="BR" />
     <ph name="BR" />
     Kitame ekrane atsiųskite atsiliepimą, kad padėtumėte išspręsti problemą.</translation>
-<translation id="1216954813581739968">Įgalinti darbalaukio bendrinimo skirtuką.</translation>
 <translation id="121827551500866099">Rodyti visus atsisiuntimus...</translation>
 <translation id="122082903575839559">Sertifikato parašo algoritmas</translation>
 <translation id="1221024147024329929">PKCS Nr. 1 MD2 su RSA šifruote</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL su %s užklausos viet.</translation>
 <translation id="1546280085599573572">Šis plėtinys pakeitė puslapį, kuris rodomas spustelėjus pagrindinio puslapio mygtuką.</translation>
 <translation id="1546795794523394272">Sveiki, tai – „Chromebox“ susitikimams!</translation>
+<translation id="1547572086206517271">Būtina atnaujinti</translation>
 <translation id="1547964879613821194">Kanados anglų</translation>
 <translation id="1548132948283577726">Čia bus rodomos svetainės, kuriose niekada nesaugomi slaptažodžiai.</translation>
 <translation id="1549045574060481141">Patvirtinti atsisiuntimą</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Įgalinti neseniai lankytų puslapių vietinį saugojimą, kad juos būtų galima naudoti neprisijungus. Būtina įgalinti neprisijungus naudojamus puslapius.</translation>
 <translation id="1891668193654680795">Pasitikėti šiuo sertifikatu nustatant programinės įrangos kūrėjus.</translation>
 <translation id="189210018541388520">Atidaryti visame ekrane</translation>
+<translation id="1892754076732315533">Supaprastintos naujam naudotojui teikiamos paslaugos, kai įjungiama puslapio suaktyvinta viso ekrano arba pelės žymeklio užrakto būsena.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Nepavyko debesies aprūpinimo eiga</translation>
 <translation id="189358972401248634">Kitos kalbos</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Pasiekiami bendrieji 2 veiksnio įrenginiai</translation>
 <translation id="2881966438216424900">Paskutinį kartą pasiekta:</translation>
 <translation id="2882943222317434580">„<ph name="IDS_SHORT_PRODUCT_NAME" />“ bus iš karto paleista ir nustatyta iš naujo</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Užduočių tvarkytuvė</translation>
 <translation id="2887525882758501333">PDF dokumentas</translation>
 <translation id="2888807692577297075">Joks failas neatitinka &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt;</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Ne dabar</translation>
 <translation id="3480892288821151001">Pritvirtinti langą kairėje</translation>
 <translation id="3481915276125965083">Šiame puslapyje šie iššokantieji langai buvo užblokuoti:</translation>
+<translation id="3482214069979148937">Laikykite nuspaudę |<ph name="ACCELERATOR" />|, kad išeitumėte iš viso ekrano režimo</translation>
 <translation id="3484869148456018791">Gauti naują sertifikatą</translation>
 <translation id="3487007233252413104">anoniminė funkcija</translation>
 <translation id="348771913750618459">prisijungimo „iframe“ pagrindu srautai</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Sertifikato pavadinimo apribojimai</translation>
 <translation id="3595596368722241419">Akumuliatorius įkrautas</translation>
 <translation id="3600456501114769456">Administratorius išjungė prieigą prie vietinių failų įrenginyje.</translation>
-<translation id="3601395307734599350">Visi jūsų plėtiniai pateikiami čia</translation>
 <translation id="3603385196401704894">Kanados prancūzų</translation>
 <translation id="3603622770190368340">Gauti tinklo sertifikatą</translation>
 <translation id="3605780360466892872">Konservatyvusis</translation>
@@ -2092,7 +2094,7 @@
 <translation id="3940233957883229251">Įgalinti automatinį kartojimą</translation>
 <translation id="3941357410013254652">Kanalo ID</translation>
 <translation id="3941565636838060942">Jei norite paslėpti prieigą prie šios programos, ją turite pašalinti naudodami
-„<ph name="CONTROL_PANEL_APPLET_NAME" />“ prietaisų skydelyje.
+„<ph name="CONTROL_PANEL_APPLET_NAME" />“ valdymo skydelyje.
 
 Ar norite paleisti „<ph name="CONTROL_PANEL_APPLET_NAME" />“?</translation>
 <translation id="3942974664341190312">2 rinkinys</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Naudoti visuotinį numatytąjį nustatymą (nustatyti)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 skirtukas}one{# skirtukas}few{# skirtukai}many{# skirtuko}other{# skirtukų}}</translation>
 <translation id="4154664944169082762">Pirštų atspaudai</translation>
-<translation id="4157188838832721931">Neleisti sufleruoti naudotojui OS slaptažodžio, prieš jį parodant slaptažodžių puslapyje.</translation>
 <translation id="4157869833395312646">„Microsoft“ serverio ribotas šifravimas</translation>
 <translation id="4158739975813877944">Atidaryti grojaraštį</translation>
 <translation id="4159681666905192102">Tai yra vaikų paskyra, kurią tvarko <ph name="CUSTODIAN_EMAIL" /> ir <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Prisijungti prie kitos paskyros</translation>
 <translation id="4219614746733932747">Jei įgalinta, „Blink“ naudoja savo mastelio keitimo mechanizmą, kad pritaikytų turinio mastelį pagal įrenginio mastelį.</translation>
 <translation id="4220865787605972627">Leisti kalibruoti ekrano spalvas, jei ekrane funkcija palaikoma.</translation>
-<translation id="4233506668751282421">Įgalinti darbalaukio bendrinimo garsą</translation>
 <translation id="4235200303672858594">Visas ekranas</translation>
 <translation id="4235813040357936597">Pridėti paskyrą, skirtą <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">„<ph name="PRODUCT_NAME" />“ negalima rodyti šia kalba</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Diegiant politikos nustatymus įrenginyje įvyko klaida: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> norima neleisti pelės žymeklio.</translation>
 <translation id="424546999567421758">Aptiktas intensyvus disko naudojimas</translation>
-<translation id="4247072926966606568">Įjungus šią žymę, darbalaukio bendrinimo rinkiklio languose naudotojas galės pasirinkti, ar bendrinti garsą.</translation>
 <translation id="424726838611654458">Visada atidaryti naudojant „Adobe Reader“</translation>
 <translation id="4249248555939881673">Laukiama tinklo ryšio...</translation>
 <translation id="4249373718504745892">Šis puslapis užblokuotas, kad nepasiektų fotoaparato ir mikrofono.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">Pridėti adresą</translation>
 <translation id="4359408040881008151">Įdiegta, nes priklauso nuo plėtinio (-ių).</translation>
 <translation id="4361190688154226069">Stačiakampio pagrindu nustatomas taikymas rodiniuose</translation>
-<translation id="4363372140743955595">Pakartotinis slaptažodžio tvarkyklės autentifikavimas</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> atsisiųstas</translation>
 <translation id="4364830672918311045">Pateikti pranešimus</translation>
 <translation id="4365673000813822030">Deja, sinchronizavimas sustabdytas.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">Apie automatinį pildymą</translation>
 <translation id="4449996769074858870">Šiame skirtuko lape leidžiamas garso įrašas.</translation>
 <translation id="4450974146388585462">Diagnozuoti</translation>
+<translation id="4452426408005428395">Nepaisyti</translation>
 <translation id="4454939697743986778">Šį sertifikatą įdiegė sistemos administratorius.</translation>
 <translation id="445923051607553918">Prisijungti prie „Wi-Fi“ tinklo</translation>
 <translation id="4462159676511157176">Tinkintų pavadinimų serveriai</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">Vienkartinis suaktyvinimas: įveskite slaptažodį, kad suaktyvintumėte „Smart Lock“ šiame „<ph name="DEVICE_TYPE" />“. Įjungę „Smart Lock“ galėsite atrakinti šį įrenginį naudodami telefoną ir nereikės įvesti slaptažodžio. Kad pakeistumėte arba išjungtumėte šią funkciją, apsilankykite „<ph name="DEVICE_TYPE" />“ nustatymuose.</translation>
 <translation id="4595560905247879544">Programas ir plėtinius gali keisti tik valdytojas (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF keitiklis</translation>
-<translation id="4601250583401186741">Susieti su valdikliu</translation>
 <translation id="4602466770786743961">Visada leisti <ph name="HOST" /> pasiekti fotoaparatą ir mikrofoną</translation>
 <translation id="4605399136610325267">Neprisijungta prie interneto</translation>
 <translation id="4608500690299898628">Rasti...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">Leisti</translation>
 <translation id="5045550434625856497">Netinkamas slaptažodis</translation>
 <translation id="5048179823246820836">Šiaurės šalių</translation>
+<translation id="5048294425697652159">Įgalinti „Quirks Client“, kad būtų galima kalibruoti ekraną.</translation>
 <translation id="5053604404986157245">Šis atsitiktiniu būdu sugeneruotas TPM slaptažodis negalimas. Tai įprasta po „Powerwash“ vykdymo.</translation>
 <translation id="5053803681436838483">Naujas pristatymo adresas...</translation>
 <translation id="5055309315264875868">Rodyti nuorodą slaptažodžių tvarkytuvės nustatymų puslapyje, kad galėtumėte prisijungę tvarkyti sinchronizuojamus slaptažodžius.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Gestų reikalavimas atkuriant mediją</translation>
 <translation id="5189060859917252173">„<ph name="CERTIFICATE_NAME" />“ sertifikatas reprezentuoja sertifikavimo instituciją.</translation>
-<translation id="5196117515621749903">Įkelti iš naujo nepaisant talpyklos</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internetas</translation>
 <translation id="5197680270886368025">Sinchronizavimas baigtas.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">Nuotrauka buvo atmesta</translation>
 <translation id="5218183485292899140">Šveicarijos prancūzų</translation>
 <translation id="5218766986344577658">Nuorodų daugiareikšmiškumo panaikinimo iššokantysis langas</translation>
+<translation id="5220992698394817380">Įgalinti pasirenkamą IME meniu</translation>
 <translation id="5222676887888702881">Atsijungti</translation>
 <translation id="5225324770654022472">Rodyti spartųjį programų klavišą</translation>
 <translation id="5227536357203429560">Pridėti privatųjį tinklą...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Įjungti supaprastintos / tradicinės kinų k. režimą</translation>
 <translation id="5271549068863921519">Išsaugoti slaptažodį</translation>
 <translation id="5273628206174272911">Eksperimentinis istorijos naršymas perslenkant horizontaliai.</translation>
+<translation id="5275194674756975076">Gerai, atnaujinti</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> iš šios svetainės</translation>
 <translation id="5275973617553375938">Atkurti failai iš „Google“ disko</translation>
 <translation id="527605719918376753">Nutildyti skirtuko garsą</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">Telefonas užrakintas. Norėdami įeiti, atrakinkite jį.</translation>
 <translation id="5369927996833026114">Atraskite „Chrome“ programų paleidimo priemonę</translation>
 <translation id="5370819323174483825">&amp;Įkelti iš naujo</translation>
+<translation id="5372066618989754822">Įgalinama prieiga prie naujo IME meniu kalbos nustatymų puslapyje.</translation>
 <translation id="5372529912055771682">Ši operacinė sistema nepalaiko teikiamo registracijos režimo. Įsitikinkite, kad naudojate naujausią versiją ir bandykite dar kartą.</translation>
 <translation id="5374359983950678924">Keisti paveikslėlį</translation>
 <translation id="5376169624176189338">Spustelėkite, kad grįžtumėte, palaukite, kad pamatytumėte istoriją</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Pavadinimas:</translation>
 <translation id="5627086634964711283">Ji taip pat kontroliuoja, koks puslapis rodomas, kai spustelėjate pagrindinio puslapio mygtuką.</translation>
 <translation id="5627259319513858869">Įgalinamas vystomų eksperimentinių matomosios tinklalapio srities funkcijų naudojimas.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Trimačių objektų dizainas „Chrome“ naršyklės viršuje</translation>
 <translation id="5633060877636360447">Atlikus šį veiksmą bus visam laikui ištrinti (-a) mažiausiai <ph name="TOTAL_COUNT" /> element. iš šio įrenginio, bet nebus išvalyti sinchronizuojami elementai iš kitų įrenginių.</translation>
 <translation id="5636996382092289526">Kad naudotumėte „<ph name="NETWORK_ID" />“, pirmiausia reikės <ph name="LINK_START" />apsilankyti tinklo prisijungimo puslapyje<ph name="LINK_END" />, kuris bus automatiškai atidarytas po kelių sekundžių. Jei taip nenutiks, negalėsite naudoti tinklo.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Paryškinti objektą jį suaktyvinus klaviatūra</translation>
 <translation id="5678955352098267522">Skaityti duomenis svetainėje <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Teksto filtravimas apžvalgos režimu</translation>
+<translation id="5683818630978268777">Eksperimentinė klaviatūros užrakto NS.</translation>
 <translation id="5684661240348539843">Ištekliaus identifikatorius</translation>
 <translation id="569068482611873351">Importuoti...</translation>
 <translation id="56907980372820799">Susieti duomenis</translation>
@@ -3693,7 +3696,6 @@
 <translation id="6420676428473580225">Pridėti prie darbalaukio</translation>
 <translation id="6422329785618833949">Nuotrauka apversta</translation>
 <translation id="642282551015776456">Šio pavadinimo negalima naudoti kaip aplanko pavadinimo</translation>
-<translation id="642322423610046417">Naudokite kontekstinį meniu (spustelėję dešinį pelės klavišą), kad pašalintumėte nereikalingus plėtinius.</translation>
 <translation id="6423239382391657905">Atidaryti virtualųjį privatųjį tinklą</translation>
 <translation id="6423731501149634044">Ar naudoti „Adobe Reader“ kaip numatytąją PDF peržiūros priemonę?</translation>
 <translation id="6425092077175753609">Trimačiai objektai</translation>
@@ -3764,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Eksperimentinis viso ekrano klaviatūros užrakto režimas, kuriam veikiant naudotojai turi laikyti paspaudę „Esc“, kad išeitų.</translation>
 <translation id="6527303717912515753">Bendrinti</translation>
 <translation id="6528546217685656218">Trūksta šio kliento sertifikato privačiojo rakto arba jis netinkamas.</translation>
 <translation id="653019979737152879">Sinchronizuojamas failas „<ph name="FILE_NAME" />“...</translation>
@@ -3943,6 +3946,7 @@
 <translation id="6825883775269213504">Rusų</translation>
 <translation id="6827236167376090743">Šis vaizdo įrašas bus grojamas neribotą laiką.</translation>
 <translation id="6828153365543658583">Apriboti prisijungimą šiems naudotojams:</translation>
+<translation id="6828860976882136098">Nepavyko nustatyti automatinių naujinių visiems naudotojams (išankstinio vykdymo klaida: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Gaukite pagalbos dėl „<ph name="DEVICE_TYPE" />“.</translation>
 <translation id="6829270497922309893">Užregistruoti organizacijoje</translation>
 <translation id="6830590476636787791">Animuoti perėjimai pirmojo paleidimo mokymo programoje</translation>
@@ -3966,7 +3970,6 @@
 <translation id="6860427144121307915">Atidaryti skirtuko lape</translation>
 <translation id="6862635236584086457">Visų šiame aplanke saugomų failų kopija automatiškai kuriama internete</translation>
 <translation id="6865313869410766144">Automatinio pildymo formos duomenys</translation>
-<translation id="6865319096921627602">„Android“ įgalinama vieninga medijos komandų grandinė.</translation>
 <translation id="6867678160199975333">Perjungti į <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Pažymėtas žymimasis laukelis</translation>
 <translation id="6870130893560916279">Ukrainietiška klaviatūra</translation>
@@ -4062,6 +4065,7 @@
 <translation id="7006017748900345484">„WebRTC“ H.264 programinės įrangos vaizdo įrašų koduotuvas / dekoderis</translation>
 <translation id="7006634003215061422">Apatinė paraštė</translation>
 <translation id="7006844981395428048">$1 garso įrašas</translation>
+<translation id="7008270479623533562">Kad galėtumėte paleisti šį plėtinį, reikės atnaujinti puslapį. Šį plėtinį šioje svetainėje galite paleisti automatiškai dešiniuoju pelės klavišu spustelėję plėtinio piktogramą.</translation>
 <translation id="7009045250432250765">Automatinis pildymas vienu paspaudimu</translation>
 <translation id="7010160495478792664">Aparatine įranga spartinamas vaizdo įrašų iškodavimas, kur pasiekiama.</translation>
 <translation id="7010400591230614821">Atkaklaus skirtukų paleidimo strategija</translation>
@@ -4228,7 +4232,6 @@
 <translation id="7256710573727326513">Atidaryti skirtuko lape</translation>
 <translation id="7257173066616499747">„Wi-Fi“ tinklai</translation>
 <translation id="7257666756905341374">Skaityti kopijuojamus ir įklijuojamus duomenis</translation>
-<translation id="7260002739296185724">Įgalinti „AVFoundation“ naudojimą vaizdo įrašams fiksuoti ir vaizdo įrenginiui stebėti naudojant 10.7 ar naujesnės versijos „OS X“. Kitu atveju bus naudojama „QTKit“.</translation>
 <translation id="7260504762447901703">Anuliuoti prieigą</translation>
 <translation id="7262004276116528033">Ši prisijungimo paslauga priglobiama <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Ne „smėlio dėžės“ papildinio prieigos išimtys</translation>
@@ -4266,7 +4269,6 @@
 <translation id="7314278895724341067">Įgalinti naujo skirtuko puslapyje neprisijungus pasiekiamus puslapius</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (esamas)</translation>
 <translation id="7321545336522791733">Serveris nepasiekiamas</translation>
-<translation id="7324841169865301118">Naudotojui leidžiama pasirinkti darbalaukio bendrinimo skirtuką.</translation>
 <translation id="7325437708553334317">Didelio kontrasto plėtinys</translation>
 <translation id="7326565110843845436">Jutiklinės dalies spustelėjimas trimis pirštais</translation>
 <translation id="73289266812733869">Nepasirinkta</translation>
@@ -5018,7 +5020,6 @@
 <translation id="8426519927982004547">HTTPS / SSL</translation>
 <translation id="8427933533533814946">Nuotraukos autorius</translation>
 <translation id="8428213095426709021">Nustatymai</translation>
-<translation id="8432590265309978927">Eksperimentinis skirtingų svetainių „iframe“ pateikimas atskiruose procesuose.</translation>
 <translation id="8432745813735585631">JAV „Colemak“ klaviatūra</translation>
 <translation id="8434177709403049435">&amp;Kodavimas</translation>
 <translation id="8434480141477525001">„Native Client“ derinimo prievadas</translation>
@@ -5215,7 +5216,6 @@
 <translation id="8713979477561846077">Įgalinti JAV klaviatūrai skirtą fizinės klaviatūros automatinio taisymo funkciją, kuri gali teikti pasiūlymus vedant tekstą fizine klaviatūra.</translation>
 <translation id="871476437400413057">„Google“ išsaugotus slaptažodžius</translation>
 <translation id="8714838604780058252">Fono grafika</translation>
-<translation id="8716065142695381595">„Android“ įgalinama vieninga („Android“ ir stalinių kompiuterių) medijos komandų grandinė.</translation>
 <translation id="8722421161699219904">JAV tarptautinė klaviatūra</translation>
 <translation id="872451400847464257">Redaguoti paieškos sistemą</translation>
 <translation id="8724859055372736596">&amp;Rodyti aplanke</translation>
@@ -5235,6 +5235,7 @@
 <translation id="8737685506611670901">Atidaryti „<ph name="PROTOCOL" />“ nuorodas vietoje „<ph name="REPLACED_HANDLER_TITLE" />“</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Patikslinti liečiamojo gesto padėtį, siekiant kompensuoti prastą palietimų raišką, palyginti su pele.</translation>
+<translation id="8743712320294854924">Rodyti išskleistas įvesties parinktis lentynoje.</translation>
 <translation id="874420130893181774">Tradicinis „Pinyin“ įvesties metodas</translation>
 <translation id="8744525654891896746">Pasirinkti šio prižiūrimo naudotojo pseudoportretą</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5304,6 +5305,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Režimo perjungimas „Shift“ klavišu</translation>
 <translation id="8852742364582744935">Pridėtos nurodytos programos ir plėtiniai:</translation>
+<translation id="8853611566624224021">Įgalinti ICC vaizdo failus iš „Quirks Server“, skirtus kalibruoti spalvotą ekraną.</translation>
 <translation id="885381502874625531">Baltarusiška klaviatūra</translation>
 <translation id="8856844195561710094">Nepavyko sustabdyti „Bluetooth“ įrenginio aptikimo funkcijos.</translation>
 <translation id="885701979325669005">Saugykla</translation>
@@ -5353,7 +5355,6 @@
 <translation id="8925458182817574960">&amp;Nustatymai</translation>
 <translation id="8926389886865778422">Neklauskite dar kartą</translation>
 <translation id="8926518602592448999">Išjunkite kūrėjo režimu veikiančius plėtinius</translation>
-<translation id="8929454297483336498">Naudoti „Mac OS X AVFoundation“ API vietoje „QTKit“</translation>
 <translation id="8931394284949551895">Nauji įrenginiai</translation>
 <translation id="8932730422557198035">Naudoti „Android Midi“ API</translation>
 <translation id="8933960630081805351">&amp;Rodyti ieškojimo priemonėje</translation>
@@ -5367,6 +5368,7 @@
 <translation id="894360074127026135">„Netscape“ tarptautinė sąranka</translation>
 <translation id="8944779739948852228">Aptiktas spausdintuvas</translation>
 <translation id="8946359700442089734">Šiame „<ph name="IDS_SHORT_PRODUCT_NAME" />“ įrenginyje įgalintos ne visos derinimo funkcijos.</translation>
+<translation id="8946784827990177241">Įgalinti „WebUSB“ palaikymą.</translation>
 <translation id="89515141420106838">Įgalinama „Chrome“ internetinės parduotuvės spausdintuvo tvarkyklių galerija. Programa „Chrome“ internetinėje parduotuvėje ieškos plėtinių, kurie palaiko spausdinimą USB spausdintuvu su konkrečiu USB ID.</translation>
 <translation id="895347679606913382">Pradedama...</translation>
 <translation id="8954952943849489823">Nepavyko perkelti; nenumatyta klaida: $1</translation>
@@ -5511,6 +5513,7 @@
 <translation id="9154194610265714752">Atnaujinta</translation>
 <translation id="9154418932169119429">Šis vaizdas nepasiekiamas neprisijungus.</translation>
 <translation id="91568222606626347">Kurti spartųjį klavišą...</translation>
+<translation id="9157697743260533322">Nepavyko nustatyti automatinių naujinių visiems naudotojams (išankstinio paleidimo klaida: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Deja, nustatant tapatybę iškilo tinklo ryšio problema. Patikrinkite tinklo ryšį ir bandykite dar kartą.</translation>
 <translation id="9159562891634783594">Įgalinti neregistruotų iš debesies spausdinančių spausdintuvų iš spaudinio peržiūros registravimą.</translation>
 <translation id="9166510596677678112">Siųsti el. laišką šiam asmeniui</translation>
@@ -5522,7 +5525,6 @@
 <translation id="9170848237812810038">&amp;Atšaukti</translation>
 <translation id="9170884462774788842">Kita jūsų kompiuteryje esanti programa pridėjo temą, kuri gali pakeisti „Chrome“ veikimo būdą.</translation>
 <translation id="9177499212658576372">Šiuo metu esate prisijungę prie <ph name="NETWORK_TYPE" /> tinklo.</translation>
-<translation id="9177556055091995297">Valdyti kredito korteles</translation>
 <translation id="917858577839511832">„WebRTC“ derybos su DTLS 1.2</translation>
 <translation id="917861274483335838">Tvarkyti papildinių blokavimą...</translation>
 <translation id="9179348476548754105">Kaip slaptažodžių tvarkytuvė tvarko automatinį sinchronizavimo prisijungimo duomenų pildymą tik operacijų pakartotinio autentifikavimo puslapiuose.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index f0748a9..584f86d 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -159,7 +159,6 @@
     Jums būs vēlreiz jāizveido profils.<ph name="BR" />
     <ph name="BR" />
     Nākamajā ekrānā, lūdzu, nosūtiet atsauksmes, lai mēs varētu novērst problēmu.</translation>
-<translation id="1216954813581739968">Cilnes iespējošana darbvirsmas kopīgošanai.</translation>
 <translation id="121827551500866099">Rādīt visas lejupielādes...</translation>
 <translation id="122082903575839559">Sertifikāta paraksta algoritms</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 ar RSA šifrējumu</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL ar zīmēm % vaicājuma vietā</translation>
 <translation id="1546280085599573572">Šis paplašinājums mainīja iestatījumu, kura lapa tiek parādīta, noklikšķinot uz pogas Sākums.</translation>
 <translation id="1546795794523394272">Laipni lūdzam sistēmā “Chromebox sapulcēm”!</translation>
+<translation id="1547572086206517271">Nepieciešama atsvaidzināšana</translation>
 <translation id="1547964879613821194">Kanādas angļu</translation>
 <translation id="1548132948283577726">Saites, kas nekad nesaglabā paroles, parādās šeit.</translation>
 <translation id="1549045574060481141">Lejupielādes apstiprināšana</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Iespējo nesen apmeklētu lapu saglabāšanu lietošanai bezsaistē. Ir jāiespējo bezsaistes lapas.</translation>
 <translation id="1891668193654680795">Uzticēties šim sertifikātam, lai identificētu programmatūras izstrādātājus.</translation>
 <translation id="189210018541388520">Atvērt pilnekrāna režīmu</translation>
+<translation id="1892754076732315533">Vienkāršota jauna lietotāja pieredze, ieslēdzot lapas aktivizētu pilnekrāna režīmu vai peles rādītāja bloķēšanu.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Mākoņa nodrošinājuma plūsmas kļūda</translation>
 <translation id="189358972401248634">Citas valodas</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Piekļūstiet savām Universal 2nd Factor ierīcēm</translation>
 <translation id="2881966438216424900">Pēdējoreiz piekļūts:</translation>
 <translation id="2882943222317434580">Pēc brīža <ph name="IDS_SHORT_PRODUCT_NAME" /> tiks restartēts un atiestatīts.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Uzdevumu pārvaldnieks</translation>
 <translation id="2887525882758501333">PDF dokuments</translation>
 <translation id="2888807692577297075">Neviens vienums neatbilst vaicājumam &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt;.</translation>
@@ -1754,6 +1756,7 @@
 <translation id="3479552764303398839">Vēlāk</translation>
 <translation id="3480892288821151001">Dokot logu kreisajā pusē</translation>
 <translation id="3481915276125965083">Lapā tika bloķēti šādi uznirstošie logi:</translation>
+<translation id="3482214069979148937">Lai izietu no pilnekrāna režīma, turiet nospiestu |<ph name="ACCELERATOR" />|.</translation>
 <translation id="3484869148456018791">Iegūt jaunu sertifikātu</translation>
 <translation id="3487007233252413104">anonīma funkcija</translation>
 <translation id="348771913750618459">Uz iFrame balstītas pierakstīšanās plūsmas</translation>
@@ -1848,7 +1851,6 @@
 <translation id="3593965109698325041">Sertifikāta nosaukuma ierobežojumi</translation>
 <translation id="3595596368722241419">Akumulators pilns</translation>
 <translation id="3600456501114769456">Administrators ir atspējojis piekļuvi lokāliem failiem jūsu ierīcē.</translation>
-<translation id="3601395307734599350">Visi jūsu paplašinājumi ir atrodami šeit</translation>
 <translation id="3603385196401704894">Kanādas franču</translation>
 <translation id="3603622770190368340">Tīkla sertifikāta iegūšana</translation>
 <translation id="3605780360466892872">Biznesmenis</translation>
@@ -2231,7 +2233,6 @@
 <translation id="4151403195736952345">Izmantot globālo noklusējuma vērtību (noteikt)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 cilne}zero{# ciļņu}one{# cilne}other{# cilnes}}</translation>
 <translation id="4154664944169082762">Pirkstu nospiedumi</translation>
-<translation id="4157188838832721931">Atspējot uzvednes parādīšanu lietotājam operētājsistēmas paroles ievadīšanai, pirms tiek atklātas paroļu lapā ietvertās paroles.</translation>
 <translation id="4157869833395312646">Microsoft serverbāzēta šifrēšana</translation>
 <translation id="4158739975813877944">Atvērt atskaņošanas sarakstu</translation>
 <translation id="4159681666905192102">Šis ir bērniem paredzēts konts, ko pārvalda <ph name="CUSTODIAN_EMAIL" /> un <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2275,7 +2276,6 @@
 <translation id="4218259925454408822">Pierakstīties citā kontā</translation>
 <translation id="4219614746733932747">Ja opcija ir iespējota, Blink izmanto tālummaiņas mehānismu, lai mērogotu saturu atbilstoši ierīces mērogošanas koeficientam.</translation>
 <translation id="4220865787605972627">Tiek atļauta displeja krāsu kalibrācija, ja displejs atbalsta šo funkciju.</translation>
-<translation id="4233506668751282421">Audio iespējošana darbvirsmas kopīgošanai</translation>
 <translation id="4235200303672858594">Viss ekrāns</translation>
 <translation id="4235813040357936597">Pievienot kontu šim lietotājam: <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> nevar parādīt šajā valodā</translation>
@@ -2283,7 +2283,6 @@
 <translation id="4242577469625748426">Neizdevās ierīcē instalēt politikas iestatījumus: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> vēlas atspējot jūsu peles kursoru.</translation>
 <translation id="424546999567421758">Konstatēts apjomīgs diska lietojums</translation>
-<translation id="4247072926966606568">Ja šis karodziņš ir iespējots, darbvirsmas kopīgošanas atlasītāja logā lietotājam būs jāizvēlas, vai kopīgot audio.</translation>
 <translation id="424726838611654458">Vienmēr atvērt programmā Adobe Reader</translation>
 <translation id="4249248555939881673">Tiek gaidīta savienojuma izveide ar tīklu...</translation>
 <translation id="4249373718504745892">Šīs lapas piekļuve jūsu kamerai un mikrofonam ir bloķēta.</translation>
@@ -2356,7 +2355,6 @@
 <translation id="4358697938732213860">Pievienot adresi</translation>
 <translation id="4359408040881008151">Paplašinājums tika instalēts atkarīga(-u) paplašinājuma(-u) dēļ.</translation>
 <translation id="4361190688154226069">Uz taisnstūra formu balstīta mērķauditorijas atlase skatījumos</translation>
-<translation id="4363372140743955595">Paroles pārvaldnieka atkārtota autentifikācija</translation>
 <translation id="4364444725319685468">Fails <ph name="FILE_NAME" /> tika lejupielādēts</translation>
 <translation id="4364830672918311045">Parādīt paziņojumus</translation>
 <translation id="4365673000813822030">Hmm! Sinhronizācija ir pārtraukusi darboties.</translation>
@@ -2413,6 +2411,7 @@
 <translation id="4449935293120761385">Par automātisko aizpildi</translation>
 <translation id="4449996769074858870">Šī cilne atskaņo audio.</translation>
 <translation id="4450974146388585462">Diagnosticēt</translation>
+<translation id="4452426408005428395">Atcelt</translation>
 <translation id="4454939697743986778">Šo sertifikātu instalēja sistēmas administrators.</translation>
 <translation id="445923051607553918">Pievienoties Wi-Fi tīklam</translation>
 <translation id="4462159676511157176">Pielāgoti nosaukumu serveri</translation>
@@ -2490,7 +2489,6 @@
 <translation id="4594109696316595112">Vienreizēja darbība: ievadiet paroli, lai aktivizētu sistēmu Smart Lock šajā ierīcē <ph name="DEVICE_TYPE" />. Izmantojot Smart Lock, jūsu tālrunis atbloķēs šo ierīci bez paroles. Lai mainītu vai izslēgtu šo funkciju, apmeklējiet savas ierīces <ph name="DEVICE_TYPE" /> iestatījumus.</translation>
 <translation id="4595560905247879544">Lietotnes un paplašinājumus var pārveidot tikai pārvaldnieks (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF pārveidotājs</translation>
-<translation id="4601250583401186741">Savienošana pārī ar vadāmierīci</translation>
 <translation id="4602466770786743961">Vienmēr atļaut vietnei <ph name="HOST" /> piekļūt kamerai un mikrofonam</translation>
 <translation id="4605399136610325267">Nav interneta savienojuma</translation>
 <translation id="4608500690299898628">&amp;Atrast...</translation>
@@ -2786,6 +2784,7 @@
 <translation id="5039804452771397117">Atļaut</translation>
 <translation id="5045550434625856497">Nepareiza parole</translation>
 <translation id="5048179823246820836">Skandināvu</translation>
+<translation id="5048294425697652159">Iespējot Quirks klientu displeja kalibrācijai</translation>
 <translation id="5053604404986157245">Pēc nejaušības principa ģenerētā TPM parole nav pieejama. Tā nereti notiek pēc funkcijas Powerwash izmantošanas.</translation>
 <translation id="5053803681436838483">Jauna piegādes adrese...</translation>
 <translation id="5055309315264875868">Rādīt saiti paroļu pārvaldnieka iestatījumu lapā, lai tiešsaistē pārvaldītu sinhronizētās paroles.</translation>
@@ -2883,7 +2882,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Žestu nepieciešamība multivides atskaņošanai</translation>
 <translation id="5189060859917252173">Sertifikāts “<ph name="CERTIFICATE_NAME" />” norāda sertifikāta izdevējiestādi.</translation>
-<translation id="5196117515621749903">Atkārtoti ielādēt, ignorējot kešatmiņu</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internets</translation>
 <translation id="5197680270886368025">Sinhronizācija ir pabeigta.</translation>
@@ -2898,6 +2896,7 @@
 <translation id="521582610500777512">Fotoattēls tika noraidīts.</translation>
 <translation id="5218183485292899140">Šveices franču</translation>
 <translation id="5218766986344577658">Saišu neskaidrību novēršanas uznirstošais elements</translation>
+<translation id="5220992698394817380">Iespējot izvēles IME izvēlni</translation>
 <translation id="5222676887888702881">Izrakstīties</translation>
 <translation id="5225324770654022472">Rādīt lietotņu saīsnes</translation>
 <translation id="5227536357203429560">Pievienot privātu tīklu...</translation>
@@ -2940,6 +2939,7 @@
 <translation id="5271247532544265821">Pārslēgt ķīniešu vienkāršotās/tradicionālās valodas režīmu</translation>
 <translation id="5271549068863921519">Saglabāt paroli</translation>
 <translation id="5273628206174272911">Eksperimentāla navigācija vēsturē, horizontāli ritinot pāri malai.</translation>
+<translation id="5275194674756975076">Labi, atsvaidzināt</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> no šīs vietnes</translation>
 <translation id="5275973617553375938">No Google diska atkoptie faili</translation>
 <translation id="527605719918376753">Izslēgt cilnes skaņu</translation>
@@ -3013,6 +3013,7 @@
 <translation id="5368720394188453070">Jūsu tālrunis ir bloķēts. Lai tajā ieietu, atbloķējiet to.</translation>
 <translation id="5369927996833026114">Atklājiet Chrome lietotņu palaišanas programmu!</translation>
 <translation id="5370819323174483825">&amp;Atkārtoti ielādēt</translation>
+<translation id="5372066618989754822">Iespējo piekļuvi jaunajai IME izvēlnei valodas iestatījumu lapā.</translation>
 <translation id="5372529912055771682">Nodrošinātais reģistrācijas režīms netiek atbalstīts šajā operētājsistēmas versijā. Noteikti lietojiet jaunāko versiju un mēģiniet vēlreiz.</translation>
 <translation id="5374359983950678924">Mainīt attēlu</translation>
 <translation id="5376169624176189338">Nospiediet, lai dotos atpakaļ, paturiet, lai redzētu vēsturi</translation>
@@ -3198,6 +3199,7 @@
 <translation id="5626134646977739690">Nosaukums:</translation>
 <translation id="5627086634964711283">Tas nosaka arī to, kāda lapa tiks rādīta, kad noklikšķināsiet uz pogas “Sākums”.</translation>
 <translation id="5627259319513858869">Iespējo eksperimentālu, joprojām izstrādes stadijā esošu kanvas elementu funkciju izmantošanu.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Materiāla dizains pārlūka augšējā saskarnē</translation>
 <translation id="5633060877636360447">Veicot šo darbību, no šīs ierīces tiks neatgriezeniski izdzēsti vismaz <ph name="TOTAL_COUNT" /> vienumi, taču netiks notīrīti sinhronizētie vienumi no citam ierīcēm.</translation>
 <translation id="5636996382092289526">Lai izmantotu <ph name="NETWORK_ID" />, iespējams, jums vispirms būs <ph name="LINK_START" />jāapmeklē tīkla pierakstīšanās lapa<ph name="LINK_END" />, kas tiks automātiski atvērta pēc dažām sekundēm. Ja tā nenotiek, tīklu nevar izmantot.</translation>
@@ -3228,6 +3230,7 @@
 <translation id="5678862612529498267">Izcelt objektu ar tastatūras fokusu</translation>
 <translation id="5678955352098267522">Lasīt jūsu datus vietnē <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Teksta filtrēšana kopsavilkuma režīmā</translation>
+<translation id="5683818630978268777">Eksperimentālās tastatūras bloķēšanas lietotāja saskarne</translation>
 <translation id="5684661240348539843">Līdzekļu identifikators</translation>
 <translation id="569068482611873351">Importēt...</translation>
 <translation id="56907980372820799">Saistīt datus</translation>
@@ -3695,7 +3698,6 @@
 <translation id="6420676428473580225">Pievienošana darbvirsmai</translation>
 <translation id="6422329785618833949">Fotoattēls apvērsts</translation>
 <translation id="642282551015776456">Šo nosaukumu nedrīkst izmantot kā mapes nosaukuma failu</translation>
-<translation id="642322423610046417">Izmantojiet kontekstizvēlni (noklikšķiniet ar peles labo pogu), lai noņemtu nevajadzīgos paplašinājumus.</translation>
 <translation id="6423239382391657905">Atvērt VPN</translation>
 <translation id="6423731501149634044">Vai izmantot Adobe Reader par noklusējuma PDF skatītāju?</translation>
 <translation id="6425092077175753609">Materiāls</translation>
@@ -3766,6 +3768,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Eksperimentāls pilnekrāns ar tastatūras bloķēšanas režīmu, kurā lietotājam ir jātur nospiests atsoļa taustiņš, lai izietu.</translation>
 <translation id="6527303717912515753">Kopīgot</translation>
 <translation id="6528546217685656218">Nav norādīta šī klienta sertifikāta privātā atslēga, vai tā nav derīga.</translation>
 <translation id="653019979737152879">Notiek faila <ph name="FILE_NAME" /> sinhronizēšana...</translation>
@@ -3945,6 +3948,7 @@
 <translation id="6825883775269213504">Krievu valoda</translation>
 <translation id="6827236167376090743">Šis videoklips tiks atkārtoti atskaņots.</translation>
 <translation id="6828153365543658583">Ierobežot pierakstīšanos, izņemot šādiem lietotājiem:</translation>
+<translation id="6828860976882136098">Neizdevās iestatīt automātiskos atjauninājumus visiem lietotājiem (pirmslidojuma izpildes kļūda: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="6829250331733125857">Saņemiet palīdzību savai <ph name="DEVICE_TYPE" /> ierīcei.</translation>
 <translation id="6829270497922309893">Reģistrēšanās savā organizācijā</translation>
 <translation id="6830590476636787791">Animētas pārejas pirmās palaišanas apmācībā</translation>
@@ -3968,7 +3972,6 @@
 <translation id="6860427144121307915">Atvērt cilnē</translation>
 <translation id="6862635236584086457">Visi faili, kas saglabāti šajā mapē, tiek automātiski dublēti tiešsaistē.</translation>
 <translation id="6865313869410766144">Automātiskās aizpildes veidlapas dati</translation>
-<translation id="6865319096921627602">Operētājsistēmā Android iespējo vienoto multivides konveijeru.</translation>
 <translation id="6867678160199975333">Pārslēgt uz: <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Atzīmēta izvēles rūtiņa</translation>
 <translation id="6870130893560916279">Ukraiņu valodas tastatūra</translation>
@@ -4063,6 +4066,7 @@
 <translation id="7006017748900345484">WebRTC H.264 video kodēšanas/dekodēšanas programmatūra</translation>
 <translation id="7006634003215061422">Apakšējā piemale</translation>
 <translation id="7006844981395428048">$1 audio</translation>
+<translation id="7008270479623533562">Lai palaistu šo paplašinājumu, jāatsvaidzina lapa. Varat palaist šo paplašinājumu automātiski šajā vietnē, ar peles labo pogu noklikšķinot uz paplašinājuma ikonas.</translation>
 <translation id="7009045250432250765">Automātiskā aizpilde ar vienu klikšķi</translation>
 <translation id="7010160495478792664">Ar aparatūru paātrināta video dekodēšana, ja tā ir pieejama.</translation>
 <translation id="7010400591230614821">Agresīva ciļņu atbrīvošanas stratēģija</translation>
@@ -4229,7 +4233,6 @@
 <translation id="7256710573727326513">Atvērt cilnē</translation>
 <translation id="7257173066616499747">Wi-Fi tīkli</translation>
 <translation id="7257666756905341374">Lasīt datus, ko kopējat un ielīmējat</translation>
-<translation id="7260002739296185724">Iespējojiet platformas AV Foundation izmantošanu video tveršanai un video ierīces pārraudzībai operētājsistēmā OS X 10.7 vai jaunākā versijā. Pretējā gadījumā tiks izmantots QTKit.</translation>
 <translation id="7260504762447901703">Atsaukt piekļuvi</translation>
 <translation id="7262004276116528033">Šo pierakstīšanās pakalpojumu nodrošina <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Piekļuves izņēmumi, izmantojot spraudni, kas nav ievietots smilškastē</translation>
@@ -4267,7 +4270,6 @@
 <translation id="7314278895724341067">Iespējot bezsaistes lapas JCL</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (pašreizējais)</translation>
 <translation id="7321545336522791733">Serveris nav sasniedzams</translation>
-<translation id="7324841169865301118">Ļauj lietotājam izvēlēties cilni darbvirsmas kopīgošanai.</translation>
 <translation id="7325437708553334317">Paplašinājums Augsts kontrasts</translation>
 <translation id="7326565110843845436">Skārienpaliktņa trīs pirkstu pārvilkšanas žests</translation>
 <translation id="73289266812733869">Neatlasīts</translation>
@@ -5019,7 +5021,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Fotoattēla autors:</translation>
 <translation id="8428213095426709021">Iestatījumi</translation>
-<translation id="8432590265309978927">Eksperimentāls atbalsts iframe tagu renderēšanai vairākās vietnēs, izmantojot atsevišķus procesus.</translation>
 <translation id="8432745813735585631">ASV Kolemaka tastatūra</translation>
 <translation id="8434177709403049435">&amp;Kodējums</translation>
 <translation id="8434480141477525001">Native Client atkļūdošanas ports</translation>
@@ -5216,7 +5217,6 @@
 <translation id="8713979477561846077">Iespējot fiziskās tastatūras automātisko koriģēšanu atbilstoši ASV tastatūrai, kuru izmantojot tiks piedāvāti ieteikumi, kad rakstīsiet uz fiziskās tastatūras.</translation>
 <translation id="871476437400413057">Google saglabātajām parolēm</translation>
 <translation id="8714838604780058252">Fona grafikas</translation>
-<translation id="8716065142695381595">Operētājsistēmā Android iespējo vienoto (Android un datora) multivides konveijeru.</translation>
 <translation id="8722421161699219904">ASV starptautiskā tastatūra</translation>
 <translation id="872451400847464257">Rediģēt meklējumprogrammas</translation>
 <translation id="8724859055372736596">Rādīt ma&amp;pē</translation>
@@ -5236,6 +5236,7 @@
 <translation id="8737685506611670901">atvērt <ph name="PROTOCOL" /> saites, nevis <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Tiek precizēta skāriena žesta pozīcija, lai kompensētu skārienus, kuriem ir slikta precizitāte, salīdzinot ar peli.</translation>
+<translation id="8743712320294854924">Rādīt izvērstās ievades iespējas plauktā</translation>
 <translation id="874420130893181774">Tradicionālā piņjiņa ievades metode</translation>
 <translation id="8744525654891896746">Atveida atlasīšana uzraudzītajam lietotājam</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5305,6 +5306,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Taustiņa "Shift" režīma slēdzis</translation>
 <translation id="8852742364582744935">Šādas lietotnes un paplašinājumi tika pievienoti:</translation>
+<translation id="8853611566624224021">Iespējot icc displeja failu izguvi no Quirks servera displeja krāsas kalibrācijai</translation>
 <translation id="885381502874625531">Baltkrievu tastatūra</translation>
 <translation id="8856844195561710094">Neizdevās apturēt Bluetooth ierīces noteikšanu.</translation>
 <translation id="885701979325669005">Krātuve</translation>
@@ -5354,7 +5356,6 @@
 <translation id="8925458182817574960">&amp;Iestatījumi</translation>
 <translation id="8926389886865778422">Nejautāt atkārtoti</translation>
 <translation id="8926518602592448999">Izstrādātāja režīma paplašinājumu atspējošana</translation>
-<translation id="8929454297483336498">Mac OS X AV Foundation API izmantošana (QTKit vietā)</translation>
 <translation id="8931394284949551895">Jaunas ierīces</translation>
 <translation id="8932730422557198035">Izmantot Android Midi API</translation>
 <translation id="8933960630081805351">Rādīt lietojumprogrammā &amp;Finder</translation>
@@ -5368,6 +5369,7 @@
 <translation id="894360074127026135">Netscape starptautiskā palielināšana</translation>
 <translation id="8944779739948852228">Tika atrasts printeris</translation>
 <translation id="8946359700442089734">Atkļūdošanas funkcijas šajā <ph name="IDS_SHORT_PRODUCT_NAME" /> ierīcē netika pilnībā iespējotas.</translation>
+<translation id="8946784827990177241">Iespējot WebUSB atbalstu</translation>
 <translation id="89515141420106838">Iespējo lietotni “Chrome interneta veikala galerija” printera draiveriem. Šī lietotne Chrome interneta veikalā meklē paplašinājumus, kuri atbalsta drukāšanu USB printerī ar noteiktu USB ID.</translation>
 <translation id="895347679606913382">Sākums...</translation>
 <translation id="8954952943849489823">Pārvietošana neizdevās; radās neparedzēta kļūda: $1</translation>
@@ -5512,6 +5514,7 @@
 <translation id="9154194610265714752">Atjaunināts</translation>
 <translation id="9154418932169119429">Šis attēls nav pieejams bezsaistē.</translation>
 <translation id="91568222606626347">Saīsnes izveide...</translation>
+<translation id="9157697743260533322">Neizdevās iestatīt automātiskos atjauninājumus visiem lietotājiem (pirmslidojuma palaišanas kļūda: <ph name="ERROR_NUMBER" />).</translation>
 <translation id="9158715103698450907">Hmm... Autentificēšanas laikā radās tīkla komunikācijas problēma. Lūdzu, pārbaudiet tīkla savienojumu un mēģiniet vēlreiz.</translation>
 <translation id="9159562891634783594">Iespējot nereģistrēto mākoņprinteru reģistrēšanu no drukas priekšskatījuma.</translation>
 <translation id="9166510596677678112">Nosūtīt e-pasta ziņojumu šai personai</translation>
@@ -5523,7 +5526,6 @@
 <translation id="9170848237812810038">&amp;Atsaukt</translation>
 <translation id="9170884462774788842">Cita datorā instalēta programma ir izraisījusi tāda motīva pievienošanu, kas var ietekmēt pārlūkprogrammas Chrome darbību.</translation>
 <translation id="9177499212658576372">Jūs pašlaik esat izveidojis savienojumu ar šādu tīklu: <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Pārvaldīt kredītkartes</translation>
 <translation id="917858577839511832">Saziņa ar DTLS 1.2 par WebRTC</translation>
 <translation id="917861274483335838">Pārvaldīt spraudņu bloķēšanu...</translation>
 <translation id="9179348476548754105">Veids, kā paroļu pārvaldnieks izmanto sinhronizācijas akreditācijas datu automātiskās aizpildes funkciju tikai atkārtotas autentifikācijas darījumu lapās.</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index dfc9052..0c9e566b 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -159,7 +159,6 @@
     നിങ്ങളുടെ പ്രൊഫൈൽ വീണ്ടും സജ്ജമാക്കേണ്ടതുണ്ട്.<ph name="BR" />
     <ph name="BR" />
     അടുത്ത സ്‌ക്രീനിൽ, ഫീഡ്‌ബാക്ക് അയച്ച് പ്രശ്‌നം പരിഹരിക്കാൻ ഞങ്ങളെ സഹായിക്കുക.</translation>
-<translation id="1216954813581739968">ഡെസ്‌ക്‌ടോപ്പ് പങ്കിടലിനായി ടാബ് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="121827551500866099">എല്ലാ ഡൌണ്‍ലോഡുകളും കാണിക്കുക...</translation>
 <translation id="122082903575839559">സര്‍‌ട്ടിഫിക്കറ്റ് സിഗ്‌നേച്ചര്‍‌ അല്‍‌ഗോരിതം</translation>
 <translation id="1221024147024329929">RSA എന്‍‌ക്രിപ്‌ഷനോടുകൂടിയ PKCS #1 MD2</translation>
@@ -388,6 +387,7 @@
 <translation id="1545786162090505744">ചോദ്യ സ്ഥലത്തെ %s ഉള്ള URL</translation>
 <translation id="1546280085599573572">നിങ്ങൾ ഹോം ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ദൃശ്യമാകുന്ന പേജിനെ ഈ വിപുലീകരണം മാറ്റി.</translation>
 <translation id="1546795794523394272">മീറ്റിംഗുകൾക്കുള്ള Chromebox-ലേക്ക് സ്വാഗതം!</translation>
+<translation id="1547572086206517271">പുതുക്കിയെടുക്കേണ്ടതുണ്ട്</translation>
 <translation id="1547964879613821194">കനേഡിയന്‍ ഇംഗ്ലീഷ്</translation>
 <translation id="1548132948283577726">ഇവിടെ ദൃശ്യമാകുന്ന പാസ്‌വേഡുകള്‍ ഒരിക്കലും സൈറ്റുകള്‍ സംരക്ഷിക്കില്ല.</translation>
 <translation id="1549045574060481141">ഡൗൺലോഡ് സ്ഥിരീകരിക്കുക</translation>
@@ -616,6 +616,7 @@
 <translation id="1891196807951270080">ഓഫ്‌ലൈൻ ഉപയോഗത്തിനായി, അടുത്തിടെ സന്ദർശിച്ച പേജുകളെ പ്രാദേശികമായി സൂക്ഷിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക. ഓഫ്‌ലൈൻ പേജുകൾ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്.</translation>
 <translation id="1891668193654680795">സോഫ്റ്റ്‍വെയര്‍ നിര്‍മ്മാതാക്കളെ തിരിച്ചറിയുന്നതിന് ഈ സാക്‍ഷ്യപത്രത്തെ വിശ്വസിക്കുക.</translation>
 <translation id="189210018541388520">പൂര്‍ണ്ണ സ്ക്രീനില്‍ തുറക്കുക</translation>
+<translation id="1892754076732315533">പേജ് പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്ന പൂർണ്ണ സ്‌ക്രീനിലേക്കോ മൗസ് പോയിന്റർ ലോക്ക് നിലയിലേക്കോ കടക്കുമ്പോഴുള്ള പുതിയ ലളിതമായ, ഉപയോക്തൃ അനുഭവം.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">ക്ലൗഡ് പ്രൊവിഷൻ ഫ്ലോ പരാജയപ്പെട്ടു</translation>
 <translation id="189358972401248634">മറ്റ് ഭാഷകൾ</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">നിങ്ങളുടെ യൂണിവേഴ്‌സൽ സെക്കൻഡ് ഫാക്‌റ്റർ ഉപകരണങ്ങൾ ആക്‌സസ്സുചെയ്യുക</translation>
 <translation id="2881966438216424900">അവസാനം ആക്‌സസുചെയ്‌തത്:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" />, തൽക്ഷണം പുനരാരംഭിച്ച് പുനഃസജ്ജമാക്കും</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">ടാസ്‌ക് മാനേജര്‍</translation>
 <translation id="2887525882758501333">PDF പ്രമാണം</translation>
 <translation id="2888807692577297075">ഇനങ്ങളൊന്നും &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; എന്നതുമായി പൊരുത്തപ്പെടുന്നില്ല്ല</translation>
@@ -1597,7 +1599,7 @@
 <translation id="3277710850168074473">മീഡിയ ഘടകങ്ങൾ പ്ലേ ചെയ്യാനായുള്ള ഉപയോക്തൃ ജെസ്റ്റർ ആവശ്യകത. ഇത് പ്രവർത്തനരഹിതമാക്കുന്നത് ഓട്ടോ പ്ലേയെ പ്രവർത്തിക്കാൻ അനുവദിക്കും.</translation>
 <translation id="3280237271814976245">ഇതുപോലെ&amp; സംരക്ഷിക്കുക..</translation>
 <translation id="3280431534455935878">തയ്യാറെടുക്കുന്നു</translation>
-<translation id="3284674070818187654">വ്യക്തിഗത തിരയലിനും മറ്റ് Google സേവനങ്ങൾക്കും വേണ്ടി, Google നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം ഉപയോഗിച്ചേക്കാം. നിങ്ങൾക്ക് ഇത് myaccount.google.com എന്നതിൽ നിയന്ത്രിക്കാനാകും.</translation>
+<translation id="3284674070818187654">തിരയലിനും മറ്റ് Google സേവനങ്ങൾക്കും വേണ്ടി, Google നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം ഉപയോഗിച്ചേക്കാം. നിങ്ങൾക്ക് ഇത് myaccount.google.com എന്നതിൽ നിയന്ത്രിക്കാനാകും.</translation>
 <translation id="3285322247471302225">പുതിയ &amp;ടാബ്</translation>
 <translation id="3288047731229977326">ഡവലപ്പർ മോഡിൽ പ്രവർത്തിക്കുന്ന വിപുലീകരണങ്ങൾ നിങ്ങളുടെ കമ്പ്യൂട്ടർ കേടുവരുത്താനിടയുണ്ട്. നിങ്ങൾ ഒരു ഡവലപ്പർ അല്ലെങ്കിൽ, സുരക്ഷിതമായി തുടരാൻ ഡവലപ്പർ മോഡിൽ പ്രവർത്തിക്കുന്ന ഈ വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കണം.</translation>
 <translation id="3289566588497100676">ഈസി ചിഹ്ന ഇന്‍‌പുട്ട്</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">ഇപ്പോഴല്ല</translation>
 <translation id="3480892288821151001">വിൻഡോ ഇടതുവശത്തേയ്‌ക്ക് ഡോക്കുചെയ്യുക</translation>
 <translation id="3481915276125965083">ഈ പേജില്‍‌ ഇനിപ്പറയുന്ന പോപ്പ്-അപ്പുകളെ തടഞ്ഞു:</translation>
+<translation id="3482214069979148937">പൂർണ്ണ സ്‌ക്രീനിൽ നിന്ന് പുറത്തുകടക്കാൻ, |<ph name="ACCELERATOR" />| അമർത്തുക</translation>
 <translation id="3484869148456018791">പുതിയ സർട്ടിഫിക്കറ്റ് ലഭ്യമാക്കുക</translation>
 <translation id="3487007233252413104">അജ്ഞാത പ്രവർത്തനം</translation>
 <translation id="348771913750618459">iframe വെബ്-അധിഷ്‌ഠിത സൈൻ ഇൻ ഫ്ലോകൾ</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">സര്‍‌ട്ടിഫിക്കറ്റ് നാമ നിയന്ത്രണങ്ങള്‍‌</translation>
 <translation id="3595596368722241419">ബാറ്ററി നിറഞ്ഞു</translation>
 <translation id="3600456501114769456">നിങ്ങളുടെ ഉപകരണത്തിലെ പ്രാദേശിക ഫയലുകളിലേക്കുള്ള ആക്‌സസ്സ് അഡ്‌മിനിസ്‌ട്രേറ്റർ പ്രവർത്തനരഹിതമാക്കി.</translation>
-<translation id="3601395307734599350">നിങ്ങളുടെ എല്ലാ വിപുലീകരണങ്ങളും ഇവിടെയുണ്ട്</translation>
 <translation id="3603385196401704894">കനേഡിയന്‍ ഫ്രഞ്ച്</translation>
 <translation id="3603622770190368340">നെറ്റ്‌വർക്ക് സർട്ടിഫിക്കറ്റ് ലഭ്യമാക്കുക</translation>
 <translation id="3605780360466892872">ബട്ടൺഡൗൺ</translation>
@@ -1939,7 +1941,7 @@
 <translation id="3718288130002896473">പെരുമാറ്റം</translation>
 <translation id="3718720264653688555">വെർച്വൽ കീബോർഡ്</translation>
 <translation id="3719826155360621982">ഹോംപേജ്</translation>
-<translation id="3722396466546931176">ഭാഷകള്‍ ചേര്‍ത്ത് നിങ്ങളുടെ മുന്‍ഗണന അടിസ്ഥാനമാക്കി അവയെ ക്രമീകരിക്കുന്നതിന് ഇഴയ്ക്കുക.</translation>
+<translation id="3722396466546931176">ഭാഷകൾ ചേര്‍ത്ത് നിങ്ങളുടെ മുന്‍ഗണന അടിസ്ഥാനമാക്കി അവയെ ക്രമീകരിക്കുന്നതിന് ഇഴയ്ക്കുക.</translation>
 <translation id="3723158278575423087">Chromium-ത്തിലെ Cast അനുഭവത്തിലേക്ക് സ്വാഗതം!</translation>
 <translation id="3725367690636977613">പേജുകള്‍</translation>
 <translation id="3726463242007121105">ഈ ഉപകരണത്തിന്റെ ഫയൽസിസ്റ്റം പിന്തുണയ്ക്കാത്തതിനാൽ ഇത് തുറക്കാനായില്ല.</translation>
@@ -2227,7 +2229,6 @@
 <translation id="4151403195736952345">ആഗോള സ്ഥിരശൈലി ഉപയോഗിക്കുക (കണ്ടെത്തുക)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{ഒരു ടാബ്}other{# ടാബുകൾ}}</translation>
 <translation id="4154664944169082762">ഫിംഗര്‍‌പ്രിന്‍റുകള്‍‌</translation>
-<translation id="4157188838832721931">പാസ്‌വേഡുകളുടെ പേജിൽ പാസ്‌വേഡുകൾ വെളിപ്പെടുത്തുന്നതിന് മുമ്പ് ഉപയോക്താക്കളുടെ OS പാസ്‌വേഡിനായി അവരോട് ആവശ്യപ്പെടുന്നത് പ്രവർത്തനരഹിതമാക്കുക.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">പ്ലേ ലിസ്‌റ്റ് തുറക്കുക</translation>
 <translation id="4159681666905192102">ഇത് <ph name="CUSTODIAN_EMAIL" />, <ph name="SECOND_CUSTODIAN_EMAIL" /> എന്നിവർ നിയന്ത്രിക്കുന്ന കുട്ടികൾക്കുള്ള അക്കൗണ്ടാണ്.</translation>
@@ -2242,7 +2243,7 @@
 <translation id="4179512409951755566">OSK ഓവർസ്‌ക്രോൾ പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="4180788401304023883">CA സാക്‍ഷ്യപത്രം"<ph name="CERTIFICATE_NAME" />" ഇല്ലാതാക്കണോ?</translation>
 <translation id="418179967336296930">റഷ്യൻ ഫൊണറ്റിക് (YaZHert) കീബോർഡ്</translation>
-<translation id="4181841719683918333">ഭാഷകള്‍‌</translation>
+<translation id="4181841719683918333">ഭാഷകൾ‌</translation>
 <translation id="4187248015940562149">നിങ്ങൾക്ക് ചുറ്റുമുള്ള Bluetooth ഉപകരണങ്ങളിലേക്ക് കണക്‌റ്റുചെയ്യാനും അവയെ നിയന്ത്രിക്കാനും, വെബ്‌സൈറ്റുകളെ അനുവദിക്കുന്ന വെബ് Bluetooth പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation>
 <translation id="4188026131102273494">കീവേഡ്:</translation>
 <translation id="4189406272289638749">&lt;b&gt;<ph name="EXTENSION_NAME" />&lt;/b&gt; എന്ന വിപുലികരണത്തെ ഈ ക്രമീകരണം നിയന്ത്രിക്കുന്നു.</translation>
@@ -2271,7 +2272,6 @@
 <translation id="4218259925454408822">മറ്റൊരു അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യുക</translation>
 <translation id="4219614746733932747">പ്രവർത്തനക്ഷമമാക്കിയെങ്കിൽ, ഉപകരണ സ്‌കെയിൽ ഘടകത്തിനായി ഉള്ളടക്കം സ്‌കെയിൽ ചെയ്യാൻ Blink അതിന്റെ സൂമിംഗ് മെക്കാനിസം ഉപയോഗിക്കുന്നു.</translation>
 <translation id="4220865787605972627">ഫീച്ചറിനെ ഡിസ്‌പ്ലേ പിന്തുണയ്‌ക്കുന്നുണ്ടെങ്കിൽ ഡിസ്‌പ്ലേയുടെ വർണ്ണ കാലിബറേഷൻ അനുവദിക്കുക.</translation>
-<translation id="4233506668751282421">ഡെസ്‌ക്‌ടോപ്പ് പങ്കിടലിനുള്ള ഓഡിയോ പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="4235200303672858594">പൂർണ്ണ സ്‌ക്രീൻ</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> എന്നയാൾക്കായി അക്കൗണ്ട് ചേർക്കുക</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ഈ ഭാഷയില്‍ പ്രദര്‍ശിപ്പിക്കാന്‍ കഴിയില്ല</translation>
@@ -2279,7 +2279,6 @@
 <translation id="4242577469625748426">ഉപകരണത്തിൽ നയ ക്രമീകരണങ്ങൾ ഇൻസ്റ്റാളുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> നിങ്ങളുടെ മൗസ് കഴ്‌സർ അപ്രാപ്‌തമാക്കാൻ ആഗ്രഹിക്കുന്നു.</translation>
 <translation id="424546999567421758">ഉയർന്ന ഡിസ്‌ക് ഉപയോഗം കണ്ടെത്തി</translation>
-<translation id="4247072926966606568">ഈ ഓണായിരിക്കുന്ന ഫ്ലാഗ് ഉപയോഗിച്ച്, ഓഡിയോ പങ്കിടണോ എന്ന് തിരഞ്ഞെടുക്കാൻ ഉപയോക്താവിനെ ഡെസ്‌ക്‌ടോപ്പ് പങ്കിടൽ പിക്കർ വിൻഡോ അനുവദിക്കും.</translation>
 <translation id="424726838611654458">എപ്പോഴും Adobe Reader-ൽ തുറക്കുക</translation>
 <translation id="4249248555939881673">നെറ്റ്‌വർക്ക് കണക്ഷനുവേണ്ടി കാത്തിരിക്കുന്നു...</translation>
 <translation id="4249373718504745892">നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ആക്‌സസ്സുചെയ്യുന്നതിൽ നിന്ന് ഈ പേജിനെ തടഞ്ഞിരിക്കുന്നു.</translation>
@@ -2352,7 +2351,6 @@
 <translation id="4358697938732213860">വിലാസം ചേര്‍‌ക്കുക</translation>
 <translation id="4359408040881008151">ആശ്രയിച്ചിരിക്കുന്ന വിപുലീകരണം (വിപുലീകരണങ്ങൾ) കാരണം ഇൻസ്‌റ്റാളുചെയ്തു.</translation>
 <translation id="4361190688154226069">കാഴ്ചകളിലെ ദീർഘചതുരം അടിസ്ഥാനമാക്കിയുള്ള ടാർഗറ്റുചെയ്യൽ</translation>
-<translation id="4363372140743955595">പാസ്‌വേഡ് മാനേജർ പുനഃപ്രാമാണീകരണം</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> ഡൗൺലോഡുചെയ്‌തു</translation>
 <translation id="4364830672918311045">അറിയിപ്പുകൾ പ്രദർശിപ്പിക്കുക</translation>
 <translation id="4365673000813822030">ക്ഷമിക്കണം, സമന്വയം പ്രവർത്തനം നിർത്തി.</translation>
@@ -2409,6 +2407,7 @@
 <translation id="4449935293120761385">ഓട്ടോഫില്ലിനെക്കുറിച്ച്</translation>
 <translation id="4449996769074858870">ഈ ടാബ് ഓഡിയോ പ്ലേ ചെയ്യുന്നു.</translation>
 <translation id="4450974146388585462">പ്രശ്‌നം നിർണ്ണയിക്കുക</translation>
+<translation id="4452426408005428395">കാര്യമാക്കേണ്ടതില്ല</translation>
 <translation id="4454939697743986778">നിങ്ങളുടെ സിസ്റ്റം അഡ്‌മിനിസ്‌ട്രേറ്റർ ഈ സർട്ടിഫിക്കറ്റ് ഇൻസ്റ്റാളുചെയ്‌തു.</translation>
 <translation id="445923051607553918">Wi-Fi നെറ്റ്‌വര്‍ക്കില്‍ അംഗമാകുക</translation>
 <translation id="4462159676511157176">ഇഷ്‌ടാനുസൃത നാമ സെർവറുകൾ</translation>
@@ -2486,7 +2485,6 @@
 <translation id="4594109696316595112">ഒറ്റത്തവണ സജീവമാക്കൽ: ഈ <ph name="DEVICE_TYPE" /> എന്നതിൽ Smart Lock സജീവമാക്കാൻ നിങ്ങളുടെ പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക. Smart Lock ഉപയോഗിച്ച് പാസ്‌വേഡില്ലാതെ തന്നെ ഈ ഉപകരണത്തെ നിങ്ങളുടെ ഫോൺ അൺലോക്ക് ചെയ്യും. ഈ ഫീച്ചർ മാറ്റാനോ ഓഫാക്കാനോ, <ph name="DEVICE_TYPE" /> എന്നതിന്റെ ക്രമീകരണം സന്ദർശിക്കുക.</translation>
 <translation id="4595560905247879544">മാനേജർക്ക് (<ph name="CUSTODIAN_NAME" />) മാത്രമേ ആപ്‌സും വിപുലീകരണങ്ങളും പരിഷ്‌ക്കരിക്കാനാകൂ.</translation>
 <translation id="4601242977939794209">EMF കൺവേർട്ടർ</translation>
-<translation id="4601250583401186741">ഒരു കൺട്രോളറുമായി ജോടിയാക്കുക</translation>
 <translation id="4602466770786743961">നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ആക്‌സസ്സുചെയ്യുന്നതിന് <ph name="HOST" /> എന്നതിനെ എല്ലായ്‌പ്പോഴും അനുവദിക്കുക</translation>
 <translation id="4605399136610325267">ഇന്‍റര്‍നെറ്റിലേക്ക് ബന്ധിപ്പിച്ചിട്ടില്ല</translation>
 <translation id="4608500690299898628">&amp;കണ്ടെത്തുക...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">അനുവദിക്കൂ</translation>
 <translation id="5045550434625856497">പാസ്‌വേഡ് തെറ്റാണ്</translation>
 <translation id="5048179823246820836">നോര്‍ഡിക്</translation>
+<translation id="5048294425697652159">ഡിസ്‌പ്ലേ കാലിബറേഷന്, Quirks ക്ലയന്റ് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="5053604404986157245">ക്രമരഹിതമായി സൃഷ്‌ടിച്ച TPM പാസ്‌വേഡ് ലഭ്യമല്ല. പുതുക്കിയെടുക്കലിന് ശേഷം ഇത് സാധാരണമാണ്.</translation>
 <translation id="5053803681436838483">പുതിയ ഷിപ്പിംഗ് വിലാസം...</translation>
 <translation id="5055309315264875868">നിങ്ങളുടെ സമന്വിത പാസ്‌വേഡുകൾ ഓൺലൈനിൽ നിയന്ത്രിക്കാൻ പാസ്‌വേഡ് മാനേജർ ക്രമീകരണ പേജിൽ ലിങ്ക് കാണിക്കുക.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">മീഡിയ പ്ലേബാക്കിനുള്ള ജെസ്റ്റർ ആവശ്യകത</translation>
 <translation id="5189060859917252173">"<ph name="CERTIFICATE_NAME" />" സാക്‍ഷ്യപത്രം ഒരു സര്‍ട്ടിഫിക്കേഷന്‍ അതോറിറ്റിയെ പ്രതിനിധീകരിക്കുന്നു.</translation>
-<translation id="5196117515621749903">കാഷെ ഒഴിവാക്കുന്നതിന് വീണ്ടും ലോഡുചെയ്യുക</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">ഇന്‍റര്‍നെറ്റ്</translation>
 <translation id="5197680270886368025">സമന്വയം പൂർത്തിയായി.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">ഫോട്ടോ നിരസിച്ചു</translation>
 <translation id="5218183485292899140">സ്വിസ് ഫ്രഞ്ച്</translation>
 <translation id="5218766986344577658">ലിങ്ക് ഡിസ്ആംബിഗേഷൻ പോപ്പ്‌‌അപ്പ്</translation>
+<translation id="5220992698394817380">ഓപ്റ്റ് ഇൻ IME മെനു പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="5222676887888702881">പുറത്തുകടക്കുക</translation>
 <translation id="5225324770654022472">അപ്ലിക്കേഷനുകളുടെ കുറുക്കുവഴികൾ കാണിക്കുക</translation>
 <translation id="5227536357203429560">സ്വകാര്യ നെറ്റ്‌വര്‍ക്ക് ചേര്‍ക്കുക...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">ലളിതവല്‍‌ക്കരിച്ച/പരമ്പരാഗത ചൈനീസ് മോഡ് ടോഗിള്‍‌ ചെയ്യുക</translation>
 <translation id="5271549068863921519">പാസ്‌വേഡ് സംരക്ഷിക്കുക</translation>
 <translation id="5273628206174272911">തിരശ്ചീന ഓവർസ്‌ക്രോളിനുള്ള പ്രതികരണമായ പരീക്ഷണാത്മക ചരിത്ര നാവിഗേഷൻ.</translation>
+<translation id="5275194674756975076">ഓകെ, പുതുക്കിയെടുക്കുക</translation>
 <translation id="5275795814002959418">ഈ സൈറ്റിൽ നിന്നും <ph name="COUNT" /> എണ്ണം</translation>
 <translation id="5275973617553375938">Google ഡ്രൈവിൽ നിന്നും ഫയലുകൾ വീണ്ടെടുത്തു</translation>
 <translation id="527605719918376753">ടാബ് മ്യൂട്ടുചെയ്യുക</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">നിങ്ങളുടെ ഫോൺ ലോക്കായിരിക്കുമ്പോൾ. പ്രവേശിക്കുന്നതിന് അത് അൺലോക്കുചെയ്യുക.</translation>
 <translation id="5369927996833026114">Chrome അപ്ലിക്കേഷൻ ലോഞ്ചർ കണ്ടെത്തുക</translation>
 <translation id="5370819323174483825">&amp;വീണ്ടും ലോഡുചെയ്യുക</translation>
+<translation id="5372066618989754822">ഭാഷ ക്രമീകരണ പേജിലെ പുതിയ IME മെനുവിലേക്ക് ആക്‌സസ്സ് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="5372529912055771682">വിതരണം ചെയ്‌ത എൻറോൾമെന്റ് മോഡിനെ ഈ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ പതിപ്പ് പിന്തുണയ്‌ക്കുന്നില്ല. പുതിയ പതിപ്പിലാണ് നിങ്ങൾ പ്രവർത്തിക്കുന്നതെന്ന് ഉറപ്പുവരുത്തി വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="5374359983950678924">ചിത്രം മാറ്റുക</translation>
 <translation id="5376169624176189338">പുറകിലേക്ക് പോകാൻ ക്ലിക്കുചെയ്യുക, ചരിത്രം കാണാൻ ഹോൾഡുചെയ്യുക</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">നാമം:</translation>
 <translation id="5627086634964711283">നിങ്ങൾ ഹോം ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ദൃശ്യമാകുന്ന പേജും ഇത് നിയന്ത്രിയ്ക്കുന്നു.</translation>
 <translation id="5627259319513858869">ഇപ്പോഴും വികസിപ്പിച്ചുകൊണ്ടിരിക്കുന്ന പരീക്ഷണാത്മക ക്യാൻവാസ് സവിശേഷതകളുടെ ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">മികച്ച chrome ബ്രൗസറിലെ മെറ്റീരിയൽ രൂപകൽപ്പന</translation>
 <translation id="5633060877636360447">ഇത്, ഈ ഉപകരണത്തിൽ നിന്നും <ph name="TOTAL_COUNT" /> ഇനങ്ങളെയെങ്കിലും ശാശ്വതമായി ഇല്ലാതാക്കുമെങ്കിലും മറ്റ് ഉപകരണങ്ങളിൽ നിന്നും സമന്വയിപ്പിച്ച ഇനങ്ങളെ മായ്‌ക്കില്ല.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> ഉപയോഗിക്കുന്നതിന് നിങ്ങൾ ആദ്യം <ph name="LINK_START" />നെറ്റ്‌വർക്കിന്റെ സൈൻ-ഇൻ പേജ് സന്ദർശിക്കേണ്ടതുണ്ട്<ph name="LINK_END" />, അത് കുറച്ച് സെക്കൻഡിനുള്ളിൽ യാന്ത്രികമായി തുറക്കും. അങ്ങനെ സംഭവിച്ചില്ലെങ്കിൽ, നെറ്റ്‌വർക്ക് ഉപയോഗിക്കാനാകില്ല.</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">കീബോർഡ് ഫോക്കസ് ഉപയോഗിച്ച് ഒബ്‌ജക്‌റ്റിനെ ഹൈലൈറ്റുചെയ്യുക</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> എന്നതിലെ നിങ്ങളുടെ വിവരം വായിക്കുക</translation>
 <translation id="5680928275846978395">ചുരുക്കവിവരണ മോഡിലെ ടെക്‌സ്റ്റ് ഫിൽട്ടർചെയ്യൽ</translation>
+<translation id="5683818630978268777">പരീക്ഷണാത്മക കീബോർഡ് ലോക്ക് UI.</translation>
 <translation id="5684661240348539843">അസറ്റ് ഐഡന്റിഫയർ</translation>
 <translation id="569068482611873351">ഇറക്കുമതി ചെയ്യുക...</translation>
 <translation id="56907980372820799">ഡാറ്റ ലിങ്കുചെയ്യുക</translation>
@@ -3308,7 +3311,7 @@
 <translation id="5794786537412027208">എല്ലാ Chrome അപ്ലിക്കേഷനുകളിൽ നിന്നും പുറത്തുകടക്കുക</translation>
 <translation id="5800020978570554460">അവസാന ഡൗൺലോഡിനുശേഷം ഉദ്ദിഷ്‌ടസ്ഥാന ഫയൽ ചുരുങ്ങിപ്പോയി അല്ലെങ്കിൽ നീക്കം ചെയ്യപ്പെട്ടു.</translation>
 <translation id="5801379388827258083">അക്ഷരപ്പിശക് പരിശോധന നിഘണ്ടു ഡൗൺലോഡുചെയ്യുന്നു...</translation>
-<translation id="5801568494490449797">മുന്‍ഗണനകള്‍</translation>
+<translation id="5801568494490449797">മുൻഗണനകൾ</translation>
 <translation id="5803531701633845775">കഴ്‌സര്‍‌ നീക്കാതെതന്നെ, പദസമുച്ചയങ്ങള്‍‌ പിന്നില്‍‌ നിന്ന് തിരഞ്ഞെടുക്കുക</translation>
 <translation id="5804241973901381774">അനുമതികൾ</translation>
 <translation id="580571955903695899">ശീര്‍‌ഷക പ്രകാരം പുനഃക്രമീകരിക്കുക</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">ഡെസ്‌ക്‌ടോപ്പിലേക്ക് ചേർക്കുക</translation>
 <translation id="6422329785618833949">ഫോട്ടോ ഫ്ലിപ്പ് ചെയ്‌തു</translation>
 <translation id="642282551015776456">ഈ നാമം ഒരു ഫോൾഡർ നാമത്തിന്റെ ഫയൽ ആയി ഉപയോഗിക്കരുത്</translation>
-<translation id="642322423610046417">നിങ്ങൾക്കാവശ്യമില്ലാത്ത വിപുലീകരണങ്ങൾ നീക്കംചെയ്യാൻ സന്ദർഭ മെനു (വലതുക്ലിക്ക്) ഉപയോഗിക്കുക.</translation>
 <translation id="6423239382391657905">VPNതുറക്കുക</translation>
 <translation id="6423731501149634044">Adobe Reader നെ നിങ്ങളുടെ സ്ഥിരസ്ഥിതി PDF വ്യൂവര്‍ ആയി ഉപയോഗിക്കണോ?</translation>
 <translation id="6425092077175753609">മെറ്റീരിയൽ</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">കീബോർഡ് ലോക്ക് മോഡ് ഉള്ള പരീക്ഷണാത്മക പൂർണ്ണ സ്‌ക്രീനിൽ നിന്ന് പുറത്തുകടക്കാൻ, ഉപയോക്താക്കൾ Esc അമർത്തിപ്പിടിക്കേണ്ടതാണ്.</translation>
 <translation id="6527303717912515753">പങ്കിടുക</translation>
 <translation id="6528546217685656218">ഈ ക്ലയന്റ് സർട്ടിഫിക്കറ്റിന്റെ സ്വകാര്യ കീ നഷ്‌ടമായിരിക്കുന്നു അല്ലെങ്കിൽ അസാധുവാണ്.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> എന്നത് സമന്വയിപ്പിക്കുന്നു...</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">റഷ്യന്‍</translation>
 <translation id="6827236167376090743">ഈ വീഡിയോ ദീർഘ നേരം പ്ലേ ചെയ്യും.</translation>
 <translation id="6828153365543658583">ഇനിപ്പറയുന്ന ഉപയോക്താക്കള്‍ക്കായി പ്രവേശനം നിയന്ത്രിക്കുക:</translation>
+<translation id="6828860976882136098">എല്ലാ ഉപയോക്താക്കൾക്കുമായി സ്വയമേയുള്ള അപ്‌ഡേറ്റുകൾ സജ്ജമാക്കാനായില്ല (പ്രീഫ്ലൈറ്റ് എക്‌സിക്യൂഷൻ പിശക്: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857"><ph name="DEVICE_TYPE" /> ഉപയോഗിച്ച് സഹായം സ്വന്തമാക്കുക.</translation>
 <translation id="6829270497922309893">നിങ്ങളുടെ ഓർഗനൈസേഷനിൽ എൻറോൾ ചെയ്യുക</translation>
 <translation id="6830590476636787791">ആദ്യം പ്രവർത്തിപ്പിക്കുന്ന ട്യൂട്ടോറിയലിൽ ആനിമേറ്റുചെയ്‌ത സംക്രമണങ്ങൾ</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">ഒരു ടാബിൽ തുറക്കുക</translation>
 <translation id="6862635236584086457">ഈ ഫോൾഡറിൽ സംരക്ഷിച്ചിരിക്കുന്ന എല്ലാ ഫയലുകളും ഓൺലൈനിൽ യാന്ത്രികമായി ബാക്കപ്പ് ചെയ്യപ്പെടുന്നതാണ്</translation>
 <translation id="6865313869410766144">ഓട്ടോഫിൽ ഫോം ഡാറ്റ</translation>
-<translation id="6865319096921627602">Android-ൽ ഏകീകൃത മീഡിയ പൈപ്പ്‌ലൈൻ പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> എന്നതിലേക്ക് മാറുക</translation>
 <translation id="6869402422344886127">ചെക്ക്‌ബോക്സില്‍ ചെക്കടയാളമിട്ടു</translation>
 <translation id="6870130893560916279">ഉക്രെയ്നിയന്‍ കീബോര്‍ഡ്</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">WebRTC H.264 സോഫ്‌റ്റ്‌വെയർ വീഡിയോ എൻകോഡർ/ഡീകോഡർ</translation>
 <translation id="7006634003215061422">ചുവടെയുള്ള മാർജിൻ</translation>
 <translation id="7006844981395428048">$1 ഓഡിയോ</translation>
+<translation id="7008270479623533562">ഈ വിപുലീകരണം റൺ ചെയ്യാൻ, നിങ്ങൾ ഈ പേജ് പുതുക്കിയെടുക്കേണ്ടതുണ്ട്. വിപുലീകരണ ഐക്കണിന്റെ വലതുവശത്ത് ക്ലിക്കുചെയ്‌തുകൊണ്ട്, ഈ സൈറ്റിൽ സ്വയം ഈ വിപുലീകരണം റൺ ചെയ്യാനാകും.</translation>
 <translation id="7009045250432250765">സിംഗിൾ ക്ലിക്ക് ഓട്ടോഫിൽ</translation>
 <translation id="7010160495478792664">ലഭ്യമായയിടത്തെ ഹാർഡ്‌വെയർ ആക്‌സിലറേറ്റുചെയ്‌ത വീഡിയോ ഡീകോഡ്.</translation>
 <translation id="7010400591230614821">അഗ്രസ്സീവ് ടാബ് റിലീസ് സ്‌ട്രാറ്റജി</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">ഒരു ടാബിൽ തുറക്കുക</translation>
 <translation id="7257173066616499747">Wi-Fi നെറ്റ്‌വർക്കുകൾ:</translation>
 <translation id="7257666756905341374">നിങ്ങൾ പകർത്തി ഒട്ടിച്ച ഡാറ്റ റീഡുചെയ്യുക</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7-ൽ വീഡിയോ എടുക്കുന്നതിനും വീഡിയോ ഉപകരണം നിരീക്ഷിക്കുന്നതിനുമായി AVFoundation ഉപയോഗം പ്രവർത്തനക്ഷമമാക്കുക. അല്ലെങ്കിൽ QTKit ഉപയോഗിക്കും.</translation>
 <translation id="7260504762447901703">ആക്‌സസ്സ് റദ്ദാക്കുക</translation>
 <translation id="7262004276116528033">ഈ സൈൻ ഇൻ സേവനം ഹോസ്റ്റുചെയ്‌തിരിക്കുന്നത് <ph name="SAML_DOMAIN" /> ആണ്.</translation>
 <translation id="7262221505565121">അൺസാൻഡ്‌ബോക്‌സ് ചെയ്‌ത പ്ലഗിൻ ആക്‌സസ്സ് ഒഴിവാക്കലുകൾ</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">NTP ഓഫ്‌ലൈൻ പേജുകൾ പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (നിലവിൽ)</translation>
 <translation id="7321545336522791733">സെർവർ ലഭ്യമല്ല</translation>
-<translation id="7324841169865301118">ഡെസ്‌ക്‌ടോപ്പ് പങ്കിടലിനായി ടാബ് തിരഞ്ഞെടുക്കാൻ ഉപയോക്താവിനെ അനുവദിക്കുന്നു.</translation>
 <translation id="7325437708553334317">ഉയർന്ന ദൃശ്യ തീവ്രത വിപുലീകരണം</translation>
 <translation id="7326565110843845436">ടച്ച്പാഡ് ത്രീ-ഫിംഗർ-ക്ലിക്ക്</translation>
 <translation id="73289266812733869">തിരഞ്ഞെടുത്തില്ല</translation>
@@ -4334,7 +4336,7 @@
 <translation id="741906494724992817">ഈ അപ്ലിക്കേഷന് പ്രത്യേക അനുമതികളൊന്നും ആവശ്യമില്ല.</translation>
 <translation id="7419631653042041064">കാറ്റലൻ കീബോര്‍ഡ്</translation>
 <translation id="7421925624202799674">&amp;പേജ് ഉറവിടം കാണുക</translation>
-<translation id="7422192691352527311">മുന്‍ഗണനകള്‍...</translation>
+<translation id="7422192691352527311">മുൻഗണനകൾ...</translation>
 <translation id="7427315641433634153">MSCHAP</translation>
 <translation id="7427348830195639090">പശ്ചാത്തല പേജ്: <ph name="BACKGROUND_PAGE_URL" /></translation>
 <translation id="7427682462583660270">പുതിയ പ്രൊഫൈൽ മാനേജുമെന്റ് സിസ്റ്റം</translation>
@@ -4734,7 +4736,7 @@
 <translation id="8014154204619229810">അപ്‌ഡേറ്റർ നിലവിൽ പ്രവർത്തിക്കുന്നു. വീണ്ടും പരിശോധിക്കാൻ ഒരു മിനിറ്റിനുള്ളിൽ പുതുക്കുക.</translation>
 <translation id="8014206674403687691">മുമ്പ് ഇൻസ്റ്റാളുചെയ്‌ത പതിപ്പിലേക്ക് <ph name="IDS_SHORT_PRODUCT_NAME" /> എന്നത് പഴയപടിയാക്കാനായില്ല. നിങ്ങളുടെ ഉപകരണം പവർവാഷുചെയ്യാൻ വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="8017335670460187064"><ph name="LABEL" /></translation>
-<translation id="8017667670902200762">പരിശോധിച്ചുറപ്പിക്കൽ രീതി ശരിയല്ല</translation>
+<translation id="8017667670902200762">വിശ്വാസ്യത ഉറപ്പാക്കൽ ശരിയായ രീതിയിലല്ല</translation>
 <translation id="8022523925619404071">യാന്ത്രിക അപ്‌ഡേറ്റുചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="8023801379949507775">ഇപ്പോള്‍‌ വിപുലീകരണങ്ങള്‍‌ അപ്ഡേറ്റുചെയ്യുക </translation>
 <translation id="8025789898011765392">ടാസ്‌കുകള്‍</translation>
@@ -5016,7 +5018,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">ഫോട്ടോ എടുത്തത്</translation>
 <translation id="8428213095426709021">ക്രമീകരണങ്ങള്‍</translation>
-<translation id="8432590265309978927">പ്രത്യേക പ്രോസസ്സുകളിലൂടെ ക്രോസ്സ്-സൈറ്റ് iframes റെൻഡർ ചെയ്യുന്നതിനായുള്ള ഉയർന്ന പരീക്ഷണാത്മക പിന്തുണ.</translation>
 <translation id="8432745813735585631">യുഎസ് കോള്‍മാക്ക് കീബോര്‍ഡ്</translation>
 <translation id="8434177709403049435">&amp;എന്‍കോഡിംഗ്</translation>
 <translation id="8434480141477525001">NaCl ഡീബഗ് പോർട്ട്</translation>
@@ -5213,7 +5214,6 @@
 <translation id="8713979477561846077">ഫിസിക്കൽ കീബോർഡിൽ ടൈപ്പുചെയ്യുന്നതിനനുസരിച്ച് നിർദ്ദേശങ്ങൾ നൽകുന്ന US കീബോർഡിനുള്ള ഫിസിക്കൽ കീബോർഡ് സ്വയം തിരുത്തൽ പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="871476437400413057">Google സംരക്ഷിത പാസ്‌വേഡുകൾ</translation>
 <translation id="8714838604780058252">പശ്ചാത്തല ഗ്രാഫിക്സ്</translation>
-<translation id="8716065142695381595">Android-ൽ ഏകീകൃത (Android, ഡെസ്‌ക്‌ടോപ്പ് എന്നിവ) മീഡിയ പൈപ്പ്‌ലൈൻ പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation>
 <translation id="8722421161699219904">യുഎസ് ഇന്റർനാഷണൽ കീബോർഡ്</translation>
 <translation id="872451400847464257">സെര്‍ച് എഞ്ചിനുകള്‍ എഡിറ്റ് ചെയ്യുക</translation>
 <translation id="8724859055372736596">&amp;ഫോള്‍ഡറില്‍ കാണിക്കുക</translation>
@@ -5233,6 +5233,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> എന്നതിന് പകരം <ph name="PROTOCOL" /> ലിങ്കുകൾ തുറക്കുക</translation>
 <translation id="8737709691285775803">ഷിൽ</translation>
 <translation id="8741881454555234096">മൗസുമായി താരതമ്യം ചെയ്യുമ്പോൾ സ്‌പർശനങ്ങൾക്കുള്ള മോശം മിഴിവ് പരിഹരിക്കുന്നതിനായി സ്‌പർശന ജെസ്റ്ററിന്റെ സ്ഥാനം പരിഷ്‌ക്കരിക്കുക.</translation>
+<translation id="8743712320294854924">വിപുലീകൃത ഇൻപുട്ട് ഓപ്‌ഷനുകളെ ഷെൽഫിൽ കാണിക്കുക.</translation>
 <translation id="874420130893181774">പരമ്പരാഗത പിൻയിൻ ടൈപ്പുചെയ്യൽ രീതി</translation>
 <translation id="8744525654891896746">ഈ സൂപ്പർവൈസുചെയ്‌ത ഉപയോക്താവിനായി ഒരു അവതാർ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5301,6 +5302,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">ഷിഫ്റ്റ് കീ മോഡ് സ്വിച്ച്</translation>
 <translation id="8852742364582744935">ഇനിപ്പറയുന്ന അപ്ലിക്കേഷനുകളും വിപുലീകരണങ്ങളും ചേർത്തു:</translation>
+<translation id="8853611566624224021">ഡിസ്‌പ്ലേ വർണ്ണ കാലിബറേഷനുവേണ്ടി Quirks സെർവറിൽ നിന്ന് icc ഡിസ്‌പ്ലേ ഫയലുകളുടെ വീണ്ടെടുക്കൽ പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="885381502874625531">ബെലാറുഷ്യൻ കീബോർഡ്</translation>
 <translation id="8856844195561710094">Bluetooth ഉപകരണം കണ്ടെത്തൽ അവസാനിപ്പിക്കുന്നതിൽ പരാജയപ്പെട്ടു.</translation>
 <translation id="885701979325669005">സംഭരണം</translation>
@@ -5350,7 +5352,6 @@
 <translation id="8925458182817574960">&amp;ക്രമീകരണങ്ങള്‍</translation>
 <translation id="8926389886865778422">എന്നോട് വീണ്ടും ചോദിക്കരുത്</translation>
 <translation id="8926518602592448999">ഡവലപ്പർ മോഡ് വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കുക</translation>
-<translation id="8929454297483336498">QTKit-ന് പകരം Mac OS X AVFoundation API-കൾ ഉപയോഗിക്കുക</translation>
 <translation id="8931394284949551895">പുതിയ ഉപകരണങ്ങൾ</translation>
 <translation id="8932730422557198035">Android Midi API ഉപയോഗിക്കുക</translation>
 <translation id="8933960630081805351">&amp;ഫൈന്‍‌ഡറില്‍ കാണിക്കുക</translation>
@@ -5364,6 +5365,7 @@
 <translation id="894360074127026135">നെറ്റ്‌സ്‌കേപ്പ് അന്തര്‍‌ദ്ദേശീയ സ്റ്റെപ്പ്-അപ്പ്</translation>
 <translation id="8944779739948852228">പ്രിന്റർ കണ്ടെത്തി</translation>
 <translation id="8946359700442089734">ഈ <ph name="IDS_SHORT_PRODUCT_NAME" /> ഉപകരണത്തിൽ ഡീബഗ്ഗിംഗ് ഫീച്ചറുകൾ പൂർണ്ണമായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.</translation>
+<translation id="8946784827990177241">WebUSB പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="89515141420106838">പ്രിന്റർ ഡ്രൈവർമാർക്കായി Chrome വെബ് സ്റ്റോർ ഗാലറി ആപ്പ് പ്രവർത്തനക്ഷമമാക്കുന്നു. നിർദ്ദിഷ്‌ട USB ഐഡി ഉള്ള ഒരു USB പ്രിന്ററിൽ പ്രിന്റിംഗിനെ പിന്തുണയ്‌ക്കുന്ന വിപുലീകരണങ്ങൾക്കായി ആപ്പ് Chrome വെബ് സ്റ്റോറിൽ തിരയുന്നു.</translation>
 <translation id="895347679606913382">ആരംഭിക്കുന്നു...</translation>
 <translation id="8954952943849489823">നീക്കുന്നത് പരാജയപ്പെട്ടു, അപ്രതീക്ഷിത പിശക്: $1</translation>
@@ -5508,6 +5510,7 @@
 <translation id="9154194610265714752">അപ്‌ഡേറ്റുചെയ്‌തു</translation>
 <translation id="9154418932169119429">ഈ ചിത്രം ഓഫ്‌ലൈനിൽ ലഭ്യമാകില്ല.</translation>
 <translation id="91568222606626347">കുറുക്കുവഴി സൃഷ്‌ടിക്കുക...</translation>
+<translation id="9157697743260533322">എല്ലാ ഉപയോക്താക്കൾക്കുമായി സ്വയമേയുള്ള അപ്‌ഡേറ്റുകൾ സജ്ജമാക്കാനായില്ല (പ്രീഫ്ലൈറ്റ് സമാരംഭിക്കൽ പിശക്: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">ക്ഷമിക്കണം! പ്രമാണീകരണം നടത്തുന്നതിനിടയിൽ ഒരു നെറ്റ്‌വർക്ക് ആശയവിനിമയ പ്രശ്‌നം സംഭവിച്ചു.  നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="9159562891634783594">പ്രിന്റ് പ്രിവ്യൂവിൽ നിന്നും രജിസ്റ്റർ ചെയ്യാത്ത ക്ലൗഡ് പ്രിന്ററുകൾ രജിസ്റ്റർ ചെയ്യുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
 <translation id="9166510596677678112">ഈ വ്യക്തിക്ക് ഇമെയിൽ ചെയ്യുക</translation>
@@ -5519,7 +5522,6 @@
 <translation id="9170848237812810038">‍&amp;പൂര്‍വാവസ്ഥയിലാക്കുക</translation>
 <translation id="9170884462774788842">നിങ്ങളുടെ കമ്പ്യൂട്ടറിലെ മറ്റൊരു പ്രോഗ്രാം Chrome പ്രവർത്തിക്കുന്ന രീതി മാറ്റിയേക്കാവുന്ന ഒരു തീം ചേർത്തു.</translation>
 <translation id="9177499212658576372">നിങ്ങൾ നിലവിൽ <ph name="NETWORK_TYPE" /> നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്‌തിരിക്കുന്നു.</translation>
-<translation id="9177556055091995297">ക്രെഡിറ്റ് കാർഡുകൾ നിയന്ത്രിക്കുക</translation>
 <translation id="917858577839511832">WebRTC-യ്‌ക്കായി DTLS 1.2 മായുള്ള പ്രവർത്തനം</translation>
 <translation id="917861274483335838">പ്ലഗ്-ഇൻ തടയുന്നത് നിയന്ത്രിക്കുക...</translation>
 <translation id="9179348476548754105">ട്രാൻ‌സാക്ഷണൽ reauth പേജുകൾക്ക് മാത്രമായി സമന്വയ ക്രെഡൻഷ്യൽ ഓട്ടോഫില്ലിനെ പാസ്‌വേഡ് മാനേജർ, എങ്ങനെയാണ് കൈകാര്യം ചെയ്യുന്നത്.</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index f18384f6..da543f6 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -159,7 +159,6 @@
     आपल्याला आपले प्रोफाईल पुन्हा सेट करावे लागेल.<ph name="BR" />
     <ph name="BR" />
     पुढील स्क्रीनवर, कृपया समस्येचे निराकरण करण्यात आम्हाला मदत करण्यासाठी अभिप्राय पाठवा.</translation>
-<translation id="1216954813581739968">डेस्कटॉप सामायिक करण्यासाठी टॅब सक्षम करा.</translation>
 <translation id="121827551500866099">सर्व डाउनलोड दर्शवा...</translation>
 <translation id="122082903575839559">प्रमाणपत्र स्वाक्षरी अल्गोरिदम</translation>
 <translation id="1221024147024329929">PKCS #1 RSA कूटबद्धीकरणासह MD2</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">क्वेरीच्या जागेवर % सह URL</translation>
 <translation id="1546280085599573572">आपण होम बटण क्लिक करता तेव्हा कोणते पृष्ठ दर्शविले जाते हे या विस्ताराने बदलले आहे.</translation>
 <translation id="1546795794523394272">मीटिंगसाठी Chromebox मध्ये आपले स्वागत आहे!</translation>
+<translation id="1547572086206517271">रीफ्रेश करण्याची आवश्यकता आहे</translation>
 <translation id="1547964879613821194">कॅनेडियन इंग्रजी</translation>
 <translation id="1548132948283577726">ज्या साइट संकेतशब्द जतन करत नाहीत त्या येथे दिसून येतील.</translation>
 <translation id="1549045574060481141">डाउनलोडची पुष्टी करा</translation>
@@ -533,7 +533,7 @@
 <translation id="1744108098763830590">पार्श्वभूमी पृष्ठ</translation>
 <translation id="1747687775439512873">WiMAX अक्षम करा</translation>
 <translation id="174773101815569257">माऊस लॉक</translation>
-<translation id="174937106936716857">एकूण फाईल खाते</translation>
+<translation id="174937106936716857">एकूण फाईल संख्या</translation>
 <translation id="1749854530031883739">विंडोमागील TouchView (मोठा केलेला मोड) मध्‍ये वापरलेल्या मोठ्या केले जाऊ शकत नाही अशा राखाडी विंडो पार्श्वभूमी दर्शवा.</translation>
 <translation id="17513872634828108">खुले टॅब</translation>
 <translation id="175196451752279553">पु&amp;न्हा बंद टॅब उघडा</translation>
@@ -617,6 +617,7 @@
 <translation id="1891196807951270080">ऑफलाइन वापरासाठी अलीकडे भेट दिलेली पृष्ठे स्थानिकरित्या संचयित करणे सक्षम करते. ऑफलाइन पृष्ठे सक्षम करणे आवश्यक असते.</translation>
 <translation id="1891668193654680795">सॉफ्टवेअर निर्मात्यांना ओळखण्याकरिता या प्रमाणपत्रावर विश्वास ठेवा. </translation>
 <translation id="189210018541388520">पूर्ण स्क्रीन उघडा</translation>
+<translation id="1892754076732315533">पृष्ठ-ट्रिगर केलेले पूर्णस्क्रीन किंवा माऊस पॉइंटर लॉक स्थिती प्रविष्ट करताना सरलीकृत नवीन वापरकर्ता अनुभव.</translation>
 <translation id="1893046049133338222">वक्र: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">मेघ तरतूद प्रवाह अयशस्वी</translation>
 <translation id="189358972401248634">इतर भाषा</translation>
@@ -1321,6 +1322,7 @@
 <translation id="288042212351694283">आपल्या सर्वंकष 2 रा घटक डिव्हाइसेसवर प्रवेश करा</translation>
 <translation id="2881966438216424900"> अखेरचा प्रवेशः</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> रीस्टार्ट होईल आणि क्षणभरात रीसेट होईल</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">कार्य व्यवस्थापक</translation>
 <translation id="2887525882758501333">PDF दस्तऐवज</translation>
 <translation id="2888807692577297075">कोणतेही आयटम &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; शी जुळत नाहीत</translation>
@@ -1419,7 +1421,7 @@
 <translation id="302014277942214887">अनुप्रयोग id किंवा वेबस्टोअर URL प्रविष्ट करा.</translation>
 <translation id="3020616530769498629">रीफ्रेश करण्‍यासाठी-ओढा वरील प्रमाणित-नसलेले रीलोड सक्षम करा</translation>
 <translation id="3020990233660977256">अनुक्रमांक: <ph name="SERIAL_NUMBER" /></translation>
-<translation id="3021245547458004908">सक्षम केले असताना, किमान स्क्रीन dp &gt;= 800 असलेल्या डिव्‍हाइसेसवर स्क्रोल करण्‍यामुळे टूलबार कधीही लपविला जात नाही. पृष्‍ठ सामग्री पूर्ण स्क्रीनवर असली तरीही तो लपलेला असेल.</translation>
+<translation id="3021245547458004908">सक्षम केले असताना, किमान स्क्रीन dp &gt;= 800 असलेल्या डिव्हाइसेसवर स्क्रोल करण्यामुळे टूलबार कधीही लपविला जात नाही. पृष्ठ सामग्री पूर्ण स्क्रीनवर असली तरीही तो लपलेला असेल.</translation>
 <translation id="3021678814754966447">फ्रेम स्त्रोत &amp;पहा</translation>
 <translation id="3024374909719388945">24-तासांचे घड्याळ वापरा</translation>
 <translation id="3025022340603654002">फॉर्म घटकावरील सुरुवातीच्या माउस क्लिक वर स्वयं-भरण सूचना करा.</translation>
@@ -1446,7 +1448,7 @@
 <translation id="3065041951436100775">टॅबने नष्ट केलेला अभिप्राय</translation>
 <translation id="3065140616557457172">शोधण्यासाठी टाइप करा किंवा नॅव्हिगेट करण्यासाठी URL प्रविष्ट करा – काहीही चालेल.</translation>
 <translation id="3067198360141518313">हे प्लगइन चालवा</translation>
-<translation id="307519606911195071">सेटिंग्ज पृष्ठामध्य अतिरिक्त प्रवेशक्षमता वैशिष्ट्ये सक्षम करा.</translation>
+<translation id="307519606911195071">सेटिंग्ज पृष्ठामध्ये अतिरिक्त प्रवेशक्षमता वैशिष्ट्ये सक्षम करा.</translation>
 <translation id="3075239840551149663">एक पर्यवेक्षी वापरकर्ता म्हणून <ph name="NEW_PROFILE_NAME" /> तयार केले गेले आहे!</translation>
 <translation id="3075874217500066906">Powerwash प्रक्रिया सुरु करण्‍यासाठी रीस्‍टार्ट आवश्‍यक आहे. रीस्‍टार्ट केल्‍यानंतर आपण पुढे सुरु ठेवू इच्‍छिता याची पुष्‍टी करण्‍यासाठी आपल्‍याला विचारले जाईल.</translation>
 <translation id="3076677906922146425">कोणालाही Chrome मध्ये एक व्यक्ती जोडू द्या</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">सध्या नाही</translation>
 <translation id="3480892288821151001">विंडो डावीकडे आणा</translation>
 <translation id="3481915276125965083">खालील पॉप-अप या पृष्ठावर अवरोधित केलेली आहेत:</translation>
+<translation id="3482214069979148937">पूर्ण स्क्रीनमधून बाहेर पडण्यासाठी |<ph name="ACCELERATOR" />| धरून ठेवा</translation>
 <translation id="3484869148456018791">नवीन प्रमाणपत्र मिळवा</translation>
 <translation id="3487007233252413104">अनामित कार्य</translation>
 <translation id="348771913750618459">iframe-आधारित साइन इन प्रवाह</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">प्रमाणपत्र नाव प्रतिबंध</translation>
 <translation id="3595596368722241419">बॅटरी पूर्ण चार्ज</translation>
 <translation id="3600456501114769456">आपल्‍या प्रशासकाद्वारे आपल्‍या डिव्‍हाइसवरील स्‍थानिक फायलींवर प्रवेश अक्षम केला आहे.</translation>
-<translation id="3601395307734599350">आपले सर्व विस्तार येथे आहेत</translation>
 <translation id="3603385196401704894">कॅनेडियन फ्रेंच</translation>
 <translation id="3603622770190368340">नेटवर्क प्रमाणपत्र प्राप्त करा</translation>
 <translation id="3605780360466892872">बटनडाउन</translation>
@@ -2227,7 +2229,6 @@
 <translation id="4151403195736952345">जागतिक डीफॉल्‍ट (शोधणे) वापरा</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 टॅब}one{# टॅब}other{# टॅब}}</translation>
 <translation id="4154664944169082762">बोटाचा ठसा</translation>
-<translation id="4157188838832721931">वापरकर्त्‍यांना संकेतशब्‍द पृष्‍ठावरील संकेतशब्‍द उघड होण्‍यापूर्वी त्‍यांच्‍या OS संकेतशब्‍दासाठी सूचना देणे अक्षम करा.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">प्लेलिस्ट उघडा</translation>
 <translation id="4159681666905192102">हे मुलांसाठी असलेले खाते <ph name="CUSTODIAN_EMAIL" /> आणि <ph name="SECOND_CUSTODIAN_EMAIL" /> द्वारे व्‍यवस्‍थापित केले.</translation>
@@ -2239,7 +2240,7 @@
 <translation id="4172051516777682613">नेहमी दर्शवा</translation>
 <translation id="417475959318757854">अ‍ॅप लाँचर केंद्रस्थानी करा.</translation>
 <translation id="4176463684765177261">अक्षम</translation>
-<translation id="4179512409951755566">OSK ओव्हरस्क्रोल सक्षम करा.</translation>
+<translation id="4179512409951755566">OSK ओव्हरस्क्रोल सक्षम करा</translation>
 <translation id="4180788401304023883">CA प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" हटवायचे?</translation>
 <translation id="418179967336296930">रशियन ध्वन्यात्मक (YaZHert) कीबोर्ड</translation>
 <translation id="4181841719683918333">भाषा</translation>
@@ -2271,7 +2272,6 @@
 <translation id="4218259925454408822">दुसऱ्या खात्यात साइन इन करा</translation>
 <translation id="4219614746733932747">सक्षम केले असल्यास, डिव्‍हाइस स्केल घटकासाठी सामग्री स्केल करण्‍यासाठी ब्लिंक त्याच्या झूम करण्‍याचे तंत्रज्ञान वापरते.</translation>
 <translation id="4220865787605972627">प्रदर्शन वैशिष्ट्‍यास समर्थन देत असल्यास प्रदर्शनाच्या रंग कॅलिब्रेशनला अनुमती देते.</translation>
-<translation id="4233506668751282421">डेस्कटॉप सामायिक करण्यासाठी ऑडिओ सक्षम करा</translation>
 <translation id="4235200303672858594">संपूर्ण स्क्रीन</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> साठी खाते जोडा</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> या भाषेत प्रदर्शित केले जाऊ शकत नाही</translation>
@@ -2279,7 +2279,6 @@
 <translation id="4242577469625748426">डिव्हाइसवर धोरण सेटिंग्ज स्थापित करण्यात अयशस्वी: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> आपला माउस कर्सर अक्षम करू इच्‍छिते.</translation>
 <translation id="424546999567421758">अतिशय जास्त डिस्क वापर आढळला</translation>
-<translation id="4247072926966606568">हे ध्वजांकन चालू असताना, डेस्कटॉप समायिकरण निवडक विंडो वापरर्त्यांना ऑडिओ सामायिक करायचा किंवा नाही ते निवडू देईल.</translation>
 <translation id="424726838611654458">Adobe Reader मध्ये नेहमी उघडा</translation>
 <translation id="4249248555939881673">नेटवर्क कनेक्शनची प्रतीक्षा करत आहे...</translation>
 <translation id="4249373718504745892">हे पृष्‍ठ आपला कॅमेरा आणि मायक्रोफोनवर प्रवेश करण्यापासून अवरोधित केले गेले आहे.</translation>
@@ -2352,7 +2351,6 @@
 <translation id="4358697938732213860">एक पत्ता जोडा</translation>
 <translation id="4359408040881008151">अवलंबून असलेल्या विस्तारा(रां) मुळे स्थापित केले.</translation>
 <translation id="4361190688154226069">दृश्यांमधील आयात-आधारित लक्ष्य</translation>
-<translation id="4363372140743955595">संकेतशब्द व्यवस्थापक पुनःप्रमाणीकरण</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> डाउनलोड केले</translation>
 <translation id="4364830672918311045">सूचना प्रदर्शित करा</translation>
 <translation id="4365673000813822030">अरेरे, समक्रमणाने काम करणे थांबवले आहे.</translation>
@@ -2409,6 +2407,7 @@
 <translation id="4449935293120761385">ऑटोफिल बद्दल</translation>
 <translation id="4449996769074858870">हा टॅब ऑडिओ प्ले करत आहे.</translation>
 <translation id="4450974146388585462">निदान करा</translation>
+<translation id="4452426408005428395">काही हरकत नाही</translation>
 <translation id="4454939697743986778">हे प्रमाणपत्र आपल्या सिस्टीम प्रशासकाद्वारे स्थापित केले गेले आहे.</translation>
 <translation id="445923051607553918">Wi-Fi  नेटवर्कमध्ये सामील व्हा</translation>
 <translation id="4462159676511157176">सानुकूल नाव सर्व्हर</translation>
@@ -2486,7 +2485,6 @@
 <translation id="4594109696316595112">एक-वेळ सक्रियकरण: या <ph name="DEVICE_TYPE" /> वर Smart Lock सक्रिय करण्यासाठी आपला संकेतशब्द टाइप करा. Smart Lock सह, संकेतशब्दाशिवाय—आपला फोन हे डिव्हाइस अनलॉक करेल. हे वैशिष्ट्य बदलणे किंवा बंद करण्यासाठी, आपल्या <ph name="DEVICE_TYPE" />च्या सेटिंग्जना भेट द्या.</translation>
 <translation id="4595560905247879544">अॅप्स आणि विस्तार केवळ (<ph name="CUSTODIAN_NAME" />) व्यवस्थापकाद्वारे सुधारित केले जाऊ शकतात.</translation>
 <translation id="4601242977939794209">EMF रुपांतरकर्ता</translation>
-<translation id="4601250583401186741">नियंत्रकासह जोडा</translation>
 <translation id="4602466770786743961">नेहमी <ph name="HOST" /> ला आपल्या कॅमेरा आणि मायक्रोफोनवर प्रवेश करण्‍यास अनुमती द्या</translation>
 <translation id="4605399136610325267">इंटरनेटशी कनेक्ट केलेले नाही</translation>
 <translation id="4608500690299898628">&amp;शोधा...</translation>
@@ -2782,6 +2780,7 @@
 <translation id="5039804452771397117">परवानगी द्या</translation>
 <translation id="5045550434625856497">अयोग्य संकेतशब्द</translation>
 <translation id="5048179823246820836">नॉर्डिक</translation>
+<translation id="5048294425697652159">प्रदर्शन मापनासाठी Quirks क्लायंट सक्षम करा.</translation>
 <translation id="5053604404986157245">यादृच्छिकपणे व्युत्पन्न केलेला TPM संकेतशब्द उपलब्ध नाही. Powerwash नंतर हे सामान्य आहे.</translation>
 <translation id="5053803681436838483">नवीन नौवहन पत्ता...</translation>
 <translation id="5055309315264875868">आपले संकालित संकेतशब्द ऑनलाइन व्यवस्थापित करण्यासाठी संकेतशब्द व्यवस्थापक सेटिंग्ज पृष्ठामध्ये एक दुवा दर्शवा.</translation>
@@ -2879,7 +2878,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">मीडिया प्लेबॅकसाठी जेश्चर आवश्यकता</translation>
 <translation id="5189060859917252173">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" प्रमाणन अधिकृतता प्रस्तुत करते.</translation>
-<translation id="5196117515621749903">कॅशेकडे दुर्लक्ष करून रीलोड करा</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">इंटरनेट</translation>
 <translation id="5197680270886368025">समक्रमण पूर्ण.</translation>
@@ -2894,6 +2892,7 @@
 <translation id="521582610500777512">फोटो टाकून दिला</translation>
 <translation id="5218183485292899140">स्विस फ्रेंच</translation>
 <translation id="5218766986344577658">दुवा संदिग्धता दूर करणारे पॉपअप</translation>
+<translation id="5220992698394817380">IME मेनूची निवड करणे सक्षम करा</translation>
 <translation id="5222676887888702881">साइन आउट करा</translation>
 <translation id="5225324770654022472">अ‍ॅप्स शॉर्टकट दर्शवा</translation>
 <translation id="5227536357203429560">खाजगी नेटवर्क जोडा...</translation>
@@ -2936,6 +2935,7 @@
 <translation id="5271247532544265821">सरलीकृत/पारंपारिक चीनी मोड टॉगल करा</translation>
 <translation id="5271549068863921519">संकेतशब्द जतन करा</translation>
 <translation id="5273628206174272911">क्षैतिज ओव्हरस्क्रोलला प्रतिसाद म्हणून प्रायोगिक इतिहास नेव्हिगेशन.</translation>
+<translation id="5275194674756975076">ठीक आहे, रीफ्रेश करा</translation>
 <translation id="5275795814002959418">या साइट वरील <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google ड्राइव्ह वरून पुनर्प्राप्त केलेल्‍या फायली</translation>
 <translation id="527605719918376753">टॅब नि:शब्द करा</translation>
@@ -3009,6 +3009,7 @@
 <translation id="5368720394188453070">आपला फोन लॉक केला आहे. प्रविष्‍ट करण्‍यासाठी तो अनलॉक करा.</translation>
 <translation id="5369927996833026114">Chrome App लाँचर शोधा</translation>
 <translation id="5370819323174483825">&amp;रीलोड करा</translation>
+<translation id="5372066618989754822">भाषा सेटिंग्ज पृष्ठावरील नवीन IME मेनूमध्ये प्रवेश सक्षम करा.</translation>
 <translation id="5372529912055771682">प्रदान केलेला नोंदणी प्रकार ऑपरेटिंग प्रणालीच्या या आवृत्तीमध्‍ये समर्थित नाही. कृपया आपण नवीनतम आवृत्ती चालवत असल्याची खात्री करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="5374359983950678924">चित्र बदला</translation>
 <translation id="5376169624176189338">परत जाण्यासाठी क्लिक करा, इतिहास पहाण्यासाठी होल्ड करा</translation>
@@ -3194,6 +3195,7 @@
 <translation id="5626134646977739690">नाव:</translation>
 <translation id="5627086634964711283">आपण होम बटण क्लिक करता तेव्हा कोणते पृष्ठ दर्शविले जाते हे देखील हे नियंत्रित करते.</translation>
 <translation id="5627259319513858869">अद्याप सुधारणेत असणार्‍या प्रायोगिक कॅन्व्हास वैशिष्ट्यांचा वापर सक्षम करते.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ब्राउझझरच्या शीर्ष chrome मधील वस्तू डिझाइन</translation>
 <translation id="5633060877636360447">हे या डिव्‍हाइस वरून किमान <ph name="TOTAL_COUNT" /> आयटम कायमचे हटवेल परंतु इतर डिव्‍हाइसेस वरून संकालित केलेले आयटम साफ करणार नाही.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> वापरण्यासाठी आपल्याला प्रथम <ph name="LINK_START" />नेटवर्कच्या साइन-इन पृष्‍ठावर भेट देणे<ph name="LINK_END" /> आवश्यक आहे, जे काही सेकंदांमध्ये स्वयंचलितपणे उघडेल. तसे न झाल्यास, नेटवर्क वापरणे शक्य नाही.</translation>
@@ -3224,6 +3226,7 @@
 <translation id="5678862612529498267">कीबोर्ड फोकससह ऑब्जेक्ट हायलाइट करा</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> वर आपला डेटा वाचा</translation>
 <translation id="5680928275846978395">विहंगावलोकन मोड मध्ये मजकूर फिल्टरिंग</translation>
+<translation id="5683818630978268777">प्रायोगिक कीबोर्ड लॉक UI.</translation>
 <translation id="5684661240348539843">मालमत्ता अभिज्ञापक</translation>
 <translation id="569068482611873351">आयात...</translation>
 <translation id="56907980372820799">डेटा चा दुवा जोडा</translation>
@@ -3562,7 +3565,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">स्पर्श समायोजन</translation>
 <translation id="6218364611373262432">दरवेळी रीस्टार्ट करताना अॅप लाँचर स्थापना स्थिती रीसेट करा. हे ध्वजांकन सेट केलेले असताना, दरवेळी प्रारंभ करताना लाँचर स्थापित केले गेले आहे हे Chrome विसरेल. हे अॅप लाँचर स्थापना प्रवाहाच्या चाचणीसाठी वापरले जाते.</translation>
-<translation id="6219616557885484178">आपल्या <ph name="DEVICE_TYPE" /> वर स्थापित करण्यासाठी आणि वापरण्यासाठी लक्षावधी अॅप्स आणि गेमवरून निवडा.</translation>
+<translation id="6219616557885484178">आपल्या <ph name="DEVICE_TYPE" /> वर स्थापित करण्यासाठी आणि वापरण्यासाठी Google Play वरील लक्षावधी अॅप्स आणि गेमवरून निवडा.</translation>
 <translation id="6219717821796422795">हॅनयू</translation>
 <translation id="6220413761270491930">विस्तार लोड करताना त्रुटी</translation>
 <translation id="6221345481584921695">Google सुरक्षित ब्राउझिंगला अलीकडे <ph name="SITE" /> वर <ph name="BEGIN_LINK" />मालवेअर आढळले आहे<ph name="END_LINK" />. सामान्यतः सुरक्षित असलेल्या वेबसाइट काहीवेळा मालवेअरमुळे संक्रमित झालेल्या असतात. एक ज्ञात मालवेअर वितरक असलेल्या, <ph name="SUBRESOURCE_HOST" /> कडून दुर्भावनापूर्ण सामग्री येते.</translation>
@@ -3689,7 +3692,6 @@
 <translation id="6420676428473580225">डेस्कटॉपवर जोडा</translation>
 <translation id="6422329785618833949">फोटो फ्लिप केला</translation>
 <translation id="642282551015776456">हे नाव एखाद्या फाइल किंवा फोल्डरचे नाव म्हणून वापरले जाऊ शकत नाही</translation>
-<translation id="642322423610046417">आपल्‍याला आवश्यक नसलेले विस्तार काढण्‍यासाठी संदर्भ (उजवे-क्लिक) मेनू वापरा.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader ला आपला डीफॉल्ट PDF दर्शक म्हणून वापरायचे?</translation>
 <translation id="6425092077175753609">सामग्री</translation>
@@ -3761,6 +3763,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">कीबोर्ड लॉक मोडसह प्रायोगिक पूर्ण स्क्रीनसाठी वापरकर्त्यांनी बाहेर पडण्याकरिता Esc धरून ठेवणे आवश्यक आहे.</translation>
 <translation id="6527303717912515753">सामायिक करा</translation>
 <translation id="6528546217685656218">या क्लायंट प्रमाणपत्रासाठी खाजगी की गहाळ किंवा अवैध आहे.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> संकालित करत आहे...</translation>
@@ -3940,6 +3943,7 @@
 <translation id="6825883775269213504">रशियन</translation>
 <translation id="6827236167376090743">हा व्हिडिओ प्रदीर्घ काळापर्यंत प्ले होत राहील.</translation>
 <translation id="6828153365543658583">खालील वापरकर्त्यांना साइन- इन करणे प्रतिबंधित करा:</translation>
+<translation id="6828860976882136098">सर्व वापरकर्त्यांसाठी स्वयंचलित अद्यतने सेट करणे अयशस्वी झाले (पूर्वफ्लाइट अंमलबजावणी त्रुटी: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">आपल्‍या <ph name="DEVICE_TYPE" /> सह मदत मिळवा.</translation>
 <translation id="6829270497922309893">आपल्‍या संस्‍थेमध्‍ये नोंदणी करा</translation>
 <translation id="6830590476636787791">प्रथम-चालणार्‍या ट्यूटोरियल मधील अ‍ॅनिमेट केलेली संक्रमणे</translation>
@@ -3962,7 +3966,6 @@
 <translation id="6860427144121307915">एका टॅबमध्ये उघडा</translation>
 <translation id="6862635236584086457">या फोल्डरमध्ये जतन केलेल्या सर्व फायलींचा स्वयंचलितपणे ऑनलाइन बॅक अप घेतला जातो</translation>
 <translation id="6865313869410766144">स्वयं-भरण फॉर्म डेटा</translation>
-<translation id="6865319096921627602">Android वर युनिफाइड मीडिया पाइपलाइन सक्षम करते.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> वर स्विच करा</translation>
 <translation id="6869402422344886127">चेक बॉक्स तपासले</translation>
 <translation id="6870130893560916279">यूक्रेनियन कीबोर्ड</translation>
@@ -4057,6 +4060,7 @@
 <translation id="7006017748900345484">WebRTC H.264 सॉफ्टवेअर व्हिडिओ एन्कोडर/डीकोडर</translation>
 <translation id="7006634003215061422">तळाचा समास</translation>
 <translation id="7006844981395428048">$1 ऑडिओ</translation>
+<translation id="7008270479623533562">हा विस्तार चालविण्यासाठी, आपण पृष्ठ रीफ्रेश करणे आवश्यक आहे. आपण विस्तार चिन्हावर उजवे-क्लिक करून या साइटवर स्वयंचलितपणे हा विस्तार चालवू शकता.</translation>
 <translation id="7009045250432250765">एकल-क्लिक स्वयं-भरण</translation>
 <translation id="7010160495478792664">उपलब्ध असते तिथे हार्डवेअर-त्वरित व्हिडिओ डीकोड</translation>
 <translation id="7010400591230614821">आक्रमक टॅब रीलीझ योजना</translation>
@@ -4221,7 +4225,6 @@
 <translation id="7256710573727326513">टॅबमध्ये उघडा</translation>
 <translation id="7257173066616499747">Wi-Fi नेटवर्क</translation>
 <translation id="7257666756905341374">आपण कॉपी आणि पेस्ट करता तो डेटा वाचा</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 वर व्हिडिओ कॅप्चर आणि व्हिडिओ डिव्हाइस परीक्षणासाठी AVFoundation वापर सक्षम करा. अन्यथा QTKit वापरले जाईल.</translation>
 <translation id="7260504762447901703">प्रवेश रद्द करा</translation>
 <translation id="7262004276116528033">ही साइन-इन सेवा <ph name="SAML_DOMAIN" /> द्वारे होस्ट केली जाते</translation>
 <translation id="7262221505565121">प्लगिन प्रवेश अपवाद सँडबॉक्स न केलेला केला</translation>
@@ -4259,7 +4262,6 @@
 <translation id="7314278895724341067">NTP ऑफलाइन पृष्ठे सक्षम करा</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (वर्तमान)</translation>
 <translation id="7321545336522791733">सर्व्हर आवाक्याबाहेर आहे</translation>
-<translation id="7324841169865301118">डेस्कटॉप सामायिक करण्यासाठी वापरकर्त्यास सक्षम करते.</translation>
 <translation id="7325437708553334317">उच्च प्रखरता विस्तार</translation>
 <translation id="7326565110843845436">टचपॅड तीन-बोटांनी-क्लिक करणे</translation>
 <translation id="73289266812733869">न निवडलेले</translation>
@@ -5008,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">द्वारा फोटो</translation>
 <translation id="8428213095426709021">सेटिंग्ज</translation>
-<translation id="8432590265309978927">स्वतंत्र प्रक्रियांमधील क्रॉस-साइट iframe साठी उच्च प्रायोगिक समर्थन.</translation>
 <translation id="8432745813735585631">यूएस कोलमॅक कीबोर्ड</translation>
 <translation id="8434177709403049435">एन्कोडिंग</translation>
 <translation id="8434480141477525001">NaCl  डीबग पोर्ट</translation>
@@ -5205,7 +5206,6 @@
 <translation id="8713979477561846077">US कीबोर्डसाठी भौतिक कीबोर्ड स्वयंसुधारित करणे सक्षम करा, जे भौतिक कीबोर्डवर टाइप केल्यानुसार सूचना प्रदान करू शकते.</translation>
 <translation id="871476437400413057">Google ने जतन केलेले संकेतशब्द</translation>
 <translation id="8714838604780058252">पार्श्वभूमी ग्राफिक्स</translation>
-<translation id="8716065142695381595">Android वर युनिफाइड (Android आणि डेस्कटॉप) मीडिया पाइपलाइन सक्षम करते.</translation>
 <translation id="8722421161699219904">यूएस आंतरराष्ट्रीय कीबोर्ड</translation>
 <translation id="872451400847464257">शोध इंजिन संपादित करा</translation>
 <translation id="8724859055372736596">फोल्डरमध्ये &amp;दर्शवा</translation>
@@ -5225,6 +5225,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> ऐवजी <ph name="PROTOCOL" /> दुवे उघडा</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">माऊसच्या तुलनेत खराब रिझोल्यूशन असलेल्या स्पर्शांची प्रतिपूर्ती करण्यासाठी एका स्पर्श जेश्चरची स्थिती परिष्कृत करा.</translation>
+<translation id="8743712320294854924">शेल्फमधील विस्तृत केलेले इनपुट पर्याय दर्शवा</translation>
 <translation id="874420130893181774">पारंपारिक पिनयिन इनपुट पद्धत</translation>
 <translation id="8744525654891896746">या पर्यवेक्षी वापरकर्त्यासाठी अवतार निवडा</translation>
 <translation id="8744641000906923997">रोमाजी</translation>
@@ -5295,6 +5296,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift की मोड स्विच</translation>
 <translation id="8852742364582744935">खालील अनुप्रयोग आणि विस्तार जोडण्‍यात आले:</translation>
+<translation id="8853611566624224021">प्रदर्शन रंग मापनासाठी Quirks सर्व्हर मधून icc प्रदर्शन फायलींचे पुनर्प्राप्त करणे सक्षम करा.</translation>
 <translation id="885381502874625531">बेलारुशियन कीबोर्ड</translation>
 <translation id="8856844195561710094">Bluetooth डिव्हाइस शोध थांबविण्‍यात अयशस्वी.</translation>
 <translation id="885701979325669005">संचय</translation>
@@ -5344,7 +5346,6 @@
 <translation id="8925458182817574960">&amp;सेटिंग्ज</translation>
 <translation id="8926389886865778422">पुन्हा विचारू नका</translation>
 <translation id="8926518602592448999">विकासक मोड विस्तार अक्षम करा</translation>
-<translation id="8929454297483336498">QTKit ऐवजी, Mac OS X AVFoundation API चा वापर</translation>
 <translation id="8931394284949551895">नवीन डिव्हाइसेस</translation>
 <translation id="8932730422557198035">Android Midi API वापरा</translation>
 <translation id="8933960630081805351">फाइंडर मध्ये &amp;दर्शवा</translation>
@@ -5358,6 +5359,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">प्रिंटर आढळला</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="895347679606913382">प्रारंभ करीत आहे...</translation>
 <translation id="8954952943849489823">हलविणे अयशस्वी अनपेक्षित त्रुटी: $1</translation>
@@ -5501,6 +5503,7 @@
 <translation id="9154194610265714752">अद्यतनित केलेले</translation>
 <translation id="9154418932169119429">ही प्रतिमा ऑफलाइन उपलब्ध नाही.</translation>
 <translation id="91568222606626347">शॉर्टकट तयार करा...</translation>
+<translation id="9157697743260533322">सर्व वापरकर्त्यांसाठी स्वयंचलित अद्यतने सेट करण्यात अयशस्वी झाले (पूर्वफ्लाइट लाँच त्रुटी: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">अरेरे! प्रमाणीकरणादरम्यान एक नेटवर्क संप्रेषण समस्या आली. कृपया आपले नेटवर्क कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="9159562891634783594">मुद्रण पूर्वावलोकनावरून नोंदणी न केलेल्‍या मेघ प्रिंटरची नोंदणी करणे सक्षम करा.</translation>
 <translation id="9166510596677678112">या व्यक्तीस ईमेल करा</translation>
@@ -5512,7 +5515,6 @@
 <translation id="9170848237812810038">&amp;पूर्ववत करा</translation>
 <translation id="9170884462774788842">आपल्या संगणकावरील दुसऱ्या प्रोग्रामने Chrome च्या कार्य करण्याचा मार्ग बदलू शकणारी थीम जोडली.</translation>
 <translation id="9177499212658576372">आपण सध्या <ph name="NETWORK_TYPE" /> नेटवर्कशी कनेक्ट केले आहे.</translation>
-<translation id="9177556055091995297">क्रेडिट कार्ड व्यवस्थापित करा</translation>
 <translation id="917858577839511832">WebRTC साठी DTLS 1.2 सह वाटाघाटी</translation>
 <translation id="917861274483335838">प्लगिन अवरोधित करणे व्यवस्थापित करा...</translation>
 <translation id="9179348476548754105">संकेतशब्द व्यवस्थापक केवळ व्यवहारिक पुनर्प्रमाणिकरण पृष्ठांसाठी संकालन क्रेडेन्शियल करिता स्वयंभरण कसे हाताळतो.</translation>
@@ -5555,7 +5557,7 @@
 <translation id="951981865514037445"><ph name="URL" /> आपल्या डिव्हाइसचे स्थान वापरू इच्छिते.</translation>
 <translation id="952838760238220631">Brotli सामग्री-संकेतन समर्थन सक्षम करा.</translation>
 <translation id="952992212772159698">सक्रिय नाही</translation>
-<translation id="953000875543358078">यास एक मिनिट किंवा तसा वेळ लागू शकतो</translation>
+<translation id="953000875543358078">यास एखादा मिनिट लागू शकतो</translation>
 <translation id="960987915827980018">सुमारे 1 तास बाकी</translation>
 <translation id="96421021576709873">Wi-Fi नेटवर्क</translation>
 <translation id="965490406356730238">जिथे उपलब्ध असते तेथे कॅप्चर केलेल्या फ्रेमसाठी हार्डवेअर-त्वरित केलेले mjpeg डीकोड सक्षम करा.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index ea0814c..8d3e25f 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -159,7 +159,6 @@
     Anda perlu menyediakan profil anda semula.<ph name="BR" />
     <ph name="BR" />
     Pada skrin berikutnya, sila hantar maklum balas untuk membantu kami menyelesaikan isu ini.</translation>
-<translation id="1216954813581739968">Dayakan tab untuk Perkongsian Desktop</translation>
 <translation id="121827551500866099">Paparkan semua muat turun...</translation>
 <translation id="122082903575839559">Algoritma Tandatangan Sijil</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 Dengan Penyulitan RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL dengan %s sebagai ganti pertanyaan</translation>
 <translation id="1546280085599573572">Sambungan ini telah menukar halaman yang ditunjukkan apabila anda mengklik butang Laman Utama.</translation>
 <translation id="1546795794523394272">Selamat datang ke Chromebox untuk mesyuarat!</translation>
+<translation id="1547572086206517271">Perlu muat semula</translation>
 <translation id="1547964879613821194">Bahasa Inggeris Kanada</translation>
 <translation id="1548132948283577726">Tapak yang langsung tidak menyimpan kata laluan anda muncul di sini.</translation>
 <translation id="1549045574060481141">Sahkan Muat Turun</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Dayakan penyimpanan halaman yang dilawat baru-baru ini dalam pemacu setempat untuk kegunaan luar talian. Untuk mendayakannya, anda perlu mendayakan Halaman Luar Talian.</translation>
 <translation id="1891668193654680795">Percayakan sijil ini untuk mengenalpasti pembuat perisian.</translation>
 <translation id="189210018541388520">Buka skrin penuh</translation>
+<translation id="1892754076732315533">Pengalaman pengguna baharu yang dipermudahkan apabila memasuki keadaan skrin penuh dicetus halaman atau kunci penuding tetikus.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Aliran peruntukan awan gagal</translation>
 <translation id="189358972401248634">Bahasa lain</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Mengakses peranti Universal 2nd Factor anda</translation>
 <translation id="2881966438216424900">Terakhir diakses:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> akan dimulakan semula dan ditetapkan semula buat sementara waktu</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Pengurus Tugas</translation>
 <translation id="2887525882758501333">Dokumen PDF</translation>
 <translation id="2888807692577297075">Tiada item yang sepadan dengan &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Bukan sekarang</translation>
 <translation id="3480892288821151001">Letakkan tetingkap di kiri</translation>
 <translation id="3481915276125965083">Pop muncul berikut disekat pada halaman ini:</translation>
+<translation id="3482214069979148937">Tekan |<ph name="ACCELERATOR" />| untuk keluar daripada skrin penuh</translation>
 <translation id="3484869148456018791">Dapatkan sijil baharu</translation>
 <translation id="3487007233252413104">fungsi awanama</translation>
 <translation id="348771913750618459">Aliran log masuk berasaskan iframe</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Kekangan Nama Sijil</translation>
 <translation id="3595596368722241419">Bateri penuh</translation>
 <translation id="3600456501114769456">Akses kepada fail setempat pada peranti anda dilumpuhkan oleh pentadbir anda.</translation>
-<translation id="3601395307734599350">Semua sambungan anda berada di sini</translation>
 <translation id="3603385196401704894">Bahasa Perancis Kanada</translation>
 <translation id="3603622770190368340">Dapatkan sijil rangkaian</translation>
 <translation id="3605780360466892872">Buttondown</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Gunakan lalai global (Kesan)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation>
 <translation id="4154664944169082762">Cap jari</translation>
-<translation id="4157188838832721931">Lumpuhkan gesaan kepada pengguna yang meminta kata laluan OS mereka sebelum mendedahkan kata laluan pada halaman kata laluan.</translation>
 <translation id="4157869833395312646">Kriptografi Berpintu Pelayan Microsoft</translation>
 <translation id="4158739975813877944">Buka senarai main</translation>
 <translation id="4159681666905192102">Ini ialah akaun untuk kanak-kanak yang diurus oleh <ph name="CUSTODIAN_EMAIL" /> dan <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Log masuk akaun lain</translation>
 <translation id="4219614746733932747">Jika didayakan, Blink menggunakan mekanisme pengezuman bagi mengubah skala kandungan untuk faktor skala peranti.</translation>
 <translation id="4220865787605972627">Benarkan penentukuran warna paparan jika paparan itu menyokong ciri tersebut.</translation>
-<translation id="4233506668751282421">Dayakan Audio untuk Perkongsian Desktop</translation>
 <translation id="4235200303672858594">Keseluruhan skrin</translation>
 <translation id="4235813040357936597">Tambah akaun untuk <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> tidak boleh dipaparkan dalam bahasa ini</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Gagal memasang tetapan dasar pada peranti: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> mahu melumpuhkan kursor tetikus anda.</translation>
 <translation id="424546999567421758">Penggunaan tinggi cakera dikesan</translation>
-<translation id="4247072926966606568">Jika bendera ini dihidupkan, tetingkap pemilih perkongsian desktop akan membenarkan pengguna memilih sama ada hendak berkongsi audio atau tidak.</translation>
 <translation id="424726838611654458">Sentiasa buka dalam Adobe Reader</translation>
 <translation id="4249248555939881673">Menunggu sambungan rangkaian...</translation>
 <translation id="4249373718504745892">Halaman ini telah disekat daripada mengakses kamera dan mikrofon anda.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Tambah alamat</translation>
 <translation id="4359408040881008151">Dipasang kerana sambungan yang bergantung.</translation>
 <translation id="4361190688154226069">Sasaran berasaskan segi empat tepat dalam paparan</translation>
-<translation id="4363372140743955595">Pengesahan Semula Pengurus Kata Laluan</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> dimuat turun</translation>
 <translation id="4364830672918311045">Paparkan pemberitahuan</translation>
 <translation id="4365673000813822030">Alamak, Penyegerakan telah berhenti berfungsi.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">Mengenai Auto Isi</translation>
 <translation id="4449996769074858870">Tab ini sedang memainkan audio.</translation>
 <translation id="4450974146388585462">Diagnosis</translation>
+<translation id="4452426408005428395">Tidak perlu</translation>
 <translation id="4454939697743986778">Sijil ini telah dipasang oleh pentadbir sistem anda.</translation>
 <translation id="445923051607553918">Sertai rangkaian Wi-Fi</translation>
 <translation id="4462159676511157176">Nama pelayan tersuai</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">Pengaktifan sekali: Taip kata laluan anda untuk mengaktifkan Smart Lock pada <ph name="DEVICE_TYPE" /> ini. Dengan Smart Lock, telefon anda akan membuka kunci peranti ini —tanpa kata laluan. Untuk mengubah atau melumpuhkan ciri ini, lawati tetapan <ph name="DEVICE_TYPE" /> anda.</translation>
 <translation id="4595560905247879544">Apl dan sambungan hanya boleh diubah suai oleh pengurus (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Penukar EMF</translation>
-<translation id="4601250583401186741">Pasangkan dengan pengawal</translation>
 <translation id="4602466770786743961">Sentiasa benarkan <ph name="HOST" /> mengakses kamera dan mikrofon anda</translation>
 <translation id="4605399136610325267">Internet tidak disambungkan</translation>
 <translation id="4608500690299898628">&amp;Cari...</translation>
@@ -2785,6 +2783,7 @@
 <translation id="5039804452771397117">Benarkan</translation>
 <translation id="5045550434625856497">Kata laluan tidak sah</translation>
 <translation id="5048179823246820836">Nordic</translation>
+<translation id="5048294425697652159">Dayakan Klien Quirks untuk penentukuran paparan.</translation>
 <translation id="5053604404986157245">Kata laluan TPM yang dihasilkan secara rawak tidak tersedia. Perkara ini biasa berlaku selepas Powerwash.</translation>
 <translation id="5053803681436838483">Alamat penghantaran baharu...</translation>
 <translation id="5055309315264875868">Tunjukkan pautan dalam halaman tetapan pengurus kata laluan untuk mengurus kata laluan disegerakkan anda dalam talian.</translation>
@@ -2882,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Keperluan gerak isyarat untuk main semula media</translation>
 <translation id="5189060859917252173">Sijil "<ph name="CERTIFICATE_NAME" />" mewakili Pihak Berkuasa Pensijilan.</translation>
-<translation id="5196117515621749903">Muatkan semula cache yang mengabaikan</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Penyegerakan selesai.</translation>
@@ -2897,6 +2895,7 @@
 <translation id="521582610500777512">Foto telah dibuang</translation>
 <translation id="5218183485292899140">Bahasa Perancis Switzerland</translation>
 <translation id="5218766986344577658">Tetingkap Timbul Penyahtaksaan Pautan</translation>
+<translation id="5220992698394817380">Dayakan ikut serta menu IME</translation>
 <translation id="5222676887888702881">Log keluar</translation>
 <translation id="5225324770654022472">Paparkan pintasan apl</translation>
 <translation id="5227536357203429560">Tambah rangkaian persendirian...</translation>
@@ -2939,6 +2938,7 @@
 <translation id="5271247532544265821">Togol mod Bahasa Cina Mudah/Tradisional</translation>
 <translation id="5271549068863921519">Simpan kata laluan</translation>
 <translation id="5273628206174272911">Navigasi sejarah percubaan sebagai tindak balas kepada tatal lampau melintang.</translation>
+<translation id="5275194674756975076">OK, muat semula</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> daripada tapak ini</translation>
 <translation id="5275973617553375938">Fail yang diperoleh semula dari Google Drive</translation>
 <translation id="527605719918376753">Redam tab</translation>
@@ -3012,6 +3012,7 @@
 <translation id="5368720394188453070">Telefon anda dikunci. Buka kuncinya untuk masuk.</translation>
 <translation id="5369927996833026114">Terokai Pelancar Apl Chrome</translation>
 <translation id="5370819323174483825">&amp;Muat semula</translation>
+<translation id="5372066618989754822">Dayakan akses ke menu IME baharu dalam halaman Tetapan Bahasa.</translation>
 <translation id="5372529912055771682">Mod pendaftaran yang diberikan tidak disokong oleh versi sistem pengendalian ini. Sila pastikan anda menjalankan versi terbaharu dan cuba lagi.</translation>
 <translation id="5374359983950678924">Tukar gambar</translation>
 <translation id="5376169624176189338">Klik untuk kembali, tahan untuk lihat sejarah</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">Nama:</translation>
 <translation id="5627086634964711283">Sambungan turut mengawal halaman yang ditunjukkan apabila anda mengklik butang Laman Utama.</translation>
 <translation id="5627259319513858869">Membolehkan penggunaan ciri kanvas eksperimen yang masih dalam pembangunan.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Reka bentuk bahan di krom atas penyemak imbas</translation>
 <translation id="5633060877636360447">Tindakan ini akan memadamkan sekurang-kurangnya <ph name="TOTAL_COUNT" /> item daripada peranti ini selama-lamanya tetapi tidak akan mengosongkan item yang disegerakkan daripada peranti lain.</translation>
 <translation id="5636996382092289526">Untuk menggunakan <ph name="NETWORK_ID" /> anda mungkin perlu <ph name="LINK_START" />melawat halaman log masuk rangkaian<ph name="LINK_END" /> terlebih dahulu, yang akan terbuka secara automatik dalam beberapa saat. Jika ini tidak berlaku, rangkaian tersebut tidak boleh digunakan.</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">Serlahkan objek dengan fokus papan kekunci</translation>
 <translation id="5678955352098267522">Baca data anda di <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Penapisan Teks dalam Mod Ikhtisar</translation>
+<translation id="5683818630978268777">UI kunci papan kekunci percubaan.</translation>
 <translation id="5684661240348539843">Pengecam Aset</translation>
 <translation id="569068482611873351">Import...</translation>
 <translation id="56907980372820799">Pautkan data</translation>
@@ -3565,7 +3568,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">Pelarasan sentuh</translation>
 <translation id="6218364611373262432">Tetapkan semula keadaan pemasangan pelancar apl pada setiap mula semula. Walaupun bendera ini ditetapkan, Chrome akan lupa yang pelancar telah dipasang pada setiap permulaan. Ciri ini digunakan untuk menguji aliran pemasangan pelancar apl.</translation>
-<translation id="6219616557885484178">Pilih daripada lebih sejuta apl dan permainan di Google Play untuk dipasang dan gunakannya pada <ph name="DEVICE_TYPE" /> anda.</translation>
+<translation id="6219616557885484178">Pilih daripada lebih sejuta apl dan permainan di Google Play untuk dipasang dan digunakan pada <ph name="DEVICE_TYPE" /> anda.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Ralat Memuatkan Sambungan</translation>
 <translation id="6221345481584921695">Penyemakan Selamat Google <ph name="BEGIN_LINK" />telah mengesan perisian hasad<ph name="END_LINK" /> pada <ph name="SITE" /> baru-baru ini. Tapak web yang lazimnya selamat kadangkala dijangkiti oleh perisian hasad. Kandungan berniat jahat datang dari <ph name="SUBRESOURCE_HOST" />, pengedar perisian hasad yang diketahui.</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">Tambahkan pada Desktop</translation>
 <translation id="6422329785618833949">Foto diterbalikkan</translation>
 <translation id="642282551015776456">Nama ini tidak boleh digunakan sebagai nama fail atau folder</translation>
-<translation id="642322423610046417">Gunakan menu konteks (klik kanan) untuk mengalih keluar sambungan yang tidak diperlukan.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Gunakan Adobe Reader sebagai alat lihat PDF lalai anda?</translation>
 <translation id="6425092077175753609">Bahan</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Mod skrin penuh dengan kunci papan kekunci percubaan memerlukan pengguna untuk menekan kekunci Esc untuk keluar.</translation>
 <translation id="6527303717912515753">Kongsi</translation>
 <translation id="6528546217685656218">Kunci Peribadi untuk Sijil Pelanggan tiada atau tidak sah.</translation>
 <translation id="653019979737152879">Menyegerakkan <ph name="FILE_NAME" />...</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">Bahasa Rusia</translation>
 <translation id="6827236167376090743">Video ini akan terus dimainkan untuk tempoh yang lama.</translation>
 <translation id="6828153365543658583">Hadkan log masuk bagi pengguna berikut:</translation>
+<translation id="6828860976882136098">Gagal menyediakan kemas kini automatik untuk semua pengguna (ralat sebelum pelaksanaan: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Dapatkan bantuan berhubung <ph name="DEVICE_TYPE" /> anda.</translation>
 <translation id="6829270497922309893">Daftar dalam organisasi anda</translation>
 <translation id="6830590476636787791">Peralihan animasi dalam tutorial kendalian kali pertama</translation>
@@ -3965,7 +3969,6 @@
 <translation id="6860427144121307915">Buka dalam Tab</translation>
 <translation id="6862635236584086457">Semua fail yang disimpan di dalam folder ini disokong dalam talian secara automatik</translation>
 <translation id="6865313869410766144">Autolengkap data borang</translation>
-<translation id="6865319096921627602">Mendayakan saluran media yang disatukan pada Android.</translation>
 <translation id="6867678160199975333">Beralih kepada <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Kotak pilihan ditandakan</translation>
 <translation id="6870130893560916279">Papan kekunci Ukraine</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">Pengekod/penyahkod video perisian H.264 WebRTC</translation>
 <translation id="7006634003215061422">Jidar bawah</translation>
 <translation id="7006844981395428048">Audio $1</translation>
+<translation id="7008270479623533562">Untuk menjalankan sambungan ini, anda perlu memuatkan semula halaman. Anda boleh menjalankan sambungan ini secara automatik pada tapak ini dengan mengklik kanan pada ikon sambungan.</translation>
 <translation id="7009045250432250765">Autoisi satu klik</translation>
 <translation id="7010160495478792664">Nyahkod video yang dipecut perkakasan jika tersedia.</translation>
 <translation id="7010400591230614821">Strategi pelepasan tab agresif</translation>
@@ -4224,7 +4228,6 @@
 <translation id="7256710573727326513">Buka dalam tab</translation>
 <translation id="7257173066616499747">Rangkaian Wi-Fi</translation>
 <translation id="7257666756905341374">Baca data yang anda salin dan tampal</translation>
-<translation id="7260002739296185724">Membolehkan penggunaan AVFoundation untuk merakam video dan pemantauan peranti video pada OS X &gt;= 10.7. QTKit akan digunakan sebaliknya.</translation>
 <translation id="7260504762447901703">Batalkan akses</translation>
 <translation id="7262004276116528033">Perkhidmatan log masuk ini dihoskan oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Pengecualian akses pemalam tanpa kotak pasir</translation>
@@ -4262,7 +4265,6 @@
 <translation id="7314278895724341067">Dayakan halaman luar talian NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (semasa)</translation>
 <translation id="7321545336522791733">Pelayan tidak dapat dihubungi</translation>
-<translation id="7324841169865301118">Membolehkan pengguna memilih tab untuk perkongsian desktop.</translation>
 <translation id="7325437708553334317">Sambungan Kontras Tinggi</translation>
 <translation id="7326565110843845436">Klik tiga jari pad sentuh</translation>
 <translation id="73289266812733869">Nyahpilih</translation>
@@ -5013,7 +5015,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto oleh</translation>
 <translation id="8428213095426709021">Tetapan</translation>
-<translation id="8432590265309978927">Sokongan yang bersifat sangat eksperimental untuk menghasilkan iframes silang tapak dalam proses yang berasingan.</translation>
 <translation id="8432745813735585631">Papan kekunci AS Colemak</translation>
 <translation id="8434177709403049435">&amp;Mengekod</translation>
 <translation id="8434480141477525001">Port Nyahpepijat NaCl</translation>
@@ -5210,7 +5211,6 @@
 <translation id="8713979477561846077">Dayakan ciri autobetul papan kekunci fizikal untuk papan kekunci AS, yang boleh memberi cadangan semasa anda menaip pada papan kekunci fizikal.</translation>
 <translation id="871476437400413057">Kata laluan disimpan Google</translation>
 <translation id="8714838604780058252">Grafik latar</translation>
-<translation id="8716065142695381595">Mendayakan saluran media yang disatukan (Android dan desktop) pada Android.</translation>
 <translation id="8722421161699219904">Papan kekunci Antarabangsa AS</translation>
 <translation id="872451400847464257">Edit Enjin Carian</translation>
 <translation id="8724859055372736596">&amp;Paparkan dalam Folder</translation>
@@ -5230,6 +5230,7 @@
 <translation id="8737685506611670901">Buka pautan <ph name="PROTOCOL" /> dan bukannya <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Tepatkan lagi kedudukan gerak isyarat sentuh untuk mengimbangi sentuhan peleraian tidak elok berbanding penggunaan tetikus.</translation>
+<translation id="8743712320294854924">Tunjukkan pilihan input yang dikembangkan dalam rak.</translation>
 <translation id="874420130893181774">Kaedah input Pinyin Tradisional</translation>
 <translation id="8744525654891896746">Pilih avatar untuk pengguna diselia ini</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5299,6 +5300,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Suis mod kekunci anjak</translation>
 <translation id="8852742364582744935">Apl dan sambungan berikut telah ditambah:</translation>
+<translation id="8853611566624224021">Dayakan pengambilan fail paparan icc daripada Pelayan Quirks untuk penentukuran warna paparan.</translation>
 <translation id="885381502874625531">Papan kekunci bahasa Belarus</translation>
 <translation id="8856844195561710094">Gagal untuk menghentikan penemuan peranti Bluetooth.</translation>
 <translation id="885701979325669005">Storan</translation>
@@ -5348,7 +5350,6 @@
 <translation id="8925458182817574960">&amp;Tetapan</translation>
 <translation id="8926389886865778422">Jangan tanya lagi</translation>
 <translation id="8926518602592448999">Lumpuhkan Sambungan Mod Pembangun</translation>
-<translation id="8929454297483336498">Penggunaan API Mac OS X AVFoundation berbanding QTKit</translation>
 <translation id="8931394284949551895">Peranti baharu</translation>
 <translation id="8932730422557198035">Gunakan API Midi Android</translation>
 <translation id="8933960630081805351">&amp;Paparkan dalam Pencari</translation>
@@ -5362,6 +5363,7 @@
 <translation id="894360074127026135">Peningkatan Antarabangsa Netscape</translation>
 <translation id="8944779739948852228">Pencetak dikesan</translation>
 <translation id="8946359700442089734">Ciri penyahpepijatan tidak didayakan sepenuhnya pada peranti ini <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Dayakan sokongan WebUSB.</translation>
 <translation id="89515141420106838">Mendayakan apl Galeri Gedung Web Chrome untuk pemacu pencetak. Apl ini menggelintar Gedung Web Chrome untuk mencari sambungan yang menyokong pencetakan ke pencetak USB dengan ID USB khas.</translation>
 <translation id="895347679606913382">Memulakan...</translation>
 <translation id="8954952943849489823">Pemindahan gagal, ralat tidak dijangkakan: $1</translation>
@@ -5505,6 +5507,7 @@
 <translation id="9154194610265714752">Dikemas kini</translation>
 <translation id="9154418932169119429">Imej ini tidak boleh didapati di luar talian.</translation>
 <translation id="91568222606626347">Buat Pintasan...</translation>
+<translation id="9157697743260533322">Gagal menyediakan kemas kini automatik untuk semua pengguna (ralat sebelum pelancaran: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Op! Masalah komunikasi rangkaian berlaku semasa pengesahan. Sila periksa sambungan rangkaian anda dan cuba lagi.</translation>
 <translation id="9159562891634783594">Dayakan pendaftaran pencetak awan yang belum didaftarkan dari pratonton cetakan.</translation>
 <translation id="9166510596677678112">E-mel kepada orang ini</translation>
@@ -5516,7 +5519,6 @@
 <translation id="9170848237812810038">&amp;Buat asal</translation>
 <translation id="9170884462774788842">Program lain pada komputer anda menambah tema yang boleh mengubah cara Chrome berfungsi.</translation>
 <translation id="9177499212658576372">Anda sedang disambungkan ke rangkaian <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Urus kad kredit</translation>
 <translation id="917858577839511832">Rundingan dengan DTLS 1.2 untuk WebRTC</translation>
 <translation id="917861274483335838">Urus penyekatan pemalam...</translation>
 <translation id="9179348476548754105">Cara pengurus kata laluan mengendalikan autolengkap bagi bukti kelayakan penyegerakan untuk halaman pengesahan semula transaksi sahaja.</translation>
@@ -5559,7 +5561,7 @@
 <translation id="951981865514037445"><ph name="URL" /> mahu menggunakan lokasi peranti anda.</translation>
 <translation id="952838760238220631">Dayakan sokongan Pengekodan Kandungan Brotli.</translation>
 <translation id="952992212772159698">Tidak diaktifkan</translation>
-<translation id="953000875543358078">Ini mungkin mengambil masa sehingga seminit atau lebih</translation>
+<translation id="953000875543358078">Pemuatan ini mungkin mengambil masa sehingga seminit atau lebih</translation>
 <translation id="960987915827980018">Tinggal kira-kira 1jam</translation>
 <translation id="96421021576709873">Rangkaian Wi-Fi</translation>
 <translation id="965490406356730238">Dayakan nyahkod mjpeg yang dipercepat perkakasan untuk bingkai diabadikan jika tersedia.</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 6fda5016..16a2a98 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -159,7 +159,6 @@
     Je moet je profiel weer instellen.<ph name="BR" />
     <ph name="BR" />
     Op het volgende scherm kun je feedback verzenden om ons te helpen bij het oplossen van het probleem.</translation>
-<translation id="1216954813581739968">Tabblad inschakelen voor bureaublad delen.</translation>
 <translation id="121827551500866099">Alle downloads weergeven...</translation>
 <translation id="122082903575839559">Algoritme voor handtekening van certificaat</translation>
 <translation id="1221024147024329929">PKCS nr. 1 MD2 met RSA-encryptie</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL met %s ipv. zoekterm</translation>
 <translation id="1546280085599573572">Deze extensie heeft gewijzigd welke pagina wordt weergegeven wanneer je op de knop 'Startpagina' klikt.</translation>
 <translation id="1546795794523394272">Welkom bij Chromebox for meetings.</translation>
+<translation id="1547572086206517271">Vernieuwen vereist</translation>
 <translation id="1547964879613821194">Canadees Engels</translation>
 <translation id="1548132948283577726">Sites die nooit wachtwoorden opslaan, worden hier weergegeven.</translation>
 <translation id="1549045574060481141">Downloaden bevestigen</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Het lokaal opslaan van onlangs bezochte pagina's voor offline gebruik inschakelen. Offline pagina's moeten hiervoor zijn ingeschakeld.</translation>
 <translation id="1891668193654680795">Dit certificaat vertrouwen voor het identificeren van softwareontwikkelaars.</translation>
 <translation id="189210018541388520">Openen in volledig scherm</translation>
+<translation id="1892754076732315533">Een vereenvoudigde nieuwe gebruikerservaring bij het starten van een door de pagina geactiveerde weergave op volledig scherm of muisaanwijzervergrendeling.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Cloudregistratieproces mislukt</translation>
 <translation id="189358972401248634">Andere talen</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Toegang tot je Universal 2nd Factor-apparaten</translation>
 <translation id="2881966438216424900">Laatst geopend:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> wordt zo meteen opnieuw gestart en opnieuw ingesteld.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Taakbeheer</translation>
 <translation id="2887525882758501333">Pdf-document</translation>
 <translation id="2888807692577297075">Er komen geen items overeen met &lt;b&gt;'<ph name="SEARCH_STRING" />'&lt;/b&gt;</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Niet nu</translation>
 <translation id="3480892288821151001">Venster links koppelen</translation>
 <translation id="3481915276125965083">De volgende pop-ups zijn op deze pagina geblokkeerd:</translation>
+<translation id="3482214069979148937">Houd |<ph name="ACCELERATOR" />| ingedrukt om volledig scherm af te sluiten</translation>
 <translation id="3484869148456018791">Nieuw certificaat ophalen</translation>
 <translation id="3487007233252413104">anonieme functie</translation>
 <translation id="348771913750618459">Inlogprocedures op basis van iframes</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Naambeperkingen voor certificaten</translation>
 <translation id="3595596368722241419">Accu is vol</translation>
 <translation id="3600456501114769456">Toegang tot lokale bestanden op je apparaat is door je beheerder uitgeschakeld.</translation>
-<translation id="3601395307734599350">Al je extensies staan hier</translation>
 <translation id="3603385196401704894">Canadees Frans</translation>
 <translation id="3603622770190368340">Netwerkcertificaat verkrijgen</translation>
 <translation id="3605780360466892872">Zakenman</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Algemene standaard gebruiken (detecteren)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tabblad}other{# tabbladen}}</translation>
 <translation id="4154664944169082762">Vingerafdrukken</translation>
-<translation id="4157188838832721931">Uitschakelen dat de gebruiker om het wachtwoord van het besturingssysteem wordt gevraagd voordat de wachtwoorden op de wachtwoordenpagina worden weergegeven.</translation>
 <translation id="4157869833395312646">Microsoft SGC (Server Gated Cryptography)</translation>
 <translation id="4158739975813877944">Afspeellijst openen</translation>
 <translation id="4159681666905192102">Dit is een account voor kinderen dat wordt beheerd door <ph name="CUSTODIAN_EMAIL" /> en <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Inloggen op een ander account</translation>
 <translation id="4219614746733932747">Als deze optie is ingeschakeld, gebruikt Blink het zoommechanisme om content te schalen voor de apparaatschaalfactor.</translation>
 <translation id="4220865787605972627">Kalibratie van de kleur van de display toestaan, zelfs als de display de functie ondersteunt.</translation>
-<translation id="4233506668751282421">Audio inschakelen voor bureaublad delen</translation>
 <translation id="4235200303672858594">Volledig scherm</translation>
 <translation id="4235813040357936597">Account toevoegen voor <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> kan niet worden weergegeven in deze taal</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Kan geen beleidsinstellingen op het apparaat installeren: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> wil je muisaanwijzer uitschakelen.</translation>
 <translation id="424546999567421758">Intensief schijfgebruik gedetecteerd</translation>
-<translation id="4247072926966606568">Als deze markering is ingeschakeld, kan de gebruiker in het keuzevenster voor bureaublad delen kiezen of de audio moet worden gedeeld.</translation>
 <translation id="424726838611654458">Altijd in Adobe Reader openen</translation>
 <translation id="4249248555939881673">Wachten op netwerkverbinding...</translation>
 <translation id="4249373718504745892">Deze pagina heeft geen toegang tot je camera en microfoon.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Een adres toevoegen</translation>
 <translation id="4359408040881008151">Geïnstalleerd vanwege afhankelijke extensie(s).</translation>
 <translation id="4361190688154226069">Targeting op basis van rechthoeken in weergaven</translation>
-<translation id="4363372140743955595">Hernieuwde verificatie wachtwoordbeheer</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> gedownload</translation>
 <translation id="4364830672918311045">Meldingen weergeven</translation>
 <translation id="4365673000813822030">De synchronisatie werkt niet meer.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">Over Automatisch aanvullen</translation>
 <translation id="4449996769074858870">Op dit tabblad wordt audio afgespeeld.</translation>
 <translation id="4450974146388585462">Diagnose</translation>
+<translation id="4452426408005428395">Annuleren</translation>
 <translation id="4454939697743986778">Dit certificaat is door je systeembeheerder geïnstalleerd.</translation>
 <translation id="445923051607553918">Aanmelden bij wifi-netwerk</translation>
 <translation id="4462159676511157176">Aangepaste naamservers</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">Eenmalige activering: typ je wachtwoord om Smart Lock te activeren op deze <ph name="DEVICE_TYPE" />. Met Smart Lock kan je telefoon dit apparaat ontgrendelen, zonder wachtwoord. Als je deze functie wilt uitschakelen, ga je naar de instellingen van je <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Apps en extensies kunnen alleen worden aangepast door de beheerder (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF Convertor</translation>
-<translation id="4601250583401186741">Koppelen aan een controller</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> altijd toegang geven tot je camera en microfoon</translation>
 <translation id="4605399136610325267">Geen internetverbinding</translation>
 <translation id="4608500690299898628">&amp;Zoeken...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">Toestaan</translation>
 <translation id="5045550434625856497">Onjuist wachtwoord</translation>
 <translation id="5048179823246820836">Noord-Europees</translation>
+<translation id="5048294425697652159">Quirks Client inschakelen voor beeldschermkalibratie.</translation>
 <translation id="5053604404986157245">Het willekeurig gegenereerde TPM-wachtwoord is niet beschikbaar. Dit is normaal nadat de Powerwash-functie is uitgevoerd.</translation>
 <translation id="5053803681436838483">Nieuw verzendadres…</translation>
 <translation id="5055309315264875868">Geef een link weer op de instellingenpagina van wachtwoordbeheer om je gesynchroniseerde wachtwoorden online te beheren.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Vereiste voor gebaar voor het afspelen van media</translation>
 <translation id="5189060859917252173">Het certificaat '<ph name="CERTIFICATE_NAME" />' vertegenwoordigt een certificeringsinstantie.</translation>
-<translation id="5196117515621749903">Opnieuw laden zonder cachegeheugen</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronisatie voltooid.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">Foto is geannuleerd</translation>
 <translation id="5218183485292899140">Zwitsers Frans</translation>
 <translation id="5218766986344577658">Pop-up voor ondubbelzinnige links</translation>
+<translation id="5220992698394817380">Aanmelding voor IME-menu inschakelen</translation>
 <translation id="5222676887888702881">Uitloggen</translation>
 <translation id="5225324770654022472">Snelkoppeling voor apps weergeven</translation>
 <translation id="5227536357203429560">Privénetwerk toevoegen...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Schakelen tussen Vereenvoudigd en Traditioneel Chinees</translation>
 <translation id="5271549068863921519">Wachtwoord opslaan</translation>
 <translation id="5273628206174272911">Experimentele geschiedenisnavigatie in reactie op horizontaal overscrollen.</translation>
+<translation id="5275194674756975076">OK, vernieuwen</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> van deze site</translation>
 <translation id="5275973617553375938">Bestanden hersteld vanaf Google Drive</translation>
 <translation id="527605719918376753">Tabblad dempen</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">Je telefoon is vergrendeld. Ontgrendel deze om door te gaan.</translation>
 <translation id="5369927996833026114">Ontdek Chrome App Launcher</translation>
 <translation id="5370819323174483825">&amp;Opnieuw laden</translation>
+<translation id="5372066618989754822">Toegang tot het nieuwe IME-menu op de pagina Taalinstellingen inschakelen.</translation>
 <translation id="5372529912055771682">De geleverde inschrijvingsmodus wordt niet ondersteund door deze versie van het besturingssysteem. Zorg ervoor dat je de nieuwste versie gebruikt en probeer het opnieuw.</translation>
 <translation id="5374359983950678924">Afbeelding wijzigen</translation>
 <translation id="5376169624176189338">Klik om terug te gaan, houd ingedrukt om de geschiedenis weer te geven</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">Naam:</translation>
 <translation id="5627086634964711283">Hiermee wordt ook gecontroleerd welke pagina wordt weergegeven wanneer je op de knop 'Startpagina' klikt.</translation>
 <translation id="5627259319513858869">Maakt het gebruik mogelijk van experimentele canvasfuncties die nog in ontwikkeling zijn.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design in de top chrome van de browser</translation>
 <translation id="5633060877636360447">Hiermee worden ten minste <ph name="TOTAL_COUNT" /> items definitief van dit apparaat verwijderd, maar worden geen gesynchroniseerde items van andere apparaten gewist.</translation>
 <translation id="5636996382092289526">Als je <ph name="NETWORK_ID" /> wilt gebruiken, moet je mogelijk eerst <ph name="LINK_START" />de inlogpagina van het netwerk bezoeken<ph name="LINK_END" />, die over enkele seconden automatisch wordt geopend. Als de pagina niet wordt geopend, kan het netwerk niet worden gebruikt.</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">Het object markeren dat is geactiveerd via het toetsenbord</translation>
 <translation id="5678955352098267522">Je gegevens voor <ph name="WEBSITE_1" /> lezen</translation>
 <translation id="5680928275846978395">Tekst filteren in Overzichtsmodus</translation>
+<translation id="5683818630978268777">Experimentele gebruikersinterface bij toetsenbordvergrendeling.</translation>
 <translation id="5684661240348539843">Item-ID</translation>
 <translation id="569068482611873351">Importeren...</translation>
 <translation id="56907980372820799">Gegevens koppelen</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">Toevoegen aan bureaublad</translation>
 <translation id="6422329785618833949">Foto gedraaid</translation>
 <translation id="642282551015776456">Deze naam mag niet worden gebruikt als de naam van een bestand of map.</translation>
-<translation id="642322423610046417">Gebruik het contextmenu (rechtermuisknop) om extensies te verwijderen die je niet nodig hebt.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader als je standaard PDF-viewer gebruiken?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Een experimentele modus voor volledig scherm met toetsenbordvergrendeling, waarbij gebruikers Esc ingedrukt moeten houden om de modus af te sluiten.</translation>
 <translation id="6527303717912515753">Delen</translation>
 <translation id="6528546217685656218">De privésleutel voor dit clientcertificaat ontbreekt of is ongeldig.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> synchroniseren...</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">Russisch</translation>
 <translation id="6827236167376090743">Deze video wordt eindeloos afgespeeld.</translation>
 <translation id="6828153365543658583">Inloggen beperken tot de volgende gebruikers:</translation>
+<translation id="6828860976882136098">Kan automatische updates niet instellen voor alle gebruikers (uitvoeringsfout bij pre-flight-procedure: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Ontvang hulp bij je <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Inschrijven in je organisatie</translation>
 <translation id="6830590476636787791">Overgangen met animatie in de training tijdens de eerste uitvoering</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">Openen in een tabblad</translation>
 <translation id="6862635236584086457">Er wordt automatisch online een back-up gemaakt van alle bestanden die in deze map zijn opgeslagen</translation>
 <translation id="6865313869410766144">Formuliergegevens voor Automatisch aanvullen</translation>
-<translation id="6865319096921627602">Hiermee wordt de samengevoegde mediapijplijn voor Android ingeschakeld.</translation>
 <translation id="6867678160199975333">Schakelen naar <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Aangevinkt selectievakje</translation>
 <translation id="6870130893560916279">Oekraïens toetsenbord</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">Video-encoder/decoder op basis van WebRTC H.264-software</translation>
 <translation id="7006634003215061422">Marge onderkant</translation>
 <translation id="7006844981395428048">$1-audio</translation>
+<translation id="7008270479623533562">Je moet de pagina vernieuwen om deze extensie uit te voeren. Klik met de rechtermuisknop op het extensiepictogram om deze extensie automatisch uit te voeren op deze site.</translation>
 <translation id="7009045250432250765">Automatisch aanvullen met één klik</translation>
 <translation id="7010160495478792664">Hardwareversnelde videocodering waar beschikbaar.</translation>
 <translation id="7010400591230614821">Agressieve vrijgavestrategie voor tabbladen</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">Openen in een tabblad</translation>
 <translation id="7257173066616499747">Wifi-netwerken</translation>
 <translation id="7257666756905341374">Gegevens lezen die je kopieert en plakt</translation>
-<translation id="7260002739296185724">Het gebruik van AVFoundation voor video-opname en videoapparaatcontrole inschakelen voor OS X &gt;= 10.7. Anders wordt QTKit gebruikt.</translation>
 <translation id="7260504762447901703">Toegang intrekken</translation>
 <translation id="7262004276116528033">Deze inlogservice wordt gehost door <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Uitzonderingen voor toegang tot plug-in zonder sandbox</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">Offline pagina's op de nieuwe tabbladpagina inschakelen</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (huidig)</translation>
 <translation id="7321545336522791733">Server niet bereikbaar</translation>
-<translation id="7324841169865301118">Hiermee kan de gebruiker een tabblad kiezen voor bureaublad delen.</translation>
 <translation id="7325437708553334317">Extensie voor hoog contrast</translation>
 <translation id="7326565110843845436">Met drie vingers op het touchpad tikken</translation>
 <translation id="73289266812733869">Niet geselecteerd</translation>
@@ -5016,7 +5018,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto van</translation>
 <translation id="8428213095426709021">Instellingen</translation>
-<translation id="8432590265309978927">Zeer experimentele ondersteuning voor het weergeven van iframes op verschillende sites in afzonderlijke processen.</translation>
 <translation id="8432745813735585631">Amerikaans Colemak-toetsenbord</translation>
 <translation id="8434177709403049435">Te&amp;kenset</translation>
 <translation id="8434480141477525001">Foutopsporingspoort voor systeemeigen client</translation>
@@ -5213,7 +5214,6 @@
 <translation id="8713979477561846077">Automatische correctie voor fysiek toetsenbord inschakelen voor een VS-toetsenbord, zodat je suggesties kunt krijgen terwijl je op een fysiek toetsenbord typt.</translation>
 <translation id="871476437400413057">Door Google opgeslagen wachtwoorden</translation>
 <translation id="8714838604780058252">Achtergrondbeelden</translation>
-<translation id="8716065142695381595">Hiermee wordt de samengevoegde mediapijplijn (voor Android en desktop) ingeschakeld voor Android.</translation>
 <translation id="8722421161699219904">Amerikaans toetsenbord (internationaal)</translation>
 <translation id="872451400847464257">Zoekmachine bewerken</translation>
 <translation id="8724859055372736596">&amp;Weergeven in map</translation>
@@ -5233,6 +5233,7 @@
 <translation id="8737685506611670901">Links voor <ph name="PROTOCOL" /> openen in plaats van <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">De positie van een aanraakgebaar verfijnen om aanrakingen met slechte resolutie te compenseren, in vergelijking met een muis.</translation>
+<translation id="8743712320294854924">Uitgebreide invoeropties weergeven op de plank.</translation>
 <translation id="874420130893181774">Traditionele Pinyin-invoermethode</translation>
 <translation id="8744525654891896746">Een avatar selecteren voor deze gebruiker met beperkte rechten</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5303,6 +5304,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Moduswijziging via Shift-toets</translation>
 <translation id="8852742364582744935">De volgende apps en extensies zijn toegevoegd:</translation>
+<translation id="8853611566624224021">Het ophalen van ICC-displaybestanden van de Quirks Server inschakelen voor kleurkalibratie voor het beeldscherm.</translation>
 <translation id="885381502874625531">Wit-Russisch toetsenbord</translation>
 <translation id="8856844195561710094">Stoppen met zoeken naar Bluetooth-apparaat mislukt.</translation>
 <translation id="885701979325669005">Opslag</translation>
@@ -5352,7 +5354,6 @@
 <translation id="8925458182817574960">&amp;Instellingen</translation>
 <translation id="8926389886865778422">Niet meer vragen</translation>
 <translation id="8926518602592448999">Extensies van ontwikkelaarsmodus uitschakelen</translation>
-<translation id="8929454297483336498">Mac OS X AVFoundation-API's gebruiken in plaats van QTKit</translation>
 <translation id="8931394284949551895">Nieuwe apparaten</translation>
 <translation id="8932730422557198035">Android Midi API gebruiken</translation>
 <translation id="8933960630081805351">&amp;Toon in Finder</translation>
@@ -5366,6 +5367,7 @@
 <translation id="894360074127026135">Internationale Netscape-step-up</translation>
 <translation id="8944779739948852228">Printer gedetecteerd</translation>
 <translation id="8946359700442089734">Foutopsporingsfuncties zijn niet volledig ingeschakeld op dit <ph name="IDS_SHORT_PRODUCT_NAME" />-apparaat.</translation>
+<translation id="8946784827990177241">WebUSB-ondersteuning inschakelen</translation>
 <translation id="89515141420106838">Schakelt de Chrome Web Store-galerij-app in voor printerstuurprogramma's. De app zoekt in de Chrome Web Store naar extensies die afdrukken ondersteunt op een USB-printer met een specifiek USB-ID.</translation>
 <translation id="895347679606913382">Starten...</translation>
 <translation id="8954952943849489823">Verplaatsen mislukt. Onverwachte fout: $1</translation>
@@ -5510,6 +5512,7 @@
 <translation id="9154194610265714752">Bijgewerkt</translation>
 <translation id="9154418932169119429">Deze afbeelding is offline niet beschikbaar.</translation>
 <translation id="91568222606626347">Snelkoppeling maken…</translation>
+<translation id="9157697743260533322">Kan automatische updates niet instellen voor alle gebruikers (lanceringsfout bij pre-flight-procedure: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Er is een netwerkcommunicatieprobleem opgetreden tijdens de verificatie. Controleer je netwerkverbinding en probeer het opnieuw.</translation>
 <translation id="9159562891634783594">Schakel het registreren van niet-geregistreerde cloudprinters via het afdrukvoorbeeld in.</translation>
 <translation id="9166510596677678112">Deze persoon e-mailen</translation>
@@ -5521,7 +5524,6 @@
 <translation id="9170848237812810038">&amp;Ongedaan maken</translation>
 <translation id="9170884462774788842">Een ander programma op je computer heeft een thema toegevoegd dat de manier waarop Chrome werkt kan wijzigen.</translation>
 <translation id="9177499212658576372">Je bent momenteel verbonden met het netwerk <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Creditcards beheren</translation>
 <translation id="917858577839511832">Onderhandelen met DTLS 1.2 voor WebRTC</translation>
 <translation id="917861274483335838">Blokkeren van plug-ins beheren…</translation>
 <translation id="9179348476548754105">De manier waarop wachtwoordbeheer ermee omgaat dat inloggegevens voor synchronisatie alleen automatisch worden aangevuld voor transactionele pagina's voor hernieuwde verificatie.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index ea747ca..24214544 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -159,7 +159,6 @@
     Du må konfigurere profilen din på nytt.<ph name="BR" />
     <ph name="BR" />
     Gå til neste skjermbilde, og send tilbakemelding for å hjelpe oss med å løse problemet.</translation>
-<translation id="1216954813581739968">Slå på muligheten for å dele faner ved deling av skrivebord.</translation>
 <translation id="121827551500866099">Vis alle nedlastinger</translation>
 <translation id="122082903575839559">Signaturalgoritme for sertifikat</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 med RSA-kryptering</translation>
@@ -372,7 +371,7 @@
 <translation id="1523350272063152305">Chromebox for videokonferanse-enheten er klar til å konfigureres.</translation>
 <translation id="1524152555482653726">Film</translation>
 <translation id="1525475911290901759">Dette slår på en ny algoritme for utvalg og rangering av søkeresultater i appvelgeren.</translation>
-<translation id="1525835343380843286">Tjenerkommunikasjonsfeil</translation>
+<translation id="1525835343380843286">Kommunikasjonsfeil med tjener</translation>
 <translation id="1526560967942511387">Dokument uten tittel</translation>
 <translation id="1526925867532626635">Bekreft innstillingene for synkronisering</translation>
 <translation id="1528372117901087631">Internett-tilkobling</translation>
@@ -616,7 +615,7 @@
 <translation id="1891668193654680795">Stol på dette sertifikatet for å identifisere programvareprodusenter.</translation>
 <translation id="189210018541388520">Åpne fullskjerm</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
-<translation id="1893406696975231168">Identitetsprosessen for nettskyen mislyktes</translation>
+<translation id="1893406696975231168">Administrert identitetsprosess mislyktes</translation>
 <translation id="189358972401248634">Andre språk</translation>
 <translation id="1894288435579641697">Fremhev markøren (ved endring av tekst)</translation>
 <translation id="1895658205118569222">Avslutning</translation>
@@ -1840,7 +1839,6 @@
 <translation id="3593965109698325041">Begrensninger for sertifikatnavn</translation>
 <translation id="3595596368722241419">Batteriet er fullt</translation>
 <translation id="3600456501114769456">Administratoren din har deaktivert tilgang til lokale filer på enheten din.</translation>
-<translation id="3601395307734599350">Her finner du alle utvidelsene dine</translation>
 <translation id="3603385196401704894">Canadisk fransk</translation>
 <translation id="3603622770190368340">Hent nettverkssertifikat</translation>
 <translation id="3605780360466892872">Businessmann</translation>
@@ -2221,7 +2219,6 @@
 <translation id="4151403195736952345">Bruk global standard (oppdag)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 fane}other{# faner}}</translation>
 <translation id="4154664944169082762">Fingeravtrykk</translation>
-<translation id="4157188838832721931">Deaktiver forespørsel til brukeren om å oppgi OS-passordet før passord avsløres på passordsiden.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Åpne spillelisteen</translation>
 <translation id="4159681666905192102">Dette er en konto for barn som administreres av <ph name="CUSTODIAN_EMAIL" /> og <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2265,7 +2262,6 @@
 <translation id="4218259925454408822">Logg på en annen konto</translation>
 <translation id="4219614746733932747">Hvis dette alternativet er slått på, bruker Blink zoomemekanismen sin for å skalere innhold til enhetens skaleringsfaktor.</translation>
 <translation id="4220865787605972627">Tillater kalibrering av fargene på skjermen hvis skjermen støtter denne funksjonen.</translation>
-<translation id="4233506668751282421">Slå på muligheten for å dele lyd ved deling av skrivebord</translation>
 <translation id="4235200303672858594">Hele skjermen</translation>
 <translation id="4235813040357936597">Legg til konto for <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> kan ikke vises på dette språket</translation>
@@ -2273,7 +2269,6 @@
 <translation id="4242577469625748426">Kunne ikke installere angivelse av innstillinger på enheten: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> ønsker å skjule markøren din.</translation>
 <translation id="424546999567421758">Høyt forbruk av lagringsplass oppdaget</translation>
-<translation id="4247072926966606568">Når denne innstillingen er på, kan brukeren velge om lyden skal deles, i valgvinduet for deling av skrivebord.</translation>
 <translation id="424726838611654458">Åpne alltid i Adobe Reader</translation>
 <translation id="4249248555939881673">Venter på nettverkstilkobling …</translation>
 <translation id="4249373718504745892">Kameraet og mikrofonen er blokkert for denne siden.</translation>
@@ -2346,7 +2341,6 @@
 <translation id="4358697938732213860">Legg til adresse</translation>
 <translation id="4359408040881008151">Installert på grunn av avhengige utvidelser.</translation>
 <translation id="4361190688154226069">Rect-basert målretting i visninger</translation>
-<translation id="4363372140743955595">Ny autentisering av passordbehandling</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> er lastet ned.</translation>
 <translation id="4364830672918311045">Vis varsler</translation>
 <translation id="4365673000813822030">Beklager, synkroniseringen har sluttet å fungere.</translation>
@@ -2480,7 +2474,6 @@
 <translation id="4594109696316595112">Engangsaktivering: Skriv inn passordet ditt for å aktivere Smart Lock på denne <ph name="DEVICE_TYPE" />-enheten. Med Smart Lock låser telefonen opp enheten – uten passord. For å endre eller slå av denne funksjonen, gå til innstillingene for <ph name="DEVICE_TYPE" />-enheten.</translation>
 <translation id="4595560905247879544">Apper og utvidelser kan bare endres av administratoren (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF Convertor</translation>
-<translation id="4601250583401186741">Koble til en kontroller</translation>
 <translation id="4602466770786743961">Tillat alltid at <ph name="HOST" /> bruker kameraet og mikrofonen</translation>
 <translation id="4605399136610325267">Internett er ikke tilkoblet</translation>
 <translation id="4608500690299898628">&amp;Finn</translation>
@@ -2869,7 +2862,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Bevegelseskrav for medieavspilling</translation>
 <translation id="5189060859917252173">Sertifikatet «<ph name="CERTIFICATE_NAME" />» representerer en sertifiseringsinstans.</translation>
-<translation id="5196117515621749903">Last inn buffer på nytt</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internett</translation>
 <translation id="5197680270886368025">Synkroniseringen er fullført.</translation>
@@ -3679,7 +3671,6 @@
 <translation id="6420676428473580225">Legg til på skrivebordet</translation>
 <translation id="6422329785618833949">Bildet er snudd</translation>
 <translation id="642282551015776456">Dette navnet kan ikke brukes som fil- eller mappenavn</translation>
-<translation id="642322423610046417">Bruk kontekstmenyen (høyreklikkmenyen) for å fjerne utvidelser du ikke trenger.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Vil du bruke Adobe Reader som standard PDF-visningsprogram?</translation>
 <translation id="6425092077175753609">Materiale</translation>
@@ -3950,7 +3941,6 @@
 <translation id="6860427144121307915">Åpne i en fane</translation>
 <translation id="6862635236584086457">Alle filene som lagres i denne mappen, blir automatisk sikkerhetskopiert på nettet</translation>
 <translation id="6865313869410766144">Skjemadata lagret med autofyll</translation>
-<translation id="6865319096921627602">Slår på den enhetlige medieprosessen på Android.</translation>
 <translation id="6867678160199975333">Bytt til <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Avmerket avmerkingsboks</translation>
 <translation id="6870130893560916279">Ukrainsk tastatur</translation>
@@ -4108,7 +4098,7 @@
 <translation id="7082055294850503883">Ignorer CapsLock-status og skriv inn små bokstaver som standard</translation>
 <translation id="7088418943933034707">Administrer sertifikater</translation>
 <translation id="7088434364990739311">Kunne ikke starte søk etter oppdateringer (feilkode <ph name="ERROR" />).</translation>
-<translation id="708856090370082727">Slå på støtte for overrulling for skjermtastaturet. Når dette merket er på, endrer skjermtastaturet bare størrelsen på det visuelle visningsområdet.</translation>
+<translation id="708856090370082727">Slå på støtte for overrulling for skjermtastaturet. Når dette alternativet («flagget») er på, endrer skjermtastaturet bare størrelsen på det visuelle visningsområdet.</translation>
 <translation id="7088674813905715446">Administratoren har gitt denne enheten status som «ikke klargjort». For å aktivere den for registrering, må du be administratoren gi enheten status som «ventende».</translation>
 <translation id="708969677220991657">Tillater forespørsler til den lokale verten via HTTPS selv når det presenteres et ugyldig sertifikat.</translation>
 <translation id="7092106376816104">Unntak for forgrunnsvinduer</translation>
@@ -4210,7 +4200,6 @@
 <translation id="7256710573727326513">Åpne i en fane</translation>
 <translation id="7257173066616499747">Wi-Fi-nettverk</translation>
 <translation id="7257666756905341374">lese data du kopierer og limer inn</translation>
-<translation id="7260002739296185724">Aktiver AV Foundation-bruk for videoopptak og videoenhetsovervåking på OS X &gt;= 10.7. QTKit brukes i andre tilfeller.</translation>
 <translation id="7260504762447901703">Opphev tilgangen</translation>
 <translation id="7262004276116528033">Verten for denne påloggingstjenesten er <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Tilgangsunntak for programtillegg uten prosessisolering</translation>
@@ -4248,7 +4237,6 @@
 <translation id="7314278895724341067">Slå på sider for bruk uten nett på nye faner</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (gjeldende)</translation>
 <translation id="7321545336522791733">Tjeneren er ikke tilgjengelig</translation>
-<translation id="7324841169865301118">Lar brukeren velge faner ved deling av skrivebord.</translation>
 <translation id="7325437708553334317">Høy kontrast-utvidelse</translation>
 <translation id="7326565110843845436">Trefingerklikk for styreflaten</translation>
 <translation id="73289266812733869">Ikke valgt</translation>
@@ -4990,7 +4978,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Bilde tatt av</translation>
 <translation id="8428213095426709021">Innstillinger</translation>
-<translation id="8432590265309978927">Svært eksperimentell støtte for gjengivelse av iframes med koblinger til andre nettsteder i separate prosesser.</translation>
 <translation id="8432745813735585631">Amerikansk tastatur (Colemak)</translation>
 <translation id="8434177709403049435">&amp;Koding</translation>
 <translation id="8434480141477525001">Feilsøkingsport for NaCl</translation>
@@ -5187,7 +5174,6 @@
 <translation id="8713979477561846077">Aktivér autokorrektur for fysisk, amerikansk tastatur, som kan gi forslag mens det skrives på det fysiske tastaturet.</translation>
 <translation id="871476437400413057">Google-lagrede passord</translation>
 <translation id="8714838604780058252">Bakgrunnsgrafikk</translation>
-<translation id="8716065142695381595">Slår på den enhetlige medieprosessen (for Android og datamaskiner) på Android.</translation>
 <translation id="8722421161699219904">USA-tastatur (internasjonalt)</translation>
 <translation id="872451400847464257">Rediger søkemotor</translation>
 <translation id="8724859055372736596">&amp;Vis i mappe</translation>
@@ -5325,7 +5311,6 @@
 <translation id="8925458182817574960">&amp;Innstillinger</translation>
 <translation id="8926389886865778422">Ikke spør igjen</translation>
 <translation id="8926518602592448999">Deaktiver utvidelser for utviklermodus</translation>
-<translation id="8929454297483336498">Bruk av Mac OS X AVFoundation API-er i stedet for QTKit</translation>
 <translation id="8931394284949551895">Nye enheter</translation>
 <translation id="8932730422557198035">Bruk Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Vis i Finder</translation>
@@ -5494,7 +5479,6 @@
 <translation id="9170848237812810038">&amp;Angre</translation>
 <translation id="9170884462774788842">Et annet program på datamaskinen la til et tema som kan endre måten Chrome fungerer på.</translation>
 <translation id="9177499212658576372">Du er for øyeblikket tilkoblet nettverket <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Administrer kredittkort</translation>
 <translation id="917858577839511832">Forhandling med DTLS 1.2 for WebRTC</translation>
 <translation id="917861274483335838">Administrer blokkering av programtillegg</translation>
 <translation id="9179348476548754105">Hvordan passordbehandleren håndterer autofyll for synkroniseringslegitimasjon bare for reauth-sider forbundet med transaksjoner</translation>
@@ -5537,7 +5521,7 @@
 <translation id="951981865514037445"><ph name="URL" /> ønsker å bruke posisjonen til enheten din.</translation>
 <translation id="952838760238220631">Slå på støtte for Brotli-innholdskoding.</translation>
 <translation id="952992212772159698">Ikke aktivert</translation>
-<translation id="953000875543358078">Dette kan ta opptil cirka et minutt</translation>
+<translation id="953000875543358078">Dette kan ta omtrent et minutt</translation>
 <translation id="960987915827980018">Omtrent én time igjen</translation>
 <translation id="96421021576709873">Wi-Fi-nettverk</translation>
 <translation id="965490406356730238">Slå på maskinvareakselerert MJPEG-dekoding for skjermdumper der dette er tilgjengelig.</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 2ea403fc..81c25c32 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -56,7 +56,7 @@
 <translation id="1071917609930274619">Szyfrowanie danych</translation>
 <translation id="1073447326677593785">Wątki rastrowania zapisują dane bezpośrednio w pamięci GPU powiązanej z fragmentami obrazu.</translation>
 <translation id="1076818208934827215">Microsoft Internet Explorer</translation>
-<translation id="1077946062898560804">Skonfiguruj aktualizacje automatyczne dla wszystkich użytkowników</translation>
+<translation id="1077946062898560804">Skonfiguruj automatyczne aktualizacje dla wszystkich użytkowników</translation>
 <translation id="1079766198702302550">Zawsze blokuj dostęp do kamery</translation>
 <translation id="1082398631555931481"><ph name="THIRD_PARTY_TOOL_NAME" /> chce przywrócić ustawienia Chrome do wartości domyślnych. Spowoduje to zresetowanie strony startowej, strony nowej karty i wyszukiwarki oraz wyłączenie rozszerzeń i odpięcie wszystkich kart. Zostaną też wyczyszczone dane tymczasowe i znajdujące się w pamięci podręcznej – w tym pliki cookie oraz treści i dane stron.</translation>
 <translation id="1084824384139382525">Kopiuj adr&amp;es linku</translation>
@@ -159,7 +159,6 @@
     Musisz ponownie skonfigurować profil.<ph name="BR" />
     <ph name="BR" />
     Na następnym ekranie wyślij opinię, by pomóc nam naprawić ten problem.</translation>
-<translation id="1216954813581739968">Włącz kartę przy udostępnianiu pulpitu</translation>
 <translation id="121827551500866099">Pokaż wszystkie pobrane pliki...</translation>
 <translation id="122082903575839559">Algorytm podpisu certyfikatu</translation>
 <translation id="1221024147024329929">PKCS #1, MD2 z szyfrowaniem RSA</translation>
@@ -375,7 +374,7 @@
 <translation id="1523350272063152305">Urządzenie Chromebox wideokonferencje jest gotowe do skonfigurowania.</translation>
 <translation id="1524152555482653726">Oglądanie</translation>
 <translation id="1525475911290901759">Włącza nowy algorytm wyboru i oceniania wyników wyszukiwania w Menu z aplikacjami.</translation>
-<translation id="1525835343380843286">Błąd komunikacji z serw</translation>
+<translation id="1525835343380843286">Błąd komunikacji z serwerem</translation>
 <translation id="1526560967942511387">Dokument bez tytułu</translation>
 <translation id="1526925867532626635">Potwierdź ustawienia synchronizacji</translation>
 <translation id="1528372117901087631">Połączenie internetowe</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL z parametrem %s (zapytanie)</translation>
 <translation id="1546280085599573572">To rozszerzenie ustawiło inną stronę wyświetlaną po kliknięciu przycisku strony startowej.</translation>
 <translation id="1546795794523394272">Chromebox wideokonferencje – witamy</translation>
+<translation id="1547572086206517271">Wymagane jest odświeżenie</translation>
 <translation id="1547964879613821194">kanadyjski angielski</translation>
 <translation id="1548132948283577726">Tutaj będą wyświetlane witryny, które nigdy nie zapisują haseł.</translation>
 <translation id="1549045574060481141">Potwierdź pobranie</translation>
@@ -618,8 +618,9 @@
 <translation id="1891196807951270080">Włącza zapisywanie ostatnio odwiedzanych stron lokalnie do przeglądania offline. Wymaga włączenia stron offline.</translation>
 <translation id="1891668193654680795">Ufaj temu certyfikatowi przy identyfikowaniu producentów oprogramowania.</translation>
 <translation id="189210018541388520">Otwórz na pełnym ekranie</translation>
+<translation id="1892754076732315533">Nowy, uproszczony interfejs włączania pełnego ekranu lub blokowania wskaźnika myszy.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
-<translation id="1893406696975231168">Udostępnianie chmury nie powiodło się</translation>
+<translation id="1893406696975231168">Nie udało się udostępnić chmury</translation>
 <translation id="189358972401248634">Inne języki</translation>
 <translation id="1894288435579641697">Podświetlaj kursor (przy edycji tekstu)</translation>
 <translation id="1895658205118569222">Wyłączenie</translation>
@@ -1070,7 +1071,7 @@
 <translation id="2554553592469060349">Wybrany plik jest za duży (maksymalny rozmiar: 3 MB).</translation>
 <translation id="255632937203580977">Powiadomienia o wykryciu urządzeń</translation>
 <translation id="2557899542277210112">Dodaj tutaj zakładki, do których chcesz mieć szybki dostęp.</translation>
-<translation id="2558578666171469771"><ph name="DEVICE_TYPE" /> obsługuje teraz sklep Google Play</translation>
+<translation id="2558578666171469771">Sklep Google Play jest teraz dostępny na Twoim urządzeniu <ph name="DEVICE_TYPE" /></translation>
 <translation id="255937426064304553">amerykańska klawiatura międzynarodowa</translation>
 <translation id="2560633531288539217">Zarządzaj Aktywnością związaną z głosem i dźwiękiem</translation>
 <translation id="2562685439590298522">Dokumenty</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Dostęp do urządzeń Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Ostatni dostęp:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> za chwilę uruchomi się ponownie i zresetuje.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Menedżer zadań</translation>
 <translation id="2887525882758501333">Dokument PDF</translation>
 <translation id="2888807692577297075">Żadne elementy nie pasują do zapytania &lt;b&gt;„<ph name="SEARCH_STRING" />”&lt;/b&gt;</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Nie teraz</translation>
 <translation id="3480892288821151001">Umieść okno po lewej</translation>
 <translation id="3481915276125965083">Następujące wyskakujące okienka na tej stronie zostały zablokowane:</translation>
+<translation id="3482214069979148937">Aby zamknąć pełny ekran, przytrzymaj |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Pobierz nowy certyfikat</translation>
 <translation id="3487007233252413104">funkcja anonimowa</translation>
 <translation id="348771913750618459">Procesy logowania oparte na iframe</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Ograniczenia nazwy certyfikatu</translation>
 <translation id="3595596368722241419">Bateria naładowana</translation>
 <translation id="3600456501114769456">Dostęp do plików lokalnych na Twoim urządzeniu został wyłączony przez administratora.</translation>
-<translation id="3601395307734599350">Tutaj znajdziesz wszystkie swoje rozszerzenia</translation>
 <translation id="3603385196401704894">kanadyjski francuski</translation>
 <translation id="3603622770190368340">Pobierz certyfikat sieci</translation>
 <translation id="3605780360466892872">Garnitur</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Użyj globalnego ustawienia domyślnego (Wykrywaj)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# kart}other{# karty}}</translation>
 <translation id="4154664944169082762">Odciski cyfrowe</translation>
-<translation id="4157188838832721931">Wyłącza prośbę o podanie hasła użytkownika do systemu operacyjnego wyświetlaną przed ujawnieniem haseł na stronie z hasłami.</translation>
 <translation id="4157869833395312646">Kryptografia Server Gated Cryptography firmy Microsoft</translation>
 <translation id="4158739975813877944">Otwórz listę odtwarzania</translation>
 <translation id="4159681666905192102">To jest konto dla dzieci, którym zarządzają <ph name="CUSTODIAN_EMAIL" /> i <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Zaloguj się na kolejne konto</translation>
 <translation id="4219614746733932747">Jeśli opcja jest włączona, Blink wykorzystuje mechanizm powiększenia, by skalować zawartość odpowiednio do współczynnika skali urządzenia.</translation>
 <translation id="4220865787605972627">Zezwalaj na kalibrację kolorów, jeśli ekran ją obsługuje.</translation>
-<translation id="4233506668751282421">Włącz dźwięk przy udostępnianiu pulpitu</translation>
 <translation id="4235200303672858594">Cały ekran</translation>
 <translation id="4235813040357936597">Dodaj konto dla <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Program <ph name="PRODUCT_NAME" /> nie może być wyświetlany w tym języku</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Instalacja ustawień zasad na urządzeniu nie powiodła się: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Witryna <ph name="FULLSCREEN_ORIGIN" /> chce wyłączyć kursor myszy.</translation>
 <translation id="424546999567421758">Wykryto wysokie użycie dysku</translation>
-<translation id="4247072926966606568">Gdy ta flaga jest włączona, w oknie selektora udostępniania pulpitu widoczna jest opcja udostępniania dźwięku.</translation>
 <translation id="424726838611654458">Zawsze otwieraj w Adobe Reader</translation>
 <translation id="4249248555939881673">Czekam na połączenie z siecią...</translation>
 <translation id="4249373718504745892">Ta strona ma zablokowany dostęp do kamery i mikrofonu.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">Dodaj adres</translation>
 <translation id="4359408040881008151">Zainstalowane ponieważ jest wymagane przez inne rozszerzenia.</translation>
 <translation id="4361190688154226069">Oparte na prostokątach kierowanie w widokach</translation>
-<translation id="4363372140743955595">Ponowne uwierzytelnianie menedżera haseł</translation>
 <translation id="4364444725319685468">Plik <ph name="FILE_NAME" /> został pobrany</translation>
 <translation id="4364830672918311045">Wyświetlaj powiadomienia</translation>
 <translation id="4365673000813822030">Ups, synchronizacja przestała działać.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">Autouzupełnianie – informacje</translation>
 <translation id="4449996769074858870">Ta karta odtwarza dźwięk.</translation>
 <translation id="4450974146388585462">Diagnozuj</translation>
+<translation id="4452426408005428395">Nieważne</translation>
 <translation id="4454939697743986778">Ten certyfikat został zainstalowany przez administratora systemu.</translation>
 <translation id="445923051607553918">Połącz się z siecią Wi-Fi</translation>
 <translation id="4462159676511157176">Własne serwery nazw</translation>
@@ -2470,7 +2469,7 @@
 <translation id="4558426062282641716">Przesłano prośbę o pozwolenie na automatyczne uruchamianie</translation>
 <translation id="4563210852471260509">Początkowy język wprowadzania: chiński</translation>
 <translation id="456664934433279154">Określa, czy używać widoków zestawu narzędzi w oparciu o okna aplikacji Chrome.</translation>
-<translation id="4566767428015023961">Podświetl wskaźnik myszy</translation>
+<translation id="4566767428015023961">Podświetlaj wskaźnik myszy</translation>
 <translation id="4569998400745857585">Menu zawierające ukryte rozszerzenia</translation>
 <translation id="4570444215489785449">Od teraz możesz w każdej chwili zdalnie zablokować to urządzenie w Menedżerze Chrome.</translation>
 <translation id="4572659312570518089">Podczas łączenia się z urządzeniem „<ph name="DEVICE_NAME" />” zostało anulowane uwierzytelnianie.</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">Aktywacja jednorazowa: wpisz hasło, by aktywować funkcję Smart Lock na urządzeniu <ph name="DEVICE_TYPE" />. Dzięki niej Twój telefon będzie odblokowywać to urządzenie bez konieczności wpisywania hasła. Aby wyłączyć tę funkcję lub zmienić jej ustawienia, otwórz ustawienia urządzenia <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikacje i rozszerzenia może zmieniać tylko menedżer (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Konwerter EMF</translation>
-<translation id="4601250583401186741">Sparuj z kontrolerem</translation>
 <translation id="4602466770786743961">Zawsze zezwalaj witrynie <ph name="HOST" /> na dostęp do kamery i mikrofonu</translation>
 <translation id="4605399136610325267">Brak połączenia z internetem</translation>
 <translation id="4608500690299898628">&amp;Znajdź</translation>
@@ -2690,7 +2688,7 @@
 <translation id="488785315393301722">Pokaż szczegóły</translation>
 <translation id="4888510611625056742">Karta 2</translation>
 <translation id="4890284164788142455">Tajski</translation>
-<translation id="4893336867552636863">Spowoduje to trwałe usunięcie danych przeglądarki z tego urządzenia.</translation>
+<translation id="4893336867552636863">Spowoduje to trwałe usunięcie danych przeglądania z tego urządzenia.</translation>
 <translation id="4895877746940133817"><ph name="TYPE_1" />, <ph name="TYPE_2" />, <ph name="TYPE_3" /></translation>
 <translation id="4899376560703610051"><ph name="DEVICE_TYPE" /> został zablokowany ręcznie. Aby go odblokować, musisz wpisać hasło.</translation>
 <translation id="4899816749097347786">Włącz eksperymentalną funkcję WebAssembly na stronach internetowych.</translation>
@@ -2781,6 +2779,7 @@
 <translation id="5039804452771397117">Zezwalaj</translation>
 <translation id="5045550434625856497">Nieprawidłowe hasło</translation>
 <translation id="5048179823246820836">Nordycki</translation>
+<translation id="5048294425697652159">Włącz Quirks Client do kalibracji ekranu.</translation>
 <translation id="5053604404986157245">Losowo generowane hasło TPM jest niedostępne. Ta sytuacja jest normalna po użyciu funkcji Powerwash.</translation>
 <translation id="5053803681436838483">Nowy adres dostawy...</translation>
 <translation id="5055309315264875868">Pokaż link na stronie ustawień menedżera haseł, który pozwala na zarządzanie online Twoimi zsynchronizowanymi hasłami.</translation>
@@ -2879,7 +2878,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Wymóg używania gestów do obsługi odtwarzania multimediów</translation>
 <translation id="5189060859917252173">Certyfikat „<ph name="CERTIFICATE_NAME" />” reprezentuje urząd certyfikacji.</translation>
-<translation id="5196117515621749903">Załaduj ponownie, ignorując pamięć podręczną</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronizacja zakończona.</translation>
@@ -2894,6 +2892,7 @@
 <translation id="521582610500777512">Zdjęcie zostało odrzucone</translation>
 <translation id="5218183485292899140">szwajcarski francuski</translation>
 <translation id="5218766986344577658">Wyskakujące okienko z możliwością wyboru linku</translation>
+<translation id="5220992698394817380">Włącz menu wyboru IME</translation>
 <translation id="5222676887888702881">Wyloguj się</translation>
 <translation id="5225324770654022472">Pokaż skrót do aplikacji</translation>
 <translation id="5227536357203429560">Dodaj sieć prywatną</translation>
@@ -2936,6 +2935,7 @@
 <translation id="5271247532544265821">Przełącz język chiński uproszczony/tradycyjny</translation>
 <translation id="5271549068863921519">Zapisz hasło</translation>
 <translation id="5273628206174272911">Eksperymentalna nawigacja po historii w odpowiedzi na dalekie przewinięcie w poziomie.</translation>
+<translation id="5275194674756975076">OK, odśwież</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> z tej witryny</translation>
 <translation id="5275973617553375938">Pliki odzyskane z Dysku Google</translation>
 <translation id="527605719918376753">Wycisz kartę</translation>
@@ -3009,6 +3009,7 @@
 <translation id="5368720394188453070">Twój telefon jest zablokowany. Aby uzyskać do niego dostęp, odblokuj go.</translation>
 <translation id="5369927996833026114">Odkryj Menu z aplikacjami Chrome</translation>
 <translation id="5370819323174483825">&amp;Odśwież</translation>
+<translation id="5372066618989754822">Włącz dostęp do nowego menu IME na stronie ustawień języka.</translation>
 <translation id="5372529912055771682">Ta wersja systemu operacyjnego nie obsługuje podanego trybu rejestrowania. Upewnij się, że używasz najnowszej wersji i spróbuj ponownie.</translation>
 <translation id="5374359983950678924">Zmień zdjęcie</translation>
 <translation id="5376169624176189338">Kliknij, aby przejść wstecz. Przytrzymaj, aby wyświetlić historię</translation>
@@ -3194,6 +3195,7 @@
 <translation id="5626134646977739690">Nazwa:</translation>
 <translation id="5627086634964711283">Kontroluje także to, jaka strona wyświetla się po kliknięciu przycisku strony startowej.</translation>
 <translation id="5627259319513858869">Włącz używanie eksperymentalnych funkcji kanw, które wciąż są opracowywane.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design w górnym interfejsie przeglądarki</translation>
 <translation id="5633060877636360447">Spowoduje to trwałe usunięcie co najmniej <ph name="TOTAL_COUNT" /> elementów z tego urządzenia, lecz nie spowoduje usunięcia zsynchronizowanych elementów z pozostałych urządzeń.</translation>
 <translation id="5636996382092289526">Skorzystanie z <ph name="NETWORK_ID" /> może wymagać <ph name="LINK_START" />wejścia na stronę logowania się do sieci<ph name="LINK_END" />, która otworzy się automatycznie za kilka sekund. Jeśli tak się nie stanie, nie będzie można użyć tej sieci.</translation>
@@ -3221,9 +3223,10 @@
 <translation id="5677928146339483299">Zablokowane</translation>
 <translation id="5678550637669481956">Uprawnienia do zapisu i odczytu nośnika <ph name="VOLUME_NAME" /> zostały przyznane.</translation>
 <translation id="567881659373499783">Wersja <ph name="PRODUCT_VERSION" /></translation>
-<translation id="5678862612529498267">Podświetl obiekt wybrany za pomocą klawiatury</translation>
+<translation id="5678862612529498267">Podświetlaj obiekt wybrany za pomocą klawiatury</translation>
 <translation id="5678955352098267522">Odczyt Twoich danych na stronie <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrowanie tekstowe w trybie przeglądu</translation>
+<translation id="5683818630978268777">Eksperymentalny interfejs blokady klawiatury</translation>
 <translation id="5684661240348539843">Identyfikator zasobu</translation>
 <translation id="569068482611873351">Importuj...</translation>
 <translation id="56907980372820799">Połącz dane</translation>
@@ -3562,7 +3565,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">Korekcja dotyku</translation>
 <translation id="6218364611373262432">Resetuj stan instalacji Menu z aplikacjami przy każdym ponownym uruchomieniu. Jeśli jest ustawiona ta flaga, Chrome po żadnym uruchomieniu nie będzie tej instalacji pamiętać. To ustawienie służy do testowania procesu instalacji Menu z aplikacjami.</translation>
-<translation id="6219616557885484178">Na Twoim urządzeniu <ph name="DEVICE_TYPE" /> jest dostępnych ponad milion aplikacji i gier z Google Play.</translation>
+<translation id="6219616557885484178">Wybieraj spośród ponad miliona aplikacji i gier dostępnych w Google Play i korzystaj z nich na swoim urządzeniu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Błąd podczas ładowania rozszerzenia</translation>
 <translation id="6221345481584921695">Bezpieczne przeglądanie Google <ph name="BEGIN_LINK" />wykryło ostatnio złośliwe oprogramowanie<ph name="END_LINK" /> na <ph name="SITE" />. Strony, które zazwyczaj są bezpieczne, zostają czasem zainfekowane destrukcyjnym oprogramowaniem. Źródłem złośliwej zawartości jest <ph name="SUBRESOURCE_HOST" /> – znany dystrybutor złośliwego oprogramowania.</translation>
@@ -3689,7 +3692,6 @@
 <translation id="6420676428473580225">Dodaj do pulpitu</translation>
 <translation id="6422329785618833949">Zdjęcie odwrócone</translation>
 <translation id="642282551015776456">Tej nazwy nie można używać jako nazwy pliku ani katalogu.</translation>
-<translation id="642322423610046417">Otwórz menu kontekstowe (kliknij prawym przyciskiem myszy), by usunąć niepotrzebne rozszerzenia.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Czy Adobe Reader ma być domyślną przeglądarką dokumentów PDF?</translation>
 <translation id="6425092077175753609">Styl Material</translation>
@@ -3760,6 +3762,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Eksperymentalny tryb pełnego ekranu z blokadą klawiatury, który wymaga od użytkownika przytrzymania Esc, by zamknąć pełny ekran.</translation>
 <translation id="6527303717912515753">Udostępnij</translation>
 <translation id="6528546217685656218">Klucz prywatny tego certyfikatu klienta jest nieprawidłowy lub nie istnieje.</translation>
 <translation id="653019979737152879">Synchronizuję <ph name="FILE_NAME" />...</translation>
@@ -3939,6 +3942,7 @@
 <translation id="6825883775269213504">Rosyjski</translation>
 <translation id="6827236167376090743">Ten film będzie odtwarzany bez końca.</translation>
 <translation id="6828153365543658583">Ogranicz logowanie do następujących użytkowników:</translation>
+<translation id="6828860976882136098">Nie można skonfigurować automatycznych aktualizacji dla wszystkich użytkowników (błąd wykonania procesu wstępnego: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Uzyskaj pomoc związaną z urządzeniem <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Zarejestruj się w organizacji</translation>
 <translation id="6830590476636787791">Animowane przejścia w samouczku po pierwszym uruchomieniu</translation>
@@ -3961,7 +3965,6 @@
 <translation id="6860427144121307915">Otwórz na karcie</translation>
 <translation id="6862635236584086457">Wszystkie pliki przechowywane w tym folderze są automatycznie zapisywane online</translation>
 <translation id="6865313869410766144">Autouzupełnianie danych formularzy</translation>
-<translation id="6865319096921627602">Włącza jednolity strumień multimediów na urządzeniu z Androidem.</translation>
 <translation id="6867678160199975333">Przełącz profil na: <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Zaznaczone pole wyboru</translation>
 <translation id="6870130893560916279">Klawiatura ukraińska</translation>
@@ -4055,6 +4058,7 @@
 <translation id="7006017748900345484">Programowy koder/dekoder wideo H.264 w WebRTC</translation>
 <translation id="7006634003215061422">Dolny margines</translation>
 <translation id="7006844981395428048">Plik dźwiękowy ($1)</translation>
+<translation id="7008270479623533562">Aby użyć tego rozszerzenia, musisz odświeżyć stronę. Jeśli chcesz, by uruchamiało się ono automatycznie na tej stronie, kliknij ikonę rozszerzenia prawym przyciskiem myszy.</translation>
 <translation id="7009045250432250765">Autouzupełnianie po jednym kliknięciu</translation>
 <translation id="7010160495478792664">Włącz przyspieszanie sprzętowe dekodowania filmów, jeśli jest dostępne.</translation>
 <translation id="7010400591230614821">Agresywna strategia zwalniania kart</translation>
@@ -4219,7 +4223,6 @@
 <translation id="7256710573727326513">Otwórz na karcie</translation>
 <translation id="7257173066616499747">Sieci Wi-Fi</translation>
 <translation id="7257666756905341374">Odczyt danych, które kopiujesz i wklejasz</translation>
-<translation id="7260002739296185724">Włącz użycie AVFoundation do przechwytywania obrazu wideo i monitorowania urządzeń wideo w systemie Mac OS X 10.7 lub nowszym. W przeciwnym razie zostanie użyty moduł QTKit.</translation>
 <translation id="7260504762447901703">Anuluj dostęp</translation>
 <translation id="7262004276116528033">Ta usługa logowania pochodzi z domeny <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Wyjątki dostępu przez wtyczkę spoza piaskownicy</translation>
@@ -4257,7 +4260,6 @@
 <translation id="7314278895724341067">Włącz strony offline na stronie nowej karty</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (bieżący)</translation>
 <translation id="7321545336522791733">Serwer niedostępny</translation>
-<translation id="7324841169865301118">Pozwala użytkownikowi wybrać kartę do udostępniania pulpitu.</translation>
 <translation id="7325437708553334317">Rozszerzenie High Contrast</translation>
 <translation id="7326565110843845436">Klikanie trzema palcami na touchpadzie</translation>
 <translation id="73289266812733869">Niezaznaczony</translation>
@@ -5000,7 +5002,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Autor zdjęcia</translation>
 <translation id="8428213095426709021">Ustawienia</translation>
-<translation id="8432590265309978927">Bardzo eksperymentalna obsługa renderowania elementów iframe z różnych witryn w osobnych procesach.</translation>
 <translation id="8432745813735585631">Klawiatura amerykańska (Colemak)</translation>
 <translation id="8434177709403049435">&amp;Kodowanie</translation>
 <translation id="8434480141477525001">Port debugowania NaCl</translation>
@@ -5197,7 +5198,6 @@
 <translation id="8713979477561846077">Włącz autokorektę klawiatury fizycznej dla klawiatury USA – sugestie będą wyświetlane podczas pisania na klawiaturze fizycznej.</translation>
 <translation id="871476437400413057">Zapisane hasła Google</translation>
 <translation id="8714838604780058252">Obraz w tle</translation>
-<translation id="8716065142695381595">Włącza jednolity strumień multimediów (na urządzenia z Androidem i komputery) na urządzeniu z Androidem.</translation>
 <translation id="8722421161699219904">Amerykańska klawiatura międzynarodowa</translation>
 <translation id="872451400847464257">Edytuj wyszukiwarkę</translation>
 <translation id="8724859055372736596">&amp;Pokaż w folderze</translation>
@@ -5217,6 +5217,7 @@
 <translation id="8737685506611670901">Otwierać linki protokołu <ph name="PROTOCOL" /> zamiast modułu <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Menedżer połączeń</translation>
 <translation id="8741881454555234096">Doprecyzuj pozycję gestu dotykowego w celu zrekompensowania mniejszej rozdzielczości dotyku w porównaniu z myszą.</translation>
+<translation id="8743712320294854924">Pokaż rozwinięte opcje wprowadzania na półce.</translation>
 <translation id="874420130893181774">Tradycyjna metoda wprowadzania Pinyin</translation>
 <translation id="8744525654891896746">Wybierz awatar dla tego użytkownika nadzorowanego.</translation>
 <translation id="8744641000906923997">Rōmaji</translation>
@@ -5286,6 +5287,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Przełączanie trybu klawisza Shift</translation>
 <translation id="8852742364582744935">Zostały dodane następujące aplikacje i rozszerzenia:</translation>
+<translation id="8853611566624224021">Włącz pobieranie plików wyświetlacza icc z Quirks Server do kalibracji kolorów wyświetlacza.</translation>
 <translation id="885381502874625531">Klawiatura białoruska</translation>
 <translation id="8856844195561710094">Zatrzymywanie wykrywania urządzeń Bluetooth nie powiodło się.</translation>
 <translation id="885701979325669005">Pamięć</translation>
@@ -5335,7 +5337,6 @@
 <translation id="8925458182817574960">&amp;Ustawienia</translation>
 <translation id="8926389886865778422">Nie pytaj ponownie</translation>
 <translation id="8926518602592448999">Wyłącz rozszerzenia trybu programisty</translation>
-<translation id="8929454297483336498">Użycie interfejsów API AVFoundation zamiast QTKit w systemie Mac OS X</translation>
 <translation id="8931394284949551895">Nowe urządzenia</translation>
 <translation id="8932730422557198035">Używaj Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Pokaż w Finderze</translation>
@@ -5349,6 +5350,7 @@
 <translation id="894360074127026135">Dostęp międzynarodowy firmy Netscape</translation>
 <translation id="8944779739948852228">Wykryto drukarkę</translation>
 <translation id="8946359700442089734">Funkcje debugowania nie zostały w pełni włączone na urządzeniu <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Włącz obsługę WebUSB.</translation>
 <translation id="89515141420106838">Włącza aplikację Galeria Chrome Web Store do obsługi sterowników drukarek. Aplikacja ta wyszukuje w Chrome Web Store rozszerzenia, które obsługują drukowanie na drukarce USB z konkretnym identyfikatorem USB.</translation>
 <translation id="895347679606913382">Rozpoczynanie...</translation>
 <translation id="8954952943849489823">Przenoszenie nie powiodło się, nieoczekiwany błąd: $1</translation>
@@ -5492,6 +5494,7 @@
 <translation id="9154194610265714752">Zaktualizowano</translation>
 <translation id="9154418932169119429">Ten obraz nie jest dostępny offline.</translation>
 <translation id="91568222606626347">Utwórz skrót...</translation>
+<translation id="9157697743260533322">Nie można skonfigurować automatycznych aktualizacji dla wszystkich użytkowników (błąd uruchomienia procesu wstępnego: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ups! Podczas uwierzytelniania wystąpił problem z komunikacją sieciową. Sprawdź połączenie z siecią i spróbuj ponownie.</translation>
 <translation id="9159562891634783594">Włącza rejestrację niezarejestrowanych drukarek w chmurze na podglądzie wydruku.</translation>
 <translation id="9166510596677678112">Wyślij e-maila do tej osoby</translation>
@@ -5503,7 +5506,6 @@
 <translation id="9170848237812810038">&amp;Cofnij</translation>
 <translation id="9170884462774788842">Inny program na Twoim komputerze dodał motyw, który może zmienić działanie Chrome.</translation>
 <translation id="9177499212658576372">Obecnie masz połączenie z siecią: <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Zarządzaj kartami kredytowymi</translation>
 <translation id="917858577839511832">Negocjowanie z DTLS 1.2 dla WebRTC</translation>
 <translation id="917861274483335838">Zarządzaj blokowaniem wtyczek...</translation>
 <translation id="9179348476548754105">Jak menedżer haseł obsługuje autouzupełnianie danych uwierzytelniających synchronizacji tylko na stronach transakcyjnych z ponownym uwierzytelnianiem.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 633374d..01f5f8f 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -159,7 +159,6 @@
     Será necessário configurar seu perfil novamente.<ph name="BR" />
     <ph name="BR" />
     Na próxima tela, envie um feedback para nos ajudar a corrigir o problema.</translation>
-<translation id="1216954813581739968">Ativar guia para Compartilhamento da área de trabalho.</translation>
 <translation id="121827551500866099">Mostrar todos os downloads...</translation>
 <translation id="122082903575839559">Algoritmo de assinatura do certificado</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 com criptografia RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL com %s no lugar da consulta</translation>
 <translation id="1546280085599573572">Esta extensão alterou a página que é exibida quando você clica no botão "Página inicial".</translation>
 <translation id="1546795794523394272">Bem-vindo(a) ao Chromebox para videoconferências!</translation>
+<translation id="1547572086206517271">Atualização necessária</translation>
 <translation id="1547964879613821194">Inglês canadense</translation>
 <translation id="1548132948283577726">Sites que nunca salvam senhas serão mostrados aqui.</translation>
 <translation id="1549045574060481141">Confirmar download</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Permite o armazenamento local de páginas visitadas recentemente para uso off-line. O recurso "Páginas off-line" precisa estar ativado.</translation>
 <translation id="1891668193654680795">Confiar neste certificado para identificar os criadores do software.</translation>
 <translation id="189210018541388520">Abrir tela cheia</translation>
+<translation id="1892754076732315533">Uma nova experiência do usuário simplificada quando se entra nos estados de tela cheia acionada por página ou de bloqueio do ponteiro do mouse.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Falha no fluxo de aprovisionamento da nuvem</translation>
 <translation id="189358972401248634">Outros idiomas</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Acessar seus dispositivos Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Acessado pela última vez:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> será reiniciado e redefinido temporariamente</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Gerenciador de tarefas</translation>
 <translation id="2887525882758501333">Documento PDF</translation>
 <translation id="2888807692577297075">Nenhum item corresponde a &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">Não agora</translation>
 <translation id="3480892288821151001">Encaixar janela à esquerda</translation>
 <translation id="3481915276125965083">Os seguintes pop-ups foram bloqueados nesta página:</translation>
+<translation id="3482214069979148937">Mantenha |<ph name="ACCELERATOR" />| pressionado para sair do modo tela cheia</translation>
 <translation id="3484869148456018791">Obter novo certificado</translation>
 <translation id="3487007233252413104">função anônima</translation>
 <translation id="348771913750618459">fluxos de login baseados em iframe</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">Restrições de nome do certificado</translation>
 <translation id="3595596368722241419">Bateria carregada</translation>
 <translation id="3600456501114769456">O acesso aos arquivos locais de seu dispositivo foi desativado pelo administrador.</translation>
-<translation id="3601395307734599350">Todas as suas extensões estão aqui</translation>
 <translation id="3603385196401704894">Francês canadense</translation>
 <translation id="3603622770190368340">Obter certificado de rede</translation>
 <translation id="3605780360466892872">Esporte fino</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">Usar padrão global (Detectar)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 guia}one{# guias}other{# guias}}</translation>
 <translation id="4154664944169082762">Assinaturas digitais</translation>
-<translation id="4157188838832721931">Desativar a solicitação da senha do SO do usuário antes de revelar senhas na página "Senhas".</translation>
 <translation id="4157869833395312646">Criptografia de entrada para servidor da Microsoft </translation>
 <translation id="4158739975813877944">Abrir lista de reprodução</translation>
 <translation id="4159681666905192102">Esta é uma conta para crianças gerenciada por <ph name="CUSTODIAN_EMAIL" /> e <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">Fazer login em outra conta</translation>
 <translation id="4219614746733932747">Caso ativado, o Blink usa seu mecanismo de zoom para dimensionar o conteúdo para o fator de escala do dispositivo.</translation>
 <translation id="4220865787605972627">Permitir a calibragem da cor da tela, se compatível com o recurso.</translation>
-<translation id="4233506668751282421">Ativar compartilhamento de áudio para área de trabalho</translation>
 <translation id="4235200303672858594">Tela cheia</translation>
 <translation id="4235813040357936597">Adicionar conta para <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> não pode ser exibido neste idioma</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">Falha ao instalar configurações da política no dispositivo: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> deseja ocultar o cursor do mouse.</translation>
 <translation id="424546999567421758">Detectado alto uso de disco</translation>
-<translation id="4247072926966606568">Quando essa sinalização está ativada, a janela seletora de compartilhamento para área de trabalho permite que o usuário escolha se deseja compartilhar o áudio.</translation>
 <translation id="424726838611654458">Sempre abrir com o Adobe Reader</translation>
 <translation id="4249248555939881673">Aguardando conexão da rede...</translation>
 <translation id="4249373718504745892">Esta página foi impedida de acessar sua câmera e seu microfone.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">Adicionar um endereço</translation>
 <translation id="4359408040881008151">Instalada devido a extensões dependentes.</translation>
 <translation id="4361190688154226069">Segmentação baseada em retângulo para visualizações</translation>
-<translation id="4363372140743955595">Reautenticação do gerenciador de senhas</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> transferido por download</translation>
 <translation id="4364830672918311045">Exibir notificações</translation>
 <translation id="4365673000813822030">Ops, a sincronização parou de funcionar.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">Sobre o preenchimento automático</translation>
 <translation id="4449996769074858870">Esta guia está reproduzindo áudio.</translation>
 <translation id="4450974146388585462">Diagnosticar</translation>
+<translation id="4452426408005428395">Ignorar</translation>
 <translation id="4454939697743986778">Este certificado foi instalado pelo administrador do sistema.</translation>
 <translation id="445923051607553918">Entrar na rede Wi-Fi</translation>
 <translation id="4462159676511157176">Servidores de nome personalizados</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">Ativação única: digite sua senha para ativar o Smart Lock no <ph name="DEVICE_TYPE" />. Com o Smart Lock, seu smartphone desbloqueará esse dispositivo sem uma senha. Para alterar ou desativar esse recurso, acesse as configurações do seu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Apps e extensões só podem ser modificadas pelo gerente (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Conversor de EMF</translation>
-<translation id="4601250583401186741">Parear com um controlador</translation>
 <translation id="4602466770786743961">Sempre permitir que <ph name="HOST" /> acesse sua câmera e seu microfone</translation>
 <translation id="4605399136610325267">Sem conexão à Internet</translation>
 <translation id="4608500690299898628">&amp;Buscar...</translation>
@@ -2781,6 +2779,7 @@
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5045550434625856497">Senha incorreta</translation>
 <translation id="5048179823246820836">Nórdico</translation>
+<translation id="5048294425697652159">Ativa a calibragem de tela para o Cliente Quirks.</translation>
 <translation id="5053604404986157245">A senha do TPM gerada aleatoriamente não está disponível. Isso é normal após um Powerwash.</translation>
 <translation id="5053803681436838483">Novo endereço de envio...</translation>
 <translation id="5055309315264875868">Mostrar um link na página de configurações do gerenciador de senhas para gerenciar suas senhas sincronizadas on-line.</translation>
@@ -2878,7 +2877,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Necessidade de gestos para reprodução de mídia</translation>
 <translation id="5189060859917252173">O certificado "<ph name="CERTIFICATE_NAME" />" representa uma Autoridade de certificação.</translation>
-<translation id="5196117515621749903">Recarregar ignorando o cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronização concluída.</translation>
@@ -2893,6 +2891,7 @@
 <translation id="521582610500777512">A foto foi descartada.</translation>
 <translation id="5218183485292899140">Francês suíço</translation>
 <translation id="5218766986344577658">Menu pop-up de desambiguação de links</translation>
+<translation id="5220992698394817380">Ativar menu IME de permissão</translation>
 <translation id="5222676887888702881">Sair</translation>
 <translation id="5225324770654022472">Mostrar atalho para aplicativos</translation>
 <translation id="5227536357203429560">Adicionar rede privada...</translation>
@@ -2935,6 +2934,7 @@
 <translation id="5271247532544265821">Alternar entre o modo chinês simplificado/tradicional</translation>
 <translation id="5271549068863921519">Salvar senha</translation>
 <translation id="5273628206174272911">Histórico de navegação experimental em resposta à rolagem horizontal.</translation>
+<translation id="5275194674756975076">OK, atualizar</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> desse site</translation>
 <translation id="5275973617553375938">Arquivos recuperados a partir do Google Drive</translation>
 <translation id="527605719918376753">Desativar som da guia</translation>
@@ -3008,6 +3008,7 @@
 <translation id="5368720394188453070">Seu smartphone está bloqueado. Desbloqueie-o para entrar.</translation>
 <translation id="5369927996833026114">Descubra o Iniciador de aplicativos do Google Chrome</translation>
 <translation id="5370819323174483825">&amp;Recarregar</translation>
+<translation id="5372066618989754822">Ativa o acesso ao novo menu IME na página "Configurações de idioma".</translation>
 <translation id="5372529912055771682">O modo de inscrição fornecido não é compatível com esta versão do sistema operacional. Verifique se você está executando a versão mais recente e tente novamente.</translation>
 <translation id="5374359983950678924">Alterar imagem</translation>
 <translation id="5376169624176189338">Clique para voltar, mantenha pressionado para ver o histórico</translation>
@@ -3194,6 +3195,7 @@
 <translation id="5626134646977739690">Nome:</translation>
 <translation id="5627086634964711283">Controla também qual página deve ser exibida quando você clica no botão "Página inicial".</translation>
 <translation id="5627259319513858869">Ativa o uso de recursos experimentais de canvas que ainda estão em desenvolvimento.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design no navegador Chrome</translation>
 <translation id="5633060877636360447">Isso excluirá permanentemente pelo menos <ph name="TOTAL_COUNT" /> itens deste dispositivo, mas não apagará os itens sincronizados a partir de outros dispositivos.</translation>
 <translation id="5636996382092289526">Para usar <ph name="NETWORK_ID" />, talvez seja necessário primeiro <ph name="LINK_START" />visitar a página de login da rede<ph name="LINK_END" />, que abrirá automaticamente em alguns segundos. Se isso não acontecer, significa que a rede não pode ser usada.</translation>
@@ -3224,6 +3226,7 @@
 <translation id="5678862612529498267">Destacar o objeto com o foco de teclado</translation>
 <translation id="5678955352098267522">Leia seus dados em <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtro de texto no modo de visão geral</translation>
+<translation id="5683818630978268777">Interface de usuário experimental de bloqueio de teclado.</translation>
 <translation id="5684661240348539843">Identificador de recurso</translation>
 <translation id="569068482611873351">Importar...</translation>
 <translation id="56907980372820799">Vincular dados</translation>
@@ -3690,7 +3693,6 @@
 <translation id="6420676428473580225">Adicionar à área de trabalho</translation>
 <translation id="6422329785618833949">Foto virada</translation>
 <translation id="642282551015776456">Este não é um nome válido para arquivos ou pastas.</translation>
-<translation id="642322423610046417">Use o menu de contexto (botão direito do mouse) para remover as extensões de que você não precisa.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Usar o Adobe Reader como seu leitor de PDF padrão?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3761,6 +3763,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Uma tela cheia experimental com um modo de bloqueio de teclado que exige que os usuários mantenham a tecla Esc pressionada para sair.</translation>
 <translation id="6527303717912515753">Compartilhar</translation>
 <translation id="6528546217685656218">A chave particular desse certificado do cliente está ausente ou é inválida.</translation>
 <translation id="653019979737152879">Sincronizando <ph name="FILE_NAME" />...</translation>
@@ -3940,6 +3943,7 @@
 <translation id="6825883775269213504">Russo</translation>
 <translation id="6827236167376090743">Este vídeo continuará sendo reproduzido indefinidamente.</translation>
 <translation id="6828153365543658583">Restringir o login para os seguintes usuários:</translation>
+<translation id="6828860976882136098">Falha ao configurar atualizações automáticas para todos os usuários (erro de execução de simulação: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Receber ajuda para o <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registrar na sua organização</translation>
 <translation id="6830590476636787791">Transições animadas no tutorial de primeira execução</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">Abrir em uma guia</translation>
 <translation id="6862635236584086457">Todos os arquivos salvos nessa pasta são salvos em backup on-line automaticamente</translation>
 <translation id="6865313869410766144">Preenchimento automático dos dados do formulário</translation>
-<translation id="6865319096921627602">Ativa o canal de mídia unificada no Android.</translation>
 <translation id="6867678160199975333">Alternar para <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Caixa de seleção marcada</translation>
 <translation id="6870130893560916279">Teclado ucraniano</translation>
@@ -4058,6 +4061,7 @@
 <translation id="7006017748900345484">Codificador/decodificador de vídeo do software H.264 de WebRTC</translation>
 <translation id="7006634003215061422">Margem inferior</translation>
 <translation id="7006844981395428048">Áudio $1</translation>
+<translation id="7008270479623533562">Para executar esta extensão, é necessário atualizar a página. Execute-a automaticamente neste site clicando com o botão direito do mouse no ícone da extensão.</translation>
 <translation id="7009045250432250765">Clique único para preenchimento automático</translation>
 <translation id="7010160495478792664">Decodificação de vídeo acelerada por hardware, quando disponível</translation>
 <translation id="7010400591230614821">Estratégia agressiva de liberação de guia</translation>
@@ -4222,7 +4226,6 @@
 <translation id="7256710573727326513">Abrir em uma guia</translation>
 <translation id="7257173066616499747">Redes Wi-Fi</translation>
 <translation id="7257666756905341374">Ler dados que você copia e cola</translation>
-<translation id="7260002739296185724">Ativar o uso do AVFoundation para captura de vídeo e monitoramento de dispositivos de vídeo no OS X&gt;= 10.7. Se esse uso não for ativado, será usado o QTKit.</translation>
 <translation id="7260504762447901703">Revogar acesso</translation>
 <translation id="7262004276116528033">Este serviço de login é hospedado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Exceções de acesso a plug-in sem sandbox</translation>
@@ -4260,7 +4263,6 @@
 <translation id="7314278895724341067">Ativar páginas "Nova guia" off-line</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (atual)</translation>
 <translation id="7321545336522791733">Servidor inacessível</translation>
-<translation id="7324841169865301118">Permite que o usuário escolha uma guia para compartilhamento da área de trabalho.</translation>
 <translation id="7325437708553334317">Extensão de alto contraste</translation>
 <translation id="7326565110843845436">Clique com três dedos no touchpad</translation>
 <translation id="73289266812733869">Desmarcado</translation>
@@ -5011,7 +5013,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto tirada por</translation>
 <translation id="8428213095426709021">Configurações</translation>
-<translation id="8432590265309978927">Suporte altamente experimental para renderização de iframes de sites cruzados em processos separados.</translation>
 <translation id="8432745813735585631">Teclado americano Colemak</translation>
 <translation id="8434177709403049435">&amp;Codificação</translation>
 <translation id="8434480141477525001">Porta de depuração de Cliente nativo</translation>
@@ -5208,7 +5209,6 @@
 <translation id="8713979477561846077">Ative a correção automática do teclado físico para o teclado americano, que pode fornecer sugestões enquanto você digita no teclado físico.</translation>
 <translation id="871476437400413057">Senhas salvas do Google</translation>
 <translation id="8714838604780058252">Gráficos de segundo plano</translation>
-<translation id="8716065142695381595">Ativa o canal de mídia unificado (Android e desktop) no Android.</translation>
 <translation id="8722421161699219904">Teclado americano internacional</translation>
 <translation id="872451400847464257">Editar mecanismo de pesquisa</translation>
 <translation id="8724859055372736596">&amp;Mostrar na pasta</translation>
@@ -5228,6 +5228,7 @@
 <translation id="8737685506611670901">Abrir links de <ph name="PROTOCOL" /> em vez de <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Refinar a posição de um gesto de toque a fim de compensar toques com baixa resolução em comparação a um mouse.</translation>
+<translation id="8743712320294854924">Mostrar opções de entrada expandidas na estante.</translation>
 <translation id="874420130893181774">Método de entrada Pinyin tradicional</translation>
 <translation id="8744525654891896746">Selecione um avatar para este usuário supervisionado</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5297,6 +5298,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Alternância com a tecla Shift</translation>
 <translation id="8852742364582744935">Os seguintes aplicativos e extensões foram adicionados:</translation>
+<translation id="8853611566624224021">Ativar recuperação de arquivos de exibição icc a partir Servidor Quirks para calibragem de cores da tela.</translation>
 <translation id="885381502874625531">Teclado bielorrusso</translation>
 <translation id="8856844195561710094">Falha ao interromper a descoberta de dispositivos bluetooth.</translation>
 <translation id="885701979325669005">Armazenamento</translation>
@@ -5346,7 +5348,6 @@
 <translation id="8925458182817574960">&amp;Configurações</translation>
 <translation id="8926389886865778422">Não perguntar novamente</translation>
 <translation id="8926518602592448999">Desativar extensões no modo de desenvolvedor</translation>
-<translation id="8929454297483336498">Uso das APIs do Mac OS X AVFoundations em vez do QTKit</translation>
 <translation id="8931394284949551895">Novos dispositivos</translation>
 <translation id="8932730422557198035">Usar a API Android Midi</translation>
 <translation id="8933960630081805351">&amp;Mostrar no Finder</translation>
@@ -5360,6 +5361,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Impressora detectada</translation>
 <translation id="8946359700442089734">Os recursos de depuração não foram completamente ativados neste dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Ativa a compatibilidade com WebUSB.</translation>
 <translation id="89515141420106838">Ativa o aplicativo Galeria da Chrome Web Store para drivers de impressora. O aplicativo procura na Chrome Web Store por extensões que sejam compatíveis com a impressão a partir de uma impressora USB com código USB específico.</translation>
 <translation id="895347679606913382">Iniciando...</translation>
 <translation id="8954952943849489823">Falha na transferência, erro inesperado: $1</translation>
@@ -5503,6 +5505,7 @@
 <translation id="9154194610265714752">Atualizado</translation>
 <translation id="9154418932169119429">Esta imagem não está disponível offline.</translation>
 <translation id="91568222606626347">Criar atalho...</translation>
+<translation id="9157697743260533322">Falha ao configurar atualizações automáticas para todos os usuários (erro de inicialização de simulação: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ops!  Ocorreu um problema de comunicação de rede durante a autenticação. Verifica sua conexão de rede e tente novamente.</translation>
 <translation id="9159562891634783594">Ativar o registro de impressoras na nuvem não registradas a partir da visualização de impressão.</translation>
 <translation id="9166510596677678112">Enviar e-mail para esta pessoa</translation>
@@ -5514,7 +5517,6 @@
 <translation id="9170848237812810038">&amp;Desfazer</translation>
 <translation id="9170884462774788842">Outro programa em seu computador adicionou um tema que pode mudar a forma como o Google Chrome funciona.</translation>
 <translation id="9177499212658576372">No momento, você está conectado à rede <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gerenciar cartões de crédito</translation>
 <translation id="917858577839511832">Negociação com DTLS 1.2 para WebRTC</translation>
 <translation id="917861274483335838">Gerenciar o bloqueio de plug-in...</translation>
 <translation id="9179348476548754105">Como o gerenciador de senhas gerencia o preenchimento automático da credencial de sincronização apenas em páginas de reautenticação transacional.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 0ba0776..17bdfbf 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -159,7 +159,6 @@
     Tem de configurar novamente o seu perfil.<ph name="BR" />
     <ph name="BR" />
     No ecrã seguinte, envie os seus comentários para nos ajudar a resolver o problema.</translation>
-<translation id="1216954813581739968">Ativar separador para partilha do ambiente de trabalho</translation>
 <translation id="121827551500866099">Mostrar todas as  transferências...</translation>
 <translation id="122082903575839559">Algoritmo de assinatura do certificado</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 Com encriptação RSA</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL com %s em vez da consulta</translation>
 <translation id="1546280085599573572">Esta extensão alterou a página apresentada quando clica no botão Página inicial.</translation>
 <translation id="1546795794523394272">Bem-vindo ao Chromebox para reuniões!</translation>
+<translation id="1547572086206517271">Atualização necessária</translation>
 <translation id="1547964879613821194">Inglês canadiano</translation>
 <translation id="1548132948283577726">Os sites que nunca guardam a palavra-passe irão aparecer aqui.</translation>
 <translation id="1549045574060481141">Confirmar Transferência</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">Ativar o armazenamento local de páginas visitadas recentemente para utilização offline. A opção Páginas offline tem de estar ativada.</translation>
 <translation id="1891668193654680795">Confiar neste certificado para identificar fabricantes de software.</translation>
 <translation id="189210018541388520">Abrir ecrã inteiro</translation>
+<translation id="1892754076732315533">Uma nova experiência do utilizador simplificada ao entrar nos estados de ecrã inteiro ou de bloqueio do ponteiro do rato acionados pela página.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">O fluxo de administração da nuvem falhou</translation>
 <translation id="189358972401248634">Outros idiomas</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">Aceder aos seus dispositivos Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Último acesso:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> é reiniciado e reposto momentaneamente</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Gestor de tarefas</translation>
 <translation id="2887525882758501333">Documento PDF</translation>
 <translation id="2888807692577297075">Nenhum item corresponde a &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Agora não</translation>
 <translation id="3480892288821151001">Colocar janela à esquerda</translation>
 <translation id="3481915276125965083">Os seguintes pop-ups foram bloqueados nesta página:</translation>
+<translation id="3482214069979148937">Premir sem soltar |<ph name="ACCELERATOR" />| para sair do ecrã inteiro</translation>
 <translation id="3484869148456018791">Obter novo certificado</translation>
 <translation id="3487007233252413104">função anónima</translation>
 <translation id="348771913750618459">Fluxos de início de sessão baseados em iframe</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Restrições de nome do certificado</translation>
 <translation id="3595596368722241419">Bateria carregada</translation>
 <translation id="3600456501114769456">O acesso a ficheiros locais no seu dispositivo móvel foi desativado pelo seu administrador.</translation>
-<translation id="3601395307734599350">Todas as suas extensões estão aqui</translation>
 <translation id="3603385196401704894">Francês canadiano</translation>
 <translation id="3603622770190368340">Obter certificado de rede</translation>
 <translation id="3605780360466892872">Empresário</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Utilizar predefinição global (Detetar)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 separador}other{# separadores}}</translation>
 <translation id="4154664944169082762">Impressões digitais</translation>
-<translation id="4157188838832721931">Desative o pedido de palavra-passe do SO ao utilizador antes de revelar palavras-passe na página de palavras-passe.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Abrir lista de reprodução</translation>
 <translation id="4159681666905192102">Esta é uma conta para crianças gerida por <ph name="CUSTODIAN_EMAIL" /> e <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Iniciar sessão com outra conta</translation>
 <translation id="4219614746733932747">Se ativado, o Blink utiliza o respetivo mecanismo de zoom para redimensionar o conteúdo para o fator de escala do dispositivo.</translation>
 <translation id="4220865787605972627">Permitir a calibração de cores do ecrã se o ecrã suportar a funcionalidade.</translation>
-<translation id="4233506668751282421">Ativar áudio para partilha do ambiente de trabalho</translation>
 <translation id="4235200303672858594">Ecrã inteiro</translation>
 <translation id="4235813040357936597">Adicionar conta para <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Não é possível apresentar o <ph name="PRODUCT_NAME" /> neste idioma</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Falha ao instalar as definições da política no dispositivo: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> pretende desativar o cursor do rato.</translation>
 <translation id="424546999567421758">Detetada elevada utilização do disco</translation>
-<translation id="4247072926966606568">Quando este sinalizador está ativado, a janela do selecionador da partilha do ambiente de trabalho permite que o utilizador escolha se pretende partilhar o áudio.</translation>
 <translation id="424726838611654458">Sempre aberto no Adobe Reader</translation>
 <translation id="4249248555939881673">A aguardar ligação à rede...</translation>
 <translation id="4249373718504745892">Esta página foi impedida de aceder à sua câmara e microfone.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Adicionar um endereço</translation>
 <translation id="4359408040881008151">Instalada devido a extensão(ões) dependente(s).</translation>
 <translation id="4361190688154226069">Atribuição do destino com base no retângulo nas vistas</translation>
-<translation id="4363372140743955595">Reautenticação do gestor de aplicações</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> transferido</translation>
 <translation id="4364830672918311045">Apresentar notificações</translation>
 <translation id="4365673000813822030">Ups, a Sincronização deixou de funcionar.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">Acerca do preenchimento automático</translation>
 <translation id="4449996769074858870">Este separador está a reproduzir áudio.</translation>
 <translation id="4450974146388585462">Diagnosticar</translation>
+<translation id="4452426408005428395">Ignorar</translation>
 <translation id="4454939697743986778">Este certificado foi instalado pelo seu administrador do sistema.</translation>
 <translation id="445923051607553918">Ligar a uma rede Wi-Fi</translation>
 <translation id="4462159676511157176">Servidores de nome personalizado</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">Ativação única: introduza a sua palavra-passe para ativar o Smart Lock neste <ph name="DEVICE_TYPE" />. Com o Smart Lock, o seu telemóvel desbloqueia este dispositivo sem necessitar de palavra-passe. Para alterar ou desativar esta funcionalidade, aceda às definições do seu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Apenas o gestor (<ph name="CUSTODIAN_NAME" />) pode modificar as aplicações e as extensões.</translation>
 <translation id="4601242977939794209">Conversor EMF</translation>
-<translation id="4601250583401186741">Sincronizar com um controlador</translation>
 <translation id="4602466770786743961">Permitir sempre que <ph name="HOST" /> aceda à sua câmara e microfone</translation>
 <translation id="4605399136610325267">A internet não está ligada</translation>
 <translation id="4608500690299898628">&amp;Localizar...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">Permitir</translation>
 <translation id="5045550434625856497">Palavra-passe incorreta</translation>
 <translation id="5048179823246820836">Nórdico</translation>
+<translation id="5048294425697652159">Ativar Cliente Quirks para calibração do ecrã.</translation>
 <translation id="5053604404986157245">A palavra-passe TPM, gerada aleatoriamente, não está disponível. Esta situação é normal após uma Powerwash.</translation>
 <translation id="5053803681436838483">Nova morada para envio...</translation>
 <translation id="5055309315264875868">Apresentar um link na página das definições do gestor de palavras-passe para gerir as suas palavras-passe sincronizadas online.</translation>
@@ -2881,7 +2880,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Necessidade de gesto para a reprodução de multimédia</translation>
 <translation id="5189060859917252173">O certificado "<ph name="CERTIFICATE_NAME" />" representa uma Autoridade de certificação.</translation>
-<translation id="5196117515621749903">Recarregar, a ignorar cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronização concluída.</translation>
@@ -2896,6 +2894,7 @@
 <translation id="521582610500777512">A fotografia foi rejeitada</translation>
 <translation id="5218183485292899140">Francês suíço</translation>
 <translation id="5218766986344577658">Pop-up de desambiguação de links</translation>
+<translation id="5220992698394817380">Ativar menu IME de opção</translation>
 <translation id="5222676887888702881">Terminar sessão</translation>
 <translation id="5225324770654022472">Mostrar atalho das aplicações</translation>
 <translation id="5227536357203429560">Adicionar rede privada...</translation>
@@ -2938,6 +2937,7 @@
 <translation id="5271247532544265821">Activar/desactivar modo Chinês simplificado/tradicional</translation>
 <translation id="5271549068863921519">Guardar palavra-passe</translation>
 <translation id="5273628206174272911">Navegação no histórico experimental como resposta ao deslocamento horizontal.</translation>
+<translation id="5275194674756975076">OK, atualizar</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> deste site</translation>
 <translation id="5275973617553375938">Ficheiros recuperados do Google Drive</translation>
 <translation id="527605719918376753">Desativar som do separador</translation>
@@ -3011,6 +3011,7 @@
 <translation id="5368720394188453070">O seu telemóvel está bloqueado. Desbloqueie-o para introduzir.</translation>
 <translation id="5369927996833026114">Descubra o Iniciador de Aplicações do Chrome</translation>
 <translation id="5370819323174483825">&amp;Recarregar</translation>
+<translation id="5372066618989754822">Ativar o acesso ao novo menu IME na página Definições de idioma.</translation>
 <translation id="5372529912055771682">O modo de inscrição fornecido não é suportado por esta versão do sistema operativo. Certifique-se de que está a executar a versão mais recente e tente novamente.</translation>
 <translation id="5374359983950678924">Alterar imagem</translation>
 <translation id="5376169624176189338">Clique para retroceder, mantenha premido para ver o histórico</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">Nome:</translation>
 <translation id="5627086634964711283">Também controla a página apresentada quando clica no botão Página Inicial.</translation>
 <translation id="5627259319513858869">Ativa a utilização de funcionalidades de telas experimentais que ainda estão em desenvolvimento.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material design no cromado superior do navegador</translation>
 <translation id="5633060877636360447">Esta ação elimina permanentemente, no mínimo, <ph name="TOTAL_COUNT" /> itens deste dispositivo, mas não limpa os itens sincronizados de outros dispositivos.</translation>
 <translation id="5636996382092289526">Para utilizar <ph name="NETWORK_ID" /> poderá ter primeiro de <ph name="LINK_START" />visitar a página de início de sessão da rede<ph name="LINK_END" />, que será aberta automaticamente dentro de alguns segundos. Se isso não acontecer, a rede não pode ser utilizada.</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">Realçar o objeto com o foco do teclado</translation>
 <translation id="5678955352098267522">Ler os seus dados em <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtragem de texto no Modo de vista geral</translation>
+<translation id="5683818630978268777">IU de bloqueio do teclado experimental.</translation>
 <translation id="5684661240348539843">Identificador de recursos</translation>
 <translation id="569068482611873351">Importar...</translation>
 <translation id="56907980372820799">Associar dados</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">Adicionar ao ambiente de trabalho</translation>
 <translation id="6422329785618833949">Fotografia virada</translation>
 <translation id="642282551015776456">Este nome não pode ser utilizado como um nome de ficheiro ou de pasta</translation>
-<translation id="642322423610046417">Utilize o menu de contexto (clique com o botão direito do rato) para remover as extensões de que não precisa.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Utilizar o Adobe Reader como visualizador de PDF predefinido?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Um modo de ecrã inteiro com bloqueio do teclado experimental em que os utilizadores têm de premir sem soltar a tecla Esc para sair.</translation>
 <translation id="6527303717912515753">Partilhar</translation>
 <translation id="6528546217685656218">A Chave privada para este Certificado de cliente está em falta ou é inválida.</translation>
 <translation id="653019979737152879">A sincronizar <ph name="FILE_NAME" />…</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">Russo</translation>
 <translation id="6827236167376090743">Este vídeo continuará a ser reproduzido durante um tempo indefinido.</translation>
 <translation id="6828153365543658583">Restringir início de sessão para os seguintes utilizadores:</translation>
+<translation id="6828860976882136098">Falha ao configurar atualizações automáticas para todos os utilizadores (erro de execução da verificação prévia: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Obtenha ajuda com o <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Inscrever-se na sua entidade</translation>
 <translation id="6830590476636787791">Transições animadas no tutorial de primeira execução</translation>
@@ -3965,7 +3969,6 @@
 <translation id="6860427144121307915">Abrir num separador</translation>
 <translation id="6862635236584086457">Será efetuada automaticamente uma cópia de segurança online de todos os ficheiros guardados nesta pasta</translation>
 <translation id="6865313869410766144">Dados de formulário de Preenchimento automático</translation>
-<translation id="6865319096921627602">Ativa o pipeline multimédia unificado no Android.</translation>
 <translation id="6867678160199975333">Mudar para <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Caixa de verificação assinalada</translation>
 <translation id="6870130893560916279">Teclado ucraniano</translation>
@@ -4059,6 +4062,7 @@
 <translation id="7006017748900345484">Codificador/descodificador de vídeo de software H.264 WebRTC</translation>
 <translation id="7006634003215061422">Margem inferior</translation>
 <translation id="7006844981395428048">Áudio $1</translation>
+<translation id="7008270479623533562">Para executar esta extensão, tem de atualizar a página. Pode executar automaticamente esta extensão neste site ao clicar com o botão direito do rato no ícone da extensão.</translation>
 <translation id="7009045250432250765">Preenchimento automático com um único clique</translation>
 <translation id="7010160495478792664">Descodificação de vídeo acelerada por hardware quando disponível.</translation>
 <translation id="7010400591230614821">Estratégia agressiva para libertar os separadores</translation>
@@ -4223,7 +4227,6 @@
 <translation id="7256710573727326513">Abrir num separador</translation>
 <translation id="7257173066616499747">Redes Wi-Fi</translation>
 <translation id="7257666756905341374">Ler dados que copia e cola</translation>
-<translation id="7260002739296185724">Ativar a utilização do AVFoundation para captura de vídeo e monitorização de dispositivos de vídeo no OS X &gt;= 10.7. Em alternativa, será utilizado o QTKit.</translation>
 <translation id="7260504762447901703">Revogar acesso</translation>
 <translation id="7262004276116528033">Este serviço de início de sessão é alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Exceções de acesso de plug-in sem isolamento de processos</translation>
@@ -4261,7 +4264,6 @@
 <translation id="7314278895724341067">Ativar páginas offline na página Novo separador</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (atual)</translation>
 <translation id="7321545336522791733">Servidor inacessível</translation>
-<translation id="7324841169865301118">Permite que o utilizador escolha um separador para a partilha do ambiente de trabalho.</translation>
 <translation id="7325437708553334317">Extensão Alto Contraste</translation>
 <translation id="7326565110843845436">Clique de três dedos no touchpad</translation>
 <translation id="73289266812733869">Selecção anulada</translation>
@@ -5011,7 +5013,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Fotografia de</translation>
 <translation id="8428213095426709021">Definições</translation>
-<translation id="8432590265309978927">Suporte altamente experimental para processar iframes entre sites em processos separados.</translation>
 <translation id="8432745813735585631">Teclado americano (Colemak)</translation>
 <translation id="8434177709403049435">&amp;Codificação</translation>
 <translation id="8434480141477525001">Porta de depuração de NaCl</translation>
@@ -5208,7 +5209,6 @@
 <translation id="8713979477561846077">Ative a correção automática do teclado físico para teclado dos EUA, o qual pode fornecer sugestões à medida que escreve no teclado físico.</translation>
 <translation id="871476437400413057">Palavras-passe guardadas do Google</translation>
 <translation id="8714838604780058252">Imagens em segundo plano</translation>
-<translation id="8716065142695381595">Ativa o pipeline multimédia unificado (Android e computador) no Android.</translation>
 <translation id="8722421161699219904">Teclado americano internacional</translation>
 <translation id="872451400847464257">Editar motor de pesquisa</translation>
 <translation id="8724859055372736596">Mo&amp;strar numa Pasta</translation>
@@ -5228,6 +5228,7 @@
 <translation id="8737685506611670901">Abrir links de <ph name="PROTOCOL" /> em vez de <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Refinar a posição de um gesto de toque para compensar os toques de fraca resolução em comparação com os de um rato.</translation>
+<translation id="8743712320294854924">Mostrar opções de introdução expandidas na prateleira.</translation>
 <translation id="874420130893181774">Método de introdução pinyin tradicional</translation>
 <translation id="8744525654891896746">Selecionar um avatar para este utilizador supervisionado</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5297,6 +5298,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Alteração de modo com tecla Shift</translation>
 <translation id="8852742364582744935">Foram adicionadas as seguintes aplicações e extensões:</translation>
+<translation id="8853611566624224021">Ativar a obtenção de ficheiros de visualização icc a partir do Servidor Quirks para calibração da cor do ecrã.</translation>
 <translation id="885381502874625531">Teclado em bielorrusso</translation>
 <translation id="8856844195561710094">Falha ao parar a deteção de aparelhos Bluetooth.</translation>
 <translation id="885701979325669005">Armazenamento</translation>
@@ -5346,7 +5348,6 @@
 <translation id="8925458182817574960">&amp;Definições</translation>
 <translation id="8926389886865778422">Não voltar a perguntar</translation>
 <translation id="8926518602592448999">Desativar as extensões no modo de programador</translation>
-<translation id="8929454297483336498">Utilização de APIs do AVFoundation do Mac OS X como alternativa ao QTKit</translation>
 <translation id="8931394284949551895">Novos dispositivos</translation>
 <translation id="8932730422557198035">Utilizar API Android Midi</translation>
 <translation id="8933960630081805351">Mo&amp;strar no Localizador</translation>
@@ -5360,6 +5361,7 @@
 <translation id="894360074127026135">Step-Up Internacional Netscape</translation>
 <translation id="8944779739948852228">Impressora detetada</translation>
 <translation id="8946359700442089734">As funcionalidades de depuração não foram totalmente ativadas neste dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Ativar suporte para WebUSB.</translation>
 <translation id="89515141420106838">Ativa a aplicação Galeria da Web Store do Chrome para controladores de impressora. A aplicação procura na Web Store do Chrome extensões que suportem a impressão numa impressora USB com um ID USB específico.</translation>
 <translation id="895347679606913382">A iniciar...</translation>
 <translation id="8954952943849489823">Falha ao mover, erro inesperado: $1</translation>
@@ -5503,6 +5505,7 @@
 <translation id="9154194610265714752">Atualizado</translation>
 <translation id="9154418932169119429">Esta imagem não está disponível offline.</translation>
 <translation id="91568222606626347">Criar atalho...</translation>
+<translation id="9157697743260533322">Falha ao configurar atualizações automáticas para todos os utilizadores (erro de inicialização da verificação prévia: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ups! Ocorreu um problema de comunicação com a rede durante a autenticação. Verifique a ligação de rede e tente novamente.</translation>
 <translation id="9159562891634783594">Ative o registo de impressoras na nuvem na pré-visualização da impressão.</translation>
 <translation id="9166510596677678112">Enviar um email para esta pessoa</translation>
@@ -5514,7 +5517,6 @@
 <translation id="9170848237812810038">An&amp;ular</translation>
 <translation id="9170884462774788842">Outro programa do computador adicionou um tema que pode alterar o funcionamento do Chrome.</translation>
 <translation id="9177499212658576372">Está atualmente ligado à rede <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gerir cartões de crédito</translation>
 <translation id="917858577839511832">Negociação com o DTLS 1.2 para o WebRTC</translation>
 <translation id="917861274483335838">Gerir bloqueio de plug-ins...</translation>
 <translation id="9179348476548754105">A forma como o gestor de palavras-passe processa o preenchimento automático da credencial de sincronização apenas para páginas de reautenticação transacionais.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index b965eda..598455f 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -24,6 +24,7 @@
 <translation id="1035590878859356651">Marcați această pagină...</translation>
 <translation id="1036348656032585052">Dezactivează</translation>
 <translation id="1036511912703768636">Accesează oricare dintre aceste dispozitive USB</translation>
+<translation id="1036982837258183574">Apasă pe |<ph name="ACCELERATOR" />| pentru a ieși din ecranul complet</translation>
 <translation id="1038168778161626396">Numai cifrare</translation>
 <translation id="1042174272890264476">Computerul este dotat, de asemenea, cu o bibliotecă RLZ încorporată, oferită de <ph name="SHORT_PRODUCT_NAME" />. Biblioteca RLZ atribuie o etichetă non-unică și care nu vă identifică în mod personal, pentru a măsura căutările și modul în care este utilizat <ph name="SHORT_PRODUCT_NAME" /> în funcție de o anumită campanie promoțională. Aceste etichete pot apărea uneori în interogările Căutării Google din <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1042574203789536285"><ph name="URL" /> dorește să stocheze permanent cantități mari de date pe dispozitivul dvs.</translation>
@@ -158,7 +159,6 @@
     Va trebui să îți configurezi profilul din nou.<ph name="BR" />
     <ph name="BR" />
     Pe următorul ecran, trimite-ne feedback pentru a ne ajuta să remediem problema.</translation>
-<translation id="1216954813581739968">Activează fila pentru permiterea accesului la desktop.</translation>
 <translation id="121827551500866099">Afișează toate descărcările...</translation>
 <translation id="122082903575839559">Algoritm de semnare a certificatului</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 cu criptare RSA</translation>
@@ -374,6 +374,7 @@
 <translation id="1523350272063152305">Dispozitivul Chromebox pentru videoconferințe este gata pentru configurare.</translation>
 <translation id="1524152555482653726">Film</translation>
 <translation id="1525475911290901759">Activează în Lansatorul de aplicații un nou algoritm de selectare și de poziționare a rezultatului de căutare.</translation>
+<translation id="1525835343380843286">Eroare de comunicare cu serverul</translation>
 <translation id="1526560967942511387">Document fără titlu</translation>
 <translation id="1526925867532626635">Confirmați setările de sincronizare</translation>
 <translation id="1528372117901087631">Conexiune la internet</translation>
@@ -388,6 +389,7 @@
 <translation id="1545786162090505744">Adresă URL cu %s în loc de interogare</translation>
 <translation id="1546280085599573572">Această extensie a modificat ce pagină se afișează când dai clic pe butonul Pagină de pornire.</translation>
 <translation id="1546795794523394272">Bun venit la Chromebox pentru videoconferințe!</translation>
+<translation id="1547572086206517271">Este necesară actualizarea</translation>
 <translation id="1547964879613821194">Engleză canadiană</translation>
 <translation id="1548132948283577726">Site-urile care nu salvează niciodată parole vor apărea aici.</translation>
 <translation id="1549045574060481141">Confirmați descărcarea</translation>
@@ -532,6 +534,7 @@
 <translation id="1744108098763830590">pagină de fundal</translation>
 <translation id="1747687775439512873">Dezactivați WiMAX</translation>
 <translation id="174773101815569257">Blocarea mouse-ului</translation>
+<translation id="174937106936716857">Numărul total de fișiere</translation>
 <translation id="1749854530031883739">Afișează fundalurile ferestrelor gri folosite în TouchView (modul maximizat) în spatele ferestrelor care nu pot fi maximizate.</translation>
 <translation id="17513872634828108">File deschise</translation>
 <translation id="175196451752279553">R&amp;edeschide fila închisă</translation>
@@ -615,8 +618,11 @@
 <translation id="1891196807951270080">Activează stocarea locală a paginilor accesate recent pentru utilizarea offline. Este necesar ca Paginile offline să fie activate.</translation>
 <translation id="1891668193654680795">Ai încredere în acest certificat pentru a identifica furnizorii de software.</translation>
 <translation id="189210018541388520">Deschide ecranul complet</translation>
+<translation id="1892754076732315533">O nouă experiență simplificată pentru utilizatori, la intrarea în modul ecran complet, declanșat de pagină sau în modul de blocare a cursorului mouse-ului.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
+<translation id="1893406696975231168">Fluxul de configurare cloud nu s-a finalizat</translation>
 <translation id="189358972401248634">Alte limbi</translation>
+<translation id="1894288435579641697">Evidențiază cursorul (la editarea textului)</translation>
 <translation id="1895658205118569222">Închideți</translation>
 <translation id="1895934970388272448">Pentru a finaliza acest proces, este necesar să confirmați înregistrarea de pe imprimantă. Verificați acum.</translation>
 <translation id="1897762215429052132">Configurează conexiunea la rețea, limba, aranjamentul tastaturii...</translation>
@@ -646,6 +652,7 @@
 <translation id="1936157145127842922">Afișați în dosar</translation>
 <translation id="1936717151811561466">Finlandeză</translation>
 <translation id="1937256809970138538">Rostește „Ok Google” când ecranul este pornit și deblocat</translation>
+<translation id="1942765061641586207">Rezoluția imaginii</translation>
 <translation id="1944921356641260203">A fost găsită o actualizare</translation>
 <translation id="1947424002851288782">Tastatură germană</translation>
 <translation id="1950295184970569138">* fotografie de profil Google (se încarcă)</translation>
@@ -814,6 +821,7 @@
 <translation id="2218515861914035131">Inserează ca text simplu</translation>
 <translation id="2218947405056773815">Hopa! <ph name="API_NAME" /> are o mică problemă.</translation>
 <translation id="2220529011494928058">Semnalați o problemă</translation>
+<translation id="2220794966865262911">Serviciu indisponibil</translation>
 <translation id="2222641695352322289">Singura modalitate de anulare este să reinstalați <ph name="IDS_SHORT_PRODUCT_OS_NAME" />.</translation>
 <translation id="2224444042887712269">Setarea aparține utilizatorului <ph name="OWNER_EMAIL" />.</translation>
 <translation id="2224551243087462610">Editați numele dosarului</translation>
@@ -940,7 +948,7 @@
 <translation id="2384596874640104496">Tastatură sinhala</translation>
 <translation id="2385700042425247848">Nume serviciu:</translation>
 <translation id="2386631145847373156">Vă puteți deconecta doar dacă sunteți conectat(ă).</translation>
-<translation id="2390045462562521613">Șterge această rețea</translation>
+<translation id="2390045462562521613">Elimină această rețea</translation>
 <translation id="2391243203977115091">S-au găsit <ph name="FILE_COUNT" /> (de) fotografii noi
     <ph name="LINE_BREAK1" />
     Spațiu insuficient pe dispozitiv.
@@ -964,6 +972,7 @@
 <translation id="2422426094670600218">&lt;fără nume&gt;</translation>
 <translation id="2423578206845792524">Sal&amp;vează imaginea ca...</translation>
 <translation id="2424091190911472304">Rulează întotdeauna pe <ph name="ORIGIN" /></translation>
+<translation id="2425665904502185219">Dimensiunea totală a fișierelor</translation>
 <translation id="2431394478374894294">Activează intrarea vocală pe tastatura virtuală.</translation>
 <translation id="2433452467737464329">Pentru actualizarea automată a paginii: chrome://network/?refresh=&lt;sec&gt;, adăugați un parametru de interogare în adresa URL</translation>
 <translation id="2433507940547922241">Aspect</translation>
@@ -1062,6 +1071,7 @@
 <translation id="2554553592469060349">Fișierul selectat este prea mare (dimensiune maximă: 3 MB).</translation>
 <translation id="255632937203580977">Notificări privind descoperirea dispozitivelor</translation>
 <translation id="2557899542277210112">Pentru acces rapid, plasați marcajele aici, în bara de marcaje.</translation>
+<translation id="2558578666171469771">Magazinul Google Play, acum pe <ph name="DEVICE_TYPE" /></translation>
 <translation id="255937426064304553">S.U.A. internațională</translation>
 <translation id="2560633531288539217">Gestionează Activitatea vocală și audio</translation>
 <translation id="2562685439590298522">Documente</translation>
@@ -1156,6 +1166,7 @@
 <translation id="2686759344028411998">Nu se pot detecta module încărcate.</translation>
 <translation id="2688196195245426394">Eroare la înregistrarea gadgetului pe server: <ph name="CLIENT_ERROR" />.</translation>
 <translation id="2694026874607847549">1 cookie</translation>
+<translation id="2696862700756109583">Excepții privind ecranul complet</translation>
 <translation id="2702540957532124911">Tastatură:</translation>
 <translation id="2704184184447774363">Semnare Microsoft a documentelor</translation>
 <translation id="2706892089432507937">Dispozitive USB</translation>
@@ -1312,6 +1323,7 @@
 <translation id="288042212351694283">Accesează dispozitivele Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Ultima accesare:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> va reporni și se va reseta imediat</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Manager de activități</translation>
 <translation id="2887525882758501333">Document PDF</translation>
 <translation id="2888807692577297075">Nu există elemente care să corespundă cu &lt;b&gt;„<ph name="SEARCH_STRING" />”&lt;/b&gt;</translation>
@@ -1410,6 +1422,7 @@
 <translation id="302014277942214887">Introduceți ID-ul aplicației sau adresa URL a magazinului web.</translation>
 <translation id="3020616530769498629">Activează reîncărcarea fără validare în urma acțiunii „trage pentru a actualiza”</translation>
 <translation id="3020990233660977256">Numărul de serie: <ph name="SERIAL_NUMBER" /></translation>
+<translation id="3021245547458004908">Când este activat, bara de instrumente nu va fi niciodată ascunsă din cauza derulării pe dispozitive cu ecran de minimum 800 dp. Aceasta va fi în continuare ascunsă când conținutul paginii se afișează pe tot ecranul.</translation>
 <translation id="3021678814754966447">&amp;Afișează sursa cadrului</translation>
 <translation id="3024374909719388945">Utilizează formatul de 24 de ore</translation>
 <translation id="3025022340603654002">Sugerează completări automate la primul clic cu mouse-ul pe un element dintr-un formular.</translation>
@@ -1436,6 +1449,7 @@
 <translation id="3065041951436100775">Feedback despre fila eliminată.</translation>
 <translation id="3065140616557457172">Tastează pentru a căuta sau introdu o adresă URL pentru a naviga. Orice variantă funcționează.</translation>
 <translation id="3067198360141518313">Rulează acest plugin</translation>
+<translation id="307519606911195071">Activează funcții suplimentare de accesibilitate pe pagina Setări.</translation>
 <translation id="3075239840551149663">Utilizatorul monitorizat <ph name="NEW_PROFILE_NAME" /> a fost creat!</translation>
 <translation id="3075874217500066906">Este necesară o repornire pentru a începe procesul de Powerwash. După repornire, ți se va solicita să confirmi dacă dorești să continui.</translation>
 <translation id="3076677906922146425">Permite oricui să adauge o persoană în Chrome</translation>
@@ -1585,6 +1599,7 @@
 <translation id="3277710850168074473">Necesitatea utilizării gesturilor pentru redarea elementelor media. Dacă dezactivați această opțiune, redarea automată va fi permisă.</translation>
 <translation id="3280237271814976245">Salvează c&amp;a...</translation>
 <translation id="3280431534455935878">Se pregătește</translation>
+<translation id="3284674070818187654">Google poate folosi istoricul de navigare pentru a personaliza Căutarea și alte servicii Google. Poți controla acest aspect la myaccount.google.com.</translation>
 <translation id="3285322247471302225">Filă &amp;nouă</translation>
 <translation id="3288047731229977326">Extensiile care rulează în modul pentru dezvoltatori pot afecta computerul. Dacă nu sunteți dezvoltator, se recomandă să dezactivați aceste extensii, pentru siguranță.</translation>
 <translation id="3289566588497100676">Introducere ușoară a simbolurilor</translation>
@@ -1690,6 +1705,7 @@
 <translation id="3413122095806433232">Emitenți CA: <ph name="LOCATION" /></translation>
 <translation id="3414856743105198592">Formatarea suportului media amovibil va șterge toate datele. Doriți să continuați?</translation>
 <translation id="3414952576877147120">Dimensiune:</translation>
+<translation id="3416248389957650982">Deschide myaccount.google.com după conectare</translation>
 <translation id="3420980393175304359">Comută la altă persoană</translation>
 <translation id="3423858849633684918">Repornește <ph name="PRODUCT_NAME" /></translation>
 <translation id="3425233587047449821">Noul instrument IME pentru coreeană</translation>
@@ -1737,6 +1753,7 @@
 <translation id="3479552764303398839">Nu acum</translation>
 <translation id="3480892288821151001">Andocați fereastra la stânga</translation>
 <translation id="3481915276125965083">Următoarele ferestre pop-up au fost blocate pe această pagină:</translation>
+<translation id="3482214069979148937">Pentru a ieși din ecranul complet, apasă lung pe |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Obțineți un certificat nou</translation>
 <translation id="3487007233252413104">funcție anonimă</translation>
 <translation id="348771913750618459">fluxurile de conectare bazate pe iframe</translation>
@@ -1831,7 +1848,6 @@
 <translation id="3593965109698325041">Limitări privind numele certificatului</translation>
 <translation id="3595596368722241419">Baterie încărcată</translation>
 <translation id="3600456501114769456">Accesul la fișierele locale de pe dispozitiv este dezactivat de administrator.</translation>
-<translation id="3601395307734599350">Toate extensiile tale sunt aici</translation>
 <translation id="3603385196401704894">Franceză canadiană</translation>
 <translation id="3603622770190368340">Obțineți certificatul de rețea</translation>
 <translation id="3605780360466892872">Om de afaceri</translation>
@@ -2000,6 +2016,7 @@
     Gata pentru backup pe <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3816844797124379499">Aplicația nu a putut fi adăugată, deoarece este în conflict cu „<ph name="APP_NAME" />”.</translation>
 <translation id="3819007103695653773">Permite tuturor site-urilor să trimită mesaje push în fundal</translation>
+<translation id="3819752733757735746">Accesul prin comutare (controlează computerul cu numai un comutator sau două)</translation>
 <translation id="3819800052061700452">&amp;Ecran complet</translation>
 <translation id="3822265067668554284">Nu permite niciunui site să urmărească locația fizică</translation>
 <translation id="3825863595139017598">Tastatură mongolă</translation>
@@ -2199,6 +2216,7 @@
 <translation id="4120817667028078560">Calea este prea lungă</translation>
 <translation id="4121428309786185360">Expiră la</translation>
 <translation id="412730574613779332">Spandex</translation>
+<translation id="4127528900246453928"><ph name="ORIGIN" /> se află acum în ecran complet.</translation>
 <translation id="4130199216115862831">Jurnalul dispozitivului</translation>
 <translation id="4130207949184424187">Această extensie a modificat ce pagină se afișează când cauți din caseta polivalentă.</translation>
 <translation id="4130750466177569591">Sunt de acord</translation>
@@ -2212,7 +2230,6 @@
 <translation id="4151403195736952345">Folosește global în mod prestabilit (detectează)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{O filă}few{# file}other{# de file}}</translation>
 <translation id="4154664944169082762">Amprente digitale</translation>
-<translation id="4157188838832721931">Dezactivează solicitarea adresată utilizatorului privind parola pentru sistemul de operare înainte de afișarea parolelor în pagina cu parole.</translation>
 <translation id="4157869833395312646">Criptografie Microsoft bazată pe server</translation>
 <translation id="4158739975813877944">Deschide playlistul</translation>
 <translation id="4159681666905192102">Acesta este un cont pentru copii gestionat de <ph name="CUSTODIAN_EMAIL" /> și de <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2224,6 +2241,7 @@
 <translation id="4172051516777682613">Afișați întotdeauna</translation>
 <translation id="417475959318757854">Centrați Lansatorul de aplicații.</translation>
 <translation id="4176463684765177261">Dezactivat</translation>
+<translation id="4179512409951755566">Activează derularea suplimentară pentru tastatura de pe ecran</translation>
 <translation id="4180788401304023883">Șterge certificatul CA „<ph name="CERTIFICATE_NAME" />”?</translation>
 <translation id="418179967336296930">Tastatură rusă fonetică (YaZHert)</translation>
 <translation id="4181841719683918333">Limbi</translation>
@@ -2255,7 +2273,6 @@
 <translation id="4218259925454408822">Conectați-vă la alt cont</translation>
 <translation id="4219614746733932747">Dacă este activat, Blink folosește propriul mecanism de zoom pentru a redimensiona conținutul la factorul de redimensionare de pe dispozitiv.</translation>
 <translation id="4220865787605972627">Permite calibrarea culorii pentru afișaj dacă afișajul acceptă această funcție.</translation>
-<translation id="4233506668751282421">Activează conținutul audio pentru permiterea accesului la desktop</translation>
 <translation id="4235200303672858594">Întregul ecran</translation>
 <translation id="4235813040357936597">Adăugați un cont pentru <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> nu poate fi afișat în această limbă</translation>
@@ -2263,7 +2280,6 @@
 <translation id="4242577469625748426">Setările de politică nu au putut fi instalate pe gadget: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> dorește să dezactiveze cursorul mouse-ului dvs.</translation>
 <translation id="424546999567421758">S-a detectat o utilizare ridicată a spațiului de pe disc</translation>
-<translation id="4247072926966606568">Dacă acest marcaj este activat, din fereastra cu selectorul pentru permiterea accesului la desktop, utilizatorul poate alege să permită accesul la conținutul audio.</translation>
 <translation id="424726838611654458">Deschide întotdeauna în Adobe Reader</translation>
 <translation id="4249248555939881673">Se așteaptă realizarea conexiunii la rețea...</translation>
 <translation id="4249373718504745892">Accesul acestei pagini la camera și microfonul dvs. a fost blocat.</translation>
@@ -2336,7 +2352,6 @@
 <translation id="4358697938732213860">Adaugă o adresă</translation>
 <translation id="4359408040881008151">Instalată din cauza extensiilor dependente.</translation>
 <translation id="4361190688154226069">Identificare bazată pe dreptunghiuri în vizualizări</translation>
-<translation id="4363372140743955595">Reautentificarea managerului de parole</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> a fost descărcat</translation>
 <translation id="4364830672918311045">Afișează notificările</translation>
 <translation id="4365673000813822030">Hopa, sincronizarea a încetat să funcționeze.</translation>
@@ -2393,6 +2408,7 @@
 <translation id="4449935293120761385">Despre completarea automată</translation>
 <translation id="4449996769074858870">Această filă redă fișiere audio.</translation>
 <translation id="4450974146388585462">Diagnosticați</translation>
+<translation id="4452426408005428395">M-am răzgândit</translation>
 <translation id="4454939697743986778">Acest certificat a fost instalat de administratorul de sistem.</translation>
 <translation id="445923051607553918">Conectează-te la rețeaua Wi-Fi</translation>
 <translation id="4462159676511157176">Servere de nume personalizate</translation>
@@ -2452,6 +2468,7 @@
 <translation id="4558426062282641716">S-a solicitat permisiunea de lansare automată</translation>
 <translation id="4563210852471260509">Limba inițială de introducere este chineza</translation>
 <translation id="456664934433279154">Controlează dacă se folosesc ferestrele aplicațiilor Chrome bazate pe afișările setului de instrumente.</translation>
+<translation id="4566767428015023961">Evidențiază cursorul mouse-ului</translation>
 <translation id="4569998400745857585">Meniu ce conține extensiile ascunse</translation>
 <translation id="4570444215489785449">Acum poți bloca oricând acest dispozitiv de la distanță în Managerul Chrome.</translation>
 <translation id="4572659312570518089">Autentificarea a fost anulată în timpul conectării la „<ph name="DEVICE_NAME" />”.</translation>
@@ -2469,7 +2486,6 @@
 <translation id="4594109696316595112">Activare unică: introdu parola pentru a activa Smart Lock pe <ph name="DEVICE_TYPE" />. Cu Smart Lock, telefonul tău va debloca acest dispozitiv, fără parolă. Pentru a modifica sau a dezactiva funcția, accesează setările <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplicațiile și extensiile pot fi modificate numai de administrator (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Convertor EMF</translation>
-<translation id="4601250583401186741">Conectează cu un controler</translation>
 <translation id="4602466770786743961">Permiteți întotdeauna accesul <ph name="HOST" /> la camera și microfonul dvs.</translation>
 <translation id="4605399136610325267">Nu te-ai conectat la internet</translation>
 <translation id="4608500690299898628">&amp;Caută...</translation>
@@ -2504,6 +2520,7 @@
 <translation id="4645676300727003670">&amp;Păstrați</translation>
 <translation id="4647090755847581616">&amp;Închide fila</translation>
 <translation id="4647697156028544508">Introduceți codul PIN pentru „<ph name="DEVICE_NAME" />":</translation>
+<translation id="4647836739603100666">Continuând, accepți <ph name="BEGIN_LINK" />Termenii și condițiile<ph name="END_LINK" /> și <ph name="BEGIN_LINK" />Politica de confidențialitate<ph name="END_LINK" /> Google.</translation>
 <translation id="4648491805942548247">Permisiuni insuficiente</translation>
 <translation id="4653235815000740718">A apărut o problemă la crearea suportului de recuperare a sistemului de operare. Nu s-a găsit dispozitivul de stocare utilizat.</translation>
 <translation id="4654488276758583406">Foarte mică</translation>
@@ -2724,6 +2741,7 @@
 <translation id="4974733135013075877">Ieșiți și blocați</translation>
 <translation id="497490572025913070">Marginile stratului compus afișat</translation>
 <translation id="4977942889532008999">Confirmați accesul</translation>
+<translation id="4982319280615426980">Interfață de utilizare simplificată pentru ecranul complet/blocarea mouse-ului.</translation>
 <translation id="4982718461356080574">Ascunderea butoanelor de închidere în filele inactive atunci când sunt stivuite</translation>
 <translation id="498294082491145744">Modifică setările care controlează accesul site-ului la funcții cum ar fi cookie-urile, JavaScript, pluginurile, localizarea geografică, microfonul, camera foto etc.</translation>
 <translation id="4988526792673242964">Pagini</translation>
@@ -2762,6 +2780,7 @@
 <translation id="5039804452771397117">Permite</translation>
 <translation id="5045550434625856497">Parolă incorectă</translation>
 <translation id="5048179823246820836">Nordică</translation>
+<translation id="5048294425697652159">Activează Quirks Client pentru calibrarea afișării.</translation>
 <translation id="5053604404986157245">Parola TPM generată aleatoriu nu este disponibilă. Acest lucru este normal după utilizarea Powerwash.</translation>
 <translation id="5053803681436838483">Adresă de expediere nouă...</translation>
 <translation id="5055309315264875868">Afișează un link în pagina cu setări a managerului de parole, pentru a gestiona parolele sincronizate online.</translation>
@@ -2859,7 +2878,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Necesitatea folosirii gesturilor pentru redarea conținutului media</translation>
 <translation id="5189060859917252173">Certificatul „<ph name="CERTIFICATE_NAME" />” reprezintă o Autoritate de certificare.</translation>
-<translation id="5196117515621749903">Reîncarcă ignorând memoria cache</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sincronizarea este finalizată.</translation>
@@ -2874,6 +2892,7 @@
 <translation id="521582610500777512">Fotografia a fost ștearsă</translation>
 <translation id="5218183485292899140">Franceză elvețiană</translation>
 <translation id="5218766986344577658">Fereastra pop-up pentru afișarea clară a linkurilor</translation>
+<translation id="5220992698394817380">Activează meniul de înscriere la IME</translation>
 <translation id="5222676887888702881">Deconectează-te</translation>
 <translation id="5225324770654022472">Afișați comanda rapidă pentru aplicații</translation>
 <translation id="5227536357203429560">Adaugă o rețea privată...</translation>
@@ -2916,6 +2935,7 @@
 <translation id="5271247532544265821">Comută între modurile de introducere a textului în chineză simplificată și chineză tradițională</translation>
 <translation id="5271549068863921519">Salvează parola</translation>
 <translation id="5273628206174272911">Navigarea experimentală în istoric ca reacție la derularea suplimentară pe orizontală.</translation>
+<translation id="5275194674756975076">OK, actualizează</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> de pe acest site</translation>
 <translation id="5275973617553375938">Fișiere recuperate din Google Drive</translation>
 <translation id="527605719918376753">Dezactivează sunetul filei</translation>
@@ -2989,6 +3009,7 @@
 <translation id="5368720394188453070">Telefonul este blocat. Pentru acces, deblochează-l.</translation>
 <translation id="5369927996833026114">Descoperiți Lansatorul de aplicații Chrome</translation>
 <translation id="5370819323174483825">&amp;Reîncarcă</translation>
+<translation id="5372066618989754822">Activează accesul la noul meniu IME din pagina Setări de limbă.</translation>
 <translation id="5372529912055771682">Modul de înscriere furnizat nu este acceptat de această versiune a sistemului de operare. Asigurați-vă că rulați cea mai recentă versiune și încercați din nou.</translation>
 <translation id="5374359983950678924">Schimbă imaginea</translation>
 <translation id="5376169624176189338">Dă clic pentru a naviga înapoi, ține apăsat pentru a vedea istoricul</translation>
@@ -3078,6 +3099,7 @@
 <translation id="5486561344817861625">Simulați repornirea browserului</translation>
 <translation id="54870580363317966">Alegeți un avatar pentru utilizatorul monitorizat.</translation>
 <translation id="5488468185303821006">Permite în incognito</translation>
+<translation id="5489789060051091748">Selectează pentru a se rosti: atinge lung Caută și dă clic sau trage pentru a se rosti orice</translation>
 <translation id="549294555051714732">Potrivirea subșirurilor pentru sugestii de completare automată</translation>
 <translation id="5494362494988149300">Deschide când s-a &amp;descărcat</translation>
 <translation id="5494920125229734069">Selectează-le pe toate</translation>
@@ -3173,6 +3195,7 @@
 <translation id="5626134646977739690">Nume:</translation>
 <translation id="5627086634964711283">Stabilește și ce pagină se afișează când dați clic pe butonul Pagină de pornire.</translation>
 <translation id="5627259319513858869">Activează utilizarea funcțiilor experimentale pentru obiectul Canvas, care sunt încă în curs de dezvoltare.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Design material în partea de sus a browserului Chrome</translation>
 <translation id="5633060877636360447">Astfel, vor fi șterse definitiv cel puțin <ph name="TOTAL_COUNT" /> (de) elemente de pe acest dispozitiv, dar nu vor fi șterse elementele sincronizate de pe alte dispozitive.</translation>
 <translation id="5636996382092289526">Pentru a utiliza <ph name="NETWORK_ID" /> ar putea fi necesar să <ph name="LINK_START" />accesați mai întâi pagina de conectare a rețelei<ph name="LINK_END" />, care se va deschide automat în câteva secunde. Dacă acest lucru nu se întâmplă, rețeaua nu poate fi utilizată.</translation>
@@ -3200,8 +3223,10 @@
 <translation id="5677928146339483299">Blocat</translation>
 <translation id="5678550637669481956">A fost acordat accesul de citire și scriere la <ph name="VOLUME_NAME" />.</translation>
 <translation id="567881659373499783">Versiunea <ph name="PRODUCT_VERSION" /></translation>
+<translation id="5678862612529498267">Evidențiază obiectul focalizat de la tastatură</translation>
 <translation id="5678955352098267522">Citește datele de pe <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrarea textului în modul Prezentare generală</translation>
+<translation id="5683818630978268777">Interfață de utilizare experimentală cu blocare a tastaturii.</translation>
 <translation id="5684661240348539843">Identificator articol</translation>
 <translation id="569068482611873351">Importă...</translation>
 <translation id="56907980372820799">Conectați datele</translation>
@@ -3211,7 +3236,7 @@
 <translation id="5695323626817702678">scurtă</translation>
 <translation id="5697118958262594262">Detectează conținutul important în mod prestabilit</translation>
 <translation id="5699533844376998780">Extensia „<ph name="EXTENSION_NAME" />” a fost adăugată.</translation>
-<translation id="5701101281789450335">Setări pentru limbă și modul de introducere a textului...</translation>
+<translation id="5701101281789450335">Setări pentru limbă și introducerea textului...</translation>
 <translation id="5701381305118179107">Pe centru</translation>
 <translation id="5702898740348134351">&amp;Editează motoarele de căutare...</translation>
 <translation id="5703594190584829406">Afișează sugestiile de completare automată deasupra tastaturii, și nu într-o listă drop-down.</translation>
@@ -3355,7 +3380,7 @@
 <translation id="5895187275912066135">Emis la</translation>
 <translation id="5898154795085152510">Serverul a afișat un certificat client nevalid. Eroare <ph name="ERROR_NUMBER" /> (<ph name="ERROR_NAME" />).</translation>
 <translation id="5900302528761731119">Fotografie de profil Google</translation>
-<translation id="590253956165195626">Oferă traducerea paginilor care nu sunt în limba în care citesc.</translation>
+<translation id="590253956165195626">Oferă traducerea paginilor care nu sunt într-o limbă pe care o cunosc.</translation>
 <translation id="5904093760909470684">Configurare proxy</translation>
 <translation id="5906065664303289925">Adresă hardware:</translation>
 <translation id="5910363049092958439">Sal&amp;vează imaginea ca...</translation>
@@ -3540,6 +3565,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">Ajustarea atingerii</translation>
 <translation id="6218364611373262432">Resetează starea de instalare a Lansatorului de aplicații la fiecare repornire. Dacă setați acest marcaj, Chrome nu va reține că lansatorul a fost deja instalat, la fiecare pornire. Opțiunea este utilizată pentru testarea fluxului de instalare a Lansatorului de aplicații.</translation>
+<translation id="6219616557885484178">Alege din peste un milion de aplicații și jocuri de pe Google Play pentru a le instala și folosi pe <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Eroare la încărcarea extensiei</translation>
 <translation id="6221345481584921695">Navigarea sigură Google <ph name="BEGIN_LINK" />a detectat recent programe malware<ph name="END_LINK" /> pe <ph name="SITE" />. Site-urile care sunt de obicei sigure sunt uneori infectate cu programe malware. Conținutul rău-intenționat provine de la <ph name="SUBRESOURCE_HOST" />, un distribuitor cunoscut de programe malware.</translation>
@@ -3666,7 +3692,6 @@
 <translation id="6420676428473580225">Adaugă pe desktop</translation>
 <translation id="6422329785618833949">Fotografia a fost răsturnată</translation>
 <translation id="642282551015776456">Acest nume nu poate fi folosit ca nume de fișier sau de dosar</translation>
-<translation id="642322423610046417">Folosește meniul contextual (clic dreapta) pentru a elimina extensiile de care nu ai nevoie.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Utilizează Adobe Reader ca vizualizator prestabilit pentru fișierele PDF?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3737,6 +3762,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Un ecran complet experimental, cu un mod de blocare a tastaturii care necesită ca utilizatorul să apese lung pe tasta Esc pentru a ieși.</translation>
 <translation id="6527303717912515753">Trimite</translation>
 <translation id="6528546217685656218">Cheia privată pentru acest Certificat de client lipsește sau nu este validă.</translation>
 <translation id="653019979737152879">Se sincronizează <ph name="FILE_NAME" />...</translation>
@@ -3809,6 +3835,7 @@
 <translation id="6639554308659482635">Memorie SQLite</translation>
 <translation id="6644756108386233011">Resetați setările <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate?</translation>
 <translation id="6647228709620733774">Adresă URL de revocare a autorității de certificare Netscape</translation>
+<translation id="6649018507441623493">O secundă…</translation>
 <translation id="6649068951642910388">Interfața de utilizare pentru restabilirea sesiunii va fi afișată într-un balon, nu într-o bară de informații.</translation>
 <translation id="665061930738760572">Deschideți într-o &amp;fereastră nouă</translation>
 <translation id="6652975592920847366">Creați un suport de recuperare pentru sistemul de operare</translation>
@@ -3915,6 +3942,7 @@
 <translation id="6825883775269213504">Rusă</translation>
 <translation id="6827236167376090743">Videoclipul va fi redat în continuu.</translation>
 <translation id="6828153365543658583">Restricționează conectarea la următorii utilizatori:</translation>
+<translation id="6828860976882136098">Actualizările automate nu au putut fi configurate pentru toți utilizatorii (eroare la executarea testării pe dispozitiv: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Primește ajutor în privința <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Înscrie-te în organizație</translation>
 <translation id="6830590476636787791">Tranziții animate în tutorialul redat la prima rulare</translation>
@@ -3937,7 +3965,6 @@
 <translation id="6860427144121307915">Deschideți într-o filă</translation>
 <translation id="6862635236584086457">Pentru toate fișierele salvate în acest dosar se creează copii de rezervă online în mod automat</translation>
 <translation id="6865313869410766144">Datele salvate pentru completarea automată a formularelor</translation>
-<translation id="6865319096921627602">Activează canalul media unificat pe Android.</translation>
 <translation id="6867678160199975333">Comutați la <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Casetă de validare bifată</translation>
 <translation id="6870130893560916279">Tastatură ucraineană</translation>
@@ -3977,6 +4004,7 @@
 <translation id="6934265752871836553">Folosește cod de ultimă generație pentru a face Chrome să deseneze conținutul mai rapid. Este foarte posibil ca modificările
         din spatele acestei metode să deterioreze conținutul în mare măsură.</translation>
 <translation id="6935367737854035550">Setează elementele de design material în partea de sus a browserului Chrome.</translation>
+<translation id="6935867720248834680">Serviciile GMS sunt indisponibile</translation>
 <translation id="6937152069980083337">Metoda de introducere Google pentru japoneză (la tastatura americană)</translation>
 <translation id="693807610556624488">Operațiunea de scriere depășește lungimea maximă a atributului pe: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6939777852457331078">Tastatură S.U.A. Workman</translation>
@@ -4031,6 +4059,7 @@
 <translation id="7006017748900345484">Codificator/decodor video software WebRTC H.264</translation>
 <translation id="7006634003215061422">Margine jos</translation>
 <translation id="7006844981395428048">Fișier audio $1</translation>
+<translation id="7008270479623533562">Pentru a rula această extensie, trebuie să actualizezi pagina. Poți rula extensia automat pe acest site dând clic dreapta pe pictograma extensiei.</translation>
 <translation id="7009045250432250765">Completare automată cu un singur clic</translation>
 <translation id="7010160495478792664">Decodificare video cu accelerare hardware unde este disponibilă.</translation>
 <translation id="7010400591230614821">Strategie agresivă de eliberare a memoriei filelor</translation>
@@ -4093,6 +4122,7 @@
 <translation id="7082055294850503883">Ignoră starea CapsLock și introdu minuscule în mod prestabilit</translation>
 <translation id="7088418943933034707">Gestionează certificatele...</translation>
 <translation id="7088434364990739311">Nu a reușit pornirea verificării actualizării (cod de eroare <ph name="ERROR" />).</translation>
+<translation id="708856090370082727">Activează compatibilitatea pentru derularea suplimentară pentru tastatura de pe ecran. Dacă activezi acest marcaj, tastatura de pe ecran va redimensiona numai spațiul vizibil.</translation>
 <translation id="7088674813905715446">Administratorul a trecut acest dispozitiv într-o stare de acces revocat. Pentru a-l activa pentru înscriere, solicitați administratorului să-l treacă într-o stare de așteptare.</translation>
 <translation id="708969677220991657">Permite solicitările către gazda locală prin HTTPS chiar dacă se prezintă un certificat nevalid.</translation>
 <translation id="7092106376816104">Excepții privind ferestrele de tip pop-up</translation>
@@ -4167,6 +4197,7 @@
 <translation id="721331389620694978">Unele setări care pot reflecta obiceiurile tale de navigare nu vor fi șterse.</translation>
 <translation id="7214227951029819508">Luminozitate:</translation>
 <translation id="7219357088166514551">Căutați cu <ph name="ENGINE" /> sau introduceți adresa URL</translation>
+<translation id="722055596168483966">Personalizează serviciile Google</translation>
 <translation id="7221155467930685510">$1 GB</translation>
 <translation id="7221855153210829124">Afișeze notificări</translation>
 <translation id="7221869452894271364">Reîncarcă această pagină</translation>
@@ -4193,7 +4224,6 @@
 <translation id="7256710573727326513">Deschideți într-o filă</translation>
 <translation id="7257173066616499747">Rețele Wi-Fi</translation>
 <translation id="7257666756905341374">Citește datele pe care le copiezi și le inserezi</translation>
-<translation id="7260002739296185724">Activează folosirea platformei AV Foundation pentru înregistrarea video și monitorizarea dispozitivului video în OS X 10.7 și versiunile ulterioare. În celelalte cazuri, se va folosi QTKit.</translation>
 <translation id="7260504762447901703">Revocă accesul</translation>
 <translation id="7262004276116528033">Acest serviciu de conectare este găzduit de <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Excepții pentru accesul pluginurilor scoase din mediul de testare</translation>
@@ -4212,6 +4242,7 @@
 <translation id="7280877790564589615">Permisiune solicitată</translation>
 <translation id="7282547042039404307">Mișcare lină</translation>
 <translation id="7287143125007575591">Acces refuzat.</translation>
+<translation id="7288592446024861651">Marcajele, istoricul, parolele și alte setări vor fi sincronizate cu Contul Google, pentru a le putea folosi pe toate dispozitivele. Controlează ce se sincronizează din <ph name="BEGIN_LINK" /></translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">Confirmarea înregistrării</translation>
 <translation id="7295019613773647480">Activați utilizatorii monitorizați</translation>
@@ -4230,7 +4261,6 @@
 <translation id="7314278895724341067">Activează paginile offline pe pagina Filă nouă</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (actual)</translation>
 <translation id="7321545336522791733">Serverul nu poate fi accesat</translation>
-<translation id="7324841169865301118">Permite utilizatorului să aleagă o filă pentru permiterea accesului la desktop.</translation>
 <translation id="7325437708553334317">Extensia Contrast ridicat</translation>
 <translation id="7326565110843845436">Clic cu trei degete pe touchpad</translation>
 <translation id="73289266812733869">Deselectat</translation>
@@ -4448,6 +4478,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> te conectează automat pe site-urile eligibile cu parolele pe care le-ai salvat.</translation>
 <translation id="7644029910725868934">Activează dosarul de marcaje gestionate pentru utilizatori monitorizați.</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (proprietar)</translation>
+<translation id="7646771353003624501">Permite browserului să activeze și să încarce automat paginile offline în fundal.</translation>
 <translation id="7646821968331713409">Numărul de fire de rasterizare</translation>
 <translation id="7648048654005891115">Stil hartă taste</translation>
 <translation id="7648595706644580203">Editare gestuală pentru tastatura virtuală.</translation>
@@ -4597,6 +4628,7 @@
 <translation id="7878999881405658917">Google a trimis o notificare către acest telefon. Reține că utilizând funcția Bluetooth, telefonul poate menține <ph name="DEVICE_TYPE" /> deblocat de la o distanță de peste 30 de metri. În cazul în care acest lucru poate fi o problemă, poți &lt;a&gt;dezactiva temporar această funcție&lt;/a&gt;.</translation>
 <translation id="7879478708475862060">Urmați modul de introducere</translation>
 <translation id="7880836220014399562">„<ph name="BUNDLE_NAME" />” adaugă aceste aplicații și extensii:</translation>
+<translation id="7884988936047469945">Funcții experimentale de accesibilitate</translation>
 <translation id="7885253890047913815">Destinații recente</translation>
 <translation id="7885283703487484916">foarte scurtă</translation>
 <translation id="7887192723714330082">Răspunde la „Ok Google” dacă ecranul este pornit și deblocat</translation>
@@ -4698,6 +4730,7 @@
 <translation id="8014154204619229810">Momentan, rulează instrumentul pentru actualizare. Actualizează într-un minut și verifică din nou.</translation>
 <translation id="8014206674403687691"><ph name="IDS_SHORT_PRODUCT_NAME" /> nu poate reveni la versiunea instalată anterior. Încearcă să folosești din nou Powerwash pe dispozitivul tău.</translation>
 <translation id="8017335670460187064"><ph name="LABEL" /></translation>
+<translation id="8017667670902200762">Autentificare incorectă</translation>
 <translation id="8022523925619404071">Activați actualizarea automată</translation>
 <translation id="8023801379949507775">Actualizează extensiile acum</translation>
 <translation id="8025789898011765392">Activități</translation>
@@ -4705,6 +4738,7 @@
 <translation id="8026334261755873520">Șterge datele de navigare</translation>
 <translation id="8026964361287906498">(Gestionat de politica întreprinderii)</translation>
 <translation id="8028060951694135607">Recuperare de chei Microsoft</translation>
+<translation id="8028620363061701162">Permite paginilor offline să se încarce în fundal</translation>
 <translation id="8028993641010258682">Dimensiune</translation>
 <translation id="8030169304546394654">Deconectat</translation>
 <translation id="8031722894461705849">Tastatură slovacă</translation>
@@ -4976,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Fotografie de</translation>
 <translation id="8428213095426709021">Setări</translation>
-<translation id="8432590265309978927">Compatibilitate foarte experimentală pentru redarea de cadre iframe între site-uri în procese separate.</translation>
 <translation id="8432745813735585631">Tastatură S.U.A. Colemak</translation>
 <translation id="8434177709403049435">Codificar&amp;e</translation>
 <translation id="8434480141477525001">Port remediere NaCl</translation>
@@ -5173,7 +5206,6 @@
 <translation id="8713979477561846077">Activează corectarea automată pentru tastatura fizică S.U.A., care poate oferi sugestii pe măsură ce tastezi pe tastatura fizică.</translation>
 <translation id="871476437400413057">Parole Google salvate</translation>
 <translation id="8714838604780058252">Grafică de fundal</translation>
-<translation id="8716065142695381595">Activează canalul media unificat (Android sau desktop) pe Android.</translation>
 <translation id="8722421161699219904">Tastatură S.U.A. internațională</translation>
 <translation id="872451400847464257">Editează motorul de căutare</translation>
 <translation id="8724859055372736596">&amp;Afișează în dosar</translation>
@@ -5193,6 +5225,7 @@
 <translation id="8737685506611670901">Deschide linkurile <ph name="PROTOCOL" /> și nu <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Rafinează poziția unui gest de atingere pentru a compensa rezoluția slabă a atingerilor, în comparație cu un mouse.</translation>
+<translation id="8743712320294854924">Afișează pe raft opțiunile extinse de introducere a textului.</translation>
 <translation id="874420130893181774">Metoda de introducere a textului Pinyin pentru chineză tradițională</translation>
 <translation id="8744525654891896746">Selectați un avatar pentru utilizatorul monitorizat</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5262,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Comutare mod tastă Shift</translation>
 <translation id="8852742364582744935">Au fost adăugate următoarele aplicații și extensii:</translation>
+<translation id="8853611566624224021">Activează preluarea fișierelor de afișare icc din Quirks Server pentru calibrarea afișării color.</translation>
 <translation id="885381502874625531">Tastatură belarusă</translation>
 <translation id="8856844195561710094">Oprirea descoperirii dispozitivelor Bluetooth a eșuat.</translation>
 <translation id="885701979325669005">Stocare</translation>
@@ -5311,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;Setări</translation>
 <translation id="8926389886865778422">Nu mai întreba</translation>
 <translation id="8926518602592448999">Dezactivați extensiile care rulează în modul pentru dezvoltatori</translation>
-<translation id="8929454297483336498">Folosește API-urile AVFoundation în Mac OS X, în locul platformei QTKit</translation>
 <translation id="8931394284949551895">Dispozitive noi</translation>
 <translation id="8932730422557198035">Folosește API-ul Android Midi</translation>
 <translation id="8933960630081805351">&amp;Afișează în Finder</translation>
@@ -5325,6 +5358,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Imprimantă detectată</translation>
 <translation id="8946359700442089734">Funcțiile de remediere a erorilor nu au fost activate complet pe acest dispozitiv <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Activează compatibilitatea cu WebUSB.</translation>
 <translation id="89515141420106838">Activează aplicația Galeria Magazinului web Chrome pentru driverele de imprimantă. Aplicația caută în Magazinul web Chrome extensii care acceptă printarea pe o imprimantă USB cu un anumit ID USB.</translation>
 <translation id="895347679606913382">Se începe...</translation>
 <translation id="8954952943849489823">Mutarea nu a reușit; eroare neașteptată: $1</translation>
@@ -5468,6 +5502,7 @@
 <translation id="9154194610265714752">Actualizat</translation>
 <translation id="9154418932169119429">Această imagine nu este disponibilă offline.</translation>
 <translation id="91568222606626347">Creează o comandă rapidă...</translation>
+<translation id="9157697743260533322">Actualizările automate nu au putut fi configurate pentru toți utilizatorii (eroare la lansarea testării pe dispozitiv: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Hopa! A apărut o problemă de comunicare în rețea în timpul autentificării. Verificați conexiunea la rețea și încercați din nou.</translation>
 <translation id="9159562891634783594">Activează înregistrarea imprimantelor din cloud neînregistrate din previzualizarea printării.</translation>
 <translation id="9166510596677678112">Trimiteți un e-mail acestei persoane</translation>
@@ -5479,7 +5514,6 @@
 <translation id="9170848237812810038">&amp;Anulează</translation>
 <translation id="9170884462774788842">Un alt program de pe computerul dvs. a adăugat o temă care poate schimba modul în care funcționează Chrome.</translation>
 <translation id="9177499212658576372">În prezent, sunteți conectat la rețeaua <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Gestionați cardurile de credit</translation>
 <translation id="917858577839511832">Negociere folosind DTLS 1.2 pentru WebRTC</translation>
 <translation id="917861274483335838">Gestionează blocarea pluginurilor...</translation>
 <translation id="9179348476548754105">Cum gestionează managerul de parole completarea automată în cazul datelor de conectare pentru sincronizare pentru paginile de reautentificare de tranziție.</translation>
@@ -5522,6 +5556,7 @@
 <translation id="951981865514037445"><ph name="URL" /> dorește să utilizeze locația dispozitivului dvs.</translation>
 <translation id="952838760238220631">Activează compatibilitatea cu Brotli Content-Encoding.</translation>
 <translation id="952992212772159698">Neactivat</translation>
+<translation id="953000875543358078">Poate dura câteva minute</translation>
 <translation id="960987915827980018">A mai rămas aproape 1 oră</translation>
 <translation id="96421021576709873">Rețea Wi-Fi</translation>
 <translation id="965490406356730238">Activează decodificarea mjpeg cu accelerare hardware pentru cadrul capturat, unde este disponibilă.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 29e8fe0..41ea36d 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -159,7 +159,6 @@
     Вам потребуется создать профиль заново.<ph name="BR" />
     <ph name="BR" />
     Оставьте отзыв на следующем экране, чтобы помочь нам исправить ошибку.</translation>
-<translation id="1216954813581739968">Включить общий доступ к вкладке</translation>
 <translation id="121827551500866099">Все скачанные файлы…</translation>
 <translation id="122082903575839559">Алгоритм подписи сертификатов</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 с шифрованием RSA</translation>
@@ -389,6 +388,7 @@
 <translation id="1545786162090505744">Ссылка с параметром %s вместо запроса</translation>
 <translation id="1546280085599573572">Расширение изменило страницу, которая открывается при нажатии кнопки "Главная страница".</translation>
 <translation id="1546795794523394272">Добро пожаловать в Chromebox для видеоконференций!</translation>
+<translation id="1547572086206517271">Обновите страницу</translation>
 <translation id="1547964879613821194">Канадская (английская)</translation>
 <translation id="1548132948283577726">Здесь будут показаны сайты, которые никогда не сохраняют пароли.</translation>
 <translation id="1549045574060481141">Подтвердите скачивание</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Позволяет сохранять недавно просмотренные сайты на устройстве. Для работы нужно включить офлайн-страницы.</translation>
 <translation id="1891668193654680795">Доверять этому сертификату при идентификации производителей ПО.</translation>
 <translation id="189210018541388520">Открыть в полноэкранном режиме</translation>
+<translation id="1892754076732315533">Включает упрощенный полноэкранный режим и новый вид при блокировке курсора.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Ошибка подключения к облачному сервису</translation>
 <translation id="189358972401248634">Другие языки</translation>
@@ -1324,6 +1325,7 @@
 <translation id="288042212351694283">С доступом к устройствам Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Последнее время доступа:</translation>
 <translation id="2882943222317434580">Сейчас будет выполнен перезапуск и сброс настроек <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Диспетчер задач</translation>
 <translation id="2887525882758501333">Документ PDF</translation>
 <translation id="2888807692577297075">Запросу &lt;b&gt;<ph name="SEARCH_STRING" />&lt;/b&gt; не соответствует ни один файл.</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Не сейчас</translation>
 <translation id="3480892288821151001">Закрепить окно слева</translation>
 <translation id="3481915276125965083">Заблокированы следующие всплывающие окна:</translation>
+<translation id="3482214069979148937">Нажмите и удерживайте клавишу |<ph name="ACCELERATOR" />|, чтобы выйти из полноэкранного режима</translation>
 <translation id="3484869148456018791">Получить новый сертификат</translation>
 <translation id="3487007233252413104">анонимные функции</translation>
 <translation id="348771913750618459">Вход в аккаунт через iframe</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Ограничения имени сертификата</translation>
 <translation id="3595596368722241419">Аккумулятор заряжен</translation>
 <translation id="3600456501114769456">Доступ к локальным файлам на вашем мобильном устройстве отключен администратором.</translation>
-<translation id="3601395307734599350">Все ваши расширения теперь здесь</translation>
 <translation id="3603385196401704894">Канадская (французская)</translation>
 <translation id="3603622770190368340">Получение сетевого сертификата</translation>
 <translation id="3605780360466892872">Бизнесмен</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Использовать глобальный параметр по умолчанию (находить)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 вкладка}one{# вкладка}few{# вкладки}many{# вкладок}other{# вкладки}}</translation>
 <translation id="4154664944169082762">Отпечатки</translation>
-<translation id="4157188838832721931">Чтобы просмотреть пароли, не нужно вводить пароль своего аккаунта в операционной системе.</translation>
 <translation id="4157869833395312646">Серверное шифрование Microsoft</translation>
 <translation id="4158739975813877944">Открыть плейлист</translation>
 <translation id="4159681666905192102">Этим детским аккаунтом управляют <ph name="CUSTODIAN_EMAIL" /> и <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Войти ещё в один аккаунт</translation>
 <translation id="4219614746733932747">Разрешить движку Blink менять размер контента в соответствии с коэффициентом масштабирования устройства.</translation>
 <translation id="4220865787605972627">Разрешить калибровку цветов экрана, если эта функция поддерживается.</translation>
-<translation id="4233506668751282421">Общий доступ к аудио</translation>
 <translation id="4235200303672858594">Полноэкранный режим</translation>
 <translation id="4235813040357936597">Добавить аккаунт в профиль <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Интерфейс <ph name="PRODUCT_NAME" /> невозможно отобразить на этом языке.</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Не удалось применить к устройству настройки политики: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> пытается скрыть указатель мыши.</translation>
 <translation id="424546999567421758">Большая нагрузка на диск</translation>
-<translation id="4247072926966606568">Если установлен этот параметр, в окне удаленного рабочего стола пользователь сможет указать, предоставлять ли доступ к аудио.</translation>
 <translation id="424726838611654458">Всегда открывать в Adobe Reader</translation>
 <translation id="4249248555939881673">Ожидается подключение к сети...</translation>
 <translation id="4249373718504745892">Этот сайт не имеет доступа к вашим камере и микрофону</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Добавить адрес</translation>
 <translation id="4359408040881008151">Установлено, так как есть зависимые расширения.</translation>
 <translation id="4361190688154226069">Прямоугольная область касания</translation>
-<translation id="4363372140743955595">Повторная авторизация менеджера паролей</translation>
 <translation id="4364444725319685468">Файл <ph name="FILE_NAME" /> скачан</translation>
 <translation id="4364830672918311045">Показывать оповещения</translation>
 <translation id="4365673000813822030">К сожалению, выполнить синхронизацию не удалось.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">Подробнее…</translation>
 <translation id="4449996769074858870">На этой вкладке воспроизводится аудио</translation>
 <translation id="4450974146388585462">Проверить подключение</translation>
+<translation id="4452426408005428395">Пропустить</translation>
 <translation id="4454939697743986778">Этот сертификат установлен вашим системным администратором.</translation>
 <translation id="445923051607553918">Подключение к сети Wi-Fi</translation>
 <translation id="4462159676511157176">Другие серверы имен</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">Однократная активация. Введите пароль, чтобы активировать Smart Lock на устройстве <ph name="DEVICE_TYPE" />. Эта функция позволит вам в дальнейшем снимать блокировку с помощью телефона. Указывать пароль ещё раз не потребуется. Изменить или отключить Smart Lock можно в настройках <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Изменять приложения и расширения может только менеджер (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Конвертер EMF</translation>
-<translation id="4601250583401186741">Подключение к контроллеру</translation>
 <translation id="4602466770786743961">Всегда предоставлять сайту <ph name="HOST" /> доступ к камере и микрофону</translation>
 <translation id="4605399136610325267">Отсутствует подключение к Интернету</translation>
 <translation id="4608500690299898628">&amp;Найти...</translation>
@@ -2785,6 +2783,7 @@
 <translation id="5039804452771397117">Разрешить</translation>
 <translation id="5045550434625856497">Неправильный пароль</translation>
 <translation id="5048179823246820836">Нордическая</translation>
+<translation id="5048294425697652159">Включение Quirks Client для калибровки дисплея</translation>
 <translation id="5053604404986157245">Отсутствует сгенерированный пароль доверенного платформенного модуля (в результате применения процесса Powerwash).</translation>
 <translation id="5053803681436838483">Новый адрес доставки...</translation>
 <translation id="5055309315264875868">Показывать на странице настроек диспетчера паролей ссылку для онлайн-управления паролями синхронизации.</translation>
@@ -2882,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Функция управления жестами при воспроизведении мультимедийных файлов</translation>
 <translation id="5189060859917252173">Сертификат "<ph name="CERTIFICATE_NAME" />" представляет Центр сертификации.</translation>
-<translation id="5196117515621749903">Обновить, не используя кеш</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Интернет</translation>
 <translation id="5197680270886368025">Синхронизация завершена.</translation>
@@ -2897,6 +2895,7 @@
 <translation id="521582610500777512">Фотография удалена.</translation>
 <translation id="5218183485292899140">Швейцарская (французская)</translation>
 <translation id="5218766986344577658">Всплывающее окно для выбора ссылки</translation>
+<translation id="5220992698394817380">Включение меню настроек IME</translation>
 <translation id="5222676887888702881">Выйти</translation>
 <translation id="5225324770654022472">Показывать кнопку "Сервисы"</translation>
 <translation id="5227536357203429560">Добавить частную сеть...</translation>
@@ -2939,6 +2938,7 @@
 <translation id="5271247532544265821">Переключить режим упрощенного/традиционного китайского письма</translation>
 <translation id="5271549068863921519">Сохранить пароль</translation>
 <translation id="5273628206174272911">Обеспечивает перемещение по истории просмотра при достижении конца горизонтальной прокрутки.</translation>
+<translation id="5275194674756975076">Обновить</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> на этом сайте</translation>
 <translation id="5275973617553375938">Восстановленные файлы с Google Диска</translation>
 <translation id="527605719918376753">Отключение звука на вкладке</translation>
@@ -3012,6 +3012,7 @@
 <translation id="5368720394188453070">Для входа разблокируйте телефон.</translation>
 <translation id="5369927996833026114">Панель запуска приложений Chrome</translation>
 <translation id="5370819323174483825">Пере&amp;загрузить</translation>
+<translation id="5372066618989754822">Включение доступа к новому меню IME на странице настроек языка.</translation>
 <translation id="5372529912055771682">Предоставленный режим регистрации не поддерживается этой версией операционной системы. Обновите версию ОС и повторите попытку.</translation>
 <translation id="5374359983950678924">Изменить картинку</translation>
 <translation id="5376169624176189338">Нажмите, чтобы вернуться. Удерживайте, чтобы просмотреть историю.</translation>
@@ -3197,6 +3198,7 @@
 <translation id="5626134646977739690">Имя:</translation>
 <translation id="5627086634964711283">Кроме того, расширение изменило страницу, которая отображается при нажатии кнопки "Главная страница".</translation>
 <translation id="5627259319513858869">Позволяет использовать разрабатываемые экспериментальные функции canvas.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Оформление Material Design</translation>
 <translation id="5633060877636360447">С устройства будет удалено несколько объектов (по меньшей мере <ph name="TOTAL_COUNT" />). Это не затронет синхронизированные данные на других устройствах.</translation>
 <translation id="5636996382092289526">Чтобы подключиться к сети "<ph name="NETWORK_ID" />", <ph name="LINK_START" />перейдите на страницу входа<ph name="LINK_END" /> – она автоматически откроется через несколько секунд. Если этого не произойдет, значит использование сети невозможно.</translation>
@@ -3227,6 +3229,7 @@
 <translation id="5678862612529498267">Выделять элементы, выбранные с помощью клавиатуры</translation>
 <translation id="5678955352098267522">Просмотр данных на сайте <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Текстовая фильтрация в обзорном режиме</translation>
+<translation id="5683818630978268777">Экспериментальная блокировка клавиатуры</translation>
 <translation id="5684661240348539843">Идентификатор объекта</translation>
 <translation id="569068482611873351">Импорт...</translation>
 <translation id="56907980372820799">Связать аккаунты</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">Добавить на рабочий стол</translation>
 <translation id="6422329785618833949">Зеркальное отражение фото</translation>
 <translation id="642282551015776456">Недопустимое название для файла или папки</translation>
-<translation id="642322423610046417">Нажмите правой кнопкой мыши на расширения, которые хотите удалить, и выберите соответствующую команду в контекстном меню.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Использовать Adobe Reader для просмотра файлов PDF по умолчанию?</translation>
 <translation id="6425092077175753609">Material design</translation>
@@ -3763,6 +3765,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Включает экспериментальный полноэкранный режим с блокировкой клавиатуры. Чтобы выйти из него, нажмите и удерживайте клавишу Esc.</translation>
 <translation id="6527303717912515753">Поделиться</translation>
 <translation id="6528546217685656218">Закрытый ключ для клиентского сертификата отсутствует или недействителен.</translation>
 <translation id="653019979737152879">Синхронизация файла "<ph name="FILE_NAME" />"…</translation>
@@ -3942,6 +3945,7 @@
 <translation id="6825883775269213504">Русский</translation>
 <translation id="6827236167376090743">Видео будет воспроизводиться в режиме повтора.</translation>
 <translation id="6828153365543658583">Разрешить вход только следующим пользователям:</translation>
+<translation id="6828860976882136098">Не удалось настроить автоматические обновления для всех пользователей (ошибка <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Помощь в работе с устройством <ph name="DEVICE_TYPE" /></translation>
 <translation id="6829270497922309893">Зарегистрируйтесь в вашей организации</translation>
 <translation id="6830590476636787791">Анимированный переход между элементами во время обзора</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">Открыть в новой вкладке</translation>
 <translation id="6862635236584086457">Для всех файлов, сохраненных в этой папке, автоматически создается резервная копия в Интернете</translation>
 <translation id="6865313869410766144">Данные для автозаполнения</translation>
-<translation id="6865319096921627602">Включить универсальный мультимедиаконвейер на устройстве Android</translation>
 <translation id="6867678160199975333">Переключиться на профиль <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Установленный флажок</translation>
 <translation id="6870130893560916279">Украинская раскладка</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">Программный кодировщик/дешифратор видео в формате H.264 для WebRTC</translation>
 <translation id="7006634003215061422">Нижнее поле</translation>
 <translation id="7006844981395428048">Аудио $1</translation>
+<translation id="7008270479623533562">Обновите страницу, чтобы запустить это расширение. Чтобы оно включалось автоматически на этом сайте, нажмите правой кнопкой на значок расширения.</translation>
 <translation id="7009045250432250765">Автозаполнение в один клик</translation>
 <translation id="7010160495478792664">Включить аппаратное ускорение для декодирования видео.</translation>
 <translation id="7010400591230614821">Агрессивная стратегия отключения вкладок</translation>
@@ -4224,7 +4228,6 @@
 <translation id="7256710573727326513">Открыть в новой вкладке</translation>
 <translation id="7257173066616499747">Сети Wi-Fi</translation>
 <translation id="7257666756905341374">Доступ к копируемым и вставляемым данным</translation>
-<translation id="7260002739296185724">Использовать AV Foundation для видеосъемки и мониторинга видеоустройств в Mac OS X 10.7 и более поздних версий (в противном случае будет использоваться QTKit)</translation>
 <translation id="7260504762447901703">Запретить доступ</translation>
 <translation id="7262004276116528033">Сервис входа размещен в домене <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Исключения доступа для плагинов вне тестовой среды</translation>
@@ -4262,7 +4265,6 @@
 <translation id="7314278895724341067">Показывать сохраненные сайты на странице быстрого доступа</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (используется)</translation>
 <translation id="7321545336522791733">Сервер недоступен</translation>
-<translation id="7324841169865301118">Позволяет пользователю выбрать вкладку, к которой будет открыт общий доступ.</translation>
 <translation id="7325437708553334317">Расширение высокой контрастности</translation>
 <translation id="7326565110843845436">Трехпальцевый жест для сенсорной панели</translation>
 <translation id="73289266812733869">Не выбрано</translation>
@@ -5012,7 +5014,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Автор фотографии:</translation>
 <translation id="8428213095426709021">Настройки</translation>
-<translation id="8432590265309978927">Экспериментальная поддержка визуализации межсайтовых окон iframe в отдельных процессах.</translation>
 <translation id="8432745813735585631">Американская раскладка (Colemak)</translation>
 <translation id="8434177709403049435">&amp;Кодировка</translation>
 <translation id="8434480141477525001">Порт отладки NaCl</translation>
@@ -5209,7 +5210,6 @@
 <translation id="8713979477561846077">Включает автозамену и предлагает варианты слов во время ввода на аппаратной клавиатуре с раскладкой "США".</translation>
 <translation id="871476437400413057">Сохраненные пароли Google</translation>
 <translation id="8714838604780058252">Фон</translation>
-<translation id="8716065142695381595">Включить универсальный мультимедиаконвейер (для ПК и мобильных устройств) на Android.</translation>
 <translation id="8722421161699219904">Раскладка США (международная)</translation>
 <translation id="872451400847464257">Изменить поисковую систему</translation>
 <translation id="8724859055372736596">Показать в папке</translation>
@@ -5229,6 +5229,7 @@
 <translation id="8737685506611670901">обработку всех ссылок типа "<ph name="PROTOCOL" />" вместо сервиса <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Включить корректировку сенсорного ввода, которая используется для уточнения координат касания, когда сенсорное устройство ввода обладает низким разрешением по сравнению с мышью.</translation>
+<translation id="8743712320294854924">Показывать расширенные параметры ввода.</translation>
 <translation id="874420130893181774">Пиньинь</translation>
 <translation id="8744525654891896746">Выберите аватар для этого контролируемого профиля</translation>
 <translation id="8744641000906923997">Ромадзи</translation>
@@ -5298,6 +5299,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Переключение режима с помощью клавиши Shift</translation>
 <translation id="8852742364582744935">Добавлены следующие приложения и расширения:</translation>
+<translation id="8853611566624224021">Разрешает получение ICC-файлов от сервера Quirks Server для цветовой калибровки дисплея.</translation>
 <translation id="885381502874625531">Белорусская раскладка клавиатуры</translation>
 <translation id="8856844195561710094">Не удалось остановить обнаружение устройств Bluetooth.</translation>
 <translation id="885701979325669005">Хранилище</translation>
@@ -5347,7 +5349,6 @@
 <translation id="8925458182817574960">&amp;Настройки</translation>
 <translation id="8926389886865778422">Больше не спрашивать</translation>
 <translation id="8926518602592448999">Отключение расширений в режиме разработчика</translation>
-<translation id="8929454297483336498">Использование AV Foundation API в среде Mac OS X вместо QTKit</translation>
 <translation id="8931394284949551895">Новые устройства</translation>
 <translation id="8932730422557198035">Использовать Android Midi API</translation>
 <translation id="8933960630081805351">Показать в Finder</translation>
@@ -5361,6 +5362,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Принтер найден</translation>
 <translation id="8946359700442089734">На устройстве <ph name="IDS_SHORT_PRODUCT_NAME" /> включены не все функции отладки.</translation>
+<translation id="8946784827990177241">Включает поддержку WebUSB.</translation>
 <translation id="89515141420106838">Включает приложение "Галерея Интернет-магазина Chrome" для драйверов принтера. Это приложение находит в Интернет-магазине Chrome расширения, поддерживающие печать через USB-принтер со специальным идентификатором USB.</translation>
 <translation id="895347679606913382">Запуск...</translation>
 <translation id="8954952943849489823">Не удалось выполнить перемещение. Ошибка: $1</translation>
@@ -5504,6 +5506,7 @@
 <translation id="9154194610265714752">Обновлено</translation>
 <translation id="9154418932169119429">Это изображение недоступно в автономном режиме.</translation>
 <translation id="91568222606626347">Создать ярлык...</translation>
+<translation id="9157697743260533322">Не удалось настроить автоматические обновления для всех пользователей (ошибка <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Во время аутентификации возникла ошибка. Проверьте сетевое подключение и повторите попытку.</translation>
 <translation id="9159562891634783594">Разрешает регистрацию незарегистрированных виртуальных принтеров в ходе предварительного просмотра.</translation>
 <translation id="9166510596677678112">Отправить сообщение электронной почты</translation>
@@ -5515,7 +5518,6 @@
 <translation id="9170848237812810038">&amp;Отменить</translation>
 <translation id="9170884462774788842">Одна из программ на вашем компьютере установила тему, которая может влиять на работу Chrome.</translation>
 <translation id="9177499212658576372">Вы подключены к сети <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Настроить карты</translation>
 <translation id="917858577839511832">Включить для WebRTC взаимодействие с DTLS 1.2</translation>
 <translation id="917861274483335838">Настройки блокирования плагинов...</translation>
 <translation id="9179348476548754105">Включить автоматический ввод учетных данных (сохраненных в диспетчере паролей) для синхронизации только на страницах с повторной авторизацией при выполнении транзакций.</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 7609eed..5ef1e84 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -159,7 +159,6 @@
     Svoj profil si musíte znova založiť.<ph name="BR" />
     <ph name="BR" />
     Na ďalšej obrazovke nám pošlite spätnú väzbu, ktorá nám pomôže tento problém vyriešiť.</translation>
-<translation id="1216954813581739968">Povoliť zdieľanie karty medzi počítačmi.</translation>
 <translation id="121827551500866099">Zobraziť všetky stiahnuté súbory...</translation>
 <translation id="122082903575839559">Algoritmus podpisu certifikátu</translation>
 <translation id="1221024147024329929">Štandard PKCS #1 MD2 so šifrovaním RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL s %s miesto dopytu</translation>
 <translation id="1546280085599573572">Toto rozšírenie zmenilo stránku, ktorá sa zobrazí po kliknutí na tlačidlo Domovská stránka.</translation>
 <translation id="1546795794523394272">Vitajte v službe Chromebox pre videokonferencie!</translation>
+<translation id="1547572086206517271">Vyžaduje sa obnovenie</translation>
 <translation id="1547964879613821194">Kanadská anglická klávesnica</translation>
 <translation id="1548132948283577726">Tu sa zobrazia stránky, ktoré nikdy neukladajú heslá.</translation>
 <translation id="1549045574060481141">Potvrdenie sťahovania</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Povoľte miestne ukladanie nedávno navštívených stránok na použitie v režime offline. Toto nastavenie vyžaduje aktiváciu offline stránok.</translation>
 <translation id="1891668193654680795">Dôverovať tomuto certifikátu na identifikáciu tvorcov softvéru.</translation>
 <translation id="189210018541388520">Otvoriť zobrazenie na celú obrazovku</translation>
+<translation id="1892754076732315533">Zjednodušené nové používateľské rozhranie pri vstupe do stavu celej obrazovky spustenej stránkou alebo stavu uzamknutia kurzora myši.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Postup poskytnutia cloudu zlyhal</translation>
 <translation id="189358972401248634">Ďalšie jazyky</translation>
@@ -1324,6 +1325,7 @@
 <translation id="288042212351694283">Prístup k vašim zariadeniam so štandardom Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Dátum posledného prístupu:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> sa o chvíľu reštartuje a obnoví</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Správca úloh</translation>
 <translation id="2887525882758501333">Dokument PDF</translation>
 <translation id="2888807692577297075">Dopytu  &lt;b&gt;„<ph name="SEARCH_STRING" />“&lt;/b&gt; nezodpovedajú žiadne položky</translation>
@@ -1753,6 +1755,7 @@
 <translation id="3479552764303398839">Teraz nie</translation>
 <translation id="3480892288821151001">Prichytiť okno vľavo</translation>
 <translation id="3481915276125965083">Na tejto stránke boli zablokované nasledujúce kontextové okná:</translation>
+<translation id="3482214069979148937">Režim celej obrazovky ukončíte stlačením klávesa |<ph name="ACCELERATOR" />|</translation>
 <translation id="3484869148456018791">Získať nový certifikát</translation>
 <translation id="3487007233252413104">anonymná funkcia</translation>
 <translation id="348771913750618459">Prihlasovacie postupy založené na prvku iframe</translation>
@@ -1847,7 +1850,6 @@
 <translation id="3593965109698325041">Obmedzenia názvu certifikátu</translation>
 <translation id="3595596368722241419">Batéria je nabitá</translation>
 <translation id="3600456501114769456">Prístup k miestnym súborom vo vašom zariadení zakázal správca.</translation>
-<translation id="3601395307734599350">Tu sú uvedené všetky vaše rozšírenia</translation>
 <translation id="3603385196401704894">Kanadská francúzska klávesnica</translation>
 <translation id="3603622770190368340">Získanie certifkátu siete</translation>
 <translation id="3605780360466892872">Manažér</translation>
@@ -2230,7 +2232,6 @@
 <translation id="4151403195736952345">Použiť globálne predvolené nastavenie (zistiť)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# karty}other{# kariet}}</translation>
 <translation id="4154664944169082762">Odtlačky</translation>
-<translation id="4157188838832721931">Zakázať vyzývanie používateľa, aby pred odhalením hesiel na stránke s heslami zadal heslo operačného systému.</translation>
 <translation id="4157869833395312646">Šifrovanie Server Gated Cryptography spoločnosti Microsoft</translation>
 <translation id="4158739975813877944">Otvoriť zoznam skladieb</translation>
 <translation id="4159681666905192102">Toto je detský účet spravovaný používateľmi <ph name="CUSTODIAN_EMAIL" /> a <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2274,7 +2275,6 @@
 <translation id="4218259925454408822">Prihlásiť sa do iného účtu</translation>
 <translation id="4219614746733932747">Ak ho povolíte, Blink použije mechanizmus priblíženia na zväčšenie obsahu pre škálovací faktor zariadenia.</translation>
 <translation id="4220865787605972627">Povolí kalibráciu farieb obrazovky v prípade, že obrazovka túto funkciu podporuje.</translation>
-<translation id="4233506668751282421">Povoliť zdieľanie zvuku medzi počítačmi</translation>
 <translation id="4235200303672858594">Celá obrazovka</translation>
 <translation id="4235813040357936597">Pridať účet k profilu <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Aplikáciu <ph name="PRODUCT_NAME" /> nie je možné zobraziť v tomto jazyku</translation>
@@ -2282,7 +2282,6 @@
 <translation id="4242577469625748426">Nastavenia pravidla sa nepodarilo nainštalovať na zariadenie: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Stránka <ph name="FULLSCREEN_ORIGIN" /> chce zakázať kurzor myši.</translation>
 <translation id="424546999567421758">Zistilo sa vysoké využitie disku</translation>
-<translation id="4247072926966606568">Keď je tento príznak zapnutý, okno s výberom zdieľania pracovnej plochy umožní používateľovi zvoliť, či sa má zdieľať zvuk.</translation>
 <translation id="424726838611654458">Vždy otvoriť v programe Adobe Reader</translation>
 <translation id="4249248555939881673">Čaká sa na sieťové pripojenie...</translation>
 <translation id="4249373718504745892">Táto stránka má zablokovaný prístup ku kamere a mikrofónu.</translation>
@@ -2355,7 +2354,6 @@
 <translation id="4358697938732213860">Pridať adresu</translation>
 <translation id="4359408040881008151">Nainštalované pre závislé rozšírenia.</translation>
 <translation id="4361190688154226069">Zacielenie prostredníctvom plochy v tvare obdĺžnika v zobrazeniach</translation>
-<translation id="4363372140743955595">Opätovné overenie správcu hesiel</translation>
 <translation id="4364444725319685468">Súbor <ph name="FILE_NAME" /> je stiahnutý</translation>
 <translation id="4364830672918311045">Zobrazovať upozornenia</translation>
 <translation id="4365673000813822030">Synchronizácia prestala pracovať.</translation>
@@ -2412,6 +2410,7 @@
 <translation id="4449935293120761385">Informácie o Automatickom dopĺňaní</translation>
 <translation id="4449996769074858870">Táto karta prehráva zvuk.</translation>
 <translation id="4450974146388585462">Diagnostikovať</translation>
+<translation id="4452426408005428395">Radšej nie</translation>
 <translation id="4454939697743986778">Tento certifikát nainštaloval správca systému.</translation>
 <translation id="445923051607553918">Pripojiť sa k sieti Wi-Fi</translation>
 <translation id="4462159676511157176">Vlastné menné servery</translation>
@@ -2489,7 +2488,6 @@
 <translation id="4594109696316595112">Jednorazová aktivácia: Funkciu Smart Lock aktivujete na tomto zariadení <ph name="DEVICE_TYPE" /> zadaním hesla. S funkciou Smart Lock sa bude dať toto zariadenie odomknúť vaším telefónom aj bez hesla. Ak chcete túto funkciu zmeniť alebo vypnúť, navštívte nastavenia zariadenia <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikácie a rozšírenia môže upraviť iba správca (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF Convertor</translation>
-<translation id="4601250583401186741">Spárovanie s nástrojom na ovládanie</translation>
 <translation id="4602466770786743961">Vždy povoliť stránkam <ph name="HOST" /> prístup ku kamere a mikrofónu</translation>
 <translation id="4605399136610325267">Pripojenie na Internet nie je k dispozícii</translation>
 <translation id="4608500690299898628">&amp;Nájsť...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">Povoliť</translation>
 <translation id="5045550434625856497">Nesprávne heslo</translation>
 <translation id="5048179823246820836">Severské</translation>
+<translation id="5048294425697652159">Povolenie klienta Quirks na zobrazenie kalibrácie</translation>
 <translation id="5053604404986157245">Náhodne generované heslo modulu TPM nie je k dispozícii. Po použití funkcie Powerwash je to normálne.</translation>
 <translation id="5053803681436838483">Nová dodacia adresa...</translation>
 <translation id="5055309315264875868">Zobraziť na stránke s nastaveniami nástroja na správu hesiel odkaz na správu synchronizovaných hesiel online.</translation>
@@ -2881,7 +2880,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Požadovať gestá na prehrávanie médií</translation>
 <translation id="5189060859917252173">Certifikát „<ph name="CERTIFICATE_NAME" />“ predstavuje certifikačnú autoritu.</translation>
-<translation id="5196117515621749903">Znova načítať bez použitia vyrovnávacej pamäte</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synchronizácia je dokončená.</translation>
@@ -2896,6 +2894,7 @@
 <translation id="521582610500777512">Fotka bola zahodená</translation>
 <translation id="5218183485292899140">Švajčiarska francúzska klávesnica</translation>
 <translation id="5218766986344577658">Kontextové okno na výber žiadaného odkazu</translation>
+<translation id="5220992698394817380">Povolenie aktivácie ponuky pre editor metód vstupu</translation>
 <translation id="5222676887888702881">Odhlásiť sa</translation>
 <translation id="5225324770654022472">Zobraziť skratku aplikácií</translation>
 <translation id="5227536357203429560">Pridať súkromnú sieť...</translation>
@@ -2938,6 +2937,7 @@
 <translation id="5271247532544265821">Prepínať medzi režimami zjednodušenej a tradičnej čínštiny</translation>
 <translation id="5271549068863921519">Uložiť heslo</translation>
 <translation id="5273628206174272911">Experimentálna navigácia v histórii pri posúvaní vo vodorovnom smere.</translation>
+<translation id="5275194674756975076">OK, obnoviť</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> z tohto webu</translation>
 <translation id="5275973617553375938">Obnovené súbory z Disku Google</translation>
 <translation id="527605719918376753">Stlmiť kartu</translation>
@@ -3011,6 +3011,7 @@
 <translation id="5368720394188453070">Telefón je uzamknutý. Ak chcete pokračovať, odomknite ho.</translation>
 <translation id="5369927996833026114">Objavte spúšťač aplikácií Chrome</translation>
 <translation id="5370819323174483825">&amp;Obnoviť</translation>
+<translation id="5372066618989754822">Povoľte prístup do novej ponuky editora metód vstupu na stránke Nastavenia jazyka.</translation>
 <translation id="5372529912055771682">Poskytnutý režim registrácie v tejto verzii operačného systému už nie je podporovaný. Uistite sa, že používate najnovšiu verziu a skúste to znova.</translation>
 <translation id="5374359983950678924">Zmeniť obrázok</translation>
 <translation id="5376169624176189338">Kliknutím prejdete naspäť. Pri dlhšom stlačení sa zobrazí história.</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">Názov:</translation>
 <translation id="5627086634964711283">Tiež určuje, ktorá stránka sa zobrazí po kliknutí na tlačidlo Domovská stránka.</translation>
 <translation id="5627259319513858869">Povolí použitie experimentálnych funkcií plátna, ktoré sú ešte vo vývoji.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Vzhľad Material Design v hornom paneli chrome prehliadača</translation>
 <translation id="5633060877636360447">Táto akcia natrvalo odstráni niekoľko položiek (najmenej <ph name="TOTAL_COUNT" />) z tohto zariadenia, ale nevymaže synchronizované položky z ostatných zariadení.</translation>
 <translation id="5636996382092289526">Pred použitím siete <ph name="NETWORK_ID" /> bude možno potrebné najprv <ph name="LINK_START" />prejsť na prihlasovaciu stránku siete<ph name="LINK_END" />, ktorá sa otvorí automaticky v priebehu niekoľkých sekúnd. Ak k tomu nedôjde, daná sieť sa nedá použiť.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">Zvýrazniť objekt so zameraním klávesnice</translation>
 <translation id="5678955352098267522">Čítať vaše údaje na: <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtrovať text v režime prehľadu</translation>
+<translation id="5683818630978268777">Experimentálne používateľské rozhranie na uzamknutie klávesnice</translation>
 <translation id="5684661240348539843">Identifikátor obsahu</translation>
 <translation id="569068482611873351">Importovať...</translation>
 <translation id="56907980372820799">Prepojiť údaje</translation>
@@ -3693,7 +3696,6 @@
 <translation id="6420676428473580225">Pridať na plochu</translation>
 <translation id="6422329785618833949">Fotka bola zrkadlovo obrátená</translation>
 <translation id="642282551015776456">Tento názov nie je možné použiť na pomenovanie súboru ani priečinka.</translation>
-<translation id="642322423610046417">Nepotrebné rozšírenia odstráňte pomocou kontextovej ponuky (pravým kliknutím myši).</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Chcete program Adobe Reader nastaviť ako predvolený program na zobrazovanie súborov PDF?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3764,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Experimentálna celá obrazovka s režimom zámky obrazovky, ktorý môžu používatelia ukončiť pridržaním klávesa Esc.</translation>
 <translation id="6527303717912515753">Zdieľať</translation>
 <translation id="6528546217685656218">Súkromný kľúč pre tento klientsky certifikát chýba alebo je neplatný.</translation>
 <translation id="653019979737152879">Prebieha synchronizácia súboru <ph name="FILE_NAME" />...</translation>
@@ -3943,6 +3946,7 @@
 <translation id="6825883775269213504">Ruština</translation>
 <translation id="6827236167376090743">Toto video sa bude prehrávať počas neurčitej doby.</translation>
 <translation id="6828153365543658583">Obmedziť prihlásenie na nasledujúcich používateľov:</translation>
+<translation id="6828860976882136098">Nepodarilo sa nastaviť automatické aktualizácie pre všetkých používateľov (chyba pri vykonávaní predbežnej kontroly: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Získajte pomoc so zariadením <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registrácia vo vašej organizácii</translation>
 <translation id="6830590476636787791">Animované prechody v príručke prvého spustenia</translation>
@@ -3965,7 +3969,6 @@
 <translation id="6860427144121307915">Otvoriť na karte</translation>
 <translation id="6862635236584086457">Všetky súbory uložené v tomto priečinku sa automaticky zálohujú online</translation>
 <translation id="6865313869410766144">Dáta automatického dopĺňania formulárov</translation>
-<translation id="6865319096921627602">Povoliť jednotný tok médií v systéme Android</translation>
 <translation id="6867678160199975333">Prepnúť na používateľa <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Vybraté začiarkavacie políčko</translation>
 <translation id="6870130893560916279">ukrajinská klávesnica</translation>
@@ -4005,7 +4008,7 @@
 <translation id="6934265752871836553">Použije kód pre presahujúce okraje, aby prehliadač Chrome vykreslil obsah rýchlejšie. Zmeny
         v tejto ceste pravdepodobne spôsobia, že sa množstvo obsahu nezobrazí správne.</translation>
 <translation id="6935367737854035550">Táto možnosť nastaví prvky vzhľadu Material Design na hornom paneli prehliadača Chrome.</translation>
-<translation id="6935867720248834680">Služby GMS nei sú k dispozícii</translation>
+<translation id="6935867720248834680">Služby GMS nie sú k dispozícii</translation>
 <translation id="6937152069980083337">Japonská metóda vstupu Google (pre americkú klávesnicu)</translation>
 <translation id="693807610556624488">Operácia zápisu prekročila maximálnu dĺžku atribútu na zariadení <ph name="DEVICE_NAME" />.</translation>
 <translation id="6939777852457331078">Klávesnica US Workman</translation>
@@ -4060,6 +4063,7 @@
 <translation id="7006017748900345484">Softvérový kódovač/dekodér videí WebRTC H.264</translation>
 <translation id="7006634003215061422">Dolný okraj</translation>
 <translation id="7006844981395428048">Zvuk vo formáte $1</translation>
+<translation id="7008270479623533562">Ak chcete toto rozšírenie spustiť, musíte obnoviť stránku. Na týchto webových stránkach ho môžete spúšťať aj automaticky pravým kliknutím myši na jeho ikonu.</translation>
 <translation id="7009045250432250765">Automatické dopĺňanie jediným kliknutím</translation>
 <translation id="7010160495478792664">Hardvérovo akcelerované dekódovanie videa (ak je k dispozícii).</translation>
 <translation id="7010400591230614821">Agresívna stratégia uvoľnenia karty</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">Otvoriť na karte</translation>
 <translation id="7257173066616499747">Siete Wi-Fi</translation>
 <translation id="7257666756905341374">Čítať údaje, ktoré kopírujete a prilepujete</translation>
-<translation id="7260002739296185724">Povoľte použitie rozhraní AV Foundation na zaznamenávanie videa a sledovanie zariadenia prehrávajúceho video v systéme OS X verzie 10.7 alebo novšej. Inak sa použije rozhranie QTKit.</translation>
 <translation id="7260504762447901703">Odvolať prístup</translation>
 <translation id="7262004276116528033">Túto prihlasovaciu službu hostí doména <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Výnimky prístupu k doplnkom mimo karantény</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">Povolenie offline stránok NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (aktuálny)</translation>
 <translation id="7321545336522791733">Server je nedostupný</translation>
-<translation id="7324841169865301118">Umožňuje používateľovi vybrať kartu na zdieľanie medzi počítačmi.</translation>
 <translation id="7325437708553334317">Rozšírenie Vysoký kontrast</translation>
 <translation id="7326565110843845436">Klepnutie na touchpad troma prstami</translation>
 <translation id="73289266812733869">Nevybraté</translation>
@@ -5015,7 +5017,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Autor fotografie:</translation>
 <translation id="8428213095426709021">Nastavenia</translation>
-<translation id="8432590265309978927">Vysoko experimentálna podpora pre vykreslenie prvkov iframe na viacerých stránkach v samostatných procesoch.</translation>
 <translation id="8432745813735585631">americká klávesnica s rozložením klávesov Colemak</translation>
 <translation id="8434177709403049435">&amp;Kódovanie</translation>
 <translation id="8434480141477525001">Port ladenia klienta NaCl</translation>
@@ -5212,7 +5213,6 @@
 <translation id="8713979477561846077">Povoliť automatické opravy fyzickej klávesnice pre americkú klávesnicu, ktorá môže poskytovať návrhy počas písania na fyzickej klávesnici.</translation>
 <translation id="871476437400413057">uloženým heslám Google</translation>
 <translation id="8714838604780058252">Grafika na pozadí</translation>
-<translation id="8716065142695381595">Povolí jednotný (Android aj stolné počítače) tok médií v systéme Android.</translation>
 <translation id="8722421161699219904">Americká klávesnica s medzinárodným rozložením klávesov</translation>
 <translation id="872451400847464257">Upraviť vyhľadávací mechanizmus</translation>
 <translation id="8724859055372736596">&amp;Zobraziť v priečinku</translation>
@@ -5232,6 +5232,7 @@
 <translation id="8737685506611670901">Otvárať odkazy protokolu <ph name="PROTOCOL" /> a nie aplikáciu <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Spresnenie pozície dotykového gesta s cieľom kompenzácie nižšej kvality rozlíšenia dotyku v porovnaní s myšou.</translation>
+<translation id="8743712320294854924">Zobraziť rozšírené možnosti vstupu na poličke.</translation>
 <translation id="874420130893181774">Metóda vstupu tradičnej Pchin-jin</translation>
 <translation id="8744525654891896746">Vyberte avatar pre tohto kontrolovaného používateľa</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5301,6 +5302,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Prepnutie módu klávesom Shift</translation>
 <translation id="8852742364582744935">Boli pridané nasledujúce aplikácie a rozšírenia:</translation>
+<translation id="8853611566624224021">Povoľte načítanie súborov obrazovky icc zo servera Quirks na farebnú kalibráciu obrazoviek.</translation>
 <translation id="885381502874625531">Bieloruská klávesnica</translation>
 <translation id="8856844195561710094">Nepodarilo sa zastaviť vyhľadávanie zariadení Bluetooth.</translation>
 <translation id="885701979325669005">Úložisko</translation>
@@ -5350,7 +5352,6 @@
 <translation id="8925458182817574960">&amp;Nastavenia</translation>
 <translation id="8926389886865778422">Túto otázku už nezobrazovať</translation>
 <translation id="8926518602592448999">Zakázanie rozšírení spustených v režime vývojára</translation>
-<translation id="8929454297483336498">Použitie rozhraní AV Foundation API systému Mac OS X (namiesto rozhrania QTKit)</translation>
 <translation id="8931394284949551895">Nové zariadenia</translation>
 <translation id="8932730422557198035">Použitie rozhrania Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Zobraziť v aplikácii Finder</translation>
@@ -5364,6 +5365,7 @@
 <translation id="894360074127026135">Netscape – medzinárodný prestup na vyššiu edíciu</translation>
 <translation id="8944779739948852228">Našla sa tlačiareň</translation>
 <translation id="8946359700442089734">Na tomto zariadení <ph name="IDS_SHORT_PRODUCT_NAME" /> neboli úplne povolené funkcie ladenia</translation>
+<translation id="8946784827990177241">Povoľte podporu protokolu WebUSB.</translation>
 <translation id="89515141420106838">Povolí aplikáciu Galéria Internetového obchodu Chrome pre ovládače tlačiarní. Aplikácia hľadá v Internetovom obchode Chrome rozšírenia, ktoré podporujú tlač do tlačiarní s rozhraním USB a konkrétnym identifikátorom USB.</translation>
 <translation id="895347679606913382">Spúšťa sa...</translation>
 <translation id="8954952943849489823">Presun zlyhal, neočakávaná chyba: $1</translation>
@@ -5507,6 +5509,7 @@
 <translation id="9154194610265714752">Aktualizované</translation>
 <translation id="9154418932169119429">Tento obrázok nie je k dispozícii v režime offline.</translation>
 <translation id="91568222606626347">Vytvoriť odkaz...</translation>
+<translation id="9157697743260533322">Nepodarilo sa nastaviť automatické aktualizácie pre všetkých používateľov (chyba pri spustení predbežnej kontroly: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ojoj! Pri overení totožnosti sa vyskytla chyba sieťovej komunikácie. Skontrolujte pripojenie k sieti a skúste to znova.</translation>
 <translation id="9159562891634783594">Povoliť registráciu neregistrovaných cloudových tlačiarní z ukážky tlače.</translation>
 <translation id="9166510596677678112">Poslať e-mail tejto osobe</translation>
@@ -5518,7 +5521,6 @@
 <translation id="9170848237812810038">&amp;Naspäť</translation>
 <translation id="9170884462774788842">Iný program v počítači pridal motív, ktorý môže zmeniť spôsob fungovania prehliadača Chrome.</translation>
 <translation id="9177499212658576372">Momentálne ste pripojený/-á k sieti <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Spravovať kreditné karty</translation>
 <translation id="917858577839511832">Vyjednávanie s protokolom DTLS 1.2 pre WebRTC</translation>
 <translation id="917861274483335838">Spravovať blokovanie doplnkov...</translation>
 <translation id="9179348476548754105">Určuje, ako správca hesiel narába s automatickým dopĺňaním identifikačných údajov na použitie na stránkach s autorizáciami transakcií.</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index c799fad9..775753c 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -159,7 +159,6 @@
     Profile boste morali znova nastaviti.<ph name="BR" />
     <ph name="BR" />
     Na naslednjem zaslonu nam pošljite povratne informacije, da bomo lahko odpravili težavo.</translation>
-<translation id="1216954813581739968">Omogočanje zavihka za skupno rabo namizja</translation>
 <translation id="121827551500866099">Pokaži vse prenose ...</translation>
 <translation id="122082903575839559">Algoritem podpisa potrdila</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 s šifriranjem RSA</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL z »%s« namesto poizvedbe</translation>
 <translation id="1546280085599573572">Zaradi te razširitve se je spremenila stran, ki je prikazana, ko kliknete gumb za začetno stran.</translation>
 <translation id="1546795794523394272">Pozdravljeni v Chromeboxu za sestanke!</translation>
+<translation id="1547572086206517271">Potrebna je osvežitev</translation>
 <translation id="1547964879613821194">kanadska angleščina</translation>
 <translation id="1548132948283577726">Mesta, ki nikoli ne shranjujejo gesel, bodo prikazana tukaj.</translation>
 <translation id="1549045574060481141">Potrdi prenos</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">Omogoči lokalno shranjevanje nedavno obiskanih strani za uporabo brez povezave. Omogočene morajo biti strani brez povezave.</translation>
 <translation id="1891668193654680795">Zaupaj temu potrdilu za prepoznavanje proizvajalcev programske opreme.</translation>
 <translation id="189210018541388520">Odpri v celozaslonskem načinu</translation>
+<translation id="1892754076732315533">Poenostavljena nova uporabniška izkušnja ob odpiranju celozaslonskega načina, ki se sproži na strani, oziroma stanj zaklepanja kazalca miške.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Potek omogočanja za oblak ni uspel</translation>
 <translation id="189358972401248634">Drugi jeziki</translation>
@@ -1324,6 +1325,7 @@
 <translation id="288042212351694283">Dostop do naprav z univerzalnim drugim dejavnikom</translation>
 <translation id="2881966438216424900">Zadnji dostop:</translation>
 <translation id="2882943222317434580">Izdelek <ph name="IDS_SHORT_PRODUCT_NAME" /> se bo v kratkem znova zagnal in ponastavil</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Upravitelj opravil</translation>
 <translation id="2887525882758501333">Dokument PDF</translation>
 <translation id="2888807692577297075">Noben element se ne ujema s poizvedbo &lt;b&gt;»<ph name="SEARCH_STRING" />«&lt;/b&gt;</translation>
@@ -1754,6 +1756,7 @@
 <translation id="3479552764303398839">Ne zdaj</translation>
 <translation id="3480892288821151001">Zasidraj okno levo</translation>
 <translation id="3481915276125965083">Na tej strani so blokirana ta pojavna okna:</translation>
+<translation id="3482214069979148937">Pridržite |<ph name="ACCELERATOR" />| za zapiranje celozaslonskega načina</translation>
 <translation id="3484869148456018791">Prenesite novo potrdilo</translation>
 <translation id="3487007233252413104">anonimna funkcija</translation>
 <translation id="348771913750618459">Poteki prijave na podlagi oznake »iframe«</translation>
@@ -1848,7 +1851,6 @@
 <translation id="3593965109698325041">Omejitve imena potrdila</translation>
 <translation id="3595596368722241419">Baterija je polna</translation>
 <translation id="3600456501114769456">Skrbnik je onemogočil dostop do lokalnih datotek v vaši napravi.</translation>
-<translation id="3601395307734599350">Vse vaše razširitve so tukaj</translation>
 <translation id="3603385196401704894">kanadska francoščina</translation>
 <translation id="3603622770190368340">Prejemanje omrežnega potrdila</translation>
 <translation id="3605780360466892872">Srajca</translation>
@@ -2231,7 +2233,6 @@
 <translation id="4151403195736952345">Globalno uporabi privzete nastavitve (zaznavanje)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 zavihek}one{# zavihek}two{# zavihka}few{# zavihki}other{# zavihkov}}</translation>
 <translation id="4154664944169082762">Prstni odtisi</translation>
-<translation id="4157188838832721931">Onemogoči zahtevanje gesla za operacijski sistem od uporabnika pred razkritjem gesel na strani z gesli.</translation>
 <translation id="4157869833395312646">Microsoftovo strežniško nadzorovano šifriranje</translation>
 <translation id="4158739975813877944">Odpri seznam predvajanja</translation>
 <translation id="4159681666905192102">To je račun za otroke, ki ga upravljata <ph name="CUSTODIAN_EMAIL" /> in <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2275,7 +2276,6 @@
 <translation id="4218259925454408822">Prijava z drugim računom</translation>
 <translation id="4219614746733932747">Če je omogočeno, Blink uporablja mehanizem za povečavo/pomanjšavo za spreminjanje velikosti vsebine kot faktor spreminjanja velikosti za napravo.</translation>
 <translation id="4220865787605972627">Omogočanje umerjanje barv zaslona, če zaslon to funkcijo podpira.</translation>
-<translation id="4233506668751282421">Omogočanje zvoka za skupno rabo namizja</translation>
 <translation id="4235200303672858594">Celoten zaslon</translation>
 <translation id="4235813040357936597">Dodaj račun za <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Vmesnika <ph name="PRODUCT_NAME" /> ni mogoče prikazati v tem jeziku</translation>
@@ -2283,7 +2283,6 @@
 <translation id="4242577469625748426">Namestitev nastavitev pravilnika v napravi ni uspela: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Stran <ph name="FULLSCREEN_ORIGIN" /> želi onemogočiti miškin kazalec.</translation>
 <translation id="424546999567421758">Zaznana je bila visoka uporaba diska</translation>
-<translation id="4247072926966606568">Če je ta zastavica omogočena, bo lahko uporabnik v oknu z izbirnikom namizja izbral, ali želi dati v skupno rabo zvok.</translation>
 <translation id="424726838611654458">Vedno odpri v Adobe Readerju</translation>
 <translation id="4249248555939881673">Čakanje na povezavo z omrežjem ...</translation>
 <translation id="4249373718504745892">Tej strani je onemogočen dostop do kamere in mikrofona.</translation>
@@ -2356,7 +2355,6 @@
 <translation id="4358697938732213860">Dodajanje naslova </translation>
 <translation id="4359408040881008151">Nameščeno zaradi odvisnih razširitev.</translation>
 <translation id="4361190688154226069">Ciljanje na podlagi pravokotnika v pogledih</translation>
-<translation id="4363372140743955595">Vnovično preverjanje pristnosti upravitelja gesel</translation>
 <translation id="4364444725319685468">Datoteka <ph name="FILE_NAME" /> je prenesena</translation>
 <translation id="4364830672918311045">Prikaz obvestil</translation>
 <translation id="4365673000813822030">Ojej, Google Sinhronizacija je nehala delovati.</translation>
@@ -2413,6 +2411,7 @@
 <translation id="4449935293120761385">O samodejnem izpolnjevanju</translation>
 <translation id="4449996769074858870">Na tem zavihku se predvaja zvok.</translation>
 <translation id="4450974146388585462">Diagnosticiraj</translation>
+<translation id="4452426408005428395">Prekliči</translation>
 <translation id="4454939697743986778">To potrdilo je namestil skrbnik sistema.</translation>
 <translation id="445923051607553918">Pridružite se omrežju Wi-Fi</translation>
 <translation id="4462159676511157176">Imenski strežniki po meri</translation>
@@ -2490,7 +2489,6 @@
 <translation id="4594109696316595112">Enkratno aktiviranje: vnesite geslo, da aktivirate funkcijo Smart Lock v tej napravi: <ph name="DEVICE_TYPE" />. Z njo lahko telefon odklene to napravo brez gesla. To funkcijo lahko spremenite ali izklopite v nastavitvah za napravo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Aplikacije in razširitve lahko spreminja samo skrbnik (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Pretvornik v datoteke EMF</translation>
-<translation id="4601250583401186741">Seznanjanje s krmilnikom</translation>
 <translation id="4602466770786743961">Vedno omogoči gostitelju <ph name="HOST" /> dostop do kamere in mikrofona</translation>
 <translation id="4605399136610325267">Internetna povezava ni vzpostavljena</translation>
 <translation id="4608500690299898628">&amp;Iskanje ...</translation>
@@ -2786,6 +2784,7 @@
 <translation id="5039804452771397117">Dovoli</translation>
 <translation id="5045550434625856497">Napačno geslo</translation>
 <translation id="5048179823246820836">Nordijsko</translation>
+<translation id="5048294425697652159">Omogočanje odjemalca Quirks Client za umerjanje zaslona.</translation>
 <translation id="5053604404986157245">Naključno ustvarjeno geslo TPM ni na voljo. To je običajno po izvedbi funkcije Powerwash.</translation>
 <translation id="5053803681436838483">Nov naslov za pošiljanje ...</translation>
 <translation id="5055309315264875868">Prikaz povezave na strani nastavitev upravitelja gesel za upravljanje sinhroniziranih gesel v spletu.</translation>
@@ -2883,7 +2882,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Zahteva za poteze za predvajanje predstavnosti</translation>
 <translation id="5189060859917252173">Potrdilo »<ph name="CERTIFICATE_NAME" />« predstavlja overitelja potrdil.</translation>
-<translation id="5196117515621749903">Znova naloži in prezre medpomnilnik</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Sinhroniziranje končano.</translation>
@@ -2898,6 +2896,7 @@
 <translation id="521582610500777512">Fotografija je bila zavržena</translation>
 <translation id="5218183485292899140">švicarska francoščina</translation>
 <translation id="5218766986344577658">Pojavno okno za razreševanje dvoumnosti glede povezav</translation>
+<translation id="5220992698394817380">Vklop omogočanja menija za UNV-je</translation>
 <translation id="5222676887888702881">Odjava</translation>
 <translation id="5225324770654022472">Prikaži bližnjico do aplikacij</translation>
 <translation id="5227536357203429560">Dodaj zasebno omrežje ...</translation>
@@ -2940,6 +2939,7 @@
 <translation id="5271247532544265821">Preklopi med načinom poenostavljene/tradicionalne kitajščine</translation>
 <translation id="5271549068863921519">Shrani geslo</translation>
 <translation id="5273628206174272911">Poskusno krmarjenje po zgodovini z odzivom na vodoravno drsenje čez rob strani.</translation>
+<translation id="5275194674756975076">V redu, osveži</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> s tega spletnega mesta</translation>
 <translation id="5275973617553375938">Obnovljene datoteke iz Googla Drive</translation>
 <translation id="527605719918376753">Izklop zvoka zavihka</translation>
@@ -3013,6 +3013,7 @@
 <translation id="5368720394188453070">Telefon je zaklenjen. Za dostop ga odklenite.</translation>
 <translation id="5369927996833026114">Odkrijte Chromov zaganjalnik aplikacij</translation>
 <translation id="5370819323174483825">&amp;Znova naloži</translation>
+<translation id="5372066618989754822">Omogočanje dostopa do novega menija za UNV-je na strani z jezikovnimi nastavitvami.</translation>
 <translation id="5372529912055771682">Ta različica operacijskega sistema ne podpira navedenega načina včlanitve. Poskrbite, da imate nameščeno najnovejšo različico, in poskusite znova.</translation>
 <translation id="5374359983950678924">Spremeni sliko</translation>
 <translation id="5376169624176189338">Kliknite, če se želite vrniti nazaj, za ogled zgodovine pa zadržite</translation>
@@ -3199,6 +3200,7 @@
 <translation id="5626134646977739690">Ime:</translation>
 <translation id="5627086634964711283">Določa tudi, katera stran je prikazana, ko kliknete gumb za domačo stran.</translation>
 <translation id="5627259319513858869">Omogoča uporabo poskusnih funkcij platna, ki se še vedno v razvijajo.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Materialno oblikovanje v zgornji prikazni površini brskalnika</translation>
 <translation id="5633060877636360447">S tem bo iz te naprave izbrisanih vsaj toliko elementov: <ph name="TOTAL_COUNT" />. Pri tem ne bodo izbrisani sinhronizirani elementi iz drugih naprav.</translation>
 <translation id="5636996382092289526">Če želite uporabljati omrežje <ph name="NETWORK_ID" />, morate najprej <ph name="LINK_START" />obiskati stran za prijavo v omrežje<ph name="LINK_END" />, ki se bo samodejno odprla čez nekaj sekund. Če se ne odpre, omrežja ne morete uporabljati.</translation>
@@ -3229,6 +3231,7 @@
 <translation id="5678862612529498267">Označi predmet z izbiro s tipkovnico</translation>
 <translation id="5678955352098267522">Branje vaših podatkov na spletnem mestu <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Filtriranje besedila v načinu pregleda</translation>
+<translation id="5683818630978268777">Poskusni uporabniški vmesnik z zaklepanjem tipkovnice.</translation>
 <translation id="5684661240348539843">ID sredstva</translation>
 <translation id="569068482611873351">Uvozi ...</translation>
 <translation id="56907980372820799">Poveži podatke</translation>
@@ -3696,7 +3699,6 @@
 <translation id="6420676428473580225">Dodajanje na namizje</translation>
 <translation id="6422329785618833949">Fotografija je zrcaljena</translation>
 <translation id="642282551015776456">Tega imena ne morete uporabiti kot ime za datoteko ali mapo</translation>
-<translation id="642322423610046417">S kontekstnim menijem (klik z desno tipko miške) odstranite razširitve, ki jih ne potrebujete.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Želite kot privzeti bralnik dokumentov PDF uporabljati Adobe Reader?</translation>
 <translation id="6425092077175753609">Materialno</translation>
@@ -3766,6 +3768,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Poskusni celozaslonski način z načinom zaklepanja tipkovnice, ki zahteva, da uporabniki za izhod pridržijo tipko Esc.</translation>
 <translation id="6527303717912515753">Skupna raba</translation>
 <translation id="6528546217685656218">Zasebni ključ za to potrdilo odjemalca manjka ali je neveljaven.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> – sinhroniziranje ...</translation>
@@ -3945,6 +3948,7 @@
 <translation id="6825883775269213504">ruščina</translation>
 <translation id="6827236167376090743">Ta videoposnetek se bo neprekinjeno stalno predvajal.</translation>
 <translation id="6828153365543658583">Omeji prijavo na te uporabnike:</translation>
+<translation id="6828860976882136098">Nastavitev samodejnih posodobitev za vse uporabnike ni uspela (napaka preverjanj pred izvajanjem: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Poiščite pomoč za napravo <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Včlanite se v svojo organizacijo</translation>
 <translation id="6830590476636787791">Animirani prehodi v vadnici za prvi zagon</translation>
@@ -3967,7 +3971,6 @@
 <translation id="6860427144121307915">Odpri na zavihku</translation>
 <translation id="6862635236584086457">Datoteke, shranjene v teh mapi, se samodejno varnostno kopirajo v splet</translation>
 <translation id="6865313869410766144">Podatki za samodejno izpolnjevanje obrazcev</translation>
-<translation id="6865319096921627602">Omogoča enotno komponento za predstavnost v Androidu.</translation>
 <translation id="6867678160199975333">Preklop na <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Potrjeno potrditveno polje</translation>
 <translation id="6870130893560916279">Ukrajinska tipkovnica</translation>
@@ -4062,6 +4065,7 @@
 <translation id="7006017748900345484">Programski kodirnik/dekodirnik videoposnetkov WebRTC H.264</translation>
 <translation id="7006634003215061422">Spodnji rob</translation>
 <translation id="7006844981395428048">Zvočna datoteka $1</translation>
+<translation id="7008270479623533562">Če želite zagnati to razširitev, morate osvežiti stran. Če z desnim gumbom miške kliknete ikono razširitve, lahko nastavite, da se razširitev na tem spletnem mestu zažene samodejno.</translation>
 <translation id="7009045250432250765">Samodejno izpolnjevanje z enim klikom</translation>
 <translation id="7010160495478792664">Dekodiranje videa s strojnim pospeševanjem, če je na voljo.</translation>
 <translation id="7010400591230614821">Agresivna strategija sproščanja zavihkov</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">Odpri na zavihku</translation>
 <translation id="7257173066616499747">Omrežja Wi-Fi</translation>
 <translation id="7257666756905341374">Branje podatkov, ki jih kopirate in prilepite</translation>
-<translation id="7260002739296185724">Omogoči uporabo ogrodja AVFoundation za zajemanje videa in nadzor videonaprav v sistemu OS X 10.7 in novejših. Namesto tega bo uporabljeno ogrodje QTKit.</translation>
 <translation id="7260504762447901703">Ukinitev dostopa</translation>
 <translation id="7262004276116528033">Prijavno storitev gosti <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Izjeme za dostop do vtičnika, ki ni v peskovniku</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">Omogoči strani brez povezave za nov zavihek s povezavami</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (trenutni)</translation>
 <translation id="7321545336522791733">Strežnik ni dosegljiv</translation>
-<translation id="7324841169865301118">Omogočanje uporabnika za izbiro zavihka za skupno rabo namizja.</translation>
 <translation id="7325437708553334317">Visokokontrastna razširitev</translation>
 <translation id="7326565110843845436">Klik s tremi prsti na sledilni ploščici</translation>
 <translation id="73289266812733869">Neizbrano</translation>
@@ -5015,7 +5017,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Avtor fotografije:</translation>
 <translation id="8428213095426709021">Nastavitve</translation>
-<translation id="8432590265309978927">Strogo poskusna podpora za upodabljanje elementov iframe na več spletnih mestih v ločenih postopkih.</translation>
 <translation id="8432745813735585631">Angleška tipkovnica Colemak (ZDA)</translation>
 <translation id="8434177709403049435">&amp;Kodiranje</translation>
 <translation id="8434480141477525001">Vrata za odpravljanje napak NaCl</translation>
@@ -5213,7 +5214,6 @@
 <translation id="8713979477561846077">Omogočanje samodejnega popravljanja za fizično angleško tipkovnico (Združene države), ki ponuja takšne predloge, kot bi tipkali na fizično tipkovnico.</translation>
 <translation id="871476437400413057">Gesla, ki jih je shranil Google</translation>
 <translation id="8714838604780058252">Grafika v ozadju</translation>
-<translation id="8716065142695381595">Omogoča enotno komponento (Android in namizni računalniki) za predstavnost v Androidu.</translation>
 <translation id="8722421161699219904">Mednarodna tipkovnica za angleščino (Združene države)</translation>
 <translation id="872451400847464257">Urejanje iskalnika</translation>
 <translation id="8724859055372736596">&amp;Pokaži v mapi</translation>
@@ -5233,6 +5233,7 @@
 <translation id="8737685506611670901">Odpiranje povezav za <ph name="PROTOCOL" /> namesto <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Podrobnejše določanje položaja poteze dotika za izboljšanje učinkovitosti dotikov s slabo ločljivostjo v primerjavi z miško.</translation>
+<translation id="8743712320294854924">Prikaz razširjenih možnosti vnosa na polici.</translation>
 <translation id="874420130893181774">Način vnosa tradicionalni pinjin</translation>
 <translation id="8744525654891896746">Izberite avatarja za tega zaščitenega uporabnika</translation>
 <translation id="8744641000906923997">Romadži</translation>
@@ -5302,6 +5303,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Preklop načina s tipko Shift</translation>
 <translation id="8852742364582744935">Dodane so te aplikacije in razširitve:</translation>
+<translation id="8853611566624224021">Omogočanje pridobivanja datotek za prikaz icc iz strežnika Quirks Server za umerjanje barv zaslona.</translation>
 <translation id="885381502874625531">Beloruska tipkovnica</translation>
 <translation id="8856844195561710094">Iskanja naprave Bluetooth ni bilo mogoče ustaviti.</translation>
 <translation id="885701979325669005">Shramba</translation>
@@ -5351,7 +5353,6 @@
 <translation id="8925458182817574960">&amp;Nastavitve</translation>
 <translation id="8926389886865778422">Ne sprašuj več</translation>
 <translation id="8926518602592448999">Onemogočanje razširitev za razvijalski način</translation>
-<translation id="8929454297483336498">Uporaba API-jev za ogrodje AVFoundation v sistemu Mac OS X namesto ogrodja QTKit</translation>
 <translation id="8931394284949551895">Nove naprave</translation>
 <translation id="8932730422557198035">Uporaba API-ja Android Midi</translation>
 <translation id="8933960630081805351">&amp;Pokaži v Finderju</translation>
@@ -5365,6 +5366,7 @@
 <translation id="894360074127026135">Nadgradnja Netscape International</translation>
 <translation id="8944779739948852228">Tiskalnik je zaznan</translation>
 <translation id="8946359700442089734">V tej napravi niso bile v celoti omogočene funkcije za odpravljanje napak: <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Omogočanje podpore za WebUSB.</translation>
 <translation id="89515141420106838">Omogoči aplikacijo Galerija za Spletno trgovino Chrome za gonilnike tiskalnikov. Aplikacija po Spletni trgovini Chrome išče razširitve, ki podpirajo tiskanje s tiskalniki USB z določenim ID-jem za USB.</translation>
 <translation id="895347679606913382">Začetek ...</translation>
 <translation id="8954952943849489823">Premikanje ni uspelo, nepričakovana napaka: $1</translation>
@@ -5509,6 +5511,7 @@
 <translation id="9154194610265714752">Posodobljeno</translation>
 <translation id="9154418932169119429">Ta slika ni na voljo brez povezave.</translation>
 <translation id="91568222606626347">Ustvari bližnjico ...</translation>
+<translation id="9157697743260533322">Nastavitev samodejnih posodobitev za vse uporabnike ni uspela (napaka preverjanj pred zagonom: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Ojej!  Težava z omrežno komunikacijo med preverjanjem pristnosti.  Preverite omrežno povezavo in poskusite znova.</translation>
 <translation id="9159562891634783594">Omogoči registriranje neregistriranih tiskalnikov v oblaku v predogledu tiskanja.</translation>
 <translation id="9166510596677678112">Pošlji tej osebi e-poštno sporočilo</translation>
@@ -5520,7 +5523,6 @@
 <translation id="9170848237812810038">&amp;Razveljavi</translation>
 <translation id="9170884462774788842">Drug program v računalniku je dodal temo, ki lahko spremeni način delovanja Chroma.</translation>
 <translation id="9177499212658576372">Trenutno ste povezani z omrežjem <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Upravljanje kreditnih kartic</translation>
 <translation id="917858577839511832">Pogajanje s protokolom DTLS 1.2 za tehnologijo WebRTC</translation>
 <translation id="917861274483335838">Upravljanje blokiranja vtičnikov ...</translation>
 <translation id="9179348476548754105">Način, kako upravitelj gesel obravnava samodejno izpolnjevanje poverilnice za sinhronizacijo samo za transakcijske strani za vnovično preverjanje pristnosti.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 8f9dbba2..f13ce2d 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -159,7 +159,6 @@
     Мораћете да поново подесите профил.<ph name="BR" />
     <ph name="BR" />
     На следећем екрану пошаљите повратне информације које ће нам помоћи да решимо проблем.</translation>
-<translation id="1216954813581739968">Омогући картицу за дељење радне површине.</translation>
 <translation id="121827551500866099">Прикажи сва преузимања...</translation>
 <translation id="122082903575839559">Алгоритам потписа сертификата</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 са RSA шифровањем</translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">URL са %s уместо упита</translation>
 <translation id="1546280085599573572">Овај додатак је променио страницу која се приказује када кликнете на дугме Почетна.</translation>
 <translation id="1546795794523394272">Добро дошли у Chromebox за састанке!</translation>
+<translation id="1547572086206517271">Треба да освежите</translation>
 <translation id="1547964879613821194">канадска енглеска</translation>
 <translation id="1548132948283577726">Овде ће се приказати сајтови који никада не чувају лозинке.</translation>
 <translation id="1549045574060481141">Потврда преузимања</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">Омогућава да се недавно посећене странице локално чувају за офлајн коришћење. Потребно је да буду омогућене Офлајн странице.</translation>
 <translation id="1891668193654680795">Овај сертификат је поуздан за идентификацију произвођача софтвера.</translation>
 <translation id="189210018541388520">Отвори цео екран</translation>
+<translation id="1892754076732315533">Поједностављени нови кориснички доживљај при уласку у режим целог екрана који активира страница или режим закључавања показивача миша.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Ток доделе клауда није успео</translation>
 <translation id="189358972401248634">Други језици</translation>
@@ -1319,6 +1320,7 @@
 <translation id="288042212351694283">Приступ универзалним уређајима за 2. фактор</translation>
 <translation id="2881966438216424900">Последњи приступ:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> ће се одмах поново покренути и ресетовати</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Менаџер задатака</translation>
 <translation id="2887525882758501333">PDF документ</translation>
 <translation id="2888807692577297075">Ниједна ставка се не подудара са упитом &lt;b&gt;„<ph name="SEARCH_STRING" />“&lt;/b&gt;</translation>
@@ -1749,6 +1751,7 @@
 <translation id="3479552764303398839">Не сада</translation>
 <translation id="3480892288821151001">Спајање прозора са леве стране</translation>
 <translation id="3481915276125965083">Следећи искачући прозори су блокирани на овој страници:</translation>
+<translation id="3482214069979148937">Притисните и задржите |<ph name="ACCELERATOR" />| да бисте изашли из режима целог екрана</translation>
 <translation id="3484869148456018791">Набави нови сертификат</translation>
 <translation id="3487007233252413104">анонимна функција</translation>
 <translation id="348771913750618459">Токови пријављивања засновани на iframe-у</translation>
@@ -1843,7 +1846,6 @@
 <translation id="3593965109698325041">Ограничења назива сертификата </translation>
 <translation id="3595596368722241419">Батерија је пуна</translation>
 <translation id="3600456501114769456">Администратор је онемогућио приступ локалним датотекама на уређају.</translation>
-<translation id="3601395307734599350">Сви додаци се налазе овде</translation>
 <translation id="3603385196401704894">канадска француска</translation>
 <translation id="3603622770190368340">Добијање сертификата мреже</translation>
 <translation id="3605780360466892872">Јапи</translation>
@@ -2226,7 +2228,6 @@
 <translation id="4151403195736952345">Користи глобалну подразумевану вредност (Откривај)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 картица}one{# картица}few{# картице}other{# картица}}</translation>
 <translation id="4154664944169082762">Отисци</translation>
-<translation id="4157188838832721931">Онемогућава захтевање лозинке за ОС од корисника пре откривања лозинки на страници са лозинкама.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">Отвори плејлисту</translation>
 <translation id="4159681666905192102">Ово је налог за децу којим управљају <ph name="CUSTODIAN_EMAIL" /> и <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2270,7 +2271,6 @@
 <translation id="4218259925454408822">Пријави ме на други налог</translation>
 <translation id="4219614746733932747">Ако омогућите ову опцију, Blink користи механизам за зумирање да би променио величину садржаја ради фактора размере уређаја.</translation>
 <translation id="4220865787605972627">Омогућава калибрацију боја екрана ако екран подржава ту функцију.</translation>
-<translation id="4233506668751282421">Омогући звук за дељење радне површине</translation>
 <translation id="4235200303672858594">Цео екран</translation>
 <translation id="4235813040357936597">Додај налог за <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Није могуће приказати <ph name="PRODUCT_NAME" /> на овом језику</translation>
@@ -2278,7 +2278,6 @@
 <translation id="4242577469625748426">Није успело инсталирање подешавања смерница на уређају: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> жели да онемогући курсор.</translation>
 <translation id="424546999567421758">Откривена је велика искоришћеност диска</translation>
-<translation id="4247072926966606568">Када је ова ознака укључена, прозор бирача за дељење радне површине ће омогућити кориснику да бира да ли жели да дели звук.</translation>
 <translation id="424726838611654458">Увек отвори у Adobe Reader-у</translation>
 <translation id="4249248555939881673">Чека се мрежна веза...</translation>
 <translation id="4249373718504745892">Овој страници је забрањен приступ камери и микрофону.</translation>
@@ -2351,7 +2350,6 @@
 <translation id="4358697938732213860">Додај адресу</translation>
 <translation id="4359408040881008151">Инсталиран је због зависних додатака.</translation>
 <translation id="4361190688154226069">Циљање у приказима засновано на правоугаоним површинама</translation>
-<translation id="4363372140743955595">Поновна потврда аутентичности менаџера лозинки</translation>
 <translation id="4364444725319685468">Преузели сте <ph name="FILE_NAME" /></translation>
 <translation id="4364830672918311045">Приказуј обавештења</translation>
 <translation id="4365673000813822030">Упс, синхронизација је престала да функционише.</translation>
@@ -2408,6 +2406,7 @@
 <translation id="4449935293120761385">О аутоматском попуњавању</translation>
 <translation id="4449996769074858870">Ова картица репродукује звук.</translation>
 <translation id="4450974146388585462">Дијагностикуј</translation>
+<translation id="4452426408005428395">Нема везе</translation>
 <translation id="4454939697743986778">Администратор система је инсталирао овај сертификат.</translation>
 <translation id="445923051607553918">Придружите се Wi-Fi мрежи</translation>
 <translation id="4462159676511157176">Прилагођени сервери назива</translation>
@@ -2485,7 +2484,6 @@
 <translation id="4594109696316595112">Једнократна активација: Унесите лозинку да бисте активирали Smart Lock на овом <ph name="DEVICE_TYPE" />-у. Помоћу Smart Lock-а телефон ће откључати овај уређај – без лозинке. Да бисте променили или искључили ову функцију, посетите подешавања <ph name="DEVICE_TYPE" />-а.</translation>
 <translation id="4595560905247879544">Апликације и додатке може да мења само менаџер (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF конвертор</translation>
-<translation id="4601250583401186741">Упарите са контролером</translation>
 <translation id="4602466770786743961">Увек дозволи да <ph name="HOST" /> приступа камери и микрофону</translation>
 <translation id="4605399136610325267">Није успостављена веза са интернетом</translation>
 <translation id="4608500690299898628">&amp;Пронађи...</translation>
@@ -2781,6 +2779,7 @@
 <translation id="5039804452771397117">Дозволи</translation>
 <translation id="5045550434625856497">Нетачна лозинка</translation>
 <translation id="5048179823246820836">нордијски</translation>
+<translation id="5048294425697652159">Омогући Quirks клијента за калибрацију екрана.</translation>
 <translation id="5053604404986157245">Насумично генерисана лозинка за модул поуздане платформе није доступна. То је нормално после Powerwash-а.</translation>
 <translation id="5053803681436838483">Нова адреса за испоруку...</translation>
 <translation id="5055309315264875868">Приказује линк на страници подешавања менаџера лозинки ради управљања синхронизованим лозинкама онлајн.</translation>
@@ -2878,7 +2877,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Покрети као услов за репродукцију медија</translation>
 <translation id="5189060859917252173">Сертификат „<ph name="CERTIFICATE_NAME" />“ представља ауторитет за издавање сертификата.</translation>
-<translation id="5196117515621749903">Поновно учитавање уз занемаривање кеша</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Интернет</translation>
 <translation id="5197680270886368025">Синхронизација је довршена.</translation>
@@ -2893,6 +2891,7 @@
 <translation id="521582610500777512">Слика је одбачена</translation>
 <translation id="5218183485292899140">швајцарска француска</translation>
 <translation id="5218766986344577658">Искачући прозор за избор линка</translation>
+<translation id="5220992698394817380">Омогући избор IME менија</translation>
 <translation id="5222676887888702881">Одјави ме</translation>
 <translation id="5225324770654022472">Прикажи пречицу за апликације</translation>
 <translation id="5227536357203429560">Додај приватну мрежу...</translation>
@@ -2935,6 +2934,7 @@
 <translation id="5271247532544265821">Укључи/искључи режим за поједностављени/традиционални кинески језик</translation>
 <translation id="5271549068863921519">Сачувај лозинку</translation>
 <translation id="5273628206174272911">Експериментална навигација кроз историју коју активира водоравно бочно превлачење.</translation>
+<translation id="5275194674756975076">Важи, освежи</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> са овог сајта</translation>
 <translation id="5275973617553375938">Враћене датотеке са Google диска</translation>
 <translation id="527605719918376753">Искључи звук картице</translation>
@@ -3008,6 +3008,7 @@
 <translation id="5368720394188453070">Телефон је закључан. Откључајте га да бисте приступили.</translation>
 <translation id="5369927996833026114">Откријте Покретач Chrome апликација</translation>
 <translation id="5370819323174483825">&amp;Учитај поново</translation>
+<translation id="5372066618989754822">Омогућава приступ новом IME менију на страници Подешавања језика.</translation>
 <translation id="5372529912055771682">Ова верзија оперативног система не подржава наведени режим пријављивања. Проверите да ли користите најновију верзију и покушајте поново.</translation>
 <translation id="5374359983950678924">Промените слику</translation>
 <translation id="5376169624176189338">Кликните да бисте отишли назад, кликните задржите се да бисте видели историју</translation>
@@ -3194,6 +3195,7 @@
 <translation id="5626134646977739690">Име:</translation>
 <translation id="5627086634964711283">Контролише и страницу која се приказује када кликнете на дугме Почетна.</translation>
 <translation id="5627259319513858869">Омогућава коришћење експерименталних функција платна које су још увек у развоју.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Материјални дизајн у интерфејсу прегледача највишег нивоа</translation>
 <translation id="5633060877636360447">То ће трајно избрисати бар <ph name="TOTAL_COUNT" /> ставке(и) са овог уређаја, али неће обрисати синхронизоване ставке са других уређаја.</translation>
 <translation id="5636996382092289526">Да бисте користили <ph name="NETWORK_ID" />, можда ћете прво морати да <ph name="LINK_START" />посетите страницу за пријављивање на мрежу<ph name="LINK_END" />, која ће се аутоматски отворити за неколико секунди. Ако се то не деси, мрежа не може да се користи.</translation>
@@ -3224,6 +3226,7 @@
 <translation id="5678862612529498267">Означите објекат помоћу фокуса тастатуре</translation>
 <translation id="5678955352098267522">Читање ваших података на <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Филтрирање помоћу текста у Режиму прегледа</translation>
+<translation id="5683818630978268777">Експериментални кориснички интерфејс за закључавање тастатуре.</translation>
 <translation id="5684661240348539843">Идентификатор елемента</translation>
 <translation id="569068482611873351">Увези...</translation>
 <translation id="56907980372820799">Повежи податке</translation>
@@ -3692,7 +3695,6 @@
 <translation id="6420676428473580225">Додајте на радну површину</translation>
 <translation id="6422329785618833949">Слика је окренута</translation>
 <translation id="642282551015776456">Овај назив не може да се користи као назив датотеке или директоријума</translation>
-<translation id="642322423610046417">Користите контекстуални мени (десни клик) да бисте уклонили додатке који вам нису потребни.</translation>
 <translation id="6423239382391657905">Отворена VPN</translation>
 <translation id="6423731501149634044">Желите ли да користите Adobe Reader као подразумевани читач PDF датотека?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3762,6 +3764,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Експериментални режим целог екрана са закључавањем тастатуре захтева да корисници притисну и задрже тастер Esc за излаз.</translation>
 <translation id="6527303717912515753">Дели</translation>
 <translation id="6528546217685656218">Приватни кључ за овај сертификат клијента недостаје или је неважећи.</translation>
 <translation id="653019979737152879">Синхронизује се <ph name="FILE_NAME" />...</translation>
@@ -3941,6 +3944,7 @@
 <translation id="6825883775269213504">руски</translation>
 <translation id="6827236167376090743">Репродукција овог видео снимка ће се наставити у недоглед.</translation>
 <translation id="6828153365543658583">Ограничи пријављивање на следеће кориснике:</translation>
+<translation id="6828860976882136098">Подешавање аутоматских ажурирања за све кориснике није успело (грешка извршавања при провери: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Потражите помоћ за <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Пријавите се у организацију</translation>
 <translation id="6830590476636787791">Анимирани прелази при првом покретању водича</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">Отвори на картици</translation>
 <translation id="6862635236584086457">За све датотеке сачуване у овом директоријуму аутоматски се прави резервна копија на мрежи</translation>
 <translation id="6865313869410766144">Подаци Аутоматског попуњавања за обрасце</translation>
-<translation id="6865319096921627602">Омогући обједињени процес за медије на Android-у.</translation>
 <translation id="6867678160199975333">Пребаци на <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Потврђено поље за потврду</translation>
 <translation id="6870130893560916279">Језик тастатуре: украјински</translation>
@@ -4058,6 +4061,7 @@
 <translation id="7006017748900345484">WebRTC H.264 софтверски видео кодер/декодер</translation>
 <translation id="7006634003215061422">Доња маргина</translation>
 <translation id="7006844981395428048">$1 аудио датотека</translation>
+<translation id="7008270479623533562">Да бисте покренули овај додатак, треба да освежите страницу. Овај додатак можете аутоматски да покрећете на овом сајту ако кликнете десним тастером на икону додатка.</translation>
 <translation id="7009045250432250765">Аутоматско попуњавање једним кликом</translation>
 <translation id="7010160495478792664">Хардверски убрзано декодирање видео снимака када је то доступно.</translation>
 <translation id="7010400591230614821">Агресивна стратегија брисања картица</translation>
@@ -4224,7 +4228,6 @@
 <translation id="7256710573727326513">Отвори на картици</translation>
 <translation id="7257173066616499747">Wi-Fi мреже</translation>
 <translation id="7257666756905341374">Читање података које прекопирате</translation>
-<translation id="7260002739296185724">Омогућите коришћење AVFoundation-а за снимање видео снимака и надгледање видео уређаја на OS X &gt;= 10.7. У супротном користиће се QTKit.</translation>
 <translation id="7260504762447901703">Опозовите приступ</translation>
 <translation id="7262004276116528033">Ову услугу пријављивања хостује <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Изузеци за приступ помоћу додатне компоненте ван заштићеног окружења</translation>
@@ -4262,7 +4265,6 @@
 <translation id="7314278895724341067">Омогући офлајн странице на страници нове картице</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (тренутни)</translation>
 <translation id="7321545336522791733">Сервер није доступан</translation>
-<translation id="7324841169865301118">Омогућава кориснику да изабере картицу за дељење радне површине.</translation>
 <translation id="7325437708553334317">Додатак за високи контраст</translation>
 <translation id="7326565110843845436">Клик са три прста на тачпеду</translation>
 <translation id="73289266812733869">Избор је опозван</translation>
@@ -5008,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Аутор слике</translation>
 <translation id="8428213095426709021">Подешавања</translation>
-<translation id="8432590265309978927">Рана експериментална фаза подршке за приказивање iframe-ова на више сајтова у одвојеним процесима.</translation>
 <translation id="8432745813735585631">Језик тастатуре: енглески (САД Colemak)</translation>
 <translation id="8434177709403049435">&amp;Кодирање</translation>
 <translation id="8434480141477525001">NaCl порт за отклањање грешака</translation>
@@ -5205,7 +5206,6 @@
 <translation id="8713979477561846077">Омогућите аутоматско исправљање за физичку тастатуру са америчким распоредом тастера. Ова функција може да вам даје предлоге док куцате на физичкој тастатури.</translation>
 <translation id="871476437400413057">Лозинке сачуване на Google-у</translation>
 <translation id="8714838604780058252">Графика у позадини</translation>
-<translation id="8716065142695381595">Омогућава обједињени (Android и рачунар) процес за медије на Android-у.</translation>
 <translation id="8722421161699219904">Америчка интернационална тастатура</translation>
 <translation id="872451400847464257">Измена претраживача</translation>
 <translation id="8724859055372736596">&amp;Прикажи у директоријуму</translation>
@@ -5225,6 +5225,7 @@
 <translation id="8737685506611670901">отвори линкове за <ph name="PROTOCOL" /> уместо <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Прецизно подешава положај покрета додира да би се надокнадила слабија резолуција додира у поређењу са мишем.</translation>
+<translation id="8743712320294854924">Приказуј проширене опције уноса у полици.</translation>
 <translation id="874420130893181774">Традиционални метод уноса пинјин</translation>
 <translation id="8744525654891896746">Изаберите аватар за овог корисника под надзором</translation>
 <translation id="8744641000906923997">Ромађи</translation>
@@ -5294,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Промена режима тастера Shift</translation>
 <translation id="8852742364582744935">Додате су следеће апликације и додаци:</translation>
+<translation id="8853611566624224021">Омогућава преузимање icc датотека за екран са Quirks сервера ради калибрације боја екрана.</translation>
 <translation id="885381502874625531">Белоруска тастатура</translation>
 <translation id="8856844195561710094">Није могуће зауставити откривање Bluetooth уређаја.</translation>
 <translation id="885701979325669005">Меморијски простор</translation>
@@ -5343,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;Подешавања</translation>
 <translation id="8926389886865778422">Не питај ме поново</translation>
 <translation id="8926518602592448999">Онемогућите додатке у режиму програмера</translation>
-<translation id="8929454297483336498">Коришћење Mac OS X AVFoundation API-ја, уместо QTKit-а</translation>
 <translation id="8931394284949551895">Нови уређаји</translation>
 <translation id="8932730422557198035">Користи Android Midi API</translation>
 <translation id="8933960630081805351">&amp;Прикажи у Finder-у</translation>
@@ -5357,6 +5358,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Откривен је штампач</translation>
 <translation id="8946359700442089734">Функције за отклањање грешака нису у потпуности омогућене на овом <ph name="IDS_SHORT_PRODUCT_NAME" /> уређају.</translation>
+<translation id="8946784827990177241">Омогућава подршку за WebUSB.</translation>
 <translation id="89515141420106838">Омогућава апликацију Галерија Chrome веб-продавнице за управљачке програме за штампаче. Та апликација тражи у Chrome веб-продавници додатке који подржавају штампање на USB штампачу са одређеним ИД-ом USB-a.</translation>
 <translation id="895347679606913382">Започињање...</translation>
 <translation id="8954952943849489823">Премештање није успело, неочекивана грешка: $1</translation>
@@ -5501,6 +5503,7 @@
 <translation id="9154194610265714752">Ажурирано</translation>
 <translation id="9154418932169119429">Ова слика није доступна ван мреже.</translation>
 <translation id="91568222606626347">Направи пречицу...</translation>
+<translation id="9157697743260533322">Подешавање аутоматских ажурирања за све кориснике није успело (грешка покретања при провери: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Упс! Дошло је до проблема са комуникацијом на мрежи током потврде аутентичности. Проверите мрежну везу и покушајте поново.</translation>
 <translation id="9159562891634783594">Омогућите регистрацију нерегистрованих клауд штампача из прегледа пре штампања.</translation>
 <translation id="9166510596677678112">Пошаљите имејл овој особи</translation>
@@ -5512,7 +5515,6 @@
 <translation id="9170848237812810038">&amp;Опозови</translation>
 <translation id="9170884462774788842">Други програм на рачунару је додао тему која може да промени начин на који Chrome функционише.</translation>
 <translation id="9177499212658576372">Тренутно сте повезани са <ph name="NETWORK_TYPE" /> мрежом.</translation>
-<translation id="9177556055091995297">Управљај кредитним картицама</translation>
 <translation id="917858577839511832">Комуникација са протоколом DTLS 1.2 за WebRTC</translation>
 <translation id="917861274483335838">Управљајте блокирањем додатних компонената...</translation>
 <translation id="9179348476548754105">Како менаџер лозинки управља аутоматским попуњавањем за акредитив за синхронизацију само за трансакционе странице за поновну потврду аутентичности.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 8ce901e..f36e2051 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -159,7 +159,6 @@
     Du måste konfigurera profilen på nytt.<ph name="BR" />
     <ph name="BR" />
     Välj Skicka feedback på nästa skärm så att vi kan försöka åtgärda problemet.</translation>
-<translation id="1216954813581739968">Aktivera flik för att dela skrivbordet.</translation>
 <translation id="121827551500866099">Visa alla nedladdningar...</translation>
 <translation id="122082903575839559">Certifikatets signaturalgoritm</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 med RSA-kryptering</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">Webbadress med %s istället för sökfråga</translation>
 <translation id="1546280085599573572">Det här tillägget har ändrat vilken sida som visas när du klickar på knappen Startsida.</translation>
 <translation id="1546795794523394272">Välkommen till Chromebox för möten!</translation>
+<translation id="1547572086206517271">Uppdatering krävs</translation>
 <translation id="1547964879613821194">Kanadensisk engelska</translation>
 <translation id="1548132948283577726">Webbplatser som aldrig sparar lösenord visas här.</translation>
 <translation id="1549045574060481141">Bekräfta nedladdning</translation>
@@ -617,6 +617,7 @@
 <translation id="1891196807951270080">Aktivera lokal lagring av de senaste besökta webbsidorna för användning offline. Offline-sidor måste ha aktiverats.</translation>
 <translation id="1891668193654680795">Lita på detta certifikat för identifiering av programskapare.</translation>
 <translation id="189210018541388520">Öppna helskärmsläge</translation>
+<translation id="1892754076732315533">En ny, enklare användarupplevelse vid helskärmsvisning eller muspekarlås som aktiverats av sidan.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Administrationsflödet för molnet misslyckades</translation>
 <translation id="189358972401248634">Övriga språk</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Åtkomst till dina Universal 2nd Factor-enheter</translation>
 <translation id="2881966438216424900">Senast öppnad:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> startar om och återställs tillfälligt</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Aktivitets-
 hanteraren
 </translation>
@@ -1754,6 +1756,7 @@
 <translation id="3479552764303398839">Inte nu</translation>
 <translation id="3480892288821151001">Docka fönstret till vänster</translation>
 <translation id="3481915276125965083">Följande popup-fönster blockerades på den här sidan:</translation>
+<translation id="3482214069979148937">Tryck länge på |<ph name="ACCELERATOR" />| om du vill avsluta helskärmsläget</translation>
 <translation id="3484869148456018791">Hämta nytt certifikat</translation>
 <translation id="3487007233252413104">anonym funktion</translation>
 <translation id="348771913750618459">iframe-baserade inloggningsflöden</translation>
@@ -1848,7 +1851,6 @@
 <translation id="3593965109698325041">Certifikatnamnsbegränsningar</translation>
 <translation id="3595596368722241419">Batteriet är fulladdat</translation>
 <translation id="3600456501114769456">Administratören har inaktiverat åtkomsten till lokala filer på enheten.</translation>
-<translation id="3601395307734599350">Alla dina tillägg visas här</translation>
 <translation id="3603385196401704894">Kanadensisk franska</translation>
 <translation id="3603622770190368340">Skaffa nätverkscertifikat</translation>
 <translation id="3605780360466892872">Proper</translation>
@@ -2231,7 +2233,6 @@
 <translation id="4151403195736952345">Använd global standardinställning (Upptäck)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 flik}other{# flikar}}</translation>
 <translation id="4154664944169082762">Fingeravtryck</translation>
-<translation id="4157188838832721931">Inaktivera uppmaning till användaren att ange sitt lösenord i operativsystemet innan lösenorden på sidan Lösenord visas.</translation>
 <translation id="4157869833395312646">Microsofts serverstyrda kryptografi</translation>
 <translation id="4158739975813877944">Öppna spellistan</translation>
 <translation id="4159681666905192102">Det här är ett konto för barn som hanteras av <ph name="CUSTODIAN_EMAIL" /> och <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2275,7 +2276,6 @@
 <translation id="4218259925454408822">Logga in på ett annat konto</translation>
 <translation id="4219614746733932747">Om detta är aktiverat används Blinks funktion för inzoomning till att skala innehållet för enhetens skalningsfaktor.</translation>
 <translation id="4220865787605972627">Tillåt färgkalibrering av skärmen om skärmen har stöd för den funktionen.</translation>
-<translation id="4233506668751282421">Aktivera ljuddelning för skrivbord</translation>
 <translation id="4235200303672858594">Helskärm</translation>
 <translation id="4235813040357936597">Lägg till ett konto för <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Det går inte att visa <ph name="PRODUCT_NAME" /> på det här språket</translation>
@@ -2283,7 +2283,6 @@
 <translation id="4242577469625748426">Det gick inte att installera policyinställningar på enheten: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> försöker inaktivera muspekaren.</translation>
 <translation id="424546999567421758">Intensiv användning av disken har upptäckts</translation>
-<translation id="4247072926966606568">När den här flaggan är vald kan användarna välja om de vill dela ljudet i fönstret där de delar skrivbordet.</translation>
 <translation id="424726838611654458">Öppna alltid i Adobe Reader</translation>
 <translation id="4249248555939881673">Väntar på nätverksanslutning ...</translation>
 <translation id="4249373718504745892">Den här sidan har blockerats och kan inte komma åt kameran och mikrofonen.</translation>
@@ -2356,7 +2355,6 @@
 <translation id="4358697938732213860">Lägg till en adress</translation>
 <translation id="4359408040881008151">Installerades på grund av ett eller flera tillägg som är beroende av detta tillägg.</translation>
 <translation id="4361190688154226069">Rektangelbaserad inriktning i visningar</translation>
-<translation id="4363372140743955595">Omverifiering för lösenordshanteraren</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> har laddats ned</translation>
 <translation id="4364830672918311045">Visa aviseringar</translation>
 <translation id="4365673000813822030">Oj, synkroniseringen har slutat fungera.</translation>
@@ -2413,6 +2411,7 @@
 <translation id="4449935293120761385">Om Autofyll</translation>
 <translation id="4449996769074858870">Ljud spelas upp på den här fliken.</translation>
 <translation id="4450974146388585462">Diagnostisera</translation>
+<translation id="4452426408005428395">Strunta i det</translation>
 <translation id="4454939697743986778">Detta certifikat har installerats av systemadministratören.</translation>
 <translation id="445923051607553918">Anslut till Wi-Fi-nätverk</translation>
 <translation id="4462159676511157176">Anpassade namnservrar</translation>
@@ -2490,7 +2489,6 @@
 <translation id="4594109696316595112">Engångsaktivering: Skriv lösenordet för att aktivera Smart Lock på <ph name="DEVICE_TYPE" />. Med Smart Lock kan du låsa upp den här enheten med mobilen utan ett lösenord. Om du vill ändra eller inaktivera funktionen gör du det i inställningarna för <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Appar och tillägg kan bara ändras av den ansvariga (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">EMF-konverterare</translation>
-<translation id="4601250583401186741">Koppla till en kontrollenhet</translation>
 <translation id="4602466770786743961">Tillåt alltid att <ph name="HOST" /> använder kameran och mikrofonen</translation>
 <translation id="4605399136610325267">Det finns ingen Internetanslutning</translation>
 <translation id="4608500690299898628">&amp;Sök...</translation>
@@ -2786,6 +2784,7 @@
 <translation id="5039804452771397117">Tillåt</translation>
 <translation id="5045550434625856497">Felaktigt lösenord</translation>
 <translation id="5048179823246820836">Nordiskt</translation>
+<translation id="5048294425697652159">Aktivera klienten för bristfällig kod för skärmkalibrering.</translation>
 <translation id="5053604404986157245">Det slumpmässigt genererade TPM-lösenordet är inte tillgängligt. Det här är normalt efter en powerwash.</translation>
 <translation id="5053803681436838483">Ny leveransadress ...</translation>
 <translation id="5055309315264875868">Visa en länk på sidan med inställningar för lösenordshanteraren, så att du kan hantera synkroniserade lösenord online.</translation>
@@ -2883,7 +2882,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Krav på rörelse för medieuppspelning</translation>
 <translation id="5189060859917252173">Certifikatet <ph name="CERTIFICATE_NAME" /> är en certifikatutfärdare.</translation>
-<translation id="5196117515621749903">Läs in igen utan cacheminne</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Synkroniseringen har slutförts.</translation>
@@ -2898,6 +2896,7 @@
 <translation id="521582610500777512">Bilden togs bort</translation>
 <translation id="5218183485292899140">Schweizisk franska</translation>
 <translation id="5218766986344577658">Popupfönster där användaren kan ange vilken länk som avsågs</translation>
+<translation id="5220992698394817380">Aktivera alternativet IME-meny</translation>
 <translation id="5222676887888702881">Logga ut</translation>
 <translation id="5225324770654022472">Visa genväg för appar</translation>
 <translation id="5227536357203429560">Lägg till privat nätverk ...</translation>
@@ -2940,6 +2939,7 @@
 <translation id="5271247532544265821">Växla mellan förenklad/traditionell kinesiska</translation>
 <translation id="5271549068863921519">Spara lösenord</translation>
 <translation id="5273628206174272911">Historiknavigering på experimentstadiet som svar på horisontell överrullning.</translation>
+<translation id="5275194674756975076">OK. Uppdatera.</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> från den här webbplatsen</translation>
 <translation id="5275973617553375938">Återställda filer från Google Drive</translation>
 <translation id="527605719918376753">Stäng av ljud från flik</translation>
@@ -3013,6 +3013,7 @@
 <translation id="5368720394188453070">Din mobil är låst. Lås upp den.</translation>
 <translation id="5369927996833026114">Upptäck startprogrammet för appar i Chrome</translation>
 <translation id="5370819323174483825">&amp;Läs in igen</translation>
+<translation id="5372066618989754822">Aktivera tillgång till den nya IME-menyn på sidan Språkinställningar.</translation>
 <translation id="5372529912055771682">Det angivna registreringsläget stöds inte av den här versionen av operativsystemet. Kontrollera att du har den senaste versionen och försök igen.</translation>
 <translation id="5374359983950678924">Byt bild</translation>
 <translation id="5376169624176189338">Klicka för att återvända, håll ned för att se historik</translation>
@@ -3198,6 +3199,7 @@
 <translation id="5626134646977739690">Namn:</translation>
 <translation id="5627086634964711283">Det styr också vilken sida som visas när du klickar på knappen Startsida.</translation>
 <translation id="5627259319513858869">Möjliggör användningen av experimentella kanvasfunktioner som fortfarande är under utveckling.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Material Design högst upp i webbläsaren</translation>
 <translation id="5633060877636360447">Det här innebär att minst <ph name="TOTAL_COUNT" /> objekt raderas permanent från den här enheten. Synkroniserade objekt rensas dock inte från andra enheter.</translation>
 <translation id="5636996382092289526">Om du vill använda <ph name="NETWORK_ID" /> kanske du först måste <ph name="LINK_START" />besöka nätverkets inloggningssida<ph name="LINK_END" />, som öppnas automatiskt om några sekunder. Om den inte öppnas går det inte att använda nätverket.</translation>
@@ -3228,6 +3230,7 @@
 <translation id="5678862612529498267">Markera objektet med tangentbordsfokus</translation>
 <translation id="5678955352098267522">Läsa din data på <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Textfiltrering i översiktsläge</translation>
+<translation id="5683818630978268777">Användargränssnitt för experimentellt tangentbordslås.</translation>
 <translation id="5684661240348539843">Tillgångsidentifierare</translation>
 <translation id="569068482611873351">Importera...</translation>
 <translation id="56907980372820799">Länkdata</translation>
@@ -3695,7 +3698,6 @@
 <translation id="6420676428473580225">Lägg till på skrivbordet</translation>
 <translation id="6422329785618833949">Fotot har vänts</translation>
 <translation id="642282551015776456">Det här namnet får inte användas som namn på en fil eller mapp</translation>
-<translation id="642322423610046417">Ta bort tillägg du inte behöver med snabbmenyn (högerklicka).</translation>
 <translation id="6423239382391657905">Öppen VPN</translation>
 <translation id="6423731501149634044">Vill du använda Adobe Reader som standardläsare för PDF?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3766,6 +3768,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Ett experimentellt helskärmsläge med tangentbordslås som kräver att användare trycker länge på Esc om de vill avsluta läget.</translation>
 <translation id="6527303717912515753">Dela</translation>
 <translation id="6528546217685656218">Det här klientcertifikatets privata nyckel saknas eller är tom.</translation>
 <translation id="653019979737152879">Synkroniserar <ph name="FILE_NAME" /> ...</translation>
@@ -3945,6 +3948,7 @@
 <translation id="6825883775269213504">ryska</translation>
 <translation id="6827236167376090743">Denna video spelas upp för evigt.</translation>
 <translation id="6828153365543658583">Begränsa inloggning till följande användare:</translation>
+<translation id="6828860976882136098">Det gick inte att konfigurera automatiska uppdateringar för alla användare (preliminärt körningsfel: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Få hjälp med din <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Registrera dig i din organisation</translation>
 <translation id="6830590476636787791">Animerade övergångar i självstudiekursen vid första användningen</translation>
@@ -3967,7 +3971,6 @@
 <translation id="6860427144121307915">Öppna i en flik</translation>
 <translation id="6862635236584086457">Alla filer som sparas i den här mappen säkerhetskopieras online automatiskt</translation>
 <translation id="6865313869410766144">Formuläruppgifter för Autofyll</translation>
-<translation id="6865319096921627602">Aktiverar pipeline för enad media på Android.</translation>
 <translation id="6867678160199975333">Växla till <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Markerad kryssruta</translation>
 <translation id="6870130893560916279">Ukrainskt tangentbord</translation>
@@ -4062,6 +4065,7 @@
 <translation id="7006017748900345484">Videoomkodare/-avkodare för WebRTC H.264-programvara</translation>
 <translation id="7006634003215061422">Nedre marginal</translation>
 <translation id="7006844981395428048">$1-ljud</translation>
+<translation id="7008270479623533562">Du måste uppdatera sidan om du vill köra tillägget. Du kan köra tillägget automatiskt på den här webbplatsen genom att högerklicka på tilläggsikonen.</translation>
 <translation id="7009045250432250765">Autofyll med ett enda klick</translation>
 <translation id="7010160495478792664">Maskinvaruaccelererad videoavkodning där möjlighet finns.</translation>
 <translation id="7010400591230614821">Aggressiv avlastningsstrategi för flikar</translation>
@@ -4226,7 +4230,6 @@
 <translation id="7256710573727326513">Öppna i en flik</translation>
 <translation id="7257173066616499747">Wi-Fi-nätverk</translation>
 <translation id="7257666756905341374">Läsa data som du kopierar och klistrar in</translation>
-<translation id="7260002739296185724">Aktivera användning av AV Foundation för videofilmning och övervakning av videoenhet på OS X &gt;= 10.7. QTKit används annars.</translation>
 <translation id="7260504762447901703">Återkalla åtkomst</translation>
 <translation id="7262004276116528033">Inloggningstjänsten tillhandahålls av <ph name="SAML_DOMAIN" />.</translation>
 <translation id="7262221505565121">Undantag från åtkomstbehörighet för plugin som inte körs i sandlåda</translation>
@@ -4264,7 +4267,6 @@
 <translation id="7314278895724341067">Aktivera offline-sidor på sidan Ny flik</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (aktuell)</translation>
 <translation id="7321545336522791733">Servern kan inte nås</translation>
-<translation id="7324841169865301118">Tillåter att användare väljer en flik för att dela skrivbordet.</translation>
 <translation id="7325437708553334317">Högkontrasttillägg</translation>
 <translation id="7326565110843845436">Klick med tre fingrar på styrplatta</translation>
 <translation id="73289266812733869">Avmarkerad</translation>
@@ -5013,7 +5015,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Foto av</translation>
 <translation id="8428213095426709021">Inställningar</translation>
-<translation id="8432590265309978927">Mycket experimentellt stöd för att rendera ramar från olika webbplatser i separata processer.</translation>
 <translation id="8432745813735585631">Colemak-tangentbord för USA</translation>
 <translation id="8434177709403049435">&amp;Kodning</translation>
 <translation id="8434480141477525001">Felsökningsport för Native Client</translation>
@@ -5210,7 +5211,6 @@
 <translation id="8713979477561846077">Aktivera autokorrigering för fysiska amerikanska tangentbord så att du får förslag när du skriver på ett fysiskt tangentbord.</translation>
 <translation id="871476437400413057">Lösenord som Google sparat</translation>
 <translation id="8714838604780058252">Bakgrundsgrafik</translation>
-<translation id="8716065142695381595">Aktiverar pipeline för enad (Android och dator) media på Android.</translation>
 <translation id="8722421161699219904">Internationellt tangentbord för USA</translation>
 <translation id="872451400847464257">Redigera sökmotor</translation>
 <translation id="8724859055372736596">Visa i &amp;mapp</translation>
@@ -5230,6 +5230,7 @@
 <translation id="8737685506611670901">Öppna <ph name="PROTOCOL" />-länkar i stället för <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Finjustera positionen för skärmrörelser som kompensation för att skärmrörelser har dålig upplösning jämfört med en mus.</translation>
+<translation id="8743712320294854924">Visa utökade inmatningsalternativ på hyllan.</translation>
 <translation id="874420130893181774">Inmatningsmetod för traditionell Pinyin</translation>
 <translation id="8744525654891896746">Välj en avatar för den här hanterade användaren</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5299,6 +5300,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Byte av Skift-tangentens läge</translation>
 <translation id="8852742364582744935">Följande appar och tillägg lades till:</translation>
+<translation id="8853611566624224021">Aktivera hämtning av visningsfiler för icc från servern för bristfällig kod för färgkalibrering av skärmen.</translation>
 <translation id="885381502874625531">Vitryskt tangentbord</translation>
 <translation id="8856844195561710094">Det gick inte att avbryta identifiering av Bluetooth-enheter.</translation>
 <translation id="885701979325669005">Lagring</translation>
@@ -5348,7 +5350,6 @@
 <translation id="8925458182817574960">&amp;Inställningar</translation>
 <translation id="8926389886865778422">Fråga inte igen.</translation>
 <translation id="8926518602592448999">Inaktivera tillägg i utvecklarläge</translation>
-<translation id="8929454297483336498">Använd AV Foundation-API:er för Mac OS X i stället för QTKit.</translation>
 <translation id="8931394284949551895">Nya enheter</translation>
 <translation id="8932730422557198035">Använd Androids MIDI-API</translation>
 <translation id="8933960630081805351">&amp;Visa i Finder</translation>
@@ -5362,6 +5363,7 @@
 <translation id="894360074127026135">Netscapes internationella uppgradering</translation>
 <translation id="8944779739948852228">En skrivare har identifierats</translation>
 <translation id="8946359700442089734">Felsökningsfunktionerna aktiverades inte helt på den här <ph name="IDS_SHORT_PRODUCT_NAME" />-enheten.</translation>
+<translation id="8946784827990177241">Aktivera stöd för WebUSB.</translation>
 <translation id="89515141420106838">Aktiverar appen Chrome Web Store Gallery för skrivardrivrutiner. Appen söker i Chrome Web Store efter tillägg som har stöd för utskrift till en USB-skrivare med ett specifikt USB-id.</translation>
 <translation id="895347679606913382">Startar...</translation>
 <translation id="8954952943849489823">Flytten misslyckades. Oväntat fel: $1</translation>
@@ -5506,6 +5508,7 @@
 <translation id="9154194610265714752">Uppdaterat</translation>
 <translation id="9154418932169119429">Denna bild är inte tillgänglig offline.</translation>
 <translation id="91568222606626347">Skapa genväg ...</translation>
+<translation id="9157697743260533322">Det gick inte att konfigurera automatiska uppdateringar för alla användare (preliminärt startfel: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Hoppsan! Ett nätverkskommunikationsproblem uppstod under autentiseringen. Kontrollera nätverksanslutningen och försök igen.</translation>
 <translation id="9159562891634783594">Aktivera registrering av oregistrerade molnskrivare från förhandsgranskning av utskrift.</translation>
 <translation id="9166510596677678112">Skicka e-post till den här personen</translation>
@@ -5517,7 +5520,6 @@
 <translation id="9170848237812810038">&amp;Ångra</translation>
 <translation id="9170884462774788842">Ett annat program i datorn har lagt till ett tema som kan ändra hur Chrome fungerar.</translation>
 <translation id="9177499212658576372">Du är ansluten till nätverket <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Hantera kreditkort</translation>
 <translation id="917858577839511832">Använd DTLS 1.2 med WebRTC för förhandlingar</translation>
 <translation id="917861274483335838">Hantera blockering av pluginprogram …</translation>
 <translation id="9179348476548754105">Hur lösenordshanteraren hanterar autofyll för användaruppgifter vid synkronisering enbart på omauktoriseringssidor för transaktioner.</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index aabfeaa..a335e6e3 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -159,7 +159,6 @@
     Itabidi uweke mipangilio ya wasifu wako tena.<ph name="BR" />
     <ph name="BR" />
     Kwenye skrini inayofuata, tafadhali tuma maoni ili utusaidie kutatua tatizo.</translation>
-<translation id="1216954813581739968">Washa kichupo cha Kushiriki Eneo-Kazi.</translation>
 <translation id="121827551500866099">Onyesha vipakuliwa vyote...</translation>
 <translation id="122082903575839559">Kanuni ya Sahihi ya Cheti</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 Na Usimbaji wa RSA</translation>
@@ -170,7 +169,7 @@
 <translation id="1225211345201532184">Kipengee cha rafu cha 5</translation>
 <translation id="1225404570112441414">Ongeza tovuti hii kwenye rafu yako ili uitumie wakati wowote.</translation>
 <translation id="1227507814927581609">Uthibitishaji ulishindwa wakati wa kuunganishwa kwenye "<ph name="DEVICE_NAME" />".</translation>
-<translation id="1232569758102978740">Hakuna Kichwa</translation>
+<translation id="1232569758102978740">Hakina Jina</translation>
 <translation id="1233721473400465416">Lugha</translation>
 <translation id="1234808891666923653">Wafanyakazi wa Huduma</translation>
 <translation id="123578888592755962">Diski imejaa</translation>
@@ -388,6 +387,7 @@
 <translation id="1545786162090505744">URL iliyo na %s katika nafasi ya hoja</translation>
 <translation id="1546280085599573572">Kiendelezi hiki kimebadilisha ukurasa unaoonyeshwa unapobofya kitufe cha Mwanzo.</translation>
 <translation id="1546795794523394272">Karibu kwenye Chromebox ya mikutano!</translation>
+<translation id="1547572086206517271">Unahitaji kuonyesha upya</translation>
 <translation id="1547964879613821194">Kiingereza cha Kanada</translation>
 <translation id="1548132948283577726">Tovuti ambazo kamwe hazihifadhi manenosiri zitaonekana hapa.</translation>
 <translation id="1549045574060481141">Thibitisha Upakuaji</translation>
@@ -616,8 +616,9 @@
 <translation id="1891196807951270080">Washa kipengele cha kuhifadhi kurasa ulizotembelea hivi majuzi kwenye kifaa kwa matumizi ya nje ya mtandao. Utahitaji kuwasha kipengele cha Kurasa za Nje ya Mtandao.</translation>
 <translation id="1891668193654680795">Amini cheti hiki kwa kutambua watengenezaji programu.</translation>
 <translation id="189210018541388520">Fungua skrini nzima</translation>
+<translation id="1892754076732315533">Hali mpya ya mtumiaji iliyorahisishwa anapoingia katika hali za skrini nzima iliyoanzishwa na ukurasa au kufunga kielekezi cha kipanya.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
-<translation id="1893406696975231168">Mtiririko wa utoaji wa wingu haujafaulu</translation>
+<translation id="1893406696975231168">Mtiririko wa muunganisho wa wingu haujafaulu</translation>
 <translation id="189358972401248634">Lugha zingine</translation>
 <translation id="1894288435579641697">Angazia kareti (unapobadilisha maandishi)</translation>
 <translation id="1895658205118569222">Funga</translation>
@@ -1069,7 +1070,7 @@
 <translation id="2554553592469060349">Faili iliyochaguliwa ni kubwa mno (Upeo wa juu wa ukubwa: MB 3).</translation>
 <translation id="255632937203580977">Arifa za Ugunduzi wa Kifaa</translation>
 <translation id="2557899542277210112">Ili uweze kupata alamisho zako kwa haraka, ziweke hapa kwenye upau wa alamisho.</translation>
-<translation id="2558578666171469771">Duka la Google Play sasa inapatikana kifaa chako cha <ph name="DEVICE_TYPE" /></translation>
+<translation id="2558578666171469771">Duka la Google Play sasa linapatikana katika kifaa chako cha <ph name="DEVICE_TYPE" /></translation>
 <translation id="255937426064304553">Kiingereza cha Marekani cha Kimataifa</translation>
 <translation id="2560633531288539217">Dhibiti Shughuli za Sauti na Kutamka</translation>
 <translation id="2562685439590298522">Hati za Google</translation>
@@ -1320,6 +1321,7 @@
 <translation id="288042212351694283">Fikia vifaa vyako vya Ubia wa Hatua mbili</translation>
 <translation id="2881966438216424900">Ilitumiwa mwisho:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> itazima na kuwasha tena na kuweka upya kwa muda mfupi</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Kidhibiti cha Shughuli</translation>
 <translation id="2887525882758501333">Hati ya PDF</translation>
 <translation id="2888807692577297075">Hakuna vipengee vinavyolingana &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1746,6 +1748,7 @@
 <translation id="3479552764303398839">Sio sasa</translation>
 <translation id="3480892288821151001">Shikilia dirisha kushoto</translation>
 <translation id="3481915276125965083">Madirisha ibukizi yafuatayo yalizuiwa kwenye ukurasa huu:</translation>
+<translation id="3482214069979148937">Shikilia |<ph name="ACCELERATOR" />| ili uondoke kwenye skrini nzima</translation>
 <translation id="3484869148456018791">Pata cheti kipya</translation>
 <translation id="3487007233252413104">chaguo za kukokotoa zisizo na jina</translation>
 <translation id="348771913750618459">Mitiririko ya kuingia katika akaunti kulingana na iframe</translation>
@@ -1840,7 +1843,6 @@
 <translation id="3593965109698325041">Vizuizi vya Jina la Cheti</translation>
 <translation id="3595596368722241419">Betri imejaa</translation>
 <translation id="3600456501114769456">Ufikiaji wa faili za ndani kwenye kifaa chako umezimwa na msimamizi wako.</translation>
-<translation id="3601395307734599350">Viendelezi vyako vyote vipo hapa</translation>
 <translation id="3603385196401704894">Kifaransa cha Kanada</translation>
 <translation id="3603622770190368340">Pata cheti cha mtandao</translation>
 <translation id="3605780360466892872">Kitufechini</translation>
@@ -2009,7 +2011,7 @@
     Tayari kuhifadhi nakala kwenye <ph name="BEGIN_LINK" />Hifadhi ya Google<ph name="END_LINK" /></translation>
 <translation id="3816844797124379499">Isingeweza kuongeza programu kwa sababu inagongana na " <ph name="APP_NAME" /> ".</translation>
 <translation id="3819007103695653773">Ruhusu tovuti zote kutuma ujumbe wa programu wa chini chini hata wakati huitumii</translation>
-<translation id="3819752733757735746">Badilisha idhini ya kufikia (dhibiti kompyuta kwa kubadilisha mara moja au mara mbili tu)</translation>
+<translation id="3819752733757735746">Fikia kupitia swichi (dhibiti kompyuta kwa kutumia swichi moja au mbili pekee)</translation>
 <translation id="3819800052061700452">&amp;Skrini kamili</translation>
 <translation id="3822265067668554284">Usiruhusu tovuti yoyote ifuatilie mahali halisi ulipo</translation>
 <translation id="3825863595139017598">Kibodi ya Kimongolia</translation>
@@ -2220,7 +2222,6 @@
 <translation id="4151403195736952345">Tumia chaguo-msingi la kimataifa (Gundua)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{Kichupo 1}other{Vichupo #}}</translation>
 <translation id="4154664944169082762">Alazama za Vidole</translation>
-<translation id="4157188838832721931">Zima kuomba watumiaji nenosiri la Mfumo wa Uendeshaji kabla ya kufichua manenosiri kwenye ukurasa wa manenosiri.</translation>
 <translation id="4157869833395312646">Usimbaji wa Vizuizi vya Seva kutoka Microsoft</translation>
 <translation id="4158739975813877944">Fungua orodha ya kucheza</translation>
 <translation id="4159681666905192102">Hii ni akaunti ya watoto inayodhibitiwa na <ph name="CUSTODIAN_EMAIL" /> na <ph name="SECOND_CUSTODIAN_EMAIL" />.</translation>
@@ -2232,7 +2233,7 @@
 <translation id="4172051516777682613">Onyesha kila mara</translation>
 <translation id="417475959318757854">Weka Kifungua Programu cha Chrome katikati.</translation>
 <translation id="4176463684765177261">Kimelemazwa</translation>
-<translation id="4179512409951755566">Washa kipengele cha Kusogeza Juu cha OSK</translation>
+<translation id="4179512409951755566">Washa kipengele cha Kusogeza cha OSK</translation>
 <translation id="4180788401304023883">Futa cheti cha CA "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="418179967336296930">Kibodi ya Fonetiki (YaZHert) ya Kirusi</translation>
 <translation id="4181841719683918333">Lugha</translation>
@@ -2264,7 +2265,6 @@
 <translation id="4218259925454408822">Ingia katika akaunti nyingine</translation>
 <translation id="4219614746733932747">Ikiwashwa, Blink hutumia utaratibu wake wa kukuza ili kupunguza maudhui ya kifaa cha kigezo cha kipimo.</translation>
 <translation id="4220865787605972627">Ruhusu upimaji wa rangi ya onyesho ikiwa skirini inatumia kipengee.</translation>
-<translation id="4233506668751282421">Washa Kipengee cha Kushiriki Sauti ya Eneo-Kazi</translation>
 <translation id="4235200303672858594">Skrini Nzima</translation>
 <translation id="4235813040357936597">Ongeza akaunti ya <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> haiwezi kuonyeshwa katika lugha hii</translation>
@@ -2272,7 +2272,6 @@
 <translation id="4242577469625748426">Imeshindwa kusakinisha mipangilio ya sera kwenye kifaa: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> inataka kukilemaza kishale chako cha kipanya.</translation>
 <translation id="424546999567421758">Utumiaji mkubwa wa diski umegunduliwa</translation>
-<translation id="4247072926966606568">Kipengee cha alama hii kikiwashwa, dirisha la kichagua kushiriki katika eneo-kazi litamruhusu mtumiaji kuchagua kushiriki au kutoshiriki sauti.</translation>
 <translation id="424726838611654458">Fungua katika Adobe Reader wakati wowote</translation>
 <translation id="4249248555939881673">Inasubiri muunganisho kwa mtandao...</translation>
 <translation id="4249373718504745892">Ukurasa huu umezuiwa kufikia kamera na maikrofoni yako.</translation>
@@ -2345,7 +2344,6 @@
 <translation id="4358697938732213860">Ongeza anwani</translation>
 <translation id="4359408040881008151">Kilisakinishwa kwa sababu ya kiendelezi au viendelezi vinavyotegemea.</translation>
 <translation id="4361190688154226069">Kulenga katika mionekano kulingana na rect</translation>
-<translation id="4363372140743955595">Kuthibitisha Upya Msimamizi wa Nenosiri</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> imepakuliwa</translation>
 <translation id="4364830672918311045">Onyesha arifa</translation>
 <translation id="4365673000813822030">Lo, Usawazishaji umekatizwa.</translation>
@@ -2402,6 +2400,7 @@
 <translation id="4449935293120761385">Kuhusu Kujaza kiotomatiki</translation>
 <translation id="4449996769074858870">Kichupo hiki kinacheza sauti.</translation>
 <translation id="4450974146388585462">Tambua hitilafu</translation>
+<translation id="4452426408005428395">Usijali</translation>
 <translation id="4454939697743986778">Hati hii imesakinishwa na msimamizi wa mfumo wako.</translation>
 <translation id="445923051607553918">Jiunge kwenye mtandao wa Wi-Fi</translation>
 <translation id="4462159676511157176">Seva za jina maalum</translation>
@@ -2479,7 +2478,6 @@
 <translation id="4594109696316595112">Uwashaji wa mara moja: Charaza nenosiri lako ili uwashe Smart Lock kwenye <ph name="DEVICE_TYPE" /> hii. Ukiwa na Smart Lock, simu yako itafungua kifaa hiki—bila nenosiri. Ili kubadilisha au kuzima kipengele hiki, tembelea mipangilio yako ya <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Programu na viendelezi vinaweza kubadilishwa na msimamizi pekee (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Kibadilishaji cha EMF</translation>
-<translation id="4601250583401186741">Oanisha na kidhibiti</translation>
 <translation id="4602466770786743961">Ruhusu <ph name="HOST" /> ifikie kamera na maikrofoni yako kila wakati</translation>
 <translation id="4605399136610325267">Mtandao haujaunganishwa</translation>
 <translation id="4608500690299898628">Ta&amp;futa</translation>
@@ -2773,6 +2771,7 @@
 <translation id="5039804452771397117">Ruhusu</translation>
 <translation id="5045550434625856497">Nenosiri lisilo sahihi</translation>
 <translation id="5048179823246820836">Kinodiki</translation>
+<translation id="5048294425697652159">Washa kipengele cha Quirks Client kwa upimaji wa mwonekano.</translation>
 <translation id="5053604404986157245">Nenosiri la TPM lililoundwa bila mpangilio halipatikani. Hii ni kawadia baada ya Powerwash.</translation>
 <translation id="5053803681436838483">Anwani mpya ya usafirishaji...</translation>
 <translation id="5055309315264875868">Onyesha kiungo katika ukurasa wa mipangilio ya kisimamia nenosiri ili kusimamia manenosiri yako yaliyosawazishwa mtandaoni.</translation>
@@ -2870,7 +2869,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Hitaji la ishara kwa uchezaji wa maudhui</translation>
 <translation id="5189060859917252173">Cheti " <ph name="CERTIFICATE_NAME" /> " kinawakilisha Mamlaka ya Uthibiishaji.</translation>
-<translation id="5196117515621749903">Pakia upya huku ukipuuza akiba</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Wavuti</translation>
 <translation id="5197680270886368025">Ulinganishaji umemalizika.</translation>
@@ -2885,6 +2883,7 @@
 <translation id="521582610500777512">Picha ilitupwa</translation>
 <translation id="5218183485292899140">Kifaransa cha Uswisi</translation>
 <translation id="5218766986344577658">Dirisha Ibukizi la Kuondoa Utata wa Kiungo</translation>
+<translation id="5220992698394817380">Washa kipengee cha menyu ya IME ya kuchagua kuingia</translation>
 <translation id="5222676887888702881">Ondoka</translation>
 <translation id="5225324770654022472">Onyesha mkato wa programu</translation>
 <translation id="5227536357203429560">Ongeza mtandao binafsi...</translation>
@@ -2927,6 +2926,7 @@
 <translation id="5271247532544265821">Togoa modi Iliyorahisishwa/Kichina cha Jadi</translation>
 <translation id="5271549068863921519">Hifadhi nenosiri</translation>
 <translation id="5273628206174272911">Uendeshaji wa historia ya jaribio katika kujibu utembezaji zaidi wa mlalo.</translation>
+<translation id="5275194674756975076">Sawa, onyesha upya</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> kutoka kwenye tovuti hii</translation>
 <translation id="5275973617553375938">Faili zilizorejeshwa kutoka Hifadhi ya Google</translation>
 <translation id="527605719918376753">Nyamazisha kichupo</translation>
@@ -3000,6 +3000,7 @@
 <translation id="5368720394188453070">Simu yako imefungwa. Ifungue ili kuingia.</translation>
 <translation id="5369927996833026114">Gundua Kizinduzi Programu cha Chrome</translation>
 <translation id="5370819323174483825">Pakia upya</translation>
+<translation id="5372066618989754822">Washa idhini ya kufikia menyu mpya ya IME katika ukurasa wa Mipangilio ya Lugha.</translation>
 <translation id="5372529912055771682">Modi ya usajili iliyosambazwa haihimiliwi na toleo hili la mfumo wa uendeshaji. Tafadhali hakikisha unaendesha toleo jipya na ujaribu tena.</translation>
 <translation id="5374359983950678924">Badilisha picha</translation>
 <translation id="5376169624176189338">Bofya ili urudi nyuma, shikilia ili uone historia</translation>
@@ -3185,6 +3186,7 @@
 <translation id="5626134646977739690">Jina:</translation>
 <translation id="5627086634964711283">Pia inadhibiti ukurasa unaoonyeshwa unapobofya kitufe cha Mwanzo.</translation>
 <translation id="5627259319513858869">Inawasha utumiaji wa vipengele vya jaribio la turubai ambavyo bado vinakuzwa.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Usanifu bora katika chrome ya juu ya kivinjari</translation>
 <translation id="5633060877636360447">Hii itafuta kabisa angalau vipengee <ph name="TOTAL_COUNT" /> kwenye kifaa hiki lakini haitaonda vipengee vilivyosawazishwa kutoka kwenye vifaa vingine.</translation>
 <translation id="5636996382092289526">Ili kutumia <ph name="NETWORK_ID" /> huenda kwanza ukahitaji kutembelea <ph name="LINK_START" /> ukurasa wa kuingia wa mtandao<ph name="LINK_END" />, ambao utafunguka otomatiki katika sekunde chache. Ikiwa haitafanyika, mtandao hauwezi kutumika.</translation>
@@ -3212,9 +3214,10 @@
 <translation id="5677928146339483299">Vilivyozuiwa</translation>
 <translation id="5678550637669481956">Idhini ya kufikia kusoma na kuandika kwenye <ph name="VOLUME_NAME" /> imeruhusiwa.</translation>
 <translation id="567881659373499783">Toleo <ph name="PRODUCT_VERSION" /></translation>
-<translation id="5678862612529498267">Angazia kipengee kilicholengwa na kibodi</translation>
+<translation id="5678862612529498267">Angazia kipengee kilicholengwa kwa kibodi</translation>
 <translation id="5678955352098267522">Soma data yako kwenye <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Uchujaji wa maandishi katika Hali ya Muhtasari</translation>
+<translation id="5683818630978268777">Kiolesura cha jaribio la kufunga kibodi.</translation>
 <translation id="5684661240348539843">Kitambulisho cha Kipengee</translation>
 <translation id="569068482611873351">Ingiza...</translation>
 <translation id="56907980372820799">Unganisha data</translation>
@@ -3555,7 +3558,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">Urekebishaji wa mguso</translation>
 <translation id="6218364611373262432">Weka upya hali ya kusakinisha Kizindua Programu kila inapowashwa upya. Ingawa alama hii imewekwa, Chrome itasahau kuwa kizindua kimesakinishwa kila inapoanza. Hii inatumika kwa ajili ya kufanyia majaribio mtiririko wa kusakinisha Kizindua Programu.</translation>
-<translation id="6219616557885484178">Chagua katika zaidi ya programu na michezo milioni moja kwenye Google Play ili usakinishe na utumie kwenye kifaa chako cha<ph name="DEVICE_TYPE" />.</translation>
+<translation id="6219616557885484178">Chagua miongoni mwa programu na michezo zaidi ya milioni moja kwenye Google Play ili usakinishe na utumie kwenye kifaa chako cha<ph name="DEVICE_TYPE" />.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Hitilafu Wakati wa Kupakia Kiendelezi</translation>
 <translation id="6221345481584921695">Mfumo wa Google wa Kuvinjari kwa Usalama <ph name="BEGIN_LINK" />uligundua programu hasidi<ph name="END_LINK" /> kwenye <ph name="SITE" /> hivi karibuni. Tovuti ambazo kwa kawaida huwa salama wakati mwingine huathiriwa na programu hasidi. Maudhui hasidi hutoka kwa <ph name="SUBRESOURCE_HOST" />, msambazaji wa programu hasidi anayejulikana.</translation>
@@ -3682,7 +3685,6 @@
 <translation id="6420676428473580225">Ongeza kwenye Eno-kazi</translation>
 <translation id="6422329785618833949">Picha imepinduliwa</translation>
 <translation id="642282551015776456">Jina hili halifai kutumiwe kama faili ya jina la folda</translation>
-<translation id="642322423610046417">Tumia menyu ya muktadha (bofya kulia) kuondoa viendelezi usivyovihitaji.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Tumia Adobe Reader kama kionyeshi chako chaguo-msingi cha PDF?</translation>
 <translation id="6425092077175753609">Usanifu bora</translation>
@@ -3753,6 +3755,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Jaribio la skrini nzima yenye hali ya kufunga kibodi inayowahitaji watumiaji kushikilia Esc ili waondoke.</translation>
 <translation id="6527303717912515753">Shiriki</translation>
 <translation id="6528546217685656218">Ufunguo wa Faragha wa Cheti hiki cha Seva Teja haupo au si sahihi.</translation>
 <translation id="653019979737152879">Inasawazisha <ph name="FILE_NAME" />...</translation>
@@ -3932,6 +3935,7 @@
 <translation id="6825883775269213504">Kirusi</translation>
 <translation id="6827236167376090743">Video hii itaendelea kucheza bila kukoma.</translation>
 <translation id="6828153365543658583">Zuia kuingia kwa watumiaji wafuatao:</translation>
+<translation id="6828860976882136098">Imeshindwa kuweka mipangilio ya masasisho ya kiotomatiki kwa watumiaji wote (hitilafu ya awali ya utekelezaji wa safari ya ndege: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Pata usaidizi wa <ph name="DEVICE_TYPE" /> yako.</translation>
 <translation id="6829270497922309893">Jisajili katika shirika lako</translation>
 <translation id="6830590476636787791">Mabadiliko yaliyohuishwa katika kutekeleza mafunzo ya kwanza</translation>
@@ -3954,7 +3958,6 @@
 <translation id="6860427144121307915">Fungua katika Kichupo</translation>
 <translation id="6862635236584086457">Faili zote zilizohifadhiwa kwenye folda hii zinachelezwa kiotomatiki mtandaoni</translation>
 <translation id="6865313869410766144">Data ya fomu ya Kujaza Kiotomatiki</translation>
-<translation id="6865319096921627602">Huwasha maudhui ya pamoja yanayosubiri kushughulikwa kwenye Android.</translation>
 <translation id="6867678160199975333">Badili hadi <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Kikasha kaguzi kilichokaguliwa</translation>
 <translation id="6870130893560916279">Kibodi ya Kiukreni</translation>
@@ -4049,6 +4052,7 @@
 <translation id="7006017748900345484">Programu ya kusimba au kusimbua ya WebRTC H.264</translation>
 <translation id="7006634003215061422">Pambizo ya chini</translation>
 <translation id="7006844981395428048">Sauti $1</translation>
+<translation id="7008270479623533562">Ili utumie kiendelezi hiki, unahitaji kuonyesha upya ukurasa. Unaweza kutumia ukurasa huu kiotomatiki kwenye tovuti hii kwa kubofya kulia kwenye aikoni ya kiendelezi.</translation>
 <translation id="7009045250432250765">Kujaza otomatiki kwa mbofyo mmoja</translation>
 <translation id="7010160495478792664">Usimbuaji wa video ya kuongeza kasi kwa kutumia maunzi inapopatikana.</translation>
 <translation id="7010400591230614821">Mkakati thabiti wa kichupo kilichotolewa</translation>
@@ -4113,7 +4117,7 @@
 <translation id="7082055294850503883">Puuza hali ya CapsLock na uingiza herufi ndogo kwa chaguo-msingi</translation>
 <translation id="7088418943933034707">Dhibiti vyeti...</translation>
 <translation id="7088434364990739311">Ukaguzi wa usasishaji ulishindwa kuanza (hitilafu ya msimbo <ph name="ERROR" /> ).</translation>
-<translation id="708856090370082727">Washa kipengele cha matumizi ya kusogeza zaidi cha OSK. Alama hii ikiwashwa, OSK itabadilisha tu ukubwa wa sehemu ya kutazamia inayoonekana.</translation>
+<translation id="708856090370082727">Washa kipengele cha kusogeza cha OSK. Alama hii ikiwashwa, OSK itabadilisha tu ukubwa wa sehemu ya kuangalilia inayoonekana.</translation>
 <translation id="7088674813905715446">Kifaa hiki kimewekwa katika hali ya kutotumika na msimamizi. Ili kukiwezesha kwa uandikishaji, tafadhali mwambie msimamizi wako aweke kifaa katika hali ya kusubiri.</translation>
 <translation id="708969677220991657">Huruhusu maombi ya kupangisha karibu kwenye HTTPS hata cheti kisicho sahihi kikiwasilishwa.</translation>
 <translation id="7092106376816104">Vighairi madirisha ibukizi</translation>
@@ -4215,7 +4219,6 @@
 <translation id="7256710573727326513">Fungua katika kichupo</translation>
 <translation id="7257173066616499747">Mitandao ya Wi-Fi</translation>
 <translation id="7257666756905341374">Kusoma data unayonakili na kubandika</translation>
-<translation id="7260002739296185724">Washa matumizi ya AVFoundation kwa ajili ya kuchukua picha za video na ufuatiliaji wa kifaa cha video kwenye OS X&gt; = 10.7. QTKit itatumika badala yake.</translation>
 <translation id="7260504762447901703">Batilisha ufikiaji</translation>
 <translation id="7262004276116528033">Huduma hii ya kuingia katika akaunti inatolewa na <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Vighairi vya idhini ya kufikia programu-jalizi isiyo kwenye sandbox</translation>
@@ -4234,7 +4237,7 @@
 <translation id="7280877790564589615">Ruhusa imeombwa</translation>
 <translation id="7282547042039404307">Laini</translation>
 <translation id="7287143125007575591">Umenyimwa idhini ya kufikia.</translation>
-<translation id="7288592446024861651">Alamisho, historia, manenosiri, na mipangilio yako mingine itasawazishwa kwenye Akaunti yako ya Google ili uweze kuitumia kwenye vifaa vyako vyote. Dhibiti kipengee cha kusawazisha katika <ph name="BEGIN_LINK" />.</translation>
+<translation id="7288592446024861651">Alamisho, historia, manenosiri na mipangilio yako mingine itasawazishwa kwenye Akaunti yako ya Google ili uweze kuitumia kwenye vifaa vyako vyote. Dhibiti kipengee cha kusawazisha katika <ph name="BEGIN_LINK" />.</translation>
 <translation id="7288676996127329262">Dpi <ph name="HORIZONTAL_DPI" /> x <ph name="VERTICAL_DPI" /></translation>
 <translation id="7290594223351252791">Thibitisha usajili</translation>
 <translation id="7295019613773647480">Washa watumiaji wanaosimamiwa</translation>
@@ -4253,7 +4256,6 @@
 <translation id="7314278895724341067">Washa kurasa za nje ya mtandao za NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (sasa)</translation>
 <translation id="7321545336522791733">Seva haifikiki</translation>
-<translation id="7324841169865301118">Humwezesha mtumiaji kuchagua kichupo cha kushiriki eneo-kazi.</translation>
 <translation id="7325437708553334317">Kiendelezi Kilinganushi Kikuu</translation>
 <translation id="7326565110843845436">Mbofyo wa vidole vitatu kwenye padi ya kugusa</translation>
 <translation id="73289266812733869">Imeondolewa tiki</translation>
@@ -4471,7 +4473,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> hukuwezesha kuingia katika tovuti zinazofaa kiotomatiki kwa manenosiri uliyohifadhi.</translation>
 <translation id="7644029910725868934">Washa folda ya alamisho zinazodhibitiwa kwa watumiaji wanaosimamiwa.</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (mmiliki)</translation>
-<translation id="7646771353003624501">Huwasha kivinjari ili kufungua na kupakia kurasa za nje ya mtandao kiotomatiki chini chini.</translation>
+<translation id="7646771353003624501">Huwasha kivinjari ili kiweze kufungua na kupakia kurasa za nje ya mtandao kiotomatiki chini chini.</translation>
 <translation id="7646821968331713409">Idadi ya mazungumzo ya rasta</translation>
 <translation id="7648048654005891115">Mtindo wa Keymap</translation>
 <translation id="7648595706644580203">Ubadilishaji wa ishara kwa kibodi pepe.</translation>
@@ -5006,7 +5008,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Picha na</translation>
 <translation id="8428213095426709021">Mipangilio</translation>
-<translation id="8432590265309978927">Usaidizi wa majaribio wa hali ya juu kwa kutekeleza iframe za tovuti zote katika michakato tofauti.</translation>
 <translation id="8432745813735585631">Kibodi ya Colemak ya Marekani</translation>
 <translation id="8434177709403049435">&amp;Usimbaji</translation>
 <translation id="8434480141477525001">Lango la Kutatua la NaCl</translation>
@@ -5203,7 +5204,6 @@
 <translation id="8713979477561846077">Washa kibodi inayoonekana ya kurekebisha kiotomatiki kwa kibodi ya Marekani, inayoweza kutoa mapendekezo kama kucharaza kwenye kibodi inayoonekana.</translation>
 <translation id="871476437400413057">Manenosiri yaliyohifadhiwa kwenye Google</translation>
 <translation id="8714838604780058252">Michoro ya chinichini</translation>
-<translation id="8716065142695381595">Huwasha maudhui ya pamoja (Android na eneo-kazi) yanayosubiri kushughulikwa kwenye Android.</translation>
 <translation id="8722421161699219904">Kibodi ya Marekani ya kimataifa</translation>
 <translation id="872451400847464257">Badilisha Mtambo wa Kutafuta</translation>
 <translation id="8724859055372736596">Onye&amp;sha katika Folda</translation>
@@ -5223,6 +5223,7 @@
 <translation id="8737685506611670901">Fungua viungo vya <ph name="PROTOCOL" /> badala ya <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Boresha nafasi ya ishara ya mguso ili kufidia miguso iliyo na msongo mbaya ikilinganishwa na kipanya.</translation>
+<translation id="8743712320294854924">Onyesha chaguo za vifaa vya kuingiza sauti zilizopanuliwa katika rafu.</translation>
 <translation id="874420130893181774">Mbinu ya kuingiza data ya Pinyin ya Jadi</translation>
 <translation id="8744525654891896746">Chagua ishara kwa mtumiaji huyu anayesimamiwa</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5292,6 +5293,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Ubadilishaji modi wa kitufe cha Shift</translation>
 <translation id="8852742364582744935">Programu na viendelezi vifuatavyo viliongezwa:</translation>
+<translation id="8853611566624224021">Washa kipengee cha kurejesha faili za mwonekano wa icc kutoka Seva ya Quirks kwa ajili ya upimaji wa rangi ya onyesho.</translation>
 <translation id="885381502874625531">Kibodi ya Kibelarusi</translation>
 <translation id="8856844195561710094">Imeshindwa kukomesha ufufuaji wa kifaa cha Bluetooth.</translation>
 <translation id="885701979325669005">Hifadhi</translation>
@@ -5341,7 +5343,6 @@
 <translation id="8925458182817574960">&amp;Mipangilio</translation>
 <translation id="8926389886865778422">Nisiulizwe tena</translation>
 <translation id="8926518602592448999">Zima Viendelezi vya Hali ya Msanidi Programu</translation>
-<translation id="8929454297483336498">Matumizi ya API za Mac OS X AVFoundation, badala ya QTKit</translation>
 <translation id="8931394284949551895">Vifaa vipya</translation>
 <translation id="8932730422557198035">Kutumia API ya Android Midi</translation>
 <translation id="8933960630081805351">Onye&amp;sha katika Kipataji</translation>
@@ -5355,6 +5356,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Printa imegunduliwa</translation>
 <translation id="8946359700442089734">Vipengele vya kutatua havikuwashwa kikamilifu kwenye kifaa hiki cha <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Washa matumizi ya WebUSB.</translation>
 <translation id="89515141420106838">Huwasha programu ya Ghala la Duka la Chrome kwenye Wavuti kwa viendeshaji vya printa. Programu hutafuta Duka la Chrome kwenye Wavuti kwa viendelezi vinavyotumia uchapishaji kwenye printa ya USB yenye Kitambulisho mahususi cha USB.</translation>
 <translation id="895347679606913382">Inaanza...</translation>
 <translation id="8954952943849489823">Kusogeza kumeshindikana, hitilafu isiyotarajiwa: $1</translation>
@@ -5499,6 +5501,7 @@
 <translation id="9154194610265714752">Imesasishwa</translation>
 <translation id="9154418932169119429">Picha hii haipatikani nje ya mtandaoni.</translation>
 <translation id="91568222606626347">Unda Njia ya Mkato</translation>
+<translation id="9157697743260533322">Imeshindwa kuweka mipangilio ya masasisho otomatiki kwa watumiaji wote (hitilafu ya awali ya kufungua safari ya ndege. <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Lo! Tatizo la mawasiliano katika mtandao lilitokea wakati wa uthibitishaji. Tafadhali kagua muunganisho wa mtandao wako na ujaribu tena.</translation>
 <translation id="9159562891634783594">Washa kusajili printa za wingu ambazo hazijasajiliwa kutoka onyesho la kuchungulia la printa.</translation>
 <translation id="9166510596677678112">Mtumie barua pepe mtu huyu</translation>
@@ -5510,7 +5513,6 @@
 <translation id="9170848237812810038">&amp;Tendua</translation>
 <translation id="9170884462774788842">Programu nyingine kwenye kompyuta yako iliongeza mandhari ambayo yanaweza kubadilisha jinsi Chrome inavyofanya kazi.</translation>
 <translation id="9177499212658576372">Umeunganishwa kwa mtandao <ph name="NETWORK_TYPE" /> kwa sasa.</translation>
-<translation id="9177556055091995297">Dhibiti kadi za mikopo</translation>
 <translation id="917858577839511832">Majadiliano na DTLS 1.2 ya WebRTC</translation>
 <translation id="917861274483335838">Dhibiti uzuiaji wa programu-jalizi...</translation>
 <translation id="9179348476548754105">Jinsi ambavyo kidhibiti cha nenosiri kinavyoshughulikia kujaza kiotomatiki kwa kitambulisho cha kusawazisha pekee kwa ajili ya kurasa za shughuli za uidhinishaji upya.</translation>
@@ -5553,7 +5555,7 @@
 <translation id="951981865514037445"><ph name="URL" /> inataka kutumia maelezo kuhusu mahali kifaa chako kilipo.</translation>
 <translation id="952838760238220631">Washa matumizi ya Usimbaji Maudhui wa Brotli.</translation>
 <translation id="952992212772159698">Haijaamilishwa</translation>
-<translation id="953000875543358078">Huenda hatua hii ikachukua hadi dakika moja</translation>
+<translation id="953000875543358078">Huenda hatua hii ikachukua takribani dakika moja</translation>
 <translation id="960987915827980018">Takriban saa 1 imesalia</translation>
 <translation id="96421021576709873">Mtandao wa Wi-Fi</translation>
 <translation id="965490406356730238">Washa mjpeg iliyoongezwa kasi kwa maunzi kusimbua fremu iliyopigwa picha inapopatikana.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 26e64a63..7dfbdbd7 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -159,7 +159,6 @@
     சுயவிவரத்தை மீண்டும் அமைக்க வேண்டும்.<ph name="BR" />
     <ph name="BR" />
     அடுத்த திரையில், சிக்கலைச் சரிசெய்வதற்கு உதவ, கருத்து தெரிவிக்கவும்.</translation>
-<translation id="1216954813581739968">தாவலில் டெஸ்க்டாப் பகிர்வை இயக்கு.</translation>
 <translation id="121827551500866099">அனைத்து பதிவிறக்கங்களையும் காண்பி…</translation>
 <translation id="122082903575839559">சான்றிதழ் கையொப்ப அல்காரிதம்</translation>
 <translation id="1221024147024329929">RSA குறியாக்கத்துடன் PKCS #1 MD2</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">வினவலுக்கான இடத்தில் %s ஐக் கொண்ட URL</translation>
 <translation id="1546280085599573572">முகப்புப் பொத்தானைக் கிளிக் செய்யும் போது காண்பிக்கப்படும் பக்கத்தை இந்த நீட்டிப்பு மாற்றியுள்ளது.</translation>
 <translation id="1546795794523394272">சந்திப்புகளுக்கான Chromeboxக்கு வரவேற்கிறோம்!</translation>
+<translation id="1547572086206517271">புதுப்பிக்க வேண்டும்</translation>
 <translation id="1547964879613821194">கனடியன் ஆங்கிலம்</translation>
 <translation id="1548132948283577726">எப்போதும் கடவுச்சொற்களைச் சேமிக்காத தளங்கள் இங்கு காண்பிக்கப்படும்.</translation>
 <translation id="1549045574060481141">பதிவிறக்கத்தை உறுதிப்படுத்து</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">சமீபத்தில் பார்வையிட்ட பக்கங்களை ஆஃப்லைனில் பயன்படுத்துவதற்காக சேமிக்கும் அம்சத்தை இயக்கவும். ஆஃப்லைன் பக்கங்களை இயக்க வேண்டும்.</translation>
 <translation id="1891668193654680795">மென்பொருள் தயாரிப்பாளர்களை அடையாளம் காண இந்த சான்றிதழை நம்புக.</translation>
 <translation id="189210018541388520">முழுத் திரையைத் திற</translation>
+<translation id="1892754076732315533">பக்கம் தூண்டப்பட்ட முழுத்திரையில் அல்லது மவுஸ் சுட்டி பூட்டப்பட்ட நிலைகளில் நுழையும் போது கிடைக்கக் கூடிய, எளிமையான புதிய பயனர் அனுபவம்.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">கிளவுட் ஒதுக்கீட்டைத் தொடர முடியவில்லை</translation>
 <translation id="189358972401248634">பிற மொழிகள்</translation>
@@ -1323,6 +1324,7 @@
 <translation id="288042212351694283">உங்கள் யுனிவர்சல் 2ஆம் நிலை சாதனங்களை அணுகும்</translation>
 <translation id="2881966438216424900">கடைசியாக அணுகியது:</translation>
 <translation id="2882943222317434580">சிறிது நேரத்தில் <ph name="IDS_SHORT_PRODUCT_NAME" /> மீண்டும் துவங்கப்பட்டு, மீட்டமைக்கப்படும்</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">பணி நிர்வாகி</translation>
 <translation id="2887525882758501333">PDF ஆவணம்</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; உடன் பொருந்தும் உருப்படிகள் எதுவுமில்லை</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">இப்பொழுது இல்லை</translation>
 <translation id="3480892288821151001">சாளரத்தை இடப்பக்கம் பொருத்து</translation>
 <translation id="3481915276125965083">இந்தப் பக்கத்தில் பின்வரும் பாப்-அப்கள் தடுக்கப்பட்டன:</translation>
+<translation id="3482214069979148937">முழுத் திரையிலிருந்து வெளியேற, |<ph name="ACCELERATOR" />|ஐப் பிடிக்கவும்</translation>
 <translation id="3484869148456018791">புதிய சான்றிதழைப் பெறு</translation>
 <translation id="3487007233252413104">அநாமதேய செயல்பாடு</translation>
 <translation id="348771913750618459">iframe-சார்ந்த உள்நுழைவுச் செயல்கள்</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">சான்றிதழ் பெயர் கட்டுப்பாடுகள்</translation>
 <translation id="3595596368722241419">பேட்டரி நிரம்பியது</translation>
 <translation id="3600456501114769456">உங்கள் சாதனத்தில் இருக்கும் அகக் கோப்புகளுக்கான அணுகலை உங்கள் நிர்வாகி முடக்கியுள்ளார்.</translation>
-<translation id="3601395307734599350">உங்கள் அனைத்து நீட்டிப்புகளும் இங்கே உள்ளன</translation>
 <translation id="3603385196401704894">கனடியன் ஃபிரெஞ்சு</translation>
 <translation id="3603622770190368340">நெட்வொர்க் சான்றிதழ் பெறுதல்</translation>
 <translation id="3605780360466892872">பட்டன்டவுண்</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">குளோபல் இயல்பைப் பயன்படுத்து (கண்டறிதல்)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 தாவல்}other{# தாவல்கள்}}</translation>
 <translation id="4154664944169082762">விரல் அச்சுகள்</translation>
-<translation id="4157188838832721931">கடவுச்சொற்களின் பக்கத்தில் கடவுச்சொற்களை வெளிப்படுத்துவதற்கு முன், பயனரின் OS கடவுச்சொல்லிற்காக அவருக்கு அறிவுறுத்துவதை முடக்கு.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">இயக்கப் பட்டியலைத் திற</translation>
 <translation id="4159681666905192102">இது <ph name="CUSTODIAN_EMAIL" /> மற்றும் <ph name="SECOND_CUSTODIAN_EMAIL" /> ஆல் நிர்வகிக்கப்படும் குழந்தைகளுக்கான கணக்காகும்.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">இன்னொரு கணக்கில் உள்நுழைக</translation>
 <translation id="4219614746733932747">இயக்கப்பட்டால், சாதன அளவிடல் காரணிக்கு உள்ளடக்கத்தை அளவிட அதன் பெரிதாக்கல் நுட்பத்தை Blink பயன்படுத்தும்.</translation>
 <translation id="4220865787605972627">காட்சியானது அம்சத்தை ஆதரித்தால் அதன் வண்ணத்தைத் அளவுத்திருத்தம் செய்வதை அனுமதிக்கும்.</translation>
-<translation id="4233506668751282421">டெஸ்க்டாப் பகிர்வுக்கு ஆடியோவை இயக்கு</translation>
 <translation id="4235200303672858594">திரை முழுவதும்</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> க்கான கணக்கைச் சேர்</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ஐ இந்த மொழியில் காண்பிக்க முடியாது</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">சாதனத்தில் கொள்கை அமைப்புகளை நிறுவுவதில் தோல்வி: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">உங்கள் இடஞ்சுட்டியை முடக்க <ph name="FULLSCREEN_ORIGIN" /> விரும்புகிறது.</translation>
 <translation id="424546999567421758">அதிக வட்டுப் பயன்பாடு கண்டுபிடிக்கப்பட்டது</translation>
-<translation id="4247072926966606568">இந்தக் கொடியை இயக்குவதன் மூலம், டெஸ்க்டாப் பகிர்வு தேர்ந்தெடுப்பான் சாளரமானது ஆடியோவைப் பகிர வேண்டுமா என்பதைத் தேர்வு செய்ய பயனரை அனுமதிக்கும்.</translation>
 <translation id="424726838611654458">எப்போதும் Adobe Reader இல் திற</translation>
 <translation id="4249248555939881673">பிணைய இணைப்பிற்காக காத்திருக்கிறது...</translation>
 <translation id="4249373718504745892">உங்கள் கேமராவையும், மைக்ரோஃபோனையும் அணுகுவதிலிருந்து இந்தப் பக்கம் தடுக்கப்பட்டுள்ளது.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">முகவரியைச் சேர்</translation>
 <translation id="4359408040881008151">நீட்டிப்பு(கள்) சார்ந்திருப்பதன் காரணமாக நிறுவப்பட்டது.</translation>
 <translation id="4361190688154226069">காட்சிகளில் உள்ள செவ்வகம் அடிப்படையிலான இலக்கிடல்</translation>
-<translation id="4363372140743955595">கடவுச்சொல் நிர்வாகியின் மறுஅங்கீகாரம்</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> பதிவிறக்கப்பட்டது</translation>
 <translation id="4364830672918311045">காட்சி அறிவிப்புகள்</translation>
 <translation id="4365673000813822030">அச்சச்சோ, ஒத்திசைவு பணியை நிறுத்தியுள்ளது.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">தானியங்குநிரப்பியைப் பற்றி</translation>
 <translation id="4449996769074858870">இந்தத் தாவல் ஆடியோவை இயக்குகிறது.</translation>
 <translation id="4450974146388585462">கண்டறி</translation>
+<translation id="4452426408005428395">வேண்டாம்</translation>
 <translation id="4454939697743986778">இந்தச் சான்றிதழானது உங்கள் கணினி நிர்வாகியால் நிறுவப்பட்டதாகும்.</translation>
 <translation id="445923051607553918">வைஃபை நெட்வொர்க்கில் சேர்</translation>
 <translation id="4462159676511157176">தனிப்பயன் பெயர் சேவையகங்கள்</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">ஒரு-முறை செயலாக்கம்: <ph name="DEVICE_TYPE" /> இல் Smart Lockஐச் செயல்படுத்த, கடவுச்சொல்லை உள்ளிடவும். Smart Lock மூலம், உங்கள் மொபைல் கடவுச்சொல் இல்லாமலே இந்தச் சாதனத்தைத் திறக்கும். இந்த அம்சத்தை மாற்ற அல்லது முடக்க, <ph name="DEVICE_TYPE" /> இன் அமைப்புகளுக்குச் செல்லவும்.</translation>
 <translation id="4595560905247879544">பயன்பாடுகளையும் நீட்டிப்புகளையும் நிர்வாகியால் (<ph name="CUSTODIAN_NAME" />) மட்டுமே மாற்ற முடியும்.</translation>
 <translation id="4601242977939794209">EMF கன்வெர்ட்டர்</translation>
-<translation id="4601250583401186741">கட்டுப்படுத்தியுடன் இணைத்தல்</translation>
 <translation id="4602466770786743961">உங்கள் கேமராவையும் மைக்ரோஃபோனையும் அணுக <ph name="HOST" /> ஐ எப்போதும் அனுமதிக்கவும்</translation>
 <translation id="4605399136610325267">இணையத்துடன் இணைக்கப்படவில்லை</translation>
 <translation id="4608500690299898628">&amp;கண்டுபிடி...</translation>
@@ -2781,6 +2779,7 @@
 <translation id="5039804452771397117">அனுமதி</translation>
 <translation id="5045550434625856497">தவறான கடவுச்சொல்</translation>
 <translation id="5048179823246820836">நார்டிக்</translation>
+<translation id="5048294425697652159">திரையின் அளவுத்திருத்தத்திற்காக க்விர்க்ஸ் க்ளையன்ட்டை இயக்கு.</translation>
 <translation id="5053604404986157245">தோராயமாக உருவாக்கப்பட்ட TPM கடவுச்சொல் கிடைக்கவில்லை. இது பவர்வாஷுக்குப் பிறகு இயல்பாக ஏற்படக்கூடியது.</translation>
 <translation id="5053803681436838483">புதிய ஷிப்பிங் முகவரி...</translation>
 <translation id="5055309315264875868">ஒத்திசைக்கப்பட்ட உங்கள் கடவுச்சொற்களை ஆன்லைனில் நிர்வகிக்க, கடவுச்சொல் நிர்வாகி அமைப்புகள் பக்கத்தில் இணைப்பைக் காட்டவும்.</translation>
@@ -2876,7 +2875,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">மீடியா பிளேபேக்கிற்கான சைகைச் செயல்பாட்டுத் தேவை</translation>
 <translation id="5189060859917252173">"<ph name="CERTIFICATE_NAME" />" என்ற சான்றிதழ் ஒரு சான்றளிக்கும் மையத்தைக் குறிக்கிறது.</translation>
-<translation id="5196117515621749903">தேக்ககங்களைப் புறக்கணித்து மீண்டும் ஏற்று</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">இணையம்</translation>
 <translation id="5197680270886368025">ஒத்திசைவு நிறைவுற்றது.</translation>
@@ -2891,6 +2889,7 @@
 <translation id="521582610500777512">படம் விலக்கப்பட்டது</translation>
 <translation id="5218183485292899140">சுவிஸ் ஃபிரெஞ்சு</translation>
 <translation id="5218766986344577658">இணைப்பு குழப்பம்நீக்குதல் பாப்அப்</translation>
+<translation id="5220992698394817380">IME மெனுவில் குழுசேர்தலை இயக்கு</translation>
 <translation id="5222676887888702881">வெளியேறு</translation>
 <translation id="5225324770654022472">பயன்பாடுகளின் குறுக்குவழியைக் காட்டு</translation>
 <translation id="5227536357203429560">தனிப்பட்ட பிணையத்தைச் சேர்...</translation>
@@ -2933,6 +2932,7 @@
 <translation id="5271247532544265821">எளிமையாக்கப்பட்ட/பாரம்பரிய சீனப் பயன்முறைகளுக்கு இடையே மாற்றுக</translation>
 <translation id="5271549068863921519">கடவுச்சொல்லைச் சேமி</translation>
 <translation id="5273628206174272911">கிடைமட்ட மிகைஉருட்டலுக்கான, பரிசோதனைக்குரிய வரலாற்றை வழிசெலுத்து.</translation>
+<translation id="5275194674756975076">புதுப்பி</translation>
 <translation id="5275795814002959418">இந்தத் தளத்திலிருந்து <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google இயக்கத்திலிருந்து மீட்கப்பட்ட கோப்புகள்</translation>
 <translation id="527605719918376753">தாவலை முடக்கு</translation>
@@ -3006,6 +3006,7 @@
 <translation id="5368720394188453070">ஃபோன் பூட்டப்பட்டது. நுழைய, திறக்கவும்.</translation>
 <translation id="5369927996833026114">Chrome பயன்பாட்டுத் துவக்கியைக் கண்டறிதல்</translation>
 <translation id="5370819323174483825">&amp;மீண்டும் ஏற்று</translation>
+<translation id="5372066618989754822">மொழி அமைப்புகள் பக்கத்தில் புதிய IME மெனுவிற்கான அணுகலை இயக்கும்.</translation>
 <translation id="5372529912055771682">வழங்கப்பட்ட பதிவு பயன்முறை இயக்க முறைமையின் இந்தப் பதிப்பால் ஆதரிக்கப்படவில்லை. நீங்கள் புதிய பதிப்பை இயக்குவதை உறுதி செய்து, மீண்டும் முயலவும்.</translation>
 <translation id="5374359983950678924">படத்தை மாற்றுக</translation>
 <translation id="5376169624176189338">முந்தைய பக்கத்திற்கு செல்ல கிளிக் செய்க, வரலாற்றைக் காண அழுத்திக்கொண்டே இருங்கள்</translation>
@@ -3192,6 +3193,7 @@
 <translation id="5626134646977739690">பெயர்:</translation>
 <translation id="5627086634964711283">முகப்புப் பொத்தானைக் கிளிக் செய்யும்போது காண்பிக்கப்படும் பக்கத்தையும் இது கட்டுப்படுத்துகிறது.</translation>
 <translation id="5627259319513858869">இன்னும் மேம்பாட்டில் உள்ள பரிசோதனைக்குரிய கேன்வாஸ் அம்சங்களின் பயன்பாட்டை இயக்குகிறது.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">உலாவியின் மேல் குரோமில் மெட்டீரியல் வடிவமைப்பு</translation>
 <translation id="5633060877636360447">இது, இந்தச் சாதனத்திலிருந்து குறைந்தது <ph name="TOTAL_COUNT" /> உருப்படிகளை நிரந்தரமாக நீக்கும், ஆனால் பிற சாதனங்களிலிருந்து ஒத்திசைக்கப்பட்ட உருப்படிகளை அழிக்காது.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> ஐப் பயன்படுத்த, நீங்கள் முதலில் சில வினாடிகளில் தானாகவே திறக்கும் <ph name="LINK_START" />நெட்வொர்க்கின் உள்நுழைவுப் பக்கத்தைப்<ph name="LINK_END" /> பார்வையிட வேண்டும். அது நடைபெறவில்லை எனில், நெட்வொர்க்கைப் பயன்படுத்த முடியாது.</translation>
@@ -3222,6 +3224,7 @@
 <translation id="5678862612529498267">விசைப்பலகை ஃபோகஸைக் கொண்ட பொருளை ஹைலைட் செய்</translation>
 <translation id="5678955352098267522">உங்கள் தரவை <ph name="WEBSITE_1" /> இல் படிக்கவும்</translation>
 <translation id="5680928275846978395">மேலோட்டப் பயன்முறையில் உரை வடிப்பான்</translation>
+<translation id="5683818630978268777">சோதனை ரீதியிலான விசைப்பலகைப் பூட்டு UI.</translation>
 <translation id="5684661240348539843">பண்பு அடையாளங்காட்டி</translation>
 <translation id="569068482611873351">இறக்குமதி செய்க...</translation>
 <translation id="56907980372820799">தரவை இணை</translation>
@@ -3687,7 +3690,6 @@
 <translation id="6420676428473580225">டெஸ்க்டாப்பில் சேர்க்கவும்</translation>
 <translation id="6422329785618833949">படம் புரட்டப்பட்டது</translation>
 <translation id="642282551015776456">கோப்புறைப் பெயரின் கோப்பாக இந்தப் பெயரைப் பயன்பட முடியாமல் போகக்கூடும்</translation>
-<translation id="642322423610046417">உங்களுக்குத் தேவையில்லாத நீட்டிப்புகளை அகற்ற சூழல் (வலது கிளிக்) மெனுவைப் பயன்படுத்தவும்.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Reader ஐ உங்கள் இயல்பு PDF காட்டியாகப் பயன்படுத்த விரும்புகிறீர்களா?</translation>
 <translation id="6425092077175753609">மெட்டீரியல்</translation>
@@ -3758,6 +3760,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">விசைப்பலகைப் பூட்டுப் பயன்முறை மூலம் சோதனை ரீதியிலான முழுத்திரையிலிருந்து வெளியேற, பயனர்கள் Escஐப் பிடிக்க வேண்டும்.</translation>
 <translation id="6527303717912515753">பகிர்</translation>
 <translation id="6528546217685656218">இந்த க்ளையண்ட் சான்றிதழுக்கான தனிப்பட்ட விசை இல்லை அல்லது செல்லுபடியாகாததாக இருக்கிறது.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> ஐ ஒத்திசைக்கிறது...</translation>
@@ -3937,6 +3940,7 @@
 <translation id="6825883775269213504">ரஷ்யன்</translation>
 <translation id="6827236167376090743">இந்த வீடியோவானது தொடர்ந்து நீண்ட நேரம் இயங்கும்.</translation>
 <translation id="6828153365543658583">பின்வரும் பயனர்களுக்கு மட்டும் உள்நுழைவு என வரம்பிடு:</translation>
+<translation id="6828860976882136098">அனைத்து பயனர்களுக்கும் தானியங்கு புதுப்பிப்புகளை அமைக்க முடியவில்லை (ப்ரீஃபிளைட் செயலாக்கப் பிழை: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">உங்கள் <ph name="DEVICE_TYPE" /> இல் உதவி பெறவும்.</translation>
 <translation id="6829270497922309893">உங்கள் நிறுவனத்தில் பதிவுசெய்யவும்</translation>
 <translation id="6830590476636787791">முதல் இயக்கப் பயிற்சியில் அனிமேஷனாக்கப்பட்ட மாற்றங்கள்</translation>
@@ -3959,7 +3963,6 @@
 <translation id="6860427144121307915">தாவலில் திற</translation>
 <translation id="6862635236584086457">இந்த கோப்புறையில் சேமிக்கப்பட்ட எல்லா கோப்புகளும் ஆன்லைனில் தானாகவே காப்புபிரதி எடுக்கப்படுகின்றன</translation>
 <translation id="6865313869410766144">தன்னிரப்பி படிவத் தரவு</translation>
-<translation id="6865319096921627602">Android இல் ஒருங்கிணைந்த ஊடகத் தொடர்ச்சியை இயக்கும்.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> க்கு மாறு</translation>
 <translation id="6869402422344886127">தேர்ந்தெடுக்கப்பட்ட தேர்வுப்பெட்டி</translation>
 <translation id="6870130893560916279">உக்ரைனியன் விசைப்பலகை</translation>
@@ -4054,6 +4057,7 @@
 <translation id="7006017748900345484">WebRTC H.264 மென்பொருள் வீடியோ குறியாக்கி/குறிவிலக்கி</translation>
 <translation id="7006634003215061422">கீழ் ஓரம்</translation>
 <translation id="7006844981395428048">$1 ஆடியோ</translation>
+<translation id="7008270479623533562">இந்த நீட்டிப்பை இயக்க, பக்கத்தைப் புதுப்பிக்க வேண்டும். நீட்டிப்பு ஐகானை வலது கிளிக் செய்வதன் மூலம் தளத்தில் இந்த நீட்டிப்பைத் தானாகவே இயக்கலாம்.</translation>
 <translation id="7009045250432250765">ஒற்றை-கிளிக் தன்னிரப்பி</translation>
 <translation id="7010160495478792664">கிடைக்குமிடத்தில் வன்பொருள் விரைவுப்படுத்தப்பட்ட வீடியோ குறியிறக்கம்.</translation>
 <translation id="7010400591230614821">அக்ரசிவ் தாவல் நீக்க உத்தி</translation>
@@ -4218,7 +4222,6 @@
 <translation id="7256710573727326513">தாவலில் திற</translation>
 <translation id="7257173066616499747">வைஃபை நெட்வொர்க்குகள்</translation>
 <translation id="7257666756905341374">நீங்கள் நகலெடுத்து ஒட்டும் தரவைப் படிக்கலாம்</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7 இல் வீடியோ எடுக்க, வீடியோ சாதனத்தைக் கண்காணிப்பதற்கான AV Foundation பயன்பாட்டை இயக்கவும். மற்ற நிலைகளில், QTKit பயன்படுத்தப்படும்.</translation>
 <translation id="7260504762447901703">அணுகலை ரத்துசெய்</translation>
 <translation id="7262004276116528033">உள்நுழைவுச் சாதனத்தை <ph name="SAML_DOMAIN" /> ஹோஸ்ட் செய்கிறது</translation>
 <translation id="7262221505565121">சாண்ட்பாக்ஸ் செய்யப்படாத செருகுநிரல் அணுகல் விதிவிலக்குகள்</translation>
@@ -4237,7 +4240,7 @@
 <translation id="7280877790564589615">அனுமதி கோரப்பட்டது</translation>
 <translation id="7282547042039404307">சீரானது</translation>
 <translation id="7287143125007575591">அணுகல் மறுக்கப்பட்டது.</translation>
-<translation id="7288592446024861651">புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள் Google கணக்குடன் ஒத்திசைக்கப்படுவதால், அவற்றை எல்லா சாதனங்களிலும் பயன்படுத்தலாம். ஒத்திசைப்பதை <ph name="BEGIN_LINK" /> இல் கட்டுப்படுத்தலாம்</translation>
+<translation id="7288592446024861651">புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள் Google கணக்குடன் ஒத்திசைக்கப்படுவதால், அவற்றை எல்லா சாதனங்களிலும் பயன்படுத்தலாம். எவற்றை ஒத்திசைப்பது என்பதை <ph name="BEGIN_LINK" /> இல் கட்டுப்படுத்தலாம்</translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">பதிவை உறுதிசெய்க</translation>
 <translation id="7295019613773647480">கண்காணிக்கப்படும் பயனர்களை இயக்கு</translation>
@@ -4256,7 +4259,6 @@
 <translation id="7314278895724341067">NTP ஆஃப்லைன் பக்கங்களை இயக்கு</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (நடப்பு)</translation>
 <translation id="7321545336522791733">சேவையகத்தைத் தொடர்புகொள்ள  முடியவில்லை</translation>
-<translation id="7324841169865301118">டெஸ்க்டாப் பகிர்வுக்கு ஒரு தாவலைத் தேர்வுசெய்ய பயனருக்கு உதவுகிறது</translation>
 <translation id="7325437708553334317">உயர் நிறமாறுபாடு நீட்டிப்பு</translation>
 <translation id="7326565110843845436">டச்பேட் மூன்று-விரல்-கிளிக்</translation>
 <translation id="73289266812733869">தேர்வுநீக்கப்பட்டது</translation>
@@ -4998,7 +5000,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">புகைப்பட உரிமையாளர்</translation>
 <translation id="8428213095426709021">அமைப்புகள்</translation>
-<translation id="8432590265309978927">பல செயலாக்கம் நிறைந்த தள iframesஐத் தனித்தனி செயல்பாடுகளாக ஒழுங்கமைத்தலுக்கான உயர் சோதனை ஆதரவை வழங்கும்.</translation>
 <translation id="8432745813735585631">யுஎஸ் கோல்மேக் விசைப்பலகை</translation>
 <translation id="8434177709403049435">&amp;குறியீட்டு முறை</translation>
 <translation id="8434480141477525001">NaCl பிழைத்திருத்தப் போர்ட்</translation>
@@ -5196,7 +5197,6 @@
 <translation id="8713979477561846077">US விசைப்பலகைக்கான கைமுறை விசைப்பலகை தானியங்கு திருத்தத்தை இயக்கவும், அதன் மூலம் கைமுறை விசைப்பலகையில் உள்ளிடுவதில் பரிந்துரைகளைப் பெறலாம்.</translation>
 <translation id="871476437400413057">Google சேமித்துள்ள கடவுச்சொற்கள்</translation>
 <translation id="8714838604780058252">பின்னணி கிராஃபிக்ஸ்</translation>
-<translation id="8716065142695381595">Android இல் ஒருங்கிணைந்த (Android மற்றும் டெஸ்க்டாப்) ஊடகத் தொடர்ச்சியை இயக்கும்.</translation>
 <translation id="8722421161699219904">யுஎஸ் சர்வதேச விசைப்பலகை</translation>
 <translation id="872451400847464257">தேடு பொறியைத் திருத்து</translation>
 <translation id="8724859055372736596">கோப்புறையில் &amp;காண்பி</translation>
@@ -5216,6 +5216,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" />க்குப் பதிலாக <ph name="PROTOCOL" /> இணைப்புகளைத் திறக்கும்</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">சுட்டியுடன் ஒப்பிடும்போது மோசமான தெளிவுத் திறனைக் கொண்ட தொடுதல்களுடன் ஈடுசெய்யும் பொருட்டு தொடுதல் சைகையின் இடநிலையைச் சீர்ப்படுத்தும்.</translation>
+<translation id="8743712320294854924">ஷெல்ஃபில் விரிவாக்கப்பட்ட உள்ளீட்டு விருப்பங்களைக் காட்டு.</translation>
 <translation id="874420130893181774">பாரம்பரிய பின்யின் உள்ளீட்டு முறை</translation>
 <translation id="8744525654891896746">இந்தக் கண்காணிக்கப்படும் பயனருக்கான தோற்றத்தைத் தேர்ந்தெடுக்கவும்.</translation>
 <translation id="8744641000906923997">ரோமாஜி</translation>
@@ -5285,6 +5286,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift விசைப் பயன்முறை மாற்றம்</translation>
 <translation id="8852742364582744935">பின்வரும் பயன்பாடுகள் மற்றும் நீட்டிப்புகள் சேர்க்கப்பட்டன:</translation>
+<translation id="8853611566624224021">திரையின் வண்ண அளவுத்திருத்தத்திற்காக க்விர்க்ஸ் சேவையகத்திலிருந்து icc திரைக் கோப்புகளை மீட்டெடுப்பதை இயக்கும்.</translation>
 <translation id="885381502874625531">பெலாரஷ்யன் விசைப்பலகை</translation>
 <translation id="8856844195561710094">புளூடூத் சாதனக் கண்டுபிடிப்பை நிறுத்துவதில் தோல்வி.</translation>
 <translation id="885701979325669005">சேமிப்பிடம்</translation>
@@ -5334,7 +5336,6 @@
 <translation id="8925458182817574960">&amp;அமைப்புகள்</translation>
 <translation id="8926389886865778422">மீண்டும் கேட்கவேண்டாம்</translation>
 <translation id="8926518602592448999">டெவெலப்பர் பயன்முறை நீட்டிப்புகளை முடக்கவும்</translation>
-<translation id="8929454297483336498">QTKitக்குப் பதிலாக, Mac OS X AVFoundation APIகளின் பயன்பாடு</translation>
 <translation id="8931394284949551895">புதிய சாதனங்கள்</translation>
 <translation id="8932730422557198035">Android Midi APIஐப் பயன்படுத்து</translation>
 <translation id="8933960630081805351">&amp;கண்டுபிடிப்பானில் காண்பி</translation>
@@ -5348,6 +5349,7 @@
 <translation id="894360074127026135">Netscape சர்வதேச மேம்படுத்தல்</translation>
 <translation id="8944779739948852228">பிரிண்டர் கண்டறியப்பட்டது</translation>
 <translation id="8946359700442089734">இந்த <ph name="IDS_SHORT_PRODUCT_NAME" /> சாதனத்தில் பிழைத்திருத்த அம்சங்கள் முழுமையாக இயக்கப்படவில்லை.</translation>
+<translation id="8946784827990177241">WebUSB ஆதரவை இயக்கும்.</translation>
 <translation id="89515141420106838">பிரிண்டர் இயக்கிகளுக்கான Chrome இணைய அங்காடி கேலரி பயன்பாட்டை இயக்கும். குறிப்பிட்ட USB ஐடியை உடைய USB பிரிண்டரில் அச்சிடுவதை ஆதரிக்கும் நீட்டிப்புகளை, பயன்பாடு Chrome இணைய அங்காடியில் தேடும்.</translation>
 <translation id="895347679606913382">தொடங்குகிறது...</translation>
 <translation id="8954952943849489823">நகர்வு தோல்வி, எதிர்பாராதப் பிழை: $1</translation>
@@ -5491,6 +5493,7 @@
 <translation id="9154194610265714752">புதுப்பிக்கப்பட்டது</translation>
 <translation id="9154418932169119429">இந்தப் படம் ஆஃப்லைனில் கிடைக்காது.</translation>
 <translation id="91568222606626347">குறுக்கு வழியை உருவாக்கு...</translation>
+<translation id="9157697743260533322">அனைத்து பயனர்களுக்கும் தானியங்கு புதுப்பிப்புகளை அமைக்க முடியவில்லை (ப்ரீஃபிளைட் செயலாக்கப் பிழை: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">அச்சச்சோ!  அங்கீகரிப்பின்போது பிணைய தகவல்தொடர்பு சிக்கல் ஏற்பட்டது. உங்கள் பிணைய இணைப்பைச் சோதித்து மீண்டும் முயலவும்.</translation>
 <translation id="9159562891634783594">அச்சு மாதிரிக்காட்சியிலிருந்து பதிவுசெய்யப்படாத மேகக்கணி பிரிண்டர்களைப் பதிவுசெய்வதை இயக்கு.</translation>
 <translation id="9166510596677678112">இவருக்கு மின்னஞ்சல் அனுப்பு</translation>
@@ -5502,7 +5505,6 @@
 <translation id="9170848237812810038">&amp;செயல்தவிர்</translation>
 <translation id="9170884462774788842">உங்கள் கணினியில் உள்ள மற்றொரு நிரலானது, Chrome வேலைசெய்யும் வழியை மாற்றும் தீம் ஐச் சேர்த்துள்ளது.</translation>
 <translation id="9177499212658576372">நீங்கள் தற்போது <ph name="NETWORK_TYPE" /> பிணையத்துடன் இணைக்கப்பட்டுள்ளீர்கள்.</translation>
-<translation id="9177556055091995297">கிரெடிட் கார்டுகளை நிர்வகி...</translation>
 <translation id="917858577839511832">WebRTCக்கான DTLS 1.2 இன் ஒப்பந்தச் செயல்பாடு</translation>
 <translation id="917861274483335838">செருகுநிரல் தடுத்தலை நிர்வகித்தல்...</translation>
 <translation id="9179348476548754105">பரிமாற்றத்துக்குரிய மறுஅங்கீகாரப் பக்கங்களுக்கு மட்டும், ஒத்திசைவு நற்சான்றிதழைத் தன்னிரப்புவதை கடவுச்சொல் நிர்வாகி கையாளும் விதம்.</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index f08278f..7c9aa4c4 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -159,7 +159,6 @@
     మీరు మీ ప్రొఫైల్‌ను మళ్లీ సెటప్ చేయాల్సి ఉంటుంది.<ph name="BR" />
     <ph name="BR" />
    తదుపరి స్క్రీన్‌లో, దయచేసి ఈ సమస్యను పరిష్కరించడంలో మాకు సహాయపడటానికి అభిప్రాయాన్ని పంపండి.</translation>
-<translation id="1216954813581739968">డెస్క్‌టాప్ భాగస్వామ్యం కోసం ట్యాబ్‌ను ప్రారంభించండి.</translation>
 <translation id="121827551500866099">అన్ని డౌన్‌లోడ్‌లను చూపించు...</translation>
 <translation id="122082903575839559">సర్టిఫికెట్ సంతకం అల్గారిథమ్</translation>
 <translation id="1221024147024329929">RSA గుప్తీకరణతో PKCS #1 MD2</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">ప్రశ్న యొక్క ప్రదేశంలో %sతో URL</translation>
 <translation id="1546280085599573572">ఈ పొడిగింపు మీరు హోమ్ బటన్‌ను క్లిక్ చేసినప్పుడు చూపబడే పేజీని మార్చింది.</translation>
 <translation id="1546795794523394272">సమావేశాల కోసం Chromeboxకి స్వాగతం!</translation>
+<translation id="1547572086206517271">రిఫ్రెష్ చేయడం అవసరం</translation>
 <translation id="1547964879613821194">కెనడియన్ ఆంగ్లం</translation>
 <translation id="1548132948283577726">పాస్‌వర్డ్‌లు సేవ్ చెయ్యని సైట్‌లు ఇక్కడ కనిపిస్తాయి.</translation>
 <translation id="1549045574060481141">డౌన్‌లోడ్‌ను నిర్ధారించండి</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">ఆఫ్‌లైన్ వినియోగం కోసం ఇటీవల సందర్శించిన పేజీలను నిల్వ చేయడం ప్రారంభిస్తుంది. ఆఫ్‌లైన్ పేజీలు ప్రారంభించడం ఆవశ్యకం.</translation>
 <translation id="1891668193654680795">సాఫ్ట్‌వేర్ నిర్మాతలను గుర్తించడం కోసం ఈ ప్రమాణపత్రాన్ని నమ్మండి.</translation>
 <translation id="189210018541388520">పూర్తి స్క్రీన్‌ని తెరువు</translation>
+<translation id="1892754076732315533">పేజీ ప్రారంభిత పూర్తి స్క్రీన్ లేదా మౌస్ పాయింటర్ లాక్ స్థితుల్లోకి ప్రవేశిస్తున్నప్పుడు సరళీకృతమైన కొత్త వినియోగదారు అనుభవం అందిస్తుంది.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">క్లౌడ్ కేటాయింపు విధానం విఫలమైంది</translation>
 <translation id="189358972401248634">ఇతర భాషలు</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">మీ సార్వత్రిక 2వ కారకం పరికరాలను ప్రాప్యత చేయండి</translation>
 <translation id="2881966438216424900">చివరగా ప్రాప్తి చేసింది:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> పునఃప్రారంభించబడుతుంది మరియు కొద్దిసేపట్లో రీసెట్ చేయబడుతుంది</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">విధి సంచాలకులు</translation>
 <translation id="2887525882758501333">PDF పత్రం</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;కు అంశాలు సరిపోలలేదు</translation>
@@ -1752,6 +1754,7 @@
 <translation id="3479552764303398839">ఇప్పుడు కాదు</translation>
 <translation id="3480892288821151001">విండోను ఎడమవైపుకు డాక్ చేయి</translation>
 <translation id="3481915276125965083">ఈ పేజీపై క్రింది పాప్-అప్‌లు నిరోధించబడ్డాయి:</translation>
+<translation id="3482214069979148937">పూర్తి స్క్రీన్‌ నుండి నిష్క్రమించడానికి |<ph name="ACCELERATOR" />|ని నొక్కి, ఉంచండి</translation>
 <translation id="3484869148456018791">క్రొత్త ప్రమాణపత్రాన్ని పొందండి</translation>
 <translation id="3487007233252413104">అజ్ఞాత కార్యాచరణ</translation>
 <translation id="348771913750618459">iframe ఆధారిత సైన్ ఇన్ విధానాలు</translation>
@@ -1846,7 +1849,6 @@
 <translation id="3593965109698325041">సర్టిఫికెట్ పేరు పరిమితులు</translation>
 <translation id="3595596368722241419">బ్యాటరీ  నిండింది</translation>
 <translation id="3600456501114769456">మీ నిర్వాహకులు మీ పరికరంలోని స్థానిక ఫైల్‌లకు ప్రాప్యత నిలిపివేసారు.</translation>
-<translation id="3601395307734599350">మీ అన్ని పొడిగింపులు ఇక్కడ ఉన్నాయి</translation>
 <translation id="3603385196401704894">కెనడియెన్ ఫ్రెంచ్</translation>
 <translation id="3603622770190368340">నెట్‌వర్క్ ప్రమాణపత్రాన్ని పొందండి</translation>
 <translation id="3605780360466892872">బటన్‌డౌన్</translation>
@@ -2229,7 +2231,6 @@
 <translation id="4151403195736952345">భౌగోళిక డిఫాల్ట్‌ను ఉపయోగించు (గుర్తించు)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ట్యాబ్}other{# ట్యాబ్‌లు}}</translation>
 <translation id="4154664944169082762">వేలిముద్రలు</translation>
-<translation id="4157188838832721931">పాస్‌వర్డ్‌ల పేజీలో పాస్‌వర్డ్‌లను బహిర్గతం చేయడానికి ముందు వినియోగదారుని వారి OS పాస్‌వర్డ్ తెలపాలని ప్రాంప్ట్ చేయడాన్ని నిలిపివేయండి.</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">ప్లే జాబితాను తెరువు</translation>
 <translation id="4159681666905192102">ఇది <ph name="CUSTODIAN_EMAIL" /> మరియు <ph name="SECOND_CUSTODIAN_EMAIL" /> నిర్వహించే చిన్నపిల్లల ఖాతా.</translation>
@@ -2273,7 +2274,6 @@
 <translation id="4218259925454408822">మరో ఖాతాతో సైన్ ఇన్ చేయండి</translation>
 <translation id="4219614746733932747">ప్రారంభించబడితే, బ్లింక్ పరికర ప్రమాణ అంశం కోసం కంటెంట్‌ను అంచనా వేయడానికి దాని జూమింగ్ విధానాన్ని ఉపయోగిస్తుంది.</translation>
 <translation id="4220865787605972627">డిస్‌ప్లే రంగు క్రమాంకనాన్ని డిస్‌ప్లే ఆ లక్షణానికి మద్దతు ఇచ్చే పక్షంలో అనుమతిస్తుంది.</translation>
-<translation id="4233506668751282421">డెస్క్‌టాప్ భాగస్వామ్యం కోసం ఆడియోను ప్రారంభించండి</translation>
 <translation id="4235200303672858594">పూర్తి స్క్రీన్</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> కోసం ఖాతాను జోడించు</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> ఈ భాషలో ప్రదర్శించబడదు</translation>
@@ -2281,7 +2281,6 @@
 <translation id="4242577469625748426">పరికరంలో విధాన సెట్టింగ్‌లను ఇన్‌స్టాల్ చేయడంలో విఫలమైంది: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> మీ మౌస్ కర్సర్‌ను ఆపివేయాలనుకుంటోంది.</translation>
 <translation id="424546999567421758">అధిక డిస్క్ వినియోగం గుర్తించబడింది</translation>
-<translation id="4247072926966606568">ఈ ఫ్లాగ్ ఆన్‌లో ఉంటే, డెస్క్‌టాప్ భాగస్వామ్య ఎంపిక విండోలో వినియోగదారు ఆడియోను భాగస్వామ్యం చేయాలా వద్దా అనేదాన్ని ఎంచుకోగలరు.</translation>
 <translation id="424726838611654458">ఎల్లప్పుడూ Adobe Readerలో తెరువు</translation>
 <translation id="4249248555939881673">నెట్‌వర్క్ కనెక్షన్ కోసం వేచి ఉంది...</translation>
 <translation id="4249373718504745892">మీ కెమెరా మరియు మైక్రోఫోన్‌ను ప్రాప్యత చేయకుండా ఈ పేజీ బ్లాక్ చేయబడింది.</translation>
@@ -2354,7 +2353,6 @@
 <translation id="4358697938732213860">చిరునామాను జోడించండి</translation>
 <translation id="4359408040881008151">ఆధారిత పొడిగింపు(లు) కారణంగా ఇన్‌స్టాల్ చేయబడింది.</translation>
 <translation id="4361190688154226069">వీక్షణల్లో దీర్ఘ చతురస్ర-ఆధారిత లక్ష్య విధానం</translation>
-<translation id="4363372140743955595">పాస్‌వర్డ్ నిర్వాహికి పునఃప్రామాణీకరణ</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> డౌన్‌లోడ్ చేయబడింది</translation>
 <translation id="4364830672918311045">నోటిఫికేషన్‌లను ప్రదర్శించడం</translation>
 <translation id="4365673000813822030">అయ్యో, సమకాలీకరణ పని చేయడం ఆగిపోయింది.</translation>
@@ -2411,6 +2409,7 @@
 <translation id="4449935293120761385">స్వయంపూర్తి గురించి</translation>
 <translation id="4449996769074858870">ఈ ట్యాబ్ ఆడియో‌ను ప్లే చేస్తోంది.</translation>
 <translation id="4450974146388585462">విశ్లేషించు</translation>
+<translation id="4452426408005428395">పర్వాలేదు</translation>
 <translation id="4454939697743986778">ఈ ప్రమాణపత్రం మీ సిస్టమ్ నిర్వాహకుని ద్వారా ఇన్‌స్టాల్ చేయబడింది.</translation>
 <translation id="445923051607553918">Wi-Fi నెట్‌వర్క్‌లో చేరండి</translation>
 <translation id="4462159676511157176">అనుకూల పేరు సర్వర్‌లు</translation>
@@ -2488,7 +2487,6 @@
 <translation id="4594109696316595112">ఒక-పర్యాయ సక్రియం: ఈ <ph name="DEVICE_TYPE" />లో Smart Lockని సక్రియం చేయడానికి మీ పాస్‌వర్డ్‌ను టైప్ చేయండి. Smart Lockతో, మీ ఫోన్ ఈ పరికరాన్ని పాస్‌వర్డ్ లేకుండానే అన్‌లాక్ చేస్తుంది. ఈ లక్షణాన్ని మార్చడానికి లేదా ఆఫ్ చేయడానికి, మీ <ph name="DEVICE_TYPE" /> సెట్టింగ్‌లను సందర్శించండి.</translation>
 <translation id="4595560905247879544">అనువర్తనాలు మరియు పొడిగింపులను నిర్వాహకుడు (<ph name="CUSTODIAN_NAME" />) మాత్రమే సవరించగలరు.</translation>
 <translation id="4601242977939794209">EMF కన్వర్టర్</translation>
-<translation id="4601250583401186741">కంట్రోలర్‌తో జత చేయండి</translation>
 <translation id="4602466770786743961">మీ కెమెరా మరియు మైక్రోఫోన్‌ను ప్రాప్యత చేయడానికి <ph name="HOST" />ను ఎల్లప్పుడూ అనుమతించండి</translation>
 <translation id="4605399136610325267">ఇంటర్‌నెట్ కనెక్ట్ చెయ్యబడలేదు</translation>
 <translation id="4608500690299898628">&amp;కనుగొను...</translation>
@@ -2784,6 +2782,7 @@
 <translation id="5039804452771397117">అనుమతించు</translation>
 <translation id="5045550434625856497">తప్పు పాస్‌వర్డ్</translation>
 <translation id="5048179823246820836">నోర్డిక్</translation>
+<translation id="5048294425697652159">డిస్‌ప్లే క్రమాంకనం కోసం క్విర్క్స్ క్లయింట్‌ను ప్రారంభించండి.</translation>
 <translation id="5053604404986157245">యాదృచ్చికంగా రూపొందించబడిన TPM పాస్‌వర్డ్ అందుబాటులో లేదు. ఇది పవర్‌వాష్ తర్వాత సర్వసాధారణం.</translation>
 <translation id="5053803681436838483">కొత్త షిప్పింగ్ చిరునామా...</translation>
 <translation id="5055309315264875868">మీ సమకాలీకరించబడిన పాస్‌వర్డ్‌లను ఆన్‌లైన్‌లో నిర్వహించడానికి పాస్‌వర్డ్ నిర్వాహికి సెట్టింగ్‌ల పేజీలో లింక్‌ను చూపండి.</translation>
@@ -2881,7 +2880,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">మీడియా ప్లేబ్యాక్ కోసం సంజ్ఞ ఆవశ్యకం</translation>
 <translation id="5189060859917252173">ప్రమాణపత్రం "<ph name="CERTIFICATE_NAME" />" ప్రమాణపత్రం అధికారికి ప్రాతినిధ్యం వహిస్తుంది.</translation>
-<translation id="5196117515621749903">విస్మరిస్తున్న కాష్‌ని మళ్ళీ లోడ్ చెయ్యండి</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">ఇంటర్నెట్</translation>
 <translation id="5197680270886368025">సమకాలీకరణ పూర్తయింది.</translation>
@@ -2896,6 +2894,7 @@
 <translation id="521582610500777512">ఫోటో విస్మరించబడింది</translation>
 <translation id="5218183485292899140">స్విస్ ఫ్రెంచ్</translation>
 <translation id="5218766986344577658">లింక్ అర్ధసందిగ్ధత పాప్అప్</translation>
+<translation id="5220992698394817380">ప్రారంభిత IME మెనుని ప్రారంభించండి</translation>
 <translation id="5222676887888702881">సైన్ ఔట్</translation>
 <translation id="5225324770654022472">అనువర్తనాల సత్వరమార్గాన్ని చూపండి</translation>
 <translation id="5227536357203429560">ప్రైవేట్ నెట్‌వర్క్‌ని జోడించు...</translation>
@@ -2938,6 +2937,7 @@
 <translation id="5271247532544265821">సులభతర/సాంప్రదాయ చైనీస్ మోడ్‌ను మార్చండి</translation>
 <translation id="5271549068863921519">పాస్‌వర్డ్‌ను సేవ్ చెయ్యి</translation>
 <translation id="5273628206174272911">సమతల ఓవర్‌స్క్రోల్‌కు ప్రతిస్పందనగా ప్రయోగాత్మక చరిత్ర నావిగేషన్.</translation>
+<translation id="5275194674756975076">సరే, రిఫ్రెష్ చేయి</translation>
 <translation id="5275795814002959418">ఈ సైట్ నుండి <ph name="COUNT" /></translation>
 <translation id="5275973617553375938">Google డిస్క్ నుండి పునరుద్ధరించబడిన ఫైల్‌లు</translation>
 <translation id="527605719918376753">ట్యాబ్‌ను మ్యూట్ చేయి</translation>
@@ -3011,6 +3011,7 @@
 <translation id="5368720394188453070">మీ ఫోన్ లాక్ చేయబడింది. ప్రవేశించడానికి దాన్ని అన్‌లాక్ చేయండి.</translation>
 <translation id="5369927996833026114">Chrome అనువర్తన లాంచర్‌ను కనుగొనండి</translation>
 <translation id="5370819323174483825">&amp;మళ్లీ లోడ్ చేయి</translation>
+<translation id="5372066618989754822">భాష సెట్టింగ్‌ల పేజీలో కొత్త IME మెనుకి ప్రాప్యతను ప్రారంభిస్తుంది.</translation>
 <translation id="5372529912055771682">సరఫరా చేయబడిన నమోదు మోడ్‌కు ఆపరేటింగ్ సిస్టమ్ యొక్క ఈ సంస్కరణ ద్వారా మద్దతు లేదు. దయచేసి మీరు తాజా సంస్కరణను అమలు చేస్తున్నారని నిర్ధారించుకోండి మరియు మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="5374359983950678924">చిత్రాన్ని మార్చు</translation>
 <translation id="5376169624176189338">వెనుకకు వెళ్ళడానికి క్లిక్ చెయ్యండి, చరిత్రను చూడటానికి నొక్కి ఉంచండి</translation>
@@ -3196,6 +3197,7 @@
 <translation id="5626134646977739690">పేరు:</translation>
 <translation id="5627086634964711283">ఇది హోమ్ బటన్‌ను క్లిక్ చేసేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation>
 <translation id="5627259319513858869">ఇప్పటికీ అభివృద్ధి దశలో ఉన్న ప్రయోగాత్మక కాన్వస్ లక్షణాలను ఉపయోగించడాన్ని ప్రారంభిస్తుంది.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">బ్రౌజర్‌లో అత్యుత్తమమైన chromeలో విశిష్ట రూపకల్పన</translation>
 <translation id="5633060877636360447">దీని వలన కనీసం <ph name="TOTAL_COUNT" /> అంశాలు ఈ పరికరం నుండి శాశ్వతంగా తొలగించబడతాయి, కానీ సమకాలీకరించిన అంశాలు ఇతర పరికరాల నుండి తీసివేయబడవు.</translation>
 <translation id="5636996382092289526">మీరు <ph name="NETWORK_ID" />ని ఉపయోగించడానికి మొదట కొన్ని సెకన్లలో స్వయంచాలకంగా తెరవబడే <ph name="LINK_START" />నెట్‌వర్క్ సైన్ ఇన్ పేజీని సందర్శించాలి<ph name="LINK_END" />. ఇది జరగకపోతే, నెట్‌వర్క్‌ను ఉపయోగించలేరు.</translation>
@@ -3226,6 +3228,7 @@
 <translation id="5678862612529498267">కీబోర్డ్ దృష్టి కేంద్రీకరణతో ఆబ్జెక్ట్‌ను ప్రముఖంగా చూపు</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" />లోని మీ డేటాను చదవండి</translation>
 <translation id="5680928275846978395">స్థూలదృష్టి మోడ్‌లో వచనాన్ని ఫిల్టర్ చేయడం</translation>
+<translation id="5683818630978268777">ప్రయోగాత్మక కీబోర్డ్ లాక్ UI.</translation>
 <translation id="5684661240348539843">అసెట్ ఐడెంటిఫైయర్</translation>
 <translation id="569068482611873351">దిగుమతి చెయ్యి...</translation>
 <translation id="56907980372820799">డేటాను జోడించు</translation>
@@ -3564,7 +3567,7 @@
 <translation id="621638399744152264"><ph name="VALUE" />%</translation>
 <translation id="6217714497624616387">స్పర్శ సర్దుబాటు</translation>
 <translation id="6218364611373262432">పునఃప్రారంభించే ప్రతిసారి అనువర్తన లాంచర్ ఇన్‌స్టాల్ స్థితిని రీసెట్ చేయండి. ఈ ఫ్లాగ్ సెట్ చేయబడినప్పుడు, లాంచర్ ప్రారంభించబడే ప్రతిసారి ఇది ఇన్‌స్టాల్ చేయబడిందనే సంగతి Chrome విస్మరిస్తుంది. ఇది అనువర్తన లాంచర్ ఇన్‌స్టాల్ విధానాన్ని పరీక్షించడం కోసం ఉపయోగించబడుతుంది.</translation>
-<translation id="6219616557885484178">మీ <ph name="DEVICE_TYPE" />లో ఇన్‌స్టాల్ చేసుకొని, ఆడటానికి Google Playలోని మిలియన్ల కొద్దీ అనువర్తనాలు మరియు గేమ్‌ల నుండి ఎంచుకోండి.</translation>
+<translation id="6219616557885484178">మీ <ph name="DEVICE_TYPE" />లో ఇన్‌స్టాల్ చేసుకొని, ఉపయోగించడానికి Google Playలోని మిలియన్ల కొద్దీ అనువర్తనాలు మరియు గేమ్‌ల నుండి ఎంచుకోండి.</translation>
 <translation id="6219717821796422795">హన్యు</translation>
 <translation id="6220413761270491930">పొడిగింపును లోడ్ చేయడంలో లోపం</translation>
 <translation id="6221345481584921695">Google సురక్షిత బ్రౌజింగ్ ఇటీవల <ph name="BEGIN_LINK" />లో <ph name="END_LINK" />మాల్వేర్ గుర్తించింది<ph name="SITE" />. సాధారణంగా సురక్షితమైన వెబ్‌సైట్‌‌లకు కూడా కొన్నిసార్లు మాల్వేర్ సోకుతుంది. ఇటువంటి హానికరమైన కంటెంట్ మాల్వేర్ పంపిణీదారుగా ప్రసిద్ధిగాంచిన <ph name="SUBRESOURCE_HOST" /> నుండి సంక్రమిస్తుంది.</translation>
@@ -3691,7 +3694,6 @@
 <translation id="6420676428473580225">డెస్క్‌టాప్‌కి జోడించండి</translation>
 <translation id="6422329785618833949">ఫోటో తిప్పబడింది</translation>
 <translation id="642282551015776456">ఈ పేరును ఫైల్ యొక్క ఫోల్డర్ పేరుగా ఉపయోగించలేము.</translation>
-<translation id="642322423610046417">మీకు అవసరం లేని పొడిగింపులను తీసివేయడానికి సందర్భ (కుడి-క్లిక్) మెనుని ఉపయోగించండి.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Adobe Readerని మీ డిఫాల్ట్ PDF వ్యూవర్‌గా ఉపయోగించాలా?</translation>
 <translation id="6425092077175753609">విశిష్టం</translation>
@@ -3762,6 +3764,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">వినియోగదారులు నిష్క్రమించడానికి Escని నొక్కి ఉంచడం అవసరమయ్యే కీబోర్డ్ లాక్ మోడ్ గల ప్రయోగాత్మక పూర్తి స్క్రీన్.</translation>
 <translation id="6527303717912515753">భాగస్వామ్యం చేయి</translation>
 <translation id="6528546217685656218">ఈ క్లయింట్ ప్రమాణపత్రం ప్రైవేట్ కీ లేదు లేదా చెల్లదు.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" />ని సమకాలీకరిస్తోంది...</translation>
@@ -3941,6 +3944,7 @@
 <translation id="6825883775269213504">రష్యన్</translation>
 <translation id="6827236167376090743">ఈ వీడియో నిరంతరంగా ప్లే అవుతూనే ఉంటుంది.</translation>
 <translation id="6828153365543658583">క్రింది వినియోగదారులకు సైన్-ఇన్‌ని నిరోధించు:</translation>
+<translation id="6828860976882136098">వినియోగదారులందరి కోసం స్వయంచాలక నవీకరణలను సెటప్ చేయడం విఫలమైంది (ప్రీఫ్లయిట్ అమలు లోపం: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">మీ <ph name="DEVICE_TYPE" />తో సహాయం పొందండి.</translation>
 <translation id="6829270497922309893">మీ సంస్థలో నమోదు చేయండి</translation>
 <translation id="6830590476636787791">మొదటి-అమలు ట్యుటోరియల్‌లో యానిమేట్ చేసిన పరివర్తనాలు</translation>
@@ -3964,7 +3968,6 @@
 <translation id="6860427144121307915">ట్యాబ్‌లో తెరువు</translation>
 <translation id="6862635236584086457">ఈ ఫోల్డర్‌లో సేవ్ చేసిన అన్ని ఫైల్‌లు ఆన్‌లైన్‌లో స్వయంచాలకంగా బ్యాకప్ చేయబడతాయి</translation>
 <translation id="6865313869410766144">స్వీయపూర్తి ఫారమ్ డేటా</translation>
-<translation id="6865319096921627602">Androidలో ఏకీకృత మీడియా పైప్‌లైన్‌ను ప్రారంభిస్తుంది.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" />కు మారు</translation>
 <translation id="6869402422344886127">తనిఖీ చెయ్యబడిన చెక్ బాక్స్</translation>
 <translation id="6870130893560916279">ఉక్రైనియన్ కీబోర్డ్</translation>
@@ -4059,6 +4062,7 @@
 <translation id="7006017748900345484">WebRTC H.264 సాఫ్ట్‌వేర్ వీడియో ఎన్‌కోడర్/డీకోడర్</translation>
 <translation id="7006634003215061422">దిగువ అంచు</translation>
 <translation id="7006844981395428048">$1 ఆడియో</translation>
+<translation id="7008270479623533562">ఈ పొడిగింపుని అమలు చేయడానికి, మీరు పేజీని రిఫ్రెష్ చేయాలి. మీరు పొడిగింపు చిహ్నంపై కుడి క్లిక్ చేయడం ద్వారా ఈ సైట్‌లో ఈ పొడిగింపుని స్వయంచాలకంగా అమలు చేయవచ్చు.</translation>
 <translation id="7009045250432250765">ఒక క్లిక్‌తో స్వీయపూర్తి</translation>
 <translation id="7010160495478792664">అందుబాటులో ఉన్న హార్డ్‌వేర్-వేగవృద్ధి వీడియో డీకోడ్‌.</translation>
 <translation id="7010400591230614821">శక్తివంతమైన ట్యాబ్ విడుదల స్ట్రాటజీ</translation>
@@ -4223,7 +4227,6 @@
 <translation id="7256710573727326513">ట్యాబ్‌లో తెరువు</translation>
 <translation id="7257173066616499747">Wi-Fi నెట్‌వర్క్‌లు</translation>
 <translation id="7257666756905341374">మీరు కాపీ చేసి అతికించే డేటాను చదవడం</translation>
-<translation id="7260002739296185724">OS X &gt;= 10.7లో వీడియో క్యాప్చర్ మరియు వీడియో పరికర పర్యవేక్షణ కోసం AVఫౌండేషన్ వినియోగాన్ని ప్రారంభించండి. లేకపోతే QTKit ఉపయోగించబడుతుంది.</translation>
 <translation id="7260504762447901703">ప్రాప్యతను ఉపసంహరించు</translation>
 <translation id="7262004276116528033">ఈ సైన్-ఇన్ సేవ <ph name="SAML_DOMAIN" /> ద్వారా హోస్ట్ చేయబడుతోంది</translation>
 <translation id="7262221505565121">శాండ్‌బాక్స్ చేయని ప్లగిన్ ప్రాప్యత మినహాయింపులు</translation>
@@ -4242,7 +4245,7 @@
 <translation id="7280877790564589615">అనుమతి అభ్యర్థించబడింది</translation>
 <translation id="7282547042039404307">మృదువైనది</translation>
 <translation id="7287143125007575591">ప్రాప్యత నిరాకరించబడింది.</translation>
-<translation id="7288592446024861651">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వాటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు. <ph name="BEGIN_LINK" />లో దేన్ని సమకాలీకరించాలనే దాన్ని నియంత్రించండి</translation>
+<translation id="7288592446024861651">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లు మీ Google ఖాతాకు సమకాలీకరించబడతాయి, కాబట్టి మీరు వాటిని మీ అన్ని పరికరాల్లో ఉపయోగించవచ్చు. <ph name="BEGIN_LINK" />లో వేటిని సమకాలీకరించాలో నియంత్రించండి</translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">నమోదుని నిర్ధారించండి</translation>
 <translation id="7295019613773647480">పర్యవేక్షించబడే వినియోగదారులను ప్రారంభించు</translation>
@@ -4261,7 +4264,6 @@
 <translation id="7314278895724341067">NTP ఆఫ్‌లైన్ పేజీలను ప్రారంభించు</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (ప్రస్తుత)</translation>
 <translation id="7321545336522791733">సర్వర్ అందుబాటులో లేదు</translation>
-<translation id="7324841169865301118">డెస్క్‌టాప్ భాగస్వామ్యం కోసం ట్యాబ్‌ను ఎంచుకోవడానికి వినియోగదారుని అనుమతిస్తుంది.</translation>
 <translation id="7325437708553334317">అధిక కాంట్రాస్ట్ పొడిగింపు</translation>
 <translation id="7326565110843845436">టచ్‌ప్యాడ్‌పై మూడు వేళ్లతో క్లిక్ చేయడం</translation>
 <translation id="73289266812733869">ఎంచుకోబడలేదు</translation>
@@ -5008,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">వీరి ద్వారా ఫోటో</translation>
 <translation id="8428213095426709021">సెట్టింగ్‌లు</translation>
-<translation id="8432590265309978927">వేర్వేరు ప్రాసెస్‌ల్లో క్రాస్-సైట్ iframes అమలు చేయడం కోసం అత్యంత ప్రయోగాత్మక మద్దతు ఇస్తుంది.</translation>
 <translation id="8432745813735585631">US సొలెమక్ కీబోర్డ్</translation>
 <translation id="8434177709403049435">&amp;ఎన్‌కోడింగ్</translation>
 <translation id="8434480141477525001">NaCl డీబగ్ పోర్ట్</translation>
@@ -5205,7 +5206,6 @@
 <translation id="8713979477561846077">US కీబోర్డ్ కోసం భౌతిక కీబోర్డ్ స్వీయ సవరణను ప్రారంభించండి, దీని వలన భౌతిక కీబోర్డ్‌పై టైప్ చేస్తున్నప్పుడు సూచనలు అందించబడతాయి.</translation>
 <translation id="871476437400413057">Google సేవ్ చేసిన పాస్‌వర్డ్‌లు</translation>
 <translation id="8714838604780058252">నేపథ్య గ్రాఫిక్స్</translation>
-<translation id="8716065142695381595">Androidలో ఏకీకృత (Android మరియు డెస్క్‌టాప్) మీడియా పైప్‌లైన్‌ను ప్రారంభిస్తుంది.</translation>
 <translation id="8722421161699219904">US అంతర్జాతీయ కీబోర్డ్</translation>
 <translation id="872451400847464257">శోధన ఇంజిన్‌ను సవరించు</translation>
 <translation id="8724859055372736596">ఫోల్డర్‌లో &amp;చూపించు</translation>
@@ -5225,6 +5225,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" />కి బదులుగా <ph name="PROTOCOL" /> లింక్‌లను తెరవాలనుకుంటోంది</translation>
 <translation id="8737709691285775803">షిల్</translation>
 <translation id="8741881454555234096">మౌస్‌తో పోలిస్తే తక్కువ రిజల్యూషన్ ఉన్న స్పర్శలను భర్తీ చేయడానికి స్పర్శ సంజ్ఞ యొక్క స్థానాన్ని సరి చేస్తుంది.</translation>
+<translation id="8743712320294854924">అరలో విస్తరింపజేయబడిన ఇన్‌పుట్ ఎంపికలను చూపండి.</translation>
 <translation id="874420130893181774">సాంప్రదాయ పిన్యిన్ ఇన్‌పుట్ పద్ధతి</translation>
 <translation id="8744525654891896746">ఈ పర్యవేక్షించబడే వినియోగదారు కోసం అవతార్‌ను ఎంచుకోండి</translation>
 <translation id="8744641000906923997">రోమాజీ</translation>
@@ -5294,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift కీ మోడ్ మార్పు</translation>
 <translation id="8852742364582744935">క్రింది అనువర్తనాలు మరియు పొడిగింపులు జోడించబడ్డాయి:</translation>
+<translation id="8853611566624224021">డిస్‌ప్లే రంగు క్రమాంకనం కోసం క్విర్క్స్ సర్వర్ నుండి icc డిస్‌ప్లే ఫైల్‌లను తిరిగి పొందడాన్ని ప్రారంభిస్తుంది.</translation>
 <translation id="885381502874625531">బెలారుషియన్ కీబోర్డ్</translation>
 <translation id="8856844195561710094">Bluetooth పరికర శోధనను నిలిపివేయడం విఫలమైంది.</translation>
 <translation id="885701979325669005">నిల్వ</translation>
@@ -5343,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;సెట్టింగ్‌లు</translation>
 <translation id="8926389886865778422">మళ్ళి అడగవద్దు</translation>
 <translation id="8926518602592448999">డెవలపర్ మోడ్ పొడిగింపులను నిలిపివేయండి</translation>
-<translation id="8929454297483336498">QTKitకి బదులుగా Mac OS X AVఫౌండేషన్ APIలను ఉపయోగించండి</translation>
 <translation id="8931394284949551895">కొత్త పరికరాలు</translation>
 <translation id="8932730422557198035">Android Midi APIని ఉపయోగించండి</translation>
 <translation id="8933960630081805351">శోధినిలో &amp;చూపించు</translation>
@@ -5357,6 +5358,7 @@
 <translation id="894360074127026135">Netscape అంతర్జాతీయ స్టెప్‌-అప్</translation>
 <translation id="8944779739948852228">ప్రింటర్ గుర్తించబడింది</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="895347679606913382">ప్రారంభిస్తోంది...</translation>
 <translation id="8954952943849489823">తరలింపు విఫలమైంది, ఊహించని లోపం: $1</translation>
@@ -5500,6 +5502,7 @@
 <translation id="9154194610265714752">నవీకరించబడింది</translation>
 <translation id="9154418932169119429">ఈ చిత్రం ఆఫ్‌లైన్‌లో అందుబాటులో లేదు.</translation>
 <translation id="91568222606626347">సత్వరమార్గాన్ని సృష్టించు...</translation>
+<translation id="9157697743260533322">వినియోగదారులందరి కోసం స్వయంచాలక నవీకరణలను సెటప్ చేయడం విఫలమైంది (ప్రీఫ్లయిట్ ప్రారంభ లోపం: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">అయ్యో!  ప్రామాణీకరణ సమయంలో నెట్‌వర్క్ కమ్యూనికేషన్ సమస్య సంభవించింది.  దయచేసి మీ నెట్‌వర్క్ కనెక్షన్‌ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="9159562891634783594">ముద్రణ పరిదృశ్యం నుండి నమోదు కాని cloud ప్రింటర్‌లను నమోదు చేయడాన్ని ప్రారంభించండి.</translation>
 <translation id="9166510596677678112">ఈ వ్యక్తికి ఇమెయిల్ పంపండి</translation>
@@ -5511,7 +5514,6 @@
 <translation id="9170848237812810038">&amp;అన్డు</translation>
 <translation id="9170884462774788842">మీ కంప్యూటర్‌లోని మరో ప్రోగ్రామ్ జోడించిన థీమ్ కారణంగా Chrome పని చేసే విధానం మారవచ్చు.</translation>
 <translation id="9177499212658576372">మీరు ప్రస్తుతానికి <ph name="NETWORK_TYPE" /> నెట్‌వర్క్‌కు కనెక్ట్ చేయబడ్డారు.</translation>
-<translation id="9177556055091995297">క్రెడిట్ కార్డ్‌లను నిర్వహించండి</translation>
 <translation id="917858577839511832">WebRTC కోసం DTLS 1.2తో అనుసంధానం</translation>
 <translation id="917861274483335838">ప్లగిన్‌ను బ్లాక్ చేయడం నిర్వహించండి...</translation>
 <translation id="9179348476548754105">పాస్‌వర్డ్ నిర్వాహికి లావీదేవీ పునఃప్రమాణీకరణ పేజీల కోసం మాత్రమే సమకాలీకరణ ఆధార స్వీయపూర్తిని ఎలా నిర్వహిస్తుందనే దాన్ని పేర్కొంటుంది.</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index bc0bd73..b6da47c 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -159,7 +159,6 @@
     คุณจะต้องตั้งค่าโปรไฟล์ของคุณอีกครั้ง<ph name="BR" />
     <ph name="BR" />
     บนหน้าจอถัดไป โปรดส่งความคิดเห็นมาที่เราเพื่อช่วยแก้ไขปัญหานี้</translation>
-<translation id="1216954813581739968">เปิดใช้แท็บสำหรับการแชร์เดสก์ท็อป</translation>
 <translation id="121827551500866099">แสดงการดาวน์โหลดทั้งหมด...</translation>
 <translation id="122082903575839559">อัลกอริธึมลายเซ็นใบรับรอง </translation>
 <translation id="1221024147024329929">PKCS #1 MD2 พร้อมการเข้ารหัส RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL ที่มี %s ในตำแหน่งข้อความค้นหา</translation>
 <translation id="1546280085599573572">ส่วนขยายนี้ได้เปลี่ยนหน้าที่จะแสดงเมื่อคุณคลิกปุ่มหน้าแรก</translation>
 <translation id="1546795794523394272">ยินดีต้อนรับสู่ Chromebox วิดีโอคอนเฟอเรนซ์!</translation>
+<translation id="1547572086206517271">ต้องรีเฟรช</translation>
 <translation id="1547964879613821194">อังกฤษแบบแคนาดา</translation>
 <translation id="1548132948283577726">ไซต์ที่ไม่เคยบันทึกรหัสผ่านจะแสดงขึ้นที่นี่</translation>
 <translation id="1549045574060481141">ยืนยันการดาวน์โหลด</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">เปิดใช้การจัดเก็บหน้าที่เข้าชมล่าสุดในเครื่องเพื่อใช้งานแบบออฟไลน์ ต้องเปิดใช้หน้าออฟไลน์</translation>
 <translation id="1891668193654680795">เชื่อถือใบรับรองนี้ในการระบุตัวตนผู้ผลิตซอฟต์แวร์</translation>
 <translation id="189210018541388520">เปิดการแสดงแบบเต็มหน้าจอ</translation>
+<translation id="1892754076732315533">ประสบการณ์ของผู้ใช้ใหม่ที่ใช้งานได้ง่ายเมื่อเข้าสู่โหมดเต็มหน้าจอที่มีการทริกเกอร์หน้า หรือสถานะการล็อกตัวชี้ของเมาส์</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">ขั้นตอนการจัดสรรระบบคลาวด์ล้มเหลว</translation>
 <translation id="189358972401248634">ภาษาอื่นๆ</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">เข้าถึงอุปกรณ์ Universal 2nd Factor</translation>
 <translation id="2881966438216424900">เข้าถึงครั้งสุดท้ายเมื่อ:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> จะรีสตาร์ทและรีเซ็ตในอีกสักครู่</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">ตัวจัดการงาน</translation>
 <translation id="2887525882758501333">เอกสาร PDF</translation>
 <translation id="2888807692577297075">ไม่มีรายการที่ตรงกับ &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">ไม่ใช่ตอนนี้</translation>
 <translation id="3480892288821151001">จัดวางหน้าต่างไว้ทางซ้าย</translation>
 <translation id="3481915276125965083">หน้าเว็บนี้บล็อกป๊อปอัปต่อไปนี้:</translation>
+<translation id="3482214069979148937">กด |<ph name="ACCELERATOR" />| ค้างไว้เพื่อออกจากโหมดเต็มหน้าจอ</translation>
 <translation id="3484869148456018791">รับใบรับรองใหม่</translation>
 <translation id="3487007233252413104">ฟังก์ชันที่ไม่ระบุชื่อ</translation>
 <translation id="348771913750618459">ขั้นตอนการลงชื่อเข้าใช้แบบ iframe</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">ข้อจำกัดของชื่อใบรับรอง</translation>
 <translation id="3595596368722241419">แบตเตอรี่เต็ม</translation>
 <translation id="3600456501114769456">การเข้าถึงไฟล์ในตัวเครื่องอุปกรณ์ของคุณถูกปิดใช้งานโดยผู้ดูแลระบบ</translation>
-<translation id="3601395307734599350">ส่วนขยายทั้งหมดอยู่ที่นี่</translation>
 <translation id="3603385196401704894">ฝรั่งเศสแบบแคนาดา</translation>
 <translation id="3603622770190368340">รับใบรับรองเครือข่าย</translation>
 <translation id="3605780360466892872">บัตเทิ่นดาวน์</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">ใช้ค่าเริ่มต้นส่วนกลาง (ตรวจหา)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 แท็บ}other{# แท็บ}}</translation>
 <translation id="4154664944169082762">ลายนิ้วมือ</translation>
-<translation id="4157188838832721931">ปิดการแจ้งให้ผู้ใช้ป้อนรหัสผ่านระบบปฏิบัติการก่อนที่จะเปิดเผยรหัสผ่านในหน้ารหัสผ่าน</translation>
 <translation id="4157869833395312646">วิธีการเข้ารหัสแบบ Server Gated ของ Microsoft</translation>
 <translation id="4158739975813877944">เปิดเพลย์ลิสต์</translation>
 <translation id="4159681666905192102">นี่เป็นบัญชีสำหรับเด็กที่จัดการโดย <ph name="CUSTODIAN_EMAIL" /> และ <ph name="SECOND_CUSTODIAN_EMAIL" /></translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">ลงชื่อเข้าใช้บัญชีอื่น</translation>
 <translation id="4219614746733932747">หากเปิดใช้ไว้ Blink จะใช้กลไกในการซูมเพื่อปรับขนาดเนื้อหาสำหรับปัจจัยที่มีผลต่อขนาดของอุปกรณ์</translation>
 <translation id="4220865787605972627">อนุญาตการปรับเทียบสีของจอแสดงผล หากจอสนับสนุนคุณลักษณะนี้</translation>
-<translation id="4233506668751282421">เปิดใช้เสียงสำหรับการแชร์เดสก์ท็อป</translation>
 <translation id="4235200303672858594">ทั้งหน้าจอ</translation>
 <translation id="4235813040357936597">เพิ่มบัญชีสำหรับ <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">ไม่สามารถแสดง <ph name="PRODUCT_NAME" /> ในภาษานี้ได้</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">ไม่สามารถติดตั้งการตั้งค่านโยบายบนอุปกรณ์: <ph name="VALIDATION_ERROR" /></translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> ต้องการปิดใช้งานเคอร์เซอร์เมาส์</translation>
 <translation id="424546999567421758">พบการใช้ดิสก์สูง</translation>
-<translation id="4247072926966606568">เมื่อเปิดการตั้งค่าสถานะนี้ เครื่องมือเลือกการแชร์เดสก์ท็อปจะช่วยให้ผู้ใช้สามารถเลือกว่าต้องการแชร์เสียงไหม</translation>
 <translation id="424726838611654458">เปิดใน Adobe Reader ทุกครั้ง</translation>
 <translation id="4249248555939881673">กำลังรอการเชื่อมต่อเครือข่าย...</translation>
 <translation id="4249373718504745892">หน้าเว็บนี้ถูกบล็อกไม่ให้เข้าถึงกล้องถ่ายรูปและไมโครโฟนของคุณ</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">เพิ่มที่อยู่</translation>
 <translation id="4359408040881008151">ติดตั้งแล้วเนื่องจากมีส่วนขยายที่ต้องพึ่งพา</translation>
 <translation id="4361190688154226069">การกำหนดเป้าหมายแบบรูปสี่เหลี่ยมผืนผ้าในมุมมองต่างๆ</translation>
-<translation id="4363372140743955595">การตรวจสอบสิทธิ์ตัวจัดการรหัสผ่านอีกครั้ง</translation>
 <translation id="4364444725319685468">ดาวน์โหลด <ph name="FILE_NAME" /> แล้ว</translation>
 <translation id="4364830672918311045">แสดงการแจ้งเตือน</translation>
 <translation id="4365673000813822030">อ๊ะ การซิงค์หยุดทำงาน</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">เกี่ยวกับการป้อนอัตโนมัติ</translation>
 <translation id="4449996769074858870">แท็บนี้กำลังเล่นเสียง</translation>
 <translation id="4450974146388585462">วินิจฉัย</translation>
+<translation id="4452426408005428395">ไม่เป็นไร</translation>
 <translation id="4454939697743986778">ใบรับรองนี้ได้รับการติดตั้งโดยผู้ดูแลระบบของคุณ</translation>
 <translation id="445923051607553918">เข้าร่วมเครือข่าย Wi-Fi</translation>
 <translation id="4462159676511157176">เซิร์ฟเวอร์ชื่อที่กำหนดเอง</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">การเปิดใช้งานครั้งเดียว: พิมพ์รหัสผ่านเพื่อเปิดใช้งาน Smart Lock บน <ph name="DEVICE_TYPE" /> นี้ เมื่อใช้ Smart Lock โทรศัพท์ของคุณจะปลดล็อกอุปกรณ์นี้โดยไม่ต้องใช้รหัสผ่าน หากต้องการเปลี่ยนแปลงหรือปิดคุณลักษณะนี้ ให้ไปที่การตั้งค่าของ <ph name="DEVICE_TYPE" /></translation>
 <translation id="4595560905247879544">แอปและส่วนขยายสามารถแก้ไขได้โดยผู้จัดการ (<ph name="CUSTODIAN_NAME" />) เท่านั้น</translation>
 <translation id="4601242977939794209">ตัวแปลง EMF</translation>
-<translation id="4601250583401186741">จับคู่กับอุปกรณ์ควบคุม</translation>
 <translation id="4602466770786743961">อนุญาตให้ <ph name="HOST" /> เข้าถึงกล้องและไมโครโฟนของคุณเสมอ</translation>
 <translation id="4605399136610325267">ไม่ได้เชื่อมต่ออินเทอร์เน็ต</translation>
 <translation id="4608500690299898628">&amp;ค้นหา...</translation>
@@ -2782,6 +2780,7 @@
 <translation id="5039804452771397117">อนุญาต</translation>
 <translation id="5045550434625856497">รหัสผ่านไม่ถูกต้อง</translation>
 <translation id="5048179823246820836">นอร์ดิก</translation>
+<translation id="5048294425697652159">เปิดใช้ไคลเอ็นต์ Quirks สำหรับการปรับเทียบจอแสดงผล</translation>
 <translation id="5053604404986157245">รหัสผ่าน TPM ที่สร้างแบบสุ่มไม่พร้อมใช้งาน เหตุการณ์นี้เป็นเรื่องปกติหลังจากการ Powerwash</translation>
 <translation id="5053803681436838483">ที่อยู่ใหม่สำหรับการจัดส่ง...</translation>
 <translation id="5055309315264875868">แสดงลิงก์ในหน้าการตั้งค่าตัวจัดการรหัสผ่านเพื่อจัดการรหัสผ่านที่ซิงค์ทางออนไลน์</translation>
@@ -2879,7 +2878,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">ข้อกำหนดท่าทางสัมผัสสำหรับการเล่นสื่อ</translation>
 <translation id="5189060859917252173">ใบรับรอง "<ph name="CERTIFICATE_NAME" />" แสดงถึงผู้ออกใบรับรอง</translation>
-<translation id="5196117515621749903">โหลดแคชที่ละเว้นซ้ำอีกครั้ง</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">อินเทอร์เน็ต</translation>
 <translation id="5197680270886368025">การซิงค์เสร็จสมบูรณ์</translation>
@@ -2894,6 +2892,7 @@
 <translation id="521582610500777512">รูปภาพถูกยกเลิกแล้ว</translation>
 <translation id="5218183485292899140">ฝรั่งเศสแบบสวิส</translation>
 <translation id="5218766986344577658">ป๊อปอัปช่วยลดความกำกวมของลิงก์</translation>
+<translation id="5220992698394817380">เปิดการเลือกใช้เมนู IME</translation>
 <translation id="5222676887888702881">ออกจากระบบ</translation>
 <translation id="5225324770654022472">แสดงทางลัดแอป</translation>
 <translation id="5227536357203429560">เพิ่มเครือข่ายส่วนบุคคล...</translation>
@@ -2936,6 +2935,7 @@
 <translation id="5271247532544265821">สลับระหว่างโหมดภาษาจีนตัวย่อ/ตัวเต็ม</translation>
 <translation id="5271549068863921519">บันทึกรหัสผ่าน</translation>
 <translation id="5273628206174272911">การนำทางของประวัติแบบทดลองเพื่อเป็นการตอบสนองการเลื่อนในแนวนอน</translation>
+<translation id="5275194674756975076">ตกลง รีเฟรชเลย</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> รายการจากเว็บไซต์นี้</translation>
 <translation id="5275973617553375938">ไฟล์ที่กู้คืนจาก Google ไดรฟ์</translation>
 <translation id="527605719918376753">ปิดเสียงแท็บ</translation>
@@ -3009,6 +3009,7 @@
 <translation id="5368720394188453070">โทรศัพท์ล็อกอยู่ โปรดปลดล็อกเพื่อเข้าใช้งาน</translation>
 <translation id="5369927996833026114">พบกับเครื่องเรียกใช้งานแอป Chrome</translation>
 <translation id="5370819323174483825">&amp;โหลดซ้ำ</translation>
+<translation id="5372066618989754822">เปิดใช้การเข้าถึงเมนู IME ใหม่ในหน้าการตั้งค่าภาษา</translation>
 <translation id="5372529912055771682">รุ่นของระบบปฏิบัติการนี้ไม่สนับสนุนโหมดการลงทะเบียนที่กำหนด โปรดตรวจสอบให้แน่ใจว่าคุณกำลังใช้งานรุ่นใหม่ล่าสุดและลองอีกครั้ง</translation>
 <translation id="5374359983950678924">เปลี่ยนรูปภาพ</translation>
 <translation id="5376169624176189338">คลิกเพื่อย้อนกลับ กดค้างเพื่อดูประวัติการเข้าชม</translation>
@@ -3194,6 +3195,7 @@
 <translation id="5626134646977739690">ชื่อ:</translation>
 <translation id="5627086634964711283">อีกทั้งยังควบคุมหน้าที่จะแสดงเมื่อคุณคลิกปุ่ม "หน้าแรก"</translation>
 <translation id="5627259319513858869">เปิดใช้งานการใช้คุณลักษณะ canvas แบบทดลองซึ่งยังอยู่ในช่วงพัฒนา</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">ดีไซน์ Material ของ Chrome ที่ด้านบนของเบราว์เซอร์</translation>
 <translation id="5633060877636360447">การดำเนินการนี้จะลบอย่างน้อย <ph name="TOTAL_COUNT" /> รายการจากอุปกรณ์นี้อย่างถาวร แต่จะไม่ล้างรายการที่ซิงค์ออกจากอุปกรณ์อื่น</translation>
 <translation id="5636996382092289526">หากต้องการใช้ <ph name="NETWORK_ID" /> ก่อนอื่น คุณอาจจำเป็นต้อง<ph name="LINK_START" />ไปที่หน้าลงชื่อเข้าใช้ของเครือข่าย<ph name="LINK_END" /> ซึ่งจะเปิดขึ้นโดยอัตโนมัติในอีกไม่กี่วินาที ถ้าหน้าดังกล่าวไม่เปิดขึ้น แสดงว่าไม่สามารถใช้เครือข่ายดังกล่าวได้</translation>
@@ -3224,6 +3226,7 @@
 <translation id="5678862612529498267">ไฮไลต์วัตถุที่มีโฟกัสแป้นพิมพ์</translation>
 <translation id="5678955352098267522">อ่านข้อมูลใน <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">การกรองข้อความในโหมดภาพรวม</translation>
+<translation id="5683818630978268777">UI การล็อกแป้นพิมพ์รุ่นทดลอง</translation>
 <translation id="5684661240348539843">รหัสสินทรัพย์</translation>
 <translation id="569068482611873351">นำเข้า...</translation>
 <translation id="56907980372820799">ลิงก์ข้อมูล</translation>
@@ -3689,7 +3692,6 @@
 <translation id="6420676428473580225">เพิ่มลงในเดสก์ท็อป</translation>
 <translation id="6422329785618833949">พลิกรูปภาพแล้ว</translation>
 <translation id="642282551015776456">ชื่อนี้ไม่สามารถใช้เป็นชื่อไฟล์ของโฟลเดอร์</translation>
-<translation id="642322423610046417">ใช้เมนูตามบริบท (คลิกขวา) เพื่อนำส่วนขยายที่คุณไม่ต้องการออก</translation>
 <translation id="6423239382391657905">เปิด VPN</translation>
 <translation id="6423731501149634044">ใช้ Adobe Reader เป็นค่าเริ่มต้นสำหรับการดูไฟล์ PDF หรือไม่</translation>
 <translation id="6425092077175753609">วัสดุ</translation>
@@ -3760,6 +3762,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">โหมดเต็มหน้าจอที่มีการล็อกแป้นพิมพ์ในรุ่นทดลองกำหนดให้ผู้ใช้กด Esc ค้างไว้เพื่อออกจากโหมดนี้</translation>
 <translation id="6527303717912515753">แชร์</translation>
 <translation id="6528546217685656218">คีย์ส่วนตัวของใบรับรองไคลเอ็นต์นี้หายไปหรือไม่ถูกต้อง</translation>
 <translation id="653019979737152879">กำลังซิงค์ <ph name="FILE_NAME" />...</translation>
@@ -3939,6 +3942,7 @@
 <translation id="6825883775269213504">รัสเซีย</translation>
 <translation id="6827236167376090743">วิดีโอนี้จะเล่นวนรอบ</translation>
 <translation id="6828153365543658583">จำกัดการลงชื่อเข้าใช้ของผู้ใช้ต่อไปนี้:</translation>
+<translation id="6828860976882136098">ไม่สามารถตั้งค่าการอัปเดตอัตโนมัติสำหรับผู้ใช้ทุกคน (ข้อผิดพลาดในการดำเนินการตรวจสอบล่วงหน้า: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">iy[ความช่วยเหลือเกี่ยวกับ <ph name="DEVICE_TYPE" /></translation>
 <translation id="6829270497922309893">ลงทะเบียนในองค์กรของคุณ</translation>
 <translation id="6830590476636787791">การเปลี่ยนแบบเคลื่อนไหวในบทแนะนำที่เรียกใช้ครั้งแรก</translation>
@@ -3961,7 +3965,6 @@
 <translation id="6860427144121307915">เปิดในแท็บ</translation>
 <translation id="6862635236584086457">ไฟล์ทั้งหมดที่บันทึกไว้ในโฟลเดอร์นี้จะถูกสำรองข้อมูลแบบออนไลน์โดยอัตโนมัติ</translation>
 <translation id="6865313869410766144">ข้อมูลฟอร์มที่ป้อนอัตโนมัติ</translation>
-<translation id="6865319096921627602">เปิดใช้ช่องทางสื่อแบบรวมบน Android</translation>
 <translation id="6867678160199975333">สลับเป็น <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">ช่องทำเครื่องหมายที่เลือก</translation>
 <translation id="6870130893560916279">แป้นพิมพ์ภาษายูเครน</translation>
@@ -4056,6 +4059,7 @@
 <translation id="7006017748900345484">WebRTC โปรแกรมเปลี่ยนไฟล์/โปรแกรมถอดรหัสวิดีโอของซอฟต์แวร์ H.264</translation>
 <translation id="7006634003215061422">ขอบล่าง</translation>
 <translation id="7006844981395428048">เสียง $1</translation>
+<translation id="7008270479623533562">คุณต้องรีเฟรชหน้าดังกล่าวเพื่อให้ส่วนขยายนี้ทำงาน คุณสามารถเรียกใช้ส่วนขยายนี้โดยอัตโนมัติบนเว็บไซต์นี้โดยการคลิกขวาที่ไอคอนของส่วนขยาย</translation>
 <translation id="7009045250432250765">การป้อนข้อความอัตโนมัติด้วยการคลิกครั้งเดียว</translation>
 <translation id="7010160495478792664">การถอดรหัสวิดีโอที่เร่งการแสดงผลด้วยฮาร์ดแวร์ในกรณีที่มีให้บริการ</translation>
 <translation id="7010400591230614821">กลยุทธ์การล้างแท็บเชิงรุก</translation>
@@ -4220,7 +4224,6 @@
 <translation id="7256710573727326513">เปิดในแท็บ</translation>
 <translation id="7257173066616499747">เครือข่าย Wi-Fi</translation>
 <translation id="7257666756905341374">อ่านข้อมูลที่คุณคัดลอกและวาง</translation>
-<translation id="7260002739296185724">เปิดการใช้ AVFoundation สำหรับการจับภาพวิดีโอและการตรวจสอบอุปกรณ์วิดีโอใน OS X เวอร์ชัน 10.7 หรือสูงกว่า หรือใช้ QTKit แทน</translation>
 <translation id="7260504762447901703">เพิกถอนสิทธิ์การเข้าถึง</translation>
 <translation id="7262004276116528033">บริการลงชื่อเข้าใช้นี้โฮสต์โดย <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">ข้อยกเว้นการเข้าถึงปลั๊กอินที่ไม่ได้อยู่ในแซนด์บ็อกซ์</translation>
@@ -4239,7 +4242,7 @@
 <translation id="7280877790564589615">ขอสิทธิ์แล้ว</translation>
 <translation id="7282547042039404307">ราบรื่น</translation>
 <translation id="7287143125007575591">ปฏิเสธการเข้าถึง</translation>
-<translation id="7288592446024861651">บุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ จะซิงค์กับบัญชี Google เพื่อให้คุณสามารถใช้ข้อมูลเหล่านี้ได้กับอุปกรณ์ทุกเครื่อง ควบคุมข้อมูลที่จะซิงค์ได้ใน <ph name="BEGIN_LINK" /></translation>
+<translation id="7288592446024861651">บุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ จะซิงค์กับบัญชี Google เพื่อให้คุณสามารถใช้ข้อมูลเหล่านี้ได้กับอุปกรณ์ทุกเครื่อง คุณสามารถควบคุมข้อมูลที่จะซิงค์ได้ใน <ph name="BEGIN_LINK" /></translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">ยืนยันการลงทะเบียน</translation>
 <translation id="7295019613773647480">เปิดใช้งานผู้ใช้ภายใต้การดูแล</translation>
@@ -4258,7 +4261,6 @@
 <translation id="7314278895724341067">เปิดใช้หน้าออฟไลน์ของ NTP</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (ปัจจุบัน)</translation>
 <translation id="7321545336522791733">ไม่สามารถเข้าถึงเซิร์ฟเวอร์</translation>
-<translation id="7324841169865301118">อนุญาตให้ผู้ใช้เลือกแท็บสำหรับการแชร์เดสก์ท็อป</translation>
 <translation id="7325437708553334317">ส่วนขยายภาพความคมชัดสูง</translation>
 <translation id="7326565110843845436">การคลิกด้วยนิ้ว 3 นิ้วบนทัชแพด</translation>
 <translation id="73289266812733869">ยกเลิกการเลือกแล้ว</translation>
@@ -5008,7 +5010,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">รูปภาพโดย</translation>
 <translation id="8428213095426709021">การตั้งค่า</translation>
-<translation id="8432590265309978927">การสนับสนุนเชิงทดสอบขั้นสูงสำหรับการแสดงผล iframe ข้ามไซต์ในขั้นตอนที่แยกต่างหาก</translation>
 <translation id="8432745813735585631">แป้นพิมพ์ Colemak สหรัฐอเมริกา</translation>
 <translation id="8434177709403049435">&amp;การเข้ารหัส</translation>
 <translation id="8434480141477525001">พอร์ตแก้ปัญหา NaCl</translation>
@@ -5205,7 +5206,6 @@
 <translation id="8713979477561846077">เปิดใช้การแก้ไขอัตโนมัติบนแป้นพิมพ์จริงสำหรับแป้นพิมพ์สหรัฐฯ ซึ่งสามารถให้คำแนะนำเมื่อพิมพ์บนแป้นพิมพ์จริงได้</translation>
 <translation id="871476437400413057">รหัสผ่านที่ Google บันทึกไว้</translation>
 <translation id="8714838604780058252">กราฟิกพื้นหลัง</translation>
-<translation id="8716065142695381595">เปิดใช้ช่องทางสื่อแบบรวม (Android และเดสก์ท็อป) บน Android</translation>
 <translation id="8722421161699219904">แป้นพิมพ์สากลสหรัฐอเมริกา</translation>
 <translation id="872451400847464257">แก้ไขเครื่องมือค้นหา</translation>
 <translation id="8724859055372736596">&amp;แสดงในโฟลเดอร์</translation>
@@ -5225,6 +5225,7 @@
 <translation id="8737685506611670901">เปิดลิงก์ <ph name="PROTOCOL" /> แทน <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">ปรับแต่งตำแหน่งของท่าทางสัมผัสด้วยการแตะเพื่อชดเชยการแตะที่มีความละเอียดต่ำเมื่อเทียบกับการใช้เมาส์</translation>
+<translation id="8743712320294854924">แสดงตัวเลือกการป้อนข้อมูลแบบขยายในชั้นวาง</translation>
 <translation id="874420130893181774">วิธีการป้อนข้อมูลแบบพินอินดั้งเดิม</translation>
 <translation id="8744525654891896746">เลือกอวาตาร์สำหรับผู้ใช้ภายใต้การดูแลนี้</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5294,6 +5295,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">สลับไปใช้โหมดแป้น Shift</translation>
 <translation id="8852742364582744935">เพิ่มแอปพลิเคชันและส่วนขยายต่อไปนี้แล้ว:</translation>
+<translation id="8853611566624224021">เปิดใช้การดึงข้อมูลของไฟล์จอแสดงผล icc จากเซิร์ฟเวอร์ Quirks สำหรับการปรับเทียบสีจอแสดงผล</translation>
 <translation id="885381502874625531">แป้นพิมพ์เบลารุส</translation>
 <translation id="8856844195561710094">ไม่สามารถหยุดการค้นหาอุปกรณ์บลูทูธ</translation>
 <translation id="885701979325669005">พื้นที่เก็บข้อมูล</translation>
@@ -5343,7 +5345,6 @@
 <translation id="8925458182817574960">&amp;การตั้งค่า</translation>
 <translation id="8926389886865778422">ไม่ต้องถามอีก</translation>
 <translation id="8926518602592448999">ปิดส่วนขยายโหมดนักพัฒนาซอฟต์แวร์</translation>
-<translation id="8929454297483336498">ใช้ API ของ Mac OS X AVFoundation แทน QTKit</translation>
 <translation id="8931394284949551895">อุปกรณ์ใหม่</translation>
 <translation id="8932730422557198035">ใช้ Android Midi API</translation>
 <translation id="8933960630081805351">&amp;แสดงใน Finder</translation>
@@ -5357,6 +5358,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">ตรวจพบเครื่องพิมพ์</translation>
 <translation id="8946359700442089734">ไม่ได้เปิดใช้คุณลักษณะการแก้ไขข้อบกพร่องอย่างสมบูรณ์บนอุปกรณ์ <ph name="IDS_SHORT_PRODUCT_NAME" /> นี้</translation>
+<translation id="8946784827990177241">เปิดใช้การสนับสนุน WebUSB</translation>
 <translation id="89515141420106838">เปิดใช้แอปแกลเลอรี Chrome เว็บสโตร์สำหรับไดรเวอร์เครื่องพิมพ์ แอปนี้จะค้นหาส่วนขยายใน Chrome เว็บสโตร์ ซึ่งสนับสนุนการพิมพ์ไปยังเครื่องพิมพ์ USB ที่มีรหัส USB ที่เฉพาะเจาะจง</translation>
 <translation id="895347679606913382">กำลังเริ่มต้น...</translation>
 <translation id="8954952943849489823">การย้่ายล้มเหลว ข้อผิดพลาดที่ไม่คาดคิด: $1</translation>
@@ -5500,6 +5502,7 @@
 <translation id="9154194610265714752">อัปเดตแล้ว</translation>
 <translation id="9154418932169119429">ภาพนี้ไม่สามารถใช้งานแบบออฟไลน์ได้</translation>
 <translation id="91568222606626347">สร้างทางลัด...</translation>
+<translation id="9157697743260533322">ไม่สามารถตั้งค่าการอัปเดตอัตโนมัติสำหรับผู้ใช้ทุกคน (ข้อผิดพลาดในการเปิดใช้การตรวจสอบล่วงหน้า: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">อ๊ะ! เกิดปัญหาในการสื่อสารกับเครือข่ายในระหว่างการตรวจสอบสิทธิ์ โปรดตรวจสอบการเชื่อมต่อเครือข่ายของคุณและลองอีกครั้ง</translation>
 <translation id="9159562891634783594">เปิดใช้การลงทะเบียนเครื่องพิมพ์แบบคลาวด์ที่ไม่ได้ลงทะเบียนจากหน้าตัวอย่างก่อนพิมพ์</translation>
 <translation id="9166510596677678112">ส่งอีเมลถึงบุคคลนี้</translation>
@@ -5511,7 +5514,6 @@
 <translation id="9170848237812810038">เ&amp;ลิกทำ</translation>
 <translation id="9170884462774788842">โปรแกรมอื่นในคอมพิวเตอร์ของคุณเพิ่มธีมที่อาจเปลี่ยนวิธีการทำงานของ Chrome</translation>
 <translation id="9177499212658576372">ขณะนี้คุณเชื่อมต่อกับเครือข่าย <ph name="NETWORK_TYPE" /></translation>
-<translation id="9177556055091995297">จัดการบัตรเครดิต</translation>
 <translation id="917858577839511832">การจัดการกับ DTLS 1.2 สำหรับ WebRTC</translation>
 <translation id="917861274483335838">จัดการการบล็อกปลั๊กอิน...</translation>
 <translation id="9179348476548754105">วิธีที่ตัวจัดการรหัสผ่านจัดการการป้อนข้อมูลรับรองการซิงค์โดยอัตโนมัติเฉพาะสำหรับหน้า reauth ที่มีการดำเนินการ</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index e4e6082..fe92e12 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -24,6 +24,7 @@
 <translation id="1035590878859356651">Bu sayfaya yer işareti koy...</translation>
 <translation id="1036348656032585052">Kapat</translation>
 <translation id="1036511912703768636">Bu USB cihazların herhangi birine erişme</translation>
+<translation id="1036982837258183574">Tam ekrandan çıkmak için |<ph name="ACCELERATOR" />| tuşuna basın</translation>
 <translation id="1038168778161626396">Yalnızca Şifrele</translation>
 <translation id="1042174272890264476">Bilgisayarınızda aynı zamanda yerleşik <ph name="SHORT_PRODUCT_NAME" /> RLZ kitaplığı da bulunur. RLZ, aramaları ve belirli bir promosyon kampanyasının sağladığı <ph name="SHORT_PRODUCT_NAME" /> kullanımını ölçmek için benzersiz olmayan ve kimlik bilgileri içermeyen bir etiket atar. Bu etiketler bazen <ph name="PRODUCT_NAME" /> içindeki Google Arama sorgularında görünür.</translation>
 <translation id="1042574203789536285"><ph name="URL" /> büyük miktarda veriyi cihazınızda kalıcı olarak depolamak istiyor.</translation>
@@ -158,7 +159,6 @@
     Profilinizi tekrar ayarlamanız gerekecek.<ph name="BR" />
     <ph name="BR" />
     Sorunu düzeltmemize yardımcı olmak için lütfen bir sonraki ekranda geri bildirim gönderin.</translation>
-<translation id="1216954813581739968">Masaüstü Paylaşımı İçin sekmesini etkinleştir.</translation>
 <translation id="121827551500866099">Tüm indirilenleri göster...</translation>
 <translation id="122082903575839559">Sertifika İmza Algoritması</translation>
 <translation id="1221024147024329929">PKCS #1 RSA Şifrelemeli MD2</translation>
@@ -374,6 +374,7 @@
 <translation id="1523350272063152305">Chromebox Video Konferans cihazı kuruluma hazır.</translation>
 <translation id="1524152555482653726">Film</translation>
 <translation id="1525475911290901759">Bu, Uygulama Başlatıcı'da yeni bir arama sonucu seçme ve sıralama algoritmasını etkinleştirir.</translation>
+<translation id="1525835343380843286">Sunucu iletişim hatası</translation>
 <translation id="1526560967942511387">Adsız Doküman</translation>
 <translation id="1526925867532626635">Senkronizasyon ayarlarını onayla</translation>
 <translation id="1528372117901087631">İnternet bağlantısı</translation>
@@ -388,6 +389,7 @@
 <translation id="1545786162090505744">Sorgu yerine %s olan URL</translation>
 <translation id="1546280085599573572">Bu uzantı, Ana Sayfa düğmesini tıkladığınızda gösterilecek sayfayı değiştirdi.</translation>
 <translation id="1546795794523394272">Chromebox video konferans'a hoş geldiniz!</translation>
+<translation id="1547572086206517271">Yenileme gerekiyor</translation>
 <translation id="1547964879613821194">Kanada İngilizcesi</translation>
 <translation id="1548132948283577726">Şifreleri hiçbir zaman kaydedilmeyecek siteler burada görünür.</translation>
 <translation id="1549045574060481141">İndirme işlemini onayla</translation>
@@ -532,6 +534,7 @@
 <translation id="1744108098763830590">arka plan sayfası</translation>
 <translation id="1747687775439512873">WiMAX'i devre dışı bırak</translation>
 <translation id="174773101815569257">Farenin Kilitlenmesi</translation>
+<translation id="174937106936716857">Toplam dosya sayısı</translation>
 <translation id="1749854530031883739">TouchView'da (tam ekran modu), ekranı kaplar duruma getirilemeyen pencerelerin arkasında kalan alanda gri pencere arka planları gösterir.</translation>
 <translation id="17513872634828108">Açık sekmeler</translation>
 <translation id="175196451752279553">&amp;Kapatılan sekmeyi yeniden aç</translation>
@@ -615,8 +618,11 @@
 <translation id="1891196807951270080">Son ziyaret edilen sayfaların çevrimdışı kullanım için yerel olarak depolanmasını etkinleştirin. Çevrimdışı Sayfalar'ın etkinleştirilmesini gerektirir.</translation>
 <translation id="1891668193654680795">Yazılım üreticilerini tanımlamak için bu sertifikaya güvenin.</translation>
 <translation id="189210018541388520">Tam ekranı aç</translation>
+<translation id="1892754076732315533">Sayfa tetiklemeli tam ekran veya fare işaretçi kilidi durumlarına geçildiğinde basitleştirilmiş yeni bir kullanıcı deneyimi.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
+<translation id="1893406696975231168">Bulut temel hazırlığı akışı başarısız oldu</translation>
 <translation id="189358972401248634">Diğer diller</translation>
+<translation id="1894288435579641697">İmleci vurgula (metin düzenlerken)</translation>
 <translation id="1895658205118569222">Kapat</translation>
 <translation id="1895934970388272448">Bu işlemi tamamlamak için yazıcınızda kaydı onaylamalısınız; şimdi kontrol edin.</translation>
 <translation id="1897762215429052132">Ağ bağlantısı, dil, klavye düzenini ayarlayın...</translation>
@@ -646,6 +652,7 @@
 <translation id="1936157145127842922">Klasörde Göster</translation>
 <translation id="1936717151811561466">Fince</translation>
 <translation id="1937256809970138538">Ekranınız ve kilidi açıkken "Ok Google" deyin</translation>
+<translation id="1942765061641586207">Resim çözünürlüğü</translation>
 <translation id="1944921356641260203">Güncelleme bulundu</translation>
 <translation id="1947424002851288782">Almanca klavye</translation>
 <translation id="1950295184970569138">* Google Profil fotoğrafı (yükleniyor)</translation>
@@ -815,6 +822,7 @@
 <translation id="2218515861914035131">Düz metin olarak yapıştır</translation>
 <translation id="2218947405056773815">Hay aksi! <ph name="API_NAME" /> hata verdi.</translation>
 <translation id="2220529011494928058">Sorun bildir</translation>
+<translation id="2220794966865262911">Hizmet kullanılamıyor</translation>
 <translation id="2222641695352322289">Bunu geri almanın tek yolu <ph name="IDS_SHORT_PRODUCT_OS_NAME" /> sistemini yeniden yüklemektir.</translation>
 <translation id="2224444042887712269">Bu ayar <ph name="OWNER_EMAIL" /> kullanıcısına aittir.</translation>
 <translation id="2224551243087462610">Klasör adını düzenle</translation>
@@ -965,6 +973,7 @@
 <translation id="2422426094670600218">&lt;adsız&gt;</translation>
 <translation id="2423578206845792524">Res&amp;mi farklı kaydet...</translation>
 <translation id="2424091190911472304"><ph name="ORIGIN" /> sitesinde her zaman çalıştır</translation>
+<translation id="2425665904502185219">Toplam dosya boyutu</translation>
 <translation id="2431394478374894294">Sanal klavyede ses girişini etkinleştirir.</translation>
 <translation id="2433452467737464329">Sayfayı otomatik olarak yenilemek için URL'ye bir sorgu parametresi ekleyin: chrome://network/?refresh=&lt;sec&gt;</translation>
 <translation id="2433507940547922241">Görünüm</translation>
@@ -1063,6 +1072,7 @@
 <translation id="2554553592469060349">Seçili dosya çok büyük (maks. boyut: 3 MB).</translation>
 <translation id="255632937203580977">Cihaz Bulma Bildirimleri</translation>
 <translation id="2557899542277210112">Hızlı erişim için yer işaretlerinizi buraya, yer işareti çubuğuna yerleştirin.</translation>
+<translation id="2558578666171469771">Google Play Store artık <ph name="DEVICE_TYPE" /> cihazınızda</translation>
 <translation id="255937426064304553">ABD uluslararası</translation>
 <translation id="2560633531288539217">Konuşma ve Ses Etkinliğini Yönet</translation>
 <translation id="2562685439590298522">Google Dokümanlar</translation>
@@ -1157,6 +1167,7 @@
 <translation id="2686759344028411998">Yüklü bir modül bulunamadı.</translation>
 <translation id="2688196195245426394">Cihaz sunucuya kaydedilirken hata oluştu: <ph name="CLIENT_ERROR" />.</translation>
 <translation id="2694026874607847549">1 çerez</translation>
+<translation id="2696862700756109583">Tam ekran istisnaları</translation>
 <translation id="2702540957532124911">Klavye:</translation>
 <translation id="2704184184447774363">Microsoft Belge İmzalama</translation>
 <translation id="2706892089432507937">USB Cihazları</translation>
@@ -1313,6 +1324,7 @@
 <translation id="288042212351694283">Evrensel 2. Faktör cihazlarınıza erişim</translation>
 <translation id="2881966438216424900">Son erişim zamanı:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> geçici olarak yeniden başlatılacak ve sıfırlanacaktır.</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Görev Yöneticisi</translation>
 <translation id="2887525882758501333">PDF dokümanı</translation>
 <translation id="2888807692577297075">&lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt; ile eşleşen öğe yok</translation>
@@ -1411,6 +1423,7 @@
 <translation id="302014277942214887">Uygulama kimliğini veya Web mağazası URL'sini girin.</translation>
 <translation id="3020616530769498629">Yenilemek için çekme yapıldığında, doğrulama yapılmayan yeniden yükleme işlevini etkinleştir</translation>
 <translation id="3020990233660977256">Seri Numarası: <ph name="SERIAL_NUMBER" /></translation>
+<translation id="3021245547458004908">Etkinleştirildiğinde, ekranın yoğunluktan bağımsız piksel (dp) boyutu en az 800 veya daha yüksek olan cihazlarda araç çubuğu hiçbir zaman kaydırma nedeniyle gizlenmez. Sayfa içeriği tam ekrana geçerse araç çubuğu gizlenmeye devam eder.</translation>
 <translation id="3021678814754966447">Çerçeve Kaynağını &amp;Görüntüle</translation>
 <translation id="3024374909719388945">24 saatlik biçimi kullan</translation>
 <translation id="3025022340603654002">Bir form öğesinin ilk fare tıklamasında otomatik doldurma önerilerinde bulunun.</translation>
@@ -1437,6 +1450,7 @@
 <translation id="3065041951436100775">Sekme sonlandırıldı geri bildirimi.</translation>
 <translation id="3065140616557457172">İstediğiniz sorguyu girerek arama yapın veya gitmek istediğiniz URL'yi girin - tüm işlevlerin sorunsuz çalıştığını göreceksiniz.</translation>
 <translation id="3067198360141518313">Bu eklentiyi çalıştır</translation>
+<translation id="307519606911195071">Ayarlar sayfasından ek erişilebilirlik özelliklerini etkinleştirin.</translation>
 <translation id="3075239840551149663"><ph name="NEW_PROFILE_NAME" /> denetlenen kullanıcı olarak oluşturuldu.</translation>
 <translation id="3075874217500066906">Powerwash işleminin başlaması için cihazın tekrar başlatılması gerekiyor. Tekrar başlattıktan sonra devam etmek istediğinizi onaylamanız istenecektir.</translation>
 <translation id="3076677906922146425">Herhangi birinin Chrome'a kişi eklemesine izin ver</translation>
@@ -1586,6 +1600,7 @@
 <translation id="3277710850168074473">Medya öğelerini oynatmak için kullanıcı hareketi zorunluluğu. Bunu devre dışı bırakmak, otomatik oynatmanın çalışmasını sağlar.</translation>
 <translation id="3280237271814976245">Farklı k&amp;aydet...</translation>
 <translation id="3280431534455935878">Hazırlanıyor</translation>
+<translation id="3284674070818187654">Google, Arama ve diğer Google hizmetlerini kişiselleştirmek için tarama geçmişinizi kullanabilir. Bunu, myaccount.google.com adresinden kontrol edebilirsiniz.</translation>
 <translation id="3285322247471302225">Yeni &amp;Sekme</translation>
 <translation id="3288047731229977326">Geliştirici modunda çalışan uzantılar bilgisayarınıza zarar verebilir. Geliştirici değilseniz, geliştirici modundayken güvende olmak için bu uzantıların çalışmasını devre dışı bırakmanız gerekir.</translation>
 <translation id="3289566588497100676">Kolay sembol girişi</translation>
@@ -1692,6 +1707,7 @@
 <translation id="3413122095806433232">CA Verenler: <ph name="LOCATION" /></translation>
 <translation id="3414856743105198592">Çıkarılabilir medyanın biçimlendirilmesi tüm verileri silecektir. Devam etmek istiyor musunuz?</translation>
 <translation id="3414952576877147120">Boyut:</translation>
+<translation id="3416248389957650982">Oturum açtıktan sonra myaccount.google.com sayfasını aç</translation>
 <translation id="3420980393175304359">Kişi Değiştir</translation>
 <translation id="3423858849633684918">Lütfen <ph name="PRODUCT_NAME" /> uygulamasını yeniden başlatın</translation>
 <translation id="3425233587047449821">Yeni Korece IME</translation>
@@ -1739,6 +1755,7 @@
 <translation id="3479552764303398839">Şimdi değil</translation>
 <translation id="3480892288821151001">Pencereyi sola yerleştir</translation>
 <translation id="3481915276125965083">Bu sayfada engellenen pop-up'lar:</translation>
+<translation id="3482214069979148937">Tam ekrandan çıkmak için |<ph name="ACCELERATOR" />| tuşunu basılı tutun</translation>
 <translation id="3484869148456018791">Yeni sertifika al</translation>
 <translation id="3487007233252413104">anonim işlev</translation>
 <translation id="348771913750618459">iframe tabanlı oturum açma akışları</translation>
@@ -1833,7 +1850,6 @@
 <translation id="3593965109698325041">Sertifika Adı Kısıtlamaları</translation>
 <translation id="3595596368722241419">Pil tam dolu</translation>
 <translation id="3600456501114769456">Cihazınızdaki yerel dosyalara erişim, yöneticiniz tarafından devre dışı bırakıldı.</translation>
-<translation id="3601395307734599350">Tüm uzantılarınız burada</translation>
 <translation id="3603385196401704894">Kanada Fransızcası</translation>
 <translation id="3603622770190368340">Ağ sertifikası edinme</translation>
 <translation id="3605780360466892872">İş adamı</translation>
@@ -2002,6 +2018,7 @@
     <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />'a yedeklemek için hazır</translation>
 <translation id="3816844797124379499">Uygulama "<ph name="APP_NAME" />" ile çakıştığından eklenemedi.</translation>
 <translation id="3819007103695653773">Tüm sitelerin arka plan push mesajları göndermesine izin ver</translation>
+<translation id="3819752733757735746">Anahtar erişimi (bilgisayarı yalnızca bir veya iki anahtarla kontrol edin)</translation>
 <translation id="3819800052061700452">Tam ek&amp;ran</translation>
 <translation id="3822265067668554284">Hiçbir sitenin fiziksel konumumu izlemesine izin verme</translation>
 <translation id="3825863595139017598">Moğolca klavye</translation>
@@ -2201,6 +2218,7 @@
 <translation id="4120817667028078560">Yol çok uzun</translation>
 <translation id="4121428309786185360">Son Kullanma Tarihi:</translation>
 <translation id="412730574613779332">Süper Kahraman</translation>
+<translation id="4127528900246453928"><ph name="ORIGIN" /> artık tam ekran.</translation>
 <translation id="4130199216115862831">Cihaz Günlüğü</translation>
 <translation id="4130207949184424187">Bu uzantı, Çok Amaçlı Adres Çubuğu'nda arama yaptığınızda gösterilen sayfayı değiştirdi.</translation>
 <translation id="4130750466177569591">Kabul ediyorum</translation>
@@ -2214,7 +2232,6 @@
 <translation id="4151403195736952345">Genel varsayılanı kullan (Algıla)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 sekme}other{# sekme}}</translation>
 <translation id="4154664944169082762">Parmak izleri</translation>
-<translation id="4157188838832721931">Şifreleri şifreler sayfasında görüntülemeden önce kullanıcıya OS şifresini sormayı devre dışı bırak.</translation>
 <translation id="4157869833395312646">Microsoft Sunucu Geçitli Şifreleme</translation>
 <translation id="4158739975813877944">Şarkı listesini aç</translation>
 <translation id="4159681666905192102">Bu hesap çocuklar içindir ve <ph name="CUSTODIAN_EMAIL" /> ile <ph name="SECOND_CUSTODIAN_EMAIL" /> tarafından yönetilmektedir</translation>
@@ -2226,6 +2243,7 @@
 <translation id="4172051516777682613">Her zaman göster</translation>
 <translation id="417475959318757854">Uygulama Başlatıcı'yı ortala.</translation>
 <translation id="4176463684765177261">Devre dışı</translation>
+<translation id="4179512409951755566">OSK Fazla Kaydırmasını Etkinleştir</translation>
 <translation id="4180788401304023883">"<ph name="CERTIFICATE_NAME" />" CA sertifikası silinsin mi?</translation>
 <translation id="418179967336296930">Rusça Fonetik (YaZHert) klavye</translation>
 <translation id="4181841719683918333">Diller</translation>
@@ -2257,7 +2275,6 @@
 <translation id="4218259925454408822">Başka bir hesapta oturum aç</translation>
 <translation id="4219614746733932747">Etkinleştirilirse Blink, içeriği cihaz ölçek katsayısına göre ölçeklemek için yakınlaştırma mekanizmasını kullanır.</translation>
 <translation id="4220865787605972627">Ekran renk kalibrasyonunu destekliyorsa bu özelliğe izin verir.</translation>
-<translation id="4233506668751282421">Masaüstü Paylaşımı için Sesi Etkinleştir</translation>
 <translation id="4235200303672858594">Tüm ekran</translation>
 <translation id="4235813040357936597"><ph name="PROFILE_NAME" /> için hesap ekle</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> bu dilde görüntülenemez.</translation>
@@ -2265,7 +2282,6 @@
 <translation id="4242577469625748426">Politika ayarları cihaza yüklenemedi: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> fare imlecinizi devre dışı bırakmak istiyor.</translation>
 <translation id="424546999567421758">Fazla disk kullanımı tespit edildi</translation>
-<translation id="4247072926966606568">Bu işaret etkin olduğunda, kullanıcı masaüstü paylaşımı seçici penceresi aracılığıyla sesin paylaşılıp paylaşılmayacağını seçebilir.</translation>
 <translation id="424726838611654458">Her zaman Adobe Reader programında aç</translation>
 <translation id="4249248555939881673">Ağ bağlantısı bekleniyor...</translation>
 <translation id="4249373718504745892">Bu sayfanın kamera ve mikrofonunuza erişimi engellenmiştir.</translation>
@@ -2338,7 +2354,6 @@
 <translation id="4358697938732213860">Adres ekle</translation>
 <translation id="4359408040881008151">Bağımlı uzantılar nedeniyle yüklendi.</translation>
 <translation id="4361190688154226069">Görünümlerde dikdörtgen tabanlı hedefleme</translation>
-<translation id="4363372140743955595">Şifre Yöneticisi Yeniden Kimlik Doğrulaması</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> indirildi</translation>
 <translation id="4364830672918311045">Bildirimleri görüntüle</translation>
 <translation id="4365673000813822030">Hata, Senkronizasyonun çalışması durdu.</translation>
@@ -2395,6 +2410,7 @@
 <translation id="4449935293120761385">Otomatik Doldurma hakkında</translation>
 <translation id="4449996769074858870">Bu sekmede ses çalınıyor.</translation>
 <translation id="4450974146388585462">Teşhis Et</translation>
+<translation id="4452426408005428395">Vazgeç</translation>
 <translation id="4454939697743986778">Bu sertifika, sistem yöneticiniz tarafından yüklenmiştir.</translation>
 <translation id="445923051607553918">Kablosuz ağa bağlan</translation>
 <translation id="4462159676511157176">Özel ad sunucuları</translation>
@@ -2454,6 +2470,7 @@
 <translation id="4558426062282641716">Otomatik başlatma izni istendi</translation>
 <translation id="4563210852471260509">Başlangıç giriş dili Çince</translation>
 <translation id="456664934433279154">Araç Seti-Görünümler tabanlı Chrome Uygulaması pencerelerinin kullanıp kullanılmayacağını denetler.</translation>
+<translation id="4566767428015023961">Fare imlecini vurgula</translation>
 <translation id="4569998400745857585">Gizlenmiş uzantıları içeren menü</translation>
 <translation id="4570444215489785449">Şimdi bu cihazı istediğiniz zaman Chrome Yöneticisi'nde uzaktan kilitleyebilirsiniz.</translation>
 <translation id="4572659312570518089">"<ph name="DEVICE_NAME" />" cihazına bağlanırken kimlik doğrulaması iptal edildi.</translation>
@@ -2471,7 +2488,6 @@
 <translation id="4594109696316595112">Bir kerelik etkinleştirme: Smart Lock'u bu <ph name="DEVICE_TYPE" /> cihazında etkinleştirmek için şifrenizi yazın. Smart Lock ile, telefonunuz şifre olmadan bu cihazın kilidini açar. Bu özelliği değiştirmek veya kapatmak için <ph name="DEVICE_TYPE" /> ayarlarınıza gidin.</translation>
 <translation id="4595560905247879544">Uygulamalar ve uzantılar sadece yönetici (<ph name="CUSTODIAN_NAME" />) tarafından değiştirilebilir.</translation>
 <translation id="4601242977939794209">EMF Dönüştürücü</translation>
-<translation id="4601250583401186741">Bir denetleyici ile eşleştirme</translation>
 <translation id="4602466770786743961"><ph name="HOST" /> sitesinin kamerama ve mikrofonuma erişmesine her zaman izin ver</translation>
 <translation id="4605399136610325267">İnternet bağlantısı yok</translation>
 <translation id="4608500690299898628">&amp;Bul...</translation>
@@ -2507,6 +2523,7 @@
 <translation id="4645676300727003670">&amp;Sakla</translation>
 <translation id="4647090755847581616">Sekmeyi Ka&amp;pat</translation>
 <translation id="4647697156028544508">Lütfen "<ph name="DEVICE_NAME" />" için PIN'i girin:</translation>
+<translation id="4647836739603100666">Devam ettiğinizde <ph name="BEGIN_LINK" />Google Hizmet Şartları<ph name="END_LINK" />'nı ve <ph name="BEGIN_LINK" />Gizlilik Politikası<ph name="END_LINK" />'nı kabul etmiş olursunuz.</translation>
 <translation id="4648491805942548247">İzinler yetersiz</translation>
 <translation id="4653235815000740718">OS kurtarma medyası oluşturulurken bir sorunla karşılaşıldı. Kullanılan depolama cihazı bulunamadı.</translation>
 <translation id="4654488276758583406">Çok Küçük</translation>
@@ -2727,6 +2744,7 @@
 <translation id="4974733135013075877">Çıkış ve çocuk kilidi</translation>
 <translation id="497490572025913070">Birleştirilmiş oluşturma katmanı kenarlıkları</translation>
 <translation id="4977942889532008999">Erişimi Onaylayın</translation>
+<translation id="4982319280615426980">Basitleştirilmiş tam ekran / fare kilidi kullanıcı arayüzü.</translation>
 <translation id="4982718461356080574">Yığın modundayken aktif olmayan sekmelerde kapat düğmelerini gizleme</translation>
 <translation id="498294082491145744">Web sitelerinin çerezler, JavaScript, eklentiler, coğrafi konum, mikrofon, kamera vb. özelliklere erişimini denetleyen ayarlarınızı değiştirme</translation>
 <translation id="4988526792673242964">Sayfalar</translation>
@@ -2765,6 +2783,7 @@
 <translation id="5039804452771397117">İzin ver</translation>
 <translation id="5045550434625856497">Yanlış şifre</translation>
 <translation id="5048179823246820836">İskandinav</translation>
+<translation id="5048294425697652159">Ekran kalibrasyonu için Quirks İstemcisi'ni etkinleştirin.</translation>
 <translation id="5053604404986157245">Rastgele oluşturulmuş TPM şifresi kullanılamıyor. Powerwash sonrasında bu normaldir.</translation>
 <translation id="5053803681436838483">Yeni gönderim adresi...</translation>
 <translation id="5055309315264875868">Senkronize edilen şifrelerinizi çevrimiçi olarak yönetmek için şifre yöneticisi ayarlar sayfasında bir bağlantı göster.</translation>
@@ -2862,7 +2881,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Medya oynatma için hareket zorunluluğu</translation>
 <translation id="5189060859917252173">"<ph name="CERTIFICATE_NAME" />" sertifikası bir Sertifika Yetkilisi'ni temsil ediyor.</translation>
-<translation id="5196117515621749903">Önbelleği yok sayarak yeniden yükle</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">İnternet</translation>
 <translation id="5197680270886368025">Senkronizasyon tamamlandı.</translation>
@@ -2877,6 +2895,7 @@
 <translation id="521582610500777512">Fotoğraf silindi</translation>
 <translation id="5218183485292899140">İsviçre Fransızcası</translation>
 <translation id="5218766986344577658">Bağlantı Netleştirme Açılır Penceresi</translation>
+<translation id="5220992698394817380">Kaydolmak için IME menüsünü etkinleştir</translation>
 <translation id="5222676887888702881">Çıkış</translation>
 <translation id="5225324770654022472">Uygulamalar kısayolunu göster</translation>
 <translation id="5227536357203429560">Özel ağ ekle...</translation>
@@ -2919,6 +2938,7 @@
 <translation id="5271247532544265821">Basitleştirilmiş/Geleneksel Çince modları arasında geçiş yap</translation>
 <translation id="5271549068863921519">Şifreyi kaydet</translation>
 <translation id="5273628206174272911">Yatay yönde fazla kaydırma yapıldığında geçmişte deneysel gezinti.</translation>
+<translation id="5275194674756975076">Tamam, yenile</translation>
 <translation id="5275795814002959418">Bu siteden <ph name="COUNT" /> çerez</translation>
 <translation id="5275973617553375938">Dosyalar Google Drive'dan geri yüklendi</translation>
 <translation id="527605719918376753">Sekmenin sesini kapat</translation>
@@ -2992,6 +3012,7 @@
 <translation id="5368720394188453070">Telefonunuz kilitli. Giriş yapmak için kilidini açın.</translation>
 <translation id="5369927996833026114">Chrome Uygulama Başlatıcıyı keşfedin</translation>
 <translation id="5370819323174483825">&amp;Yeniden Yükle</translation>
+<translation id="5372066618989754822">Dil Ayarları sayfasındaki yeni IME menüsüne erişimi etkinleştirin.</translation>
 <translation id="5372529912055771682">Sağlanan kayıt modu işletim sisteminin bu sürümü tarafından desteklenmiyor. Lütfen en yeni sürümü kullandığınızdan emin olun ve tekrar deneyin.</translation>
 <translation id="5374359983950678924">Resmi değiştir</translation>
 <translation id="5376169624176189338">Geri dönmek için tıkla, geçmişi görmek için tıklayıp tut</translation>
@@ -3081,6 +3102,7 @@
 <translation id="5486561344817861625">Tarayıcı Yeniden Başlatmasını Simüle Et</translation>
 <translation id="54870580363317966">Denetlenen bu kullanıcı için bir avatar seçin.</translation>
 <translation id="5488468185303821006">Gizli modda izin ver</translation>
+<translation id="5489789060051091748">Sesli okunması için seçin: Arama düğmesini basılı tutun ve sesli okunmasını istediğiniz metni tıklayıp sürükleyin</translation>
 <translation id="549294555051714732">Otomatik Doldurma önerileri için alt dize eşleştirme</translation>
 <translation id="5494362494988149300">İşlem &amp;Tamamlandığında Aç</translation>
 <translation id="5494920125229734069">Tümünü seç</translation>
@@ -3177,6 +3199,7 @@
 <translation id="5626134646977739690">Adı:</translation>
 <translation id="5627086634964711283">Ayrıca, Ana Sayfa düğmesini tıkladığınızda gösterilen sayfayı denetler.</translation>
 <translation id="5627259319513858869">Henüz geliştirilme aşamasında olan deneysel tuval özelliklerinin kullanılmasına olanak verir.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Tarayıcının üst bölümündeki arayüzde malzeme tasarımı</translation>
 <translation id="5633060877636360447">Bu işlem en az <ph name="TOTAL_COUNT" /> öğeyi bu cihazdan kalıcı olarak silecek, ancak diğer cihazlardaki senkronize edilmiş öğeleri silmeyecektir.</translation>
 <translation id="5636996382092289526"><ph name="NETWORK_ID" /> ağını kullanabilmek için öncelikle <ph name="LINK_START" />ağın oturum açma sayfasını ziyaret etmeniz<ph name="LINK_END" /> gerekebilir. Söz konusu sayfa birkaç saniye içinde otomatik olarak açılacaktır. Açılmazsa, ağ kullanılamaz.</translation>
@@ -3204,8 +3227,10 @@
 <translation id="5677928146339483299">Engellenenler</translation>
 <translation id="5678550637669481956"><ph name="VOLUME_NAME" /> birimine okuma ve yazma erişimi izni verildi.</translation>
 <translation id="567881659373499783">Sürüm <ph name="PRODUCT_VERSION" /></translation>
+<translation id="5678862612529498267">Nesneyi klavye odağıyla vurgula</translation>
 <translation id="5678955352098267522"><ph name="WEBSITE_1" /> sitesindeki verilerinizi okuma</translation>
 <translation id="5680928275846978395">Genel Bakış Modu'nda metin filtreleme</translation>
+<translation id="5683818630978268777">Deneysel klavye kilidi kullanıcı arayüzü.</translation>
 <translation id="5684661240348539843">Öğe Tanımlayıcı</translation>
 <translation id="569068482611873351">İçe aktar...</translation>
 <translation id="56907980372820799">Verileri bağla</translation>
@@ -3544,6 +3569,7 @@
 <translation id="621638399744152264">%<ph name="VALUE" /></translation>
 <translation id="6217714497624616387">Dokunma ayarı</translation>
 <translation id="6218364611373262432">Her yeniden başlatmada uygulama başlatıcı yükleme durumunu sıfırlayın. Bu bayrak ayarlandığı zaman Chrome her başladığında başlatıcının yüklenmiş olduğunu unutur. Bu seçenek, Uygulama Başlatıcı yükleme akışının testi için kullanılır.</translation>
+<translation id="6219616557885484178">Google Play'deki bir milyondan fazla uygulama ve oyun arasından seçim yapıp <ph name="DEVICE_TYPE" /> cihazınıza yükleyin ve kullanın.</translation>
 <translation id="6219717821796422795">Hanyu</translation>
 <translation id="6220413761270491930">Uzantı Yükleme Hatası</translation>
 <translation id="6221345481584921695">Google Güvenli Tarama yakın bir zamanda <ph name="SITE" /> sitesinde <ph name="BEGIN_LINK" />kötü amaçlı yazılım tespit etti<ph name="END_LINK" />. Normalde güvenli olan web sitelerine bazen kötü amaçlı yazılımlar bulaşır. Kötü amaçlı içerik, kötü amaçlı yazılım dağıtımcısı olduğu bilinen <ph name="SUBRESOURCE_HOST" /> kaynağından gelmektedir.</translation>
@@ -3670,7 +3696,6 @@
 <translation id="6420676428473580225">Masaüstüne ekleyin</translation>
 <translation id="6422329785618833949">Fotoğraf arkaya gönderildi</translation>
 <translation id="642282551015776456">Bu ad, dosya veya klasör adı olarak kullanılamaz</translation>
-<translation id="642322423610046417">İhtiyacınız olmayan uzantıları kaldırmak için içerik (sağ tıklama) menüsünü kullanın.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Varsayılan PDF görüntüleyiciniz olarak Adobe Reader kullanılsın mı?</translation>
 <translation id="6425092077175753609">Malzeme</translation>
@@ -3741,6 +3766,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Klavye kilidi modu olan ve kullanıcıların çıkış için Esc tuşunu basılı tutmalarını gerektiren deneysel bir tam ekran.</translation>
 <translation id="6527303717912515753">Paylaş</translation>
 <translation id="6528546217685656218">Bu İstemci Sertifikası'nın Özel Anahtarı eksik veya geçersiz.</translation>
 <translation id="653019979737152879"><ph name="FILE_NAME" /> senkronize ediliyor...</translation>
@@ -3813,6 +3839,7 @@
 <translation id="6639554308659482635">SQLite belleği</translation>
 <translation id="6644756108386233011">Değiştirilmiş <ph name="IDS_SHORT_PRODUCT_NAME" /> ayarları sıfırlansın mı?</translation>
 <translation id="6647228709620733774">Netscape Sertifika Yetki İptali URL'si</translation>
+<translation id="6649018507441623493">Bir saniye...</translation>
 <translation id="6649068951642910388">Oturum geri yükleme kullanıcı arayüzü, bilgi çubuğu yerine bir balon içinde görüntülenir.</translation>
 <translation id="665061930738760572">&amp;Yeni Pencerede Aç</translation>
 <translation id="6652975592920847366">OS Kurtarma Medyası Oluşturma</translation>
@@ -3919,6 +3946,7 @@
 <translation id="6825883775269213504">Rusça</translation>
 <translation id="6827236167376090743">Bu video sürekli olarak oynatılacaktır.</translation>
 <translation id="6828153365543658583">Yalnızca aşağıdaki kullanıcıların oturum açmasına izin ver:</translation>
+<translation id="6828860976882136098">Otomatik güncellemeler tüm kullanıcılar için ayarlanamadı (yayın öncesi yürütme hatası: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857"><ph name="DEVICE_TYPE" /> cihazınızla ilgili yardım alın.</translation>
 <translation id="6829270497922309893">Kuruluşunuza kaydolma</translation>
 <translation id="6830590476636787791">İlk çalıştırma eğiticisinde animasyonlu geçişler</translation>
@@ -3941,7 +3969,6 @@
 <translation id="6860427144121307915">Sekmede aç</translation>
 <translation id="6862635236584086457">Bu klasöre kaydedilen tüm dosyalar otomatik bir şekilde çevrimiçi olarak yedeklenir</translation>
 <translation id="6865313869410766144">Form otomatik doldurma verileri</translation>
-<translation id="6865319096921627602">Android'de birleşik medya hattını etkinleştirir.</translation>
 <translation id="6867678160199975333"><ph name="NEW_PROFILE_NAME" /> kullanıcısına geç</translation>
 <translation id="6869402422344886127">İşaretli onay kutusu</translation>
 <translation id="6870130893560916279">Ukraynaca klavye</translation>
@@ -3981,6 +4008,7 @@
 <translation id="6934265752871836553">Chrome'un içeriği daha hızlı çizmesini sağlamak için yeni teknoloji kodunu kullanın. Bu yolun
         arkasındaki değişiklikler muhtemelen birçok içeriği bozar.</translation>
 <translation id="6935367737854035550">Tarayıcının üst kullanıcı arayüzündeki malzeme tasarımı öğelerini ayarlar.</translation>
+<translation id="6935867720248834680">GMS hizmetleri kullanılamıyor</translation>
 <translation id="6937152069980083337">Google Japonca Girişi (ABD klavye için)</translation>
 <translation id="693807610556624488">Yazma işlemi şu cihaz için maksimum özellik uzunluğunu aşıyor: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6939777852457331078">ABD Workman klavye</translation>
@@ -4035,6 +4063,7 @@
 <translation id="7006017748900345484">WebRTC H.264 yazılım video kodlayıcı/kod çözücü</translation>
 <translation id="7006634003215061422">Alt kenar boşluğu</translation>
 <translation id="7006844981395428048">$1 ses</translation>
+<translation id="7008270479623533562">Bu uzantıyı çalıştırmak için sayfayı yenilemeniz gerekir. Uzantı simgesini sağ tıklayıp bu uzantıyı bu sitede otomatik olarak çalıştırabilirsiniz.</translation>
 <translation id="7009045250432250765">Tek tıklamayla otomatik doldurma</translation>
 <translation id="7010160495478792664">Uygun olduğunda donanımla hızlandırılmış video kod çözme özelliği.</translation>
 <translation id="7010400591230614821">Agresif sekme bırakma stratejisi</translation>
@@ -4097,6 +4126,7 @@
 <translation id="7082055294850503883">CapsLock durumunu göz ardı et ve varsayılan olarak küçük harf gir</translation>
 <translation id="7088418943933034707">Sertifikaları yönet...</translation>
 <translation id="7088434364990739311">Güncelleme denetimi başlatılamadı (hata kodu <ph name="ERROR" />).</translation>
+<translation id="708856090370082727">OSK fazla kaydırma desteğini etkinleştirin. Bu işaret etkin olduğunda, OSK yalnızca görsel görünümü yeniden boyutlandırır.</translation>
 <translation id="7088674813905715446">Bu cihaz, yönetici tarafından "sağlanmıyor" durumuna alınmış. Kayıt için tekrar etkinleştirmek üzere lütfen yöneticinizden cihazı bekleme durumuna almasını isteyin.</translation>
 <translation id="708969677220991657">Geçersiz bir sertifika sunulsa dahi HTTPS üzerinden localhost'a yönelik isteklere izin verir.</translation>
 <translation id="7092106376816104">Pop-up istisnaları</translation>
@@ -4171,6 +4201,7 @@
 <translation id="721331389620694978">Göz atma alışkanlıklarını yansıtabilecek bazı ayarlar temizlenmeyecek.</translation>
 <translation id="7214227951029819508">Parlaklık:</translation>
 <translation id="7219357088166514551"><ph name="ENGINE" /> üzerinde arayın veya URL'yi yazın</translation>
+<translation id="722055596168483966">Google hizmetlerini kişiselleştirme</translation>
 <translation id="7221155467930685510">$1 GB</translation>
 <translation id="7221855153210829124">Bildirimleri gösterme</translation>
 <translation id="7221869452894271364">Bu sayfayı yeniden yükle</translation>
@@ -4197,7 +4228,6 @@
 <translation id="7256710573727326513">Sekme içinde aç</translation>
 <translation id="7257173066616499747">Kablosuz ağlar</translation>
 <translation id="7257666756905341374">Kopyaladığınız ve yapıştırdığınız verileri okuma</translation>
-<translation id="7260002739296185724">OS X 10.7 veya sonraki sürüm cihazlarda video yakalama ve video cihazı izleme için AVFoundation kullanımını etkinleştirir. Aksi takdirde QTKit kullanılacaktır.</translation>
 <translation id="7260504762447901703">Erişimi iptal et</translation>
 <translation id="7262004276116528033">Bu oturum açma hizmeti, <ph name="SAML_DOMAIN" /> tarafından barındırılıyor.</translation>
 <translation id="7262221505565121">Korumalı alan içinde olmayan eklenti erişimi istisnaları</translation>
@@ -4216,6 +4246,7 @@
 <translation id="7280877790564589615">İzin istendi</translation>
 <translation id="7282547042039404307">Düzgün</translation>
 <translation id="7287143125007575591">Erişim reddedildi.</translation>
+<translation id="7288592446024861651">Yer işaretleriniz, geçmişiniz, şifreleriniz ve diğer ayarlarınız Google Hesabınızla senkronize edilecek. Böylece, tüm cihazlarınızda bunları kullanabileceksiniz. Nelerin senkronize edileceğini <ph name="BEGIN_LINK" /> adresinde kontrol edin.</translation>
 <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />x<ph name="VERTICAL_DPI" /> dpi</translation>
 <translation id="7290594223351252791">Kaydı onaylayın</translation>
 <translation id="7295019613773647480">Denetlenen kullanıcıları etkinleştir</translation>
@@ -4234,7 +4265,6 @@
 <translation id="7314278895724341067">NTP çevrimdışı sayfalarını etkinleştir</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (şu andaki)</translation>
 <translation id="7321545336522791733">Sunucuya ulaşılamıyor</translation>
-<translation id="7324841169865301118">Kullanıcının masaüstü paylaşımı için bir sekme seçebilmesini sağlar.</translation>
 <translation id="7325437708553334317">Yüksek Kontrast Uzantısı</translation>
 <translation id="7326565110843845436">Dokunmatik yüzeyde üç parmakla tıklama</translation>
 <translation id="73289266812733869">Seçili değil</translation>
@@ -4452,6 +4482,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />, kaydettiğiniz şifrelerle uygun sitelerde otomatik olarak oturum açmanızı sağlar.</translation>
 <translation id="7644029910725868934">Denetlenen kullanıcılar için yönetilen yer işaretleri klasörünü etkinleştirin.</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (cihaz sahibi)</translation>
+<translation id="7646771353003624501">Tarayıcının uyanmasını ve çevrimdışı sayfaları otomatik olarak arka planda yüklemesini sağlar.</translation>
 <translation id="7646821968331713409">Kafes iş parçacığı sayısı</translation>
 <translation id="7648048654005891115">Tuş eşleme stili</translation>
 <translation id="7648595706644580203">Sanal klavye için hareketle düzenleme.</translation>
@@ -4601,6 +4632,7 @@
 <translation id="7878999881405658917">Google bu telefona bir bildirim gönderdi. Telefonunuzun, Bluetooth bağlantısını kullanarak 9 metreden daha uzak bir mesafeden <ph name="DEVICE_TYPE" /> cihazınızın kilitlenmesini önleyebileceğine dikkat edin. Bunun sorun yaratabileceği durumlarda, &lt;a&gt;bu özelliği geçici olarak devre dışı bırakabilirsiniz&lt;/a&gt;.</translation>
 <translation id="7879478708475862060">İzleme giriş modu</translation>
 <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" şu uygulamaları ve uzantıları ekler:</translation>
+<translation id="7884988936047469945">Deneysel erişilebilirlik özellikleri</translation>
 <translation id="7885253890047913815">En Son Hedefler</translation>
 <translation id="7885283703487484916">çok kısa</translation>
 <translation id="7887192723714330082">Ekran ve kilidi açıkken "Ok Google"a yanıt verme</translation>
@@ -4702,6 +4734,7 @@
 <translation id="8014154204619229810">Güncelleyici şu anda çalışıyor. Tekrar kontrol etmek için bir dakika içinde yenileyin.</translation>
 <translation id="8014206674403687691"><ph name="IDS_SHORT_PRODUCT_NAME" /> daha önce yüklü olan sürümü geri yükleyemiyor. Lütfen cihazınıza tekrar Powerwash uygulayın.</translation>
 <translation id="8017335670460187064"><ph name="LABEL" /></translation>
+<translation id="8017667670902200762">Kimlik doğrulama sorunu</translation>
 <translation id="8022523925619404071">Otomatik güncellemeyi etkinleştir</translation>
 <translation id="8023801379949507775">Uzantıları şimdi güncelle</translation>
 <translation id="8025789898011765392">Görevler</translation>
@@ -4709,6 +4742,7 @@
 <translation id="8026334261755873520">Tarama verilerini temizle</translation>
 <translation id="8026964361287906498">(Kurumsal politika tarafından yönetiliyor)</translation>
 <translation id="8028060951694135607">Microsoft Anahtar Kurtarma</translation>
+<translation id="8028620363061701162">Çevrimdışı sayfaların arka planda yüklenebilmesini sağlar</translation>
 <translation id="8028993641010258682">Boyut</translation>
 <translation id="8030169304546394654">Bağlı değil</translation>
 <translation id="8031722894461705849">Slovakça klavye</translation>
@@ -4982,7 +5016,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Fotoğraf sahibi:</translation>
 <translation id="8428213095426709021">Ayarlar</translation>
-<translation id="8432590265309978927">Farklı süreçlerde, siteler arası iframe'ler oluşturulmasına yönelik deney aşamasında bir destek.</translation>
 <translation id="8432745813735585631">ABD Colemak klavye</translation>
 <translation id="8434177709403049435">Ko&amp;dlama</translation>
 <translation id="8434480141477525001">NaCl Hata Ayıklama Bağlantı Noktası</translation>
@@ -5179,7 +5212,6 @@
 <translation id="8713979477561846077">ABD klavye için, siz fiziksel klavyede yazdıkça öneri sunabilen fiziksel klavye otomatik düzeltme özelliğini etkinleştirin.</translation>
 <translation id="871476437400413057">Google tarafından kaydedilen şifreler</translation>
 <translation id="8714838604780058252">Arka plan grafikleri</translation>
-<translation id="8716065142695381595">Android'de birleşik (Android ve masaüstü) medya hattını etkinleştirir.</translation>
 <translation id="8722421161699219904">ABD Uluslararası klavye</translation>
 <translation id="872451400847464257">Arama Motorunu Düzenle</translation>
 <translation id="8724859055372736596">Klasörde &amp;Göster</translation>
@@ -5199,6 +5231,7 @@
 <translation id="8737685506611670901"><ph name="REPLACED_HANDLER_TITLE" /> yerine <ph name="PROTOCOL" /> bağlantılarını açma</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Fareyle kıyaslandığında zayıf sayılabilecek dokunuşları telafi etmek için dokunma hareketinin konumunu hassaslaştırır.</translation>
+<translation id="8743712320294854924">Genişletilmiş giriş seçeneklerini rafta gösterin.</translation>
 <translation id="874420130893181774">Geleneksel Pinyin giriş yöntemi</translation>
 <translation id="8744525654891896746">Denetlenen bu kullanıcı için bir avatar seçin</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5268,6 +5301,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">ÜstKrkt tuşu mod geçişi</translation>
 <translation id="8852742364582744935">Aşağıdaki uygulamalar ve uzantılar eklendi:</translation>
+<translation id="8853611566624224021">Ekran rengi kalibrasyonu için Quirks Sunucusu'ndan icc ekran dosyalarının alınmasını etkinleştirin.</translation>
 <translation id="885381502874625531">Beyaz Rusça klavye</translation>
 <translation id="8856844195561710094">Bluetooth cihaz keşfi durdurulamadı.</translation>
 <translation id="885701979325669005">Depolama</translation>
@@ -5317,7 +5351,6 @@
 <translation id="8925458182817574960">&amp;Ayarlar</translation>
 <translation id="8926389886865778422">Bir daha sorma</translation>
 <translation id="8926518602592448999">Geliştirici Modu Uzantılarını Devre Dışı Bırakın</translation>
-<translation id="8929454297483336498">QTKit yerine Mac OS X AVFoundation API'larını kullanma</translation>
 <translation id="8931394284949551895">Yeni cihazlar</translation>
 <translation id="8932730422557198035">Android Midi API'sını kullan</translation>
 <translation id="8933960630081805351">Bulucu'da &amp;Göster</translation>
@@ -5331,6 +5364,7 @@
 <translation id="894360074127026135">Netscape Uluslararası İlerlemesi</translation>
 <translation id="8944779739948852228">Yazıcı algılandı</translation>
 <translation id="8946359700442089734">Hata ayıklama özellikleri bu <ph name="IDS_SHORT_PRODUCT_NAME" /> cihazda tam olarak etkinleştirilmemişti.</translation>
+<translation id="8946784827990177241">WebUSB desteğini etkinleştirin.</translation>
 <translation id="89515141420106838">Yazıcı sürücüleri için Chrome Web Mağazası Galeri uygulamasını etkinleştirir. Uygulama Chrome Web Mağazası'nda, belirli bir USB kimliğine sahip USB yazıcısına yazdırmayı destekleyen uzantıları arar.</translation>
 <translation id="895347679606913382">Başlatılıyor...</translation>
 <translation id="8954952943849489823">Taşıma başarısız oldu, beklenmeyen hata: $1</translation>
@@ -5475,6 +5509,7 @@
 <translation id="9154194610265714752">Güncellendi</translation>
 <translation id="9154418932169119429">Bu resim çevrimdışı kullanılamıyor.</translation>
 <translation id="91568222606626347">Kısayol Oluştur...</translation>
+<translation id="9157697743260533322">Otomatik güncellemeler tüm kullanıcılar için ayarlanamadı (yayın öncesi başlatma hatası: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">Hata! Kimlik doğrulama sırasında bir ağ iletişim sorunu oldu. Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.</translation>
 <translation id="9159562891634783594">Kaydedilmemiş bulut yazıcıları yazdırma önizlemeden kaydettirmeyi etkinleştir.</translation>
 <translation id="9166510596677678112">Bu kişiye e-posta gönder</translation>
@@ -5486,7 +5521,6 @@
 <translation id="9170848237812810038">&amp;Geri al</translation>
 <translation id="9170884462774788842">Bilgisayarınızdaki başka bir program, Chrome'un çalışma şeklini değiştirebilecek bir tema ekledi.</translation>
 <translation id="9177499212658576372">Şu an <ph name="NETWORK_TYPE" /> ağına bağlısınız.</translation>
-<translation id="9177556055091995297">Kredi kartlarını yönet</translation>
 <translation id="917858577839511832">WebRTC için DTLS 1.2 ile pazarlık</translation>
 <translation id="917861274483335838">Eklenti engellemeyi yönet...</translation>
 <translation id="9179348476548754105">Şifre yöneticisinin, yalnızca işlemle ilgili yeniden yetkilendirme sayfaları için senkronizasyon kimlik bilgilerine ilişkin otomatik doldurma özelliğini işleme şekli.</translation>
@@ -5529,6 +5563,7 @@
 <translation id="951981865514037445"><ph name="URL" />, cihazınızın konumunu kullanmak istiyor.</translation>
 <translation id="952838760238220631">Brotli İçerik Şifrelemesi desteğini etkinleştir.</translation>
 <translation id="952992212772159698">Etkin değil</translation>
+<translation id="953000875543358078">Bu işlem bir dakika kadar sürebilir</translation>
 <translation id="960987915827980018">Yaklaşık 1 saat kaldı</translation>
 <translation id="96421021576709873">Kablosuz ağ</translation>
 <translation id="965490406356730238">Uygun olduğunda, yakalanan çerçevenin donanımla hızlandırılmış mjpeg kod çözümlemesini etkinleştirin.</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 9a90fb3..2ad683c5 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -159,7 +159,6 @@
     Вам потрібно знову налаштувати свій профіль.<ph name="BR" />
     <ph name="BR" />
     На наступному екрані надішліть відгук, щоб допомогти нам вирішити цю проблему.</translation>
-<translation id="1216954813581739968">Увімкнути вкладку для трансляції на комп’ютер.</translation>
 <translation id="121827551500866099">Показати всі завантаження...</translation>
 <translation id="122082903575839559">Алгоритм підпису сертифіката</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 із шифруванням RSA</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">URL-адреса з %s замість запита</translation>
 <translation id="1546280085599573572">Це розширення змінило сторінку, яка відкривається під час натискання кнопки "Домашня сторінка".</translation>
 <translation id="1546795794523394272">Вітаємо в Chromebox для відеоконференцій!</translation>
+<translation id="1547572086206517271">Оновіть сторінку</translation>
 <translation id="1547964879613821194">Англійська (Канада)</translation>
 <translation id="1548132948283577726">Тут відображатимуться сайти, які ніколи не зберігають паролі.</translation>
 <translation id="1549045574060481141">Підтвердити завантаження</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">Дозволити зберігати нещодавно відвідані сторінки локально для перегляду в режимі офлайн. Потрібно ввімкнути перегляд сторінок у режимі офлайн.</translation>
 <translation id="1891668193654680795">Довіряйте цьому сертифікату для ідентифікації виробників програмного забезпечення.</translation>
 <translation id="189210018541388520">Відкрити на весь екран</translation>
+<translation id="1892754076732315533">Новий спрощений інтерфейс, який з’являється під час розгортання сторінки на весь екран або блокування курсора миші.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Помилка під час роботи в хмарі</translation>
 <translation id="189358972401248634">Інші мови</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">Доступ до ваших пристроїв Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Дата останнього доступу:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> за мить перезапуститься та скине налаштування</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Диспетчер завдань</translation>
 <translation id="2887525882758501333">Документ PDF</translation>
 <translation id="2888807692577297075">Немає елементів, які відповідають запиту &lt;b&gt;"<ph name="SEARCH_STRING" />"&lt;/b&gt;</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">Не зараз</translation>
 <translation id="3480892288821151001">Закріпити вікно ліворуч</translation>
 <translation id="3481915276125965083">На цій сторінці заблоковано такі спливаючі вікна:</translation>
+<translation id="3482214069979148937">Натисніть |<ph name="ACCELERATOR" />|, щоб вийти з повноекранного режиму</translation>
 <translation id="3484869148456018791">Отримати новий сертифікат</translation>
 <translation id="3487007233252413104">анонімна функція</translation>
 <translation id="348771913750618459">Процедури входу за допомогою iframe</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">Обмеження імені сертифіката</translation>
 <translation id="3595596368722241419">Акумулятор заряджено</translation>
 <translation id="3600456501114769456">Доступ до локальних файлів на вашому пристрої вимкнено адміністратором.</translation>
-<translation id="3601395307734599350">Показано всі розширення</translation>
 <translation id="3603385196401704894">Французька (Канада)</translation>
 <translation id="3603622770190368340">Отримати сертифікат мережі</translation>
 <translation id="3605780360466892872">Консерватор</translation>
@@ -2228,7 +2230,6 @@
 <translation id="4151403195736952345">Використовувати загальне значення за умовчанням (визначати)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 вкладка}one{# вкладка}few{# вкладки}many{# вкладок}other{# вкладки}}</translation>
 <translation id="4154664944169082762">Відбитки</translation>
-<translation id="4157188838832721931">Не пропонувати користувачеві ввести свій пароль для ОС, перш ніж показувати паролі на сторінці паролів.</translation>
 <translation id="4157869833395312646">Серверне шифрування Microsoft</translation>
 <translation id="4158739975813877944">Відкрити список відтворення</translation>
 <translation id="4159681666905192102"><ph name="CUSTODIAN_EMAIL" /> і <ph name="SECOND_CUSTODIAN_EMAIL" /> керують цим обліковим записом для дітей.</translation>
@@ -2272,7 +2273,6 @@
 <translation id="4218259925454408822">Увійти в інший обліковий запис</translation>
 <translation id="4219614746733932747">Якщо ввімкнено, Blink змінює розмір вмісту для коефіцієнта масштабування на пристрої за допомогою механізму збільшення.</translation>
 <translation id="4220865787605972627">Дозволити калібрування кольору дисплея, якщо дисплей підтримує цю функцію.</translation>
-<translation id="4233506668751282421">Увімкнути трансляцію аудіо на комп’ютери</translation>
 <translation id="4235200303672858594">Увесь екран</translation>
 <translation id="4235813040357936597">Додати обліковий запис у профіль <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Неможливо відобразити <ph name="PRODUCT_NAME" /> цією мовою</translation>
@@ -2280,7 +2280,6 @@
 <translation id="4242577469625748426">Помилка встановлення налаштувань правил на пристрої: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140">Сторінка <ph name="FULLSCREEN_ORIGIN" /> хоче вимкнути курсор миші.</translation>
 <translation id="424546999567421758">Виявлено надмірне використання місця на диску</translation>
-<translation id="4247072926966606568">Якщо вибрати цю опцію, з’являтиметься вікно параметрів трансляції, у якому користувач зможе ввімкнути або вимкнути трансляцію аудіо.</translation>
 <translation id="424726838611654458">Завжди відкривати в Adobe Reader</translation>
 <translation id="4249248555939881673">Очікування на з’єднання з мережею…</translation>
 <translation id="4249373718504745892">Доступ цієї сторінки до ваших камери та мікрофона заблоковано.</translation>
@@ -2353,7 +2352,6 @@
 <translation id="4358697938732213860">Додати адресу</translation>
 <translation id="4359408040881008151">Установлено, оскільки є залежні розширення.</translation>
 <translation id="4361190688154226069">Натискати елементи в прямокутній області дотику</translation>
-<translation id="4363372140743955595">Повторна автентифікація диспетчера паролів</translation>
 <translation id="4364444725319685468">Файл "<ph name="FILE_NAME" />" завантажено</translation>
 <translation id="4364830672918311045">Показувати сповіщення</translation>
 <translation id="4365673000813822030">На жаль, синхронізація перестала працювати.</translation>
@@ -2410,6 +2408,7 @@
 <translation id="4449935293120761385">Про автозаповнення</translation>
 <translation id="4449996769074858870">На цій вкладці відтворюється аудіофайл.</translation>
 <translation id="4450974146388585462">Діагностувати</translation>
+<translation id="4452426408005428395">Скасувати</translation>
 <translation id="4454939697743986778">Цей сертифікат установив ваш системний адміністратор.</translation>
 <translation id="445923051607553918">Увійти в мережу Wi-Fi</translation>
 <translation id="4462159676511157176">Імена серверів – персоналізовано</translation>
@@ -2487,7 +2486,6 @@
 <translation id="4594109696316595112">Одноразова активація: введіть пароль, щоб активувати Smart Lock на цьому <ph name="DEVICE_TYPE" />. З функцією Smart Lock ви зможете розблоковувати цей пристрій за допомогою телефона. Пароль вводити не потрібно. Щоб змінити або вимкнути цю функцію, перейдіть у налаштування <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Лише адміністратор (<ph name="CUSTODIAN_NAME" />) може змінювати додатки та розширення.</translation>
 <translation id="4601242977939794209">Конвертер файлів EMF</translation>
-<translation id="4601250583401186741">Підключення до контролера</translation>
 <translation id="4602466770786743961">Завжди дозволяти хосту <ph name="HOST" /> доступ до ваших камери та мікрофона</translation>
 <translation id="4605399136610325267">Відсутнє з’єднання з Інтернетом</translation>
 <translation id="4608500690299898628">&amp;Знайти...</translation>
@@ -2783,6 +2781,7 @@
 <translation id="5039804452771397117">Дозволити</translation>
 <translation id="5045550434625856497">Неправильний пароль</translation>
 <translation id="5048179823246820836">Скандинавська</translation>
+<translation id="5048294425697652159">Увімкнути Quirks Client для калібрування дисплея.</translation>
 <translation id="5053604404986157245">Навмання згенерований пароль TPM не доступний. Це нормально після Powerwash (очищення).</translation>
 <translation id="5053803681436838483">Нова адреса для доставки…</translation>
 <translation id="5055309315264875868">Показувати посилання на сторінці налаштувань диспетчера паролів, щоб керувати синхронізованими паролями в Інтернеті.</translation>
@@ -2880,7 +2879,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Вимоги до жестів для відтворення медіа-файлів</translation>
 <translation id="5189060859917252173">Сертифікат "<ph name="CERTIFICATE_NAME" />" представляє Центр сертифікації.</translation>
-<translation id="5196117515621749903">Перезавантажити, ігноруючи кеш</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Інтернет</translation>
 <translation id="5197680270886368025">Синхронізацію завершено.</translation>
@@ -2895,6 +2893,7 @@
 <translation id="521582610500777512">Фотографію відхилено</translation>
 <translation id="5218183485292899140">Французька (Швейцарія)</translation>
 <translation id="5218766986344577658">Спливаючі вікна для вибору посилань</translation>
+<translation id="5220992698394817380">Увімкнути меню IME</translation>
 <translation id="5222676887888702881">Вийти</translation>
 <translation id="5225324770654022472">Показувати ярлики додатків</translation>
 <translation id="5227536357203429560">Додати приватну мережу...</translation>
@@ -2937,6 +2936,7 @@
 <translation id="5271247532544265821">Переключити режим китайська спрощена/традиційна</translation>
 <translation id="5271549068863921519">Зберегти пароль</translation>
 <translation id="5273628206174272911">Експериментальна навігація в історії за допомогою горизонтального прокручування.</translation>
+<translation id="5275194674756975076">Оновити</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> з цього сайту</translation>
 <translation id="5275973617553375938">Відновлені файли з Google Диска</translation>
 <translation id="527605719918376753">Вимкнути звук на вкладці</translation>
@@ -3010,6 +3010,7 @@
 <translation id="5368720394188453070">Ваш телефон заблоковано. Щоб увійти, розблокуйте його.</translation>
 <translation id="5369927996833026114">Дізнайтеся про панель запуску програм Chrome</translation>
 <translation id="5370819323174483825">&amp;Оновити</translation>
+<translation id="5372066618989754822">Дозволити доступ до нового меню IME зі сторінки налаштувань мови.</translation>
 <translation id="5372529912055771682">Наданий режим реєстрації не підтримується цією версією операційної системи. Переконайтеся, що ви використовуєте останню версію, і повторіть спробу.</translation>
 <translation id="5374359983950678924">Змінити зображення</translation>
 <translation id="5376169624176189338">Натисніть, щоб повернутися назад; утримуйте, щоб переглянути історію</translation>
@@ -3195,6 +3196,7 @@
 <translation id="5626134646977739690">Ім'я:</translation>
 <translation id="5627086634964711283">Розширення також змінило сторінку, яка відкривається під натискання кнопки "Домашня сторінка".</translation>
 <translation id="5627259319513858869">Вмикає використання експериментальних функцій canvas, які ще перебувають на стадії розробки.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Матеріальний дизайн угорі веб-переглядача Chrome</translation>
 <translation id="5633060877636360447">З цього пристрою буде назавжди видалено принаймні стільки елементів: <ph name="TOTAL_COUNT" /> Синхронізовані дані залишаться на інших пристроях.</translation>
 <translation id="5636996382092289526">Щоб користуватися цією мережею (<ph name="NETWORK_ID" />), можливо, спершу потрібно буде <ph name="LINK_START" />перейти на сторінку входу мережі<ph name="LINK_END" />, яка автоматично відкриється за декілька секунд. Якщо цього не станеться, мережею користуватися не можна.</translation>
@@ -3225,6 +3227,7 @@
 <translation id="5678862612529498267">Виділяти об’єкт, вибраний на клавіатурі</translation>
 <translation id="5678955352098267522">Переглядати ваші дані на веб-сайті <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Фільтрування в режимі огляду шляхом введення тексту</translation>
+<translation id="5683818630978268777">Експериментальний інтерфейс блокування клавіатури.</translation>
 <translation id="5684661240348539843">Ідентифікатор об’єкта</translation>
 <translation id="569068482611873351">Імпорт...</translation>
 <translation id="56907980372820799">Зв’язати облікові записи</translation>
@@ -3690,7 +3693,6 @@
 <translation id="6420676428473580225">Додати на робочий стіл</translation>
 <translation id="6422329785618833949">Фотографія обернулася</translation>
 <translation id="642282551015776456">Не може використовуватися як ім’я файлу чи назва папки</translation>
-<translation id="642322423610046417">Щоб видалити непотрібні розширення, відкрийте контекстне меню (натисніть праву кнопку миші).</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Використовувати Adobe Reader як засіб перегляду файлів PDF за умовчанням?</translation>
 <translation id="6425092077175753609">Матеріальний</translation>
@@ -3761,6 +3763,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Щоб вийти з повноекранного режиму блокування клавіатури, потрібно натиснути й утримувати Esc.</translation>
 <translation id="6527303717912515753">Надіслати</translation>
 <translation id="6528546217685656218">Секретний ключ цього сертифіката клієнта відсутній або недійсний.</translation>
 <translation id="653019979737152879">Синхронізація файлу <ph name="FILE_NAME" />…</translation>
@@ -3940,6 +3943,7 @@
 <translation id="6825883775269213504">Російська</translation>
 <translation id="6827236167376090743">Це відео буде відтворюватися, доки рак на горі не свисне.</translation>
 <translation id="6828153365543658583">Дозволити вхід цим користувачам:</translation>
+<translation id="6828860976882136098">Не вдалося налаштувати автоматичні оновлення для всіх користувачів (помилка виконання: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Довідка для <ph name="DEVICE_TYPE" />.</translation>
 <translation id="6829270497922309893">Реєстрація у вашій організації</translation>
 <translation id="6830590476636787791">Анімовані переходи в посібнику, що відкривається під час першого запуску</translation>
@@ -3963,7 +3967,6 @@
 <translation id="6860427144121307915">Відкрити у вкладці</translation>
 <translation id="6862635236584086457">Для всіх файлів, збережених у цій папці, автоматично зберігаються резервні копії онлайн</translation>
 <translation id="6865313869410766144">Дані автозаповнення форм</translation>
-<translation id="6865319096921627602">Вмикає єдиний медіаканал для Android.</translation>
 <translation id="6867678160199975333">Переключитися на користувача <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Прапорець поставлено</translation>
 <translation id="6870130893560916279">Українська розкладка</translation>
@@ -4058,6 +4061,7 @@
 <translation id="7006017748900345484">Програми для кодування та декодування відео WebRTC H.264</translation>
 <translation id="7006634003215061422">Нижнє поле</translation>
 <translation id="7006844981395428048">Звук у форматі $1</translation>
+<translation id="7008270479623533562">Щоб розширення почало працювати, оновіть сторінку. Щоб розширення автоматично працювало на цьому веб-сайті, правою кнопкою миші натисніть його значок.</translation>
 <translation id="7009045250432250765">Автозаповнення одним кліком</translation>
 <translation id="7010160495478792664">Декодування відео з апаратним прискоренням, якщо це можливо.</translation>
 <translation id="7010400591230614821">Агресивна стратегія закривання вкладок</translation>
@@ -4222,7 +4226,6 @@
 <translation id="7256710573727326513">Відкрити у вкладці</translation>
 <translation id="7257173066616499747">Мережі Wi-Fi</translation>
 <translation id="7257666756905341374">Читати дані, які ви копіюєте та вставляєте</translation>
-<translation id="7260002739296185724">Увімкнути використання AVFoundation для запису відео та відстеження відеопристрою в OС X &gt;= 10.7. В інших випадках використовувати QTKit.</translation>
 <translation id="7260504762447901703">Скасувати доступ</translation>
 <translation id="7262004276116528033">Ця служба входу в обліковий запис зареєстрована в домені <ph name="SAML_DOMAIN" /></translation>
 <translation id="7262221505565121">Винятки доступу плагіна з неізольованим програмним середовищем</translation>
@@ -4260,7 +4263,6 @@
 <translation id="7314278895724341067">Дозволити перегляд сторінки нової вкладки в режимі офлайн</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (поточний)</translation>
 <translation id="7321545336522791733">Сервер недоступний</translation>
-<translation id="7324841169865301118">Користувач може вибирати вкладку для трансляції на комп’ютер.</translation>
 <translation id="7325437708553334317">Розширення "Високий контраст"</translation>
 <translation id="7326565110843845436">Натискання трьома пальцями на сенсорній панелі</translation>
 <translation id="73289266812733869">Невиділений</translation>
@@ -5010,7 +5012,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Автор фотографії</translation>
 <translation id="8428213095426709021">Налаштування</translation>
-<translation id="8432590265309978927">Експериментальна підтримка відтворення міжсайтових елементів iframe в окремих процесах.</translation>
 <translation id="8432745813735585631">Розкладка клавіатури Colemak (США)</translation>
 <translation id="8434177709403049435">&amp;Кодування</translation>
 <translation id="8434480141477525001">Порт налагодження NaCl</translation>
@@ -5207,7 +5208,6 @@
 <translation id="8713979477561846077">Увімкнути автоматичне виправлення для американської клавіатури, щоб отримувати пропозиції під час введення на фізичній клавіатурі.</translation>
 <translation id="871476437400413057">Збережені паролі Google</translation>
 <translation id="8714838604780058252">Фонові зображення</translation>
-<translation id="8716065142695381595">Вмикає єдиний медіаканал (Android і робочий стіл) для Android.</translation>
 <translation id="8722421161699219904">Американська клавіатура (міжнародна)</translation>
 <translation id="872451400847464257">Змінити пошукову систему</translation>
 <translation id="8724859055372736596">&amp;Показати в папці</translation>
@@ -5227,6 +5227,7 @@
 <translation id="8737685506611670901">Відкривати посилання протоколу <ph name="PROTOCOL" />, а не обробника <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Уточнювати положення дотиків, щоб компенсувати низьку роздільну здатність дотиків у порівнянні з мишею.</translation>
+<translation id="8743712320294854924">Показувати на полиці розширені опції введення.</translation>
 <translation id="874420130893181774">Метод введення для стандарту піньїнь традиційної китайської мови</translation>
 <translation id="8744525654891896746">Вибрати аватар для цього контрольованого користувача</translation>
 <translation id="8744641000906923997">Ромадзі</translation>
@@ -5296,6 +5297,7 @@
 <translation id="8847988622838149491">Сповіщення щодо USB</translation>
 <translation id="8848709220963126773">Перемикач режиму клавіші Shift</translation>
 <translation id="8852742364582744935">Додано перелічені нижче програми й розширення.</translation>
+<translation id="8853611566624224021">Отримувати файли дисплея .icc із сервера Quirks Server для калібрування кольорів дисплея.</translation>
 <translation id="885381502874625531">Білоруська клавіатура</translation>
 <translation id="8856844195561710094">Не вдалося зупинити пошук пристрою Bluetooth.</translation>
 <translation id="885701979325669005">Обсяг пам’яті</translation>
@@ -5345,7 +5347,6 @@
 <translation id="8925458182817574960">&amp;Налаштування</translation>
 <translation id="8926389886865778422">Не запитувати знову</translation>
 <translation id="8926518602592448999">Вимкнути розширення в режимі розробника</translation>
-<translation id="8929454297483336498">Використовувати API ОС Mac X AVFoundation замість QTKit</translation>
 <translation id="8931394284949551895">Нові пристрої</translation>
 <translation id="8932730422557198035">Використовувати API Android Midi</translation>
 <translation id="8933960630081805351">&amp;Показати в програмі Finder</translation>
@@ -5359,6 +5360,7 @@
 <translation id="894360074127026135">Програма підвищення до міжнародного рівня Netscape</translation>
 <translation id="8944779739948852228">Виявлено принтер</translation>
 <translation id="8946359700442089734">Функції налагодження не повністю ввімкнено на цьому пристрої <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
+<translation id="8946784827990177241">Увімкнути підтримку WebUSB.</translation>
 <translation id="89515141420106838">Вмикає додаток Галерея Веб-магазину Chrome для драйверів принтера. Додаток шукає у Веб-магазині Chrome розширення, які підтримують друк через USB-принтер із відповідним ідентифікатором USB.</translation>
 <translation id="895347679606913382">Запуск...</translation>
 <translation id="8954952943849489823">Помилка переміщення. Неочікувана помилка: $1</translation>
@@ -5502,6 +5504,7 @@
 <translation id="9154194610265714752">Оновлено</translation>
 <translation id="9154418932169119429">Це зображення не доступне в режимі офлайн.</translation>
 <translation id="91568222606626347">Створити ярлик…</translation>
+<translation id="9157697743260533322">Не вдалося налаштувати автоматичні оновлення для всіх користувачів (помилка запуску: <ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">На жаль, під час автентифікації виникла проблема з обміном даних через мережу. Перевірте з’єднання з мережею та повторіть спробу.</translation>
 <translation id="9159562891634783594">Увімкнути реєстрацію незареєстрованих веб-принтерів із вікна попереднього перегляду друку.</translation>
 <translation id="9166510596677678112">Надіслати електронний лист цій людині</translation>
@@ -5513,7 +5516,6 @@
 <translation id="9170848237812810038">&amp;Скасувати</translation>
 <translation id="9170884462774788842">Інша програма на вашому комп’ютері додала тему, яка може змінити роботу Chrome.</translation>
 <translation id="9177499212658576372">Зараз ви під’єднані до такої мережі: <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Керувати кредитними картками</translation>
 <translation id="917858577839511832">Обмін даними з DTLS 1.2 для WebRTC</translation>
 <translation id="917861274483335838">Керувати блокуванням плагінів…</translation>
 <translation id="9179348476548754105">Як диспетчер паролів обробляє автозаповнення для облікових даних синхронізації лише для трансакційних сторінок повторної автентифікації.</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 5045ae4..962c8c1 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -159,7 +159,6 @@
     Bạn sẽ phải thiết lập lại hồ sơ của mình.<ph name="BR" />
     <ph name="BR" />
     Trên màn hình tiếp theo, vui lòng gửi phản hồi để giúp chúng tôi khắc phục sự cố.</translation>
-<translation id="1216954813581739968">Bật tab cho Chia sẻ màn hình.</translation>
 <translation id="121827551500866099">Hiển thị tất cả tệp tải xuống...</translation>
 <translation id="122082903575839559">Thuật toán Chữ ký Chứng chỉ</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 Với Mã hóa RSA</translation>
@@ -391,6 +390,7 @@
 <translation id="1545786162090505744">URL có %s thay thế truy vấn</translation>
 <translation id="1546280085599573572">Tiện ích này đã thay đổi trang nào sẽ hiển thị khi bạn nhấp vào nút Trang chủ.</translation>
 <translation id="1546795794523394272">Chào mừng bạn đến với Chromebox cho hội họp!</translation>
+<translation id="1547572086206517271">Yêu cầu làm mới</translation>
 <translation id="1547964879613821194">Tiếng Anh ở Canada</translation>
 <translation id="1548132948283577726">Trang web không bao giờ lưu mật khẩu sẽ hiển thị tại đây.</translation>
 <translation id="1549045574060481141">Xác nhận tải xuống</translation>
@@ -619,6 +619,7 @@
 <translation id="1891196807951270080">Bật tính năng lưu trữ cục bộ trang được truy cập gần đây để sử dụng ngoại tuyến. Cần bật Trang ngoại tuyến.</translation>
 <translation id="1891668193654680795">Tin tưởng vào chứng chỉ này khi nhận dạng nhà sản xuất phần mềm.</translation>
 <translation id="189210018541388520">Mở chế độ toàn màn hình</translation>
+<translation id="1892754076732315533">Trải nghiệm người dùng mới được đơn giản hóa khi ở trạng thái khóa con trỏ chuột hoặc chế độ toàn màn hình đã được kích hoạt cho trang.</translation>
 <translation id="1893046049133338222">ARC: <ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">Luồng cấp phép qua đám mây không thành công</translation>
 <translation id="189358972401248634">Ngôn ngữ khác</translation>
@@ -1324,6 +1325,7 @@
 <translation id="288042212351694283">Truy cập thiết bị Universal 2nd Factor</translation>
 <translation id="2881966438216424900">Truy cập lần cuối:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> sẽ khởi động lại và đặt lại trong giây lát</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">Trình quản lý tác vụ</translation>
 <translation id="2887525882758501333">Tài liệu PDF</translation>
 <translation id="2888807692577297075">Không có mục nào khớp với <ph name="SEARCH_STRING" /></translation>
@@ -1754,6 +1756,7 @@
 <translation id="3479552764303398839">Không phải bây giờ</translation>
 <translation id="3480892288821151001">Gắn cửa sổ về phía bên trái</translation>
 <translation id="3481915276125965083">Các cửa sổ bật lên sau đã bị chặn trên trang này:</translation>
+<translation id="3482214069979148937">Giữ |<ph name="ACCELERATOR" />| để thoát chế độ toàn màn hình</translation>
 <translation id="3484869148456018791">Nhận chứng chỉ mới</translation>
 <translation id="3487007233252413104">chức năng ẩn danh</translation>
 <translation id="348771913750618459">Luồng đăng nhập dựa trên iframe</translation>
@@ -1848,7 +1851,6 @@
 <translation id="3593965109698325041">Ràng buộc Tên của Chứng chỉ</translation>
 <translation id="3595596368722241419">Pin đầy</translation>
 <translation id="3600456501114769456">Truy cập vào tệp cục bộ trên thiết bị của bạn bị quản trị viên vô hiệu hóa.</translation>
-<translation id="3601395307734599350">Tất cả tiện ích của bạn đều có ở đây</translation>
 <translation id="3603385196401704894">Tiếng Pháp ở Canada</translation>
 <translation id="3603622770190368340">Nhận chứng chỉ mạng</translation>
 <translation id="3605780360466892872">Doanh nhân</translation>
@@ -2231,7 +2233,6 @@
 <translation id="4151403195736952345">Sử dụng cài đặt mặc định chung (Phát hiện)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation>
 <translation id="4154664944169082762">Dấu vân tay</translation>
-<translation id="4157188838832721931">Tắt tính năng nhắc người dùng về mật khẩu hệ điều hành của họ trước khi công khai mật khẩu trên trang mật khẩu.</translation>
 <translation id="4157869833395312646">Mã hóa Cổng Máy chủ của Microsoft</translation>
 <translation id="4158739975813877944">Mở danh sách phát</translation>
 <translation id="4159681666905192102">Đây là tài khoản cho trẻ em do <ph name="CUSTODIAN_EMAIL" /> và <ph name="SECOND_CUSTODIAN_EMAIL" /> quản lý.</translation>
@@ -2275,7 +2276,6 @@
 <translation id="4218259925454408822">Đăng nhập tài khoản khác</translation>
 <translation id="4219614746733932747">Nếu được bật, Blink sẽ sử dụng cơ chế thu phóng để mở rộng nội dung cho yếu tố phạm vi thiết bị.</translation>
 <translation id="4220865787605972627">Cho phép hiệu chỉnh màu của màn hình nếu màn hình hỗ trợ tính năng này.</translation>
-<translation id="4233506668751282421">Bật âm thanh cho chia sẻ màn hình</translation>
 <translation id="4235200303672858594">Toàn màn hình</translation>
 <translation id="4235813040357936597">Thêm tài khoản cho <ph name="PROFILE_NAME" /></translation>
 <translation id="4240069395079660403">Không thể hiển thị <ph name="PRODUCT_NAME" /> bằng ngôn ngữ này</translation>
@@ -2283,7 +2283,6 @@
 <translation id="4242577469625748426">Không thể cài đặt các cài đặt chính sách trên thiết bị: <ph name="VALIDATION_ERROR" />.</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> muốn tắt con trỏ chuột của bạn.</translation>
 <translation id="424546999567421758">Đã phát hiện mức sử dụng ổ đĩa cao</translation>
-<translation id="4247072926966606568">Khi cờ này bật, cửa sổ bộ chọn chia sẻ màn hình sẽ cho phép người dùng chọn xem có chia sẻ âm thanh hay không.</translation>
 <translation id="424726838611654458">Luôn mở trong Adobe Reader</translation>
 <translation id="4249248555939881673">Đang chờ kết nối mạng...</translation>
 <translation id="4249373718504745892">Trang này đã bị chặn truy cập vào máy ảnh và micrô của bạn.</translation>
@@ -2356,7 +2355,6 @@
 <translation id="4358697938732213860">Thêm địa chỉ</translation>
 <translation id="4359408040881008151">Đã được cài đặt vì (các) tiện ích phụ thuộc.</translation>
 <translation id="4361190688154226069">Nhắm mục tiêu theo hình chữ nhật trong các chế độ xem</translation>
-<translation id="4363372140743955595">Xác thực lại trình quản lý mật khẩu</translation>
 <translation id="4364444725319685468">Đã tải xuống <ph name="FILE_NAME" /></translation>
 <translation id="4364830672918311045">Hiển thị thông báo</translation>
 <translation id="4365673000813822030">Rất tiếc, Đồng bộ hóa đã ngừng hoạt động.</translation>
@@ -2413,6 +2411,7 @@
 <translation id="4449935293120761385">Giới thiệu về Tự động điền</translation>
 <translation id="4449996769074858870">Tab này đang phát âm thanh.</translation>
 <translation id="4450974146388585462">Chẩn đoán</translation>
+<translation id="4452426408005428395">Không sao</translation>
 <translation id="4454939697743986778">Quản trị viên hệ thống của bạn đã cài đặt chứng chỉ này.</translation>
 <translation id="445923051607553918">Tham gia mạng Wi-Fi</translation>
 <translation id="4462159676511157176">Máy chủ có tên tùy chỉnh</translation>
@@ -2490,7 +2489,6 @@
 <translation id="4594109696316595112">Kích hoạt một lần: Hãy nhập mật khẩu của bạn để kích hoạt Smart Lock trên <ph name="DEVICE_TYPE" /> này. Với Smart Lock, điện thoại của bạn sẽ mở khóa thiết bị này—không cần mật khẩu. Để thay đổi hoặc tắt tính năng này, hãy truy cập cài đặt của <ph name="DEVICE_TYPE" />.</translation>
 <translation id="4595560905247879544">Chỉ người quản lý mới có thể sửa đổi ứng dụng và tiện ích (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4601242977939794209">Bộ chuyển đổi EMF</translation>
-<translation id="4601250583401186741">Ghép nối với trình điều khiển</translation>
 <translation id="4602466770786743961">Luôn cho phép <ph name="HOST" /> truy cập vào máy ảnh và micrô của bạn</translation>
 <translation id="4605399136610325267">Chưa được kết nối Internet</translation>
 <translation id="4608500690299898628">&amp;Tìm...</translation>
@@ -2786,6 +2784,7 @@
 <translation id="5039804452771397117">Cho phép</translation>
 <translation id="5045550434625856497">Mật khẩu sai</translation>
 <translation id="5048179823246820836">Nordic</translation>
+<translation id="5048294425697652159">Bật Ứng dụng Quirks để hiệu chỉnh màn hình.</translation>
 <translation id="5053604404986157245">Mật khẩu TPM được tạo ngẫu nhiên hiện không khả dụng. Đây là hiện tượng bình thường sau khi tiến hành Powerwash.</translation>
 <translation id="5053803681436838483">Địa chỉ giao hàng mới...</translation>
 <translation id="5055309315264875868">Hiển thị liên kết trong trang cài đặt trình quản lý mật khẩu để quản lý mật khẩu được đồng bộ hóa của bạn trực tuyến.</translation>
@@ -2883,7 +2882,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">Yêu cầu cử chỉ cho phát lại phương tiện</translation>
 <translation id="5189060859917252173">Chứng chỉ "<ph name="CERTIFICATE_NAME" />" đại diện cho Tổ chức phát hành chứng chỉ.</translation>
-<translation id="5196117515621749903">Tải lại bộ nhớ cache bỏ qua</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">Internet</translation>
 <translation id="5197680270886368025">Hoàn tất quá trình đồng bộ hóa.</translation>
@@ -2898,6 +2896,7 @@
 <translation id="521582610500777512">Đã hủy ảnh</translation>
 <translation id="5218183485292899140">Tiếng Pháp ở Thụy Sĩ</translation>
 <translation id="5218766986344577658">Bong bóng phóng to liên kết</translation>
+<translation id="5220992698394817380">Bật menu IME chọn tham gia</translation>
 <translation id="5222676887888702881">Đăng xuất</translation>
 <translation id="5225324770654022472">Hiển thị lối tắt cho ứng dụng</translation>
 <translation id="5227536357203429560">Thêm mạng riêng...</translation>
@@ -2940,6 +2939,7 @@
 <translation id="5271247532544265821">Chuyển giữa chế độ tiếng Trung Giản thể/tiếng Trung Phồn thể</translation>
 <translation id="5271549068863921519">Lưu mật khẩu</translation>
 <translation id="5273628206174272911">Điều hướng lịch sử thử nghiệm theo thanh cuộn qua ngang.</translation>
+<translation id="5275194674756975076">OK, làm mới</translation>
 <translation id="5275795814002959418"><ph name="COUNT" /> từ trang web này</translation>
 <translation id="5275973617553375938">Tệp được khôi phục từ Google Drive</translation>
 <translation id="527605719918376753">Tắt tiếng tab</translation>
@@ -3013,6 +3013,7 @@
 <translation id="5368720394188453070">Điện thoại của bạn bị khóa. Hãy mở khóa điện thoại để truy cập.</translation>
 <translation id="5369927996833026114">Khám phá Trình chạy ứng dụng Chrome</translation>
 <translation id="5370819323174483825">&amp;Tải lại</translation>
+<translation id="5372066618989754822">Cho phép quyền truy cập vào menu IME mới trong trang Cài đặt ngôn ngữ.</translation>
 <translation id="5372529912055771682">Chế độ đăng ký đã cung cấp không được phiên bản hệ điều hành này hỗ trợ. Hãy đảm bảo bạn đang chạy phiên bản mới nhất và thử lại.</translation>
 <translation id="5374359983950678924">Thay đổi hình ảnh</translation>
 <translation id="5376169624176189338">Nhấp vào để quay lại, giữ để xem lịch sử</translation>
@@ -3198,6 +3199,7 @@
 <translation id="5626134646977739690">Tên:</translation>
 <translation id="5627086634964711283">Tiện ích cũng điều khiển trang nào sẽ hiển thị khi bạn nhấp vào nút Trang chủ.</translation>
 <translation id="5627259319513858869">Cho phép sử dụng tính năng canvas thử nghiệm vẫn đang được phát triển.</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">Thiết kế material design trong chrome hàng đầu của trình duyệt</translation>
 <translation id="5633060877636360447">Thao tác này sẽ xóa vĩnh viễn ít nhất <ph name="TOTAL_COUNT" /> mục khỏi thiết bị này nhưng sẽ không xóa những mục đã đồng bộ hóa khỏi thiết bị khác.</translation>
 <translation id="5636996382092289526">Để sử dụng <ph name="NETWORK_ID" />, trước hết bạn cần <ph name="LINK_START" />truy cập vào trang đăng nhập của mạng<ph name="LINK_END" />. Trang này thường tự động mở sau vài giây. Nếu trang này không mở thì không thể sử dụng mạng này.</translation>
@@ -3228,6 +3230,7 @@
 <translation id="5678862612529498267">Đánh dấu đối tượng bằng tiêu điểm bàn phím</translation>
 <translation id="5678955352098267522">Đọc dữ liệu của bạn trên <ph name="WEBSITE_1" /></translation>
 <translation id="5680928275846978395">Lọc văn bản ở chế độ Tổng quan</translation>
+<translation id="5683818630978268777">Giao diện người dùng khóa bàn phím thử nghiệm.</translation>
 <translation id="5684661240348539843">Số nhận dạng phần tử</translation>
 <translation id="569068482611873351">Nhập...</translation>
 <translation id="56907980372820799">Liên kết dữ liệu</translation>
@@ -3695,7 +3698,6 @@
 <translation id="6420676428473580225">Thêm vào màn hình</translation>
 <translation id="6422329785618833949">Đã lật ảnh</translation>
 <translation id="642282551015776456">Không thể sử dụng tên này làm tên tệp trong thư mục</translation>
-<translation id="642322423610046417">Sử dụng menu ngữ cảnh (nhấp chuột phải) để xóa tiện ích mà bạn không cần.</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">Sử dụng Adobe Reader làm trình xem PDF mặc định của bạn?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3766,6 +3768,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">Chế độ toàn màn hình thử nghiệm với chế độ khóa bàn phím yêu cầu người dùng phải giữ Esc để thoát.</translation>
 <translation id="6527303717912515753">Chia sẻ</translation>
 <translation id="6528546217685656218">Khóa cá nhân cho chứng chỉ ứng dụng khách này còn thiếu hoặc không hợp lệ.</translation>
 <translation id="653019979737152879">Đang đồng bộ hóa <ph name="FILE_NAME" />...</translation>
@@ -3945,6 +3948,7 @@
 <translation id="6825883775269213504">Tiếng Nga</translation>
 <translation id="6827236167376090743">Video này sẽ tiếp tục phát đi phát lại.</translation>
 <translation id="6828153365543658583">Giới hạn đăng nhập cho những người dùng sau:</translation>
+<translation id="6828860976882136098">Không thiết lập được bản cập nhật tự động cho tất cả người dùng (lỗi thực thi kiểm tra <ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">Nhận trợ giúp với <ph name="DEVICE_TYPE" /> của bạn.</translation>
 <translation id="6829270497922309893">Đăng ký tổ chức của bạn</translation>
 <translation id="6830590476636787791">Chuyển đổi động trong hướng dẫn chạy vào lần đầu tiên</translation>
@@ -3968,7 +3972,6 @@
 <translation id="6860427144121307915">Mở trong một tab</translation>
 <translation id="6862635236584086457">Tất cả tệp được lưu trong thư mục này đều tự động được sao lưu trực tuyến</translation>
 <translation id="6865313869410766144">Dữ liệu biểu mẫu tự động điền</translation>
-<translation id="6865319096921627602">Bật kênh phương tiện được hợp nhất trên Android.</translation>
 <translation id="6867678160199975333">Chuyển sang <ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">Đã chọn hộp kiểm</translation>
 <translation id="6870130893560916279">Bàn phím tiếng Ukraina</translation>
@@ -4064,6 +4067,7 @@
 <translation id="7006017748900345484">Bộ mã hóa/bộ giải mã video của phần mềm WebRTC H.264</translation>
 <translation id="7006634003215061422">Lề dưới</translation>
 <translation id="7006844981395428048">Âm thanh $1</translation>
+<translation id="7008270479623533562">Để chạy tiện ích này, bạn cần phải làm mới trang. Bạn có thể chạy tiện ích này tự động trên trang web này bằng cách nhấp chuột phải vào biểu tượng tiện ích.</translation>
 <translation id="7009045250432250765">Tự đồng điền bằng một lần nhấp</translation>
 <translation id="7010160495478792664">Giải mã video được tăng tốc phần cứng khi có thể.</translation>
 <translation id="7010400591230614821">Chiến lược phát hành tab linh hoạt</translation>
@@ -4228,7 +4232,6 @@
 <translation id="7256710573727326513">Mở trong một tab</translation>
 <translation id="7257173066616499747">Mạng Wi-Fi</translation>
 <translation id="7257666756905341374">Đọc dữ liệu bạn sao chép và dán</translation>
-<translation id="7260002739296185724">Bật sử dụng AV Foundation để quay video và giám sát thiết bị video trên OS X &gt;= 10.7. Thay vào đó, QTKit sẽ được sử dụng.</translation>
 <translation id="7260504762447901703">Thu hồi quyền truy cập</translation>
 <translation id="7262004276116528033">Dịch vụ đăng nhập này do <ph name="SAML_DOMAIN" /> lưu trữ</translation>
 <translation id="7262221505565121">Ngoại lệ truy cập plugin không có hộp cát</translation>
@@ -4266,7 +4269,6 @@
 <translation id="7314278895724341067">Bật trang ngoại tuyến trên trang Tab mới</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (hiện tại)</translation>
 <translation id="7321545336522791733">Máy chủ không truy cập được</translation>
-<translation id="7324841169865301118">Cho phép người dùng chọn một tab cho chia sẻ màn hình.</translation>
 <translation id="7325437708553334317">Tiện ích tương phản cao</translation>
 <translation id="7326565110843845436">Nhấp bằng ba ngón tay trên bàn di chuột</translation>
 <translation id="73289266812733869">Không được chọn</translation>
@@ -5016,7 +5018,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">Ảnh của</translation>
 <translation id="8428213095426709021">Cài đặt</translation>
-<translation id="8432590265309978927">Hỗ trợ mang tính thử nghiệm cao để hiển thị iframe giữa các trang web trong các quá trình riêng lẻ.</translation>
 <translation id="8432745813735585631">Bàn phím Colemak Hoa Kỳ</translation>
 <translation id="8434177709403049435">&amp;Mã hóa</translation>
 <translation id="8434480141477525001">Cổng gỡ lỗi NaCl</translation>
@@ -5213,7 +5214,6 @@
 <translation id="8713979477561846077">Bật tự động sửa bàn phím thực đối với bàn phím tiếng Anh (Mỹ). Tính năng này có thể đưa ra đề xuất khi nhập trên bàn phím thực.</translation>
 <translation id="871476437400413057">Các mật khẩu đã lưu trên Google</translation>
 <translation id="8714838604780058252">Đồ họa nền</translation>
-<translation id="8716065142695381595">Bật kênh phương tiện (Android và máy tính để bàn) được hợp nhất trên Android.</translation>
 <translation id="8722421161699219904">Bàn phím quốc tế Hoa Kỳ</translation>
 <translation id="872451400847464257">Chỉnh sửa Công cụ Tìm kiếm</translation>
 <translation id="8724859055372736596">&amp;Hiển thị trong Thư mục</translation>
@@ -5233,6 +5233,7 @@
 <translation id="8737685506611670901">Mở liên kết <ph name="PROTOCOL" /> thay vì <ph name="REPLACED_HANDLER_TITLE" /></translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">Tinh chỉnh vị trí của một cử chỉ chạm để bù lại những lần chạm có độ phân giải kém so với dùng chuột.</translation>
+<translation id="8743712320294854924">Hiển thị tùy chọn nhập được mở rộng trong giá.</translation>
 <translation id="874420130893181774">Phương thức nhập Bính âm truyền thống</translation>
 <translation id="8744525654891896746">Chọn hình đại diện cho người dùng được giám sát này</translation>
 <translation id="8744641000906923997">Romaji</translation>
@@ -5302,6 +5303,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Chuyển chế độ phím shift</translation>
 <translation id="8852742364582744935">Các ứng dụng và tiện ích sau đã được thêm:</translation>
+<translation id="8853611566624224021">Bật tính năng truy xuất tệp hiển thị icc từ Máy chủ Quirks để hiệu chỉnh màu hiển thị.</translation>
 <translation id="885381502874625531">Bàn phím chữ Belarus</translation>
 <translation id="8856844195561710094">Không thể ngừng khám phá thiết bị Bluetooth.</translation>
 <translation id="885701979325669005">Dung lượng</translation>
@@ -5351,7 +5353,6 @@
 <translation id="8925458182817574960">&amp;Cài đặt</translation>
 <translation id="8926389886865778422">Đừng hỏi lại</translation>
 <translation id="8926518602592448999">Vô hiệu hóa tiện ích chế độ nhà phát triển</translation>
-<translation id="8929454297483336498">Sử dụng Mac OS X API AVFoundation, thay vì QTKit</translation>
 <translation id="8931394284949551895">Thiết bị mới</translation>
 <translation id="8932730422557198035">Sử dụng API Android Midi</translation>
 <translation id="8933960630081805351">&amp;Hiển thị trong Trình tìm kiếm</translation>
@@ -5365,6 +5366,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">Đã phát hiện thấy máy in</translation>
 <translation id="8946359700442089734">Tính năng gỡ lỗi không được bật hoàn toàn trên thiết bị <ph name="IDS_SHORT_PRODUCT_NAME" /> này.</translation>
+<translation id="8946784827990177241">Bật hỗ trợ WebUSB.</translation>
 <translation id="89515141420106838">Bật ứng dụng Thư viện của Cửa hàng Chrome trực tuyến cho trình điều khiển máy in. Ứng dụng này sẽ tìm kiếm các tiện ích hỗ trợ in tới máy in USB với ID USB riêng trong Cửa hàng Chrome trực tuyến.</translation>
 <translation id="895347679606913382">Đang bắt đầu...</translation>
 <translation id="8954952943849489823">Di chuyển không thành công, lỗi không mong đợi: $1</translation>
@@ -5509,6 +5511,7 @@
 <translation id="9154194610265714752">Đã cập nhật</translation>
 <translation id="9154418932169119429">Hình ảnh này không có khi ngoại tuyến.</translation>
 <translation id="91568222606626347">Tạo phím tắt...</translation>
+<translation id="9157697743260533322">Không thiết lập được cập nhật tự động cho tất cả người dùng (lỗi khởi chạy kiểm tra <ph name="ERROR_NUMBER" /></translation>
 <translation id="9158715103698450907">Rất tiếc!  Đã xảy ra sự cố giao tiếp mạng trong khi xác thực.  Vui lòng kiểm tra kết nối mạng của bạn và thử lại.</translation>
 <translation id="9159562891634783594">Cho phép đăng ký máy in trên đám mây chưa được đăng ký từ tính năng xem trước bản in.</translation>
 <translation id="9166510596677678112">Gửi email cho người này</translation>
@@ -5520,7 +5523,6 @@
 <translation id="9170848237812810038">H&amp;oàn tác</translation>
 <translation id="9170884462774788842">Một chương trình khác trên máy tính của bạn đã thêm một chủ đề có thể thay đổi cách Chrome hoạt động.</translation>
 <translation id="9177499212658576372">Bạn hiện kết nối với mạng <ph name="NETWORK_TYPE" />.</translation>
-<translation id="9177556055091995297">Quản lý thẻ tín dụng</translation>
 <translation id="917858577839511832">Dàn xếp với DTLS 1.2 cho WebRTC</translation>
 <translation id="917861274483335838">Quản lý chặn plugin...</translation>
 <translation id="9179348476548754105">Cách trình quản lý mật khẩu chỉ sử dụng tính năng tự động điền thông tin đăng nhập đồng bộ hóa cho trang cấp lại quyền giao dịch.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index a1e61aa..dcabcd6 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -159,7 +159,6 @@
     您必须重新设置个人资料。<ph name="BR" />
     <ph name="BR" />
     请在随即显示的屏幕上发送反馈,以协助我们解决此问题。</translation>
-<translation id="1216954813581739968">启用桌面共享标签页。</translation>
 <translation id="121827551500866099">显示所有下载内容...</translation>
 <translation id="122082903575839559">证书签名算法</translation>
 <translation id="1221024147024329929">PKCS #1,带有 RSA 加密的 MD2</translation>
@@ -387,6 +386,7 @@
 <translation id="1545786162090505744">网址(用“%s”代替搜索字词)</translation>
 <translation id="1546280085599573572">此扩展程序更改了您点击“主页”按钮后系统显示的页面。</translation>
 <translation id="1546795794523394272">欢迎使用 Chromebox 会易!</translation>
+<translation id="1547572086206517271">需要刷新</translation>
 <translation id="1547964879613821194">加拿大英语</translation>
 <translation id="1548132948283577726">一律不保存密码的网站会显示在此处。</translation>
 <translation id="1549045574060481141">确认下载</translation>
@@ -615,6 +615,7 @@
 <translation id="1891196807951270080">允许将最近访问过的网页存储在本地,以供离线使用。需要启用离线网页。</translation>
 <translation id="1891668193654680795">信任该证书,以便标识软件编写者的身份。</translation>
 <translation id="189210018541388520">以全屏模式打开</translation>
+<translation id="1892754076732315533">在用户进入由网页触发的全屏状态或鼠标指针锁定状态后,为其提供经过简化的全新使用体验。</translation>
 <translation id="1893046049133338222">ARC:<ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">云端配置流程失败</translation>
 <translation id="189358972401248634">其他语言</translation>
@@ -1317,6 +1318,7 @@
 <translation id="288042212351694283">访问您的 Universal 2nd Factor 设备</translation>
 <translation id="2881966438216424900">最后访问时间:</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> 将立即重新启动并重置</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">任务管理器</translation>
 <translation id="2887525882758501333">PDF 文档</translation>
 <translation id="2888807692577297075">找不到与&lt;b&gt;“<ph name="SEARCH_STRING" />”&lt;/b&gt;匹配的项</translation>
@@ -1744,6 +1746,7 @@
 <translation id="3479552764303398839">以后再说</translation>
 <translation id="3480892288821151001">将窗口固定到左侧</translation>
 <translation id="3481915276125965083">已拦截此网页上的下列弹出式窗口:</translation>
+<translation id="3482214069979148937">按住 |<ph name="ACCELERATOR" />| 即可退出全屏模式</translation>
 <translation id="3484869148456018791">获取新的证书</translation>
 <translation id="3487007233252413104">匿名函数</translation>
 <translation id="348771913750618459">基于 iframe 的登录流程</translation>
@@ -1838,7 +1841,6 @@
 <translation id="3593965109698325041">证书名称约束</translation>
 <translation id="3595596368722241419">电池已充满</translation>
 <translation id="3600456501114769456">您的管理员禁止他人访问您设备上的本地文件。</translation>
-<translation id="3601395307734599350">您的所有扩展程序都已显示在此处</translation>
 <translation id="3603385196401704894">加拿大法语</translation>
 <translation id="3603622770190368340">获取网络证书</translation>
 <translation id="3605780360466892872">男性商务人士</translation>
@@ -2220,7 +2222,6 @@
 <translation id="4151403195736952345">使用全局默认设置(检测)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 个标签页}other{# 个标签页}}</translation>
 <translation id="4154664944169082762">指纹</translation>
-<translation id="4157188838832721931">停用“在密码页上显示密码前,提示用户输入操作系统密码”的功能。</translation>
 <translation id="4157869833395312646">Microsoft 服务器网关加密</translation>
 <translation id="4158739975813877944">打开播放列表</translation>
 <translation id="4159681666905192102">此帐户是由 <ph name="CUSTODIAN_EMAIL" /> 和 <ph name="SECOND_CUSTODIAN_EMAIL" /> 管理的未成年人帐户。</translation>
@@ -2264,7 +2265,6 @@
 <translation id="4218259925454408822">登录其他帐户</translation>
 <translation id="4219614746733932747">启用后,Blink 将使用其缩放机制来缩放内容(依照设备缩放比例)。</translation>
 <translation id="4220865787605972627">允许使用显示器颜色校准功能(如果显示器支持此功能)。</translation>
-<translation id="4233506668751282421">启用桌面共享音频</translation>
 <translation id="4235200303672858594">整个屏幕</translation>
 <translation id="4235813040357936597">为<ph name="PROFILE_NAME" />添加帐户</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" />无法以该语言显示</translation>
@@ -2272,7 +2272,6 @@
 <translation id="4242577469625748426">无法在设备上安装策略设置:<ph name="VALIDATION_ERROR" />。</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> 意图隐藏鼠标指针。</translation>
 <translation id="424546999567421758">检测到磁盘占用量非常高</translation>
-<translation id="4247072926966606568">启用这项设置后,用户可在桌面共享选择器窗口中选择是否共享音频。</translation>
 <translation id="424726838611654458">始终用Adobe Reader打开</translation>
 <translation id="4249248555939881673">正在等待建立网络连接…</translation>
 <translation id="4249373718504745892">已禁止此网页使用您的摄像头和麦克风。</translation>
@@ -2345,7 +2344,6 @@
 <translation id="4358697938732213860">添加地址</translation>
 <translation id="4359408040881008151">安装此扩展程序是因为某个/些扩展程序需要安装它才能正常使用。</translation>
 <translation id="4361190688154226069">在视图中以矩形表示触摸目标区域</translation>
-<translation id="4363372140743955595">密码管理器重新验证</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> 已下载完毕</translation>
 <translation id="4364830672918311045">显示通知</translation>
 <translation id="4365673000813822030">糟糕,同步已停止。</translation>
@@ -2402,6 +2400,7 @@
 <translation id="4449935293120761385">关于自动填充</translation>
 <translation id="4449996769074858870">该标签页正在播放音频。</translation>
 <translation id="4450974146388585462">诊断</translation>
+<translation id="4452426408005428395">不用了</translation>
 <translation id="4454939697743986778">您的系统管理员已安装此证书。</translation>
 <translation id="445923051607553918">加入Wi-Fi网络</translation>
 <translation id="4462159676511157176">自定义域名服务器</translation>
@@ -2479,7 +2478,6 @@
 <translation id="4594109696316595112">启用一次即可:要在此<ph name="DEVICE_TYPE" />上启用 Smart Lock,请输入您的密码。Smart Lock 启用后,配对手机将能够用来为此设备解锁 - 无需输入密码。要更改或关闭此功能,请前往<ph name="DEVICE_TYPE" />的设置部分。</translation>
 <translation id="4595560905247879544">只有管理员(<ph name="CUSTODIAN_NAME" />)可以修改应用和扩展程序。</translation>
 <translation id="4601242977939794209">EMF 转换器</translation>
-<translation id="4601250583401186741">与控制器配对</translation>
 <translation id="4602466770786743961">始终允许 <ph name="HOST" /> 使用您的摄像头和麦克风</translation>
 <translation id="4605399136610325267">未连接互联网</translation>
 <translation id="4608500690299898628">查找(&amp;F)...</translation>
@@ -2770,6 +2768,7 @@
 <translation id="5039804452771397117">允许</translation>
 <translation id="5045550434625856497">密码不正确</translation>
 <translation id="5048179823246820836">北欧语言</translation>
+<translation id="5048294425697652159">启用 Quirks Client 以对显示屏进行校准。</translation>
 <translation id="5053604404986157245">随机生成的 TPM 密码不可用。这是执行 Powerwash 之后的正常现象。</translation>
 <translation id="5053803681436838483">新的送货地址…</translation>
 <translation id="5055309315264875868">密码管理器的设置页面中将显示一个链接,供您在线管理自己已同步的密码。</translation>
@@ -2865,7 +2864,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">播放媒体时的手势要求</translation>
 <translation id="5189060859917252173">证书“<ph name="CERTIFICATE_NAME" />”代表一个证书授权中心。</translation>
-<translation id="5196117515621749903">重新加载并忽略缓存</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">互联网</translation>
 <translation id="5197680270886368025">同步已完成。</translation>
@@ -2880,6 +2878,7 @@
 <translation id="521582610500777512">照片已被舍弃</translation>
 <translation id="5218183485292899140">瑞士法语</translation>
 <translation id="5218766986344577658">链接消歧弹出式气泡</translation>
+<translation id="5220992698394817380">启用 IME 菜单</translation>
 <translation id="5222676887888702881">退出</translation>
 <translation id="5225324770654022472">显示应用快捷方式</translation>
 <translation id="5227536357203429560">添加专用网络...</translation>
@@ -2922,6 +2921,7 @@
 <translation id="5271247532544265821">在简体中文/繁体中文模式之间切换</translation>
 <translation id="5271549068863921519">保存密码</translation>
 <translation id="5273628206174272911">在发生水平反弹时浏览实验性历史记录。</translation>
+<translation id="5275194674756975076">好的,开始刷新</translation>
 <translation id="5275795814002959418">有 <ph name="COUNT" /> 个来自此网站</translation>
 <translation id="5275973617553375938">从 Google 云端硬盘恢复的文件</translation>
 <translation id="527605719918376753">将此标签页静音</translation>
@@ -2995,6 +2995,7 @@
 <translation id="5368720394188453070">配对手机已锁定,需将其解锁才能进入。</translation>
 <translation id="5369927996833026114">了解 Chrome 应用启动器</translation>
 <translation id="5370819323174483825">重新加载(&amp;R)</translation>
+<translation id="5372066618989754822">允许使用“语言设置”页面中的新 IME 菜单。</translation>
 <translation id="5372529912055771682">此版本的操作系统不支持所提供的注册模式。请确保您运行的是最新版本,然后重试。</translation>
 <translation id="5374359983950678924">更改照片</translation>
 <translation id="5376169624176189338">点击可后退,按住可查看历史记录</translation>
@@ -3084,7 +3085,7 @@
 <translation id="5486561344817861625">模拟浏览器重启</translation>
 <translation id="54870580363317966">为该受监管用户选择头像。</translation>
 <translation id="5488468185303821006">在隐身模式下启用</translation>
-<translation id="5489789060051091748">随选朗读:按下“搜索”键并点击或拖动,即可朗读相应内容</translation>
+<translation id="5489789060051091748">随选朗读:按下“搜索”键并点击或拖动,即可朗读屏幕上的任何文字</translation>
 <translation id="549294555051714732">针对自动填充建议的子字符串匹配功能</translation>
 <translation id="5494362494988149300">完成后打开(&amp;D)</translation>
 <translation id="5494920125229734069">全选</translation>
@@ -3180,6 +3181,7 @@
 <translation id="5626134646977739690">名字:</translation>
 <translation id="5627086634964711283">它还能够控制您点击“主页”按钮后系统显示的页面。</translation>
 <translation id="5627259319513858869">启用仍在开发阶段的实验性画布功能。</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">浏览器顶部界面中的 Material Design</translation>
 <translation id="5633060877636360447">这会将至少 <ph name="TOTAL_COUNT" /> 项内容从这台设备上永久删除,但其他设备上已同步的内容不会被清除。</translation>
 <translation id="5636996382092289526">要使用“<ph name="NETWORK_ID" />”,您可能需要先<ph name="LINK_START" />访问该网络的登录页面<ph name="LINK_END" />,该页面会在几秒钟后自动打开。如果未打开,就表示该网络无法使用。</translation>
@@ -3210,6 +3212,7 @@
 <translation id="5678862612529498267">突出显示获得键盘焦点的对象</translation>
 <translation id="5678955352098267522">读取您在 <ph name="WEBSITE_1" /> 上的数据</translation>
 <translation id="5680928275846978395">概览模式下的文字过滤功能</translation>
+<translation id="5683818630978268777">实验性键盘锁定界面。</translation>
 <translation id="5684661240348539843">资产标识符</translation>
 <translation id="569068482611873351">导入...</translation>
 <translation id="56907980372820799">关联数据</translation>
@@ -3675,7 +3678,6 @@
 <translation id="6420676428473580225">添加到桌面</translation>
 <translation id="6422329785618833949">照片已翻转</translation>
 <translation id="642282551015776456">该名称可能无法用作文件名或文件夹名</translation>
-<translation id="642322423610046417">使用上下文(右键)菜单可移除您不需要的扩展程序。</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">将 Adobe Reader 用作默认的 PDF 查看工具?</translation>
 <translation id="6425092077175753609">Material</translation>
@@ -3745,6 +3747,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">实验性全屏键盘锁定模式(用户需要按住 Esc 键才能退出)。</translation>
 <translation id="6527303717912515753">分享</translation>
 <translation id="6528546217685656218">缺少此客户端证书的私钥,或私钥无效。</translation>
 <translation id="653019979737152879">正在同步<ph name="FILE_NAME" />…</translation>
@@ -3924,6 +3927,7 @@
 <translation id="6825883775269213504">俄语</translation>
 <translation id="6827236167376090743">此视频将不断循环播放。</translation>
 <translation id="6828153365543658583">只允许以下用户登录:</translation>
+<translation id="6828860976882136098">未能按您的要求为所有用户设置自动更新(执行预定流程时出错:<ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">获取与<ph name="DEVICE_TYPE" />相关的帮助。</translation>
 <translation id="6829270497922309893">注册到您的组织</translation>
 <translation id="6830590476636787791">首次运行教程期间采用动画转换</translation>
@@ -3946,7 +3950,6 @@
 <translation id="6860427144121307915">在标签页中打开</translation>
 <translation id="6862635236584086457">系统会自动在线备份保存在此文件夹中的所有文件</translation>
 <translation id="6865313869410766144">自动填充表单数据</translation>
-<translation id="6865319096921627602">在 Android 设备上启用统一媒体渠道。</translation>
 <translation id="6867678160199975333">切换到<ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">选中的复选框</translation>
 <translation id="6870130893560916279">乌克兰语键盘</translation>
@@ -4041,6 +4044,7 @@
 <translation id="7006017748900345484">WebRTC H.264 软件视频编码器/解码器</translation>
 <translation id="7006634003215061422">下边距</translation>
 <translation id="7006844981395428048">$1 音频</translation>
+<translation id="7008270479623533562">您需要刷新页面才能运行此扩展程序。若想在该网站上自动运行此扩展程序,请右键点击相应的扩展程序图标。</translation>
 <translation id="7009045250432250765">点击一次即自动填充</translation>
 <translation id="7010160495478792664">硬件加速的视频解码(若适用)。</translation>
 <translation id="7010400591230614821">激进型标签页释放策略</translation>
@@ -4205,7 +4209,6 @@
 <translation id="7256710573727326513">在标签页中打开</translation>
 <translation id="7257173066616499747">Wi-Fi 网络</translation>
 <translation id="7257666756905341374">读取您复制和粘贴的数据</translation>
-<translation id="7260002739296185724">启用后,将使用AVFoundation在OS X 10.7及更高版本的系统上进行视频捕获和视频设备监控,否则将使用QTKit。</translation>
 <translation id="7260504762447901703">撤消访问权限</translation>
 <translation id="7262004276116528033">此登录服务由 <ph name="SAML_DOMAIN" /> 托管</translation>
 <translation id="7262221505565121">未经过沙盒屏蔽的插件访问方面的例外情况</translation>
@@ -4243,7 +4246,6 @@
 <translation id="7314278895724341067">启用 NTP 离线网页</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" />(当前)</translation>
 <translation id="7321545336522791733">无法连接到服务器</translation>
-<translation id="7324841169865301118">允许用户选择桌面共享标签页。</translation>
 <translation id="7325437708553334317">“高反差”扩展程序</translation>
 <translation id="7326565110843845436">触控板三指点击</translation>
 <translation id="73289266812733869">未选中</translation>
@@ -4452,7 +4454,7 @@
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> 会使用您保存的密码让您自动登录到符合条件的网站。</translation>
 <translation id="7644029910725868934">为受监管用户启用受管理书签文件夹。</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" />(所有者)</translation>
-<translation id="7646771353003624501">允许浏览器自行醒来并在后台自动加载离线网页。</translation>
+<translation id="7646771353003624501">使浏览器醒来在后台自动加载离线网页。</translation>
 <translation id="7646821968331713409">光栅线程数</translation>
 <translation id="7648048654005891115">键盘映射样式</translation>
 <translation id="7648595706644580203">虚拟键盘的手势编辑功能。</translation>
@@ -4984,7 +4986,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">摄影师:</translation>
 <translation id="8428213095426709021">设置</translation>
-<translation id="8432590265309978927">支持在单独的进程中呈现跨网站 iframe(高度实验性支持)。</translation>
 <translation id="8432745813735585631">英语(美国)Colemak 键盘</translation>
 <translation id="8434177709403049435">编码(&amp;E)</translation>
 <translation id="8434480141477525001">NaCl调试端口</translation>
@@ -5181,7 +5182,6 @@
 <translation id="8713979477561846077">启用针对美式键盘的物理键盘自动更正功能(启用该功能后,当您在物理键盘上输入内容时,系统会提供字词建议)。</translation>
 <translation id="871476437400413057">Google 保存的密码</translation>
 <translation id="8714838604780058252">背景图形</translation>
-<translation id="8716065142695381595">在 Android 设备上启用统一(Android 及桌面设备)媒体渠道。</translation>
 <translation id="8722421161699219904">美式国标键盘</translation>
 <translation id="872451400847464257">修改搜索引擎</translation>
 <translation id="8724859055372736596">在文件夹中显示(&amp;S)</translation>
@@ -5201,6 +5201,7 @@
 <translation id="8737685506611670901">打开<ph name="PROTOCOL" />链接而非“<ph name="REPLACED_HANDLER_TITLE" />”</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">改善触摸手势位置,以便弥补触摸操作分辨率低于鼠标操作这一劣势。</translation>
+<translation id="8743712320294854924">在任务栏中显示展开的输入法选项。</translation>
 <translation id="874420130893181774">传统拼音输入法</translation>
 <translation id="8744525654891896746">为该受监管用户选择头像</translation>
 <translation id="8744641000906923997">罗马字</translation>
@@ -5270,6 +5271,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">使用 Shift 键进行模式切换</translation>
 <translation id="8852742364582744935">以下应用和扩展程序已添加完毕:</translation>
+<translation id="8853611566624224021">从 Quirks Server 中检索 icc 显示文件,以对显示颜色进行校准。</translation>
 <translation id="885381502874625531">白俄罗斯语键盘</translation>
 <translation id="8856844195561710094">无法停止蓝牙设备查找功能。</translation>
 <translation id="885701979325669005">存储空间</translation>
@@ -5319,7 +5321,6 @@
 <translation id="8925458182817574960">设置(&amp;S)</translation>
 <translation id="8926389886865778422">不再询问</translation>
 <translation id="8926518602592448999">请停用以开发者模式运行的扩展程序</translation>
-<translation id="8929454297483336498">使用 Mac OS X AVFoundation API(而非 QTKit)</translation>
 <translation id="8931394284949551895">新设备</translation>
 <translation id="8932730422557198035">使用 Android Midi API</translation>
 <translation id="8933960630081805351">在 Finder 中显示(&amp;S)</translation>
@@ -5333,6 +5334,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">已检测到打印机</translation>
 <translation id="8946359700442089734">此<ph name="IDS_SHORT_PRODUCT_NAME" />设备上未完全启用调试功能。</translation>
+<translation id="8946784827990177241">支持 WebUSB。</translation>
 <translation id="89515141420106838">启用专门搜索打印机驱动程序的“Chrome 网上应用店扩展程序列表”应用。此应用会在 Chrome 网上应用店中搜索支持通过 USB 打印机打印(使用特定 USB ID)的扩展程序。</translation>
 <translation id="895347679606913382">即将开始下载...</translation>
 <translation id="8954952943849489823">移动失败,出现意外错误:$1</translation>
@@ -5476,6 +5478,7 @@
 <translation id="9154194610265714752">已更新</translation>
 <translation id="9154418932169119429">此图片无法在离线模式下显示。</translation>
 <translation id="91568222606626347">创建快捷方式…</translation>
+<translation id="9157697743260533322">未能按您的要求为所有用户设置自动更新(启动预定流程时出错:<ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">糟糕!系统在进行身份验证时发生了网络通信问题。请检查您的网络连接,然后重试。</translation>
 <translation id="9159562891634783594">启用从打印预览页注册尚未注册的云端打印机。</translation>
 <translation id="9166510596677678112">向此人发送电子邮件</translation>
@@ -5487,7 +5490,6 @@
 <translation id="9170848237812810038">撤消(&amp;U)</translation>
 <translation id="9170884462774788842">您计算机上的其他程序添加了一个主题背景,该主题背景可能会改变 Chrome 的工作方式。</translation>
 <translation id="9177499212658576372">您目前已连接到<ph name="NETWORK_TYPE" />网络。</translation>
-<translation id="9177556055091995297">管理信用卡</translation>
 <translation id="917858577839511832">为 WebRTC 启用 DTLS 1.2 协商</translation>
 <translation id="917861274483335838">管理插件拦截…</translation>
 <translation id="9179348476548754105">密码管理器如何处理同步凭据的自动填充(仅针对交易式重新验证网页)。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index c12fc58..37db88ea 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -159,7 +159,6 @@
     您必須重新建立設定檔。<ph name="BR" />
     <ph name="BR" />
     請在下一個畫面中提供您的寶貴意見,協助我們修正這個問題。</translation>
-<translation id="1216954813581739968">允許桌面分享功能一併分享分頁。</translation>
 <translation id="121827551500866099">顯示所有下載...</translation>
 <translation id="122082903575839559">憑證簽章演算法</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 (使用 RSA 加密)</translation>
@@ -390,6 +389,7 @@
 <translation id="1545786162090505744">網址 (以 %s 取代查詢)</translation>
 <translation id="1546280085599573572">這個擴充功能已變更您點選 [首頁] 按鈕時所顯示的網頁。</translation>
 <translation id="1546795794523394272">歡迎使用 Chromebox 視訊會議解決方案!</translation>
+<translation id="1547572086206517271">請重新整理網頁</translation>
 <translation id="1547964879613821194">加拿大英文</translation>
 <translation id="1548132948283577726">永不儲存密碼的網站會顯示在這裡。</translation>
 <translation id="1549045574060481141">確認下載</translation>
@@ -618,6 +618,7 @@
 <translation id="1891196807951270080">允許將最近造訪過的網頁儲存在本機,以供離線使用 (必須啟用離線網頁)。</translation>
 <translation id="1891668193654680795">信任這個用於識別軟體製造商的憑證。</translation>
 <translation id="189210018541388520">開啟全螢幕</translation>
+<translation id="1892754076732315533">進入網頁觸發的全螢幕狀態或滑鼠指標鎖定狀態時,提供簡化的全新使用者體驗。</translation>
 <translation id="1893046049133338222">ARC:<ph name="ARC_PROCESS_NAME" /></translation>
 <translation id="1893406696975231168">雲端帳戶管理作業執行失敗</translation>
 <translation id="189358972401248634">其他語言</translation>
@@ -1322,6 +1323,7 @@
 <translation id="288042212351694283">存取您的 Universal 2nd Factor 裝置</translation>
 <translation id="2881966438216424900">最後存取日期;</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> 即將重新啟動並進行重設</translation>
+<translation id="2885278018040587402">https://support.google.com/chrome/answer/3060053?hl=<ph name="GRITLANGCODE_1" /></translation>
 <translation id="2885378588091291677">工作管理員</translation>
 <translation id="2887525882758501333">PDF 文件</translation>
 <translation id="2888807692577297075">找不到符合「<ph name="SEARCH_STRING" />」&lt;b&gt;&lt;/b&gt;的項目</translation>
@@ -1597,7 +1599,7 @@
 <translation id="3277710850168074473">播放媒體時的使用者手勢需求。停用這項設定將允許自動播放功能。</translation>
 <translation id="3280237271814976245">另存新檔(&amp;A)...</translation>
 <translation id="3280431534455935878">準備中</translation>
-<translation id="3284674070818187654">Google 可能會使用您的瀏覽紀錄,為您提供個人化的搜尋服務和其他各項 Google 服務。您可以前往 myaccount.google.com 控制這項行為。</translation>
+<translation id="3284674070818187654">Google 可能會使用您的瀏覽紀錄,為您提供個人化的搜尋服務和其他各項 Google 服務。您可以前往 myaccount.google.com 控管這項設定。</translation>
 <translation id="3285322247471302225">新增分頁(&amp;T)</translation>
 <translation id="3288047731229977326">在開發人員模式中執行擴充功能可能會損害您的電腦。如果您不是開發人員,最好在開發人員模式中停用這些擴充功能,以策安全。</translation>
 <translation id="3289566588497100676">簡易符號輸入</translation>
@@ -1751,6 +1753,7 @@
 <translation id="3479552764303398839">現在不要</translation>
 <translation id="3480892288821151001">靠左固定視窗</translation>
 <translation id="3481915276125965083">系統已封鎖此網頁的下列彈出式視窗:</translation>
+<translation id="3482214069979148937">按住 |<ph name="ACCELERATOR" />| 即可結束全螢幕模式</translation>
 <translation id="3484869148456018791">取得新憑證</translation>
 <translation id="3487007233252413104">匿名函式</translation>
 <translation id="348771913750618459">iframe 型登入流程</translation>
@@ -1845,7 +1848,6 @@
 <translation id="3593965109698325041">憑證名稱限制</translation>
 <translation id="3595596368722241419">電池已充滿</translation>
 <translation id="3600456501114769456">您的管理員已封鎖裝置的本機檔案存取權限。</translation>
-<translation id="3601395307734599350">這裡會顯示您的所有擴充功能</translation>
 <translation id="3603385196401704894">加拿大法文</translation>
 <translation id="3603622770190368340">取得網路憑證</translation>
 <translation id="3605780360466892872">小員工</translation>
@@ -2227,7 +2229,6 @@
 <translation id="4151403195736952345">使用全域預設設定 (偵測)</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 個分頁}other{# 個分頁}}</translation>
 <translation id="4154664944169082762">指紋</translation>
-<translation id="4157188838832721931">禁止在密碼頁面顯示密碼前提示使用者輸入作業系統密碼。</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
 <translation id="4158739975813877944">開啟播放清單</translation>
 <translation id="4159681666905192102">這是由 <ph name="CUSTODIAN_EMAIL" /> 和 <ph name="SECOND_CUSTODIAN_EMAIL" /> 所管理的兒童專用帳戶。</translation>
@@ -2271,7 +2272,6 @@
 <translation id="4218259925454408822">使用其他帳戶登入</translation>
 <translation id="4219614746733932747">啟用後,Blink 會利用縮放機制依裝置縮放比例來縮放內容。</translation>
 <translation id="4220865787605972627">允許螢幕色彩校正功能 (如果螢幕支援這項功能)。</translation>
-<translation id="4233506668751282421">允許桌面分享功能一併分享音訊</translation>
 <translation id="4235200303672858594">整個畫面</translation>
 <translation id="4235813040357936597">為<ph name="PROFILE_NAME" />新增帳戶</translation>
 <translation id="4240069395079660403"><ph name="PRODUCT_NAME" /> 介面無法設為這個語言</translation>
@@ -2279,7 +2279,6 @@
 <translation id="4242577469625748426">無法在裝置上安裝政策設定:<ph name="VALIDATION_ERROR" />。</translation>
 <translation id="4243835228168841140"><ph name="FULLSCREEN_ORIGIN" /> 要求停用滑鼠游標。</translation>
 <translation id="424546999567421758">偵測到磁碟使用量偏高情形</translation>
-<translation id="4247072926966606568">啟用這個標記後,桌面分享選擇器視窗會讓使用者選擇是否分享音訊。</translation>
 <translation id="424726838611654458">一律在 Adobe Reader 中開啟</translation>
 <translation id="4249248555939881673">正在等待網路連線...</translation>
 <translation id="4249373718504745892">系統已封鎖這個網頁存取您的攝影機和麥克風。</translation>
@@ -2352,7 +2351,6 @@
 <translation id="4358697938732213860">新增地址</translation>
 <translation id="4359408040881008151">您已安裝相依的擴充功能,因此必須一併安裝這個擴充功能。</translation>
 <translation id="4361190688154226069">顯示矩形觸控目標</translation>
-<translation id="4363372140743955595">密碼管理員重新驗證</translation>
 <translation id="4364444725319685468"><ph name="FILE_NAME" /> 下載完成</translation>
 <translation id="4364830672918311045">顯示通知</translation>
 <translation id="4365673000813822030">糟糕,同步處理已停止運作。</translation>
@@ -2409,6 +2407,7 @@
 <translation id="4449935293120761385">關於自動填入</translation>
 <translation id="4449996769074858870">這個分頁正在播放音訊。</translation>
 <translation id="4450974146388585462">診斷</translation>
+<translation id="4452426408005428395">不用了</translation>
 <translation id="4454939697743986778">系統管理員已安裝這個憑證。</translation>
 <translation id="445923051607553918">加入 Wi-Fi 網路</translation>
 <translation id="4462159676511157176">自訂名稱伺服器</translation>
@@ -2486,7 +2485,6 @@
 <translation id="4594109696316595112">只需啟用一次:輸入您的密碼即可在這部 <ph name="DEVICE_TYPE" /> 上啟用 Smart Lock。有了 Smart Lock,您不需輸入密碼即可使用手機解鎖這部裝置。如要變更或關閉這項功能,請前往 <ph name="DEVICE_TYPE" /> 的設定。</translation>
 <translation id="4595560905247879544">只有管理員 (<ph name="CUSTODIAN_NAME" />) 可以修改應用程式和擴充功能。</translation>
 <translation id="4601242977939794209">EMF 轉換工具</translation>
-<translation id="4601250583401186741">與控制器配對</translation>
 <translation id="4602466770786743961">一律允許 <ph name="HOST" /> 存取您的攝影機和麥克風</translation>
 <translation id="4605399136610325267">未連線至網際網路</translation>
 <translation id="4608500690299898628">尋找(&amp;F)...</translation>
@@ -2778,6 +2776,7 @@
 <translation id="5039804452771397117">允許</translation>
 <translation id="5045550434625856497">密碼不正確</translation>
 <translation id="5048179823246820836">北歐語系</translation>
+<translation id="5048294425697652159">允許使用 Quirks Client 校正顯示色彩。</translation>
 <translation id="5053604404986157245">無法使用隨機產生的 TPM 密碼。在執行 Powerwash 之後,這是正常情況。</translation>
 <translation id="5053803681436838483">新增運送地址...</translation>
 <translation id="5055309315264875868">顯示密碼管理員設定頁面的連結,讓您在線上管理同步處理的密碼。</translation>
@@ -2874,7 +2873,6 @@
 <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation>
 <translation id="5188893945248311098">在播放媒體時使用手勢需求</translation>
 <translation id="5189060859917252173">憑證「<ph name="CERTIFICATE_NAME" />」代表憑證授權單位。</translation>
-<translation id="5196117515621749903">略過快取重新載入</translation>
 <translation id="5196716972587102051">2</translation>
 <translation id="5197255632782567636">網際網路</translation>
 <translation id="5197680270886368025">同步處理完成。</translation>
@@ -2889,6 +2887,7 @@
 <translation id="521582610500777512">已捨棄相片</translation>
 <translation id="5218183485292899140">瑞士法文</translation>
 <translation id="5218766986344577658">連結去除混淆彈出式泡泡</translation>
+<translation id="5220992698394817380">允許選用輸入法編輯器選單</translation>
 <translation id="5222676887888702881">登出</translation>
 <translation id="5225324770654022472">顯示應用程式捷徑</translation>
 <translation id="5227536357203429560">新增私人網路...</translation>
@@ -2931,6 +2930,7 @@
 <translation id="5271247532544265821">切換簡體中文/繁體中文模式</translation>
 <translation id="5271549068863921519">儲存密碼</translation>
 <translation id="5273628206174272911">實驗性的橫向捲動紀錄導覽功能 (可透過橫向捲動啟動)。</translation>
+<translation id="5275194674756975076">好,重新整理網頁</translation>
 <translation id="5275795814002959418">有 <ph name="COUNT" /> 個 Cookie 來自這個網站</translation>
 <translation id="5275973617553375938">從 Google 雲端硬碟還原檔案</translation>
 <translation id="527605719918376753">關閉分頁音訊</translation>
@@ -3004,6 +3004,7 @@
 <translation id="5368720394188453070">您的手機已鎖定,必須解鎖才能繼續操作。</translation>
 <translation id="5369927996833026114">探索 Chrome 應用程式啟動器</translation>
 <translation id="5370819323174483825">重新載入(&amp;R)</translation>
+<translation id="5372066618989754822">允許在「語言設定」頁面中存取最新輸入法編輯器選單。</translation>
 <translation id="5372529912055771682">這個版本的作業系統不支援提供註冊模式。請確認您使用的是最新版本,然後再試一次。</translation>
 <translation id="5374359983950678924">變更圖片</translation>
 <translation id="5376169624176189338">按一下回上一頁,按住可查看紀錄</translation>
@@ -3189,6 +3190,7 @@
 <translation id="5626134646977739690">名稱:</translation>
 <translation id="5627086634964711283">這個擴充功能也會控管您點選 [首頁] 按鈕時所顯示的網頁。</translation>
 <translation id="5627259319513858869">啟用仍在開發中的實驗性 Canvas 功能。</translation>
+<translation id="5627618611556177958">WebUSB</translation>
 <translation id="5630163645818715367">瀏覽器頂層 Chrome 中的質感設計</translation>
 <translation id="5633060877636360447">這至少會將 <ph name="TOTAL_COUNT" /> 個項目從這個裝置上永久刪除,但不會清除其他裝置上已完成同步的項目。</translation>
 <translation id="5636996382092289526">如要使用 <ph name="NETWORK_ID" />,您必須先<ph name="LINK_START" />造訪網路的登入頁面<ph name="LINK_END" />,系統隨即會自動開啟登入頁面;如果沒有,您就無法使用這個網路。</translation>
@@ -3219,6 +3221,7 @@
 <translation id="5678862612529498267">醒目顯示鍵盤焦點所在物件</translation>
 <translation id="5678955352098267522">讀取您在 <ph name="WEBSITE_1" /> 上產生的資料</translation>
 <translation id="5680928275846978395">總覽模式的文字篩選功能</translation>
+<translation id="5683818630978268777">實驗性鍵盤鎖定使用者介面。</translation>
 <translation id="5684661240348539843">資產識別碼</translation>
 <translation id="569068482611873351">匯入...</translation>
 <translation id="56907980372820799">連結資料</translation>
@@ -3684,7 +3687,6 @@
 <translation id="6420676428473580225">加到桌面</translation>
 <translation id="6422329785618833949">相片已翻轉</translation>
 <translation id="642282551015776456">無法使用這個名稱做為檔案名稱或資料夾名稱</translation>
-<translation id="642322423610046417">您可以使用內容 (滑鼠右鍵) 選單移除不需要的擴充功能。</translation>
 <translation id="6423239382391657905">OpenVPN</translation>
 <translation id="6423731501149634044">將 Adobe Reader 設為預設的 PDF 檢視器?</translation>
 <translation id="6425092077175753609">質感</translation>
@@ -3754,6 +3756,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="6526654154229718724">實驗性的全螢幕體驗,使用者必須按住 Esc 鍵才能結束鍵盤鎖定模式。</translation>
 <translation id="6527303717912515753">分享</translation>
 <translation id="6528546217685656218">這個用戶端憑證沒有私密金鑰或私密金鑰無效。</translation>
 <translation id="653019979737152879">正在同步處理 <ph name="FILE_NAME" />...</translation>
@@ -3933,6 +3936,7 @@
 <translation id="6825883775269213504">俄文</translation>
 <translation id="6827236167376090743">這部影片會持續播放到地老天荒。</translation>
 <translation id="6828153365543658583">只允許下列使用者登入:</translation>
+<translation id="6828860976882136098">無法為所有使用者設定自動更新作業 (預先執行錯誤:<ph name="ERROR_NUMBER" />)</translation>
 <translation id="6829250331733125857">取得 <ph name="DEVICE_TYPE" /> 相關說明。</translation>
 <translation id="6829270497922309893">在貴機構中註冊</translation>
 <translation id="6830590476636787791">首次執行教學課程時的動畫轉場效果</translation>
@@ -3955,7 +3959,6 @@
 <translation id="6860427144121307915">在分頁中開啟</translation>
 <translation id="6862635236584086457">所有儲存在這個資料夾的檔案都會自動在線上備份</translation>
 <translation id="6865313869410766144">自動填入表單資料</translation>
-<translation id="6865319096921627602">針對 Android 裝置啟用整合媒體管道。</translation>
 <translation id="6867678160199975333">切換至<ph name="NEW_PROFILE_NAME" /></translation>
 <translation id="6869402422344886127">勾選的核取方塊</translation>
 <translation id="6870130893560916279">烏克蘭文鍵盤</translation>
@@ -4050,6 +4053,7 @@
 <translation id="7006017748900345484">WebRTC H.264 軟體視訊編碼器/解碼器</translation>
 <translation id="7006634003215061422">下邊界</translation>
 <translation id="7006844981395428048">$1 音訊</translation>
+<translation id="7008270479623533562">您必須重新整理網頁,才能執行這個擴充功能。如要在這個網站上自動執行這個擴充功能,請在擴充功能圖示上按一下滑鼠右鍵。</translation>
 <translation id="7009045250432250765">單鍵操作自動填入</translation>
 <translation id="7010160495478792664">在支援的裝置上啟用硬體加速視訊解碼。</translation>
 <translation id="7010400591230614821">主動釋放分頁記憶體策略</translation>
@@ -4214,7 +4218,6 @@
 <translation id="7256710573727326513">在分頁中開啟</translation>
 <translation id="7257173066616499747">Wi-Fi 網路</translation>
 <translation id="7257666756905341374">讀取您複製和貼上的資料</translation>
-<translation id="7260002739296185724">在 OS X 10.7 以上版本的作業系統中,使用 AVFoundation 執行視訊擷取和視訊裝置監控;如果不使用 AVFoundation,系統將採用 QTKit 執行這些作業。</translation>
 <translation id="7260504762447901703">撤銷存取權</translation>
 <translation id="7262004276116528033">這是由 <ph name="SAML_DOMAIN" /> 代管的登入服務。</translation>
 <translation id="7262221505565121">無沙箱防護的外掛程式存取例外</translation>
@@ -4252,7 +4255,6 @@
 <translation id="7314278895724341067">啟用 NTP 離線網頁</translation>
 <translation id="7317938878466090505"><ph name="PROFILE_NAME" /> (目前)</translation>
 <translation id="7321545336522791733">無法連上伺服器</translation>
-<translation id="7324841169865301118">允許使用者選擇要使用桌面分享功能的分頁。</translation>
 <translation id="7325437708553334317">高對比擴充功能</translation>
 <translation id="7326565110843845436">觸控板的三指點擊功能</translation>
 <translation id="73289266812733869">已取消選取</translation>
@@ -4999,7 +5001,6 @@
 <translation id="8426519927982004547">HTTPS/SSL</translation>
 <translation id="8427933533533814946">拍攝者:</translation>
 <translation id="8428213095426709021">設定</translation>
-<translation id="8432590265309978927">(高度實驗性) 支援在其他處理程序中轉譯跨網站 iframe。</translation>
 <translation id="8432745813735585631">美式 Colemak 鍵盤</translation>
 <translation id="8434177709403049435">編碼(&amp;E)</translation>
 <translation id="8434480141477525001">NaCl 偵錯通訊埠</translation>
@@ -5196,7 +5197,6 @@
 <translation id="8713979477561846077">啟用美式鍵盤的實體鍵盤自動更正功能,讓系統在您使用實體鍵盤輸入時提供建議字詞。</translation>
 <translation id="871476437400413057">Google 儲存的密碼</translation>
 <translation id="8714838604780058252">背景圖形</translation>
-<translation id="8716065142695381595">針對 Android 裝置啟用整合 (Android 和桌面) 媒體管道。</translation>
 <translation id="8722421161699219904">美式國際鍵盤</translation>
 <translation id="872451400847464257">編輯搜尋引擎</translation>
 <translation id="8724859055372736596">在資料夾中顯示(&amp;S)</translation>
@@ -5216,6 +5216,7 @@
 <translation id="8737685506611670901">開啟<ph name="PROTOCOL" />連結 (取代 <ph name="REPLACED_HANDLER_TITLE" />)</translation>
 <translation id="8737709691285775803">Shill</translation>
 <translation id="8741881454555234096">觸控功能的解析度比滑鼠低,觸控調整程序則可修正觸控手勢的定位,改善這個缺點。</translation>
+<translation id="8743712320294854924">在檔案櫃中顯示更進階的輸入選項。</translation>
 <translation id="874420130893181774">傳統拼音輸入法</translation>
 <translation id="8744525654891896746">選取這位受監管使用者的顯示圖片</translation>
 <translation id="8744641000906923997">羅馬字</translation>
@@ -5285,6 +5286,7 @@
 <translation id="8847988622838149491">USB</translation>
 <translation id="8848709220963126773">Shift 鍵模式切換</translation>
 <translation id="8852742364582744935">已新增下列應用程式和擴充功能:</translation>
+<translation id="8853611566624224021">允許從 Quirks Server 擷取 ICC 顯示檔案,用於校正顯示色彩。</translation>
 <translation id="885381502874625531">白俄羅斯文鍵盤</translation>
 <translation id="8856844195561710094">無法停止搜索藍牙裝置。</translation>
 <translation id="885701979325669005">儲存空間</translation>
@@ -5334,7 +5336,6 @@
 <translation id="8925458182817574960">設定(&amp;S)</translation>
 <translation id="8926389886865778422">不再詢問這個問題</translation>
 <translation id="8926518602592448999">停用開發人員模式擴充功能</translation>
-<translation id="8929454297483336498">使用 Mac OS X AVFoundation API 取代 QTKit</translation>
 <translation id="8931394284949551895">新裝置</translation>
 <translation id="8932730422557198035">使用 Android Midi API</translation>
 <translation id="8933960630081805351">在 Finder 中顯示(&amp;S)</translation>
@@ -5348,6 +5349,7 @@
 <translation id="894360074127026135">Netscape International Step-Up</translation>
 <translation id="8944779739948852228">偵測到印表機</translation>
 <translation id="8946359700442089734">尚未在這個 <ph name="IDS_SHORT_PRODUCT_NAME" /> 裝置上完整啟用偵錯功能。</translation>
+<translation id="8946784827990177241">啟用 WebUSB 支援功能。</translation>
 <translation id="89515141420106838">啟用專門尋找印表機驅動程式的「Chrome 線上應用程式商店擴充功能庫」應用程式。這個應用程式會搜尋 Chrome 線上應用程式商店,找出可讓您透過 USB 印表機進行列印 (使用特定 USB ID) 的擴充功能。</translation>
 <translation id="895347679606913382">啟動中...</translation>
 <translation id="8954952943849489823">移動失敗,發生未預期的錯誤:$1</translation>
@@ -5491,6 +5493,7 @@
 <translation id="9154194610265714752">已更新</translation>
 <translation id="9154418932169119429">這張圖片無法離線瀏覽。</translation>
 <translation id="91568222606626347">建立捷徑...</translation>
+<translation id="9157697743260533322">無法為所有使用者設定自動更新作業 (預先啟動錯誤:<ph name="ERROR_NUMBER" />)</translation>
 <translation id="9158715103698450907">糟糕!驗證過程中發生網路通訊問題,請檢查您的網路連線,然後再試一次。</translation>
 <translation id="9159562891634783594">允許透過預覽列印為尚未註冊的雲端印表機註冊。</translation>
 <translation id="9166510596677678112">傳送電子郵件給此人</translation>
@@ -5502,7 +5505,6 @@
 <translation id="9170848237812810038">取消(&amp;U)</translation>
 <translation id="9170884462774788842">電腦中其他程式所新增的主題可能會變更 Chrome 的運作方式。</translation>
 <translation id="9177499212658576372">您目前已連線至<ph name="NETWORK_TYPE" />網路。</translation>
-<translation id="9177556055091995297">管理信用卡</translation>
 <translation id="917858577839511832">DTLS 1.2 交涉加密 WebRTC</translation>
 <translation id="917861274483335838">管理外掛程式封鎖設定...</translation>
 <translation id="9179348476548754105">密碼管理員如何處理同步處理憑證的自動填入作業 (僅針對交易式重新驗證網頁)。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb
index 9d8abaa..d8e619c 100644
--- a/chrome/app/resources/google_chrome_strings_am.xtb
+++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - ማሳወቂያዎች</translation>
 <translation id="1104959162601287462">ስለ &amp;Chrome ስርዓተ ክወና</translation>
 <translation id="110877069173485804">ይሄ የእርስዎ Chrome ነው</translation>
-<translation id="1225016890511909183">Chrome መረጃዎን በድጋሚ መተየብ እንዳይኖርብዎ ደህንነቱ በተጠበቀ ሁኔታ ያስቀምጣል፣ ነገር ግን ለወደፊት ክፍያዎች አሁንም የካርድዎን የደህንነት ኮድ ማረጋገጥ አለብዎ።</translation>
 <translation id="123620459398936149">Chrome OS ውሂብዎን ሊያመሳስል አልቻለም። እባክዎ የማመሳሰያ ይለፍ ሐረግዎን ያዘምኑት።</translation>
 <translation id="127345590676626841">Chrome በራስ-ሰር ስለሚዘምን ሁልጊዜ ትኩሱ ስሪት ነው የሚኖርዎ። ይህ ውርድ ሲጠናቀቅ Chrome ዳግም ይጀምርና እርስዎም ስራዎን ይቀጥላሉ።</translation>
 <translation id="1302523850133262269">እባክዎ Chrome የቅርብ ጊዜዎቹን ዝማኔዎች እስኪጭን ድረስ ይጠብቁ።</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome ስርዓተ ክወናን መጠቀም ላይ እገዛን ያግኙ</translation>
 <translation id="1818142563254268765">Chrome እራሱን ወደ የቅርብ ጊዜው ስሪት ማዘመን አልቻለም፣ ስለዚህ አንዳንድ ግሩም አዲስ ባህሪያት እና የደህንነት ጥገናዎች እያመለጡዎት ነው። Chromeን ማዘመን አለብዎት።</translation>
+<translation id="1864458292167284385">የChrome የመተግበሪያ ማስጀመሪያው ይቋረጣል።</translation>
 <translation id="1877026089748256423">Chrome ጊዜው አልፎበታል</translation>
 <translation id="2077129598763517140">ሲገኝ የሃርድዌር ማጣደፍን ተጠቀም</translation>
 <translation id="2084710999043359739">ወደ Chrome አክል</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083"><ph name="ISSUER" /> የዚህን የድር ጣቢያ ምስክር ወረቀት እንደሰጠ Chrome አረጋግጧል። አገልጋዩ የምስክር ወረቀት ግልፅነት መረጃን አቅርቧል፣ ሆኖም ግን Chrome ማንኛውንም የምስክር ወረቀት ግልፅነት ምዝግብ ማስታወሻዎችን አያውቅም።</translation>
 <translation id="3889417619312448367">Google Chromeን አራግፍ</translation>
+<translation id="396182988103551265">መተግበሪያዎችዎን መድረሱን ለመቀጠል በChrome ዕልባቶች አሞሌ ውስጥ የ<ph name="APPS_ICON_IMAGE" /> አቋራጩን ይጠቀሙ።</translation>
 <translation id="4042449298237264661">Windows XP እና Windows Vista ከእንግዲህ ስለማይደገፉ ይህ ኮምፒውተር ከአሁን በኋላ የGoogle Chrome ዝማኔዎችን አይቀበልም።</translation>
 <translation id="4050175100176540509">አስፈላጊ የደህንነት ማሻሻያዎች እና አዲስ ባህሪያት በቅርብ ጊዜው ስሪቱ ላይ ይገኛሉ።</translation>
 <translation id="4053720452172726777">Google Chromeን ያብጁ እና ይቆጣጠሩ</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome ስርዓተ ክወና</translation>
 <translation id="4458285410772214805">ይሄ ለውጥ እንዲተገበር እባክዎ ይውጡ እና እንደገና ይግቡ።</translation>
 <translation id="4480040274068703980">Chrome OS እየተገባ ሳለ በተፈጠረ አንድ ስህተት ምክንያት ውሂብዎን ማመሳሰል አልቻለም።</translation>
-<translation id="4513711165509885787">የክፍያ መጠየቂያ ዝርዝሮችዎ በChrome ውስጥ ተቀምጠዋል።</translation>
 <translation id="4561051373932531560">Google Chrome ድር ላይ ያለ ስልክ ቁጥር ጠቅ እንዲያደርጉት እና በSkype እንዲደውሉለት ያስችልዎታል!</translation>
 <translation id="4567424176335768812">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ገብተዋል። አሁን የእርስዎን ዕልባቶች፣ ታሪክ እና ሌሎች ቅንብሮች በመለያ በገቡ ሁሉም መሣሪያዎችዎ ላይ መድረስ ይችላሉ።</translation>
 <translation id="4631713731678262610">በChrome ምናሌ ውስጥ ደብቅ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb
index bdf5bed..575cfce 100644
--- a/chrome/app/resources/google_chrome_strings_ar.xtb
+++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">‏Chrome - الإشعارات</translation>
 <translation id="1104959162601287462">‏حول &amp;نظام التشغيل Google Chrome</translation>
 <translation id="110877069173485804">‏هذا Chrome الخاص بك</translation>
-<translation id="1225016890511909183">‏سيخزن Chrome معلوماتك في مكان آمن ولذلك لن تحتاج إلى كتابتها مرة أخرى، ولكن سيظل يلزمك التحقق من رمز الأمان في بطاقتك لإجراء عمليات دفع مستقبلية.</translation>
 <translation id="123620459398936149">‏تعذر على نظام التشغيل Chrome مزامنة البيانات. الرجاء تحديث عبارة مرور المزامنة.</translation>
 <translation id="127345590676626841">‏يجري تحديث Chrome تلقائيًا بحيث يكون لديك أحدث إصدار. عند اكتمال هذا التحميل، ستتم إعادة تشغيل Chrome وستبدأ العمل.</translation>
 <translation id="1302523850133262269">‏الرجاء الانتظار لحين تثبيت Chrome لآخر تحديثات النظام.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">‏الحصول على مساعدة بشأن استخدام نظام التشغيل Chrome</translation>
 <translation id="1818142563254268765">‏تعذر تحديث Chrome إلى أحدث إصدار، وبالتالي تفوتك ميزات جديدة رائعة وإصلاحات للأمان. يلزمك تحديث Chrome.</translation>
+<translation id="1864458292167284385">‏إيقاف Launcher تطبيقات Chrome.</translation>
 <translation id="1877026089748256423">‏إصدار Chrome قديم</translation>
 <translation id="2077129598763517140">استخدام تسريع الأجهزة عند توفره</translation>
 <translation id="2084710999043359739">‏إضافة إلى Chrome</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc‎.‎</translation>
 <translation id="3881912906674381083">‏تحقق Chrome من أن <ph name="ISSUER" /> أصدر شهادة موقع الويب هذا. وقدم الخادم معلومات شفافية الشهادة، ولكن لم يتعرّف Chrome على أي سجلات لشفافية الشهادة.</translation>
 <translation id="3889417619312448367">‏إزالة Google Chrome</translation>
+<translation id="396182988103551265">‏استخدام الاختصار <ph name="APPS_ICON_IMAGE" /> في شريط الإشارات المرجعية لـ Chrome لمواصلة الدخول إلى تطبيقاتك.</translation>
 <translation id="4042449298237264661">‏لن يستلم هذا الكمبيوتر تحديثات لـ Google Chrome لأن Windows XP وWindows Vista أصبحا غير مدعومين.</translation>
 <translation id="4050175100176540509">تحسينات الأمان المهمة والميزات الجديدة متاحة في أحدث إصدار.</translation>
 <translation id="4053720452172726777">‏تخصيص Google Chrome والتحكم فيه</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">‏نظام تشغيل Google Chrome</translation>
 <translation id="4458285410772214805">الرجاء الخروج ثم تسجيل الدخول حتى يسري هذا التغيير.</translation>
 <translation id="4480040274068703980">‏تعذر على نظام التشغيل Chrome مزامنة البيانات نظرًا لوجود خطأ في تسجيل الدخول.</translation>
-<translation id="4513711165509885787">‏تم حفظ تفاصيل الفوترة في Chrome.</translation>
 <translation id="4561051373932531560">‏يتيح لك Google Chrome النقر على رقم هاتف على الويب والاتصال به باستخدام Skype!</translation>
 <translation id="4567424176335768812">لقد سجلت دخولك باعتبارك <ph name="USER_EMAIL_ADDRESS" />. ويُمكنك الآن الاستمتاع بالدخول إلى الإشارات المرجعية، والسجلّ، والإعدادات الأخرى على جميع الأجهزة التي تسجّل الدخول إليها.</translation>
 <translation id="4631713731678262610">‏الإخفاء في قائمة Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb
index 6380e1bf..00dab8c 100644
--- a/chrome/app/resources/google_chrome_strings_bg.xtb
+++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – Известия</translation>
 <translation id="1104959162601287462">Всичко за &amp;Chrome OS</translation>
 <translation id="110877069173485804">Това е вашият Chrome</translation>
-<translation id="1225016890511909183">Chrome ще съхранява надеждно информацията ви, така че да не се налага да я въвеждате отново, но за бъдещи плащания пак ще трябва да потвърдите кода за сигурност на картата си.</translation>
 <translation id="123620459398936149">Chrome OS не можа да синхронизира данните ви. Моля, актуализирайте пропуска си за синхронизиране.</translation>
 <translation id="127345590676626841">Chrome се актуализира автоматично, така че винаги да имате най-новата версия. Когато това изтегляне завърши, браузърът ще се рестартира и ще можете да започнете работа.</translation>
 <translation id="1302523850133262269">Моля, изчакайте, докато Chrome инсталира най-новите системни актуализации.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Получаване на помощ за използването на Chrome OS</translation>
 <translation id="1818142563254268765">Chrome не можа да се актуализира до последната версия, така че пропускате невероятни нови функции и поправки за подобряване на сигурността. Налага се да актуализирате браузъра.</translation>
+<translation id="1864458292167284385">Стартовият панел за приложения в Chrome ще бъде оттеглен.</translation>
 <translation id="1877026089748256423">Chrome не е актуален</translation>
 <translation id="2077129598763517140">Да се използва хардуерно ускорение, когато е налице</translation>
 <translation id="2084710999043359739">Добавяне</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome потвърди, че сертификатът на този уебсайт е издаден от <ph name="ISSUER" />. Сървърът предостави информация за прозрачност на сертификата, но Chrome не разпозна нито един от регистрационните файлове за прозрачност на сертификата.</translation>
 <translation id="3889417619312448367">Деинсталиране на Google Chrome</translation>
+<translation id="396182988103551265">Използвайте прекия път <ph name="APPS_ICON_IMAGE" /> в лентата на отметките в Chrome, за да продължите да осъществявате достъп до приложенията си.</translation>
 <translation id="4042449298237264661">От сега нататък този компютър няма да получава актуализации на Google Chrome, тъй като Windows XP и Windows Vista вече не се поддържат.</translation>
 <translation id="4050175100176540509">В последната версия са налице важни подобрения в сигурността и нови функции.</translation>
 <translation id="4053720452172726777">Персонализиране и контролиране на Google Chrome</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Моля, излезте от профила си и влезте отново, за да влезе в сила тази промяна.</translation>
 <translation id="4480040274068703980">Chrome OS не можа да синхронизира данните ви поради грешка при влизане в профила.</translation>
-<translation id="4513711165509885787">Данните ви за фактуриране са запазени в Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome ви позволява да кликнете върху телефонен номер в мрежата и да се обадите до него със Skype!</translation>
 <translation id="4567424176335768812">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />. Сега имате достъп до отметките, историята и другите си настройки на всички устройства, на които сте влезли.</translation>
 <translation id="4631713731678262610">Скриване в менюто на Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb
index 1ceef79..769efcb 100644
--- a/chrome/app/resources/google_chrome_strings_bn.xtb
+++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - বিজ্ঞপ্তিগুলি</translation>
 <translation id="1104959162601287462">&amp;Chrome OS সম্বন্ধে</translation>
 <translation id="110877069173485804">এটি হল আপনার Chrome</translation>
-<translation id="1225016890511909183">Chrome আপনার তথ্য নিরাপদে সঞ্চয় করে নেবে তাই আপনার আর টাইপ করা প্রয়োজন হবে না, কিন্তু ভবিষ্যতের অর্থপ্রদানের জন্য আপনাকে এখনো আপনার কার্ডের নিরাপত্তা কোড যাচাইকরণের প্রয়োজন হবে৷</translation>
 <translation id="123620459398936149">Chrome OS আপনার ডেটা সিঙ্ক করতে পারেনি৷ দয়া করে আপনার সিঙ্ক পাসফ্রেজ আপডেট করুন৷</translation>
 <translation id="127345590676626841">Chrome স্বয়ংক্রিয়ভাবে আপডেট হয় তাই আপনার কাছে সর্বদা নবীনতম সংস্করণটি থাকে৷ এই ডাউনলোডটি সম্পূর্ণ হলে, Chrome পুনরায় চালু হবে এবং আপনি আবার আগের মতো Chrome ব্যবহার করতে পারবেন৷</translation>
 <translation id="1302523850133262269">Chrome যখন সাম্প্রতিক সিস্টেম আপডেটগুলিকে ইনস্টল করে তখন দয়া করে অপেক্ষা করুন৷</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS ব্যবহার করে সাহায্য নিন</translation>
 <translation id="1818142563254268765">Chrome নিজে থেকেই এর সর্বশেষ সংস্করণে আপডেট হতে পারেনি, সেহেতু আপনি কিছু অসাধারণ নতুন বৈশিষ্ট্য ও নিরাপত্তা সমাধান উপভোগ করতে পারছেন না। আপনাকে Chrome আপডেট করতে হবে।</translation>
+<translation id="1864458292167284385">Chrome অ্যাপ্লিকেশান লঞ্চার চলে যাচ্ছে।</translation>
 <translation id="1877026089748256423">Chrome পুরানো হয়ে গেছে</translation>
 <translation id="2077129598763517140">যখনই উপলব্ধ তখন হার্ডওয়্যার অ্যাক্সিলারেশন ব্যবহার করুন</translation>
 <translation id="2084710999043359739">Chrome এ জুড়ুন</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome যাচাই করেছে যে <ph name="ISSUER" /> এই ওয়েবসাইটের শংসাপত্র জারি করেছে। সার্ভারটি শংসাপত্র স্বচ্ছতা তথ্য সরবরাহ করেছে, কিন্তু Chrome শংসাপত্র স্বচ্ছতা লগের কোনোটিই শনাক্ত করতে পারছে না।</translation>
 <translation id="3889417619312448367">Google Chrome আনইনস্টল করুন</translation>
+<translation id="396182988103551265">আপনার অ্যাপ্লিকেশানগুলি অ্যাক্সেস করা চালিয়ে যেতে Chrome বুকমার্কস দণ্ডের <ph name="APPS_ICON_IMAGE" /> শর্টকাট ব্যবহার করুন।</translation>
 <translation id="4042449298237264661">Windows XP ও Windows Vista আর সমর্থিত না হওয়ায় এই কম্পিউটারটি আর Google Chrome আপডেট গ্রহণ করবে না।</translation>
 <translation id="4050175100176540509">গুরুত্বপূর্ণ নিরাপত্তা উন্নতি এবং নতুন বৈশিষ্ট্যগুলি সর্বশেষ সংস্করণে উপলব্ধ।</translation>
 <translation id="4053720452172726777">Google Chrome কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">দয়া করে পরিবর্তনটি সম্ভব করতে সাইন আউট এবং পুনরায় সাইন ইন করুন৷</translation>
 <translation id="4480040274068703980">সাইন ইনে ত্রুটির কারণে Chrome OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation>
-<translation id="4513711165509885787">আপনার বিলের বিশদ বিবরণ Chrome এ সংরক্ষিত হয়েছে৷</translation>
 <translation id="4561051373932531560">Google Chrome আপনাকে ওয়েবে কোনো ফোন নম্বরে ক্লিক করতে এবং Skype-এর মাধ্যমে সেটিতে কল করতে দেয়!</translation>
 <translation id="4567424176335768812">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসাবে সাইন ইন করেছেন৷ এখন আপনি আপনার সমস্ত সাইন ইন করা ডিভাইসে আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস অ্যাক্সেস করতে পারেন৷</translation>
 <translation id="4631713731678262610">Chromium মেনুর মধ্যে লুকান</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb
index 73a8d38..46d3c03 100644
--- a/chrome/app/resources/google_chrome_strings_ca.xtb
+++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome: notificacions</translation>
 <translation id="1104959162601287462">Quant a &amp;SO Chrome</translation>
 <translation id="110877069173485804">Aquest és el vostre Chrome</translation>
-<translation id="1225016890511909183">Chrome emmagatzemarà de manera segura la vostra informació perquè no hàgiu de tornar-la a escriure, però continuareu havent de verificar el codi de seguretat de la targeta per a pagaments futurs.</translation>
 <translation id="123620459398936149">Chrome OS no ha pogut sincronitzar les vostres dades. Actualitzeu la contrasenya de sincronització.</translation>
 <translation id="127345590676626841">Chrome s'actualitza automàticament perquè en tingueu sempre la versió més recent. Quan es completi aquesta baixada, Chrome es reiniciarà i ja el podreu utilitzar.</translation>
 <translation id="1302523850133262269">Espereu mentre Chrome instal·la les actualitzacions més recents del sistema.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obtén ajuda per a l'ús de Chrome OS</translation>
 <translation id="1818142563254268765">No s'ha pogut fer l'actualització de Chrome a la versió més recent, de manera que esteu perdent funcions noves i correccions de seguretat magnífiques. Cal que actualitzeu Chrome.</translation>
+<translation id="1864458292167284385">El menú d'aplicacions de Chrome deixarà de funcionar.</translation>
 <translation id="1877026089748256423">Chrome no està actualitzat</translation>
 <translation id="2077129598763517140">Utilitza l'acceleració per maquinari quan estigui disponible</translation>
 <translation id="2084710999043359739">Afegeix a Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ha verificat que <ph name="ISSUER" /> ha emès el certificat d'aquest lloc web. El servidor ha proporcionat informació sobre Transparència de certificats, però Chrome no n'ha reconegut cap registre.</translation>
 <translation id="3889417619312448367">Desinstal·la Google Chrome</translation>
+<translation id="396182988103551265">Feu servir la drecera <ph name="APPS_ICON_IMAGE" /> de la barra d'adreces d'interès de Chrome per continuar accedint a les vostres aplicacions.</translation>
 <translation id="4042449298237264661">Aquest ordinador ja no rebrà més actualitzacions de Google Chrome perquè Windows XP i Windows Vista ja no són compatibles.</translation>
 <translation id="4050175100176540509">La versió més recent incorpora millores de seguretat i funcions noves importants.</translation>
 <translation id="4053720452172726777">Personalitza i controla Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">SO de Google Chrome</translation>
 <translation id="4458285410772214805">Tanqueu la sessió i torneu a iniciar-la perquè aquest canvi es faci efectiu.</translation>
 <translation id="4480040274068703980">Chrome OS no ha pogut sincronitzar les vostres dades a causa d'un error en iniciar la sessió.</translation>
-<translation id="4513711165509885787">Els detalls de facturació s'han desat a Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome us permet fer clic en un número de telèfon al web i trucar-hi amb Skype!</translation>
 <translation id="4567424176335768812">Heu iniciat la sessió com a <ph name="USER_EMAIL_ADDRESS" />. Ja podeu accedir a les vostres adreces d'interès, al vostre historial i a altres paràmetres en tots els dispositius en què hàgiu iniciat la sessió.</translation>
 <translation id="4631713731678262610">Amaga al menú de Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb
index 9ad4d681..bcfc142 100644
--- a/chrome/app/resources/google_chrome_strings_cs.xtb
+++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome – oznámení</translation>
 <translation id="1104959162601287462">O operačním systému &amp;Chrome</translation>
 <translation id="110877069173485804">Toto je váš Chrome</translation>
-<translation id="1225016890511909183">Prohlížeč Chrome vaše informace bezpečně uloží, abyste je nemuseli zadávat znovu. I přesto však bude třeba ověřit bezpečnostní kód karty pro budoucí platby.</translation>
 <translation id="123620459398936149">Chrome OS vaše data nemohl synchronizovat. Aktualizujte prosím heslovou frázi pro synchronizaci.</translation>
 <translation id="127345590676626841">Chrome se automaticky aktualizuje, abyste měli vždy nejaktuálnější verzi. Až toto stahování skončí, Chrome se restartuje a budete moci pokračovat.</translation>
 <translation id="1302523850133262269">Počkejte prosím, než Chrome nainstaluje nejnovější aktualizace systému.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Pomoc s používáním systému Chrome OS</translation>
 <translation id="1818142563254268765">Prohlížeč Chrome se nemohl aktualizovat na nejnovější verzi. Nebudete mít proto k dispozici skvělé nové funkce a opravy zabezpečení. Chrome je potřeba aktualizovat.</translation>
+<translation id="1864458292167284385">Spouštěč aplikací Chrome již nebude podporován</translation>
 <translation id="1877026089748256423">Chrome je zastaralý</translation>
 <translation id="2077129598763517140">V případě dostupnosti použít hardwarovou akceleraci</translation>
 <translation id="2084710999043359739">Přidat do prohlížeče Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ověřil, že certifikát tohoto webu byl vydán vydavatelem <ph name="ISSUER" />. Server poskytl údaje Certificate Transparency, Chrome však žádný z uvedených protokolů Certificate Transparency neuznává.</translation>
 <translation id="3889417619312448367">Odinstalovat Google Chrome</translation>
+<translation id="396182988103551265">K aplikacím přistupujte pomocí zástupce <ph name="APPS_ICON_IMAGE" /> na liště záložek prohlížeče Chrome.</translation>
 <translation id="4042449298237264661">Google Chrome se v tomto počítači již nebude aktualizovat, protože systémy Windows XP a Windows Vista již nejsou podporovány.</translation>
 <translation id="4050175100176540509">V nejnovější verzi jsou k dispozici důležitá vylepšení zabezpečení a nové funkce.</translation>
 <translation id="4053720452172726777">Přizpůsobit a ovládat Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Chcete-li, aby se změny projevily, odhlaste se a znovu se přihlaste.</translation>
 <translation id="4480040274068703980">Chrome OS vaše data nemohl synchronizovat z důvodu chyby při přihlášení.</translation>
-<translation id="4513711165509885787">Fakturační údaje byly uloženy do prohlížeče Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome umožňuje kliknout na telefonní číslo na webu a volat na něj prostřednictvím aplikace Skype.</translation>
 <translation id="4567424176335768812">Jste přihlášeni pomocí účtu <ph name="USER_EMAIL_ADDRESS" />. Nyní můžete přistupovat ke všem svým záložkám, historii a dalším nastavením ve všech přihlášených zařízeních.</translation>
 <translation id="4631713731678262610">Skrýt v nabídce Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb
index aba309ef..168f6600 100644
--- a/chrome/app/resources/google_chrome_strings_da.xtb
+++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – Underretninger</translation>
 <translation id="1104959162601287462">Om &amp;Chrome OS</translation>
 <translation id="110877069173485804">Dette er din Chrome-browser</translation>
-<translation id="1225016890511909183">Chrome vil lagre dine oplysninger på sikker vis, så du ikke behøver at angive dem igen, men du skal stadig bekræfte dit korts sikkerhedskode ved fremtidige betalinger.</translation>
 <translation id="123620459398936149">Chrome OS kunne ikke synkronisere dine data. Opdater din adgangssætning til synkronisering.</translation>
 <translation id="127345590676626841">Chrome opdateres automatisk, så du altid har den nyeste version. Når downloaden er fuldført, genstartes Chrome, og så er du godt på vej.</translation>
 <translation id="1302523850133262269">Vent, mens Chrome installerer de nyeste systemopdateringer.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Få hjælp til at bruge Chrome OS</translation>
 <translation id="1818142563254268765">Chrome kunne ikke opdatere sig selv til den nyeste version, så du går glip af nye fantastiske funktioner og sikkerhedsrettelser. Du skal opdatere Chrome.</translation>
+<translation id="1864458292167284385">Chrome-applisten forsvinder.</translation>
 <translation id="1877026089748256423">Chrome er forældet</translation>
 <translation id="2077129598763517140">Brug hardwareacceleration, når det er muligt</translation>
 <translation id="2084710999043359739">Føj til Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome bekræftede, at <ph name="ISSUER" /> har udstedt certifikatet for dette website. Serveren leverede Certificate Transparency-oplysninger, men Chrome genkender ikke nogen af Certificate Transparency-logfilerne.</translation>
 <translation id="3889417619312448367">Afinstaller Google Chrome</translation>
+<translation id="396182988103551265">Fortsæt med at bruge dine apps via genvejen for <ph name="APPS_ICON_IMAGE" /> på bogmærkelinjen i Chrome.</translation>
 <translation id="4042449298237264661">Denne computer vil ikke længere modtage Google Chrome-opdateringer, fordi Windows XP og Windows Vista ikke længere understøttes.</translation>
 <translation id="4050175100176540509">Vigtige sikkerhedsforbedringer og nye funktioner er tilgængelige i den seneste version.</translation>
 <translation id="4053720452172726777">Tilpas og kontrollér Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Du skal logge ud og logge ind igen, for at denne ændring kan træde i kraft.</translation>
 <translation id="4480040274068703980">Chrome OS kunne ikke synkronisere dine data på grund af en fejl under login.</translation>
-<translation id="4513711165509885787">Dine faktureringsoplysninger er nu gemt i Chrome.</translation>
 <translation id="4561051373932531560">Med Google Chrome kan du klikke på et telefonnummer på nettet og ringe op til det via Skype!</translation>
 <translation id="4567424176335768812">Du er logget ind som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du få adgang til dine bogmærker, din historik og andre indstillinger på alle de enheder, hvor du er logget ind.</translation>
 <translation id="4631713731678262610">Skjul i Chrome-menuen</translation>
diff --git a/chrome/app/resources/google_chrome_strings_de.xtb b/chrome/app/resources/google_chrome_strings_de.xtb
index 67b162e76..5b893dc 100644
--- a/chrome/app/resources/google_chrome_strings_de.xtb
+++ b/chrome/app/resources/google_chrome_strings_de.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome-Benachrichtigungen</translation>
 <translation id="1104959162601287462">Über &amp;Chrome OS</translation>
 <translation id="110877069173485804">Dies ist Ihr persönlicher Chrome-Browser</translation>
-<translation id="1225016890511909183">Ihre Informationen werden von Chrome sicher gespeichert. Dadurch brauchen Sie sie nicht erneut einzugeben. Sie müssen aber bei zukünftigen Zahlungen immer noch den Sicherheitscode Ihrer Karte bestätigen.</translation>
 <translation id="123620459398936149">Chrome OS konnte Ihre Daten nicht synchronisieren. Bitte aktualisieren Sie Ihre Passphrase für die Synchronisierung.</translation>
 <translation id="127345590676626841">Chrome wird automatisch aktualisiert, sodass Sie immer über die neueste Version verfügen. Nach Abschluss des Downloads wird Chrome neu gestartet und Sie können fortfahren.</translation>
 <translation id="1302523850133262269">Bitte warten Sie, bis die aktuellen Systemupdates von Chrome installiert wurden.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Hilfe für Chrome OS aufrufen</translation>
 <translation id="1818142563254268765">Chrome konnte nicht automatisch auf die neueste Version aktualisiert werden. In Ihrer Version fehlen einige neue Funktionen und Sicherheitsmerkmale. Aktualisieren Sie Chrome manuell.</translation>
+<translation id="1864458292167284385">Der Chrome App Launcher wird eingestellt.</translation>
 <translation id="1877026089748256423">Chrome ist veraltet.</translation>
 <translation id="2077129598763517140">Hardwarebeschleunigung verwenden, falls verfügbar</translation>
 <translation id="2084710999043359739">Zu Chrome hinzufügen</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome hat verifiziert, dass <ph name="ISSUER" /> das Zertifikat dieser Website ausgestellt hat. Zwar hat der Server Informationen zur Zertifikatstransparenz bereitgestellt, Chrome hat die Zertifikatstransparenzprotokolle jedoch nicht erkannt.</translation>
 <translation id="3889417619312448367">Google Chrome deinstallieren</translation>
+<translation id="396182988103551265">Verwenden Sie für den weiteren Zugriff auf Ihre Apps die Verknüpfung <ph name="APPS_ICON_IMAGE" /> in der Chrome-Lesezeichenleiste.</translation>
 <translation id="4042449298237264661">Dieser Computer erhält keine Google Chrome-Updates mehr, da Windows XP und Windows Vista nicht mehr unterstützt werden.</translation>
 <translation id="4050175100176540509">Wichtige Sicherheitsverbesserungen und neue Funktionen sind in der aktuellen Version verfügbar.</translation>
 <translation id="4053720452172726777">Google Chrome anpassen und einstellen</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Melden Sie sich ab und wieder an, damit diese Änderung wirksam wird.</translation>
 <translation id="4480040274068703980">Chrome OS konnte Ihre Daten aufgrund eines Fehlers bei der Anmeldung nicht synchronisieren.</translation>
-<translation id="4513711165509885787">Ihre Zahlungsangaben wurden in Chrome gespeichert.</translation>
 <translation id="4561051373932531560">In Google Chrome können Sie auf eine Telefonnummer im Web klicken und diese mit Skype anrufen.</translation>
 <translation id="4567424176335768812">Sie sind als <ph name="USER_EMAIL_ADDRESS" /> angemeldet. Auf allen Geräten, auf denen Sie angemeldet sind, sind nun Ihre Lesezeichen, Ihr Verlauf und andere Einstellungen verfügbar.</translation>
 <translation id="4631713731678262610">Im Chrome-Menü ausblenden</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb
index d5795bb..bd3a4f07 100644
--- a/chrome/app/resources/google_chrome_strings_el.xtb
+++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Ειδοποιήσεις</translation>
 <translation id="1104959162601287462">Σχ&amp;ετικά με το Chrome OS</translation>
 <translation id="110877069173485804">Ορίστε το δικό σας Chrome</translation>
-<translation id="1225016890511909183">Το Chrome θα αποθηκεύει με ασφάλεια τα στοιχεία σας έτσι ώστε να μη χρειάζεται να τα πληκτρολογείτε ξανά, αλλά θα πρέπει να επαληθεύετε τον κωδικό ασφαλείας της κάρτας σας για μελλοντικές πληρωμές.</translation>
 <translation id="123620459398936149">Το Chrome OS δεν μπόρεσε να συγχρονίσει τα δεδομένα σας. Ενημερώστε τη φράση πρόσβασης συγχρονισμού.</translation>
 <translation id="127345590676626841">Το Chrome ενημερώνεται αυτόματα, προκειμένου να έχετε πάντα στη διάθεσή σας τη νεότερη έκδοση. Όταν ολοκληρωθεί αυτή η λήψη, θα γίνει επανεκκίνηση του Chrome και θα είστε έτοιμοι.</translation>
 <translation id="1302523850133262269">Περιμένετε μέχρι να γίνει εγκατάσταση των πιο πρόσφατων ενημερώσεων συστήματος από το Chrome.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Λήψη βοήθειας σχετικά με τη χρήση του Chrome OS</translation>
 <translation id="1818142563254268765">Δεν ήταν δυνατή η αυτόματη ενημέρωση του Chrome στην πιο πρόσφατη έκδοση, επομένως δεν θα μπορείτε να επωφεληθείτε από τις νέες δυνατότητες και τις επιδιορθώσεις ασφαλείας. Θα πρέπει να ενημερώσετε το Chrome.</translation>
+<translation id="1864458292167284385">Η Εφαρμογή εκκίνησης του Chrome πρόκειται να αποσυρθεί.</translation>
 <translation id="1877026089748256423">Το Chrome δεν είναι ενημερωμένο</translation>
 <translation id="2077129598763517140">Χρήση της επιτάχυνσης υλικού όταν είναι διαθέσιμη</translation>
 <translation id="2084710999043359739">Προσθήκη στο Chrome</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Το Chrome επαλήθευσε ότι το πιστοποιητικό του ιστότοπου εκδόθηκε από το <ph name="ISSUER" />. Παρασχέθηκαν πληροφορίες διαφάνειας πιστοποίησης από το διακομιστή αλλά το Chrome δεν αναγνώρισε κανένα από τα αρχεία καταγραφής της διαφάνειας πιστοποίησης.</translation>
 <translation id="3889417619312448367">Κατάργηση εγκατάστασης Google Chrome</translation>
+<translation id="396182988103551265">Χρησιμοποιήστε τη συντόμευση <ph name="APPS_ICON_IMAGE" /> στη γραμμή σελιδοδεικτών του Chrome, για να εξακολουθήσετε να έχετε πρόσβαση στις εφαρμογές σας.</translation>
 <translation id="4042449298237264661">Αυτός ο υπολογιστής δεν θα λαμβάνει πια ενημερώσεις Google Chrome, επειδή δεν υποστηρίζονται πλέον τα Windows XP και Windows Vista.</translation>
 <translation id="4050175100176540509">Στην πιο πρόσφατη έκδοση διατίθενται σημαντικές βελτιώσεις ασφάλειας και νέες λειτουργίες.</translation>
 <translation id="4053720452172726777">Προσαρμογή και έλεγχος του Google Chrome</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Λειτουργικό σύστημα Google Chrome</translation>
 <translation id="4458285410772214805">Για να εφαρμοστεί αυτή η αλλαγή, αποσυνδεθείτε και συνδεθείτε ξανά.</translation>
 <translation id="4480040274068703980">Το Chrome OS δεν μπόρεσε να συγχρονίσει τα δεδομένα σας λόγω σφάλματος κατά τη σύνδεση.</translation>
-<translation id="4513711165509885787">Τα στοιχεία χρέωσής σας έχουν αποθηκευτεί στο Chrome.</translation>
 <translation id="4561051373932531560">Το Google Chrome σάς επιτρέπει να κάνετε κλικ σε έναν τηλεφωνικό αριθμό στον ιστό και να τον καλέσετε με το Skype!</translation>
 <translation id="4567424176335768812">Έχετε συνδεθεί ως <ph name="USER_EMAIL_ADDRESS" />. Τώρα μπορείτε να αποκτήσετε πρόσβαση στους σελιδοδείκτες, το ιστορικό και σε άλλες ρυθμίσεις από όλες τις συσκευές στις οποίες έχετε συνδεθεί.</translation>
 <translation id="4631713731678262610">Απόκρυψη από το μενού του Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb
index ca7e157..e7192e8 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - Notifications</translation>
 <translation id="1104959162601287462">About &amp;Chrome OS</translation>
 <translation id="110877069173485804">This is your Chrome</translation>
-<translation id="1225016890511909183">Chrome will securely store your information so you don't need to type it in again, but you will still need to verify your card's security code for future payments.</translation>
 <translation id="123620459398936149">Chrome OS could not sync your data. Please update your Sync passphrase.</translation>
 <translation id="127345590676626841">Chrome updates automatically so that you always have the freshest version. When this download completes, Chrome will restart and you'll be on your way.</translation>
 <translation id="1302523850133262269">Please wait while Chrome installs the latest system updates.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Get help with using Chrome OS</translation>
 <translation id="1818142563254268765">Chrome could not update itself to the latest version, so you are missing out on amazing new features and security fixes. You need to update Chrome.</translation>
+<translation id="1864458292167284385">The Chrome App Launcher is going away.</translation>
 <translation id="1877026089748256423">Chrome is out of date</translation>
 <translation id="2077129598763517140">Use hardware acceleration when available</translation>
 <translation id="2084710999043359739">Add to Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome verified that <ph name="ISSUER" /> issued this website's certificate. The server supplied Certificate Transparency information, but Chrome did not recognise any of the Certificate Transparency logs.</translation>
 <translation id="3889417619312448367">Uninstall Google Chrome</translation>
+<translation id="396182988103551265">Use the <ph name="APPS_ICON_IMAGE" /> shortcut in the Chrome bookmarks bar to continue accessing your apps.</translation>
 <translation id="4042449298237264661">This computer will no longer receive Google Chrome updates because Windows XP and Windows Vista are no longer supported.</translation>
 <translation id="4050175100176540509">Important security improvements and new features are available in the latest version.</translation>
 <translation id="4053720452172726777">Customise and control Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Please sign out and sign in again for this change to take effect.</translation>
 <translation id="4480040274068703980">Chrome OS could not sync your data due to an error signing in.</translation>
-<translation id="4513711165509885787">Your billing details have been saved in Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome lets you click a phone number on the web and call it with Skype!</translation>
 <translation id="4567424176335768812">You're signed in as <ph name="USER_EMAIL_ADDRESS" />. Now you can access your bookmarks, history and other settings on all your signed in devices.</translation>
 <translation id="4631713731678262610">Hide in Chrome menu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb
index 778e0be..4ec60c2 100644
--- a/chrome/app/resources/google_chrome_strings_es-419.xtb
+++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome: notificaciones</translation>
 <translation id="1104959162601287462">Acerca del &amp;sistema operativo de Chrome</translation>
 <translation id="110877069173485804">Este es tu navegador Chrome</translation>
-<translation id="1225016890511909183">Chrome almacenará tu información de forma segura, de modo que no deberás ingresarla de nuevo. No obstante, deberás verificar el código de seguridad de tu tarjeta cuando realices pagos en el futuro.</translation>
 <translation id="123620459398936149">El Sistema operativo Chrome no pudo sincronizar los datos. Actualiza la frase de contraseña de sincronización.</translation>
 <translation id="127345590676626841">Chrome se actualiza automáticamente para que siempre tengas la versión más reciente. Cuando se complete esta descarga, Chrome se reiniciará y podrás usarlo.</translation>
 <translation id="1302523850133262269">Espera mientras Chrome instala las últimas actualizaciones del sistema.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obtener ayuda para utilizar Chrome OS</translation>
 <translation id="1818142563254268765">Chrome no pudo actualizarse a la versión más reciente, por lo que no estás aprovechando las funciones geniales ni las correcciones de seguridad que se agregaron. Debes actualizar Chrome.</translation>
+<translation id="1864458292167284385">El Selector de aplicaciones de Chrome está por desaparecer.</translation>
 <translation id="1877026089748256423">Chrome no está actualizado.</translation>
 <translation id="2077129598763517140">Usar aceleración de hardware cuando esté disponible</translation>
 <translation id="2084710999043359739">Agregar a Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome verificó que <ph name="ISSUER" /> emitió el certificado de este sitio web. El servidor proporcionó información de transparencia de certificados, pero Chrome no reconoció ninguno de los registros de la transparencia de certificados.</translation>
 <translation id="3889417619312448367">Desinstalar Google Chrome</translation>
+<translation id="396182988103551265">Para seguir accediendo a tus apps, usa el acceso directo de <ph name="APPS_ICON_IMAGE" /> que aparece en la barra de marcadores de Chrome.</translation>
 <translation id="4042449298237264661">Esta computadora dejará de recibir actualizaciones de Google Chrome porque Windows XP y Windows Vista ya no se admiten.</translation>
 <translation id="4050175100176540509">La última versión proporciona importantes mejoras de seguridad y nuevas funciones.</translation>
 <translation id="4053720452172726777">Personaliza y controla Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">SO de Google Chrome</translation>
 <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation>
 <translation id="4480040274068703980">El Sistema operativo Chrome no pudo sincronizar los datos porque se produjo un error de acceso.</translation>
-<translation id="4513711165509885787">Se guardó la información de facturación en Chrome</translation>
 <translation id="4561051373932531560">Google Chrome te permite hacer clic en un número de teléfono en la web y ¡llamarlo por Skype!</translation>
 <translation id="4567424176335768812">Accediste como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes ir a los marcadores, al historial y a otras opciones en todos los dispositivos en los que hayas accedido.</translation>
 <translation id="4631713731678262610">Ocultar en el menú de Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb
index 038855a32..0aeb835 100644
--- a/chrome/app/resources/google_chrome_strings_es.xtb
+++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - Notificaciones</translation>
 <translation id="1104959162601287462">Información de &amp;Chrome OS</translation>
 <translation id="110877069173485804">Este es tu navegador Chrome</translation>
-<translation id="1225016890511909183">Chrome almacenará de forma segura tu información, de modo que no tendrás que volver a introducirla, aunque tendrás que seguir verificando el código de seguridad de tu tarjeta para futuros pagos.</translation>
 <translation id="123620459398936149">Chrome OS no ha podido sincronizar tus datos. Actualiza tu frase de contraseña de sincronización.</translation>
 <translation id="127345590676626841">Chrome se actualiza automáticamente para que siempre dispongas de la última versión. Cuando se complete la descarga, Chrome se reiniciará automáticamente.</translation>
 <translation id="1302523850133262269">Espera mientras Chrome instala las últimas actualizaciones del sistema.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obtener ayuda de Chrome OS</translation>
 <translation id="1818142563254268765">Chrome no ha podido actualizarse automáticamente a la última versión, por lo que te estás perdiendo algunos magníficos parches de seguridad y fantásticas funciones nuevas. Tendrás que actualizar Chrome.</translation>
+<translation id="1864458292167284385">El menú de aplicaciones de Chrome va a desaparecer.</translation>
 <translation id="1877026089748256423">Chrome no está actualizado</translation>
 <translation id="2077129598763517140">Utilizar aceleración por hardware cuando esté disponible</translation>
 <translation id="2084710999043359739">Añadir a Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ha verificado que <ph name="ISSUER" />emitió el certificado de este sitio web. El servidor ha proporcionado información de Transparencia de certificados, pero Chrome no ha reconocido ninguno de los registros de estos datos.</translation>
 <translation id="3889417619312448367">Desinstalar Google Chrome</translation>
+<translation id="396182988103551265">Utiliza el acceso directo de <ph name="APPS_ICON_IMAGE" /> situado en la barra de marcadores de Chrome para seguir accediendo a tus aplicaciones.</translation>
 <translation id="4042449298237264661">Este ordenador dejará de recibir actualizaciones de Google Chrome porque ya no es compatible con Windows XP y Windows Vista.</translation>
 <translation id="4050175100176540509">En la última versión puedes encontrar mejoras de seguridad importantes y nuevas funciones.</translation>
 <translation id="4053720452172726777">Personaliza y controla Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation>
 <translation id="4480040274068703980">Chrome OS no ha podido sincronizar los datos debido a un error de inicio de sesión.</translation>
-<translation id="4513711165509885787">Se ha guardado la información de facturación en Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome te permite hacer clic en un número de teléfono en la Web y llamar mediante Skype.</translation>
 <translation id="4567424176335768812">Has iniciado sesión como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes acceder a tus marcadores, a tu historial y a otras opciones en todos los dispositivos en los que hayas iniciado sesión.</translation>
 <translation id="4631713731678262610">Ocultar en el menú de Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb
index 6d4f97e..56e7c1e 100644
--- a/chrome/app/resources/google_chrome_strings_et.xtb
+++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – märguanded</translation>
 <translation id="1104959162601287462">Teave &amp;Chrome OS-i kohta</translation>
 <translation id="110877069173485804">See on teie Chrome</translation>
-<translation id="1225016890511909183">Chrome salvestab turvaliselt teie teabe, nii et te ei pea seda uuesti sisestama, kuid peate ka tulevaste maksete puhul kinnitama oma kaardi turvakoodi.</translation>
 <translation id="123620459398936149">Chrome OS ei saanud teie andmeid sünkroonida. Värskendage oma sünkroonimisparooli.</translation>
 <translation id="127345590676626841">Chrome teeb värskendused automaatselt, nii et kasutate alati uusimat versiooni. Kui allalaadimine on lõppenud, siis Chrome taaskäivitub ja võite alustada kasutamist.</translation>
 <translation id="1302523850133262269">Oodake, kuni Chrome installib uusimad süsteemivärskendused.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Hankige abi Chrome OS-i kasutamise kohta</translation>
 <translation id="1818142563254268765">Chrome ei suutnud ennast uusimale versioonile värskendada, nii et te ei saa kasutada lahedaid uusi funktsioone ja turvaparandusi. Peate Chrome'i värskendama.</translation>
+<translation id="1864458292167284385">Lõpetame Chrome'i rakenduste käivitaja toe pakkumise.</translation>
 <translation id="1877026089748256423">Chrome on aegunud</translation>
 <translation id="2077129598763517140">Kasuta võimaluse korral riistvarakiirendust</translation>
 <translation id="2084710999043359739">Chrome'i lisamine</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome kinnitas, et selle veebisaidi sertifikaadi andis välja väljaandja <ph name="ISSUER" />. Server esitas sertifikaadi läbipaistvuse teabe, aga Chrome ei tuvastanud sertifikaadi läbipaistvuse logisid.</translation>
 <translation id="3889417619312448367">Google Chrome'i desinstallimine</translation>
+<translation id="396182988103551265">Oma rakendustele pääsete edaspidi juurde Chrome'i järjehoidjate ribal oleva otsetee <ph name="APPS_ICON_IMAGE" /> kaudu.</translation>
 <translation id="4042449298237264661">Arvuti ei saa enam Google Chrome'i värskendusi, kuna Windows XP-d ja Windows Vistat ei toetata enam.</translation>
 <translation id="4050175100176540509">Uusimas versioonis on saadaval olulised turvatäiendused ja uued funktsioonid.</translation>
 <translation id="4053720452172726777">Google Chrome'i kohandamine ja juhtimine</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Muudatuse jõustamiseks logige välja ja uuesti sisse.</translation>
 <translation id="4480040274068703980">Chrome OS ei saanud teie andmeid sünkroonida sisselogimisvea tõttu.</translation>
-<translation id="4513711165509885787">Teie arvelduse detailid on salvestatud Chrome'i.</translation>
 <translation id="4561051373932531560">Google Chrome võimaldab teil veebis telefoninumbril klõpsata ja sellele Skype'i abil helistada!</translation>
 <translation id="4567424176335768812">Olete sisse logitud aadressiga <ph name="USER_EMAIL_ADDRESS" />. Nüüd on teil juurdepääs oma järjehoidjatele, ajaloole ja muudele seadetele kõigis seadmetes, kuhu olete sisse logitud.</translation>
 <translation id="4631713731678262610">Chrome'i menüüs peitmine</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb
index 88627202c..c4e0145 100644
--- a/chrome/app/resources/google_chrome_strings_fa.xtb
+++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">‏Chrome - اعلان‌ها</translation>
 <translation id="1104959162601287462">‏درباره سیستم عامل &amp;Chrome</translation>
 <translation id="110877069173485804">‏این Chrome شماست</translation>
-<translation id="1225016890511909183">‏Chrome اطلاعات شما را به‌ صورت ایمن ذخیره می‌کند بنابراین لازم نیست دوباره آن‌ را تایپ کنید، اما برای پرداخت‌های بعدی همچنان باید کد امنیتی کارت خود را تأیید کنید.</translation>
 <translation id="123620459398936149">‏سیستم‌عامل Chrome قادر به همگام‌سازی داده‌های شما نبود. لطفاً رمز عبارتی همگام‌سازی خود را به‌روز کنید.</translation>
 <translation id="127345590676626841">‏Chrome به صورت خودکار به‌روزرسانی می‌شود بنابراین همیشه جدیدترین نسخه را دارید. وقتی این دانلود تمام شد، Chrome مجدداً شروع به کار می‌کند و می‌توانید کارتان را ادامه دهید.</translation>
 <translation id="1302523850133262269">‏لطفاً صبر کنید تا Chrome جدیدترین به‌روزرسانی‌های سیستم را نصب کند.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">‏دریافت راهنمایی برای استفاده از سیستم عامل Chrome </translation>
 <translation id="1818142563254268765">‏Chrome به‌طور خودکار به جدیدترین نسخه به‌روزرسانی نشد، بنابراین ویژگی‌های جدید فوق‌العاده و اشکال‌زدایی‌های امنیتی را از دست خواهید داد. باید Chrome را به‌روزرسانی کنید.</translation>
+<translation id="1864458292167284385">‏راه‌انداز برنامه Chrome از دور خارج می‌شود.</translation>
 <translation id="1877026089748256423">‏نسخه Chrome قدیمی است</translation>
 <translation id="2077129598763517140">در صورت امکان از شتاب سخت‌افزاری استفاده شود</translation>
 <translation id="2084710999043359739">‏افزودن به Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">‏Chrome تأیید کرد <ph name="ISSUER" /> گواهی‌نامه این وب‌سایت را صادر کرده است. سرور، اطلاعات «شفافیت گواهی‌نامه» را ارائه کرد اما Chrome هیچ‌یک از گزارش‌های «شفافیت گواهی‌نامه» را تشخیص نداد.</translation>
 <translation id="3889417619312448367">‏حذف نصب Google Chrome</translation>
+<translation id="396182988103551265">‏برای ادامه دسترسی به برنامه‌هایتان از میان‌بر <ph name="APPS_ICON_IMAGE" /> در نوار نشانک‌های Chrome استفاده کنید.</translation>
 <translation id="4042449298237264661">‏این رایانه دیگر به‌روزرسانی‌های Google Chrome را دریافت نمی‌کند زیرا Windows XP و Windows Vista دیگر پشتیبانی نمی‌شوند.</translation>
 <translation id="4050175100176540509">بهبودهای امنیتی مهم و ویژگی‌های جدید در جدیدترین نسخه در دسترس است.</translation>
 <translation id="4053720452172726777">‏‫سفارشی کردن و کنترل Google Chrome</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">‏سیستم عامل Google Chrome</translation>
 <translation id="4458285410772214805">لطفاً از سیستم خارج شوید و دوباره وارد آن شوید تا این تغییر اعمال شود.</translation>
 <translation id="4480040274068703980">‏به دلیل وجود یک خطای ورود به سیستم، سیستم‌عامل Chrome قادر به همگام‌سازی داده‌هایتان نبود.</translation>
-<translation id="4513711165509885787">‏جزئیات صورت‌حساب شما در Chrome ذخیره شده است.</translation>
 <translation id="4561051373932531560">‏Google Chrome به شما اجازه می‌دهد بر روی شماره تلفن روی وب کلیک کرده و از طریق Skype تماس بگیرید!</translation>
 <translation id="4567424176335768812">با حساب <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم شده‌اید. اکنون در همه دستگاه‌هایی که با آنها به سیستم وارد شده‌اید می‌توانید به نشانک‌ها، سابقه و دیگر تنظیماتتان دسترسی داشته باشید.</translation>
 <translation id="4631713731678262610">‏پنهان در منوی Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb
index 5f7280e..35011a0 100644
--- a/chrome/app/resources/google_chrome_strings_fi.xtb
+++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – ilmoitukset</translation>
 <translation id="1104959162601287462">Tietoja &amp;Chrome-käyttöjärjestelmästä</translation>
 <translation id="110877069173485804">Tämä on oma Chromesi</translation>
-<translation id="1225016890511909183">Chrome tallentaa tietosi turvalliseen paikkaan, jottei sinun tarvitse kirjoittaa tietoja uudelleen. Sinun täytyy kuitenkin vahvistaa korttisi turvakoodi tulevien maksujen yhteydessä.</translation>
 <translation id="123620459398936149">Chrome-käyttöjärjestelmä ei voinut synkronoida tietoja. Päivitä synkronoinnin tunnuslause.</translation>
 <translation id="127345590676626841">Chrome päivittyy automaattisesti, joten käytössäsi on aina uusin versio. Kun lataus on valmis, Chrome käynnistyy uudelleen ja voit aloittaa käytön.</translation>
 <translation id="1302523850133262269">Odota hetki, Chrome asentaa uusimpia järjestelmäpäivityksiä.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Apua Chrome-käyttöjärjestelmän käytössä</translation>
 <translation id="1818142563254268765">Chrome ei voinut päivittää uusimpaan versioon, joten uudet ominaisuudet ja tietoturvapäivitykset eivät ole käytössäsi. Päivitä Chrome.</translation>
+<translation id="1864458292167284385">Chromen sovellusten käynnistysohjelma poistuu käytöstä</translation>
 <translation id="1877026089748256423">Chrome on vanhentunut</translation>
 <translation id="2077129598763517140">Käytä laitteistokiihdytystä, jos mahdollista</translation>
 <translation id="2084710999043359739">Lisää Chromeen</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome vahvisti, että <ph name="ISSUER" /> on myöntänyt tämän sivuston varmenteen. Palvelin lähetti Certificate Transparency -tiedot, mutta Chrome ei tunnistanut Certificate Transparency -lokitietoja.</translation>
 <translation id="3889417619312448367">Poista Google Chromen asennus</translation>
+<translation id="396182988103551265">Voit jatkaa sovellustesi käyttöä Chromen kirjanmerkkipalkissa olevalla <ph name="APPS_ICON_IMAGE" />-pikanäppäimellä.</translation>
 <translation id="4042449298237264661">Tämän tietokoneen Google Chromea ei enää päivitetä, koska Windows XP:tä ja Windows Vistaa ei enää tueta.</translation>
 <translation id="4050175100176540509">Uusimmassa versiossa on käytettävissä tärkeitä turvallisuusparannuksia ja uusia ominaisuuksia.</translation>
 <translation id="4053720452172726777">Google Chromen muokkaaminen ja hallinta</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Kirjaudu ulos ja kirjaudu uudelleen sisään, jotta muutos tulee voimaan.</translation>
 <translation id="4480040274068703980">Chrome-käyttöjärjestelmä ei voi synkronoida tietoja kirjautumisvirheen vuoksi.</translation>
-<translation id="4513711165509885787">Laskutustietosi on tallennettu Chromeen.</translation>
 <translation id="4561051373932531560">Google Chromen avulla voit klikata puhelinnumeroa verkossa ja soittaa siihen Skypellä!</translation>
 <translation id="4567424176335768812">Olet kirjautunut Chromeen tilillä <ph name="USER_EMAIL_ADDRESS" />. Nyt voit käyttää kirjanmerkkejäsi, historiaa ja muita asetuksia kaikilla laitteilla, joihin olet kirjautunut.</translation>
 <translation id="4631713731678262610">Piilota Chrome-valikossa</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb
index 6f5cca5..f5092d9 100644
--- a/chrome/app/resources/google_chrome_strings_fil.xtb
+++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - Mga Notification</translation>
 <translation id="1104959162601287462">Tungkol sa &amp;Chrome OS</translation>
 <translation id="110877069173485804">Ito ang iyong Chrome</translation>
-<translation id="1225016890511909183">Secure na iiimbak ng Chrome ang iyong impormasyon upang hindi mo na ito kailangang i-type muli, ngunit kakailanganin mo pa ring i-verify ang panseguridad na code ng iyong card para sa mga pagbabayad sa hinaharap.</translation>
 <translation id="123620459398936149">Hindi ma-sync ng Chrome OS ang iyong data. Paki-update ang iyong Passphrase sa pag-sync.</translation>
 <translation id="127345590676626841">Awtomatikong nag-a-update ang Chrome upang palagi kang may pinakabagong bersyon. Kapag nakumpleto ang pag-download na ito, magre-restart ang Chrome at makakapagpatuloy ka na.</translation>
 <translation id="1302523850133262269">Mangyaring maghintay habang ini-install ng Chrome ang mga pinakabagong update sa system.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Kumuha ng tulong sa paggamit ng Chrome OS</translation>
 <translation id="1818142563254268765">Hindi ma-update ng Chrome ang sarili nito patungo sa pinakabagong bersyon, kaya napapalampas mo ang mahuhusay na bagong feature at pag-aayos sa seguridad. Kailangan mong i-update ang Chrome.</translation>
+<translation id="1864458292167284385">Umaalis na ang Chrome App Launcher.</translation>
 <translation id="1877026089748256423">Luma na ang Chrome</translation>
 <translation id="2077129598763517140">Gamitin ang pagpapabilis ng hardware kapag available</translation>
 <translation id="2084710999043359739">Idagdag sa Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Na-verify ng Chrome na ang <ph name="ISSUER" /> ang nagbigay sa certificate ng website na ito. Nagbigay ang server ng impormasyon tungkol sa Certificate Transparency, ngunit hindi natukoy ng Chrome ang alinman sa mga log ng Certificate Transparency</translation>
 <translation id="3889417619312448367">I-uninstall ang Google Chrome</translation>
+<translation id="396182988103551265">Gamitin ang shortcut ng <ph name="APPS_ICON_IMAGE" /> sa Chrome bookmarks bar upang patuloy na ma-access ang iyong mga app.</translation>
 <translation id="4042449298237264661">Hindi na makakatanggap ang computer na ito ng mga update sa Google Chrome dahil hindi na sinusuportahan ang Windows XP at Windows Vista.</translation>
 <translation id="4050175100176540509">May available na mahahalagang pagpapahusay sa seguridad at mga bagong feature sa pinakabagong bersyon.</translation>
 <translation id="4053720452172726777">I-customize at kontrolin ang Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Mangyaring mag-sign out at mag-sign in muli upang magkabisa ang pagbabagong ito.</translation>
 <translation id="4480040274068703980">Hindi ma-sync ng Chrome OS ang iyong data dahil sa isang error sa pagsa-sign in.</translation>
-<translation id="4513711165509885787">Na-save na sa Chrome ang iyong mga detalye ng pagsingil.</translation>
 <translation id="4561051373932531560">Pinapayagan ka ng Google Chrome na mag-click sa isang numero ng telepono sa web at tawagan ito gamit ang Skype!</translation>
 <translation id="4567424176335768812">Naka-sign in ka bilang <ph name="USER_EMAIL_ADDRESS" />. Maaari mo na ngayong i-access ang iyong mga bookmark, kasaysayan, at iba pang setting sa lahat ng iyong device na naka-sign in.</translation>
 <translation id="4631713731678262610">Itago sa menu ng Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb
index 1d717be8..88baba2b 100644
--- a/chrome/app/resources/google_chrome_strings_fr.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -11,7 +11,6 @@
 <translation id="1073391069195728457">Notifications – Chrome</translation>
 <translation id="1104959162601287462">À propos de &amp;Chrome OS</translation>
 <translation id="110877069173485804">Voici votre Chrome</translation>
-<translation id="1225016890511909183">Chrome va stocker les informations vous concernant de manière sécurisée. Vous n'aurez donc pas besoin de les saisir à nouveau. En revanche, vous devrez valider le code de sécurité de votre carte lors de vos prochains paiements.</translation>
 <translation id="123620459398936149">Impossible de synchroniser vos données dans Chrome OS. Veuillez mettre à jour votre phrase secrète de synchronisation.</translation>
 <translation id="127345590676626841">Chrome est automatiquement mis à jour pour vous permettre de toujours disposer de la dernière version. Une fois le téléchargement terminé, Chrome redémarre et vous pouvez de nouveau l'utiliser.</translation>
 <translation id="1302523850133262269">Veuillez patienter pendant que Chrome installe les dernières mises à jour du système.</translation>
@@ -36,6 +35,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obtenir de l'aide sur l'utilisation de Chrome OS</translation>
 <translation id="1818142563254268765">La mise à jour de Chrome a échoué. Vous n'utilisez pas la dernière version, qui vous permet de bénéficier de nouvelles fonctionnalités pratiques et de correctifs de sécurité. Vous devez mettre Chrome à jour.</translation>
+<translation id="1864458292167284385">Le lanceur d'applications Chrome ne sera bientôt plus disponible</translation>
 <translation id="1877026089748256423">Version de Chrome obsolète</translation>
 <translation id="2077129598763517140">Utiliser l'accélération matérielle (le cas échéant)</translation>
 <translation id="2084710999043359739">Ajouter à Chrome</translation>
@@ -91,6 +91,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Il a été confirmé dans Chrome que le certificat de ce site a bien été fourni par <ph name="ISSUER" />. Des informations relatives à la transparence du certificat ont été fournies via le serveur, mais aucun des journaux relatifs à la transparence du certificat n'a été reconnu dans Chrome.</translation>
 <translation id="3889417619312448367">Désinstaller Google Chrome</translation>
+<translation id="396182988103551265">Utilisez le raccourci <ph name="APPS_ICON_IMAGE" /> dans la barre de favoris Chrome pour continuer d'accéder à vos applications.</translation>
 <translation id="4042449298237264661">Cet ordinateur ne recevra plus les mises à jour de Google Chrome, car la compatibilité n'est plus assurée sur Windows XP et Windows Vista.</translation>
 <translation id="4050175100176540509">La dernière version propose d'importantes améliorations de la sécurité ainsi que de nouvelles fonctionnalités.</translation>
 <translation id="4053720452172726777">Personnaliser et contrôler Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Système d'exploitation Google Chrome</translation>
 <translation id="4458285410772214805">Pour que cette modification soit prise en compte, veuillez vous déconnecter, puis vous reconnecter.</translation>
 <translation id="4480040274068703980">Impossible de synchroniser vos données dans Chrome OS, car une erreur s'est produite lors de la connexion.</translation>
-<translation id="4513711165509885787">Vos informations de facturation ont été enregistrées dans Chrome.</translation>
 <translation id="4561051373932531560">Avec Google Chrome, cliquez sur un numéro de téléphone sur le Web et appelez-le dans Skype !</translation>
 <translation id="4567424176335768812">Vous êtes connecté avec l'adresse e-mail <ph name="USER_EMAIL_ADDRESS" />. Vous pouvez maintenant accéder à vos favoris, à l'historique et aux autres paramètres sur tous les appareils sur lesquels vous êtes connecté.</translation>
 <translation id="4631713731678262610">Masquer dans le menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb
index 9a26e7c..c28cb84 100644
--- a/chrome/app/resources/google_chrome_strings_gu.xtb
+++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - સૂચનાઓ</translation>
 <translation id="1104959162601287462">&amp;Chrome OS વિશે</translation>
 <translation id="110877069173485804">આ તમારું Chrome છે</translation>
-<translation id="1225016890511909183">Chrome તમારી માહિતીને સુરક્ષિત રીતે સંગ્રહિત કરશે જેથી તમારે ફરીથી તેને ટાઇપ કરવાની જરૂર નથી, પરંતુ તમારે હજુ પણ ભવિષ્યમાં ચુકવણી માટે તમારા કાર્ડના સુરક્ષા કોડ ચકાસવાની જરૂર પડશે.</translation>
 <translation id="123620459398936149">Chrome OS તમારા ડેટાને સમન્વયિત કરી શક્યું નથી. કૃપા કરીને તમારા સમન્વયન પાસફ્રેઝને અપડેટ કરો.</translation>
 <translation id="127345590676626841">Chrome આપમેળે અપડેટ થાય છે જેથી કરીને તમારી પાસે હંમેશા તાજું સંસ્કરણ રહે છે. જ્યારે આ ડાઉનલોડ પૂર્ણ થાય છે, ત્યારે Chrome પુનઃપ્રારંભ થશે અને તમે તમારા માર્ગે હશો.</translation>
 <translation id="1302523850133262269">કૃપા કરીને Chrome નવીનતમ સિસ્ટમ અપડેટ્સ ઇન્સ્ટોલ કરે ત્યાં સુધી રાહ જુઓ.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS નો ઉપયોગ કરવા સહાય મેળવો</translation>
 <translation id="1818142563254268765">Chrome પોતાને નવીનતમ સંસ્કરણ પર અપડેટ કરી શક્યું નથી, જેથી તમે અદ્ભુત નવી સુવિધાઓ અને સુરક્ષા સુધારાઓ ગુમાવી રહ્યાં છો. તમારે Chrome ને અપડેટ કરવાની જરૂર છે.</translation>
+<translation id="1864458292167284385">Chrome ઍપ લૉન્ચર બંધ કરવામાં આવી રહ્યું છે.</translation>
 <translation id="1877026089748256423">Chrome જૂનું થઈ ગયું છે</translation>
 <translation id="2077129598763517140">હાર્ડવેર ઍક્સિલરેશન ઉપલબ્ધ હોવા પર ઉપયોગ કરો</translation>
 <translation id="2084710999043359739">Chrome માં ઉમેરો</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome એ ચકાસ્યું કે <ph name="ISSUER" /> એ આ વેબસાઇટનું પ્રમાણપત્ર ઇસ્યુ કર્યું છે. સર્વરે પ્રમાણપત્ર પારદર્શિતા માહિતી પૂરી પાડેલી, પરંતુ Chrome એ કોઈપણ પ્રમાણપત્ર પારદર્શિતા લૉગ્સને ઓળખ્યાં ન હતાં.</translation>
 <translation id="3889417619312448367">Google Chrome ને અનઇન્સ્ટોલ કરો</translation>
+<translation id="396182988103551265">તમારી ઍપ્લિકેશનોને ઍક્સેસ કરવાનું ચાલુ રાખવા માટે Chrome બુકમાર્ક્સ બારમાં <ph name="APPS_ICON_IMAGE" /> શૉર્ટકટનો ઉપયોગ કરો.</translation>
 <translation id="4042449298237264661">આ કમ્પ્યુટર હવેથી Google Chrome અપડેટ્સ પ્રાપ્ત કરશે નહિ કારણકે Windows XP અને Windows Vista હવેથી સમર્થિત નથી.</translation>
 <translation id="4050175100176540509">નવીનતમ સંસ્કરણમાં મહત્વપૂર્ણ સુરક્ષા સુધારણાઓ અને નવી સુવિધાઓ ઉપલબ્ધ છે.</translation>
 <translation id="4053720452172726777">Google Chrome ને કસ્ટમાઇઝ કરો અને તેનું નિયંત્રણ કરો</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">કૃપા કરીને આ પરિવર્તનને પ્રભાવમાં લાવવા માટે સાઇન આઉટ કરો અને ફરીથી સાઇન ઇન કરો.</translation>
 <translation id="4480040274068703980">સાઇન ઇનમાં ભૂલ આવવાને કારણે Chrome OS તમારા ડેટાને સમન્વયિત કરી શક્યું નથી.</translation>
-<translation id="4513711165509885787">તમારી બિલિંગ વિગતો Chrome માં સાચવવામાં આવી છે.</translation>
 <translation id="4561051373932531560">Google Chrome થી તમે વેબ પર એક ફોન નંબર પર ક્લિક કરી શકો છો અને તેને Skype થી કૉલ કરી શકો છો!</translation>
 <translation id="4567424176335768812">તમે <ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન છો. હવે તમે તમારા બધા સાઇન ઇન કરેલા ઉપકરણો પર તમારા બુકમાર્ક્સ, ઇતિહાસ અને અન્ય સેટિંગ્સને ઍક્સેસ કરી શકો છો.</translation>
 <translation id="4631713731678262610">Chrome મેનૂમાં છુપાવો</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb
index 7b2ef0d..e2618fe5 100644
--- a/chrome/app/resources/google_chrome_strings_hi.xtb
+++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - सूचनाएं</translation>
 <translation id="1104959162601287462">&amp;Chrome OS के बारे में</translation>
 <translation id="110877069173485804">यह आपका Chrome है</translation>
-<translation id="1225016890511909183">Chrome आपकी जानकारी को सुरक्षित रूप से संगृहीत करेगा इसलिए आपको इसे फिर से लिखने की आवश्यकता नहीं है, लेकिन भविष्य के भुगतानों के लिए आपको अभी भी अपने कार्ड के सुरक्षा कोड का सत्यापन करना होगा.</translation>
 <translation id="123620459398936149">Chrome OS आपका डेटा समन्वयित नहीं कर सका. कृपया अपना समन्वयन पासफ़्रेज़ अपडेट करें.</translation>
 <translation id="127345590676626841">Chrome अपने आप अपडेट हो जाता है ताकि आपके पास हमेशा सबसे नवीनतम वर्शन रहे. जब यह डाउनलोड पूर्ण हो जाता है, तो Chrome पुन: प्रारंभ होगा और आप आगे बढ़ जाएंगे.</translation>
 <translation id="1302523850133262269">कृपया Chrome के द्वारा नवीनतम सिस्टम अपडेट इंस्टॉल करने के दौरान प्रतीक्षा करें.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS का उपयोग करने के बारे में सहायता प्राप्त करें</translation>
 <translation id="1818142563254268765">Chrome स्वयं को नवीनतम वर्शन में अपडेट नहीं कर सका, इसलिए आप शानदार नई सुविधाओं और सुरक्षा समाधानों का लाभ नहीं ले पा रहे हैं. आपको Chrome को अपडेट करना होगा.</translation>
+<translation id="1864458292167284385">Chrome ऐप्लिकेशन लॉन्चर बंद किया जा रहा है.</translation>
 <translation id="1877026089748256423">Chrome पुराना हो गया है</translation>
 <translation id="2077129598763517140">उपलब्ध होने पर हार्डवेयर त्वरण का उपयोग करें</translation>
 <translation id="2084710999043359739">Chrome में जोड़ें</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ने सत्यापित किया है कि <ph name="ISSUER" /> ने इस वेबसाइट का प्रमाणपत्र जारी किया है. सर्वर ने प्रमाणपत्र पारदर्शिता जानकारी प्रदान की है, लेकिन Chrome ने किसी भी प्रमाणपत्र पारदर्शिता लॉग को नहीं पहचाना.</translation>
 <translation id="3889417619312448367">Google Chrome को विस्थापित करें</translation>
+<translation id="396182988103551265">अपने ऐप्लिकेशन एक्सेस करना जारी रखने के लिए Chrome बुकमार्क बार में <ph name="APPS_ICON_IMAGE" /> शॉर्टकट का उपयोग करें.</translation>
 <translation id="4042449298237264661">यह कंप्‍यूटर अब Google Chrome के अपडेट प्राप्‍त नहीं करेगा क्‍योंकि Windows XP और Windows Vista अब समर्थित नहीं है.</translation>
 <translation id="4050175100176540509">महत्‍वपूर्ण सुरक्षा सुधार और नई सुविधाएं नवीनतम वर्शन में उपलब्‍ध हैं.</translation>
 <translation id="4053720452172726777">Google Chrome कस्टमाइज़ करें और नियंत्रित करें</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">इस परिवर्तन के प्रभावी होने के लिए, कृपया प्रस्थान करें और पुन: प्रवेश करें.</translation>
 <translation id="4480040274068703980">प्रवेश करने संबंधी त्रुटि के कारण Chrome OS आपका डेटा सिंक नहीं कर सका.</translation>
-<translation id="4513711165509885787">आपका बिलिंग विवरण Chrome में सहेज लिया गया है.</translation>
 <translation id="4561051373932531560">Google Chrome आपको वेब पर फ़ोन नंबर क्लिक करने और उसे Skype से कॉल करने की सुविधा देता है!</translation>
 <translation id="4567424176335768812">आपने <ph name="USER_EMAIL_ADDRESS" /> के रूप में प्रवेश किया हुआ है. अब आप अपने सभी प्रवेश किए हुए डिवाइस पर अपने बुकमार्क, इतिहास, और अन्य सेटिंग की एक्सेस कर सकेंगे.</translation>
 <translation id="4631713731678262610">Chrome मेनू में छिपाएं</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb
index 5edb1e9..ce2e091 100644
--- a/chrome/app/resources/google_chrome_strings_hr.xtb
+++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – obavijesti</translation>
 <translation id="1104959162601287462">O OS-u &amp;Chrome</translation>
 <translation id="110877069173485804">Ovo je vaš Chrome</translation>
-<translation id="1225016890511909183">Chrome će pohraniti vaše podatke na siguran način tako da ih ne morate ponovo unositi, ali ćete prilikom budućih plaćanja i dalje morati potvrđivati sigurnosni kôd kartice.</translation>
 <translation id="123620459398936149">OS Chrome nije mogao sinkronizirati vaše podatke. Ažurirajte zaporku za sinkronizaciju.</translation>
 <translation id="127345590676626841">Chrome se ažurira automatski, pa uvijek imate najnoviju verziju. Kada se ovo preuzimanje dovrši, Chrome će se ponovo pokrenuti i moći ćete nastaviti.</translation>
 <translation id="1302523850133262269">Pričekajte da Chrome instalira najnovija ažuriranja sustava.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Pomoć za upotrebu OS-a Chrome</translation>
 <translation id="1818142563254268765">Chrome se nije uspio ažurirati na najnoviju verziju, tako da se nisu instalirale sjajne nove značajke i sigurnosni popravci. Trebate ažurirati Chrome.</translation>
+<translation id="1864458292167284385">Povlačimo Pokretač aplikacija za Chrome.</translation>
 <translation id="1877026089748256423">Chrome je zastario</translation>
 <translation id="2077129598763517140">Upotrijebi hardversko ubrzanje kada je dostupno</translation>
 <translation id="2084710999043359739">Dodajte u Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome je potvrdio da je <ph name="ISSUER" /> izdavač certifikata web-lokacije. Informacije o transparentnosti certifikata pružio je poslužitelj, ali Chrome nije prepoznao nijedan zapisnik transparentnosti certifikata.</translation>
 <translation id="3889417619312448367">Deinstaliranje preglednika Google Chrome</translation>
+<translation id="396182988103551265">Svojim aplikacijama možete pristupati pomoću prečaca <ph name="APPS_ICON_IMAGE" /> na traci oznaka u Chromeu.</translation>
 <translation id="4042449298237264661">Ovo računalo više neće primati ažuriranja za Google Chrome jer sustavi Windows XP i Windows Vista više nisu podržani.</translation>
 <translation id="4050175100176540509">Najnovija verzija sadrži važna sigurnosna poboljšanja i nove značajke.</translation>
 <translation id="4053720452172726777">Prilagodite Google Chrome i upravljajte njime</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Odjavite se i prijavite se ponovo da bi ta promjena postala aktivna.</translation>
 <translation id="4480040274068703980">OS Chrome nije mogao sinkronizirati vaše podatke zbog pogreške prilikom prijave.</translation>
-<translation id="4513711165509885787">Vaše pojedinosti o naplati spremljene su u Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome omogućuje da kliknete telefonski broj na webu i nazovete ga koristeći se Skypeom!</translation>
 <translation id="4567424176335768812">Prijavljeni ste kao <ph name="USER_EMAIL_ADDRESS" />. Sada možete pristupiti svojim oznakama, povijesti i drugim postavkama na svim uređajima na kojima se prijavljujete.</translation>
 <translation id="4631713731678262610">Sakrij u izborniku Chromea</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb
index 159e0e4..b51c583 100644
--- a/chrome/app/resources/google_chrome_strings_hu.xtb
+++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – Értesítések</translation>
 <translation id="1104959162601287462">A &amp;Chrome OS névjegye</translation>
 <translation id="110877069173485804">Ez az Ön Chrome-ja</translation>
-<translation id="1225016890511909183">A Chrome biztonságosan tárolja az adatait, így nem kell újra begépelnie azokat, de kártyája biztonsági kódját igazolnia kell majd a későbbi kifizetésekhez.</translation>
 <translation id="123620459398936149">A Chrome OS nem tudta szinkronizálni az adatokat. Kérjük, frissítse szinkronizálási összetett jelszavát.</translation>
 <translation id="127345590676626841">A Chrome automatikusan frissít, így Ön mindig a legújabb verzióval rendelkezik. A letöltés befejezése után a Chrome újraindul, és máris rendelkezésre áll.</translation>
 <translation id="1302523850133262269">Kérjük, várjon, amíg a Chrome telepíti a legutóbbi rendszerfrissítéseket.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">A Chrome OS használatával kapcsolatos súgó</translation>
 <translation id="1818142563254268765">A Chrome nem tudott frissíteni a legújabb verzióra, ezért Ön nem rendelkezik a remek új funkciókkal és biztonsági javításokkal. A Chrome frissítése szükséges.</translation>
+<translation id="1864458292167284385">A Chrome Alkalmazásindító meg fog szűnni.</translation>
 <translation id="1877026089748256423">A Chrome elavult</translation>
 <translation id="2077129598763517140">Hardveres gyorsítás alkalmazása lehetőség szerint</translation>
 <translation id="2084710999043359739">Hozzáadás a Chrome-hoz</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">A Chrome megerősítette, hogy a(z) <ph name="ISSUER" /> állította ki ennek a webhelynek a tanúsítványát. A szerver megadott tanúsítványátláthatósági adatokat, de a Chrome nem ismerte fel a tanúsítványátláthatósági naplók egyikét sem.</translation>
 <translation id="3889417619312448367">A Google Chrome eltávolítása</translation>
+<translation id="396182988103551265">Alkalmazásait továbbra is elérheti a Chrome-könyvjelzősáv <ph name="APPS_ICON_IMAGE" /> parancsikonjának használatával.</translation>
 <translation id="4042449298237264661">Ez a számítógép a továbbiakban már nem fogja megkapni a Google Chrome frissítéseit, mert a Windows XP és Windows Vista rendszereket már nem támogatjuk.</translation>
 <translation id="4050175100176540509">A legújabb verzióban fontos biztonsági fejlesztések és új funkciók érhetők el.</translation>
 <translation id="4053720452172726777">A Google Chrome személyre szabása és beállításai</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Kérjük, jelentkezzen ki, majd jelentkezzen be újra a módosítás aktiválásához.</translation>
 <translation id="4480040274068703980">A Chrome OS egy bejelentkezési hiba miatt nem tudta szinkronizálni az adatokat.</translation>
-<translation id="4513711165509885787">Számlázási adatait a Chrome mentette.</translation>
 <translation id="4561051373932531560">A Google Chrome egyetlen kattintással lehetővé teszi a weboldalakon található telefonszámok felhívását Skype-pal!</translation>
 <translation id="4567424176335768812">A(z) <ph name="USER_EMAIL_ADDRESS" /> címmel van bejelentkezve. Elérheti könyvjelzőit, előzményeit és más beállításait minden olyan eszközön, amelyen bejelentkezett.</translation>
 <translation id="4631713731678262610">Elrejtés a Chrome-menüben</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb
index b3189e1..634a4ece 100644
--- a/chrome/app/resources/google_chrome_strings_id.xtb
+++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Notifikasi</translation>
 <translation id="1104959162601287462">Tentang OS &amp;Chrome</translation>
 <translation id="110877069173485804">Ini Chrome Anda</translation>
-<translation id="1225016890511909183">Chrome akan menyimpan informasi dengan aman sehingga Anda tidak harus mengetiknya lagi, tapi Anda masih harus memverifikasi kode keamanan kartu untuk pembayaran di masa mendatang.</translation>
 <translation id="123620459398936149">Chrome OS tidak dapat menyinkronkan data Anda. Perbarui frasa sandi Sinkronisasi Anda.</translation>
 <translation id="127345590676626841">Chrome diperbarui secara otomatis sehingga Anda selalu memiliki versi terbaru. Saat unduhan ini selesai, Chrome akan dimulai ulang dan segera siap digunakan.</translation>
 <translation id="1302523850133262269">Harap tunggu selagi Chrome memasang pembaruan sistem terkini.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Dapatkan bantuan tentang penggunaan Chrome OS</translation>
 <translation id="1818142563254268765">Chrome tidak dapat memperbarui dirinya sendiri ke versi terbaru, jadi Anda ketinggalan perbaikan keamanan dan fitur baru yang keren. Anda perlu memperbarui Chrome.</translation>
+<translation id="1864458292167284385">Peluncur Aplikasi Chrome tidak akan digunakan lagi.</translation>
 <translation id="1877026089748256423">Chrome terlalu lawas</translation>
 <translation id="2077129598763517140">Gunakan percepatan perangkat keras saat tersedia</translation>
 <translation id="2084710999043359739">Tambah ke Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome memverifikasi bahwa <ph name="ISSUER" /> menerbitkan sertifikat situs web ini. Server memberikan informasi Transparansi Sertifikat, namun Chrome tidak mengenali log Transparansi Sertifikat apa pun.</translation>
 <translation id="3889417619312448367">Hapus Penginstalan Google Chrome</translation>
+<translation id="396182988103551265">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> di bilah bookmark Chrome untuk terus mengakses aplikasi.</translation>
 <translation id="4042449298237264661">Komputer ini tidak akan menerima pembaruan Google Chrome lagi karena Windows XP dan Windows Vista sudah tidak didukung.</translation>
 <translation id="4050175100176540509">Peningkatan keamanan dan fitur baru yang penting tersedia di versi terbaru.</translation>
 <translation id="4053720452172726777">Sesuaikan dan kontrol Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">OS Google Chrome</translation>
 <translation id="4458285410772214805">Keluar dan masuk lagi agar perubahan ini diterapkan.</translation>
 <translation id="4480040274068703980">Chrome OS tidak dapat menyinkronkan data Anda karena kesalahan saat masuk.</translation>
-<translation id="4513711165509885787">Detail penagihan Anda telah disimpan di Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome memungkinkan Anda mengeklik nomor telepon pada web dan menghubunginya melalui Skype!</translation>
 <translation id="4567424176335768812">Anda masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Kini Anda dapat mengakses bookmark, riwayat, dan setelan lainnya pada seluruh perangkat yang Anda masuki.</translation>
 <translation id="4631713731678262610">Sembunyikan di menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb
index aa43794c..ae4cd78 100644
--- a/chrome/app/resources/google_chrome_strings_it.xtb
+++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Notifiche</translation>
 <translation id="1104959162601287462">Informazioni su &amp;Chrome OS</translation>
 <translation id="110877069173485804">Questo è il tuo Chrome</translation>
-<translation id="1225016890511909183">In Chrome le tue informazioni verranno memorizzate in modo sicuro per consentirti di non doverle digitare di nuovo, ma dovrai comunque verificare il codice di sicurezza della tua carta per i pagamenti futuri.</translation>
 <translation id="123620459398936149">Impossibile sincronizzare i tuoi dati in Chrome OS. Aggiorna la passphrase di sincronizzazione.</translation>
 <translation id="127345590676626841">Chrome si aggiorna automaticamente per consentirti di avere sempre la versione più recente. Al termine del download, Chrome si riavvierà e potrai procedere.</translation>
 <translation id="1302523850133262269">Attendi mentre Chrome installa gli aggiornamenti di sistema più recenti.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Ricevi assistenza per l'utilizzo di Chrome OS</translation>
 <translation id="1818142563254268765">Chrome non è riuscito ad aggiornarsi all'ultima versione, quindi ti stai perdendo le nuove funzioni e correzioni per la sicurezza. Devi aggiornare Chrome.</translation>
+<translation id="1864458292167284385">Avvio applicazioni di Chrome non sarà più disponibile.</translation>
 <translation id="1877026089748256423">Chrome non è aggiornato</translation>
 <translation id="2077129598763517140">Usa accelerazione hardware quando disponibile</translation>
 <translation id="2084710999043359739">Aggiungi a Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ha verificato che <ph name="ISSUER" /> ha rilasciato il certificato del sito web. Il server ha fornito le informazioni relative a Certificate Transparency, ma non è stato riconosciuto nessun log di Certificate Transparency.</translation>
 <translation id="3889417619312448367">Disinstalla Google Chrome</translation>
+<translation id="396182988103551265">Per continuare ad accedere alle tue app, utilizza la scorciatoia <ph name="APPS_ICON_IMAGE" /> nella barra dei Preferiti di Chrome.</translation>
 <translation id="4042449298237264661">Questo computer non riceverà più gli aggiornamenti di Google Chrome perché Windows XP e Windows Vista non sono più supportati.</translation>
 <translation id="4050175100176540509">Nell'ultima versione sono stati apportati miglioramenti rilevanti in materia di sicurezza e sono state aggiunte nuove funzioni.</translation>
 <translation id="4053720452172726777">Personalizza e controlla Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Esci ed esegui di nuovo l'accesso per applicare la modifica.</translation>
 <translation id="4480040274068703980">Impossibile sincronizzare i dati in Chrome OS a causa di un errore durante l'accesso.</translation>
-<translation id="4513711165509885787">I tuoi dettagli di fatturazione sono stati salvati in Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome ti permette di scegliere un numero di telefono sul Web e di chiamarlo con Skype.</translation>
 <translation id="4567424176335768812">Hai eseguito l'accesso come <ph name="USER_EMAIL_ADDRESS" />. Ora puoi accedere ai tuoi Preferiti, alla tua cronologia e ad altre impostazioni su tutti i tuoi dispositivi su cui esegui l'accesso.</translation>
 <translation id="4631713731678262610">Nascondi in menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb
index fe5caeb..5ad87d5 100644
--- a/chrome/app/resources/google_chrome_strings_iw.xtb
+++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">‏Chrome - הודעות</translation>
 <translation id="1104959162601287462">‏מידע על מערכת ההפעלה של Chrome&amp;</translation>
 <translation id="110877069173485804">‏זה ה-Chrome שלך</translation>
-<translation id="1225016890511909183">‏Chrome יאחסן את המידע שלך באופן מאובטח כך שלא תידרש להקליד אותו שוב, אך עדיין תידרש לאמת את קוד האבטחה של הכרטיס שלך לביצוע תשלומים בעתיד.</translation>
 <translation id="123620459398936149">‏מערכת ההפעלה של Chrome לא הצליחה לסנכרן את הנתונים שלך. עדכן את משפט הסיסמה שלך לסנכרון.</translation>
 <translation id="127345590676626841">‏Chrome מתעדכן באופן אוטומטי, כך שתמיד ברשותך הגרסה העדכנית ביותר. כשההורדה תסתיים, Chrome יופעל מחדש ותוכל להמשיך.</translation>
 <translation id="1302523850133262269">‏המתן בזמן ש-Chrome מתקין את עדכוני המערכת האחרונים.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">‏עזרה לשימוש ב-Chrome OS</translation>
 <translation id="1818142563254268765">‏העדכון העצמי של Chrome לגרסה העדכנית ביותר נכשל, לכן אתה מחמיץ תכונות חדשות מדליקות ותיקוני אבטחה. עליך לעדכן את Chrome.</translation>
+<translation id="1864458292167284385">‏Chrome App Launcher מסיים את דרכו.</translation>
 <translation id="1877026089748256423">‏Chrome אינו מעודכן</translation>
 <translation id="2077129598763517140">השתמש בהאצת חומרה כשניתן</translation>
 <translation id="2084710999043359739">‏הוסף ל-Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">‏Chrome אימת שהגורם שהנפיק את אישור האתר הזה הוא <ph name="ISSUER" />. השרת סיפק פרטים על שקיפות האישור, אבל Chrome לא זיהה אף אחד מהיומנים של שקיפות האישור.</translation>
 <translation id="3889417619312448367">‏הסר את Google Chrome</translation>
+<translation id="396182988103551265">‏השתמש בקיצור הדרך <ph name="APPS_ICON_IMAGE" /> בסרגל הסימניות של Chrome כדי להמשיך לגשת לאפליקציות שלך.</translation>
 <translation id="4042449298237264661">‏מחשב זה כבר לא יקבל עדכונים ל-Google Chrome, מאחר שכבר אין תמיכה במערכות Windows XP ו-Windows Vista.</translation>
 <translation id="4050175100176540509">הגרסה החדשה כוללת שיפורי בטיחות חשובים ותכונות חדשות.</translation>
 <translation id="4053720452172726777">‏הגדרת Google Chrome בהתאם לרצונך</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">צא מהמערכת והיכנס שוב כדי שהשינוי ייכנס לתוקף.</translation>
 <translation id="4480040274068703980">‏מערכת ההפעלה של Chrome לא הצליחה לסנכרן את הנתונים שלך עקב שגיאה בתהליך הכניסה.</translation>
-<translation id="4513711165509885787">‏פרטי החיוב שלך נשמרו ב-Chrome.</translation>
 <translation id="4561051373932531560">‏Google Chrome מאפשר לך ללחוץ על מספר טלפון באינטרנט ולהתקשר אליו באמצעות Skype!</translation>
 <translation id="4567424176335768812">נכנסת למערכת בתור <ph name="USER_EMAIL_ADDRESS" />. כעת אתה יכול לגשת אל הסימניות, ההיסטוריה והגדרות אחרות שלך בכל המכשירים שבהם אתה מחובר לחשבון.</translation>
 <translation id="4631713731678262610">‏הסתר בתפריט Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb
index fe96655..5a53676 100644
--- a/chrome/app/resources/google_chrome_strings_ja.xtb
+++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - お知らせ</translation>
 <translation id="1104959162601287462">Chrome OS について(&amp;C)</translation>
 <translation id="110877069173485804">自分好みに設定</translation>
-<translation id="1225016890511909183">Chrome で情報が安全に保存されるので、再度入力する必要はありません。ただし、今後もお支払いの際にカードのセキュリティ コードを入力する必要があります。</translation>
 <translation id="123620459398936149">Chrome OS はデータを同期できませんでした。同期パスフレーズを更新してください。</translation>
 <translation id="127345590676626841">Chrome は自動的に更新されるため、常に最新版をご利用になれます。このダウンロードが完了すると、Chrome が再起動し、すぐにお使いいただけます。</translation>
 <translation id="1302523850133262269">Chrome は最新のシステム アップデートをインストールしています。しばらくお待ちください。</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS の使用に関するアドバイス</translation>
 <translation id="1818142563254268765">Chrome を最新バージョンに自動更新できませんでした。新機能とセキュリティの修正が適用されていません。Chrome を更新する必要があります。</translation>
+<translation id="1864458292167284385">Chrome アプリ ランチャーを非表示にします。</translation>
 <translation id="1877026089748256423">Chrome は古いバージョンです</translation>
 <translation id="2077129598763517140">ハードウェア アクセラレーションが使用可能な場合は使用する</translation>
 <translation id="2084710999043359739">Chrome に追加</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome で <ph name="ISSUER" /> がこのウェブサイトの証明書を発行したことを確認しました。証明書の透明性に関する情報がサーバーから提供されましたが、証明書の透明性ログを認識できませんでした。</translation>
 <translation id="3889417619312448367">Google Chrome をアンインストール</translation>
+<translation id="396182988103551265">今後アプリにアクセスするには、Chrome ブックマーク バーの <ph name="APPS_ICON_IMAGE" /> ショートカットを使用してください。</translation>
 <translation id="4042449298237264661">Windows XP と Windows Vista はサポートされなくなったため、このパソコンでは今後 Google Chrome のアップデートは受信されません。</translation>
 <translation id="4050175100176540509">最新バージョンに更新すると、重要なセキュリティ更新と新機能が適用されます。</translation>
 <translation id="4053720452172726777">Google Chrome の設定</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">変更内容を反映するには、一度ログアウトして、もう一度ログインしてください。</translation>
 <translation id="4480040274068703980">ログイン時にエラーが発生したため、Chrome OS はデータを同期できませんでした。</translation>
-<translation id="4513711165509885787">お支払い情報を Chrome に保存しました。</translation>
 <translation id="4561051373932531560">Google Chrome では、ウェブサイト上の電話番号をクリックするだけで Skype で通話を発信できます。</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> としてログインしています。ログインしているすべてのデバイスで、ブックマーク、履歴、その他の設定にアクセスできます。</translation>
 <translation id="4631713731678262610">Chrome メニューで非表示</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb
index d39215b0..3d7a6505 100644
--- a/chrome/app/resources/google_chrome_strings_kn.xtb
+++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - ಅಧಿಸೂಚನೆಗಳು</translation>
 <translation id="1104959162601287462">&amp;Chrome OS ಕುರಿತು</translation>
 <translation id="110877069173485804">ಇದು ನಿಮ್ಮ Chrome</translation>
-<translation id="1225016890511909183">Chrome ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸುಭದ್ರವಾಗಿ ಸಂಗ್ರಹಿಸಿಕೊಳ್ಳುತ್ತದೆ ಇದರಿಂದಾಗಿ ನೀವು ಮತ್ತೆ ಅದನ್ನು ಟೈಪ್ ಮಾಡಬೇಕಾಗಿಲ್ಲ, ಆದರೂ ನೀವು ಭವಿಷ್ಯದ ಪಾವತಿಗಳಿಗಾಗಿ ಈಗಲೂ ನಿಮ್ಮ ಕಾರ್ಡ್‌ನ ಭದ್ರತೆ ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="123620459398936149">ನಿಮ್ಮ ಡೇಟಾವನ್ನು Chrome OS ಗೆ ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ಸಿಂಕ್ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ನವೀಕರಿಸಿ.</translation>
 <translation id="127345590676626841">Chrome ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸುತ್ತದೆ ಈ ಮೂಲಕ ನೀವು ಯಾವಾಗಲೂ ತಾಜಾ ಆವೃತ್ತಿಯುನ್ನು ಹೊಂದಿರುತ್ತೀರಿ. ಈ ಡೌನ್‌ಲೋಡ್‌ ಸಂಪೂರ್ಣಗೊಂಡಾಗ, Chrome ಮರುಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಮಾರ್ಗದಲ್ಲಿ ನೀವು ಇರಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="1302523850133262269">ಇತ್ತೀಚಿನ ಸಿಸ್ಟಂ ನವೀಕರಣಗಳನ್ನು Chrome ಸ್ಥಾಪಿಸುವಾಗ ದಯವಿಟ್ಟು ಕಾಯಿರಿ.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುವುದರೊಂದಿಗೆ ಸಹಾಯವನ್ನು ಪಡೆಯಿರಿ</translation>
 <translation id="1818142563254268765">Chrome ತಾನಾಗಿಯೇ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಣಗೊಳ್ಳುವುದಿಲ್ಲ. ಹೀಗಾಗಿ ನೀವು ಆಕರ್ಷಕವಾದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಭದ್ರತಾ ಪರಿಹಾರಗಳನ್ನು ತಪ್ಪಿಸಿಕೊಳ್ಳುತ್ತಿರುವಿರಿ. ನೀವು Chrome ಅನ್ನು ನವೀಕರಿಸಬೇಕಾಗಿದೆ.</translation>
+<translation id="1864458292167284385">Chrome ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚರ್ ಇನ್ನು ಮುಂದೆ ಇರುವುದಿಲ್ಲ.</translation>
 <translation id="1877026089748256423">Chrome ನ ಅವಧಿ ಮುಗಿದಿದೆ</translation>
 <translation id="2077129598763517140">ಲಭ್ಯವಿರುವಾಗ ಹಾರ್ಡ್‌ವೇರ್ ಆಕ್ಸಲರೇಶನ್ ಬಳಸು</translation>
 <translation id="2084710999043359739">Chrome ಗೆ ಸೇರಿಸಿ</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">ಈ ವೆಬ್‌ಸೈಟ್‌ನ ಪ್ರಮಾಣಪತ್ರವನ್ನು <ph name="ISSUER" /> ನೀಡಿದೆ ಎಂಬುದಾಗಿ Chrome ಪರಿಶೀಲಿಸಿದೆ. ಪ್ರಮಾಣಪತ್ರ ಪಾರದರ್ಶಕತೆ ಮಾಹಿತಿಯನ್ನು ಸರ್ವರ್ ಪೂರೈಸಿದೆ, ಆದರೆ ಯಾವುದೇ ಪ್ರಮಾಣಪತ್ರ ಪಾರದರ್ಶಕತೆ ಲಾಗ್‌ಗಳನ್ನು ಗುರುತಿಸಲು Chrome ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
 <translation id="3889417619312448367">Google Chrome ಅನ್ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ</translation>
+<translation id="396182988103551265">ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಪ್ರವೇಶಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು Chrome ಬುಕ್‌ಮಾರ್ಕ್‌‌ಗಳ ಬಾರ್‌ನಲ್ಲಿ <ph name="APPS_ICON_IMAGE" /> ಶಾರ್ಟ್‌ಕಟ್ ಬಳಸಿ.</translation>
 <translation id="4042449298237264661">Windows XP ಮತ್ತು Windows Vista ಗಳಿಗೆ ಬೆಂಬಲವಿಲ್ಲದೇ ಇರುವುದರಿಂದ ಈ ಕಂಪ್ಯೂಟರ್‌‌ ಇನ್ನು ಮುಂದೆ Google Chrome ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ.</translation>
 <translation id="4050175100176540509">ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯಲ್ಲಿ ಪ್ರಮುಖವಾದ ಭದ್ರತಾ ಸುಧಾರಣೆಗಳು ಮತ್ತು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಲಭ್ಯವಿದೆ.</translation>
 <translation id="4053720452172726777">Google Chrome ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">ದಯವಿಟ್ಟು ಈ ಬದಲಾವಣೆಯು ಕಾರ್ಯಗತವಾಗಲು ಸೈನ್ ಔಟ್ ಮಾಡಿ ಹಾಗೂ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="4480040274068703980">ಸೈನ್ ಇನ್ ಮಾಡುವಲ್ಲಿ ದೋಷವಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chrome OS ಗೆ ಸಾಧ್ಯವಿಲ್ಲ.</translation>
-<translation id="4513711165509885787">ನಿಮ್ಮ ಬಿಲ್ಲಿಂಗ್ ವಿವರಗಳನ್ನು Chrome ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="4561051373932531560">Google Chrome ನೀವು ವೆಬ್‌ನಲ್ಲಿ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಲು ಅವಕಾಶ ಮಾಡುತ್ತದೆ ಮತ್ತು Skype ನೊಂದಿಗೆ ಕರೆ ಮಾಡುತ್ತದೆ!</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> ನಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಿರುವಿರಿ. ನೀವು ಇದೀಗ ನಿಮ್ಮ ಎಲ್ಲಾ ಸೈನ್ ಇನ್ ಮಾಡಿರುವ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು.</translation>
 <translation id="4631713731678262610">Chrome ಮೆನುವಿನಲ್ಲಿ ಮರೆಮಾಡು</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb
index 3f8512c..87c2dbf 100644
--- a/chrome/app/resources/google_chrome_strings_ko.xtb
+++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - 알림</translation>
 <translation id="1104959162601287462">Chrome OS 정보(&amp;C)</translation>
 <translation id="110877069173485804">나만의 Chrome</translation>
-<translation id="1225016890511909183">Chromium은 사용자의 정보를 안전하게 저장하므로 정보를 다시 입력할 필요가 없지만 향후 결제 시 카드의 보안 코드는 확인해야 합니다.</translation>
 <translation id="123620459398936149">Chrome OS에서 데이터를 동기화하지 못했습니다. 동기화 암호를 업데이트하세요.</translation>
 <translation id="127345590676626841">Chrome은 자동으로 업데이트되므로 항상 최신 버전을 사용할 수 있습니다. 이 다운로드가 완료되면 Chrome이 다시 시작되며 계속 작업할 수 있습니다.</translation>
 <translation id="1302523850133262269">Chrome에서 최신 시스템 업데이트를 설치하는 동안 잠시 기다려 주세요.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS 사용에 대한 도움말</translation>
 <translation id="1818142563254268765">Chrome을 최신 버전으로 자동 업데이트할 수 없기 때문에 새로운 기능과 보안 수정사항 업데이트가 누락될 수 있습니다. Chrome을 업데이트해야 합니다.</translation>
+<translation id="1864458292167284385">Chrome 앱 런처 서비스 중단 예정</translation>
 <translation id="1877026089748256423">Chrome이 이전 버전임</translation>
 <translation id="2077129598763517140">가능한 경우 하드웨어 가속 사용</translation>
 <translation id="2084710999043359739">Chrome에 추가</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome에서 <ph name="ISSUER" />이(가) 이 웹사이트의 인증서를 발행했음을 확인했습니다. 서버에서 인증서 투명성 정보를 제공했으나, Chromium에서 인증서 투명성 로그를 인식하지 못했습니다.</translation>
 <translation id="3889417619312448367">Chrome 제거</translation>
+<translation id="396182988103551265">앱에 계속 액세스하려면 Chrome 북마크바의 <ph name="APPS_ICON_IMAGE" /> 단축키를 사용하세요.</translation>
 <translation id="4042449298237264661">Windows XP와 Windows Vista가 더 이상 지원되지 않으므로 이 컴퓨터에서 Chrome 업데이트를 받을 수 없게 됩니다.</translation>
 <translation id="4050175100176540509">최신 버전에는 중요한 보안 개선사항 및 새로운 기능이 포함되어 있습니다.</translation>
 <translation id="4053720452172726777">Chrome 맞춤설정 및 제어</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Chrome OS</translation>
 <translation id="4458285410772214805">변경사항을 적용하려면 로그아웃했다가 다시 로그인하세요.</translation>
 <translation id="4480040274068703980">로그인 중 오류가 발생하여 Chrome OS에서 데이터를 동기화하지 못했습니다.</translation>
-<translation id="4513711165509885787">결제 세부정보가 Chrome에 저장되었습니다.</translation>
 <translation id="4561051373932531560">Chrome을 사용하면 웹에서 전화번호를 클릭하여 Skype로 통화할 수 있습니다.</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" />(으)로 로그인되어 있습니다. 이제 로그인한 모든 기기에서 북마크, 방문 기록 및 기타 설정에 액세스할 수 있습니다.</translation>
 <translation id="4631713731678262610">Chrome 메뉴에서 숨기기</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb
index af39e585..0da68a7 100644
--- a/chrome/app/resources/google_chrome_strings_lt.xtb
+++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">„Chrome“ – pranešimai</translation>
 <translation id="1104959162601287462">Apie „&amp;Chrome“ OS</translation>
 <translation id="110877069173485804">Tai jūsų „Chrome“</translation>
-<translation id="1225016890511909183">„Chrome“ patikimai saugos jūsų informaciją, kad nebereikėtų jos vėl įvesti, bet ateityje atlikdami mokėjimus vis tiek turėsite patvirtinti kortelės saugos kodą.</translation>
 <translation id="123620459398936149">„Chrome“ OS negali sinchronizuoti duomenų. Atnaujinkite sinchronizavimo slaptafrazę.</translation>
 <translation id="127345590676626841">„Chrome“ atnaujinama automatiškai, todėl visada naudojatės naujausia versija. Baigus atsisiųsti, „Chrome“ bus paleista iš naujo ir galėsite pradėti ja naudotis.</translation>
 <translation id="1302523850133262269">Palaukite, kol „Chrome“ įdiegs naujausius sistemos naujinius.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Gauti su „Chrome“ OS naudojimu susijusios pagalbos</translation>
 <translation id="1818142563254268765">„Chrome“ nepavyko atsinaujinti į naujausią versiją, todėl negalite naudoti puikių naujų funkcijų ir saugos pataisymų. Reikia atnaujinti „Chrome“.</translation>
+<translation id="1864458292167284385">Nutraukiamas „Chrome“ programų paleidimo priemonės teikimas.</translation>
 <translation id="1877026089748256423">„Chrome“ versija yra pasenusi</translation>
 <translation id="2077129598763517140">Kai galima, naudoti aparatinės įrangos paspartinimą</translation>
 <translation id="2084710999043359739">Pridėti į „Chrome“</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">„Google Inc.“</translation>
 <translation id="3881912906674381083">„Chrome“ patvirtino, kad „<ph name="ISSUER" />“ išdavė šį svetainės sertifikatą. Serveris pateikė sertifikato skaidrumo informaciją, bet „Chrome“ neatpažino jokių sertifikato skaidrumo žurnalų.</translation>
 <translation id="3889417619312448367">Išdiegti „Google Chrome“</translation>
+<translation id="396182988103551265">„Chrome“ žymių juostoje naudokite spartųjį klavišą <ph name="APPS_ICON_IMAGE" />, kad ir toliau pasiektumėte savo programas.</translation>
 <translation id="4042449298237264661">Šis kompiuteris nebegaus „Google Chrome“ naujinių, nes nebepalaikoma „Windows XP“ ir „Windows Vista“.</translation>
 <translation id="4050175100176540509">Naujausios versijos programoje įdiegti svarbūs saugos patobulinimai ir pasiekiamos naujos funkcijos.</translation>
 <translation id="4053720452172726777">Tinkinkite ir valdykite „Google Chrome“</translation>
@@ -107,7 +108,6 @@
 <translation id="4407807842708586359">„Google Chrome OS“</translation>
 <translation id="4458285410772214805">Atsijunkite ir prisijunkite iš naujo, kad šis pakeitimas būtų pritaikytas.</translation>
 <translation id="4480040274068703980">„Chrome“ OS negali sinchronizuoti duomenų, nes prisijungiant įvyko klaida.</translation>
-<translation id="4513711165509885787">Išsami atsiskaitymo informacija išsaugota „Chrome“.</translation>
 <translation id="4561051373932531560">Naudodami „Google Chrome“ galite spustelėti telefono numerį žiniatinklyje ir skambinti juo naudodami „Skype“!</translation>
 <translation id="4567424176335768812">Esate prisijungę kaip <ph name="USER_EMAIL_ADDRESS" />. Dabar galite pasiekti savo žymes, istoriją ir kitus nustatymus visuose įrenginiuose, kuriuose esate prisijungę.</translation>
 <translation id="4631713731678262610">Paslėpti „Chrome“ meniu elementą</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb
index b778b5e9..8b80356 100644
--- a/chrome/app/resources/google_chrome_strings_lv.xtb
+++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome — paziņojumi</translation>
 <translation id="1104959162601287462">Par &amp;Chrome OS</translation>
 <translation id="110877069173485804">Šis ir jūsu pārlūks Chrome</translation>
-<translation id="1225016890511909183">Chrome droši saglabās jūsu informāciju, lai tā vairs nebūtu atkārtoti jāievada, bet, veicot turpmākus maksājumus, jums joprojām būs jāapstiprina kartes drošības kods.</translation>
 <translation id="123620459398936149">Chrome OS nevarēja sinhronizēt jūsu datus. Lūdzu, atjauniniet savu sinhronizācijas ieejas frāzi.</translation>
 <translation id="127345590676626841">Pārlūks Chrome tiek atjaunināts automātiski, tādēļ jums vienmēr būs pieejama visjaunākā versija. Kad šī lejupielāde būs pabeigta, pārlūks Chrome tiks restartēts un varēsiet sākt lietot visjaunāko versiju.</translation>
 <translation id="1302523850133262269">Lūdzu, uzgaidiet, kamēr Chrome instalē jaunākos sistēmas atjauninājumus.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Saņemt palīdzību par Chrome OS izmantošanu</translation>
 <translation id="1818142563254268765">Pārlūku Chrome nevarēja automātiski atjaunināt uz jaunāko versiju, tāpēc jums nav pieejamas vairākas jaunas, noderīgas funkcijas un drošības uzlabojumi. Atjauniniet pārlūku Chrome.</translation>
+<translation id="1864458292167284385">Chrome lietotņu palaidēja darbība tiek pārtraukta.</translation>
 <translation id="1877026089748256423">Chrome versija ir novecojusi.</translation>
 <translation id="2077129598763517140">Izmantot aparatūras paātrināšanas režīmu, kad tas ir pieejams</translation>
 <translation id="2084710999043359739">Pievienot pārlūkam Chrome</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome verificēja, ka <ph name="ISSUER" /> izsniedza šīs vietnes sertifikātu. Serveris sniedza Certificate Transparency informāciju, taču Chrome neatpazina nevienu no Certificate Transparency žurnāliem.</translation>
 <translation id="3889417619312448367">Atinstalēt Google Chrome</translation>
+<translation id="396182988103551265">Lai turpmāk piekļūtu savām lietotnēm, izmantojiet saīsni <ph name="APPS_ICON_IMAGE" /> Chrome grāmatzīmju joslā.</translation>
 <translation id="4042449298237264661">Šajā datorā vairs netiks saņemti Google Chrome atjauninājumi, jo operētājsistēmas Windows XP un Windows Vista vairs netiek atbalstītas.</translation>
 <translation id="4050175100176540509">Jaunākajā versijā ir pieejami svarīgi drošības uzlabojumi un jaunas funkcijas.</translation>
 <translation id="4053720452172726777">Pielāgot un kontrolēt Google Chrome</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Lūdzu, izrakstieties un pierakstieties vēlreiz, lai šīs izmaiņas stātos spēkā.</translation>
 <translation id="4480040274068703980">Chrome OS nevarēja sinhronizēt jūsu datus pierakstīšanās kļūdas dēļ.</translation>
-<translation id="4513711165509885787">Jūsu norēķinu dati ir saglabāti pārlūkā Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome ļauj jums noklikšķināt uz tālruņa numura un zvanīt ar to pakalpojumā Skype!</translation>
 <translation id="4567424176335768812">Jūs esat pierakstījies kā <ph name="USER_EMAIL_ADDRESS" />. Tagad varat piekļūt savām grāmatzīmēm, vēsturei un citiem iestatījumiem visās ierīcēs, kurās esat pierakstījies.</translation>
 <translation id="4631713731678262610">Paslēpt Chrome izvēlnē</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb
index 00d1ab54..39b2d17 100644
--- a/chrome/app/resources/google_chrome_strings_ml.xtb
+++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - അറിയിപ്പുകൾ</translation>
 <translation id="1104959162601287462">&amp;Chrome OS-നെക്കുറിച്ച്</translation>
 <translation id="110877069173485804">ഇതാണ് നിങ്ങളുടെ Chrome</translation>
-<translation id="1225016890511909183">Chrome നിങ്ങളുടെ വിവരങ്ങൾ സുരക്ഷിതമായി സംഭരിക്കുന്നതിനാൽ നിങ്ങൾക്ക് ഇത് വീണ്ടും ടൈപ്പുചെയ്യേണ്ടിവരില്ല, എങ്കിലും ഭാവിയിലെ പേയ്‌മെന്റുകൾക്കായി നിങ്ങളുടെ കാർഡിന്റെ സുരക്ഷാ കോഡ് തുടർന്നും സ്ഥിരീകരിക്കേണ്ടിവരും.</translation>
 <translation id="123620459398936149">Chrome OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല. നിങ്ങളുടെ സമന്വയ പാസ്‌ഫ്രെയ്സ് അപ്‌ഡേറ്റുചെയ്യുക.</translation>
 <translation id="127345590676626841">Chrome യാന്ത്രികമായി അപ്‌ഡേറ്റുചെയ്യുന്നതിനാൽ, നിങ്ങളുടേത് എല്ലായ്പ്പോഴും ഏറ്റവും പുതിയ പതിപ്പായിരിക്കും. ഈ ഡൗൺലോഡ് പൂർത്തിയാകുമ്പോൾ Chrome പുനരാരംഭിക്കും, അതിനുശേഷം നിങ്ങൾക്ക് തുടരാം.</translation>
 <translation id="1302523850133262269">ഏറ്റവും പുതിയ സിസ്‌റ്റം അപ്‌ഡേറ്റുകൾ Chrome ഇൻസ്റ്റാളുചെയ്യുന്നതുവരെ കാത്തിരിക്കുക.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS ഉപയോഗിച്ച് സഹായം നേടുക</translation>
 <translation id="1818142563254268765">ഏറ്റവും പുതിയ പതിപ്പിലേയ്ക്ക് Chrome-ന് സ്വയം അപ്‌ഡേറ്റുചെയ്യാൻ കഴിയാത്തതിനാൽ നിങ്ങൾക്ക് ആകർഷണീയമായ പുതിയ സവിശേഷതകളും സുരക്ഷ പരിഹരിക്കലുകളും നഷ്‌ടപ്പെടും. നിങ്ങൾ Chrome അപ്‌ഡേറ്റുചെയ്യേണ്ടതുണ്ട്.</translation>
+<translation id="1864458292167284385">Chrome അപ്ലിക്കേഷൻ ലോഞ്ചർ പ്രവർത്തനം അവസാനിപ്പിക്കാൻ പോവുകയാണ്.</translation>
 <translation id="1877026089748256423">Chrome കാലഹരണപ്പെട്ടതാണ്</translation>
 <translation id="2077129598763517140">ലഭ്യമാകുമ്പോൾ ഹാർഡ്‌വെയർ ത്വരിതപ്പെടുത്തൽ ഉപയോഗിക്കുക</translation>
 <translation id="2084710999043359739">Chrome-ലേക്ക് ചേർക്കുക</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">ഈ വെബ്‌സൈറ്റിന്റെ സർട്ടിഫിക്കറ്റ് <ph name="ISSUER" /> നൽകിയതാണെന്ന് Chrome പരിശോധിച്ചുറപ്പിച്ചു. സെർവർ, സാധുതയുള്ള സർട്ടിഫിക്കറ്റ് സുതാര്യത വിവരം നൽകിയെങ്കിലും, സർട്ടിഫിക്കറ്റ് സുതാര്യത ലോഗുകളിൽ ഒന്നുംതന്നെ Chrome തിരിച്ചറിഞ്ഞില്ല.</translation>
 <translation id="3889417619312448367">Google Chrome അണ്‍‌ഇന്‍സ്റ്റാള്‍ ചെയ്യുക</translation>
+<translation id="396182988103551265">നിങ്ങളുടെ ആപ്‌സ് ആക്‌സസ്സ് ചെയ്യുന്നത് തുടരാൻ, Chrome ബുക്ക്‌മാർക്കുകളിലെ <ph name="APPS_ICON_IMAGE" /> കുറുക്കുവഴി ഉപയോഗിക്കുക.</translation>
 <translation id="4042449298237264661">Windows XP അല്ലെങ്കിൽ Windows Vista-യെ ഇനി പിന്തുണയ്‌ക്കാത്തതിനാൽ ഈ കമ്പ്യൂട്ടറിന് ഇനി Google Chrome അപ്‌ഡേറ്റുകൾ സ്വീകരിക്കാനാകില്ല.</translation>
 <translation id="4050175100176540509">ഏറ്റവും പുതിയ പതിപ്പിൽ പ്രധാനപ്പെട്ട സുരക്ഷ മെച്ചപ്പെടുത്തലുകളും പുതിയ ഫീച്ചറുകളും ലഭ്യമാണ്.</translation>
 <translation id="4053720452172726777">Google Chrome ഇഷ്‌ടാനുസൃതമാക്കുക, നിയന്ത്രിക്കുക</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">ഈ മാറ്റം പ്രാബല്യത്തിൽ വരുന്നതിന് സൈൻ ഔട്ട് ചെയ്‌ത് വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation>
 <translation id="4480040274068703980">സൈൻ ഇൻ ചെയ്യുന്നതിലെ പിശക് കാരണം Chrome OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
-<translation id="4513711165509885787">നിങ്ങളുടെ ബില്ലിംഗ് വിശദാംശങ്ങൾ Chrome-ൽ സംരക്ഷിച്ചു.</translation>
 <translation id="4561051373932531560">വെബ്ബിലുള്ള ഒരു ഫോണ്‍ നമ്പരില്‍ ക്ലിക്കുചെയ്യുവാനും Skype ഉപയോഗിച്ച് വിളിക്കുവാനും Google Chrome നിങ്ങളെ അനുവദിക്കുന്നു!</translation>
 <translation id="4567424176335768812">നിങ്ങൾ <ph name="USER_EMAIL_ADDRESS" /> ആയി സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു. സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകളും ചരിത്രവും മറ്റ് ക്രമീകരണങ്ങളും ആക്‌സസ്സുചെയ്യാൻ ഇപ്പോൾ നിങ്ങൾക്കാകും.</translation>
 <translation id="4631713731678262610">Chrome മെനുവിൽ മറയ്‌ക്കുക</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb
index 52fcf11..d708192 100644
--- a/chrome/app/resources/google_chrome_strings_mr.xtb
+++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -11,7 +11,6 @@
 <translation id="1073391069195728457">Chrome - सूचना</translation>
 <translation id="1104959162601287462">&amp;Chrome OS विषयी</translation>
 <translation id="110877069173485804">हा आपला Chrome आहे</translation>
-<translation id="1225016890511909183">Chrome आपली माहिती सुरक्षितपणे संचयित करेल यामुळे आपल्याला ती पुन्हा टाइप करण्याची आवश्यकता नाही, परंतु आपल्याला तरीही भविष्यातील देयांसाठी आपल्या कार्डचा सुरक्षितता कोड सत्यापित करण्याची आवश्यकता असेल.</translation>
 <translation id="123620459398936149">Chrome OS आपला डेटा संकालित करू शकले नाही. कृपया आपला संकालन सांकेतिक वाक्यांश अद्यतनित करा.</translation>
 <translation id="127345590676626841">Chrome स्वयंचलितपणे अद्यतनित होते जेणेकरून आपल्याकडे नेहमी सर्वात नवीन आवृत्ती असते. जेव्हा हे डाउनलोड पूर्ण होते, तेव्हा Chrome रीस्टार्ट होईल आणि आपण आपल्या मार्गावर असाल.</translation>
 <translation id="1302523850133262269">कृपया Chrome नवीनतम सिस्टीम अद्यतने स्थापित करताना प्रतीक्षा करा.</translation>
@@ -36,6 +35,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS वापरून मदत मिळवा </translation>
 <translation id="1818142563254268765">Chrome नवीनतम आवृत्तीमध्ये स्वतःस अद्यतनित करू शकले नाही, म्हणून आपल्याकडे अद्भुत नवीन वैशिष्ट्ये आणि सुरक्षितता निराकरणे नाहीत. आपल्याला Chrome अद्यतनित करण्याची आवश्यकता आहे.</translation>
+<translation id="1864458292167284385">Chrome अॅप लाँचर जाणार आहे.</translation>
 <translation id="1877026089748256423">Chrome कालबाह्य आहे</translation>
 <translation id="2077129598763517140">उपलब्ध असेल तेव्हा हार्डवेअर ऍक्सीलरेशन वापरा</translation>
 <translation id="2084710999043359739">Chrome मध्ये जोडा</translation>
@@ -91,6 +91,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ने सत्यापित केले की <ph name="ISSUER" /> ने या वेबसाइटचे प्रमाणपत्र जारी केले. सर्व्हरने प्रमाणपत्र पारदर्शकता माहिती पुरविली परंतु Chrome ने कोणतेही प्रमाणपत्र पारदर्शकता लॉग ओळखले नाही.</translation>
 <translation id="3889417619312448367">Google Chrome विस्थापित करा</translation>
+<translation id="396182988103551265">आपल्या अॅप्समध्ये प्रवेश करणे सुरु ठेवण्यासाठी Chrome बुकमार्क बार मधील <ph name="APPS_ICON_IMAGE" /> शॉर्टकट वापरा.</translation>
 <translation id="4042449298237264661">Windows XP आणि Windows Vista यापुढे समर्थित नसल्याने या संगणकास यापुढे Google Chrome अद्यतने प्राप्त होणार नाहीत.</translation>
 <translation id="4050175100176540509">नवीनतम आवृत्तीमध्‍ये महत्त्वाच्या सुरक्षितता सुधारणा आणि नवीन वैशिष्ट्ये उपलब्‍ध आहेत.</translation>
 <translation id="4053720452172726777">Google Chrome सानुकूल करा आणि नियंत्रित करा</translation>
@@ -105,7 +106,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">कृपया हा बदल प्रभावी होण्यासाठी साइन आउट करा आणि साइन इन करा.</translation>
 <translation id="4480040274068703980">साइन इन करण्यात त्रुटीमुळे Chrome OS आपला डेटा संकालित करू शकले नाही.</translation>
-<translation id="4513711165509885787">आपले बिलिंग तपशील Chrome मध्ये जतन करण्यात आले आहेत.</translation>
 <translation id="4561051373932531560">Google Chrome आपल्याला वेबवरील फोन नंबर क्लिक करू देते आणि त्या नंबरवर Skype द्वारा कॉल करू देते!</translation>
 <translation id="4567424176335768812">आपण <ph name="USER_EMAIL_ADDRESS" /> म्हणून साइन इन केले आहे. आता आपण आपल्या सर्व साइन इन केलेल्या डिव्हाइसेसवरील आपल्या बुकमार्क, इतिहास आणि अन्य सेटिंग्जवर प्रवेश करू शकता.</translation>
 <translation id="4631713731678262610">Chrome मेनूमध्‍ये लपवा</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb
index 7eb717d..e339ffe 100644
--- a/chrome/app/resources/google_chrome_strings_ms.xtb
+++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Pemberitahuan</translation>
 <translation id="1104959162601287462">Mengenai &amp;Chrome OS</translation>
 <translation id="110877069173485804">Ini Chrome anda</translation>
-<translation id="1225016890511909183">Chrome akan menyimpan maklumat anda dengan selamat supaya anda tidak perlu menaipkannya semula, tetapi anda masih perlu mengesahkan kod keselamatan kad anda untuk pembayaran pada masa hadapan.</translation>
 <translation id="123620459398936149">OS Chrome tidak dapat menyegerakkan data anda. Sila kemas kini frasa laluan Segerak anda.</translation>
 <translation id="127345590676626841">Chrome dikemas kini secara automatik supaya anda sentiasa mempunyai versi yang terbaharu. Apabila muat turun ini selesai, Chrome akan dimulakan semula dan anda sudah boleh menggunakannya.</translation>
 <translation id="1302523850133262269">Sila tunggu sementara Chrome memasang kemas kini sistem terkini.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Dapatkan bantuan untuk menggunakan Chrome OS</translation>
 <translation id="1818142563254268765">Chrome tidak dapat dikemas kini kepada versi yang terbaharu, jadi anda terlepas ciri baharu yang hebat dan pembetulan keselamatan. Anda perlu mengemas kini Chrome.</translation>
+<translation id="1864458292167284385">Pelancar Apl Chrome akan ditamatkan.</translation>
 <translation id="1877026089748256423">Chrome sudah usang</translation>
 <translation id="2077129598763517140">Gunakan pecutan perkakasan apabila tersedia</translation>
 <translation id="2084710999043359739">Tambahkan pada Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome mengesahkan bahawa <ph name="ISSUER" /> mengeluarkan siil tapak web ini. Pelayan membekalkan maklumat Ketelusan Sijil, tetapi Chrome tidak mengenali mana-mana log Ketelusan Sijil.</translation>
 <translation id="3889417619312448367">Nyahpasang Google Chrome</translation>
+<translation id="396182988103551265">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> dalam bar penanda halaman Chrome untuk terus mengakses apl anda.</translation>
 <translation id="4042449298237264661">Komputer ini tidak lagi akan menerima kemas kini Google Chrome kerana Windows XP dan Windows Vista sudah tidak disokong.</translation>
 <translation id="4050175100176540509">Peningkatan keselamatan penting dan ciri baharu tersedia dalam versi terkini.</translation>
 <translation id="4053720452172726777">Sesuaikan dan kawal Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">OS Google Chrome</translation>
 <translation id="4458285410772214805">Sila log keluar dan log masuk semula supaya perubahan ini boleh dilaksanakan.</translation>
 <translation id="4480040274068703980">OS Chrome tidak dapat menyegerakkan data anda disebabkan oleh ralat melog masuk.</translation>
-<translation id="4513711165509885787">Butiran pengebilan anda telah disimpan dalam Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome membolehkan anda mengklik nombor telefon pada web dan menghubunginya dengan Skype!</translation>
 <translation id="4567424176335768812">Anda telah log masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Sekarang anda boleh mengakses penanda halaman, sejarah dan tetapan anda yang lain pada semua peranti yang anda gunakan untuk log masuk.</translation>
 <translation id="4631713731678262610">Sembunyikan dalam menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index 6741564..0226f65 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - Meldingen</translation>
 <translation id="1104959162601287462">Over &amp;Chrome OS</translation>
 <translation id="110877069173485804">Personaliseer jouw Chrome</translation>
-<translation id="1225016890511909183">Chrome slaat je gegevens veilig op, zodat je deze niet opnieuw hoeft op te geven, maar je moet nog steeds de beveiligingscode van je kaart opgeven voor toekomstige betalingen.</translation>
 <translation id="123620459398936149">Chrome OS kan je gegevens niet synchroniseren. Update je wachtwoordzin voor synchronisatie.</translation>
 <translation id="127345590676626841">Chrome wordt automatisch bijgewerkt, zodat je altijd beschikt over de nieuwste versie. Wanneer deze download is voltooid, wordt Chrome opnieuw gestart en kun je doorgaan.</translation>
 <translation id="1302523850133262269">Wacht terwijl Chrome de nieuwste systeemupdates installeert.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Hulp bij het gebruik van Chrome OS</translation>
 <translation id="1818142563254268765">Chrome kan niet automatisch worden geüpdatet naar de nieuwste versie, waardoor je geweldige nieuwe functies en beveiligingsoplossingen misloopt. Je moet Chrome updaten.</translation>
+<translation id="1864458292167284385">De Chrome App Launcher gaat verdwijnen.</translation>
 <translation id="1877026089748256423">Chrome is verouderd</translation>
 <translation id="2077129598763517140">Hardwareversnelling gebruiken indien beschikbaar</translation>
 <translation id="2084710999043359739">Toevoegen aan Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome heeft geverifieerd dat <ph name="ISSUER" /> het certificaat van deze website heeft uitgegeven. De server heeft certificaattransparantiegegevens geleverd, maar Chrome heeft geen van de logboeken voor certificaattransparantie herkend.</translation>
 <translation id="3889417619312448367">Google Chrome verwijderen</translation>
+<translation id="396182988103551265">Gebruik de snelkoppeling <ph name="APPS_ICON_IMAGE" /> op de Chrome-bladwijzerbalk om toegang te krijgen tot je apps.</translation>
 <translation id="4042449298237264661">Deze computer ontvangt geen Google Chrome-updates meer, omdat Windows XP en Windows Vista niet meer worden ondersteund.</translation>
 <translation id="4050175100176540509">Er zijn belangrijke beveiligingsverbeteringen en nieuwe functies beschikbaar in de nieuwste versie.</translation>
 <translation id="4053720452172726777">Google Chrome aanpassen en beheren</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Log uit en log weer in om deze wijziging door te voeren.</translation>
 <translation id="4480040274068703980">Chrome OS kan je gegevens niet synchroniseren door een fout tijdens het inloggen.</translation>
-<translation id="4513711165509885787">Je factureringsgegevens zijn opgeslagen in Chrome.</translation>
 <translation id="4561051373932531560">Met Google Chrome kun je klikken op een telefoonnummer op internet om dit via Skype te bellen!</translation>
 <translation id="4567424176335768812">Je bent ingelogd als <ph name="USER_EMAIL_ADDRESS" />. Je hebt nu toegang tot je bladwijzers, geschiedenis en andere instellingen op al je apparaten waarop je bent ingelogd.</translation>
 <translation id="4631713731678262610">Verbergen in Chrome-menu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb
index 03102ba..871b5539 100644
--- a/chrome/app/resources/google_chrome_strings_no.xtb
+++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – varsler</translation>
 <translation id="1104959162601287462">Om &amp;Chrome OS</translation>
 <translation id="110877069173485804">Dette er din Chrome</translation>
-<translation id="1225016890511909183">Chrome lagrer informasjonen din sikkert, slik at du slipper å skrive den inn på nytt. Du må imidlertid bekrefte kortets sikkerhetskode ved fremtidig bruk.</translation>
 <translation id="123620459398936149">Chrome OS kunne ikke synkronisere dataene dine. Oppdater passordfrasen for synkronisering.</translation>
 <translation id="127345590676626841">Chrome oppdateres automatisk, sånn at du alltid har den nyeste versjonen. Når denne nedlastingen er fullført, kommer Chrome til å starte på nytt, og du er i gang.</translation>
 <translation id="1302523850133262269">Vent mens Chrome installerer de nyeste systemoppdateringene.</translation>
@@ -102,7 +101,6 @@
 <translation id="4407807842708586359">Google Chromes operativsystem</translation>
 <translation id="4458285410772214805">Logg deg av og så på igjen for at denne endringen skal tre i kraft.</translation>
 <translation id="4480040274068703980">Chrome OS kunne ikke synkronisere dataene dine på grunn av en feil under pålogging.</translation>
-<translation id="4513711165509885787">Faktureringsdetaljene dine er lagret i Chrome.</translation>
 <translation id="4561051373932531560">Med Google Chrome kan du klikke på et telefonnummer på Internett og ringe ved bruk av Skype!</translation>
 <translation id="4567424176335768812">Du er logget på som <ph name="USER_EMAIL_ADDRESS" />. Nå kan du bruke bokmerkene, loggen og andre innstillinger på alle enhetene du er logget på.</translation>
 <translation id="4631713731678262610">Skjul i Chrome-menyen</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb
index 15477db..14c00fd 100644
--- a/chrome/app/resources/google_chrome_strings_pl.xtb
+++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – powiadomienia</translation>
 <translation id="1104959162601287462">System operacyjny &amp;Chrome – informacje</translation>
 <translation id="110877069173485804">Oto Twój Chrome</translation>
-<translation id="1225016890511909183">Chrome będzie bezpiecznie przechowywać Twoje dane, dzięki czemu nie będzie trzeba wpisywać ich ponownie. W przypadku przyszłych płatności konieczne jednak będzie zweryfikowanie kodu bezpieczeństwa karty.</translation>
 <translation id="123620459398936149">System operacyjny Chrome nie może zsynchronizować danych. Zaktualizuj hasło synchronizacji.</translation>
 <translation id="127345590676626841">Chrome aktualizuje się automatycznie, więc zawsze masz najnowszą wersję. Po zakończeniu pobierania Chrome uruchomi się ponownie i będzie gotowy do działania.</translation>
 <translation id="1302523850133262269">Poczekaj, aż Chrome zainstaluje najnowsze aktualizacje systemu.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Skorzystaj z pomocy dotyczącej używania systemu operacyjnego Chrome</translation>
 <translation id="1818142563254268765">Nie udało się zaktualizować Chrome do najnowszej wersji, więc nie masz nowych, przydatnych funkcji ani poprawek zabezpieczeń. Musisz zaktualizować Chrome.</translation>
+<translation id="1864458292167284385">Wycofujemy Menu z aplikacjami Chrome.</translation>
 <translation id="1877026089748256423">Chrome jest nieaktualny</translation>
 <translation id="2077129598763517140">Użyj akceleracji sprzętowej, gdy jest dostępna</translation>
 <translation id="2084710999043359739">Dodaj do Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome sprawdził, że wydawcą certyfikatu tej witryny jest <ph name="ISSUER" />. Serwer dostarczył informacje o certyfikacie, korzystając z protokołu Certificate Transparency, ale Chrome nie rozpoznał żadnego z dzienników.</translation>
 <translation id="3889417619312448367">Odinstaluj Google Chrome</translation>
+<translation id="396182988103551265">Aby nadal uruchamiać aplikacje, możesz korzystać ze skrótu <ph name="APPS_ICON_IMAGE" /> na pasku zakładek w Chrome.</translation>
 <translation id="4042449298237264661">Google Chrome nie będzie już aktualizować się na tym komputerze, bo nie jest zgodny z Windows XP ani Windows Vista.</translation>
 <translation id="4050175100176540509">W najnowszej wersji zostały wprowadzone ważne poprawki bezpieczeństwa i nowe funkcje.</translation>
 <translation id="4053720452172726777">Dostosowywanie i kontrolowanie Google Chrome</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">System operacyjny Google Chrome</translation>
 <translation id="4458285410772214805">Wyloguj się i zaloguj ponownie, by zmiana zaczęła obowiązywać.</translation>
 <translation id="4480040274068703980">System operacyjny Chrome nie może zsynchronizować danych z powodu błędu logowania.</translation>
-<translation id="4513711165509885787">Szczegóły płatności zostały zapisane w Chrome.</translation>
 <translation id="4561051373932531560">W przeglądarce Google Chrome możesz kliknąć numer telefonu zamieszczony w sieci i zadzwonić na niego za pośrednictwem usługi Skype!</translation>
 <translation id="4567424176335768812">Jesteś zalogowany jako <ph name="USER_EMAIL_ADDRESS" />. Teraz możesz korzystać ze swoich zakładek, historii i innych ustawień na wszystkich zalogowanych urządzeniach.</translation>
 <translation id="4631713731678262610">Ukryj w menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
index fd3fcd01..319163b6 100644
--- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Google Chrome - Notificações</translation>
 <translation id="1104959162601287462">Sobre o Chrome OS</translation>
 <translation id="110877069173485804">Este é seu Chrome</translation>
-<translation id="1225016890511909183">O Google Chrome armazena suas informações com segurança para que não seja necessário digitá-las novamente, mas você ainda precisa confirmar o código de segurança de seu cartão para pagamentos futuros.</translation>
 <translation id="123620459398936149">O Google Chrome não pôde sincronizar seus dados. Atualize sua senha de sincronização.</translation>
 <translation id="127345590676626841">O Chrome é atualizado automaticamente para que você sempre tenha a versão mais recente. Quando o download estiver concluído, o Chrome será reiniciado e você estará pronto.</translation>
 <translation id="1302523850133262269">Aguarde enquanto o Chrome instala as últimas atualizações do sistema.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obter ajuda para usar o Chrome OS</translation>
 <translation id="1818142563254268765">Não foi possível atualizar o Google Chrome para a versão mais recente. Com isso, você está perdendo novos recursos e correções de segurança incríveis. Atualize o Chrome.</translation>
+<translation id="1864458292167284385">O Iniciador de aplicativos do Google Chrome será desativado.</translation>
 <translation id="1877026089748256423">O Google Chrome está desatualizado</translation>
 <translation id="2077129598763517140">Usar aceleração de hardware quando disponível</translation>
 <translation id="2084710999043359739">Adicionar ao Google Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">O Chrome verificou que <ph name="ISSUER" /> emitiu o certificado deste website. O servidor forneceu informações de Transparência de certificado, mas o Chrome não reconheceu nenhum dos registros de Transparência de certificado.</translation>
 <translation id="3889417619312448367">Desinstalar o Google Chrome</translation>
+<translation id="396182988103551265">Use o atalho <ph name="APPS_ICON_IMAGE" /> na barra de favoritos do Chrome para continuar acessando seus apps.</translation>
 <translation id="4042449298237264661">Este computador não receberá mais atualizações do Google Chrome porque o Windows XP e o Windows Vista não são mais compatíveis.</translation>
 <translation id="4050175100176540509">Melhorias de segurança importantes e novos recursos estão disponíveis na versão mais recente.</translation>
 <translation id="4053720452172726777">Personalizar e controlar o Google Chrome</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">Sistema operacional (OS) do Google Chrome</translation>
 <translation id="4458285410772214805">Saia e faça login novamente para que esta alteração entre em vigor.</translation>
 <translation id="4480040274068703980">O Chrome OS não pôde sincronizar seus dados devido a um erro durante o login.</translation>
-<translation id="4513711165509885787">Seus dados para cobrança foram salvos no Google Chrome.</translation>
 <translation id="4561051373932531560">O Google Chrome permite que você clique em um número de telefone na web e ligue para ele com o Skype!</translation>
 <translation id="4567424176335768812">Você está conectado como <ph name="USER_EMAIL_ADDRESS" />. Agora você pode acessar seus favoritos, histórico e outras configurações em todos os seus dispositivos conectados.</translation>
 <translation id="4631713731678262610">Esconder no menu do Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
index 063bfe4e..08fc663 100644
--- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – Notificações</translation>
 <translation id="1104959162601287462">Acerca do SO &amp;Chrome</translation>
 <translation id="110877069173485804">Este é o seu Chrome</translation>
-<translation id="1225016890511909183">O Chrome armazenará as suas informações em segurança para que não necessite de as introduzir novamente, mas continuará a ser necessário confirmar o código de segurança do seu cartão para futuros pagamentos.</translation>
 <translation id="123620459398936149">O SO Chrome não conseguiu sincronizar os dados. Atualize a sua frase de acesso de sincronização.</translation>
 <translation id="127345590676626841">O Chrome é atualizado automaticamente para que tenha sempre a versão mais recente. Quando a transferência estiver concluída, o Chrome irá reiniciar e o processo estará terminado.</translation>
 <translation id="1302523850133262269">Aguarde até que o Chrome instale as atualizações do sistema mais recentes.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obter ajuda para utilizar o SO Chrome</translation>
 <translation id="1818142563254268765">Não foi possível atualizar automaticamente o Chrome para a versão mais recente, pelo que está a perder novas funcionalidades e correções de segurança fantásticas. Tem de atualizar o Chrome.</translation>
+<translation id="1864458292167284385">O Iniciador de Aplicações do Chrome será descontinuado.</translation>
 <translation id="1877026089748256423">O Chrome está desatualizado</translation>
 <translation id="2077129598763517140">Utilizar aceleração de hardware sempre que estiver disponível</translation>
 <translation id="2084710999043359739">Adicionar ao Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">O Chrome confirmou que <ph name="ISSUER" /> emitiu o certificado deste Website. O servidor forneceu informações de Transparência do certificado, mas o Chrome não reconheceu os registos de Transparência do certificado.</translation>
 <translation id="3889417619312448367">Desinstalar o Google Chrome</translation>
+<translation id="396182988103551265">Utilize o atalho <ph name="APPS_ICON_IMAGE" /> na barra de marcadores do Chrome para continuar a aceder às aplicações.</translation>
 <translation id="4042449298237264661">Este computador deixará de receber atualizações do Google Chrome, uma vez que o Windows XP e o Windows Vista já não são suportados.</translation>
 <translation id="4050175100176540509">Estão disponíveis na versão mais recente melhorias de segurança importantes e novas funcionalidades.</translation>
 <translation id="4053720452172726777">Personalizar e controlar o Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">SO do Google Chrome</translation>
 <translation id="4458285410772214805">Termine sessão e volte a iniciar sessão para que esta alteração tenha efeito.</translation>
 <translation id="4480040274068703980">O SO Chrome não conseguiu sincronizar os dados devido a um erro no início de sessão.</translation>
-<translation id="4513711165509885787">Os seus detalhes de faturação foram guardados no Chrome.</translation>
 <translation id="4561051373932531560">O Google Chrome permite-lhe clicar num número de telefone na Web e fazer a chamada com o Skype!</translation>
 <translation id="4567424176335768812">Tem sessão iniciada como <ph name="USER_EMAIL_ADDRESS" />. Agora, pode aceder aos seus marcadores, ao histórico e a outras definições em todos os dispositivos com sessão iniciada.</translation>
 <translation id="4631713731678262610">Ocultar no menu do Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb
index 2436f3b..97020e9 100644
--- a/chrome/app/resources/google_chrome_strings_ro.xtb
+++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – Notificări</translation>
 <translation id="1104959162601287462">Despre sistemul de operare &amp;Chrome</translation>
 <translation id="110877069173485804">Acesta este browserul dvs. Chrome</translation>
-<translation id="1225016890511909183">Chrome va stoca în siguranță informațiile dvs., astfel încât să nu trebuiască să le introduceți din nou, dar va trebui în continuare să confirmați codul de securitate al cardului pentru viitoarele plăți.</translation>
 <translation id="123620459398936149">Sistemul de operare Chrome nu a putut sincroniza datele. Actualizați parola de acces pentru sincronizare.</translation>
 <translation id="127345590676626841">Chrome se actualizează automat, deci vei avea întotdeauna cea mai recentă versiune. După această descărcare, Chrome va reporni și va fi gata de utilizare.</translation>
 <translation id="1302523850133262269">Așteaptă până când Chrome instalează cele mai recente actualizări de sistem.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Obțineți ajutor în legătură cu utilizarea sistemului de operare Chrome</translation>
 <translation id="1818142563254268765">Chrome nu s-a putut actualiza automat la cea mai recentă versiune, astfel încât pierdeți noi funcții excelente și remedieri de securitate. Trebuie să actualizați Chrome.</translation>
+<translation id="1864458292167284385">Lansatorul de aplicații Chrome nu va mai fi disponibil.</translation>
 <translation id="1877026089748256423">Chrome nu este actualizat</translation>
 <translation id="2077129598763517140">Utilizează accelerarea hardware când este disponibilă</translation>
 <translation id="2084710999043359739">Adaugă în Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome s-a asigurat că certificatul acestui site a fost emis de <ph name="ISSUER" />. Serverul a oferit informații privind Certificate Transparency, însă Chrome nu a recunoscut niciunul dintre jurnalele Certificate Transparency.</translation>
 <translation id="3889417619312448367">Dezinstalează Google Chrome</translation>
+<translation id="396182988103551265">Folosește comanda rapidă <ph name="APPS_ICON_IMAGE" /> din bara de marcaje din Chrome pentru a accesa în continuare aplicațiile.</translation>
 <translation id="4042449298237264661">Acest computer nu va mai primi actualizări pentru Google Chrome, deoarece Windows XP și Windows Vista nu mai sunt acceptate.</translation>
 <translation id="4050175100176540509">În cea mai recentă versiune sunt disponibile îmbunătățiri de securitate și funcții noi importante.</translation>
 <translation id="4053720452172726777">Personalizați și controlați Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Sistemul de operare Google Chrome</translation>
 <translation id="4458285410772214805">Pentru ca modificarea să fie aplicată, deconectați-vă și conectați-vă din nou.</translation>
 <translation id="4480040274068703980">Sistemul de operare Chrome nu a putut sincroniza datele din cauza unei erori la conectare.</translation>
-<translation id="4513711165509885787">Detaliile de facturare au fost salvate în Chrome.</translation>
 <translation id="4561051373932531560">Cu Google Chrome, poți să dai clic pe un număr de telefon de pe web pentru a-l apela cu Skype!</translation>
 <translation id="4567424176335768812">V-ați conectat ca <ph name="USER_EMAIL_ADDRESS" />. Acum vă puteți accesa marcajele, istoricul și alte setări de pe toate dispozitivele pe care v-ați conectat.</translation>
 <translation id="4631713731678262610">Ascunde în meniul Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb
index 0481fdb..eda2a4b 100644
--- a/chrome/app/resources/google_chrome_strings_ru.xtb
+++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Оповещения</translation>
 <translation id="1104959162601287462">О &amp;Chrome OS</translation>
 <translation id="110877069173485804">Ваш персональный Chrome</translation>
-<translation id="1225016890511909183">Chrome будет хранить ваши данные в защищенном виде, и их не придется вводить повторно – достаточно будет лишь указать код безопасности кредитной карты.</translation>
 <translation id="123620459398936149">Не удалось синхронизировать данные. Обновите кодовую фразу в Sync.</translation>
 <translation id="127345590676626841">Chrome обновляется автоматически, поэтому у вас всегда будет установлена последняя версия. После завершения скачивания и перезагрузки вы сможете продолжить работу.</translation>
 <translation id="1302523850133262269">Подождите, пока Chrome устанавливает последние обновления системы</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Помощь по использованию Chrome OS</translation>
 <translation id="1818142563254268765">Не удалось установить последнюю версию Chrome. Обновите браузер, чтобы применить исправления безопасности и воспользоваться новыми замечательными функциями.</translation>
+<translation id="1864458292167284385">Мы прекращаем поддержку Панели запуска приложений Chromе</translation>
 <translation id="1877026089748256423">Версия Chrome устарела</translation>
 <translation id="2077129598763517140">Использовать аппаратное ускорение (при наличии)</translation>
 <translation id="2084710999043359739">Установить</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Данные Chrome подтверждают, что издатель сертификата сайта – <ph name="ISSUER" />. Сервер предоставил временные метки сертификата, однако распознать их журналы не удалось.</translation>
 <translation id="3889417619312448367">Удалить Google Chrome</translation>
+<translation id="396182988103551265">Используйте ярлык <ph name="APPS_ICON_IMAGE" /> в панели закладок Chrome, чтобы получить доступ к приложениям.</translation>
 <translation id="4042449298237264661">Google Chrome больше не будет обновляться на этом компьютере, так как поддержка Windows XP и Windows Vista прекращена.</translation>
 <translation id="4050175100176540509">В последней версии улучшена защита и добавлены новые функции.</translation>
 <translation id="4053720452172726777">Настройка и управление Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Чтобы изменения вступили в силу, выполните вход еще раз.</translation>
 <translation id="4480040274068703980">Не удалось синхронизировать данные из-за ошибки входа в аккаунт.</translation>
-<translation id="4513711165509885787">Платежные данные сохранены в Chrome.</translation>
 <translation id="4561051373932531560">В Google Chrome вы можете нажать на любой номер телефона и позвонить на него через Skype!</translation>
 <translation id="4567424176335768812">Вы вошли с помощью аккаунта <ph name="USER_EMAIL_ADDRESS" />. Ваши закладки, история и другие настройки теперь доступны на всех устройствах, где вы используете этот аккаунт.</translation>
 <translation id="4631713731678262610">Не показывать в меню Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb
index 1ec2d771..dde4081 100644
--- a/chrome/app/resources/google_chrome_strings_sk.xtb
+++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome – upozornenia</translation>
 <translation id="1104959162601287462">Informácie o systéme &amp;Chrome OS</translation>
 <translation id="110877069173485804">Toto je váš prehliadač Chrome</translation>
-<translation id="1225016890511909183">Chrome vaše informácie bezpečne uloží, aby ste ich už nemuseli zadávať znova. V prípade budúcich platieb však budete musieť bezpečnostný kód svojej karty stále overiť.</translation>
 <translation id="123620459398936149">Systému OS Chrome sa nepodarilo synchronizovať vaše údaje. Aktualizujte prístupovú frázu synchronizácie.</translation>
 <translation id="127345590676626841">Chrome sa aktualizuje automaticky, aby ste mali vždy k dispozícii najnovšiu verziu. Po dokončení sťahovania sa Chrome reštartujte a začnete používať aktuálnu verziu.</translation>
 <translation id="1302523850133262269">Počkajte, kým Chrome nainštaluje najnovšie aktualizácie systému.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Získajte pomoc pri používaní systému Chrome OS</translation>
 <translation id="1818142563254268765">Prehliadač Chrome sa nedokázal aktualizovať na najnovšiu verziu. K dispozícii tak nie sú niektoré skvelé nové funkcie a bezpečnostné opravy. Prehliadač Chrome je potrebné aktualizovať.</translation>
+<translation id="1864458292167284385">Čoskoro ukončíme používanie Spúšťača aplikácií Chrome.</translation>
 <translation id="1877026089748256423">Prehliadač Chrome je zastaraný</translation>
 <translation id="2077129598763517140">Používať hardvérovú akceleráciu (keď je dostupná)</translation>
 <translation id="2084710999043359739">Pridať do prehliadača Chrome</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Spoločnosť Google Inc.</translation>
 <translation id="3881912906674381083">Chrome overil, že certifikát tohto webu bol vydaný vydavateľom <ph name="ISSUER" />. Server poskytol informácie o transparentnosti certifikátu, Chrome však nerozpoznal žiadne denníky transparentnosti certifikátu.</translation>
 <translation id="3889417619312448367">Odinštalovanie prehliadača Google Chrome</translation>
+<translation id="396182988103551265">K aplikáciám môžete naďalej pristupovať pomocou skratky <ph name="APPS_ICON_IMAGE" /> na paneli so záložkami prehliadača Chrome.</translation>
 <translation id="4042449298237264661">Tento počítač už nebude dostávať aktualizácie prehliadača Google Chrome, pretože systémy Windows XP a Windows Vista už nie sú podporované.</translation>
 <translation id="4050175100176540509">V najnovšej verzii sú k dispozícii dôležité vylepšenia zabezpečenia a nové funkcie.</translation>
 <translation id="4053720452172726777">Prispôsobiť a ovládať prehliadač Google Chrome</translation>
@@ -104,7 +105,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Ak chcete, aby sa zmeny prejavili, odhláste sa a znova sa prihláste.</translation>
 <translation id="4480040274068703980">Systému OS Chrome sa nepodarilo synchronizovať vaše údaje, pretože sa pri prihlasovaní vyskytla chyba.</translation>
-<translation id="4513711165509885787">Vaše fakturačné údaje sa uložili do prehliadača Chrome.</translation>
 <translation id="4561051373932531560">Prehliadač Google Chrome vám umožňuje vybrať telefónne číslo na webe a zavolať naň pomocou aplikácie Skype.</translation>
 <translation id="4567424176335768812">Ste prihlásený/-á ako <ph name="USER_EMAIL_ADDRESS" />. Teraz môžete na všetkých zariadeniach, kde ste prihlásený/-á, pristupovať k svojim záložkám, histórii a ďalším nastaveniam.</translation>
 <translation id="4631713731678262610">Skryť v Ponuke Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb
index 18b65e6..1ed0c6d 100644
--- a/chrome/app/resources/google_chrome_strings_sl.xtb
+++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome – Obvestila</translation>
 <translation id="1104959162601287462">O &amp;sistemu Chrome OS</translation>
 <translation id="110877069173485804">To je vaš Chrome</translation>
-<translation id="1225016890511909183">Chrome bo varno shranil vaše podatke, tako da vam jih ne bo treba več vnesti, vendar boste za plačila v prihodnosti še vedno morali preveriti varnostno kodo kartice.</translation>
 <translation id="123620459398936149">Chrome OS ne more sinhronizirati vaših podatkov. Posodobite geslo za Google Sync.</translation>
 <translation id="127345590676626841">Chrome se samodejno posodablja, zato boste vedno imeli najnovejšo različico. Ko bo ta prenos končan, se bo Chrome znova zagnal in lahko boste nadaljevali z delom.</translation>
 <translation id="1302523850133262269">Počakajte, da Chrome namesti najnovejše sistemske posodobitve.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Pomoč pri uporabi sistema Chrome OS</translation>
 <translation id="1818142563254268765">Chrome se ni mogel posodobiti na najnovejšo različico, zato ste prikrajšani za izjemne nove funkcije in varnostne popravke. Chrome morate posodobiti.</translation>
+<translation id="1864458292167284385">Chromov zaganjalnik aplikacij se poslavlja.</translation>
 <translation id="1877026089748256423">Chrome je zastarel</translation>
 <translation id="2077129598763517140">Uporabi strojno pospeševanje, če je na voljo</translation>
 <translation id="2084710999043359739">Dodaj v Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome je preveril, da je potrdilo tega spletnega mesta izdal izdajatelj <ph name="ISSUER" />. Strežnik je poslal podatke o preglednosti potrdila, vendar Chrome ni prepoznal nobenega od dnevnikov o preglednost potrdila.</translation>
 <translation id="3889417619312448367">Odstrani Google Chrome</translation>
+<translation id="396182988103551265">Če želite še naprej dostopati do aplikacij, uporabite bližnjico <ph name="APPS_ICON_IMAGE" /> v zaznamkih v Chromu.</translation>
 <translation id="4042449298237264661">Ta računalnik ne bo več prejemal posodobitev za Google Chrome, ker sistema Windows XP in Windows Vista nista več podprta.</translation>
 <translation id="4050175100176540509">V najnovejši različici so na voljo pomembne varnostne izboljšave in nove funkcije.</translation>
 <translation id="4053720452172726777">Prilagajanje in nadziranje Google Chroma</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Odjavite se in znova prijavite, da bodo te spremembe začele veljati.</translation>
 <translation id="4480040274068703980">Chrome OS ni mogel sinhronizirati podatkov zaradi napake pri prijavi.</translation>
-<translation id="4513711165509885787">Vaše podrobnosti za obračun so shranjene v Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome vam omogoča, da na spletu kliknete telefonsko številko in jo pokličete prek Skypa.</translation>
 <translation id="4567424176335768812">Prijavljeni ste kot <ph name="USER_EMAIL_ADDRESS" />. Zdaj imate dostop do zaznamkov, zgodovine in drugih nastavitev v vseh napravah, v katerih ste prijavljeni.</translation>
 <translation id="4631713731678262610">Skrij v meniju Chroma</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb
index edc55b84..9b11569 100644
--- a/chrome/app/resources/google_chrome_strings_sr.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome – Обавештења</translation>
 <translation id="1104959162601287462">О &amp;Chrome ОС-у</translation>
 <translation id="110877069173485804">Ово је ваш Chrome</translation>
-<translation id="1225016890511909183">Chrome ће безбедно складиштити информације, па нећете морати поново да их уносите, али ћете и даље морати да верификујете безбедносни кôд картице за будућа плаћања.</translation>
 <translation id="123620459398936149">Chrome ОС не може да синхронизује податке. Ажурирајте приступну фразу за Синхронизацију.</translation>
 <translation id="127345590676626841">Chrome се аутоматски ажурира, па увек имате најновију верзију. Када ово преузимање буде довршено, Chrome ће се поново покренути и бићете спремни.</translation>
 <translation id="1302523850133262269">Сачекајте да Chrome инсталира најновија ажурирања система.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Пронађи помоћ за коришћење Chrome ОС-а</translation>
 <translation id="1818142563254268765">Chrome не може сâм да се ажурира на најновију верзију, па пропуштате одличне нове функције и безбедносне исправке. Треба да ажурирате Chrome.</translation>
+<translation id="1864458292167284385">Покретач Chrome апликација се укида.</translation>
 <translation id="1877026089748256423">Chrome је застарео</translation>
 <translation id="2077129598763517140">Користи хардверско убрзање када је доступно</translation>
 <translation id="2084710999043359739">Додавање у Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome је верификовао да је <ph name="ISSUER" /> издао сертификат овог сајта. Сервер је послао информације о транспарентности сертификата, али Chrome није препознао ниједну евиденцију транспарентности сертификата.</translation>
 <translation id="3889417619312448367">Деинсталирај Google Chrome</translation>
+<translation id="396182988103551265">Користите пречицу за <ph name="APPS_ICON_IMAGE" /> у Chrome траци са обележивачима да бисте наставили да приступате апликацијама.</translation>
 <translation id="4042449298237264661">Овај рачунар више неће добијати ажурирања за Google Chrome јер Windows XP и Windows Vista више нису подржани.</translation>
 <translation id="4050175100176540509">Важна безбедносна побољшања и нове функције су доступни у најновијој верзији.</translation>
 <translation id="4053720452172726777">Прилагодите и контролишите Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Одјавите се и поново се пријавите да би ова промена ступила на снагу.</translation>
 <translation id="4480040274068703980">Chrome ОС не може да синхронизује податке због грешке при пријављивању.</translation>
-<translation id="4513711165509885787">Детаљи обрачуна су сачувани у Chrome-у.</translation>
 <translation id="4561051373932531560">Google Chrome вам омогућава да кликнете на број телефона на вебу и да га позовете помоћу Skype-а!</translation>
 <translation id="4567424176335768812">Пријављени сте као <ph name="USER_EMAIL_ADDRESS" />. Сада можете да приступате обележивачима, историји и другим подешавањима на свим уређајима на којима сте пријављени.</translation>
 <translation id="4631713731678262610">Сакриј у Chrome менију</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb
index 5e0f379..942f45a 100644
--- a/chrome/app/resources/google_chrome_strings_sv.xtb
+++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome – meddelanden</translation>
 <translation id="1104959162601287462">Om &amp;Chrome OS</translation>
 <translation id="110877069173485804">Det här är Chrome</translation>
-<translation id="1225016890511909183">Chrome lagrar din information på ett säkert sätt så att du inte behöver ange den igen, men du måste fortfarande bekräfta kortets säkerhetskod för framtida betalningar.</translation>
 <translation id="123620459398936149">Det gick inte att synkronisera data med Chrome OS. Uppdatera lösenfrasen för synkronisering.</translation>
 <translation id="127345590676626841">Chrome uppdateras automatiskt så att du alltid har den senaste versionen. När den här nedladdningen är klar startas Chrome om och sedan är du igång.</translation>
 <translation id="1302523850133262269">Vänta medan de senaste systemuppdateringarna installeras av Chrome.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Få hjälp med att använda Chrome OS</translation>
 <translation id="1818142563254268765">Chrome kunde inte uppdateras till den senaste versionen automatiskt. Därför missar du de senaste nya funktionerna och säkerhetsuppdateringarna. Du måste uppdatera Chrome.</translation>
+<translation id="1864458292167284385">Startprogrammet för appar försvinner.</translation>
 <translation id="1877026089748256423">Den här versionen av Chrome är inaktuell</translation>
 <translation id="2077129598763517140">Använd maskinvaruacceleration när det är tillgängligt</translation>
 <translation id="2084710999043359739">Lägg till i Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome har verifierat att webbplatsens certifikat har utfärdats av <ph name="ISSUER" />. Certifikattransparensuppgifter har skickats från servern, men Chrome kunde inte känna igen någon av certifikattransparensloggarna.</translation>
 <translation id="3889417619312448367">Avinstallera Google Chrome</translation>
+<translation id="396182988103551265">Använd genvägen <ph name="APPS_ICON_IMAGE" /> i bokmärkesfältet i Chrome om du fortfarande vill ha tillgång till apparna.</translation>
 <translation id="4042449298237264661">Den här datorn får inte längre uppdateringar för Google Chrome eftersom Windows XP och Windows Vista inte längre stöds.</translation>
 <translation id="4050175100176540509">Den senaste versionen har viktiga säkerhetsförbättringar och nya funktioner.</translation>
 <translation id="4053720452172726777">Anpassa och kontrollera Google Chrome</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Den här ändringen träder inte i kraft förrän du loggat ut och sedan loggar in igen.</translation>
 <translation id="4480040274068703980">Det gick inte att synkronisera data med Chrome OS på grund av ett inloggningsfel.</translation>
-<translation id="4513711165509885787">Dina faktureringsuppgifter har sparats i Chrome.</translation>
 <translation id="4561051373932531560">I Google Chrome kan du klicka på ett telefonnummer på nätet och ringa det med Skype!</translation>
 <translation id="4567424176335768812">Du är inloggad som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du komma åt dina bokmärken, historik och andra inställningar på alla enheter som du är inloggad på.</translation>
 <translation id="4631713731678262610">Dölj i Chrome-menyn</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb
index 62330da8..ef22c629 100644
--- a/chrome/app/resources/google_chrome_strings_sw.xtb
+++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -12,7 +12,6 @@
 <translation id="1073391069195728457">Chrome - Arifa</translation>
 <translation id="1104959162601287462">Kuhusu &amp;Chrome OS</translation>
 <translation id="110877069173485804">Hii ndiyo Chrome yako</translation>
-<translation id="1225016890511909183">Chrome itahifadhi kwa usalama maelezo yako ili usihitaji kuyachapa tena, lakini bado utahitaji kudhibitisha msimbo wa usalama wa kadi yako kwa malipo siku za usoni.</translation>
 <translation id="123620459398936149">Mfumo wa Uendeshaji wa Chrome haukuweza kusawazisha data yako. Tafadhali sasisha kauli ya siri unayotumia Kusawazisha.</translation>
 <translation id="127345590676626841">Chrome husasisha kiotomatiki ili uwe na toleo jipya zaidi wakati wowote. Upakuaji huu unapokamilika, Chrome itajizima na kuwaka tena na utaanza kutumia.</translation>
 <translation id="1302523850133262269">Tafadhali subiri Chrome inaposakinisha sasisho mpya za mfumo.</translation>
@@ -37,6 +36,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Pata msaada wa kutumia Chrome OS</translation>
 <translation id="1818142563254268765">Chrome haikuweza kupata toleo jipya, kwa hivyo unakosa vipengele vipya vizuri na marekebisho ya usalama. Unahitaji kupata toleo jipya la Chrome.</translation>
+<translation id="1864458292167284385">Kifungua Programu cha Chrome kinatoweka.</translation>
 <translation id="1877026089748256423">Toleo hili la Chrome limepitwa na wakati</translation>
 <translation id="2077129598763517140">Tumia uongezaji kasi wa maunzi wakati unapatikana</translation>
 <translation id="2084710999043359739">Ongeza kwenye Chrome</translation>
@@ -92,6 +92,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ilithibithisha kuwa <ph name="ISSUER" /> ndiye mtoa cheti cha tovuti hii. Seva ilitoa maelezo ya Cheti cha Uwazi, lakini Chrome haikutambua kumbukumbu zozote za Cheti cha Uwazi.</translation>
 <translation id="3889417619312448367">Ondoa Google Chrome</translation>
+<translation id="396182988103551265">Tumia njia ya mkato ya <ph name="APPS_ICON_IMAGE" /> katika sehemu ya alamisho za Chrome ili uendelee kufikia programu zako.</translation>
 <translation id="4042449298237264661">Kompyuta hii haitapokea tena sasisho za Google Chrome kwa sababu Windows XP na Windows Vista hazitumiki tena.</translation>
 <translation id="4050175100176540509">Maboresho muhimu ya usalama na vipengele vipya vinapatikana katika toleo jipya.</translation>
 <translation id="4053720452172726777">Dhibiti  na ugeuze Google Chrome ikufae</translation>
@@ -106,7 +107,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Tafadhali toka na uingie tena ili mabadiliko haya yafanye kazi.</translation>
 <translation id="4480040274068703980">Mfumo wa Uendeshaji wa Chrome haukuweza kusawazisha data yako kutokana na hitilafu wakati wa kuingia katika akaunti.</translation>
-<translation id="4513711165509885787">Maelezo yako ya utozwaji yamehifadhiwa katika Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome inakuwezesha kubofya nambari ya simu kwenye wavuti na kuipigia simu kwa Skype!</translation>
 <translation id="4567424176335768812">Umeingia katika akaunti kama <ph name="USER_EMAIL_ADDRESS" />. Sasa unaweza kupata alamisho, historia, na mipangilio yako mingine kwenye vifaa vyako vyote vilivyoingia katika akaunti.</translation>
 <translation id="4631713731678262610">Ficha katika menyu ya Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb
index 9487c2f..3ec6a584 100644
--- a/chrome/app/resources/google_chrome_strings_ta.xtb
+++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - அறிவிப்புகள்</translation>
 <translation id="1104959162601287462">&amp;Chrome OS அறிமுகம்</translation>
 <translation id="110877069173485804">இது உங்கள் Chrome ஆகும்</translation>
-<translation id="1225016890511909183">Chrome உங்கள் தகவலைப் பாதுகாப்பாகச் சேமிக்கும், எனவே நீங்கள் அதை மீண்டும் தட்டச்சு செய்ய வேண்டியதிருக்காது, ஆனாலும் எதிர்காலத்தில் பணம் செலுத்துவதற்கு உங்கள் கார்டின் பாதுகாப்புக் குறியீட்டை நீங்கள் சரிபார்க்க வேண்டியதிருக்கும்.</translation>
 <translation id="123620459398936149">உங்கள் தரவை Chrome OS ஆல் ஒத்திசைக்க முடியவில்லை. உங்கள் கடவுச்சொற்றொடரைப் புதுப்பிக்கவும்.</translation>
 <translation id="127345590676626841">Chrome தானாகவே புதுப்பித்துக்கொள்வதால், எப்போதுமே புதிய பதிப்பைப் பெறுவீர்கள். இந்தப் பதிவிறக்கம் முடியும்போது, Chrome மறுதொடக்கம் செய்யும், பிறகு உங்கள் பணியைத் தொடரலாம்.</translation>
 <translation id="1302523850133262269">சமீபத்திய முறைமை புதுப்பிப்புகளை Chrome நிறுவும் வரை காத்திருக்கவும்.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS ஐப் பயன்படுத்தி உதவி பெறுக</translation>
 <translation id="1818142563254268765">Chrome சமீபத்திய பதிப்பிற்குத் தானாகவே புதுப்பித்து கொள்ளாது, இதனால் நீங்கள் அற்புதமான பல அம்சங்களையும், பாதுகாப்பு விஷயங்களையும் இழக்கிறீர்கள். நீங்களாகவேதான் Chrome ஐப் புதுப்பிக்க வேண்டும்.</translation>
+<translation id="1864458292167284385">Chrome பயன்பாட்டுத் துவக்கியை நிறுத்தவுள்ளோம்.</translation>
 <translation id="1877026089748256423">Chrome காலாவதியானது</translation>
 <translation id="2077129598763517140">கிடைக்கும்போது வன்பொருளின் முடுக்கத்தைப் பயன்படுத்தவும்</translation>
 <translation id="2084710999043359739">Chrome இல் சேர்</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">இந்த இணையதளத்தின் சான்றிதழ் <ph name="ISSUER" /> ஆல் வழங்கப்பட்டதா என Chrome சரிபார்த்தது. சான்றிதழின் வெளிப்படைத்தன்மைத் தகவலைச் சேவையகம் வழங்கியது, ஆனால் சான்றிதழ் வெளிப்படைத்தன்மைப் பதிவுகளில் எதையும் Chromium ஆல் அடையாளம் காண முடியவில்லை.</translation>
 <translation id="3889417619312448367">Google Chrome ஐ நிறுவல் நீக்குக</translation>
+<translation id="396182988103551265">பயன்பாடுகளைத் தொடர்ந்து அணுக, Chrome புக்மார்க்ஸ் பட்டியில் <ph name="APPS_ICON_IMAGE" /> குறுக்குவழியைப் பயன்படுத்தவும்.</translation>
 <translation id="4042449298237264661">Windows XP மற்றும் Windows Vista ஆகியவை இனி ஆதரிக்கப்படாது என்பதால் இந்தக் கணினி இனி Google Chrome புதுப்பிப்புகளைப் பெறாது.</translation>
 <translation id="4050175100176540509">முக்கியப் பாதுகாப்பு மேம்பாடுகளும், புதிய அம்சங்களும் சமீபத்திய பதிப்பில் கிடைக்கின்றன.</translation>
 <translation id="4053720452172726777">Google Chrome ஐ தனிப்பயனாக்கி கட்டுப்படுத்து</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">இந்த மாற்றம் செயல்பாட்டிற்கு வர, வெளியேறி, மீண்டும் உள்நுழைக.</translation>
 <translation id="4480040274068703980">உள்நுழைவதில் ஏற்பட்ட பிழைக் காரணமாக Chrome OS ஆல் உங்கள் தரவை ஒத்திசைக்க முடியவில்லை.</translation>
-<translation id="4513711165509885787">உங்களுடைய பில்லிங் விவரங்கள் Chrome இல் சேமிக்கப்பட்டுள்ளன.</translation>
 <translation id="4561051373932531560">வலையில் ஒரு தொலைபேசி எண்ணைக் கிளிக் செய்து, அதனை Skype மூலமாக அழைப்பதற்கு உங்களை Google Chrome அனுமதிக்கிறது!</translation>
 <translation id="4567424176335768812">நீங்கள் <ph name="USER_EMAIL_ADDRESS" /> ஆக உள்நுழைந்துள்ளீர்கள். தற்போது உங்கள் புக்மார்க்குகள், வரலாறு மற்றும் பிற அமைப்புகளை நீங்கள் உள்நுழைந்துள்ள எல்லா சாதனங்களிலும் அணுகலாம்.</translation>
 <translation id="4631713731678262610">Chrome மெனுவில் மறை</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index 52b97f7..37b6580 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - నోటిఫికేషన్‌లు</translation>
 <translation id="1104959162601287462">&amp;Chrome OS గురించి</translation>
 <translation id="110877069173485804">ఇది మీ Chrome</translation>
-<translation id="1225016890511909183">Chrome మీ సమాచారాన్ని సురక్షితంగా నిల్వ చేస్తుంది కాబట్టి మీరు దాన్ని మళ్లీ టైప్ చేయవలసిన అవసరం లేదు, కానీ మీరు ఇప్పటికీ భవిష్యత్తు చెల్లింపుల కోసం మీ కార్డ్ యొక్క భద్రతా కోడ్‌ను ధృవీకరించాలి.</translation>
 <translation id="123620459398936149">Chrome OS మీ డేటాను సమకాలీకరించలేకపోయింది. దయచేసి మీ సమకాలీకరణ రహస్య పదబంధాన్ని నవీకరించండి.</translation>
 <translation id="127345590676626841">Chrome స్వయంచాలకంగా నవీకరించబడుతుంది కనుక మీరు ఎల్లప్పుడూ తాజా సంస్కరణని కలిగి ఉంటారు. ఈ డౌన్‌లోడ్ పూర్తయినప్పుడు, Chrome పునఃప్రారంభించబడుతుంది మరియు మీరు మీ పనిని కొనసాగించవచ్చు.</translation>
 <translation id="1302523850133262269">దయచేసి Chrome తాజా సిస్టమ్ నవీకరణలను ఇన్‌స్టాల్ చేస్తున్నప్పుడు వేచి ఉండండి.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OSని ఉపయోగించి సహాయాన్ని పొందండి</translation>
 <translation id="1818142563254268765">Chrome దానికదే తాజా సంస్కరణకు నవీకరించబడదు, కనుక మీరు అద్భుతమైన కొత్త లక్షణాలను మరియు భద్రతా పరిష్కారాలను కోల్పోతున్నారు. మీరు Chromeను నవీకరించాలి.</translation>
+<translation id="1864458292167284385">Chrome అనువర్తన లాంచర్ త్వరలో నిలిపివేయబడుతుంది.</translation>
 <translation id="1877026089748256423">Chrome కాలం చెల్లినది</translation>
 <translation id="2077129598763517140">హార్డ్‌వేర్ త్వరితం అందుబాటులో ఉన్నప్పుడు ఉపయోగించు</translation>
 <translation id="2084710999043359739">Chromeకి జోడించు</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ఈ వెబ్‌సైట్ ప్రమాణపత్రాన్ని <ph name="ISSUER" /> జారీ చేసినట్లు ధృవీకరించింది. సర్వర్ ప్రమాణపత్ర పారదర్శకత సమాచారాన్ని అందించింది, కానీ Chrome ప్రమాణపత్ర పారదర్శకత లాగ్‌ల్లో ఏదీ గుర్తించలేదు.</translation>
 <translation id="3889417619312448367">Google Chromeను అన్ఇన్స్టాల్ చెయ్యి</translation>
+<translation id="396182988103551265">మీ అనువర్తనాలను ప్రాప్యత చేయడం కొనసాగించడానికి Chrome బుక్‌మార్క్‌ల బార్‌లో <ph name="APPS_ICON_IMAGE" /> సత్వరమార్గాన్ని ఉపయోగించండి.</translation>
 <translation id="4042449298237264661">Windows XP మరియు Windows Vistaకు ఇప్పుడు మద్దతు లేనందున ఈ కంప్యూటర్ ఇకపై Google Chrome నవీకరణలను స్వీకరించదు.</translation>
 <translation id="4050175100176540509">ముఖ్యమైన భద్రతా మెరుగుదలలు మరియు కొత్త లక్షణాలు తాజా సంస్కరణలో అందుబాటులో ఉన్నాయి.</translation>
 <translation id="4053720452172726777">Google Chromeను అనుకూలీకరించండి మరియు నియంత్రించండి</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">దయచేసి ఈ మార్పు ప్రభావవంతం కావడానికి సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయండి.</translation>
 <translation id="4480040274068703980">సైన్ ఇన్ చేయడంలో లోపం సంభవించినందున Chrome OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation>
-<translation id="4513711165509885787">మీ బిల్లింగ్ వివరాలు Chromeలో సేవ్ చేయబడ్డాయి.</translation>
 <translation id="4561051373932531560">Google Chrome వెబ్‌లో మిమ్మళ్ని ఫోన్ నంబర్ క్లిక్ చెయ్యనిస్తుంది మరియు Skypeతో కాల్ చేస్తుంది!</translation>
 <translation id="4567424176335768812">మీరు <ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు. ఇప్పుడు మీరు మీ సైన్ ఇన్ చేసిన అన్ని పరికరాల్లో మీ బుక్‌మార్క్‌లు, చరిత్ర మరియు ఇతర సెట్టింగ్‌లను ప్రాప్యత చేయవచ్చు.</translation>
 <translation id="4631713731678262610">Chrome మెనులో దాచండి</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb
index cdd1ca78..64b661e1 100644
--- a/chrome/app/resources/google_chrome_strings_th.xtb
+++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - การแจ้งเตือน</translation>
 <translation id="1104959162601287462">เกี่ยวกับ &amp;Chrome OS</translation>
 <translation id="110877069173485804">นี่คือ Chrome ของคุณ</translation>
-<translation id="1225016890511909183">Chrome จะเก็บข้อมูลของคุณอย่างปลอดภัยเพื่อให้คุณไม่จำเป็นต้องพิมพ์ข้อมูลนั้นอีกครั้ง แต่คุณจะยังคงต้องยืนยันรหัสรักษาความปลอดภัยของบัตรของคุณสำหรับการชำระเงินในอนาคต</translation>
 <translation id="123620459398936149">Chrome OS ไม่สามารถซิงค์ข้อมูลของคุณ โปรดอัปเดตข้อความรหัสผ่านสำหรับการซิงค์</translation>
 <translation id="127345590676626841">Chrome ทำการอัปเดตโดยอัตโนมัติเพื่อให้คุณมีเวอร์ชันใหม่ล่าสุดเสมอ เมื่อดาวน์โหลดเสร็จ Chrome จะรีสตาร์ท และคุณจะสามารถใช้งานได้ทันที</translation>
 <translation id="1302523850133262269">โปรดรอขณะที่ Chrome ติดตั้งการอัปเดตระบบล่าสุด</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">รับความช่วยเหลือเกี่ยวกับการใช้ Chrome OS</translation>
 <translation id="1818142563254268765">Chrome ไม่สามารถอัปเดตตัวเองเป็นเวอร์ชันล่าสุดได้ คุณกำลังพลาดคุณลักษณะเจ๋งๆ และการปรับปรุงความปลอดภัย คุณจำเป็นต้องอัปเดต Chrome</translation>
+<translation id="1864458292167284385">เครื่องเรียกใช้งานแอป Chrome จะเลิกใช้งานในเร็วๆ นี้</translation>
 <translation id="1877026089748256423">Chrome ล้าสมัย</translation>
 <translation id="2077129598763517140">ใช้การเร่งฮาร์ดแวร์เมื่อสามารถใช้ได้</translation>
 <translation id="2084710999043359739">เพิ่มลงใน Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome ยืนยันว่า <ph name="ISSUER" /> ได้ออกใบรับรองของเว็บไซต์นี้ และเซิร์ฟเวอร์ได้ให้ข้อมูลความโปร่งใสของใบรับรองแล้ว แต่ Chrome ไม่รู้จักบันทึกความโปร่งใสของใบรับรอง</translation>
 <translation id="3889417619312448367">ยกเลิกการติดตั้ง Google Chrome</translation>
+<translation id="396182988103551265">ใช้ทางลัด <ph name="APPS_ICON_IMAGE" /> ในแถบบุ๊กมาร์กของ Chrome เพื่อเข้าถึงแอปของคุณต่อไป</translation>
 <translation id="4042449298237264661">คอมพิวเตอร์เครื่องนี้จะไม่ได้รับการอัปเดต Google Chrome อีกต่อไปเพราะระบบไม่รองรับ Windows XP และ Windows Vista แล้ว</translation>
 <translation id="4050175100176540509">การปรับปรุงด้านความปลอดภัยที่สำคัญและคุณลักษณะใหม่ๆ พร้อมให้บริการในเวอร์ชันล่าสุด</translation>
 <translation id="4053720452172726777">กำหนดค่าและควบคุม Google Chrome</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">ระบบปฏิบัติการ Google Chrome</translation>
 <translation id="4458285410772214805">โปรดออกจากระบบ และลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงนี้มีผล</translation>
 <translation id="4480040274068703980">Chrome OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากเกิดข้อผิดพลาดในการลงชื่อเข้าใช้</translation>
-<translation id="4513711165509885787">รายละเอียดการเรียกเก็บเงินของคุณได้ถูกบันทึกไว้ใน Chrome</translation>
 <translation id="4561051373932531560">Google Chrome ทำให้คุณสามารถคลิกที่หมายเลขโทรศัพท์บนเว็บแล้วโทรหาด้วย Skype!</translation>
 <translation id="4567424176335768812">คุณกำลังลงชื่อเข้าใช้เป็น <ph name="USER_EMAIL_ADDRESS" /> ตอนนี้คุณสามารถเข้าถึงบุ๊กมาร์ก ประวัติการเข้าชม และการตั้งค่าอื่นๆ บนอุปกรณ์ทั้งหมดที่ลงชื่อเข้าใช้</translation>
 <translation id="4631713731678262610">ซ่อนในเมนู Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index e1ffd62..8fc9991 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Bildirimler</translation>
 <translation id="1104959162601287462">&amp;Chrome OS hakkında</translation>
 <translation id="110877069173485804">Bu sizin Chrome'unuz</translation>
-<translation id="1225016890511909183">Chrome, bilgilerinizi güvenli şekilde depoladığından bu bilgileri tekrar yazmak zorunda kalmazsınız, ancak yine de bundan sonraki ödemeler için kartınızın güvenlik kodunu doğrulamanız gerekir.</translation>
 <translation id="123620459398936149">Chrome OS, verilerinizi senkronize edemedi. Lütfen Senkronizasyon parolanızı güncelleyin.</translation>
 <translation id="127345590676626841">Chrome otomatik olarak güncellenerek her zaman en yeni sürüme sahip olmanızı sağlar. Bu indirme işlemi tamamlandığında Chrome yeniden başlatılacak ve yolunuza devam edeceksiniz.</translation>
 <translation id="1302523850133262269">Chrome en son sistem güncellemelerini yüklerken lütfen bekleyin.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Chrome OS'u kullanma konusunda yardım alın</translation>
 <translation id="1818142563254268765">Chrome kendini en yeni sürüme güncelleyemedi, bundan dolayı yeni ve harika özelliklerin yanı sıra güvenlik düzeltmelerinden mahrum kalıyorsunuz. Chrome'u güncellemeniz gerekiyor.</translation>
+<translation id="1864458292167284385">Chrome Uygulama Başlatıcı kullanımdan kaldırılıyor.</translation>
 <translation id="1877026089748256423">Chrome sürümü eski</translation>
 <translation id="2077129598763517140">Kullanılabilir olduğunda donanım ivmesini kullan</translation>
 <translation id="2084710999043359739">Chrome'a ekle</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome, bu web sitesi sertifikasının <ph name="ISSUER" /> tarafından yayınlandığını doğruladı. Sunucu Sertifika Şeffaflığı bilgilerini sağladı, ancak Chrome hiçbir Sertifika Şeffaflığı günlüğünü tanımadı.</translation>
 <translation id="3889417619312448367">Google Chrome'u Kaldır</translation>
+<translation id="396182988103551265">Uygulamalarınıza erişmeye devam etmek için Chrome yer işaretlerindeki <ph name="APPS_ICON_IMAGE" /> kısayolunu kullanın.</translation>
 <translation id="4042449298237264661">Windows XP ve Windows Vista artık desteklenmediğinden, bu bilgisayar Google Chrome güncellemelerini artık almayacaktır.</translation>
 <translation id="4050175100176540509">Son sürümde güvenlikle ilgili önemli iyileştirmeler ve yeni özellikler mevcuttur.</translation>
 <translation id="4053720452172726777">Google Chrome'u özelleştirin ve kontrol edin</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome OS</translation>
 <translation id="4458285410772214805">Bu değişikliğin geçerli olabilmesi için lütfen çıkış yapıp tekrar oturum açın.</translation>
 <translation id="4480040274068703980">Oturum açmadaki bir hata nedeniyle Chrome OS, verilerinizi senkronize edemedi.</translation>
-<translation id="4513711165509885787">Fatura ayrıntılarınız Chrome'a kaydedildi.</translation>
 <translation id="4561051373932531560">Google Chrome web'de bir telefon numarasını tıklayarak Skype ile aramanıza olanak sağlar!</translation>
 <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> olarak oturum açtınız. Şimdi oturum açtığınız tüm cihazlarda yer işaretlerinize, geçmişinize ve diğer ayarlarınıza erişebilirsiniz.</translation>
 <translation id="4631713731678262610">Chrome menüsünde gizle</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb
index 4209dd0..2c8e306e 100644
--- a/chrome/app/resources/google_chrome_strings_uk.xtb
+++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome – сповіщення</translation>
 <translation id="1104959162601287462">Про &amp;ОС Chrome</translation>
 <translation id="110877069173485804">Це ваш Chrome</translation>
-<translation id="1225016890511909183">Chrome надійно зберігатиме вашу інформацію, тож вам не потрібно буде вводити її знову. Але під час майбутніх платежів ви все одно маєте підтверджувати код безпеки картки.</translation>
 <translation id="123620459398936149">ОС Chrome не вдалося синхронізувати ваші дані. Оновіть свою парольну фразу для синхронізації.</translation>
 <translation id="127345590676626841">Chrome оновлюється автоматично, щоб у вас завжди була найновіша версія. Коли це завантаження завершиться, Chrome перезапуститься, і ви зможете продовжувати роботу.</translation>
 <translation id="1302523850133262269">Зачекайте, доки Chrome установить найновіші оновлення системи.</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Отримати довідку щодо користування ОС Chrome</translation>
 <translation id="1818142563254268765">Не вдалось оновити Chrome до останньої версії. Щоб застосувати виправлення системи безпеки та скористатись новими цікавими функціями, оновіть Chrome.</translation>
+<translation id="1864458292167284385">Панель запуску програм Chrome більше не доступна.</translation>
 <translation id="1877026089748256423">Версія Chrome застаріла</translation>
 <translation id="2077129598763517140">Використовувати апаратне прискорення, якщо доступно</translation>
 <translation id="2084710999043359739">Додати в Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome підтвердив, що компанія <ph name="ISSUER" /> видала сертифікат цього веб-сайту. Сервер надав інформацію про прозорість сертифіката, але Chromium не вдалося розпізнати журнали прозорості сертифіката.</translation>
 <translation id="3889417619312448367">Видалити Google Chrome</translation>
+<translation id="396182988103551265">Відкривайте додатки за допомогою ярлика <ph name="APPS_ICON_IMAGE" /> на панелі закладок Chrome.</translation>
 <translation id="4042449298237264661">На цей комп’ютер не надходитимуть оновлення Google Chrome, оскільки Windows XP та Windows Vista більше не підтримуються.</translation>
 <translation id="4050175100176540509">В останній версії покращено безпеку та додано нові функції.</translation>
 <translation id="4053720452172726777">Налаштування та керування Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">ОС Google Chrome</translation>
 <translation id="4458285410772214805">Щоб зміна почала діяти, вийдіть і ввійдіть знову.</translation>
 <translation id="4480040274068703980">ОС Chrome не вдалося синхронізувати ваші дані через помилку входу.</translation>
-<translation id="4513711165509885787">Ваші платіжні дані збережено в Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome дозволяє натиснути номер телефону в Інтернеті та здійснити виклик через Skype.</translation>
 <translation id="4567424176335768812">Ви ввійшли як <ph name="USER_EMAIL_ADDRESS" />. Ваші закладки, історія й інші налаштування будуть доступні на всіх пристроях, на яких ви ввійдете в цей обліковий запис.</translation>
 <translation id="4631713731678262610">Сховати в меню Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb
index 66e5301..0884c71 100644
--- a/chrome/app/resources/google_chrome_strings_vi.xtb
+++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - Thông báo</translation>
 <translation id="1104959162601287462">Giới thiệu về &amp;hệ điều hành Chrome</translation>
 <translation id="110877069173485804">Đây là Chrome của bạn</translation>
-<translation id="1225016890511909183">Chrome sẽ lưu trữ an toàn thông tin của bạn nên bạn không cần phải nhập lại thông tin nhưng sẽ vẫn phải xác minh mã bảo mật cho thẻ của bạn để thanh toán trong tương lai.</translation>
 <translation id="123620459398936149">Chrome OS không thể đồng bộ hóa dữ liệu của bạn. Vui lòng cập nhật cụm mật khẩu Đồng bộ hóa của bạn.</translation>
 <translation id="127345590676626841">Chrome tự động cập nhật nên bạn luôn có phiên bản mới nhất. Khi quá trình tải xuống này hoàn tất, Chrome sẽ khởi động lại và bạn có thể tiếp tục sử dụng.</translation>
 <translation id="1302523850133262269">Vui lòng đợi khi Chrome cài đặt các bản cập nhật hệ thống mới nhất.</translation>
@@ -35,6 +34,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">Nhận trợ giúp về cách sử dụng Chrome OS</translation>
 <translation id="1818142563254268765">Chrome không thể tự cập nhật lên phiên bản mới nhất nên bạn đã bỏ lỡ các tính năng mới tuyệt vời và các bản vá bảo mật. Bạn cần cập nhật Chrome.</translation>
+<translation id="1864458292167284385">Trình chạy ứng dụng Chrome sắp ngừng hoạt động.</translation>
 <translation id="1877026089748256423">Chrome đã lỗi thời</translation>
 <translation id="2077129598763517140">Sử dụng chế độ tăng tốc phần cứng khi khả dụng</translation>
 <translation id="2084710999043359739">Thêm vào Chrome</translation>
@@ -90,6 +90,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome đã xác minh rằng <ph name="ISSUER" /> cấp chứng chỉ của trang web này. Máy chủ cung cấp thông tin về Tính minh mạch của chứng chỉ nhưng Chrome không nhận ra bất kỳ nhật ký nào về Tính minh bạch của chứng chỉ.</translation>
 <translation id="3889417619312448367">Gỡ cài đặt Google Chrome</translation>
+<translation id="396182988103551265">Sử dụng lối tắt <ph name="APPS_ICON_IMAGE" /> trong thanh dấu trang của Chrome để tiếp tục truy cập các ứng dụng của bạn.</translation>
 <translation id="4042449298237264661">Máy tính này sẽ không nhận được bản cập nhật Google Chrome nữa do Windows XP và Windows Vista không còn được hỗ trợ.</translation>
 <translation id="4050175100176540509">Cải thiện bảo mật quan trọng và tính năng mới có trong phiên bản mới nhất.</translation>
 <translation id="4053720452172726777">Tùy chỉnh và điều khiển Google Chrome</translation>
@@ -105,7 +106,6 @@
 <translation id="4407807842708586359">Hệ điều hành Google Chrome</translation>
 <translation id="4458285410772214805">Vui lòng đăng xuất và đăng nhập lại để thay đổi này có hiệu lực.</translation>
 <translation id="4480040274068703980">Chrome OS không thể đồng bộ hóa dữ liệu của bạn do lỗi khi đăng nhập.</translation>
-<translation id="4513711165509885787">Chi tiết thanh toán của bạn đã được lưu trong Chrome.</translation>
 <translation id="4561051373932531560">Google Chrome cho phép bạn nhấp vào số điện thoại trên web và gọi tới số đó bằng Skype!</translation>
 <translation id="4567424176335768812">Bạn đã đăng nhập với tên <ph name="USER_EMAIL_ADDRESS" />. Bây giờ, bạn có thể truy cập dấu trang, lịch sử và các cài đặt khác trên tất cả những thiết bị đã đăng nhập của bạn.</translation>
 <translation id="4631713731678262610">Ẩn trong menu Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
index 36994d0..595e322 100644
--- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - 通知</translation>
 <translation id="1104959162601287462">关于 Chrome 操作系统(&amp;C)</translation>
 <translation id="110877069173485804">这是您的专属Chrome</translation>
-<translation id="1225016890511909183">Chrome 会妥善地存储您的信息,这样您日后就不必重新输入了。不过,您将来付款时仍需验证信用卡的安全码。</translation>
 <translation id="123620459398936149">Chrome操作系统无法同步您的数据。请更新您的同步密码。</translation>
 <translation id="127345590676626841">Chrome会自动更新,因此您使用的始终都是最新版本。更新内容下载完毕后,Chrome会重新启动,然后您就可以开始使用了。</translation>
 <translation id="1302523850133262269">Chrome正在安装最新的系统更新,请稍候。</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">获取 Chrome 操作系统使用帮助</translation>
 <translation id="1818142563254268765">Chrome无法自动更新到最新版本,因此其中缺少一些非常棒的新功能和安全修复程序。要获得这些内容,您需要更新Chrome。</translation>
+<translation id="1864458292167284385">Chrome 应用启动器即将停用。</translation>
 <translation id="1877026089748256423">Chrome版本太旧</translation>
 <translation id="2077129598763517140">使用硬件加速模式(如果可用)</translation>
 <translation id="2084710999043359739">添加到 Chrome 浏览器</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome 已证实此网站的证书是由<ph name="ISSUER" />签发的。服务器提供了 Certificate Transparency 信息,但 Chrome 无法识别任何 Certificate Transparency 日志。</translation>
 <translation id="3889417619312448367">卸载 Google Chrome</translation>
+<translation id="396182988103551265">请使用 Chrome 书签栏中的 <ph name="APPS_ICON_IMAGE" /> 快捷方式来继续访问您的应用。</translation>
 <translation id="4042449298237264661">此计算机将不会再收到 Google Chrome 更新,因为 Windows XP 和 Windows Vista 不再受支持。</translation>
 <translation id="4050175100176540509">最新版本不仅在安全性方面做出了重要改进,还提供了多项新功能。</translation>
 <translation id="4053720452172726777">自定义及控制 Google Chrome</translation>
@@ -103,7 +104,6 @@
 <translation id="4407807842708586359">Google Chrome 操作系统</translation>
 <translation id="4458285410772214805">请先退出,然后重新登录,以便此更改生效。</translation>
 <translation id="4480040274068703980">登录时出现错误,Chrome操作系统无法同步您的数据。</translation>
-<translation id="4513711165509885787">您的帐单明细已保存在 Chrome 中。</translation>
 <translation id="4561051373932531560">您可以在 Google Chrome 浏览器中点击网上的电话号码,然后通过 Skype 拨打!</translation>
 <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。现在您可在已登录的所有设备上访问您的书签、历史记录和其他设置。</translation>
 <translation id="4631713731678262610">在 Chrome 菜单中隐藏</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index 20ea233b5..572ee65 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -10,7 +10,6 @@
 <translation id="1073391069195728457">Chrome - 通知</translation>
 <translation id="1104959162601287462">關於 Chrome 作業系統(&amp;C)</translation>
 <translation id="110877069173485804">這是您專屬的 Chrome</translation>
-<translation id="1225016890511909183">Chrome 會妥善保存您的資訊,讓您日後付款時不必再重新輸入。不過,您仍然必需驗證驗證信用卡安全碼。</translation>
 <translation id="123620459398936149">Chrome OS 無法同步處理您的資料,請更新您的同步通關密語。</translation>
 <translation id="127345590676626841">Chrome 會自動更新,隨時讓您使用最新版本。完成這項下載作業後,Chrome 會重新啟動,自動為您進行更新。</translation>
 <translation id="1302523850133262269">請稍候,Chrome 正在安裝最新的系統更新。</translation>
@@ -33,6 +32,7 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1773601347087397504">前往 Chrome 作業系統說明頁面</translation>
 <translation id="1818142563254268765">由於 Chrome 無法更新至最新版本,您現在無法使用各種最新功能和安全性修正。請更新 Chrome。</translation>
+<translation id="1864458292167284385">Chrome 應用程式啟動器即將停止服務。</translation>
 <translation id="1877026089748256423">Chrome 版本過舊</translation>
 <translation id="2077129598763517140">在可用時使用硬體加速</translation>
 <translation id="2084710999043359739">加到 Chrome</translation>
@@ -88,6 +88,7 @@
 <translation id="3870154837782082782">Google Inc.</translation>
 <translation id="3881912906674381083">Chrome 已驗證這個網站的憑證核發者是 <ph name="ISSUER" />。該伺服器提供了 Certificate Transparency 資訊,但 Chrome 無法辨識任何 Certificate Transparency 紀錄。</translation>
 <translation id="3889417619312448367">解除安裝 Google Chrome</translation>
+<translation id="396182988103551265">您可以繼續使用 Chrome 書籤列中的 <ph name="APPS_ICON_IMAGE" /> 捷徑存取各項應用程式。</translation>
 <translation id="4042449298237264661">Google Chrome 已停止支援 Windows XP 和 Windows Vista,因此這部電腦不會再收到 Google Chrome 更新。</translation>
 <translation id="4050175100176540509">最新版本包含重要的安全性改善與新功能。</translation>
 <translation id="4053720452172726777">自訂及管理 Google Chrome</translation>
@@ -102,7 +103,6 @@
 <translation id="4407807842708586359">Google Chrome 作業系統</translation>
 <translation id="4458285410772214805">請先登出,然後重新登入,這項變更才會生效。</translation>
 <translation id="4480040274068703980">登入時發生錯誤,因此 Chrome 作業系統無法同步處理您的資料。</translation>
-<translation id="4513711165509885787">Chrome 已儲存您的帳單詳細資訊。</translation>
 <translation id="4561051373932531560">Google Chrome 可讓您按一下網頁上的電話號碼,隨即透過 Skype 撥打電話!</translation>
 <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入,可以在所有登入的裝置上使用您的書籤、紀錄和其他設定。</translation>
 <translation id="4631713731678262610">在 Chrome 選單中隱藏</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index ba02a22..9124aa1 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -225,12 +225,21 @@
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES" desc="Label for the your certificates tab in certificate manager.">
       Your certificates
     </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES_DESCRIPTION" desc="Label for your certificates subtitle tab in certificate manager.">
+      You have certificates from these organizations that identify you
+    </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS" desc="Label for the servers tab in certificate manager.">
       Servers
     </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS_DESCRIPTION" desc="Label for servers subtitle tab in certificate manager.">
+      You have certificates on file that identify these servers
+    </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES" desc="Label for the authorities tab in certificate manager.">
       Authorities
     </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES_DESCRIPTION" desc="Label for authorities subtitle tab in certificate manager.">
+      You have certificates on file that identify these certificate authorities
+    </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_VIEW" desc="Label for view button in certificate manager.">
       View
     </message>
@@ -255,6 +264,9 @@
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS" desc="Label for the others tab in certificate manager.">
       Others
     </message>
+    <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS_DESCRIPTION" desc="Label for others subtitle tab in certificate manager.">
+      You have certificates on file that do not fit in any of the other categories
+    </message>
     <message name="IDS_SETTINGS_CERTIFICATE_MANAGER_USAGE_SSL_CLIENT" desc="The description of a certificate that is verified for use as an SSL client">
       SSL Client Certificate
     </message>
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 4e8301f..2cc5c0a5 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -17,8 +17,8 @@
   "+device/bluetooth",
   "+device/core",
   "+device/hid",
-  "+device/usb",
   "+device/media_transfer_protocol",
+  "+device/usb",
   "+extensions/browser",
   "+extensions/common",
   "+extensions/components/javascript_dialog_extensions_client",
@@ -35,16 +35,14 @@
   "+media/base",  # For media switches
   "+media/midi",  # For midi switches
   "+media/mojo",  # For mojo media services.
-  "+mojo/shell/public/cpp",
   "+mojo/converters",
   "+mojo/runner/child",
+  "+mojo/shell/public/cpp",
   "+policy",  # For generated headers and source
   "+ppapi/c",  # For various types.
   "+ppapi/host",
   "+ppapi/proxy",
   "+ppapi/shared_impl",
-  # Defines some types that are marshalled over IPC.
-  "+ppapi/shared_impl/ppp_flash_browser_operations_shared.h",
   "+rlz",
   "+sandbox/win/src",  # The path doesn't say it, but this is the Windows sandbox.
   "+skia/ext",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 0bb490f..b5f76ef 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1687,10 +1687,6 @@
     {"tab-management-experiment-type", IDS_FLAGS_HERB_PROTOTYPE_CHOICES_NAME,
      IDS_FLAGS_HERB_PROTOTYPE_CHOICES_DESCRIPTION, kOsAndroid,
      MULTI_VALUE_TYPE(kHerbPrototypeChoices)},
-    {"enable-forced-migration-to-tabbed-mode",
-     IDS_FLAGS_FORCE_MIGRATION_TO_TABBED_MODE_NAME,
-     IDS_FLAGS_FORCE_MIGRATION_TO_TABBED_MODE_DESCRIPTION, kOsAndroid,
-     SINGLE_VALUE_TYPE(switches::kEnableForcedMigrationToTabbedMode)},
     {"enable-tab-switcher-in-document-mode",
      IDS_FLAGS_TAB_SWITCHER_IN_DOCUMENT_MODE_NAME,
      IDS_FLAGS_TAB_SWITCHER_IN_DOCUMENT_MODE_DESCRIPTION, kOsAndroid,
diff --git a/chrome/browser/android/DEPS b/chrome/browser/android/DEPS
index 4fc151f..b5d525f 100644
--- a/chrome/browser/android/DEPS
+++ b/chrome/browser/android/DEPS
@@ -1,12 +1,12 @@
 include_rules = [
   "-components/devtools_bridge",
+  "+cc/layers/layer.h",
   "+components/devtools_discovery",
   "+components/devtools_http_handler",
   "+components/ntp_snippets",
   "+components/service_tab_launcher",
   "+components/toolbar",
   "+components/web_contents_delegate_android",
-  "+cc/layers/layer.h",
   "+sandbox/linux/seccomp-bpf/sandbox_bpf.h",
   "+sync/android",
   "+sync/test/fake_server/android",
diff --git a/chrome/browser/android/bottombar/overlay_panel_content.h b/chrome/browser/android/bottombar/overlay_panel_content.h
index b25a1ba5d..03457a8 100644
--- a/chrome/browser/android/bottombar/overlay_panel_content.h
+++ b/chrome/browser/android/bottombar/overlay_panel_content.h
@@ -7,6 +7,7 @@
 
 #include "base/android/jni_android.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "chrome/browser/android/contextualsearch/contextual_search_context.h"
 
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
index c9ef3b0..f2d3474 100644
--- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
+++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
@@ -268,10 +268,10 @@
   chrome::ExecuteCommand(browser(), IDC_FOCUS_TOOLBAR);
   EXPECT_EQ("Reload", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Button", speech_monitor_.GetNextUtterance());
-  EXPECT_TRUE(
-      base::MatchPattern(speech_monitor_.GetNextUtterance(), "about:blank*"));
   EXPECT_EQ("main", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Tool bar", speech_monitor_.GetNextUtterance());
+  EXPECT_TRUE(
+      base::MatchPattern(speech_monitor_.GetNextUtterance(), "about:blank*"));
 }
 
 IN_PROC_BROWSER_TEST_P(SpokenFeedbackTest, TypeInOmnibox) {
@@ -281,10 +281,10 @@
   EXPECT_EQ("Address and search bar", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("about:blank", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Edit text", speech_monitor_.GetNextUtterance());
-  EXPECT_TRUE(
-      base::MatchPattern(speech_monitor_.GetNextUtterance(), "*about:blank*"));
   EXPECT_EQ("main", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Tool bar", speech_monitor_.GetNextUtterance());
+  EXPECT_TRUE(
+      base::MatchPattern(speech_monitor_.GetNextUtterance(), "*about:blank*"));
 
   SendKeyPress(ui::VKEY_X);
   EXPECT_EQ("x", speech_monitor_.GetNextUtterance());
@@ -665,10 +665,10 @@
 
   EXPECT_EQ("Reload", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Button", speech_monitor_.GetNextUtterance());
-  EXPECT_TRUE(
-      base::MatchPattern(speech_monitor_.GetNextUtterance(), "about:blank*"));
   EXPECT_EQ("main", speech_monitor_.GetNextUtterance());
   EXPECT_EQ("Tool bar", speech_monitor_.GetNextUtterance());
+  EXPECT_TRUE(
+      base::MatchPattern(speech_monitor_.GetNextUtterance(), "about:blank*"));
 }
 
 //
diff --git a/chrome/browser/chromeos/arc/arc_service_launcher.cc b/chrome/browser/chromeos/arc/arc_service_launcher.cc
index a457fe0..48a9a0b 100644
--- a/chrome/browser/chromeos/arc/arc_service_launcher.cc
+++ b/chrome/browser/chromeos/arc/arc_service_launcher.cc
@@ -40,6 +40,7 @@
 
 void ArcServiceLauncher::Shutdown() {
   DCHECK(arc_service_manager_);
+  arc_service_manager_->Shutdown();
   arc_service_manager_->arc_bridge_service()->Shutdown();
 }
 
diff --git a/chrome/browser/chromeos/extensions/file_manager/job_event_router.h b/chrome/browser/chromeos/extensions/file_manager/job_event_router.h
index 90c79f2..28c502c6 100644
--- a/chrome/browser/chromeos/extensions/file_manager/job_event_router.h
+++ b/chrome/browser/chromeos/extensions/file_manager/job_event_router.h
@@ -12,6 +12,7 @@
 #include <string>
 
 #include "base/macros.h"
+#include "base/memory/linked_ptr.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
diff --git a/chrome/browser/chromeos/file_manager/fileapi_util.h b/chrome/browser/chromeos/file_manager/fileapi_util.h
index eab0e8d0..891ba28 100644
--- a/chrome/browser/chromeos/file_manager/fileapi_util.h
+++ b/chrome/browser/chromeos/file_manager/fileapi_util.h
@@ -12,6 +12,7 @@
 #include "base/callback_forward.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
+#include "base/memory/scoped_ptr.h"
 #include "storage/browser/fileapi/file_system_operation_runner.h"
 #include "url/gurl.h"
 
diff --git a/chrome/browser/chromeos/locale_change_guard_unittest.cc b/chrome/browser/chromeos/locale_change_guard_unittest.cc
index 7477714d..736340a9 100644
--- a/chrome/browser/chromeos/locale_change_guard_unittest.cc
+++ b/chrome/browser/chromeos/locale_change_guard_unittest.cc
@@ -18,7 +18,9 @@
 const char* const kShowNotificationLanguages[] = {
     "af",   // Afrikaans
     "am",   // Amharic
+    "an",   // Aragonese
     "ar",   // Arabic
+    "ast",  // Asturian
     "az",   // Azerbaijani
     "be",   // Belarusian
     "bg",   // Bulgarian
@@ -122,6 +124,7 @@
     "ur",   // Urdu
     "uz",   // Uzbek
     "vi",   // Vietnamese
+    "wa",   // Walloon
     "xh",   // Xhosa
     "yi",   // Yiddish
     "yo",   // Yoruba
diff --git a/chrome/browser/chromeos/login/saml/saml_browsertest.cc b/chrome/browser/chromeos/login/saml/saml_browsertest.cc
index 68532a36..3105b2f 100644
--- a/chrome/browser/chromeos/login/saml/saml_browsertest.cc
+++ b/chrome/browser/chromeos/login/saml/saml_browsertest.cc
@@ -329,6 +329,7 @@
         kHTTPSAMLUserEmail,
         embedded_test_server()->base_url().Resolve("/SAML"));
     fake_gaia_->RegisterSamlUser(kDifferentDomainSAMLUserEmail, saml_idp_url);
+    fake_gaia_->RegisterSamlDomainRedirectUrl("example.com", saml_idp_url);
 
     OobeBaseTest::SetUpCommandLine(command_line);
   }
@@ -911,8 +912,12 @@
 
   void SetSAMLOfflineSigninTimeLimitPolicy(int limit);
   void EnableTransferSAMLCookiesPolicy();
+  void SetLoginBehaviorPolicyToSAMLInterstitial();
 
   void ShowGAIALoginForm();
+  void ShowSAMLInterstitial();
+  void ClickNextOnSAMLInterstitialPage();
+  void ClickChangeAccountOnSAMLInterstitialPage();
   void LogInWithSAML(const std::string& user_id,
                      const std::string& auth_sid_cookie,
                      const std::string& auth_lsid_cookie);
@@ -1029,6 +1034,23 @@
   run_loop.Run();
 }
 
+void SAMLPolicyTest::SetLoginBehaviorPolicyToSAMLInterstitial() {
+  em::ChromeDeviceSettingsProto& proto(device_policy_->payload());
+  proto.mutable_login_authentication_behavior()
+      ->set_login_authentication_behavior(
+          em::LoginAuthenticationBehaviorProto_LoginBehavior_SAML_INTERSTITIAL);
+
+  base::RunLoop run_loop;
+  scoped_ptr<CrosSettings::ObserverSubscription> observer =
+      CrosSettings::Get()->AddSettingsObserver(kLoginAuthenticationBehavior,
+                                               run_loop.QuitClosure());
+  device_policy_->SetDefaultSigningKey();
+  device_policy_->Build();
+  fake_session_manager_client_->set_device_policy(device_policy_->GetBlob());
+  fake_session_manager_client_->OnPropertyChangeComplete(true);
+  run_loop.Run();
+}
+
 void SAMLPolicyTest::ShowGAIALoginForm() {
   login_screen_load_observer_->Wait();
   ASSERT_TRUE(content::ExecuteScript(
@@ -1044,6 +1066,57 @@
   EXPECT_EQ("\"ready\"", message);
 }
 
+void SAMLPolicyTest::ShowSAMLInterstitial() {
+  login_screen_load_observer_->Wait();
+  ASSERT_TRUE(content::ExecuteScript(
+      GetLoginUI()->GetWebContents(),
+      "$('saml-interstitial').addEventListener("
+      "    'samlInterstitialPageReady',"
+      "    function() {"
+      "        window.domAutomationController.setAutomationId(0);"
+      "        window.domAutomationController.send("
+      "            'samlInterstitialPageReady');"
+      "    });"
+      "$('add-user-button').click();"));
+
+  content::DOMMessageQueue message_queue;
+  std::string message;
+  ASSERT_TRUE(message_queue.WaitForMessage(&message));
+  EXPECT_EQ("\"samlInterstitialPageReady\"", message);
+}
+
+void SAMLPolicyTest::ClickNextOnSAMLInterstitialPage() {
+  login_screen_load_observer_->Wait();
+
+  content::DOMMessageQueue message_queue;
+  SetupAuthFlowChangeListener();
+
+  ASSERT_TRUE(content::ExecuteScript(GetLoginUI()->GetWebContents(),
+                                     "$('saml-interstitial').submit();"));
+
+  std::string message;
+  do {
+    ASSERT_TRUE(message_queue.WaitForMessage(&message));
+  } while (message != "\"SamlLoaded\"");
+  EXPECT_EQ("\"SamlLoaded\"", message);
+}
+
+void SAMLPolicyTest::ClickChangeAccountOnSAMLInterstitialPage() {
+  login_screen_load_observer_->Wait();
+  ASSERT_TRUE(content::ExecuteScript(
+      GetLoginUI()->GetWebContents(),
+      "$('gaia-signin').gaiaAuthHost_.addEventListener('ready', function() {"
+      "  window.domAutomationController.setAutomationId(0);"
+      "  window.domAutomationController.send('ready');"
+      "});"
+      "$('saml-interstitial').changeAccountLink.click();"));
+
+  content::DOMMessageQueue message_queue;
+  std::string message;
+  ASSERT_TRUE(message_queue.WaitForMessage(&message));
+  EXPECT_EQ("\"ready\"", message);
+}
+
 void SAMLPolicyTest::LogInWithSAML(const std::string& user_id,
                                    const std::string& auth_sid_cookie,
                                    const std::string& auth_lsid_cookie) {
@@ -1241,5 +1314,54 @@
   EXPECT_EQ(kSAMLIdPCookieValue1, GetCookieValue(kSAMLIdPCookieName));
 }
 
+// Tests that the SAML interstitial page is loaded when the authentication
+// behavior device policy is set to SAML_INTERSTITIAL, and when the user clicks
+// the "change account" link, we go back to the default GAIA signin screen.
+IN_PROC_BROWSER_TEST_F(SAMLPolicyTest, SAMLInterstitialChangeAccount) {
+  fake_saml_idp()->SetLoginHTMLTemplate("saml_login.html");
+  SetLoginBehaviorPolicyToSAMLInterstitial();
+  WaitForSigninScreen();
+
+  ShowSAMLInterstitial();
+  JsExpect("$('signin-frame').hidden == true");
+  JsExpect("$('offline-gaia').hidden == true");
+  JsExpect("$('saml-interstitial').hidden == false");
+
+  // Click the "change account" link on the SAML interstitial page.
+  ClickChangeAccountOnSAMLInterstitialPage();
+
+  // Expects that only the gaia signin frame is visible and shown.
+  JsExpect("$('signin-frame').classList.contains('show')");
+  JsExpect("$('signin-frame').hidden == false");
+  JsExpect("$('offline-gaia').hidden == true");
+  JsExpect("$('saml-interstitial').hidden == true");
+}
+
+// Tests that clicking "Next" in the SAML interstitial page successfully
+// triggers a SAML redirect request, and the SAML IdP authentication page is
+// loaded and authenticaing there is successful.
+IN_PROC_BROWSER_TEST_F(SAMLPolicyTest, SAMLInterstitialNext) {
+  fake_saml_idp()->SetLoginHTMLTemplate("saml_login.html");
+  fake_gaia_->SetFakeMergeSessionParams(
+      kFirstSAMLUserEmail, kTestAuthSIDCookie1, kTestAuthLSIDCookie1);
+  SetLoginBehaviorPolicyToSAMLInterstitial();
+  WaitForSigninScreen();
+
+  ShowSAMLInterstitial();
+  ClickNextOnSAMLInterstitialPage();
+
+  SetSignFormField("Email", "fake_user");
+  SetSignFormField("Password", "fake_password");
+  ExecuteJsInSigninFrame("document.getElementById('Submit').click();");
+
+  content::WindowedNotificationObserver session_start_waiter(
+      chrome::NOTIFICATION_SESSION_STARTED,
+      content::NotificationService::AllSources());
+
+  OobeScreenWaiter(OobeScreen::SCREEN_CONFIRM_PASSWORD).Wait();
+  SendConfirmPassword("fake_password");
+  // Login should finish login and a session should start.
+  session_start_waiter.Wait();
+}
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/login_feedback.cc b/chrome/browser/chromeos/login/ui/login_feedback.cc
index bf58ed0..67171a4 100644
--- a/chrome/browser/chromeos/login/ui/login_feedback.cc
+++ b/chrome/browser/chromeos/login/ui/login_feedback.cc
@@ -4,7 +4,10 @@
 
 #include "chrome/browser/chromeos/login/ui/login_feedback.h"
 
+#include <vector>
+
 #include "base/bind.h"
+#include "base/callback.h"
 #include "base/time/time.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/extensions/api/feedback_private/feedback_private_api.h"
@@ -13,10 +16,13 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/extensions/extension_constants.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/web_contents_observer.h"
 #include "extensions/browser/app_window/app_window.h"
 #include "extensions/browser/app_window/app_window_registry.h"
-#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_host.h"
 #include "extensions/browser/extension_system.h"
+#include "extensions/browser/process_manager.h"
+#include "extensions/browser/process_manager_observer.h"
 #include "extensions/common/extension.h"
 #include "grit/browser_resources.h"
 #include "ui/aura/window.h"
@@ -35,54 +41,112 @@
   return extension_service->component_loader();
 }
 
-}  // namespace
+extensions::ProcessManager* GetProcessManager(
+    content::BrowserContext* context) {
+  return extensions::ProcessManager::Get(context);
+}
 
-////////////////////////////////////////////////////////////////////////////////
-// LoginFeedback::ScopedFeedbackExtension
-
-class LoginFeedback::ScopedFeedbackExtension
-    : public extensions::ExtensionRegistryObserver {
+// Ensures that the feedback extension is loaded on the signin profile and
+// invokes the callback when the extension is ready to use. Unload the
+// extension and delete itself when the extension's background page shuts down.
+class FeedbackExtensionLoader : public extensions::ProcessManagerObserver,
+                                public content::WebContentsObserver {
  public:
-  explicit ScopedFeedbackExtension(LoginFeedback* owner);
-  ~ScopedFeedbackExtension() override;
-
-  // extensions::ExtensionRegistryObserver
-  void OnExtensionReady(content::BrowserContext* browser_context,
-                        const extensions::Extension* extension) override;
+  // Loads the feedback extension on the given profile and invokes
+  // |on_ready_callback| when it is ready.
+  static void Load(Profile* profile, const base::Closure& on_ready_callback);
 
  private:
-  LoginFeedback* const owner_;
-  DISALLOW_COPY_AND_ASSIGN(ScopedFeedbackExtension);
+  explicit FeedbackExtensionLoader(Profile* profile);
+  ~FeedbackExtensionLoader() override;
+
+  void AddOnReadyCallback(const base::Closure& on_ready_callback);
+  void RunOnReadyCallbacks();
+
+  // extensions::ProcessManagerObserver
+  void OnBackgroundHostCreated(extensions::ExtensionHost* host) override;
+  void OnBackgroundHostClose(const std::string& extension_id) override;
+
+  // content::WebContentsObserver
+  void DocumentOnLoadCompletedInMainFrame() override;
+
+  Profile* const profile_;
+  std::vector<base::Closure> on_ready_callbacks_;
+  bool ready_ = false;
+
+  DISALLOW_COPY_AND_ASSIGN(FeedbackExtensionLoader);
 };
 
-LoginFeedback::ScopedFeedbackExtension::ScopedFeedbackExtension(
-    LoginFeedback* owner)
-    : owner_(owner) {
-  Profile* profile = owner_->profile_;
-  extensions::ExtensionRegistry::Get(profile)->AddObserver(this);
+// Current live instance of FeedbackExtensionLoader.
+FeedbackExtensionLoader* instance = nullptr;
 
-  extensions::ComponentLoader* component_loader = GetComponentLoader(profile);
+// static
+void FeedbackExtensionLoader::Load(Profile* profile,
+                                   const base::Closure& on_ready_callback) {
+  if (instance == nullptr)
+    instance = new FeedbackExtensionLoader(profile);
+
+  DCHECK_EQ(instance->profile_, profile);
+  DCHECK(!on_ready_callback.is_null());
+  instance->AddOnReadyCallback(on_ready_callback);
+}
+
+FeedbackExtensionLoader::FeedbackExtensionLoader(Profile* profile)
+    : profile_(profile) {
+  extensions::ComponentLoader* component_loader = GetComponentLoader(profile_);
   DCHECK(!component_loader->Exists(extension_misc::kFeedbackExtensionId))
-      << "Feedback extension is already loaded. Is there any other "
-         "LoginFeedback instance running?";
+      << "Feedback extension should not be loaded in signin profile by default";
   component_loader->Add(IDR_FEEDBACK_MANIFEST,
                         base::FilePath(FILE_PATH_LITERAL("feedback")));
+
+  extensions::ProcessManager* pm = GetProcessManager(profile_);
+  pm->AddObserver(this);
+  DCHECK(
+      !pm->GetBackgroundHostForExtension(extension_misc::kFeedbackExtensionId));
 }
 
-LoginFeedback::ScopedFeedbackExtension::~ScopedFeedbackExtension() {
-  Profile* profile = owner_->profile_;
-  extensions::ExtensionRegistry::Get(profile)->RemoveObserver(this);
-  GetComponentLoader(profile)->Remove(extension_misc::kFeedbackExtensionId);
+FeedbackExtensionLoader::~FeedbackExtensionLoader() {
+  DCHECK_EQ(instance, this);
+  instance = nullptr;
+
+  GetProcessManager(profile_)->RemoveObserver(this);
+  GetComponentLoader(profile_)->Remove(extension_misc::kFeedbackExtensionId);
 }
 
-void LoginFeedback::ScopedFeedbackExtension::OnExtensionReady(
-    content::BrowserContext* browser_context,
-    const extensions::Extension* extension) {
-  if (extension->id() != extension_misc::kFeedbackExtensionId)
-    return;
-  owner_->OnFeedbackExtensionReady();
+void FeedbackExtensionLoader::AddOnReadyCallback(
+    const base::Closure& on_ready_callback) {
+  on_ready_callbacks_.push_back(on_ready_callback);
+  if (ready_)
+    RunOnReadyCallbacks();
 }
 
+void FeedbackExtensionLoader::RunOnReadyCallbacks() {
+  std::vector<base::Closure> callbacks;
+  callbacks.swap(on_ready_callbacks_);
+
+  for (const auto& callback : callbacks)
+    callback.Run();
+}
+
+void FeedbackExtensionLoader::OnBackgroundHostCreated(
+    extensions::ExtensionHost* host) {
+  if (host->extension_id() == extension_misc::kFeedbackExtensionId)
+    Observe(host->host_contents());
+}
+
+void FeedbackExtensionLoader::OnBackgroundHostClose(
+    const std::string& extension_id) {
+  if (extension_id == extension_misc::kFeedbackExtensionId)
+    delete this;
+}
+
+void FeedbackExtensionLoader::DocumentOnLoadCompletedInMainFrame() {
+  ready_ = true;
+  RunOnReadyCallbacks();
+}
+
+}  // namespace
+
 ////////////////////////////////////////////////////////////////////////////////
 // LoginFeedback::FeedbackWindowHandler
 
@@ -157,12 +221,13 @@
                             const base::Closure& finished_callback) {
   description_ = description;
   finished_callback_ = finished_callback;
-
-  feedback_extension_.reset(new ScopedFeedbackExtension(this));
-}
-
-void LoginFeedback::OnFeedbackExtensionReady() {
   feedback_window_handler_.reset(new FeedbackWindowHandler(this));
+
+  FeedbackExtensionLoader::Load(
+      profile_,
+      base::Bind(&LoginFeedback::EnsureFeedbackUI, weak_factory_.GetWeakPtr()));
+
+  // Triggers the extension background to be loaded.
   EnsureFeedbackUI();
 }
 
@@ -176,17 +241,6 @@
   api->RequestFeedbackForFlow(
       description_, "Login", GURL(),
       extensions::api::feedback_private::FeedbackFlow::FEEDBACK_FLOW_LOGIN);
-
-  // Check feedback app window shortly after to ensure it is opened. There is
-  // some racing between the event dispatching and the starting of the
-  // background page. This is a poor man's way to make sure the event is
-  // delivered.
-  // TODO(xiyuan): Investigate why the occasional event lost and remove this.
-  const int kCheckDelaySecond = 1;
-  content::BrowserThread::PostDelayedTask(
-      content::BrowserThread::UI, FROM_HERE,
-      base::Bind(&LoginFeedback::EnsureFeedbackUI, weak_factory_.GetWeakPtr()),
-      base::TimeDelta::FromSeconds(kCheckDelaySecond));
 }
 
 void LoginFeedback::OnFeedbackFinished() {
diff --git a/chrome/browser/chromeos/login/ui/login_feedback.h b/chrome/browser/chromeos/login/ui/login_feedback.h
index 80f8731..2eb3be6 100644
--- a/chrome/browser/chromeos/login/ui/login_feedback.h
+++ b/chrome/browser/chromeos/login/ui/login_feedback.h
@@ -17,9 +17,7 @@
 namespace chromeos {
 
 // Show the feedback UI to collect a feedback on the login screen. Note that
-// it dynamically loads/unloads the feedback extension on the signin profile,
-// there should only be one instance live of this class. Otherwise, they would
-// stamp on each other toes and not function properly.
+// it dynamically loads/unloads the feedback extension on the signin profile.
 class LoginFeedback {
  public:
   explicit LoginFeedback(Profile* signin_profile);
@@ -32,16 +30,10 @@
                const base::Closure& finished_callback);
 
  private:
-  // Loads and unloads the feedback extension on the signin profile.
-  class ScopedFeedbackExtension;
-
   // Makes the feedback UI windows on top of login screen and watches when
   // all feedback windows are closed.
   class FeedbackWindowHandler;
 
-  // Invoked by ScopedFeedbackExtension when feedback extension is ready.
-  void OnFeedbackExtensionReady();
-
   // Invoked by FeedbackWindowHandler when all feedback windows are closed.
   void OnFeedbackFinished();
 
@@ -52,7 +44,6 @@
   std::string description_;
   base::Closure finished_callback_;
 
-  scoped_ptr<ScopedFeedbackExtension> feedback_extension_;
   scoped_ptr<FeedbackWindowHandler> feedback_window_handler_;
 
   base::WeakPtrFactory<LoginFeedback> weak_factory_;
diff --git a/chrome/browser/component_updater/caps_installer_win.cc b/chrome/browser/component_updater/caps_installer_win.cc
index 78942ba..cd4cd9b 100644
--- a/chrome/browser/component_updater/caps_installer_win.cc
+++ b/chrome/browser/component_updater/caps_installer_win.cc
@@ -7,6 +7,7 @@
 #include <stdint.h>
 #include <string>
 #include <utility>
+#include <vector>
 
 #include "base/bind.h"
 #include "base/command_line.h"
@@ -78,6 +79,8 @@
 
   bool CanAutoUpdate() const override { return true; }
 
+  bool RequiresNetworkEncryption() const override { return false; }
+
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                        const base::FilePath& install_dir) override {
     return true;
diff --git a/chrome/browser/component_updater/chrome_component_updater_configurator.cc b/chrome/browser/component_updater/chrome_component_updater_configurator.cc
index f915a8c..97e99e7 100644
--- a/chrome/browser/component_updater/chrome_component_updater_configurator.cc
+++ b/chrome/browser/component_updater/chrome_component_updater_configurator.cc
@@ -64,10 +64,13 @@
   ~ChromeConfigurator() override {}
 };
 
+// Allows the component updater to use non-encrypted communication with the
+// update backend. The security of the update checks is enforced using
+// a custom message signing protocol and it does not depend on using HTTPS.
 ChromeConfigurator::ChromeConfigurator(
     const base::CommandLine* cmdline,
     net::URLRequestContextGetter* url_request_getter)
-    : configurator_impl_(cmdline, url_request_getter) {}
+    : configurator_impl_(cmdline, url_request_getter, false) {}
 
 int ChromeConfigurator::InitialDelay() const {
   return configurator_impl_.InitialDelay();
diff --git a/chrome/browser/component_updater/chrome_component_updater_configurator_unittest.cc b/chrome/browser/component_updater/chrome_component_updater_configurator_unittest.cc
index 996fd0da..dcd57143 100644
--- a/chrome/browser/component_updater/chrome_component_updater_configurator_unittest.cc
+++ b/chrome/browser/component_updater/chrome_component_updater_configurator_unittest.cc
@@ -9,6 +9,8 @@
 #include "base/memory/ref_counted.h"
 #include "chrome/browser/component_updater/chrome_component_updater_configurator.h"
 #include "components/component_updater/component_updater_switches.h"
+#include "components/component_updater/component_updater_url_constants.h"
+#include "components/component_updater/configurator_impl.h"
 #include "components/update_client/configurator.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -67,7 +69,7 @@
   const auto urls = config->UpdateUrl();
 
   // Expect the default url to be cryptographically secure.
-  EXPECT_GE(urls.size(), 1ul);
+  EXPECT_GE(urls.size(), 1u);
   EXPECT_TRUE(urls.front().SchemeIsCryptographic());
 }
 
@@ -78,4 +80,35 @@
   EXPECT_TRUE(config->UseCupSigning());
 }
 
+TEST(ChromeComponentUpdaterConfiguratorTest, TestUseEncryption) {
+  base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
+  const auto config(MakeChromeComponentUpdaterConfigurator(cmdline, nullptr));
+
+  const auto urls = config->UpdateUrl();
+  ASSERT_EQ(2u, urls.size());
+  ASSERT_STREQ(kUpdaterDefaultUrl, urls[0].spec().c_str());
+  ASSERT_STREQ(kUpdaterFallbackUrl, urls[1].spec().c_str());
+
+  ASSERT_EQ(config->UpdateUrl(), config->PingUrl());
+
+  // Use the configurator implementation to test the filtering of
+  // unencrypted URLs.
+  {
+    const ConfiguratorImpl config(cmdline, nullptr, true);
+    const auto urls = config.UpdateUrl();
+    ASSERT_EQ(1u, urls.size());
+    ASSERT_STREQ(kUpdaterDefaultUrl, urls[0].spec().c_str());
+    ASSERT_EQ(config.UpdateUrl(), config.PingUrl());
+  }
+
+  {
+    const ConfiguratorImpl config(cmdline, nullptr, false);
+    const auto urls = config.UpdateUrl();
+    ASSERT_EQ(2u, urls.size());
+    ASSERT_STREQ(kUpdaterDefaultUrl, urls[0].spec().c_str());
+    ASSERT_STREQ(kUpdaterFallbackUrl, urls[1].spec().c_str());
+    ASSERT_EQ(config.UpdateUrl(), config.PingUrl());
+  }
+}
+
 }  // namespace component_updater
diff --git a/chrome/browser/component_updater/cld_component_installer.cc b/chrome/browser/component_updater/cld_component_installer.cc
index d287f43..e96e001 100644
--- a/chrome/browser/component_updater/cld_component_installer.cc
+++ b/chrome/browser/component_updater/cld_component_installer.cc
@@ -56,6 +56,10 @@
   return true;
 }
 
+bool CldComponentInstallerTraits::RequiresNetworkEncryption() const {
+  return false;
+}
+
 bool CldComponentInstallerTraits::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
diff --git a/chrome/browser/component_updater/cld_component_installer.h b/chrome/browser/component_updater/cld_component_installer.h
index 74600bb..7fc25d1 100644
--- a/chrome/browser/component_updater/cld_component_installer.h
+++ b/chrome/browser/component_updater/cld_component_installer.h
@@ -42,6 +42,7 @@
 
   // The following methods override ComponentInstallerTraits.
   bool CanAutoUpdate() const override;
+  bool RequiresNetworkEncryption() const override;
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                        const base::FilePath& install_dir) override;
   bool VerifyInstallation(const base::DictionaryValue& manifest,
diff --git a/chrome/browser/component_updater/ev_whitelist_component_installer.cc b/chrome/browser/component_updater/ev_whitelist_component_installer.cc
index 77e6e9d..db98433 100644
--- a/chrome/browser/component_updater/ev_whitelist_component_installer.cc
+++ b/chrome/browser/component_updater/ev_whitelist_component_installer.cc
@@ -75,6 +75,10 @@
   return true;
 }
 
+bool EVWhitelistComponentInstallerTraits::RequiresNetworkEncryption() const {
+  return false;
+}
+
 bool EVWhitelistComponentInstallerTraits::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
diff --git a/chrome/browser/component_updater/ev_whitelist_component_installer.h b/chrome/browser/component_updater/ev_whitelist_component_installer.h
index 9e765d8..933c345 100644
--- a/chrome/browser/component_updater/ev_whitelist_component_installer.h
+++ b/chrome/browser/component_updater/ev_whitelist_component_installer.h
@@ -30,6 +30,7 @@
  private:
   // The following methods override ComponentInstallerTraits.
   bool CanAutoUpdate() const override;
+  bool RequiresNetworkEncryption() const override;
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                        const base::FilePath& install_dir) override;
   bool VerifyInstallation(const base::DictionaryValue& manifest,
diff --git a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
index 2fe544d6..42f3ed6 100644
--- a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
+++ b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/component_updater/supervised_user_whitelist_installer.h"
 
 #include <stddef.h>
+#include <map>
 #include <utility>
 
 #include "base/bind.h"
@@ -248,6 +249,7 @@
   bool VerifyInstallation(const base::DictionaryValue& manifest,
                           const base::FilePath& install_dir) const override;
   bool CanAutoUpdate() const override;
+  bool RequiresNetworkEncryption() const override;
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                        const base::FilePath& install_dir) override;
   void ComponentReady(const base::Version& version,
@@ -276,6 +278,11 @@
   return true;
 }
 
+bool SupervisedUserWhitelistComponentInstallerTraits::
+    RequiresNetworkEncryption() const {
+  return true;
+}
+
 bool SupervisedUserWhitelistComponentInstallerTraits::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
diff --git a/chrome/browser/component_updater/sw_reporter_installer_win.cc b/chrome/browser/component_updater/sw_reporter_installer_win.cc
index 025eacf..f69c808 100644
--- a/chrome/browser/component_updater/sw_reporter_installer_win.cc
+++ b/chrome/browser/component_updater/sw_reporter_installer_win.cc
@@ -115,6 +115,8 @@
 
   bool CanAutoUpdate() const override { return true; }
 
+  bool RequiresNetworkEncryption() const override { return false; }
+
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                        const base::FilePath& install_dir) override {
     return true;
diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
index 8f74a949b..f7b135e9 100644
--- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
+++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
@@ -236,6 +236,7 @@
  private:
   // The following methods override ComponentInstallerTraits.
   bool CanAutoUpdate() const override;
+  bool RequiresNetworkEncryption() const override;
   bool OnCustomInstall(const base::DictionaryValue& manifest,
                                const base::FilePath& install_dir) override;
   bool VerifyInstallation(
@@ -268,6 +269,10 @@
   return true;
 }
 
+bool WidevineCdmComponentInstallerTraits::RequiresNetworkEncryption() const {
+  return false;
+}
+
 bool WidevineCdmComponentInstallerTraits::OnCustomInstall(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) {
diff --git a/chrome/browser/drive/DEPS b/chrome/browser/drive/DEPS
index ac52916..797ff6d4 100644
--- a/chrome/browser/drive/DEPS
+++ b/chrome/browser/drive/DEPS
@@ -1,5 +1,5 @@
 include_rules = [
-  "+components/keyed_service",
   "+components/drive",
+  "+components/keyed_service",
 ]
 
diff --git a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
index a80fc25..4b99dc0 100644
--- a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
+++ b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
@@ -164,7 +164,7 @@
     const api::events::Rule& api_rule,
     std::string* error) {
   std::vector<scoped_ptr<const ContentCondition>> conditions;
-  for (const linked_ptr<base::Value>& value : api_rule.conditions) {
+  for (const scoped_ptr<base::Value>& value : api_rule.conditions) {
     conditions.push_back(
         CreateContentCondition(extension, predicate_factories, *value, error));
     if (!error->empty())
@@ -172,7 +172,7 @@
   }
 
   std::vector<scoped_ptr<const ContentAction>> actions;
-  for (const linked_ptr<base::Value>& value : api_rule.actions) {
+  for (const scoped_ptr<base::Value>& value : api_rule.actions) {
     actions.push_back(ContentAction::Create(browser_context(), extension,
                                             *value, error));
     if (!error->empty())
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
index f2e1134d..6545895 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
@@ -54,7 +54,7 @@
        ++it) {
     const base::DictionaryValue* dict;
     CHECK((*it)->GetAsDictionary(&dict));
-    actions.push_back(linked_ptr<base::Value>(dict->DeepCopy()));
+    actions.push_back(dict->CreateDeepCopy());
   }
 
   std::string error;
@@ -242,7 +242,7 @@
   incorrect_action.SetString(keys::kInstanceTypeKey, kUnknownActionType);
 
   // Test success.
-  input.push_back(linked_ptr<base::Value>(correct_action.DeepCopy()));
+  input.push_back(correct_action.CreateDeepCopy());
   error.clear();
   result = WebRequestActionSet::Create(NULL, NULL, input, &error, &bad_message);
   EXPECT_TRUE(error.empty()) << error;
@@ -254,7 +254,7 @@
   EXPECT_EQ(10, result->GetMinimumPriority());
 
   // Test failure.
-  input.push_back(linked_ptr<base::Value>(incorrect_action.DeepCopy()));
+  input.push_back(incorrect_action.CreateDeepCopy());
   error.clear();
   result = WebRequestActionSet::Create(NULL, NULL, input, &error, &bad_message);
   EXPECT_NE("", error);
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
index 06cd44532..3bab5479 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
@@ -126,11 +126,9 @@
     linked_ptr<api::events::Rule> rule(new api::events::Rule);
     rule->id.reset(new std::string(kRuleId1));
     rule->priority.reset(new int(100));
-    rule->actions.push_back(linked_ptr<base::Value>(action_dict.DeepCopy()));
-    rule->conditions.push_back(
-        linked_ptr<base::Value>(http_condition_url_filter.DeepCopy()));
-    rule->conditions.push_back(
-        linked_ptr<base::Value>(https_condition_url_filter.DeepCopy()));
+    rule->actions.push_back(action_dict.CreateDeepCopy());
+    rule->conditions.push_back(http_condition_url_filter.CreateDeepCopy());
+    rule->conditions.push_back(https_condition_url_filter.CreateDeepCopy());
     return rule;
   }
 
@@ -145,9 +143,8 @@
     linked_ptr<api::events::Rule> rule(new api::events::Rule);
     rule->id.reset(new std::string(kRuleId2));
     rule->priority.reset(new int(100));
-    rule->actions.push_back(linked_ptr<base::Value>(action_dict.DeepCopy()));
-    rule->conditions.push_back(
-        linked_ptr<base::Value>(condition_dict.DeepCopy()));
+    rule->actions.push_back(action_dict.CreateDeepCopy());
+    rule->conditions.push_back(condition_dict.CreateDeepCopy());
     return rule;
   }
 
@@ -163,9 +160,8 @@
     linked_ptr<api::events::Rule> rule(new api::events::Rule);
     rule->id.reset(new std::string(kRuleId3));
     rule->priority.reset(new int(100));
-    rule->actions.push_back(linked_ptr<base::Value>(action_dict.DeepCopy()));
-    rule->conditions.push_back(
-        linked_ptr<base::Value>(condition_dict.DeepCopy()));
+    rule->actions.push_back(action_dict.CreateDeepCopy());
+    rule->conditions.push_back(condition_dict.CreateDeepCopy());
     return rule;
   }
 
@@ -185,23 +181,21 @@
     linked_ptr<api::events::Rule> rule(new api::events::Rule);
     rule->id.reset(new std::string(kRuleId4));
     rule->priority.reset(new int(200));
-    rule->actions.push_back(linked_ptr<base::Value>(action_dict.DeepCopy()));
-    rule->conditions.push_back(
-        linked_ptr<base::Value>(condition_dict.DeepCopy()));
+    rule->actions.push_back(action_dict.CreateDeepCopy());
+    rule->conditions.push_back(condition_dict.CreateDeepCopy());
     return rule;
   }
 
   // Create a condition with the attributes specified. An example value of
   // |attributes| is: "\"resourceType\": [\"stylesheet\"], \n".
-  linked_ptr<base::Value> CreateCondition(const std::string& attributes) {
+  scoped_ptr<base::Value> CreateCondition(const std::string& attributes) {
     std::string json_description =
         "{ \n"
         "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n";
     json_description += attributes;
     json_description += "}";
 
-    return linked_ptr<base::Value>(
-        base::test::ParseJson(json_description).release());
+    return base::test::ParseJson(json_description);
   }
 
   // Create a rule with the ID |rule_id| and with conditions created from the
@@ -216,7 +210,7 @@
     linked_ptr<api::events::Rule> rule(new api::events::Rule);
     rule->id.reset(new std::string(rule_id));
     rule->priority.reset(new int(1));
-    rule->actions.push_back(linked_ptr<base::Value>(action_dict.DeepCopy()));
+    rule->actions.push_back(action_dict.CreateDeepCopy());
     for (std::vector<const std::string*>::const_iterator it =
              attributes.begin();
          it != attributes.end(); ++it)
@@ -736,7 +730,7 @@
   ASSERT_TRUE(action_value);
 
   WebRequestActionSet::Values actions;
-  actions.push_back(linked_ptr<base::Value>(action_value.release()));
+  actions.push_back(std::move(action_value));
   ASSERT_TRUE(actions.back().get());
 
   std::string error;
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_mangle.cc b/chrome/browser/extensions/api/developer_private/developer_private_mangle.cc
index 7f43b82..75d64f0a 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_mangle.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_mangle.cc
@@ -83,7 +83,7 @@
     scoped_ptr<base::DictionaryValue> value = error.ToValue();
     value->SetInteger("type", static_cast<int>(ExtensionError::MANIFEST_ERROR));
     value->SetInteger("level", static_cast<int>(logging::LOG_WARNING));
-    result.manifest_errors.push_back(make_linked_ptr(value.release()));
+    result.manifest_errors.push_back(std::move(value));
   }
   for (const api::developer_private::RuntimeError& error :
        info.runtime_errors) {
@@ -95,7 +95,7 @@
     else if (error.severity == api::developer_private::ERROR_LEVEL_ERROR)
       severity = logging::LOG_ERROR;
     value->SetInteger("level", static_cast<int>(severity));
-    result.runtime_errors.push_back(make_linked_ptr(value.release()));
+    result.runtime_errors.push_back(std::move(value));
   }
   result.offline_enabled = info.offline_enabled;
   for (const api::developer_private::ExtensionView& view : info.views) {
diff --git a/chrome/browser/extensions/updater/chrome_update_client_config.cc b/chrome/browser/extensions/updater/chrome_update_client_config.cc
index 9dcb208..4dfb696 100644
--- a/chrome/browser/extensions/updater/chrome_update_client_config.cc
+++ b/chrome/browser/extensions/updater/chrome_update_client_config.cc
@@ -13,11 +13,13 @@
 
 namespace extensions {
 
+// For privacy reasons, requires encryption of the component updater
+// communication with the update backend.
 ChromeUpdateClientConfig::ChromeUpdateClientConfig(
     content::BrowserContext* context)
     : impl_(base::CommandLine::ForCurrentProcess(),
-            context->GetRequestContext()) {
-}
+            context->GetRequestContext(),
+            true) {}
 
 int ChromeUpdateClientConfig::InitialDelay() const {
   return impl_.InitialDelay();
diff --git a/chrome/browser/first_run/first_run.cc b/chrome/browser/first_run/first_run.cc
index dea1cde..734711c 100644
--- a/chrome/browser/first_run/first_run.cc
+++ b/chrome/browser/first_run/first_run.cc
@@ -44,6 +44,7 @@
 #include "chrome/browser/ui/global_error/global_error_service_factory.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
+#include "chrome/common/channel_info.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
@@ -58,6 +59,7 @@
 #include "components/search_engines/template_url_service.h"
 #include "components/signin/core/browser/signin_manager.h"
 #include "components/signin/core/browser/signin_tracker.h"
+#include "components/version_info/version_info.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
@@ -639,6 +641,26 @@
 }
 #endif
 
+bool IsMetricsReportingOptIn() {
+#if defined(OS_CHROMEOS)
+  return false;
+#elif defined(OS_ANDROID)
+  return chrome::GetChannel() == version_info::Channel::STABLE;
+#elif defined(OS_MACOSX)
+  return chrome::GetChannel() != version_info::Channel::CANARY;
+#elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+  // Treat BSD and SOLARIS like Linux to not break those builds, although these
+  // platforms are not officially supported by Chrome.
+  return true;
+#elif defined(OS_WIN)
+  // TODO(jwd): Get this data directly from the download page.
+  // Metrics reporting for Windows is initially enabled on the download page. If
+  // it's opt-in or out can change without changes to Chrome. We should get this
+  // information directly from the download page for it to be accurate.
+  return chrome::GetChannel() == version_info::Channel::STABLE;
+#endif
+}
+
 void CreateSentinelIfNeeded() {
   if (IsChromeFirstRun())
     internal::CreateSentinel();
diff --git a/chrome/browser/first_run/first_run.h b/chrome/browser/first_run/first_run.h
index 59ffaad5..90375e2e 100644
--- a/chrome/browser/first_run/first_run.h
+++ b/chrome/browser/first_run/first_run.h
@@ -96,6 +96,16 @@
 bool IsFirstRunSuppressed(const base::CommandLine& command_line);
 #endif
 
+// Returns whether metrics reporting is currently opt-in. This is used to
+// determine if the enable metrics reporting checkbox on first-run should be
+// initially checked. Opt-in means it is not initially checked, opt-out means it
+// is. This is not guaranteed to be correct outside of the first-run situation,
+// as the default may change over time. For that, use
+// GetMetricsReportingDefaultOptIn in
+// chrome/browser/metrics/metrics_reporting_state.h, which gives a value that
+// was stored during first-run.
+bool IsMetricsReportingOptIn();
+
 // Creates the first run sentinel if needed. This should only be called after
 // the process singleton has been grabbed by the current process
 // (http://crbug.com/264694).
diff --git a/chrome/browser/first_run/first_run_internal_posix.cc b/chrome/browser/first_run/first_run_internal_posix.cc
index 7b33c97..b69fdd2 100644
--- a/chrome/browser/first_run/first_run_internal_posix.cc
+++ b/chrome/browser/first_run/first_run_internal_posix.cc
@@ -9,7 +9,9 @@
 #include "base/path_service.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/first_run/first_run.h"
 #include "chrome/browser/first_run/first_run_dialog.h"
+#include "chrome/browser/metrics/metrics_reporting_state.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/installer/util/google_update_settings.h"
@@ -29,8 +31,11 @@
   // Launch the first run dialog only for certain builds, and only if the user
   // has not already set preferences.
   if (internal::IsOrganicFirstRun() && !local_state_file_exists) {
-    if (ShowFirstRunDialog(profile))
+    if (ShowFirstRunDialog(profile)) {
+      RecordMetricsReportingDefaultOptIn(g_browser_process->local_state(),
+                                         first_run::IsMetricsReportingOptIn());
       startup_metric_utils::SetNonBrowserUIDisplayed();
+    }
   }
 
   // If stats reporting was turned on by the first run dialog then toggle
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
index 7ba293b..4c88bc49 100644
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -81,7 +81,6 @@
 #include "net/http/http_auth_handler_factory.h"
 #include "net/http/http_auth_preferences.h"
 #include "net/http/http_network_layer.h"
-#include "net/http/http_network_session.h"
 #include "net/http/http_server_properties_impl.h"
 #include "net/proxy/proxy_config_service.h"
 #include "net/proxy/proxy_script_fetcher_impl.h"
@@ -411,13 +410,7 @@
     globals_->system_request_context->AssertNoURLRequests();
 }
 
-IOThread::Globals::Globals()
-    : system_request_context_leak_checker(this),
-      ignore_certificate_errors(false),
-      testing_fixed_http_port(0),
-      testing_fixed_https_port(0),
-      enable_user_alternate_protocol_ports(false),
-      enable_token_binding(false) {}
+IOThread::Globals::Globals() : system_request_context_leak_checker(this) {}
 
 IOThread::Globals::~Globals() {}
 
@@ -433,7 +426,7 @@
       extension_event_router_forwarder_(extension_event_router_forwarder),
 #endif
       globals_(NULL),
-      is_spdy_disabled_by_policy_(false),
+      is_spdy_allowed_by_policy_(true),
       is_quic_allowed_by_policy_(true),
       creation_time_(base::TimeTicks::Now()),
       weak_factory_(this) {
@@ -498,9 +491,11 @@
                             local_state);
   quick_check_enabled_.MoveToThread(io_thread_proxy);
 
-  is_spdy_disabled_by_policy_ = policy_service->GetPolicies(
-      policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string())).Get(
-          policy::key::kDisableSpdy) != NULL;
+  is_spdy_allowed_by_policy_ =
+      policy_service
+          ->GetPolicies(policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME,
+                                                std::string()))
+          .Get(policy::key::kDisableSpdy) == nullptr;
 
   const base::Value* value = policy_service->GetPolicies(
       policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME,
@@ -726,8 +721,8 @@
   tracked_objects::ScopedTracker tracking_profile10(
       FROM_HERE_WITH_EXPLICIT_FUNCTION(
           "466432 IOThread::InitAsync::CTPolicyEnforcer"));
-  net::CTPolicyEnforcer* policy_enforcer = new net::CTPolicyEnforcer;
-  globals_->ct_policy_enforcer.reset(policy_enforcer);
+  globals_->ct_policy_enforcer.reset(new net::CTPolicyEnforcer());
+  params_.ct_policy_enforcer = globals_->ct_policy_enforcer.get();
 
   globals_->ssl_config_service = GetSSLConfigService();
 
@@ -768,6 +763,7 @@
       FROM_HERE_WITH_EXPLICIT_FUNCTION(
           "466432 IOThread::InitAsync::CreateHostMappingRules"));
   globals_->host_mapping_rules.reset(new net::HostMappingRules());
+  params_.host_mapping_rules = globals_->host_mapping_rules.get();
   // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
   // is fixed.
   tracked_objects::ScopedTracker tracking_profile12_3(
@@ -786,45 +782,39 @@
         command_line.GetSwitchValueASCII(switches::kHostRules));
     TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString");
   }
-  if (command_line.HasSwitch(switches::kIgnoreCertificateErrors))
-    globals_->ignore_certificate_errors = true;
-  if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) {
-    globals_->testing_fixed_http_port =
-        GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort);
-  }
-  if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) {
-    globals_->testing_fixed_https_port =
-        GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort);
-  }
-  ConfigureAltSvcGlobals(
-      command_line, base::FieldTrialList::FindFullName(kAltSvcFieldTrialName),
-      globals_);
   // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
   // is fixed.
   tracked_objects::ScopedTracker tracking_profile12_5(
       FROM_HERE_WITH_EXPLICIT_FUNCTION(
           "466432 IOThread::InitAsync::QuicConfiguration"));
-  ConfigureQuic(command_line);
   if (command_line.HasSwitch(
           switches::kEnableUserAlternateProtocolPorts)) {
-    globals_->enable_user_alternate_protocol_ports = true;
+    params_.enable_user_alternate_protocol_ports = true;
   }
-  ConfigurePriorityDependencies();
-  globals_->enable_brotli.set(
-      base::FeatureList::IsEnabled(features::kBrotliEncoding));
-  globals_->enable_token_binding =
+  params_.enable_brotli =
+      base::FeatureList::IsEnabled(features::kBrotliEncoding);
+  params_.enable_token_binding =
       base::FeatureList::IsEnabled(features::kTokenBinding);
   // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
   // is fixed.
   tracked_objects::ScopedTracker tracking_profile13(
       FROM_HERE_WITH_EXPLICIT_FUNCTION(
           "466432 IOThread::InitAsync::InitializeNetworkOptions"));
-  InitializeNetworkOptions(command_line);
+  // TODO(rch): Make the client socket factory a per-network session instance,
+  // constructed from a NetworkSession::Params, to allow us to move this option
+  // to IOThread::Globals & HttpNetworkSession::Params.
+  network_session_configurator_.ParseFieldTrialsAndCommandLine(
+      is_spdy_allowed_by_policy_, is_quic_allowed_by_policy_, &params_);
+  bool always_enable_tfo_if_supported =
+      command_line.HasSwitch(switches::kEnableTcpFastOpen);
+  // Check for OS support of TCP FastOpen, and turn it on for all connections if
+  // indicated by user.
+  net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_tfo_if_supported);
 
   TRACE_EVENT_BEGIN0("startup",
                      "IOThread::Init:ProxyScriptFetcherRequestContext");
   globals_->proxy_script_fetcher_context.reset(
-      ConstructProxyScriptFetcherContext(globals_, net_log_));
+      ConstructProxyScriptFetcherContext(globals_, params_, net_log_));
   TRACE_EVENT_END0("startup",
                    "IOThread::Init:ProxyScriptFetcherRequestContext");
 
@@ -885,122 +875,195 @@
   base::debug::LeakTracker<SystemURLRequestContextGetter>::CheckForLeaks();
 }
 
-void IOThread::InitializeNetworkOptions(const base::CommandLine& command_line) {
-  // Only handle SPDY field trial parameters and command line flags if
-  // "spdy.disabled" preference is not forced via policy.
-  if (is_spdy_disabled_by_policy_) {
-    base::FieldTrial* trial = base::FieldTrialList::Find(kSpdyFieldTrialName);
-    if (trial)
-      trial->Disable();
-  } else {
-    std::string group = base::FieldTrialList::FindFullName(kSpdyFieldTrialName);
-    VariationParameters params;
-    if (!variations::GetVariationParams(kSpdyFieldTrialName, &params)) {
-      params.clear();
-    }
-    ConfigureSpdyGlobals(command_line, group, params, globals_);
-  }
-
-  ConfigureTCPFastOpen(command_line);
-
-  ConfigureNPNGlobals(base::FieldTrialList::FindFullName(kNpnTrialName),
-                      globals_);
-
-  // TODO(rch): Make the client socket factory a per-network session
-  // instance, constructed from a NetworkSession::Params, to allow us
-  // to move this option to IOThread::Globals &
-  // HttpNetworkSession::Params.
-}
-
-void IOThread::ConfigureTCPFastOpen(const base::CommandLine& command_line) {
-  const std::string trial_group =
-      base::FieldTrialList::FindFullName(kTCPFastOpenFieldTrialName);
-  if (trial_group == kTCPFastOpenHttpsEnabledGroupName)
-    globals_->enable_tcp_fast_open_for_ssl.set(true);
-  bool always_enable_if_supported =
-      command_line.HasSwitch(switches::kEnableTcpFastOpen);
-  // Check for OS support of TCP FastOpen, and turn it on for all connections
-  // if indicated by user.
-  net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_if_supported);
+// static
+void IOThread::NetworkSessionConfigurator::ParseFieldTrials(
+    bool is_spdy_allowed_by_policy,
+    bool is_quic_allowed_by_policy,
+    net::HttpNetworkSession::Params* params) {
+  const base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
+  ParseFieldTrialsAndCommandLineInternal(command_line,
+                                         is_spdy_allowed_by_policy,
+                                         is_quic_allowed_by_policy, params);
 }
 
 // static
-void IOThread::ConfigureSpdyGlobals(
+void IOThread::NetworkSessionConfigurator::ParseFieldTrialsAndCommandLine(
+    bool is_spdy_allowed_by_policy,
+    bool is_quic_allowed_by_policy,
+    net::HttpNetworkSession::Params* params) {
+  const base::CommandLine& command_line =
+      *base::CommandLine::ForCurrentProcess();
+  ParseFieldTrialsAndCommandLineInternal(command_line,
+                                         is_spdy_allowed_by_policy,
+                                         is_quic_allowed_by_policy, params);
+}
+
+// static
+void IOThread::NetworkSessionConfigurator::
+    ParseFieldTrialsAndCommandLineInternal(
+        const base::CommandLine& command_line,
+        bool is_spdy_allowed_by_policy,
+        bool is_quic_allowed_by_policy,
+        net::HttpNetworkSession::Params* params) {
+  // Parameters only controlled by command line.
+  if (command_line.HasSwitch(switches::kIgnoreCertificateErrors))
+    params->ignore_certificate_errors = true;
+  if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) {
+    params->testing_fixed_http_port =
+        GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort);
+  }
+  if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) {
+    params->testing_fixed_https_port =
+        GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort);
+  }
+
+  // Always fetch the field trial groups to ensure they are reported correctly.
+  // The command line flags will be associated with a group that is reported so
+  // long as trial is actually queried.
+
+  std::string altsvc_trial_group =
+      base::FieldTrialList::FindFullName(kAltSvcFieldTrialName);
+  ConfigureAltSvcParams(command_line, altsvc_trial_group, params);
+
+  std::string quic_trial_group =
+      base::FieldTrialList::FindFullName(kQuicFieldTrialName);
+  VariationParameters quic_trial_params;
+  if (!variations::GetVariationParams(kQuicFieldTrialName, &quic_trial_params))
+    quic_trial_params.clear();
+  ConfigureQuicParams(command_line, quic_trial_group, quic_trial_params,
+                      is_quic_allowed_by_policy, params);
+
+  if (!is_spdy_allowed_by_policy) {
+    base::FieldTrial* trial = base::FieldTrialList::Find(kSpdyFieldTrialName);
+    if (trial)
+      trial->Disable();
+  }
+  std::string spdy_trial_group =
+      base::FieldTrialList::FindFullName(kSpdyFieldTrialName);
+  VariationParameters spdy_trial_params;
+  if (!variations::GetVariationParams(kSpdyFieldTrialName, &spdy_trial_params))
+    spdy_trial_params.clear();
+  ConfigureSpdyParams(command_line, spdy_trial_group, spdy_trial_params,
+                      is_spdy_allowed_by_policy, params);
+
+  const std::string tfo_trial_group =
+      base::FieldTrialList::FindFullName(kTCPFastOpenFieldTrialName);
+  ConfigureTCPFastOpenParams(tfo_trial_group, params);
+
+  std::string npn_trial_group =
+      base::FieldTrialList::FindFullName(kNpnTrialName);
+  ConfigureNPNParams(command_line, npn_trial_group, params);
+
+  std::string priority_dependencies_trial_group =
+      base::FieldTrialList::FindFullName(kSpdyDependenciesFieldTrial);
+  ConfigurePriorityDependencies(priority_dependencies_trial_group, params);
+}
+
+// static
+void IOThread::NetworkSessionConfigurator::ConfigureTCPFastOpenParams(
+    base::StringPiece tfo_trial_group,
+    net::HttpNetworkSession::Params* params) {
+  if (tfo_trial_group == kTCPFastOpenHttpsEnabledGroupName)
+    params->enable_tcp_fast_open_for_ssl = true;
+}
+
+// static
+void IOThread::NetworkSessionConfigurator::ConfigureSpdyParams(
     const base::CommandLine& command_line,
     base::StringPiece spdy_trial_group,
     const VariationParameters& spdy_trial_params,
-    IOThread::Globals* globals) {
+    bool is_spdy_allowed_by_policy,
+    net::HttpNetworkSession::Params* params) {
+  // Only handle SPDY field trial parameters and command line flags if
+  // "spdy.disabled" preference is not forced via policy.
+  if (!is_spdy_allowed_by_policy) {
+    params->enable_spdy31 = false;
+    params->enable_http2 = false;
+    return;
+  }
+
   if (command_line.HasSwitch(switches::kIgnoreUrlFetcherCertRequests))
     net::URLFetcher::SetIgnoreCertificateRequests(true);
 
   if (command_line.HasSwitch(switches::kDisableHttp2)) {
-    globals->enable_spdy31.set(false);
-    globals->enable_http2.set(false);
+    params->enable_spdy31 = false;
+    params->enable_http2 = false;
     return;
   }
 
-  // No SPDY command-line flags have been specified. Examine trial groups.
   if (spdy_trial_group.starts_with(kSpdyFieldTrialHoldbackGroupNamePrefix)) {
     net::HttpStreamFactory::set_spdy_enabled(false);
     return;
   }
   if (spdy_trial_group.starts_with(kSpdyFieldTrialSpdy31GroupNamePrefix)) {
-    globals->enable_spdy31.set(true);
-    globals->enable_http2.set(false);
+    params->enable_spdy31 = true;
+    params->enable_http2 = false;
     return;
   }
   if (spdy_trial_group.starts_with(kSpdyFieldTrialSpdy4GroupNamePrefix)) {
-    globals->enable_spdy31.set(true);
-    globals->enable_http2.set(true);
+    params->enable_spdy31 = true;
+    params->enable_http2 = true;
     return;
   }
   if (spdy_trial_group.starts_with(kSpdyFieldTrialParametrizedPrefix)) {
     bool spdy_enabled = false;
-    globals->enable_spdy31.set(false);
-    globals->enable_http2.set(false);
+    params->enable_spdy31 = false;
+    params->enable_http2 = false;
     if (base::LowerCaseEqualsASCII(
             GetVariationParam(spdy_trial_params, "enable_http2"), "true")) {
       spdy_enabled = true;
-      globals->enable_http2.set(true);
+      params->enable_http2 = true;
     }
     if (base::LowerCaseEqualsASCII(
             GetVariationParam(spdy_trial_params, "enable_spdy31"), "true")) {
       spdy_enabled = true;
-      globals->enable_spdy31.set(true);
+      params->enable_spdy31 = true;
     }
     // TODO(bnc): https://crbug.com/521597
-    // HttpStreamFactory::spdy_enabled_ is redundant with globals->enable_http2
+    // HttpStreamFactory::spdy_enabled_ is redundant with params->enable_http2
     // and enable_spdy31, can it be eliminated?
     net::HttpStreamFactory::set_spdy_enabled(spdy_enabled);
     return;
   }
-
-  // By default, enable HTTP/2.
-  globals->enable_spdy31.set(true);
-  globals->enable_http2.set(true);
 }
 
 // static
-void IOThread::ConfigureAltSvcGlobals(const base::CommandLine& command_line,
-                                      base::StringPiece altsvc_trial_group,
-                                      IOThread::Globals* globals) {
+void IOThread::NetworkSessionConfigurator::ConfigureAltSvcParams(
+    const base::CommandLine& command_line,
+    base::StringPiece altsvc_trial_group,
+    net::HttpNetworkSession::Params* params) {
   if (command_line.HasSwitch(switches::kEnableAlternativeServices) ||
       altsvc_trial_group.starts_with(kAltSvcFieldTrialEnabledPrefix)) {
-    globals->parse_alternative_services.set(true);
+    params->parse_alternative_services = true;
     return;
   }
   if (altsvc_trial_group.starts_with(kAltSvcFieldTrialDisabledPrefix)) {
-    globals->parse_alternative_services.set(false);
+    params->parse_alternative_services = false;
   }
 }
 
 // static
-void IOThread::ConfigureNPNGlobals(base::StringPiece npn_trial_group,
-                                   IOThread::Globals* globals) {
+void IOThread::NetworkSessionConfigurator::ConfigureNPNParams(
+    const base::CommandLine& command_line,
+    base::StringPiece npn_trial_group,
+    net::HttpNetworkSession::Params* params) {
   if (npn_trial_group.starts_with(kNpnTrialEnabledGroupNamePrefix)) {
-    globals->enable_npn.set(true);
+    params->enable_npn = true;
   } else if (npn_trial_group.starts_with(kNpnTrialDisabledGroupNamePrefix)) {
-    globals->enable_npn.set(false);
+    params->enable_npn = false;
+  }
+}
+
+// static
+void IOThread::NetworkSessionConfigurator::ConfigurePriorityDependencies(
+    base::StringPiece priority_dependencies_trial_group,
+    net::HttpNetworkSession::Params* params) {
+  if (priority_dependencies_trial_group.starts_with(
+          kSpdyDependenciesFieldTrialEnable)) {
+    params->enable_priority_dependencies = true;
+  } else if (priority_dependencies_trial_group.starts_with(
+                 kSpdyDepencenciesFieldTrialDisable)) {
+    params->enable_priority_dependencies = false;
   }
 }
 
@@ -1078,95 +1141,22 @@
     host_cache->clear();
 }
 
-void IOThread::InitializeNetworkSessionParams(
-    net::HttpNetworkSession::Params* params) {
-  InitializeNetworkSessionParamsFromGlobals(*globals_, params);
-}
-
-void IOThread::InitializeNetworkSessionParamsFromGlobals(
-    const IOThread::Globals& globals,
-    net::HttpNetworkSession::Params* params) {
-  //  The next two properties of the params don't seem to be
-  // elements of URLRequestContext, so they must be set here.
-  params->ct_policy_enforcer = globals.ct_policy_enforcer.get();
-  params->host_mapping_rules = globals.host_mapping_rules.get();
-
-  params->ignore_certificate_errors = globals.ignore_certificate_errors;
-  params->testing_fixed_http_port = globals.testing_fixed_http_port;
-  params->testing_fixed_https_port = globals.testing_fixed_https_port;
-  globals.enable_tcp_fast_open_for_ssl.CopyToIfSet(
-      &params->enable_tcp_fast_open_for_ssl);
-
-  globals.spdy_default_protocol.CopyToIfSet(
-      &params->spdy_default_protocol);
-  globals.enable_spdy31.CopyToIfSet(&params->enable_spdy31);
-  globals.enable_http2.CopyToIfSet(&params->enable_http2);
-  globals.parse_alternative_services.CopyToIfSet(
-      &params->parse_alternative_services);
-  globals.enable_alternative_service_with_different_host.CopyToIfSet(
-      &params->enable_alternative_service_with_different_host);
-
-  globals.enable_npn.CopyToIfSet(&params->enable_npn);
-
-  globals.enable_brotli.CopyToIfSet(&params->enable_brotli);
-
-  globals.enable_priority_dependencies.CopyToIfSet(
-      &params->enable_priority_dependencies);
-
-  globals.enable_quic.CopyToIfSet(&params->enable_quic);
-  globals.disable_quic_on_timeout_with_open_streams.CopyToIfSet(
-    &params->disable_quic_on_timeout_with_open_streams);
-  globals.enable_quic_for_proxies.CopyToIfSet(&params->enable_quic_for_proxies);
-  globals.quic_always_require_handshake_confirmation.CopyToIfSet(
-      &params->quic_always_require_handshake_confirmation);
-  globals.quic_disable_connection_pooling.CopyToIfSet(
-      &params->quic_disable_connection_pooling);
-  globals.quic_load_server_info_timeout_srtt_multiplier.CopyToIfSet(
-      &params->quic_load_server_info_timeout_srtt_multiplier);
-  globals.quic_enable_connection_racing.CopyToIfSet(
-      &params->quic_enable_connection_racing);
-  globals.quic_enable_non_blocking_io.CopyToIfSet(
-      &params->quic_enable_non_blocking_io);
-  globals.quic_prefer_aes.CopyToIfSet(&params->quic_prefer_aes);
-  globals.quic_disable_disk_cache.CopyToIfSet(
-      &params->quic_disable_disk_cache);
-  globals.quic_max_number_of_lossy_connections.CopyToIfSet(
-      &params->quic_max_number_of_lossy_connections);
-  globals.quic_packet_loss_threshold.CopyToIfSet(
-      &params->quic_packet_loss_threshold);
-  globals.quic_socket_receive_buffer_size.CopyToIfSet(
-      &params->quic_socket_receive_buffer_size);
-  globals.quic_delay_tcp_race.CopyToIfSet(&params->quic_delay_tcp_race);
-  globals.enable_quic_port_selection.CopyToIfSet(
-      &params->enable_quic_port_selection);
-  globals.quic_max_packet_length.CopyToIfSet(&params->quic_max_packet_length);
-  globals.quic_user_agent_id.CopyToIfSet(&params->quic_user_agent_id);
-  globals.quic_supported_versions.CopyToIfSet(
-      &params->quic_supported_versions);
-  params->quic_connection_options = globals.quic_connection_options;
-  globals.quic_close_sessions_on_ip_change.CopyToIfSet(
-      &params->quic_close_sessions_on_ip_change);
-  globals.quic_idle_connection_timeout_seconds.CopyToIfSet(
-      &params->quic_idle_connection_timeout_seconds);
-  globals.quic_disable_preconnect_if_0rtt.CopyToIfSet(
-      &params->quic_disable_preconnect_if_0rtt);
-  if (!globals.quic_host_whitelist.empty())
-    params->quic_host_whitelist = globals.quic_host_whitelist;
-  globals.quic_migrate_sessions_on_network_change.CopyToIfSet(
-      &params->quic_migrate_sessions_on_network_change);
-  globals.quic_migrate_sessions_early.CopyToIfSet(
-      &params->quic_migrate_sessions_early);
-  if (!globals.origins_to_force_quic_on.empty())
-    params->origins_to_force_quic_on = globals.origins_to_force_quic_on;
-  params->enable_user_alternate_protocol_ports =
-      globals.enable_user_alternate_protocol_ports;
-  params->enable_token_binding = globals.enable_token_binding;
+const net::HttpNetworkSession::Params& IOThread::NetworkSessionParams() const {
+  return params_;
 }
 
 base::TimeTicks IOThread::creation_time() const {
   return creation_time_;
 }
 
+// static
+bool IOThread::ShouldEnableQuicForDataReductionProxy() {
+  const base::CommandLine& command_line =
+      *base::CommandLine::ForCurrentProcess();
+  return NetworkSessionConfigurator::ShouldEnableQuicForDataReductionProxy(
+      command_line);
+}
+
 net::SSLConfigService* IOThread::GetSSLConfigService() {
   return ssl_config_service_manager_->Get();
 }
@@ -1212,136 +1202,108 @@
       quick_check_enabled_.GetValue());
 
   globals_->system_request_context.reset(
-      ConstructSystemRequestContext(globals_, net_log_));
+      ConstructSystemRequestContext(globals_, params_, net_log_));
 }
 
 void IOThread::UpdateDnsClientEnabled() {
   globals()->host_resolver->SetDnsClientEnabled(*dns_client_enabled_);
 }
 
-void IOThread::ConfigurePriorityDependencies() {
-  std::string group =
-      base::FieldTrialList::FindFullName(kSpdyDependenciesFieldTrial);
-  if (group == kSpdyDependenciesFieldTrialEnable) {
-    globals_->enable_priority_dependencies.set(true);
-  } else if (group == kSpdyDepencenciesFieldTrialDisable) {
-    globals_->enable_priority_dependencies.set(false);
-  }
-}
-
-void IOThread::ConfigureQuic(const base::CommandLine& command_line) {
-  // Always fetch the field trial group to ensure it is reported correctly.
-  // The command line flags will be associated with a group that is reported
-  // so long as trial is actually queried.
-  std::string group =
-      base::FieldTrialList::FindFullName(kQuicFieldTrialName);
-  VariationParameters params;
-  if (!variations::GetVariationParams(kQuicFieldTrialName, &params)) {
-    params.clear();
-  }
-
-  ConfigureQuicGlobals(command_line, group, params, is_quic_allowed_by_policy_,
-                       globals_);
-}
-
-void IOThread::ConfigureQuicGlobals(
+// static
+void IOThread::NetworkSessionConfigurator::ConfigureQuicParams(
     const base::CommandLine& command_line,
     base::StringPiece quic_trial_group,
     const VariationParameters& quic_trial_params,
-    bool quic_allowed_by_policy,
-    IOThread::Globals* globals) {
-  bool enable_quic = ShouldEnableQuic(command_line, quic_trial_group,
-                                      quic_allowed_by_policy);
-  globals->enable_quic.set(enable_quic);
-  globals->disable_quic_on_timeout_with_open_streams.set(
-    ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(quic_trial_params));
-  bool enable_quic_for_proxies = ShouldEnableQuicForProxies(
-      command_line, quic_trial_group, quic_allowed_by_policy);
-  globals->enable_quic_for_proxies.set(enable_quic_for_proxies);
+    bool is_quic_allowed_by_policy,
+    net::HttpNetworkSession::Params* params) {
+  params->enable_quic = ShouldEnableQuic(command_line, quic_trial_group,
+                                         is_quic_allowed_by_policy);
+  params->disable_quic_on_timeout_with_open_streams =
+      ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(quic_trial_params);
+  params->enable_quic_for_proxies = ShouldEnableQuicForProxies(
+      command_line, quic_trial_group, is_quic_allowed_by_policy);
 
   if (ShouldQuicEnableAlternativeServicesForDifferentHost(command_line,
                                                           quic_trial_params)) {
-    globals->enable_alternative_service_with_different_host.set(true);
-    globals->parse_alternative_services.set(true);
+    params->enable_alternative_service_with_different_host = true;
+    params->parse_alternative_services = true;
   } else {
-    globals->enable_alternative_service_with_different_host.set(false);
+    params->enable_alternative_service_with_different_host = false;
   }
 
-  if (enable_quic) {
-    globals->quic_always_require_handshake_confirmation.set(
-        ShouldQuicAlwaysRequireHandshakeConfirmation(quic_trial_params));
-    globals->quic_disable_connection_pooling.set(
-        ShouldQuicDisableConnectionPooling(quic_trial_params));
+  if (params->enable_quic) {
+    params->quic_always_require_handshake_confirmation =
+        ShouldQuicAlwaysRequireHandshakeConfirmation(quic_trial_params);
+    params->quic_disable_connection_pooling =
+        ShouldQuicDisableConnectionPooling(quic_trial_params);
     int receive_buffer_size = GetQuicSocketReceiveBufferSize(quic_trial_params);
     if (receive_buffer_size != 0) {
-      globals->quic_socket_receive_buffer_size.set(receive_buffer_size);
+      params->quic_socket_receive_buffer_size = receive_buffer_size;
     }
-    globals->quic_delay_tcp_race.set(ShouldQuicDelayTcpRace(quic_trial_params));
+    params->quic_delay_tcp_race = ShouldQuicDelayTcpRace(quic_trial_params);
     float load_server_info_timeout_srtt_multiplier =
         GetQuicLoadServerInfoTimeoutSrttMultiplier(quic_trial_params);
     if (load_server_info_timeout_srtt_multiplier != 0) {
-      globals->quic_load_server_info_timeout_srtt_multiplier.set(
-          load_server_info_timeout_srtt_multiplier);
+      params->quic_load_server_info_timeout_srtt_multiplier =
+          load_server_info_timeout_srtt_multiplier;
     }
-    globals->quic_enable_connection_racing.set(
-        ShouldQuicEnableConnectionRacing(quic_trial_params));
-    globals->quic_enable_non_blocking_io.set(
-        ShouldQuicEnableNonBlockingIO(quic_trial_params));
-    globals->quic_disable_disk_cache.set(
-        ShouldQuicDisableDiskCache(quic_trial_params));
-    globals->quic_prefer_aes.set(
-        ShouldQuicPreferAes(quic_trial_params));
+    params->quic_enable_connection_racing =
+        ShouldQuicEnableConnectionRacing(quic_trial_params);
+    params->quic_enable_non_blocking_io =
+        ShouldQuicEnableNonBlockingIO(quic_trial_params);
+    params->quic_disable_disk_cache =
+        ShouldQuicDisableDiskCache(quic_trial_params);
+    params->quic_prefer_aes = ShouldQuicPreferAes(quic_trial_params);
     int max_number_of_lossy_connections = GetQuicMaxNumberOfLossyConnections(
         quic_trial_params);
     if (max_number_of_lossy_connections != 0) {
-      globals->quic_max_number_of_lossy_connections.set(
-          max_number_of_lossy_connections);
+      params->quic_max_number_of_lossy_connections =
+          max_number_of_lossy_connections;
     }
     float packet_loss_threshold = GetQuicPacketLossThreshold(quic_trial_params);
     if (packet_loss_threshold != 0)
-      globals->quic_packet_loss_threshold.set(packet_loss_threshold);
-    globals->enable_quic_port_selection.set(
-        ShouldEnableQuicPortSelection(command_line));
-    globals->quic_connection_options =
+      params->quic_packet_loss_threshold = packet_loss_threshold;
+    params->enable_quic_port_selection =
+        ShouldEnableQuicPortSelection(command_line);
+    params->quic_connection_options =
         GetQuicConnectionOptions(command_line, quic_trial_params);
-    globals->quic_close_sessions_on_ip_change.set(
-        ShouldQuicCloseSessionsOnIpChange(quic_trial_params));
+    params->quic_close_sessions_on_ip_change =
+        ShouldQuicCloseSessionsOnIpChange(quic_trial_params);
     int idle_connection_timeout_seconds = GetQuicIdleConnectionTimeoutSeconds(
         quic_trial_params);
     if (idle_connection_timeout_seconds != 0) {
-      globals->quic_idle_connection_timeout_seconds.set(
-          idle_connection_timeout_seconds);
+      params->quic_idle_connection_timeout_seconds =
+          idle_connection_timeout_seconds;
     }
-    globals->quic_disable_preconnect_if_0rtt.set(
-        ShouldQuicDisablePreConnectIfZeroRtt(quic_trial_params));
-    globals->quic_host_whitelist =
+    params->quic_disable_preconnect_if_0rtt =
+        ShouldQuicDisablePreConnectIfZeroRtt(quic_trial_params);
+    params->quic_host_whitelist =
         GetQuicHostWhitelist(command_line, quic_trial_params);
-    globals->quic_migrate_sessions_on_network_change.set(
-        ShouldQuicMigrateSessionsOnNetworkChange(quic_trial_params));
-    globals->quic_migrate_sessions_early.set(
-        ShouldQuicMigrateSessionsEarly(quic_trial_params));
+    params->quic_migrate_sessions_on_network_change =
+        ShouldQuicMigrateSessionsOnNetworkChange(quic_trial_params);
+    params->quic_migrate_sessions_early =
+        ShouldQuicMigrateSessionsEarly(quic_trial_params);
   }
 
   size_t max_packet_length = GetQuicMaxPacketLength(command_line,
                                                     quic_trial_params);
   if (max_packet_length != 0) {
-    globals->quic_max_packet_length.set(max_packet_length);
+    params->quic_max_packet_length = max_packet_length;
   }
 
-  std::string quic_user_agent_id = chrome::GetChannelString();
-  if (!quic_user_agent_id.empty())
-    quic_user_agent_id.push_back(' ');
-  quic_user_agent_id.append(
+  params->quic_user_agent_id = chrome::GetChannelString();
+  if (!params->quic_user_agent_id.empty())
+    params->quic_user_agent_id.push_back(' ');
+  params->quic_user_agent_id.append(
       version_info::GetProductNameAndVersionForUserAgent());
-  quic_user_agent_id.push_back(' ');
-  quic_user_agent_id.append(content::BuildOSCpuInfo());
-  globals->quic_user_agent_id.set(quic_user_agent_id);
+  params->quic_user_agent_id.push_back(' ');
+  params->quic_user_agent_id.append(content::BuildOSCpuInfo());
 
   net::QuicVersion version = GetQuicVersion(command_line, quic_trial_params);
   if (version != net::QUIC_VERSION_UNSUPPORTED) {
     net::QuicVersionVector supported_versions;
     supported_versions.push_back(version);
-    globals->quic_supported_versions.set(supported_versions);
+    params->quic_supported_versions = supported_versions;
   }
 
   if (command_line.HasSwitch(switches::kOriginToForceQuicOn)) {
@@ -1351,51 +1313,59 @@
              origins, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
       net::HostPortPair quic_origin = net::HostPortPair::FromString(host_port);
       if (!quic_origin.IsEmpty())
-        globals->origins_to_force_quic_on.insert(quic_origin);
+        params->origins_to_force_quic_on.insert(quic_origin);
     }
   }
 }
 
-bool IOThread::ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(
-    const VariationParameters& quic_trial_params) {
+// static
+bool IOThread::NetworkSessionConfigurator::
+    ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(
+        const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
     GetVariationParam(quic_trial_params,
       "disable_quic_on_timeout_with_open_streams"),
       "true");
 }
 
-bool IOThread::ShouldEnableQuic(const base::CommandLine& command_line,
-                                base::StringPiece quic_trial_group,
-                                bool quic_allowed_by_policy) {
-  if (command_line.HasSwitch(switches::kDisableQuic) || !quic_allowed_by_policy)
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldEnableQuic(
+    const base::CommandLine& command_line,
+    base::StringPiece quic_trial_group,
+    bool is_quic_allowed_by_policy) {
+  if (command_line.HasSwitch(switches::kDisableQuic) ||
+      !is_quic_allowed_by_policy)
     return false;
 
   if (command_line.HasSwitch(switches::kEnableQuic))
     return true;
 
   return quic_trial_group.starts_with(kQuicFieldTrialEnabledGroupName) ||
-      quic_trial_group.starts_with(kQuicFieldTrialHttpsEnabledGroupName);
+         quic_trial_group.starts_with(kQuicFieldTrialHttpsEnabledGroupName);
 }
 
-bool IOThread::ShouldEnableQuicForProxies(const base::CommandLine& command_line,
-                                          base::StringPiece quic_trial_group,
-                                          bool quic_allowed_by_policy) {
-  return ShouldEnableQuic(
-      command_line, quic_trial_group, quic_allowed_by_policy) ||
-      ShouldEnableQuicForDataReductionProxy();
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldEnableQuicForProxies(
+    const base::CommandLine& command_line,
+    base::StringPiece quic_trial_group,
+    bool is_quic_allowed_by_policy) {
+  return ShouldEnableQuic(command_line, quic_trial_group,
+                          is_quic_allowed_by_policy) ||
+         ShouldEnableQuicForDataReductionProxy(command_line);
 }
 
-bool IOThread::ShouldEnableQuicForDataReductionProxy() {
-  const base::CommandLine& command_line =
-        *base::CommandLine::ForCurrentProcess();
-
+// static
+bool IOThread::NetworkSessionConfigurator::
+    ShouldEnableQuicForDataReductionProxy(
+        const base::CommandLine& command_line) {
   if (command_line.HasSwitch(switches::kDisableQuic))
     return false;
 
   return data_reduction_proxy::params::IsIncludedInQuicFieldTrial();
 }
 
-bool IOThread::ShouldEnableQuicPortSelection(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldEnableQuicPortSelection(
     const base::CommandLine& command_line) {
   if (command_line.HasSwitch(switches::kDisableQuicPortSelection))
     return false;
@@ -1406,7 +1376,9 @@
   return false;  // Default to disabling port selection on all channels.
 }
 
-net::QuicTagVector IOThread::GetQuicConnectionOptions(
+// static
+net::QuicTagVector
+IOThread::NetworkSessionConfigurator::GetQuicConnectionOptions(
     const base::CommandLine& command_line,
     const VariationParameters& quic_trial_params) {
   if (command_line.HasSwitch(switches::kQuicConnectionOptions)) {
@@ -1423,23 +1395,28 @@
   return net::QuicUtils::ParseQuicConnectionOptions(it->second);
 }
 
-bool IOThread::ShouldQuicAlwaysRequireHandshakeConfirmation(
-    const VariationParameters& quic_trial_params) {
+// static
+bool IOThread::NetworkSessionConfigurator::
+    ShouldQuicAlwaysRequireHandshakeConfirmation(
+        const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params,
                         "always_require_handshake_confirmation"),
       "true");
 }
 
-bool IOThread::ShouldQuicDisableConnectionPooling(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicDisableConnectionPooling(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "disable_connection_pooling"),
       "true");
 }
 
-float IOThread::GetQuicLoadServerInfoTimeoutSrttMultiplier(
-    const VariationParameters& quic_trial_params) {
+// static
+float IOThread::NetworkSessionConfigurator::
+    GetQuicLoadServerInfoTimeoutSrttMultiplier(
+        const VariationParameters& quic_trial_params) {
   double value;
   if (base::StringToDouble(GetVariationParam(quic_trial_params,
                                              "load_server_info_time_to_srtt"),
@@ -1449,35 +1426,41 @@
   return 0.0f;
 }
 
-bool IOThread::ShouldQuicEnableConnectionRacing(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicEnableConnectionRacing(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "enable_connection_racing"),
       "true");
 }
 
-bool IOThread::ShouldQuicEnableNonBlockingIO(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicEnableNonBlockingIO(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "enable_non_blocking_io"),
       "true");
 }
 
-bool IOThread::ShouldQuicDisableDiskCache(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicDisableDiskCache(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "disable_disk_cache"), "true");
 }
 
-bool IOThread::ShouldQuicPreferAes(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicPreferAes(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "prefer_aes"), "true");
 }
 
-bool IOThread::ShouldQuicEnableAlternativeServicesForDifferentHost(
-    const base::CommandLine& command_line,
-    const VariationParameters& quic_trial_params) {
+// static
+bool IOThread::NetworkSessionConfigurator::
+    ShouldQuicEnableAlternativeServicesForDifferentHost(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params) {
   // TODO(bnc): Remove inaccurately named "use_alternative_services" parameter.
   return command_line.HasSwitch(switches::kEnableAlternativeServices) ||
          base::LowerCaseEqualsASCII(
@@ -1490,7 +1473,8 @@
              "true");
 }
 
-int IOThread::GetQuicMaxNumberOfLossyConnections(
+// static
+int IOThread::NetworkSessionConfigurator::GetQuicMaxNumberOfLossyConnections(
     const VariationParameters& quic_trial_params) {
   int value;
   if (base::StringToInt(GetVariationParam(quic_trial_params,
@@ -1501,7 +1485,8 @@
   return 0;
 }
 
-float IOThread::GetQuicPacketLossThreshold(
+// static
+float IOThread::NetworkSessionConfigurator::GetQuicPacketLossThreshold(
     const VariationParameters& quic_trial_params) {
   double value;
   if (base::StringToDouble(GetVariationParam(quic_trial_params,
@@ -1512,7 +1497,8 @@
   return 0.0f;
 }
 
-int IOThread::GetQuicSocketReceiveBufferSize(
+// static
+int IOThread::NetworkSessionConfigurator::GetQuicSocketReceiveBufferSize(
     const VariationParameters& quic_trial_params) {
   int value;
   if (base::StringToInt(GetVariationParam(quic_trial_params,
@@ -1523,20 +1509,23 @@
   return 0;
 }
 
-bool IOThread::ShouldQuicDelayTcpRace(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicDelayTcpRace(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "delay_tcp_race"), "true");
 }
 
-bool IOThread::ShouldQuicCloseSessionsOnIpChange(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicCloseSessionsOnIpChange(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "close_sessions_on_ip_change"),
       "true");
 }
 
-int IOThread::GetQuicIdleConnectionTimeoutSeconds(
+// static
+int IOThread::NetworkSessionConfigurator::GetQuicIdleConnectionTimeoutSeconds(
     const VariationParameters& quic_trial_params) {
   int value;
   if (base::StringToInt(GetVariationParam(quic_trial_params,
@@ -1547,14 +1536,17 @@
   return 0;
 }
 
-bool IOThread::ShouldQuicDisablePreConnectIfZeroRtt(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicDisablePreConnectIfZeroRtt(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "disable_preconnect_if_0rtt"),
       "true");
 }
 
-std::unordered_set<std::string> IOThread::GetQuicHostWhitelist(
+// static
+std::unordered_set<std::string>
+IOThread::NetworkSessionConfigurator::GetQuicHostWhitelist(
     const base::CommandLine& command_line,
     const VariationParameters& quic_trial_params) {
   std::string whitelist;
@@ -1572,21 +1564,25 @@
   return hosts;
 }
 
-bool IOThread::ShouldQuicMigrateSessionsOnNetworkChange(
-    const VariationParameters& quic_trial_params) {
+// static
+bool IOThread::NetworkSessionConfigurator::
+    ShouldQuicMigrateSessionsOnNetworkChange(
+        const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params,
                         "migrate_sessions_on_network_change"),
       "true");
 }
 
-bool IOThread::ShouldQuicMigrateSessionsEarly(
+// static
+bool IOThread::NetworkSessionConfigurator::ShouldQuicMigrateSessionsEarly(
     const VariationParameters& quic_trial_params) {
   return base::LowerCaseEqualsASCII(
       GetVariationParam(quic_trial_params, "migrate_sessions_early"), "true");
 }
 
-size_t IOThread::GetQuicMaxPacketLength(
+// static
+size_t IOThread::NetworkSessionConfigurator::GetQuicMaxPacketLength(
     const base::CommandLine& command_line,
     const VariationParameters& quic_trial_params) {
   if (command_line.HasSwitch(switches::kQuicMaxPacketLength)) {
@@ -1608,7 +1604,8 @@
   return 0;
 }
 
-net::QuicVersion IOThread::GetQuicVersion(
+// static
+net::QuicVersion IOThread::NetworkSessionConfigurator::GetQuicVersion(
     const base::CommandLine& command_line,
     const VariationParameters& quic_trial_params) {
   if (command_line.HasSwitch(switches::kQuicVersion)) {
@@ -1619,7 +1616,9 @@
   return ParseQuicVersion(GetVariationParam(quic_trial_params, "quic_version"));
 }
 
-net::QuicVersion IOThread::ParseQuicVersion(const std::string& quic_version) {
+// static
+net::QuicVersion IOThread::NetworkSessionConfigurator::ParseQuicVersion(
+    const std::string& quic_version) {
   net::QuicVersionVector supported_versions = net::QuicSupportedVersions();
   for (size_t i = 0; i < supported_versions.size(); ++i) {
     net::QuicVersion version = supported_versions[i];
@@ -1633,6 +1632,7 @@
 
 net::URLRequestContext* IOThread::ConstructSystemRequestContext(
     IOThread::Globals* globals,
+    const net::HttpNetworkSession::Params& params,
     net::NetLog* net_log) {
   net::URLRequestContext* context = new SystemURLRequestContext;
   context->set_net_log(net_log);
@@ -1664,8 +1664,7 @@
   context->set_http_server_properties(
       globals->http_server_properties->GetWeakPtr());
 
-  net::HttpNetworkSession::Params system_params;
-  InitializeNetworkSessionParamsFromGlobals(*globals, &system_params);
+  net::HttpNetworkSession::Params system_params(params);
   net::URLRequestContextBuilder::SetHttpNetworkSessionComponents(
       context, &system_params);
 
@@ -1681,6 +1680,7 @@
 
 net::URLRequestContext* IOThread::ConstructProxyScriptFetcherContext(
     IOThread::Globals* globals,
+    const net::HttpNetworkSession::Params& params,
     net::NetLog* net_log) {
   // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
   // is fixed.
@@ -1712,8 +1712,7 @@
   context->set_http_server_properties(
       globals->http_server_properties->GetWeakPtr());
 
-  net::HttpNetworkSession::Params session_params;
-  InitializeNetworkSessionParamsFromGlobals(*globals, &session_params);
+  net::HttpNetworkSession::Params session_params(params);
   net::URLRequestContextBuilder::SetHttpNetworkSessionComponents(
       context, &session_params);
 
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h
index fc27d9b..df328e1 100644
--- a/chrome/browser/io_thread.h
+++ b/chrome/browser/io_thread.h
@@ -71,7 +71,6 @@
 class HostResolver;
 class HttpAuthHandlerRegistryFactory;
 class HttpAuthPreferences;
-class HttpNetworkSession;
 class HttpServerProperties;
 class HttpTransactionFactory;
 class HttpUserAgentSettings;
@@ -108,26 +107,6 @@
 class IOThread : public content::BrowserThreadDelegate {
  public:
   struct Globals {
-    template <typename T>
-    class Optional {
-     public:
-      Optional() : set_(false) {}
-
-      void set(T value) {
-        set_ = true;
-        value_ = value;
-      }
-      void CopyToIfSet(T* value) const {
-        if (set_) {
-          *value = value_;
-        }
-      }
-
-     private:
-      bool set_;
-      T value_;
-    };
-
     class SystemRequestContextLeakChecker {
      public:
       explicit SystemRequestContextLeakChecker(Globals* globals);
@@ -198,57 +177,221 @@
     scoped_ptr<net::HostMappingRules> host_mapping_rules;
     scoped_ptr<net::HttpUserAgentSettings> http_user_agent_settings;
     scoped_ptr<net::NetworkQualityEstimator> network_quality_estimator;
-    bool ignore_certificate_errors;
-    uint16_t testing_fixed_http_port;
-    uint16_t testing_fixed_https_port;
-    Optional<bool> enable_tcp_fast_open_for_ssl;
 
-    Optional<net::NextProto> spdy_default_protocol;
-    Optional<bool> enable_spdy31;
-    Optional<bool> enable_http2;
-    std::set<net::HostPortPair> forced_spdy_exclusions;
-    Optional<bool> parse_alternative_services;
-    Optional<bool> enable_alternative_service_with_different_host;
-    Optional<double> alternative_service_probability_threshold;
-
-    Optional<bool> enable_npn;
-
-    Optional<bool> enable_brotli;
-
-    Optional<bool> enable_priority_dependencies;
-
-    Optional<bool> enable_quic;
-    Optional<bool> disable_quic_on_timeout_with_open_streams;
-    Optional<bool> enable_quic_for_proxies;
-    Optional<bool> enable_quic_port_selection;
-    Optional<bool> quic_always_require_handshake_confirmation;
-    Optional<bool> quic_disable_connection_pooling;
-    Optional<float> quic_load_server_info_timeout_srtt_multiplier;
-    Optional<bool> quic_enable_connection_racing;
-    Optional<bool> quic_enable_non_blocking_io;
-    Optional<bool> quic_disable_disk_cache;
-    Optional<bool> quic_prefer_aes;
-    Optional<int> quic_max_number_of_lossy_connections;
-    Optional<float> quic_packet_loss_threshold;
-    Optional<int> quic_socket_receive_buffer_size;
-    Optional<bool> quic_delay_tcp_race;
-    Optional<size_t> quic_max_packet_length;
-    net::QuicTagVector quic_connection_options;
-    Optional<std::string> quic_user_agent_id;
-    Optional<net::QuicVersionVector> quic_supported_versions;
-    std::set<net::HostPortPair> origins_to_force_quic_on;
-    Optional<bool> quic_close_sessions_on_ip_change;
-    Optional<int> quic_idle_connection_timeout_seconds;
-    Optional<bool> quic_disable_preconnect_if_0rtt;
-    std::unordered_set<std::string> quic_host_whitelist;
-    Optional<bool> quic_migrate_sessions_on_network_change;
-    Optional<bool> quic_migrate_sessions_early;
-    bool enable_user_alternate_protocol_ports;
     // NetErrorTabHelper uses |dns_probe_service| to send DNS probes when a
     // main frame load fails with a DNS error in order to provide more useful
     // information to the renderer so it can show a more specific error page.
     scoped_ptr<chrome_browser_net::DnsProbeService> dns_probe_service;
-    bool enable_token_binding;
+  };
+
+  // Helper class to configure HttpNetworkSession::Params and
+  // HttpServerProperties based on field trials, policy, and command line.
+  class NetworkSessionConfigurator {
+   public:
+    // Configure |params| based on field trials and policy arguments.
+    static void ParseFieldTrials(bool is_spdy_allowed_by_policy,
+                                 bool is_quic_allowed_by_policy,
+                                 net::HttpNetworkSession::Params* params);
+
+    // Configure |params| based on field trials, policy arguments,
+    // and command line.
+    static void ParseFieldTrialsAndCommandLine(
+        bool is_spdy_allowed_by_policy,
+        bool is_quic_allowed_by_policy,
+        net::HttpNetworkSession::Params* params);
+
+    // Returns true if QUIC should be enabled for data reduction proxy, either
+    // as a result of a field trial or a command line flag.
+    static bool ShouldEnableQuicForDataReductionProxy(
+        const base::CommandLine& command_line);
+
+   private:
+    // Map from name to value for all parameters associate with a field trial.
+    using VariationParameters = std::map<std::string, std::string>;
+
+    static void ParseFieldTrialsAndCommandLineInternal(
+        const base::CommandLine& command_line,
+        bool is_spdy_allowed_by_policy,
+        bool is_quic_allowed_by_policy,
+        net::HttpNetworkSession::Params* params);
+
+    // Configures Alternative Services based on command line options and the
+    // field trial group.
+    static void ConfigureAltSvcParams(const base::CommandLine& command_line,
+                                      base::StringPiece altsvc_trial_group,
+                                      net::HttpNetworkSession::Params* params);
+
+    // Configures QUIC options based on the flags in |command_line| as well as
+    // the QUIC field trial group and parameters.  Must be called before
+    // ConfigureSpdyParams.
+    static void ConfigureQuicParams(
+        const base::CommandLine& command_line,
+        base::StringPiece quic_trial_group,
+        const VariationParameters& quic_trial_params,
+        bool is_quic_allowed_by_policy,
+        net::HttpNetworkSession::Params* params);
+
+    // Configures available SPDY protocol versions and parameters based on
+    // command line flags as well as SPDY field trial group and parameters.
+    // Must be called after ConfigureQuicParams.
+    static void ConfigureSpdyParams(
+        const base::CommandLine& command_line,
+        base::StringPiece spdy_trial_group,
+        const VariationParameters& spdy_trial_params,
+        bool is_spdy_allowed_by_policy,
+        net::HttpNetworkSession::Params* params);
+
+    // Configure TCP FastOpen based on the field trial group.
+    static void ConfigureTCPFastOpenParams(
+        base::StringPiece tfo_trial_group,
+        net::HttpNetworkSession::Params* params);
+
+    // Configures NPN based on command line and the field trial group.
+    static void ConfigureNPNParams(const base::CommandLine& command_line,
+                                   base::StringPiece npn_trial_group,
+                                   net::HttpNetworkSession::Params* params);
+
+    // Configures the use of priority dependencies based on the field trial
+    // group.
+    static void ConfigurePriorityDependencies(
+        base::StringPiece priority_dependencies_trial_group,
+        net::HttpNetworkSession::Params* params);
+
+    // Returns true if QUIC should be disabled when a connection times out with
+    // open streams.
+    static bool ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should be enabled, either as a result of a field
+    // trial or a command line flag.
+    static bool ShouldEnableQuic(const base::CommandLine& command_line,
+                                 base::StringPiece quic_trial_group,
+                                 bool quic_allowed_by_policy);
+
+    // Returns true if QUIC should be enabled for proxies, either as a result of
+    // a field trial or a command line flag.
+    static bool ShouldEnableQuicForProxies(
+        const base::CommandLine& command_line,
+        base::StringPiece quic_trial_group,
+        bool quic_allowed_by_policy);
+
+    // Returns true if the selection of the ephemeral port in bind() should be
+    // performed by Chromium, and false if the OS should select the port.  The
+    // OS option is used to prevent Windows from posting a security warning
+    // dialog.
+    static bool ShouldEnableQuicPortSelection(
+        const base::CommandLine& command_line);
+
+    // Returns true if QUIC should always require handshake confirmation during
+    // the QUIC handshake.
+    static bool ShouldQuicAlwaysRequireHandshakeConfirmation(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should disable connection pooling.
+    static bool ShouldQuicDisableConnectionPooling(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the ratio of time to load QUIC sever information from disk cache
+    // to 'smoothed RTT' based on field trial. Returns 0 if there is an error
+    // parsing the field trial params, or if the default value should be used.
+    static float GetQuicLoadServerInfoTimeoutSrttMultiplier(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC's connection racing should be enabled.
+    static bool ShouldQuicEnableConnectionRacing(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC's should use non-blocking IO.
+    static bool ShouldQuicEnableNonBlockingIO(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC shouldn't load QUIC server information from the disk
+    // cache.
+    static bool ShouldQuicDisableDiskCache(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should prefer AES-GCN even without hardware support.
+    static bool ShouldQuicPreferAes(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should enable alternative services for different
+    // host.
+    static bool ShouldQuicEnableAlternativeServicesForDifferentHost(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params);
+
+    // Returns the maximum number of QUIC connections with high packet loss in a
+    // row after which QUIC should be disabled.  Returns 0 if the default value
+    // should be used.
+    static int GetQuicMaxNumberOfLossyConnections(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the packet loss rate in fraction after which a QUIC connection is
+    // closed and is considered as a lossy connection. Returns 0 if the default
+    // value should be used.
+    static float GetQuicPacketLossThreshold(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the size of the QUIC receive buffer to use, or 0 if the default
+    // should be used.
+    static int GetQuicSocketReceiveBufferSize(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should delay TCP connection when QUIC works.
+    static bool ShouldQuicDelayTcpRace(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should close sessions when any of the client's IP
+    // addresses change.
+    static bool ShouldQuicCloseSessionsOnIpChange(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the idle connection timeout for QUIC connections.  Returns 0 if
+    // there is an error parsing any of the options, or if the default value
+    // should be used.
+    static int GetQuicIdleConnectionTimeoutSeconds(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if PreConnect should be disabled if QUIC can do 0RTT.
+    static bool ShouldQuicDisablePreConnectIfZeroRtt(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the set of hosts to whitelist for QUIC.
+    static std::unordered_set<std::string> GetQuicHostWhitelist(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should migrate sessions when primary network
+    // changes.
+    static bool ShouldQuicMigrateSessionsOnNetworkChange(
+        const VariationParameters& quic_trial_params);
+
+    // Returns true if QUIC should migrate sessions early.
+    static bool ShouldQuicMigrateSessionsEarly(
+        const VariationParameters& quic_trial_params);
+
+    // Returns the maximum length for QUIC packets, based on any flags in
+    // |command_line| or the field trial.  Returns 0 if there is an error
+    // parsing any of the options, or if the default value should be used.
+    static size_t GetQuicMaxPacketLength(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params);
+
+    // Returns the QUIC versions specified by any flags in |command_line| or
+    // |quic_trial_params|.
+    static net::QuicVersion GetQuicVersion(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params);
+
+    // Returns the QUIC version specified by |quic_version| or
+    // QUIC_VERSION_UNSUPPORTED if |quic_version| is invalid.
+    static net::QuicVersion ParseQuicVersion(const std::string& quic_version);
+
+    // Returns the QUIC connection options specified by any flags in
+    // |command_line| or |quic_trial_params|.
+    static net::QuicTagVector GetQuicConnectionOptions(
+        const base::CommandLine& command_line,
+        const VariationParameters& quic_trial_params);
   };
 
   // |net_log| must either outlive the IOThread or be NULL.
@@ -282,7 +425,7 @@
   // called on the IO thread.
   void ClearHostCache();
 
-  void InitializeNetworkSessionParams(net::HttpNetworkSession::Params* params);
+  const net::HttpNetworkSession::Params& NetworkSessionParams() const;
 
   base::TimeTicks creation_time() const;
 
@@ -291,9 +434,6 @@
   static bool ShouldEnableQuicForDataReductionProxy();
 
  private:
-  // Map from name to value for all parameters associate with a field trial.
-  typedef std::map<std::string, std::string> VariationParameters;
-
   // Provide SystemURLRequestContextGetter with access to
   // InitSystemRequestContext().
   friend class SystemURLRequestContextGetter;
@@ -313,27 +453,6 @@
 
   void InitializeNetworkOptions(const base::CommandLine& parsed_command_line);
 
-  // Sets up TCP FastOpen if enabled via field trials or via the command line.
-  void ConfigureTCPFastOpen(const base::CommandLine& command_line);
-
-  // Configures available SPDY protocol versions in |globals| based on the flags
-  // in |command_lin| as well as SPDY field trial group and parameters.  Must be
-  // called after ConfigureQuicGlobals.
-  static void ConfigureSpdyGlobals(const base::CommandLine& command_line,
-                                   base::StringPiece quic_trial_group,
-                                   const VariationParameters& quic_trial_params,
-                                   Globals* globals);
-
-  // Configures Alternative Services in |globals| based on the field trial
-  // group.
-  static void ConfigureAltSvcGlobals(const base::CommandLine& command_line,
-                                     base::StringPiece altsvc_trial_group,
-                                     IOThread::Globals* globals);
-
-  // Configures NPN in |globals| based on the field trial group.
-  static void ConfigureNPNGlobals(base::StringPiece npn_trial_group,
-                                  Globals* globals);
-
   // Global state must be initialized on the IO thread, then this
   // method must be invoked on the UI thread.
   void InitSystemRequestContext();
@@ -358,13 +477,6 @@
   void UpdateNegotiateDisableCnameLookup();
   void UpdateNegotiateEnablePort();
 
-  // Configure the use of priority dependencies in SPDY/HTTP2
-  void ConfigurePriorityDependencies();
-
-  // Configures QUIC options based on the flags in |command_line| as
-  // well as the QUIC field trial group.
-  void ConfigureQuic(const base::CommandLine& command_line);
-
   extensions::EventRouterForwarder* extension_event_router_forwarder() {
 #if defined(ENABLE_EXTENSIONS)
     return extension_event_router_forwarder_;
@@ -372,153 +484,9 @@
     return NULL;
 #endif
   }
-  // Configures QUIC options in |globals| based on the flags in |command_line|
-  // as well as the QUIC field trial group and parameters.  Must be called
-  // before ConfigureSpdyGlobals.
-  static void ConfigureQuicGlobals(
-      const base::CommandLine& command_line,
-      base::StringPiece quic_trial_group,
-      const VariationParameters& quic_trial_params,
-      bool quic_allowed_by_policy,
-      Globals* globals);
-
-  // Returns true if QUIC should be disabled when a connection times out with
-  // open streams.
-  static bool ShouldDisableQuicWhenConnectionTimesOutWithOpenStreams(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should be enabled, either as a result
-  // of a field trial or a command line flag.
-  static bool ShouldEnableQuic(
-      const base::CommandLine& command_line,
-      base::StringPiece quic_trial_group,
-      bool quic_allowed_by_policy);
-
-  // Returns true if QUIC should be enabled for proxies, either as a result
-  // of a field trial or a command line flag.
-  static bool ShouldEnableQuicForProxies(
-      const base::CommandLine& command_line,
-      base::StringPiece quic_trial_group,
-      bool quic_allowed_by_policy);
-
-  // Returns true if the selection of the ephemeral port in bind() should be
-  // performed by Chromium, and false if the OS should select the port.  The OS
-  // option is used to prevent Windows from posting a security security warning
-  // dialog.
-  static bool ShouldEnableQuicPortSelection(
-      const base::CommandLine& command_line);
-
-  // Returns true if QUIC should always require handshake confirmation during
-  // the QUIC handshake.
-  static bool ShouldQuicAlwaysRequireHandshakeConfirmation(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should disable connection pooling.
-  static bool ShouldQuicDisableConnectionPooling(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the ratio of time to load QUIC sever information from disk cache to
-  // 'smoothed RTT' based on field trial. Returns 0 if there is an error parsing
-  // the field trial params, or if the default value should be used.
-  static float GetQuicLoadServerInfoTimeoutSrttMultiplier(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC's connection racing should be enabled.
-  static bool ShouldQuicEnableConnectionRacing(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC's should use non-blocking IO.
-  static bool ShouldQuicEnableNonBlockingIO(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC shouldn't load QUIC server information from the disk
-  // cache.
-  static bool ShouldQuicDisableDiskCache(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should prefer AES-GCN even without hardware support.
-  static bool ShouldQuicPreferAes(const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should enable alternative services for different host.
-  static bool ShouldQuicEnableAlternativeServicesForDifferentHost(
-      const base::CommandLine& command_line,
-      const VariationParameters& quic_trial_params);
-
-  // Returns the maximum number of QUIC connections with high packet loss in a
-  // row after which QUIC should be disabled.  Returns 0 if the default value
-  // should be used.
-  static int GetQuicMaxNumberOfLossyConnections(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the packet loss rate in fraction after which a QUIC connection is
-  // closed and is considered as a lossy connection. Returns 0 if the default
-  // value should be used.
-  static float GetQuicPacketLossThreshold(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the size of the QUIC receive buffer to use, or 0 if
-  // the default should be used.
-  static int GetQuicSocketReceiveBufferSize(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should delay TCP connection when QUIC works.
-  static bool ShouldQuicDelayTcpRace(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should close sessions when any of the client's
-  // IP addresses change.
-  static bool ShouldQuicCloseSessionsOnIpChange(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the idle connection timeout for QUIC connections.  Returns 0 if
-  // there is an error parsing any of the options, or if the default value
-  // should be used.
-  static int GetQuicIdleConnectionTimeoutSeconds(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if PreConnect should be disabled if QUIC can do 0RTT.
-  static bool ShouldQuicDisablePreConnectIfZeroRtt(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the set of hosts to whitelist for QUIC.
-  static std::unordered_set<std::string> GetQuicHostWhitelist(
-      const base::CommandLine& command_line,
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should migrate sessions when primary network
-  // changes.
-  static bool ShouldQuicMigrateSessionsOnNetworkChange(
-      const VariationParameters& quic_trial_params);
-
-  // Returns true if QUIC should migrate sessions early.
-  static bool ShouldQuicMigrateSessionsEarly(
-      const VariationParameters& quic_trial_params);
-
-  // Returns the maximum length for QUIC packets, based on any flags in
-  // |command_line| or the field trial.  Returns 0 if there is an error
-  // parsing any of the options, or if the default value should be used.
-  static size_t GetQuicMaxPacketLength(
-      const base::CommandLine& command_line,
-      const VariationParameters& quic_trial_params);
-
-  // Returns the QUIC versions specified by any flags in |command_line|
-  // or |quic_trial_params|.
-  static net::QuicVersion GetQuicVersion(
-      const base::CommandLine& command_line,
-      const VariationParameters& quic_trial_params);
-
-  // Returns the QUIC version specified by |quic_version| or
-  // QUIC_VERSION_UNSUPPORTED if |quic_version| is invalid.
-  static net::QuicVersion ParseQuicVersion(const std::string& quic_version);
-
-  // Returns the QUIC connection options specified by any flags in
-  // |command_line| or |quic_trial_params|.
-  static net::QuicTagVector GetQuicConnectionOptions(
-      const base::CommandLine& command_line,
-      const VariationParameters& quic_trial_params);
-
   static net::URLRequestContext* ConstructSystemRequestContext(
       IOThread::Globals* globals,
+      const net::HttpNetworkSession::Params& params,
       net::NetLog* net_log);
 
   // TODO(willchan): Remove proxy script fetcher context since it's not
@@ -526,6 +494,7 @@
   // See IOThread::Globals for details.
   static net::URLRequestContext* ConstructProxyScriptFetcherContext(
       IOThread::Globals* globals,
+      const net::HttpNetworkSession::Params& params,
       net::NetLog* net_log);
 
   // The NetLog is owned by the browser process, to allow logging from other
@@ -548,6 +517,9 @@
 
   Globals* globals_;
 
+  net::HttpNetworkSession::Params params_;
+  NetworkSessionConfigurator network_session_configurator_;
+
   // Observer that logs network changes to the ChromeNetLog.
   class LoggingNetworkChangeObserver;
   scoped_ptr<LoggingNetworkChangeObserver> network_change_observer_;
@@ -590,8 +562,8 @@
   scoped_refptr<net::URLRequestContextGetter>
       system_url_request_context_getter_;
 
-  // True if SPDY is disabled by policy.
-  bool is_spdy_disabled_by_policy_;
+  // True if SPDY is allowed by policy.
+  bool is_spdy_allowed_by_policy_;
 
   // True if QUIC is allowed by policy.
   bool is_quic_allowed_by_policy_;
diff --git a/chrome/browser/io_thread_unittest.cc b/chrome/browser/io_thread_unittest.cc
index aee5250..7e5d9b6 100644
--- a/chrome/browser/io_thread_unittest.cc
+++ b/chrome/browser/io_thread_unittest.cc
@@ -21,13 +21,13 @@
 #include "components/prefs/testing_pref_service.h"
 #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
 #include "components/proxy_config/proxy_config_pref_names.h"
+#include "components/variations/variations_associated_data.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "net/cert_net/nss_ocsp.h"
 #include "net/http/http_auth_preferences.h"
 #include "net/http/http_auth_scheme.h"
 #include "net/http/http_network_session.h"
-#include "net/http/http_server_properties_impl.h"
 #include "net/quic/quic_protocol.h"
 #include "net/quic/quic_stream_factory.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -44,233 +44,245 @@
 
 namespace test {
 
-using ::testing::ElementsAre;
 using ::testing::ReturnRef;
 
 // Class used for accessing IOThread methods (friend of IOThread).
 class IOThreadPeer {
  public:
-  static void ConfigureQuicGlobals(
-      const base::CommandLine& command_line,
-      base::StringPiece quic_trial_group,
-      const std::map<std::string, std::string>& quic_trial_params,
-      bool is_quic_allowed_by_policy,
-      IOThread::Globals* globals) {
-    IOThread::ConfigureQuicGlobals(command_line, quic_trial_group,
-                                   quic_trial_params, is_quic_allowed_by_policy,
-                                   globals);
-  }
-
-  static void ConfigureSpdyGlobals(
-      const base::CommandLine& command_line,
-      base::StringPiece spdy_trial_group,
-      const std::map<std::string, std::string>& spdy_trial_params,
-      IOThread::Globals* globals) {
-    IOThread::ConfigureSpdyGlobals(command_line, spdy_trial_group,
-                                   spdy_trial_params, globals);
-  }
-
-  static void ConfigureAltSvcGlobals(const base::CommandLine& command_line,
-                                     base::StringPiece altsvc_trial_group,
-                                     IOThread::Globals* globals) {
-    IOThread::ConfigureAltSvcGlobals(command_line, altsvc_trial_group, globals);
-  }
-
-  static void ConfigureNPNGlobals(base::StringPiece npn_trial_group,
-                                  IOThread::Globals* globals) {
-    IOThread::ConfigureNPNGlobals(npn_trial_group, globals);
-  }
-
-  static void InitializeNetworkSessionParamsFromGlobals(
-      const IOThread::Globals& globals,
-      net::HttpNetworkSession::Params* params) {
-    IOThread::InitializeNetworkSessionParamsFromGlobals(globals, params);
-  }
-
   static net::HttpAuthPreferences* GetAuthPreferences(IOThread* io_thread) {
     return io_thread->globals()->http_auth_preferences.get();
   }
 };
 
-class IOThreadTest : public testing::Test {
+class NetworkSessionConfiguratorTest : public testing::Test {
  public:
-  IOThreadTest()
-      : command_line_(base::CommandLine::NO_PROGRAM),
-        is_quic_allowed_by_policy_(true) {
-    globals_.http_server_properties.reset(new net::HttpServerPropertiesImpl());
+  NetworkSessionConfiguratorTest()
+      : is_spdy_allowed_by_policy_(true), is_quic_allowed_by_policy_(true) {
+    field_trial_list_.reset(
+        new base::FieldTrialList(new base::MockEntropyProvider()));
+    variations::testing::ClearAllVariationParams();
   }
 
-  void ConfigureQuicGlobals() {
-    IOThreadPeer::ConfigureQuicGlobals(command_line_,
-                                       field_trial_group_,
-                                       field_trial_params_,
-                                       is_quic_allowed_by_policy_,
-                                       &globals_);
+  void ParseFieldTrials() {
+    network_session_configurator_.ParseFieldTrials(
+        is_spdy_allowed_by_policy_, is_quic_allowed_by_policy_, &params_);
   }
 
-  void ConfigureSpdyGlobals() {
-    IOThreadPeer::ConfigureSpdyGlobals(command_line_, field_trial_group_,
-                                       field_trial_params_, &globals_);
+  void ParseFieldTrialsAndCommandLine() {
+    network_session_configurator_.ParseFieldTrialsAndCommandLine(
+        is_spdy_allowed_by_policy_, is_quic_allowed_by_policy_, &params_);
   }
 
-  void ConfigureAltSvcGlobals() {
-    IOThreadPeer::ConfigureAltSvcGlobals(command_line_, field_trial_group_,
-                                         &globals_);
-  }
-
-  void ConfigureNPNGlobals() {
-    IOThreadPeer::ConfigureNPNGlobals(field_trial_group_, &globals_);
-  }
-
-  void InitializeNetworkSessionParams(net::HttpNetworkSession::Params* params) {
-    IOThreadPeer::InitializeNetworkSessionParamsFromGlobals(globals_, params);
-  }
-
-  base::CommandLine command_line_;
-  IOThread::Globals globals_;
-  std::string field_trial_group_;
+  bool is_spdy_allowed_by_policy_;
   bool is_quic_allowed_by_policy_;
-  std::map<std::string, std::string> field_trial_params_;
+  scoped_ptr<base::FieldTrialList> field_trial_list_;
+  net::HttpNetworkSession::Params params_;
+
+ private:
+  IOThread::NetworkSessionConfigurator network_session_configurator_;
 };
 
-TEST_F(IOThreadTest, InitializeNetworkSessionParamsFromGlobals) {
-  globals_.quic_connection_options.push_back(net::kTBBR);
-  globals_.quic_connection_options.push_back(net::kTIME);
+TEST_F(NetworkSessionConfiguratorTest, Defaults) {
+  ParseFieldTrialsAndCommandLine();
 
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(globals_.quic_connection_options,
-            params.quic_connection_options);
+  EXPECT_FALSE(params_.ignore_certificate_errors);
+  EXPECT_EQ(0u, params_.testing_fixed_http_port);
+  EXPECT_EQ(0u, params_.testing_fixed_https_port);
+  EXPECT_TRUE(params_.enable_spdy31);
+  EXPECT_TRUE(params_.enable_http2);
+  EXPECT_FALSE(params_.enable_tcp_fast_open_for_ssl);
+  EXPECT_FALSE(params_.parse_alternative_services);
+  EXPECT_FALSE(params_.enable_alternative_service_with_different_host);
+  EXPECT_TRUE(params_.enable_npn);
+  EXPECT_TRUE(params_.enable_priority_dependencies);
+  EXPECT_FALSE(params_.enable_quic);
+  EXPECT_FALSE(params_.enable_quic_for_proxies);
+  EXPECT_FALSE(IOThread::ShouldEnableQuicForDataReductionProxy());
 }
 
-TEST_F(IOThreadTest, SpdyFieldTrialHoldbackEnabled) {
+TEST_F(NetworkSessionConfiguratorTest, IgnoreCertificateErrors) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch(
+      "ignore-certificate-errors");
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_TRUE(params_.ignore_certificate_errors);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, TestingFixedPort) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "testing-fixed-http-port", "42");
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "testing-fixed-https-port", "1234");
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_EQ(42u, params_.testing_fixed_http_port);
+  EXPECT_EQ(1234u, params_.testing_fixed_https_port);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, AltSvcFieldTrialEnabled) {
+  base::FieldTrialList::CreateFieldTrial("ParseAltSvc", "AltSvcEnabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.parse_alternative_services);
+  EXPECT_FALSE(params_.enable_alternative_service_with_different_host);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, AltSvcFieldTrialDisabled) {
+  base::FieldTrialList::CreateFieldTrial("ParseAltSvc", "AltSvcDisabled");
+
+  ParseFieldTrials();
+
+  EXPECT_FALSE(params_.parse_alternative_services);
+  EXPECT_FALSE(params_.enable_alternative_service_with_different_host);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, SpdyFieldTrialHoldbackEnabled) {
   net::HttpStreamFactory::set_spdy_enabled(true);
-  field_trial_group_ = "SpdyDisabled";
-  ConfigureSpdyGlobals();
+  base::FieldTrialList::CreateFieldTrial("SPDY", "SpdyDisabled");
+
+  ParseFieldTrials();
+
   EXPECT_FALSE(net::HttpStreamFactory::spdy_enabled());
 }
 
-TEST_F(IOThreadTest, SpdyFieldTrialSpdy31Enabled) {
-  field_trial_group_ = "Spdy31Enabled";
-  ConfigureSpdyGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_spdy31);
-  EXPECT_FALSE(params.enable_http2);
+TEST_F(NetworkSessionConfiguratorTest, SpdyFieldTrialSpdy31Enabled) {
+  base::FieldTrialList::CreateFieldTrial("SPDY", "Spdy31Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_spdy31);
+  EXPECT_FALSE(params_.enable_http2);
 }
 
-TEST_F(IOThreadTest, SpdyFieldTrialSpdy4Enabled) {
-  field_trial_group_ = "Spdy4Enabled";
-  ConfigureSpdyGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_spdy31);
-  EXPECT_TRUE(params.enable_http2);
+TEST_F(NetworkSessionConfiguratorTest, SpdyFieldTrialSpdy4Enabled) {
+  base::FieldTrialList::CreateFieldTrial("SPDY", "Spdy4Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_spdy31);
+  EXPECT_TRUE(params_.enable_http2);
 }
 
-TEST_F(IOThreadTest, SpdyFieldTrialDefault) {
-  field_trial_group_ = "";
-  ConfigureSpdyGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_spdy31);
-  EXPECT_TRUE(params.enable_http2);
+TEST_F(NetworkSessionConfiguratorTest, SpdyFieldTrialParametrized) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["enable_spdy31"] = "false";
+  field_trial_params["enable_http2"] = "true";
+  variations::AssociateVariationParams("SPDY", "ParametrizedHTTP2Only",
+                                       field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("SPDY", "ParametrizedHTTP2Only");
+
+  ParseFieldTrials();
+
+  EXPECT_FALSE(params_.enable_spdy31);
+  EXPECT_TRUE(params_.enable_http2);
 }
 
-TEST_F(IOThreadTest, SpdyFieldTrialParametrized) {
-  field_trial_params_["enable_spdy31"] = "false";
-  field_trial_params_["enable_http2"] = "true";
-  field_trial_group_ = "ParametrizedHTTP2Only";
-  ConfigureSpdyGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_spdy31);
-  EXPECT_TRUE(params.enable_http2);
-}
-
-TEST_F(IOThreadTest, SpdyCommandLineDisableHttp2) {
-  command_line_.AppendSwitch("disable-http2");
+TEST_F(NetworkSessionConfiguratorTest, SpdyCommandLineDisableHttp2) {
   // Command line should overwrite field trial group.
-  field_trial_group_ = "Spdy4Enabled";
-  ConfigureSpdyGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_spdy31);
-  EXPECT_FALSE(params.enable_http2);
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("disable-http2");
+  base::FieldTrialList::CreateFieldTrial("SPDY", "Spdy4Enabled");
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_FALSE(params_.enable_spdy31);
+  EXPECT_FALSE(params_.enable_http2);
 }
 
-TEST_F(IOThreadTest, NPNFieldTrialEnabled) {
-  field_trial_group_ = "Enable-experiment";
-  ConfigureNPNGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_npn);
+TEST_F(NetworkSessionConfiguratorTest, SpdyDisallowedByPolicy) {
+  is_spdy_allowed_by_policy_ = false;
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_FALSE(params_.enable_spdy31);
+  EXPECT_FALSE(params_.enable_http2);
 }
 
-TEST_F(IOThreadTest, NPNFieldTrialDisabled) {
-  field_trial_group_ = "Disable-holdback";
-  ConfigureNPNGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_npn);
+TEST_F(NetworkSessionConfiguratorTest, NPNFieldTrialEnabled) {
+  base::FieldTrialList::CreateFieldTrial("NPN", "Enable-experiment");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_npn);
 }
 
-TEST_F(IOThreadTest, DisableQuicByDefault) {
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_quic);
-  EXPECT_FALSE(params.enable_quic_for_proxies);
-  EXPECT_FALSE(IOThread::ShouldEnableQuicForDataReductionProxy());
+TEST_F(NetworkSessionConfiguratorTest, NPNFieldTrialDisabled) {
+  base::FieldTrialList::CreateFieldTrial("NPN", "Disable-holdback");
+
+  ParseFieldTrials();
+
+  EXPECT_FALSE(params_.enable_npn);
 }
 
-TEST_F(IOThreadTest, EnableQuicFromFieldTrialGroup) {
-  field_trial_group_ = "Enabled";
+TEST_F(NetworkSessionConfiguratorTest, PriorityDependenciesTrialEnabled) {
+  base::FieldTrialList::CreateFieldTrial("SpdyEnableDependencies",
+                                         "Enable-experiment");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params default_params;
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_quic);
-  EXPECT_FALSE(params.disable_quic_on_timeout_with_open_streams);
-  EXPECT_TRUE(params.enable_quic_for_proxies);
-  EXPECT_EQ(1350u, params.quic_max_packet_length);
-  EXPECT_EQ(default_params.quic_supported_versions,
-            params.quic_supported_versions);
-  EXPECT_EQ(net::QuicTagVector(), params.quic_connection_options);
-  EXPECT_FALSE(params.quic_always_require_handshake_confirmation);
-  EXPECT_FALSE(params.quic_disable_connection_pooling);
-  EXPECT_EQ(0.25f, params.quic_load_server_info_timeout_srtt_multiplier);
-  EXPECT_FALSE(params.quic_enable_connection_racing);
-  EXPECT_FALSE(params.quic_enable_non_blocking_io);
-  EXPECT_FALSE(params.quic_disable_disk_cache);
-  EXPECT_FALSE(params.quic_prefer_aes);
-  EXPECT_FALSE(params.parse_alternative_services);
-  EXPECT_FALSE(params.enable_alternative_service_with_different_host);
-  EXPECT_EQ(0, params.quic_max_number_of_lossy_connections);
-  EXPECT_EQ(1.0f, params.quic_packet_loss_threshold);
-  EXPECT_FALSE(params.quic_delay_tcp_race);
-  EXPECT_FALSE(params.quic_close_sessions_on_ip_change);
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_priority_dependencies);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, PriorityDependenciesTrialDisabled) {
+  base::FieldTrialList::CreateFieldTrial("SpdyEnableDependencies",
+                                         "Disable-holdback");
+
+  ParseFieldTrials();
+
+  EXPECT_FALSE(params_.enable_priority_dependencies);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, EnableQuicFromFieldTrialGroup) {
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_quic);
+  EXPECT_FALSE(params_.disable_quic_on_timeout_with_open_streams);
+  EXPECT_TRUE(params_.enable_quic_for_proxies);
+  EXPECT_EQ(1350u, params_.quic_max_packet_length);
+  EXPECT_EQ(net::QuicTagVector(), params_.quic_connection_options);
+  EXPECT_FALSE(params_.quic_always_require_handshake_confirmation);
+  EXPECT_FALSE(params_.quic_disable_connection_pooling);
+  EXPECT_EQ(0.25f, params_.quic_load_server_info_timeout_srtt_multiplier);
+  EXPECT_FALSE(params_.quic_enable_connection_racing);
+  EXPECT_FALSE(params_.quic_enable_non_blocking_io);
+  EXPECT_FALSE(params_.quic_disable_disk_cache);
+  EXPECT_FALSE(params_.quic_prefer_aes);
+  EXPECT_FALSE(params_.parse_alternative_services);
+  EXPECT_FALSE(params_.enable_alternative_service_with_different_host);
+  EXPECT_EQ(0, params_.quic_max_number_of_lossy_connections);
+  EXPECT_EQ(1.0f, params_.quic_packet_loss_threshold);
+  EXPECT_FALSE(params_.quic_delay_tcp_race);
+  EXPECT_FALSE(params_.quic_close_sessions_on_ip_change);
   EXPECT_EQ(net::kIdleConnectionTimeoutSeconds,
-            params.quic_idle_connection_timeout_seconds);
-  EXPECT_FALSE(params.quic_disable_preconnect_if_0rtt);
-  EXPECT_FALSE(params.quic_migrate_sessions_on_network_change);
-  EXPECT_FALSE(params.quic_migrate_sessions_early);
+            params_.quic_idle_connection_timeout_seconds);
+  EXPECT_FALSE(params_.quic_disable_preconnect_if_0rtt);
+  EXPECT_FALSE(params_.quic_migrate_sessions_on_network_change);
+  EXPECT_FALSE(params_.quic_migrate_sessions_early);
   EXPECT_FALSE(IOThread::ShouldEnableQuicForDataReductionProxy());
-  EXPECT_TRUE(params.quic_host_whitelist.empty());
+  EXPECT_TRUE(params_.quic_host_whitelist.empty());
+
+  net::HttpNetworkSession::Params default_params;
+  EXPECT_EQ(default_params.quic_supported_versions,
+            params_.quic_supported_versions);
 }
 
-TEST_F(IOThreadTest,
+TEST_F(NetworkSessionConfiguratorTest,
        DisableQuicWhenConnectionTimesOutWithOpenStreamsFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["disable_quic_on_timeout_with_open_streams"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.disable_quic_on_timeout_with_open_streams);
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["disable_quic_on_timeout_with_open_streams"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.disable_quic_on_timeout_with_open_streams);
 }
 
-TEST_F(IOThreadTest, EnableQuicFromQuicProxyFieldTrialGroup) {
+TEST_F(NetworkSessionConfiguratorTest, EnableQuicFromQuicProxyFieldTrialGroup) {
   const struct {
     std::string field_trial_group_name;
     bool expect_enable_quic;
@@ -295,365 +307,394 @@
       },
   };
 
+  field_trial_list_.reset();
   for (size_t i = 0; i < arraysize(tests); ++i) {
     base::FieldTrialList field_trial_list(new base::MockEntropyProvider());
     base::FieldTrialList::CreateFieldTrial(
         data_reduction_proxy::params::GetQuicFieldTrialName(),
         tests[i].field_trial_group_name);
 
-    ConfigureQuicGlobals();
-    net::HttpNetworkSession::Params params;
-    InitializeNetworkSessionParams(&params);
-    EXPECT_FALSE(params.enable_quic) << i;
-    EXPECT_EQ(tests[i].expect_enable_quic, params.enable_quic_for_proxies) << i;
+    ParseFieldTrials();
+
+    EXPECT_FALSE(params_.enable_quic) << i;
+    EXPECT_EQ(tests[i].expect_enable_quic, params_.enable_quic_for_proxies)
+        << i;
     EXPECT_EQ(tests[i].expect_enable_quic,
               IOThread::ShouldEnableQuicForDataReductionProxy())
         << i;
   }
 }
 
-TEST_F(IOThreadTest, EnableQuicFromCommandLine) {
-  command_line_.AppendSwitch("enable-quic");
+TEST_F(NetworkSessionConfiguratorTest, EnableQuicFromCommandLine) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_quic);
-  EXPECT_TRUE(params.enable_quic_for_proxies);
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_TRUE(params_.enable_quic);
+  EXPECT_TRUE(params_.enable_quic_for_proxies);
   EXPECT_FALSE(IOThread::ShouldEnableQuicForDataReductionProxy());
 }
 
-TEST_F(IOThreadTest, AltSvcFieldTrialEnabled) {
-  field_trial_group_ = "AltSvcEnabled";
-  ConfigureAltSvcGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.parse_alternative_services);
-  EXPECT_FALSE(params.enable_alternative_service_with_different_host);
+TEST_F(NetworkSessionConfiguratorTest,
+       EnableAlternativeServicesFromCommandLineWithQuicDisabled) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch(
+      "enable-alternative-services");
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_FALSE(params_.enable_quic);
+  EXPECT_TRUE(params_.parse_alternative_services);
+  EXPECT_TRUE(params_.enable_alternative_service_with_different_host);
 }
 
-TEST_F(IOThreadTest, AltSvcFieldTrialDisabled) {
-  field_trial_group_ = "AltSvcDisabled";
-  ConfigureAltSvcGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.parse_alternative_services);
-  EXPECT_FALSE(params.enable_alternative_service_with_different_host);
+TEST_F(NetworkSessionConfiguratorTest,
+       EnableAlternativeServicesFromCommandLineWithQuicEnabled) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
+  base::CommandLine::ForCurrentProcess()->AppendSwitch(
+      "enable-alternative-services");
+
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_TRUE(params_.enable_quic);
+  EXPECT_TRUE(params_.parse_alternative_services);
+  EXPECT_TRUE(params_.enable_alternative_service_with_different_host);
 }
 
-TEST_F(IOThreadTest, EnableAlternativeServicesFromCommandLineWithQuicDisabled) {
-  command_line_.AppendSwitch("enable-alternative-services");
+TEST_F(NetworkSessionConfiguratorTest, PacketLengthFromCommandLine) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "quic-max-packet-length", "1450");
 
-  ConfigureAltSvcGlobals();
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_quic);
-  EXPECT_TRUE(params.parse_alternative_services);
-  EXPECT_TRUE(params.enable_alternative_service_with_different_host);
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_EQ(1450u, params_.quic_max_packet_length);
 }
 
-TEST_F(IOThreadTest, EnableAlternativeServicesFromCommandLineWithQuicEnabled) {
-  command_line_.AppendSwitch("enable-quic");
-  command_line_.AppendSwitch("enable-alternative-services");
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicCloseSessionsOnIpChangeFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["close_sessions_on_ip_change"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureAltSvcGlobals();
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_quic);
-  EXPECT_TRUE(params.parse_alternative_services);
-  EXPECT_TRUE(params.enable_alternative_service_with_different_host);
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_close_sessions_on_ip_change);
 }
 
-TEST_F(IOThreadTest, PacketLengthFromCommandLine) {
-  command_line_.AppendSwitch("enable-quic");
-  command_line_.AppendSwitchASCII("quic-max-packet-length", "1450");
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicIdleConnectionTimeoutSecondsFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["idle_connection_timeout_seconds"] = "300";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(1450u, params.quic_max_packet_length);
+  ParseFieldTrials();
+
+  EXPECT_EQ(300, params_.quic_idle_connection_timeout_seconds);
 }
 
-TEST_F(IOThreadTest, QuicCloseSessionsOnIpChangeFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["close_sessions_on_ip_change"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_close_sessions_on_ip_change);
+TEST_F(NetworkSessionConfiguratorTest, QuicDisablePreConnectIfZeroRtt) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["disable_preconnect_if_0rtt"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_disable_preconnect_if_0rtt);
 }
 
-TEST_F(IOThreadTest, QuicIdleConnectionTimeoutSecondsFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["idle_connection_timeout_seconds"] = "300";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(300, params.quic_idle_connection_timeout_seconds);
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicMigrateSessionsOnNetworkChangeFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["migrate_sessions_on_network_change"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_migrate_sessions_on_network_change);
 }
 
-TEST_F(IOThreadTest, QuicDisablePreConnectIfZeroRtt) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["disable_preconnect_if_0rtt"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_disable_preconnect_if_0rtt);
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicMigrateSessionsEarlyFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["migrate_sessions_early"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_migrate_sessions_early);
 }
 
-TEST_F(IOThreadTest, QuicMigrateSessionsOnNetworkChangeFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["migrate_sessions_on_network_change"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_migrate_sessions_on_network_change);
+TEST_F(NetworkSessionConfiguratorTest, PacketLengthFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["max_packet_length"] = "1450";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_EQ(1450u, params_.quic_max_packet_length);
 }
 
-TEST_F(IOThreadTest, QuicMigrateSessionsEarlyFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["migrate_sessions_early"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_migrate_sessions_early);
-}
-
-TEST_F(IOThreadTest, PacketLengthFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["max_packet_length"] = "1450";
-
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(1450u, params.quic_max_packet_length);
-}
-
-TEST_F(IOThreadTest, QuicVersionFromCommandLine) {
-  command_line_.AppendSwitch("enable-quic");
+TEST_F(NetworkSessionConfiguratorTest, QuicVersionFromCommandLine) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
   std::string version =
       net::QuicVersionToString(net::QuicSupportedVersions().back());
-  command_line_.AppendSwitchASCII("quic-version", version);
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII("quic-version",
+                                                            version);
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
+  ParseFieldTrialsAndCommandLine();
+
   net::QuicVersionVector supported_versions;
   supported_versions.push_back(net::QuicSupportedVersions().back());
-  EXPECT_EQ(supported_versions, params.quic_supported_versions);
+  EXPECT_EQ(supported_versions, params_.quic_supported_versions);
 }
 
-TEST_F(IOThreadTest, QuicVersionFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["quic_version"] =
+TEST_F(NetworkSessionConfiguratorTest, QuicVersionFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["quic_version"] =
       net::QuicVersionToString(net::QuicSupportedVersions().back());
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
+  ParseFieldTrials();
+
   net::QuicVersionVector supported_versions;
   supported_versions.push_back(net::QuicSupportedVersions().back());
-  EXPECT_EQ(supported_versions, params.quic_supported_versions);
+  EXPECT_EQ(supported_versions, params_.quic_supported_versions);
 }
 
-TEST_F(IOThreadTest, QuicConnectionOptionsFromCommandLine) {
-  command_line_.AppendSwitch("enable-quic");
-  command_line_.AppendSwitchASCII("quic-connection-options",
-                                  "TIME,TBBR,REJ");
+TEST_F(NetworkSessionConfiguratorTest, QuicConnectionOptionsFromCommandLine) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "quic-connection-options", "TIME,TBBR,REJ");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
+  ParseFieldTrialsAndCommandLine();
 
   net::QuicTagVector options;
   options.push_back(net::kTIME);
   options.push_back(net::kTBBR);
   options.push_back(net::kREJ);
-  EXPECT_EQ(options, params.quic_connection_options);
+  EXPECT_EQ(options, params_.quic_connection_options);
 }
 
-TEST_F(IOThreadTest, QuicConnectionOptionsFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["connection_options"] = "TIME,TBBR,REJ";
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicConnectionOptionsFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["connection_options"] = "TIME,TBBR,REJ";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
+  ParseFieldTrials();
 
   net::QuicTagVector options;
   options.push_back(net::kTIME);
   options.push_back(net::kTBBR);
   options.push_back(net::kREJ);
-  EXPECT_EQ(options, params.quic_connection_options);
+  EXPECT_EQ(options, params_.quic_connection_options);
 }
 
-TEST_F(IOThreadTest,
+TEST_F(NetworkSessionConfiguratorTest,
        QuicAlwaysRequireHandshakeConfirmationFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["always_require_handshake_confirmation"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_always_require_handshake_confirmation);
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["always_require_handshake_confirmation"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_always_require_handshake_confirmation);
 }
 
-TEST_F(IOThreadTest,
+TEST_F(NetworkSessionConfiguratorTest,
        QuicDisableConnectionPoolingFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["disable_connection_pooling"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_disable_connection_pooling);
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["disable_connection_pooling"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_disable_connection_pooling);
 }
 
-TEST_F(IOThreadTest, QuicLoadServerInfoTimeToSmoothedRttFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["load_server_info_time_to_srtt"] = "0.5";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(0.5f, params.quic_load_server_info_timeout_srtt_multiplier);
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicLoadServerInfoTimeToSmoothedRttFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["load_server_info_time_to_srtt"] = "0.5";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_EQ(0.5f, params_.quic_load_server_info_timeout_srtt_multiplier);
 }
 
-TEST_F(IOThreadTest, QuicEnableConnectionRacing) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["enable_connection_racing"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_enable_connection_racing);
+TEST_F(NetworkSessionConfiguratorTest, QuicEnableConnectionRacing) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["enable_connection_racing"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_enable_connection_racing);
 }
 
-TEST_F(IOThreadTest, QuicEnableNonBlockingIO) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["enable_non_blocking_io"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_enable_non_blocking_io);
+TEST_F(NetworkSessionConfiguratorTest, QuicEnableNonBlockingIO) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["enable_non_blocking_io"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_enable_non_blocking_io);
 }
 
-TEST_F(IOThreadTest, QuicDisableDiskCache) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["disable_disk_cache"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_disable_disk_cache);
+TEST_F(NetworkSessionConfiguratorTest, QuicDisableDiskCache) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["disable_disk_cache"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_disable_disk_cache);
 }
 
-TEST_F(IOThreadTest, QuicPreferAes) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["prefer_aes"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_prefer_aes);
+TEST_F(NetworkSessionConfiguratorTest, QuicPreferAes) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["prefer_aes"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_prefer_aes);
 }
 
-TEST_F(IOThreadTest, QuicEnableAlternativeServicesFromFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["enable_alternative_service_with_different_host"] =
-      "true";
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicEnableAlternativeServicesFromFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["enable_alternative_service_with_different_host"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.enable_alternative_service_with_different_host);
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_alternative_service_with_different_host);
   // QUIC AltSvc pooling parameter should also enable AltSvc parsing.
-  EXPECT_TRUE(params.parse_alternative_services);
+  EXPECT_TRUE(params_.parse_alternative_services);
 }
 
-TEST_F(IOThreadTest, QuicMaxNumberOfLossyConnectionsFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["max_number_of_lossy_connections"] = "5";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(5, params.quic_max_number_of_lossy_connections);
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicMaxNumberOfLossyConnectionsFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["max_number_of_lossy_connections"] = "5";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_EQ(5, params_.quic_max_number_of_lossy_connections);
 }
 
-TEST_F(IOThreadTest, QuicPacketLossThresholdFieldTrialParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["packet_loss_threshold"] = "0.5";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(0.5f, params.quic_packet_loss_threshold);
+TEST_F(NetworkSessionConfiguratorTest,
+       QuicPacketLossThresholdFieldTrialParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["packet_loss_threshold"] = "0.5";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_EQ(0.5f, params_.quic_packet_loss_threshold);
 }
 
-TEST_F(IOThreadTest, QuicReceiveBufferSize) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["receive_buffer_size"] = "2097152";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(2097152, params.quic_socket_receive_buffer_size);
+TEST_F(NetworkSessionConfiguratorTest, QuicReceiveBufferSize) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["receive_buffer_size"] = "2097152";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_EQ(2097152, params_.quic_socket_receive_buffer_size);
 }
 
-TEST_F(IOThreadTest, QuicDelayTcpConnection) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["delay_tcp_race"] = "true";
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_TRUE(params.quic_delay_tcp_race);
+TEST_F(NetworkSessionConfiguratorTest, QuicDelayTcpConnection) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["delay_tcp_race"] = "true";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.quic_delay_tcp_race);
 }
 
-TEST_F(IOThreadTest, QuicOriginsToForceQuicOn) {
-  command_line_.AppendSwitch("enable-quic");
-  command_line_.AppendSwitchASCII("origin-to-force-quic-on",
-                                  "www.example.com:443, www.example.org:443");
+TEST_F(NetworkSessionConfiguratorTest, QuicOriginsToForceQuicOn) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "origin-to-force-quic-on", "www.example.com:443, www.example.org:443");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(2u, params.origins_to_force_quic_on.size());
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_EQ(2u, params_.origins_to_force_quic_on.size());
   EXPECT_TRUE(
-      ContainsKey(params.origins_to_force_quic_on,
+      ContainsKey(params_.origins_to_force_quic_on,
                   net::HostPortPair::FromString("www.example.com:443")));
   EXPECT_TRUE(
-      ContainsKey(params.origins_to_force_quic_on,
+      ContainsKey(params_.origins_to_force_quic_on,
                   net::HostPortPair::FromString("www.example.org:443")));
 }
 
-TEST_F(IOThreadTest, QuicWhitelistFromCommandLinet) {
-  command_line_.AppendSwitch("enable-quic");
-  command_line_.AppendSwitchASCII("quic-host-whitelist",
-                                  "www.example.org, www.example.com");
+TEST_F(NetworkSessionConfiguratorTest, QuicWhitelistFromCommandLinet) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch("enable-quic");
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      "quic-host-whitelist", "www.example.org, www.example.com");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(2u, params.quic_host_whitelist.size());
-  EXPECT_TRUE(ContainsKey(params.quic_host_whitelist, "www.example.org"));
-  EXPECT_TRUE(ContainsKey(params.quic_host_whitelist, "www.example.com"));
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_EQ(2u, params_.quic_host_whitelist.size());
+  EXPECT_TRUE(ContainsKey(params_.quic_host_whitelist, "www.example.org"));
+  EXPECT_TRUE(ContainsKey(params_.quic_host_whitelist, "www.example.com"));
 }
 
-TEST_F(IOThreadTest, QuicWhitelistFromParams) {
-  field_trial_group_ = "Enabled";
-  field_trial_params_["quic_host_whitelist"] =
+TEST_F(NetworkSessionConfiguratorTest, QuicWhitelistFromParams) {
+  std::map<std::string, std::string> field_trial_params;
+  field_trial_params["quic_host_whitelist"] =
       "www.example.org, www.example.com";
+  variations::AssociateVariationParams("QUIC", "Enabled", field_trial_params);
+  base::FieldTrialList::CreateFieldTrial("QUIC", "Enabled");
 
-  ConfigureQuicGlobals();
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_EQ(2u, params.quic_host_whitelist.size());
-  EXPECT_TRUE(ContainsKey(params.quic_host_whitelist, "www.example.org"));
-  EXPECT_TRUE(ContainsKey(params.quic_host_whitelist, "www.example.com"));
+  ParseFieldTrials();
+
+  EXPECT_EQ(2u, params_.quic_host_whitelist.size());
+  EXPECT_TRUE(ContainsKey(params_.quic_host_whitelist, "www.example.org"));
+  EXPECT_TRUE(ContainsKey(params_.quic_host_whitelist, "www.example.com"));
 }
 
-TEST_F(IOThreadTest, QuicDisallowedByPolicy) {
-  command_line_.AppendSwitch(switches::kEnableQuic);
+TEST_F(NetworkSessionConfiguratorTest, QuicDisallowedByPolicy) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableQuic);
   is_quic_allowed_by_policy_ = false;
-  ConfigureQuicGlobals();
 
-  net::HttpNetworkSession::Params params;
-  InitializeNetworkSessionParams(&params);
-  EXPECT_FALSE(params.enable_quic);
+  ParseFieldTrialsAndCommandLine();
+
+  EXPECT_FALSE(params_.enable_quic);
+}
+
+TEST_F(NetworkSessionConfiguratorTest, TCPFastOpenHttpsEnabled) {
+  base::FieldTrialList::CreateFieldTrial("TCPFastOpen", "HttpsEnabled");
+
+  ParseFieldTrials();
+
+  EXPECT_TRUE(params_.enable_tcp_fast_open_for_ssl);
 }
 
 class IOThreadTestWithIOThreadObject : public testing::Test {
@@ -722,14 +763,13 @@
 #endif
     // The IOThread constructor registers the IOThread object with as the
     // BrowserThreadDelegate for the io thread.
-    io_thread_.reset(new IOThread(&pref_service_, &policy_service_,
-                                         nullptr,
+    io_thread_.reset(new IOThread(&pref_service_, &policy_service_, nullptr,
 #if defined(ENABLE_EXTENSIONS)
-                                         event_router_forwarder_.get()
+                                  event_router_forwarder_.get()
 #else
-                                         nullptr
+                                  nullptr
 #endif
-                                             ));
+                                      ));
     // Now that IOThread object is registered starting the threads will
     // call the IOThread::Init(). This sets up the environment needed for
     // these tests.
diff --git a/chrome/browser/media/cast_transport_host_filter.cc b/chrome/browser/media/cast_transport_host_filter.cc
index 6e5adf0c..c3982da 100644
--- a/chrome/browser/media/cast_transport_host_filter.cc
+++ b/chrome/browser/media/cast_transport_host_filter.cc
@@ -9,14 +9,14 @@
 #include "chrome/common/cast_messages.h"
 #include "components/net_log/chrome_net_log.h"
 #include "content/public/browser/power_save_blocker.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 
 namespace {
 
 // How often to send raw events.
 const int kSendRawEventsIntervalSecs = 1;
 
-class TransportClient : public media::cast::CastTransportSender::Client {
+class TransportClient : public media::cast::CastTransport::Client {
  public:
   TransportClient(int32_t channel_id,
                   cast::CastTransportHostFilter* cast_transport_host_filter)
@@ -142,8 +142,8 @@
           base::Bind(&CastTransportHostFilter::OnStatusChanged,
                      weak_factory_.GetWeakPtr(), channel_id)));
   udp_transport->SetUdpOptions(options);
-  scoped_ptr<media::cast::CastTransportSender> sender =
-      media::cast::CastTransportSender::Create(
+  scoped_ptr<media::cast::CastTransport> sender =
+      media::cast::CastTransport::Create(
           &clock_, base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs),
           make_scoped_ptr(new TransportClient(channel_id, this)),
           std::move(udp_transport), base::ThreadTaskRunnerHandle::Get());
@@ -152,7 +152,7 @@
 }
 
 void CastTransportHostFilter::OnDelete(int32_t channel_id) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     id_map_.Remove(channel_id);
   } else {
@@ -171,7 +171,7 @@
 void CastTransportHostFilter::OnInitializeAudio(
     int32_t channel_id,
     const media::cast::CastTransportRtpConfig& config) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->InitializeAudio(
         config, base::Bind(&CastTransportHostFilter::SendCastMessage,
@@ -189,7 +189,7 @@
 void CastTransportHostFilter::OnInitializeVideo(
     int32_t channel_id,
     const media::cast::CastTransportRtpConfig& config) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->InitializeVideo(
         config, base::Bind(&CastTransportHostFilter::SendCastMessage,
@@ -208,7 +208,7 @@
     int32_t channel_id,
     uint32_t ssrc,
     const media::cast::EncodedFrame& frame) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->InsertFrame(ssrc, frame);
   } else {
@@ -221,7 +221,7 @@
     int32_t channel_id,
     uint32_t ssrc,
     const std::vector<uint32_t>& frame_ids) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->CancelSendingFrames(ssrc, frame_ids);
   } else {
@@ -234,7 +234,7 @@
 void CastTransportHostFilter::OnResendFrameForKickstart(int32_t channel_id,
                                                         uint32_t ssrc,
                                                         uint32_t frame_id) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->ResendFrameForKickstart(ssrc, frame_id);
   } else {
@@ -249,7 +249,7 @@
     uint32_t ssrc,
     base::TimeTicks current_time,
     media::cast::RtpTimeTicks current_time_as_rtp_timestamp) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->SendSenderReport(ssrc,
                              current_time,
@@ -265,7 +265,7 @@
     int32_t channel_id,
     uint32_t rtp_sender_ssrc,
     uint32_t rtp_receiver_ssrc) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->AddValidRtpReceiver(rtp_sender_ssrc, rtp_receiver_ssrc);
   } else {
@@ -278,7 +278,7 @@
     int32_t channel_id,
     uint32_t rtp_receiver_ssrc,
     const media::cast::RtcpTimeData& time_data) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->InitializeRtpReceiverRtcpBuilder(rtp_receiver_ssrc, time_data);
   } else {
@@ -291,7 +291,7 @@
     int32_t channel_id,
     const media::cast::RtcpCastMessage& cast_message,
     base::TimeDelta target_delay) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->AddCastFeedback(cast_message, target_delay);
   } else {
@@ -303,7 +303,7 @@
 void CastTransportHostFilter::OnAddPli(
     int32_t channel_id,
     const media::cast::RtcpPliMessage& pli_message) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->AddPli(pli_message);
   } else {
@@ -314,7 +314,7 @@
 void CastTransportHostFilter::OnAddRtcpEvents(
     int32_t channel_id,
     const media::cast::ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->AddRtcpEvents(rtcp_events);
   } else {
@@ -326,7 +326,7 @@
 void CastTransportHostFilter::OnAddRtpReceiverReport(
     int32_t channel_id,
     const media::cast::RtcpReportBlock& rtp_receiver_report_block) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->AddRtpReceiverReport(rtp_receiver_report_block);
   } else {
@@ -336,7 +336,7 @@
 }
 
 void CastTransportHostFilter::OnSendRtcpFromRtpReceiver(int32_t channel_id) {
-  media::cast::CastTransportSender* sender = id_map_.Lookup(channel_id);
+  media::cast::CastTransport* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->SendRtcpFromRtpReceiver();
   } else {
diff --git a/chrome/browser/media/cast_transport_host_filter.h b/chrome/browser/media/cast_transport_host_filter.h
index 8f0c5ea..04616f1 100644
--- a/chrome/browser/media/cast_transport_host_filter.h
+++ b/chrome/browser/media/cast_transport_host_filter.h
@@ -15,7 +15,7 @@
 #include "content/public/browser/browser_message_filter.h"
 #include "media/cast/cast_sender.h"
 #include "media/cast/logging/logging_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/udp_transport.h"
 
 namespace content {
@@ -90,7 +90,7 @@
              const base::DictionaryValue& options);
   void OnDelete(int32_t channel_id);
 
-  IDMap<media::cast::CastTransportSender, IDMapOwnPointer> id_map_;
+  IDMap<media::cast::CastTransport, IDMapOwnPointer> id_map_;
 
   // Clock used by Cast transport.
   base::DefaultTickClock clock_;
diff --git a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.h b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.h
index b200571..e9b1715 100644
--- a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.h
+++ b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.h
@@ -15,6 +15,7 @@
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/media_galleries/fileapi/mtp_device_async_delegate.h"
 
diff --git a/chrome/browser/metrics/metrics_reporting_state.cc b/chrome/browser/metrics/metrics_reporting_state.cc
index 3f1147f6..30a9dd58 100644
--- a/chrome/browser/metrics/metrics_reporting_state.cc
+++ b/chrome/browser/metrics/metrics_reporting_state.cc
@@ -136,7 +136,7 @@
   return pref && pref->IsManaged();
 }
 
-void SetMetricsReportingDefaultOptIn(PrefService* local_state, bool opt_in) {
+void RecordMetricsReportingDefaultOptIn(PrefService* local_state, bool opt_in) {
   DCHECK(GetMetricsReportingDefaultOptIn(local_state) ==
          metrics::MetricsServiceClient::DEFAULT_UNKNOWN);
   local_state->SetInteger(prefs::kMetricsDefaultOptIn,
diff --git a/chrome/browser/metrics/metrics_reporting_state.h b/chrome/browser/metrics/metrics_reporting_state.h
index a4dac7d..1fcb79f 100644
--- a/chrome/browser/metrics/metrics_reporting_state.h
+++ b/chrome/browser/metrics/metrics_reporting_state.h
@@ -35,7 +35,7 @@
 // enable checkbox on first-run was default unchecked. If it was opt-out, then
 // the checkbox was default checked. This should only be set once, and only
 // during first-run.
-void SetMetricsReportingDefaultOptIn(PrefService* local_state, bool opt_in);
+void RecordMetricsReportingDefaultOptIn(PrefService* local_state, bool opt_in);
 
 // Gets information about the default value for the enable metrics reporting
 // checkbox shown during first-run.
diff --git a/chrome/browser/net/crl_set_fetcher.cc b/chrome/browser/net/crl_set_fetcher.cc
index f2d9caf..0245433 100644
--- a/chrome/browser/net/crl_set_fetcher.cc
+++ b/chrome/browser/net/crl_set_fetcher.cc
@@ -144,7 +144,8 @@
   component.installer = this;
   component.name = "CRLSet";
   component.version = Version(base::UintToString(sequence_of_loaded_crl));
-  component.allow_background_download = false;
+  component.allows_background_download = false;
+  component.requires_network_encryption = false;
   if (!component.version.IsValid()) {
     NOTREACHED();
     component.version = Version("0");
diff --git a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
index 4c101f6..ed9428b 100644
--- a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
@@ -8,6 +8,47 @@
 
 using page_load_metrics::UserAbortType;
 
+namespace internal {
+
+const char kHistogramAbortForwardBackBeforeCommit[] =
+    "PageLoad.AbortTiming.ForwardBackNavigation.BeforeCommit";
+const char kHistogramAbortReloadBeforeCommit[] =
+    "PageLoad.AbortTiming.Reload.BeforeCommit";
+const char kHistogramAbortNewNavigationBeforeCommit[] =
+    "PageLoad.AbortTiming.NewNavigation.BeforeCommit";
+const char kHistogramAbortStopBeforeCommit[] =
+    "PageLoad.AbortTiming.Stop.BeforeCommit";
+const char kHistogramAbortCloseBeforeCommit[] =
+    "PageLoad.AbortTiming.Close.BeforeCommit";
+const char kHistogramAbortOtherBeforeCommit[] =
+    "PageLoad.AbortTiming.Other.BeforeCommit";
+const char kHistogramAbortUnknownNavigationBeforeCommit[] =
+    "PageLoad.AbortTiming.UnknownNavigation.BeforeCommit";
+
+const char kHistogramAbortForwardBackBeforePaint[] =
+    "PageLoad.AbortTiming.ForwardBackNavigation.AfterCommit.BeforePaint";
+const char kHistogramAbortReloadBeforePaint[] =
+    "PageLoad.AbortTiming.Reload.AfterCommit.BeforePaint";
+const char kHistogramAbortNewNavigationBeforePaint[] =
+    "PageLoad.AbortTiming.NewNavigation.AfterCommit.BeforePaint";
+const char kHistogramAbortStopBeforePaint[] =
+    "PageLoad.AbortTiming.Stop.AfterCommit.BeforePaint";
+const char kHistogramAbortCloseBeforePaint[] =
+    "PageLoad.AbortTiming.Close.AfterCommit.BeforePaint";
+
+const char kHistogramAbortForwardBackDuringParse[] =
+    "PageLoad.AbortTiming.ForwardBackNavigation.DuringParse";
+const char kHistogramAbortReloadDuringParse[] =
+    "PageLoad.AbortTiming.Reload.DuringParse";
+const char kHistogramAbortNewNavigationDuringParse[] =
+    "PageLoad.AbortTiming.NewNavigation.DuringParse";
+const char kHistogramAbortStopDuringParse[] =
+    "PageLoad.AbortTiming.Stop.DuringParse";
+const char kHistogramAbortCloseDuringParse[] =
+    "PageLoad.AbortTiming.Close.DuringParse";
+
+}  // namespace internal
+
 namespace {
 
 void RecordAbortBeforeCommit(UserAbortType abort_type,
@@ -74,11 +115,49 @@
                           time_to_abort);
       return;
     case UserAbortType::ABORT_UNKNOWN_NAVIGATION:
-      DLOG(FATAL) << "Received UserAbortType::ABORT_UNKNOWN_NAVIGATION for "
-                     "committed load.";
+      NOTREACHED() << "Received UserAbortType::ABORT_UNKNOWN_NAVIGATION for "
+                      "committed load.";
       return;
     case UserAbortType::ABORT_OTHER:
-      DLOG(FATAL) << "Received UserAbortType::ABORT_OTHER for committed load.";
+      NOTREACHED() << "Received UserAbortType::ABORT_OTHER for committed load.";
+      return;
+    case UserAbortType::ABORT_NONE:
+    case UserAbortType::ABORT_LAST_ENTRY:
+      NOTREACHED();
+      return;
+  }
+  NOTREACHED();
+}
+
+void RecordAbortDuringParse(UserAbortType abort_type,
+                            base::TimeDelta time_to_abort) {
+  switch (abort_type) {
+    case UserAbortType::ABORT_RELOAD:
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadDuringParse,
+                          time_to_abort);
+      return;
+    case UserAbortType::ABORT_FORWARD_BACK:
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackDuringParse,
+                          time_to_abort);
+      return;
+    case UserAbortType::ABORT_NEW_NAVIGATION:
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationDuringParse,
+                          time_to_abort);
+      return;
+    case UserAbortType::ABORT_STOP:
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopDuringParse,
+                          time_to_abort);
+      return;
+    case UserAbortType::ABORT_CLOSE:
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortCloseDuringParse,
+                          time_to_abort);
+      return;
+    case UserAbortType::ABORT_UNKNOWN_NAVIGATION:
+      NOTREACHED() << "Received UserAbortType::ABORT_UNKNOWN_NAVIGATION for "
+                      "committed load.";
+      return;
+    case UserAbortType::ABORT_OTHER:
+      NOTREACHED() << "Received UserAbortType::ABORT_OTHER for committed load.";
       return;
     case UserAbortType::ABORT_NONE:
     case UserAbortType::ABORT_LAST_ENTRY:
@@ -90,35 +169,6 @@
 
 }  // namespace
 
-namespace internal {
-
-const char kHistogramAbortForwardBackBeforeCommit[] =
-    "PageLoad.AbortTiming.ForwardBackNavigation.BeforeCommit";
-const char kHistogramAbortReloadBeforeCommit[] =
-    "PageLoad.AbortTiming.Reload.BeforeCommit";
-const char kHistogramAbortNewNavigationBeforeCommit[] =
-    "PageLoad.AbortTiming.NewNavigation.BeforeCommit";
-const char kHistogramAbortStopBeforeCommit[] =
-    "PageLoad.AbortTiming.Stop.BeforeCommit";
-const char kHistogramAbortCloseBeforeCommit[] =
-    "PageLoad.AbortTiming.Close.BeforeCommit";
-const char kHistogramAbortOtherBeforeCommit[] =
-    "PageLoad.AbortTiming.Other.BeforeCommit";
-const char kHistogramAbortUnknownNavigationBeforeCommit[] =
-    "PageLoad.AbortTiming.UnknownNavigation.BeforeCommit";
-const char kHistogramAbortForwardBackBeforePaint[] =
-    "PageLoad.AbortTiming.ForwardBackNavigation.AfterCommit.BeforePaint";
-const char kHistogramAbortReloadBeforePaint[] =
-    "PageLoad.AbortTiming.Reload.AfterCommit.BeforePaint";
-const char kHistogramAbortNewNavigationBeforePaint[] =
-    "PageLoad.AbortTiming.NewNavigation.AfterCommit.BeforePaint";
-const char kHistogramAbortStopBeforePaint[] =
-    "PageLoad.AbortTiming.Stop.AfterCommit.BeforePaint";
-const char kHistogramAbortCloseBeforePaint[] =
-    "PageLoad.AbortTiming.Close.AfterCommit.BeforePaint";
-
-}  // namespace internal
-
 AbortsPageLoadMetricsObserver::AbortsPageLoadMetricsObserver() {}
 
 void AbortsPageLoadMetricsObserver::OnComplete(
@@ -148,6 +198,10 @@
   if (timing.IsEmpty())
     return;
 
+  if (!timing.parse_start.is_zero() && time_to_abort >= timing.parse_start &&
+      (timing.parse_stop.is_zero() || timing.parse_stop >= time_to_abort)) {
+    RecordAbortDuringParse(abort_type, time_to_abort);
+  }
   if (timing.first_paint.is_zero() || timing.first_paint >= time_to_abort) {
     RecordAbortAfterCommitBeforePaint(abort_type, time_to_abort);
   }
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
index d4d6ea2..205c79f2 100644
--- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
@@ -58,6 +58,12 @@
     "PageLoad.Timing2.NavigationToFirstContentfulPaint";
 const char kHistogramDomLoadingToFirstContentfulPaint[] =
     "PageLoad.Timing2.DOMLoadingToFirstContentfulPaint";
+const char kHistogramParseDuration[] = "PageLoad.Timing2.ParseDuration";
+const char kHistogramParseBlockedOnScriptLoad[] =
+    "PageLoad.Timing2.ParseBlockedOnScriptLoad";
+const char kHistogramParseBlockedOnScriptLoadParseComplete[] =
+    "PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete";
+
 const char kBackgroundHistogramCommit[] =
     "PageLoad.Timing2.NavigationToCommit.Background";
 const char kBackgroundHistogramFirstLayout[] =
@@ -74,6 +80,12 @@
     "PageLoad.Timing2.NavigationToFirstImagePaint.Background.";
 const char kBackgroundHistogramFirstContentfulPaint[] =
     "PageLoad.Timing2.NavigationToFirstContentfulPaint.Background";
+const char kBackgroundHistogramParseDuration[] =
+    "PageLoad.Timing2.ParseDuration.Background";
+const char kBackgroundHistogramParseBlockedOnScriptLoad[] =
+    "PageLoad.Timing2.ParseBlockedOnScriptLoad.Background";
+const char kBackgroundHistogramParseBlockedOnScriptLoadParseComplete[] =
+    "PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete.Background";
 
 const char kHistogramFirstContentfulPaintHigh[] =
     "PageLoad.Timing2.NavigationToFirstContentfulPaint.HighResolutionClock";
@@ -89,6 +101,8 @@
     "PageLoad.Timing2.NavigationToFirstBackground.AfterCommit.BeforePaint";
 const char kHistogramBackgroundBeforeCommit[] =
     "PageLoad.Timing2.NavigationToFirstBackground.BeforeCommit";
+const char kHistogramBackgroundDuringParse[] =
+    "PageLoad.Timing2.NavigationToFirstBackground.DuringParse";
 const char kHistogramFailedProvisionalLoad[] =
     "PageLoad.Timing2.NavigationToFailedProvisionalLoad";
 
@@ -132,16 +146,22 @@
 void CorePageLoadMetricsObserver::RecordTimingHistograms(
     const page_load_metrics::PageLoadTiming& timing,
     const page_load_metrics::PageLoadExtraInfo& info) {
-  // Record metrics for pages which starts in the foreground and is backgrounded
-  // prior to the first paint.
-  if (info.started_in_foreground && !info.first_background_time.is_zero() &&
-      (timing.first_paint.is_zero() ||
-       timing.first_paint > info.first_background_time)) {
-    if (!info.time_to_commit.is_zero()) {
+  // Record metrics for pages which start in the foreground and are
+  // backgrounded.
+  if (info.started_in_foreground && !info.first_background_time.is_zero()) {
+    if (info.time_to_commit.is_zero()) {
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundBeforeCommit,
+                          info.first_background_time);
+    } else if (timing.first_paint.is_zero() ||
+               timing.first_paint > info.first_background_time) {
       PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundBeforePaint,
                           info.first_background_time);
-    } else {
-      PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundBeforeCommit,
+    }
+    if (!timing.parse_start.is_zero() &&
+        info.first_background_time >= timing.parse_start &&
+        (timing.parse_stop.is_zero() ||
+         timing.parse_stop > info.first_background_time)) {
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramBackgroundDuringParse,
                           info.first_background_time);
     }
   }
@@ -259,6 +279,38 @@
                           timing.first_contentful_paint);
     }
   }
+  if (!timing.parse_start.is_zero()) {
+    const bool incomplete_parse_in_foreground =
+        timing.parse_stop.is_zero() && info.started_in_foreground &&
+        info.first_background_time.is_zero();
+    // If the parse did not complete but the entire page load duration happened
+    // in the foreground, or if the parse completed and happened entirely in the
+    // foreground, record a foreground histogram.
+    if (incomplete_parse_in_foreground ||
+        WasStartedInForegroundEventInForeground(timing.parse_stop, info)) {
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramParseBlockedOnScriptLoad,
+                          timing.parse_blocked_on_script_load_duration);
+    } else {
+      PAGE_LOAD_HISTOGRAM(
+          internal::kBackgroundHistogramParseBlockedOnScriptLoad,
+          timing.parse_blocked_on_script_load_duration);
+    }
+  }
+  if (!timing.parse_stop.is_zero()) {
+    base::TimeDelta parse_duration = timing.parse_stop - timing.parse_start;
+    if (WasStartedInForegroundEventInForeground(timing.parse_stop, info)) {
+      PAGE_LOAD_HISTOGRAM(internal::kHistogramParseDuration, parse_duration);
+      PAGE_LOAD_HISTOGRAM(
+          internal::kHistogramParseBlockedOnScriptLoadParseComplete,
+          timing.parse_blocked_on_script_load_duration);
+    } else {
+      PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramParseDuration,
+                          parse_duration);
+      PAGE_LOAD_HISTOGRAM(
+          internal::kBackgroundHistogramParseBlockedOnScriptLoadParseComplete,
+          timing.parse_blocked_on_script_load_duration);
+    }
+  }
 
   // Log time to first foreground / time to first background. Log counts that we
   // started a relevant page load in the foreground / background.
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
index f59d5db0..13a52dc 100644
--- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
+++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
@@ -21,6 +21,9 @@
 extern const char kHistogramLoad[];
 extern const char kHistogramFirstContentfulPaint[];
 extern const char kHistogramDomLoadingToFirstContentfulPaint[];
+extern const char kHistogramParseDuration[];
+extern const char kHistogramParseBlockedOnScriptLoad[];
+
 extern const char kBackgroundHistogramCommit[];
 extern const char kBackgroundHistogramFirstLayout[];
 extern const char kBackgroundHistogramFirstTextPaint[];
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
index e3def2e..fdcefd5 100644
--- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
@@ -72,10 +72,17 @@
 
 TEST_F(CorePageLoadMetricsObserverTest, SingleMetricAfterCommit) {
   base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1);
+  base::TimeDelta parse_start = base::TimeDelta::FromMilliseconds(1);
+  base::TimeDelta parse_stop = base::TimeDelta::FromMilliseconds(5);
+  base::TimeDelta parse_script_block_duration =
+      base::TimeDelta::FromMilliseconds(3);
 
   page_load_metrics::PageLoadTiming timing;
   timing.navigation_start = base::Time::FromDoubleT(1);
   timing.first_layout = first_layout;
+  timing.parse_start = parse_start;
+  timing.parse_stop = parse_stop;
+  timing.parse_blocked_on_script_load_duration = parse_script_block_duration;
   PopulateRequiredTimingFields(&timing);
 
   NavigateAndCommit(GURL(kDefaultTestUrl));
@@ -92,6 +99,12 @@
   histogram_tester().ExpectTotalCount(internal::kHistogramFirstLayout, 1);
   histogram_tester().ExpectBucketCount(internal::kHistogramFirstLayout,
                                        first_layout.InMilliseconds(), 1);
+  histogram_tester().ExpectBucketCount(
+      internal::kHistogramParseDuration,
+      (parse_stop - parse_start).InMilliseconds(), 1);
+  histogram_tester().ExpectBucketCount(
+      internal::kHistogramParseBlockedOnScriptLoad,
+      parse_script_block_duration.InMilliseconds(), 1);
   histogram_tester().ExpectTotalCount(internal::kHistogramFirstTextPaint, 0);
 }
 
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
index 1d6d56c..c46c98b 100644
--- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
+++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
@@ -39,6 +39,9 @@
   histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1);
   histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1);
   histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1);
+  histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1);
+  histogram_tester_.ExpectTotalCount(
+      internal::kHistogramParseBlockedOnScriptLoad, 1);
 }
 
 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AnchorLink) {
diff --git a/chrome/browser/pdf/DEPS b/chrome/browser/pdf/DEPS
index 3bb3a060..7838589 100644
--- a/chrome/browser/pdf/DEPS
+++ b/chrome/browser/pdf/DEPS
@@ -1,4 +1,4 @@
 include_rules = [
-# The next line is needed for chrome/browser/pdf/pdf_extension_test.cc.
-"+chrome/browser/ui/views/location_bar/zoom_bubble_view.h",
+  # The next line is needed for chrome/browser/pdf/pdf_extension_test.cc.
+  "+chrome/browser/ui/views/location_bar/zoom_bubble_view.h",
 ]
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc
index 954598a..eecfd34 100644
--- a/chrome/browser/pdf/pdf_extension_test.cc
+++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -333,7 +333,13 @@
   RunTestsInFile("bookmarks_test.js", "test-bookmarks.pdf");
 }
 
-IN_PROC_BROWSER_TEST_F(PDFExtensionTest, Navigator) {
+// https://crbug.com/600445
+#if defined(ADDRESS_SANITIZER)
+#define MAYBE_Navigator DISABLED_Navigator
+#else
+#define MAYBE_Navigator Navigator
+#endif
+IN_PROC_BROWSER_TEST_F(PDFExtensionTest, MAYBE_Navigator) {
   RunTestsInFile("navigator_test.js", "test.pdf");
 }
 
diff --git a/chrome/browser/policy/cloud/DEPS b/chrome/browser/policy/cloud/DEPS
index 07ecd7c..7f429a0 100644
--- a/chrome/browser/policy/cloud/DEPS
+++ b/chrome/browser/policy/cloud/DEPS
@@ -9,7 +9,6 @@
   "-chromeos",
   "-content",
   "+chrome/browser/policy",
-  "+chrome/browser/policy/cloud",
   "+components/invalidation",
 ]
 
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index c4e0cd9..3d439fb 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -1284,12 +1284,11 @@
 
 scoped_ptr<net::HttpNetworkSession> ProfileIOData::CreateHttpNetworkSession(
     const ProfileParams& profile_params) const {
-  net::HttpNetworkSession::Params params;
   net::URLRequestContext* context = main_request_context();
 
   IOThread* const io_thread = profile_params.io_thread;
 
-  io_thread->InitializeNetworkSessionParams(&params);
+  net::HttpNetworkSession::Params params(io_thread->NetworkSessionParams());
   net::URLRequestContextBuilder::SetHttpNetworkSessionComponents(context,
                                                                  &params);
   if (!IsOffTheRecord()) {
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
index 4362528..da44d98 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output.js
@@ -106,7 +106,8 @@
  */
 Output.ROLE_INFO_ = {
   alert: {
-    msgId: 'role_alert'
+    msgId: 'role_alert',
+    earconId: 'ALERT_NONMODAL'
   },
   alertDialog: {
     msgId: 'role_alertdialog'
@@ -399,7 +400,7 @@
       leave: '@exited_container($role)'
     },
     alert: {
-      speak: '!doNotInterrupt $role $earcon(ALERT_NONMODAL) $descendants'
+      speak: '!doNotInterrupt $role $descendants'
     },
     alertDialog: {
       enter: '$name $role $description $descendants'
@@ -983,18 +984,9 @@
           this.append_(buff, text, options);
         } else if (token == 'name') {
           options.annotation.push(token);
-          if (this.formatOptions_.speech) {
-            var earconFinder = node;
-            while (earconFinder) {
-              var info = Output.ROLE_INFO_[earconFinder.role];
-              if (info && info.earconId) {
-                options.annotation.push(
-                    new Output.EarconAction(info.earconId));
-                break;
-              }
-              earconFinder = earconFinder.parent;
-            }
-          }
+          var earcon = node ? this.findEarcon_(node) : null;
+          if (earcon)
+            options.annotation.push(earcon);
           this.append_(buff, node.name, options);
         } else if (token == 'nameOrDescendants') {
           options.annotation.push(token);
@@ -1325,16 +1317,11 @@
         if (enterRole[formatNode.role])
           continue;
         enterRole[formatNode.role] = true;
-        var tempBuff = [];
-        this.format_(formatNode, roleBlock.enter, tempBuff);
-        enterOutputs.unshift(tempBuff);
+        this.format_(formatNode, roleBlock.enter, buff);
       }
       if (formatNode.role == 'window')
         break;
     }
-    enterOutputs.forEach(function(b) {
-      buff.push.apply(buff, b);
-    });
   },
 
   /**
@@ -1388,6 +1375,9 @@
     var outputContextFirst = localStorage['outputContextFirst'] == 'true';
     if (outputContextFirst)
       this.ancestry_(node, prevNode, type, buff);
+    var earcon = this.findEarcon_(node);
+    if (earcon)
+      options.annotation.push(earcon);
     this.append_(buff, range.start.getText().substring(startIndex, endIndex),
         options);
     if (!outputContextFirst)
@@ -1545,6 +1535,26 @@
       separator = Output.SPACE;
     });
     return result;
+  },
+
+  /**
+   * Find the earcon for a given node (including ancestry).
+   * @param {!AutomationNode} node
+   * @return {Output.Action}
+   */
+  findEarcon_: function(node) {
+    if (this.formatOptions_.speech) {
+      var earconFinder = node;
+      while (earconFinder) {
+        var info = Output.ROLE_INFO_[earconFinder.role];
+        if (info && info.earconId) {
+          return new Output.EarconAction(info.earconId);
+          break;
+        }
+        earconFinder = earconFinder.parent;
+      }
+    }
+    return null;
   }
 };
 
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output_test.extjs
index a871e29..89b6d2b6 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/output_test.extjs
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/output_test.extjs
@@ -366,63 +366,56 @@
     var range = cursors.Range.fromNode(el);
     var o = new Output().withSpeechAndBraille(range, null, 'navigate');
     assertEqualsJSON(
-        {string_: 'a||Tree|with 3 items|Tree item|Expanded| 1 of 3 | level 1 ',
+        {string_: 'a|Tree item|Expanded| 1 of 3 | level 1 ||Tree|with 3 items',
         spans_: [
-          // InLineTextBox.
-          {value: 'name', start: 2, end: 2},
-          
           // TreeItem.
-          {value: 'role','start': 21, end: 30},
-          {value: 'state', start: 31, end: 39}
+          {value: 'state', start: 12, end: 20},
+          {value: 'name', 'start': 40, end: 40},
+          {value: 'role','start': 41, end: 45},
     ]}, o.speechOutputForTest);
     // TODO(plundblad): Braille output is wrong.
     checkBrailleOutput(
-        'a tree +3 tritm - 1/3  level 1 ',
+        'a tritm - 1/3  level 1  tree +3',
         [{value: new Output.NodeSpan(el), start: 0, end: 1},
-         {value: new Output.NodeSpan(el.parent.parent), start: 2, end: 9},
-         {value: new Output.NodeSpan(el.parent), start: 10, end: 31}],
+         {value: new Output.NodeSpan(el.parent), start: 2, end: 23},
+         {value: new Output.NodeSpan(el.parent.parent), start: 24, end: 31}],
         o);
 
     el = root.firstChild.children[1].firstChild;
-    var range = cursors.Range.fromNode(el);
-    var o = new Output().withSpeechAndBraille(range, null, 'navigate');
+    range = cursors.Range.fromNode(el);
+    o = new Output().withSpeechAndBraille(range, null, 'navigate');
     assertEqualsJSON(
-        {string_: 'b||Tree|with 3 items|Tree item| 2 of 3 | level 1 ',
+        {string_: 'b|Tree item| 2 of 3 | level 1 ||Tree|with 3 items',
         spans_: [
-
-          // InLineTextBox.
-          {value: 'name', start: 2, end: 2},
-
           // TreeItem.
-          {value: 'role','start': 21, end: 30}
+          {value: 'name', start: 31, end: 31},
+          {value: 'role', 'start': 32, end: 36}
     ]}, o.speechOutputForTest);
     // TODO(plundblad): Braille output is wrong.
     checkBrailleOutput(
-        'b tree +3 tritm 2/3  level 1 ',
+        'b tritm 2/3  level 1  tree +3',
         [{value: new Output.NodeSpan(el), start: 0, end: 1},
-         {value: new Output.NodeSpan(el.parent.parent), start: 2, end: 9},
-         {value: new Output.NodeSpan(el.parent), start: 10, end: 29}],
+         {value: new Output.NodeSpan(el.parent), start: 2, end: 21},
+         {value: new Output.NodeSpan(el.parent.parent), start: 22, end: 29}],
         o);
 
     el = root.firstChild.children[2].firstChild;
-    var range = cursors.Range.fromNode(el);
-    var o = new Output().withSpeechAndBraille(range, null, 'navigate');
+    range = cursors.Range.fromNode(el);
+    o = new Output().withSpeechAndBraille(range, null, 'navigate');
     assertEqualsJSON(
-        {string_: 'c||Tree|with 3 items|Tree item|Collapsed| 3 of 3 | level 1 ',
+        {string_: 'c|Tree item|Collapsed| 3 of 3 | level 1 ||Tree|with 3 items',
         spans_: [
-          // InLineTextBox.
-          {value: 'name', start: 2, end: 2},
-
           // TreeItem.
-          {value: 'role','start': 21, end: 30},
-          {value: 'state', start: 31, end: 40}
+          {value: 'state', start: 12, end: 21},
+          {value: 'name', 'start': 41, end: 41},
+          {value: 'role','start': 42, end: 46},
     ]}, o.speechOutputForTest);
     // TODO(plundblad): Braille output is wrong.
     checkBrailleOutput(
-        'c tree +3 tritm + 3/3  level 1 ',
+        'c tritm + 3/3  level 1  tree +3',
         [{value: new Output.NodeSpan(el), start: 0, end: 1},
-         {value: new Output.NodeSpan(el.parent.parent), start: 2, end: 9},
-         {value: new Output.NodeSpan(el.parent), start: 10, end: 31}],
+         {value: new Output.NodeSpan(el.parent), start: 2, end: 23},
+         {value: new Output.NodeSpan(el.parent.parent), start: 24, end: 31}],
         o);
   });
 });
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 f4ffde2..0f5aff9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
@@ -610,6 +610,7 @@
 <translation id="739763518212184081">পূর্ববর্তী লাইন</translation>
 <translation id="7400575256015741911">বানান পরীক্ষাগত ত্রুটি সনাক্ত হয়েছে</translation>
 <translation id="7408482676469142474">tbl</translation>
+<translation id="7420313809195758138">কোনো আইটেমের অন্যান্য তথ্যের আগে এর প্রসঙ্গ প্রদর্শন করুন (যেমন এটির নাম)।</translation>
 <translation id="7425395583360211003">ফিরে যান</translation>
 <translation id="7434509671034404296">বিকাশকারী</translation>
 <translation id="7439060726180460871">সংকলন</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 2f7d28b..c875acd 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
@@ -139,7 +139,7 @@
 <translation id="2723001399770238859">àudio</translation>
 <translation id="2732718972699418926">a.m.</translation>
 <translation id="2749275490991666823">Comprovat</translation>
-<translation id="27527859628328957">Salta al punt enfocable següent</translation>
+<translation id="27527859628328957">Vés a l'element enfocable següent</translation>
 <translation id="2770781857296573485">Entra a l'exploració de grups</translation>
 <translation id="2777845298774924149">S'ha sortit</translation>
 <translation id="2800204403141299078">No hi ha més elements diferents.</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 d7d758b05..208568e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
@@ -610,7 +610,7 @@
 <translation id="739763518212184081">Línea anterior</translation>
 <translation id="7400575256015741911">Error de ortografía detectado</translation>
 <translation id="7408482676469142474">tbl</translation>
-<translation id="7420313809195758138">Mostrar el contexto de un artículo antes que otra información (por ejemplo, el nombre).</translation>
+<translation id="7420313809195758138">Mostrar el contexto de un elemento antes que otra información (por ejemplo, el nombre).</translation>
 <translation id="7425395583360211003">retorno</translation>
 <translation id="7434509671034404296">Opciones para desarrolladores</translation>
 <translation id="7439060726180460871">Directorio</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 764b847..e07da9c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
@@ -610,7 +610,7 @@
 <translation id="739763518212184081">Baris Sebelumnya</translation>
 <translation id="7400575256015741911">Kesalahan ejaan terdeteksi</translation>
 <translation id="7408482676469142474">tbl</translation>
-<translation id="7420313809195758138">Menampilkan konteks item sebelum informasi lain (misalnya namanya).</translation>
+<translation id="7420313809195758138">Tampilkan konteks item sebelum informasi lain (mis. nama).</translation>
 <translation id="7425395583360211003">kembali</translation>
 <translation id="7434509671034404296">Pengembang</translation>
 <translation id="7439060726180460871">Direktori</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 7441f191..dd74f73 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -610,7 +610,7 @@
 <translation id="739763518212184081">ಹಿಂದಿನ ಸಾಲು</translation>
 <translation id="7400575256015741911">ಕಾಗುಣಿತ ತಪ್ಪು ಕಂಡುಬಂದಿಲ್ಲ</translation>
 <translation id="7408482676469142474">tbl</translation>
-<translation id="7420313809195758138">ಇತರ ಮಾಹಿತಿಯ ಮೊದಲು ಐಟಂನ ಸಂದರ್ಭವನ್ನು ಪ್ರದರ್ಶಿಸಿ (ಉದಾ. ಅದರ ಹೆಸರು).</translation>
+<translation id="7420313809195758138">ಇತರ ಮಾಹಿತಿಯ ಮೊದಲು (ಉದಾ. ಅದರ ಹೆಸರು) ಐಟಂನ ಸಂದರ್ಭವನ್ನು ಪ್ರದರ್ಶಿಸಿ .</translation>
 <translation id="7425395583360211003">ರಿಟರ್ನ್</translation>
 <translation id="7434509671034404296">ಡೆವಲಪರ್</translation>
 <translation id="7439060726180460871">ಡೈರೆಕ್ಟರಿ</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 292d05d..950a47540 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
@@ -610,7 +610,7 @@
 <translation id="739763518212184081">이전 행</translation>
 <translation id="7400575256015741911">철자 오류 발견됨</translation>
 <translation id="7408482676469142474">tbl</translation>
-<translation id="7420313809195758138">이름 등의 다른 정보를 표시하기 전에 항목 컨텍스트 표시</translation>
+<translation id="7420313809195758138">항목의 이름과 같은 정보를 표시하기 전에 컨텍스트를 먼저 표시</translation>
 <translation id="7425395583360211003">리턴</translation>
 <translation id="7434509671034404296">개발자 정보</translation>
 <translation id="7439060726180460871">디렉토리</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 3a25330c..9cb3a25 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
@@ -610,6 +610,7 @@
 <translation id="739763518212184081">Rândul anterior</translation>
 <translation id="7400575256015741911">Greșeală de scriere detectată</translation>
 <translation id="7408482676469142474">tabel</translation>
+<translation id="7420313809195758138">Afișează contextul unui element înaintea altor informații (cum ar fi numele său).</translation>
 <translation id="7425395583360211003">sfârșit de rând</translation>
 <translation id="7434509671034404296">Dezvoltator</translation>
 <translation id="7439060726180460871">Catalog</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 66f767f..21101ce3 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
@@ -610,6 +610,7 @@
 <translation id="739763518212184081">Önceki Satır</translation>
 <translation id="7400575256015741911">Yazım hatası algılandı</translation>
 <translation id="7408482676469142474">tbl</translation>
+<translation id="7420313809195758138">Bir öğenin bağlamını diğer bilgilerden (örneğin, öğenin adı) önce görüntüleyin.</translation>
 <translation id="7425395583360211003">satır başı</translation>
 <translation id="7434509671034404296">Geliştirici</translation>
 <translation id="7439060726180460871">Dizin</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 756f3f0b..42547ec 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
@@ -610,7 +610,7 @@
 <translation id="739763518212184081">上一行</translation>
 <translation id="7400575256015741911">检测到拼写错误</translation>
 <translation id="7408482676469142474">表格标记</translation>
-<translation id="7420313809195758138">先显示内容的上下文,然后再显示其他信息(例如名称)。</translation>
+<translation id="7420313809195758138">先显示内容的上下文,再显示其他信息(例如名称)。</translation>
 <translation id="7425395583360211003">回车</translation>
 <translation id="7434509671034404296">开发者</translation>
 <translation id="7439060726180460871">目录</translation>
diff --git a/chrome/browser/resources/chromeos/login/saml_interstitial.html b/chrome/browser/resources/chromeos/login/saml_interstitial.html
index 13f8444..6a2ed0e 100644
--- a/chrome/browser/resources/chromeos/login/saml_interstitial.html
+++ b/chrome/browser/resources/chromeos/login/saml_interstitial.html
@@ -11,6 +11,12 @@
                          will be shown. Its value is set automatically when
                          'domain' is set, and is true as long as 'domain' is
                          not empty.
+  'changeAccountLink' - A reference to the change account link so that it can be
+                        used in testing.
+
+Functions:
+  'submit' - Submits the saml interstitial form for tests. Equivalent to the
+             user clicking next.
 
 Events:
   'samlPageNextClicked' - Fired when the "Next" button is clicked indicating
@@ -45,9 +51,11 @@
       <!-- This message contains a <strong> tag inside. -->
       <html-echo id="message" hidden$="[[!showDomainMessages_]]"></html-echo>
 
-      <gaia-input-form on-submit="onSamlPageNextClicked_"
+      <gaia-input-form id="samlInterstitialForm"
+                       on-submit="onSamlPageNextClicked_"
                        i18n-values="button-text:samlInterstitialNextBtn">
-        <gaia-button type="link" on-tap="onSamlPageChangeAccountClicked_"
+        <gaia-button id="changeAccountLink" type="link"
+                     on-tap="onSamlPageChangeAccountClicked_"
                      i18n-content="samlInterstitialChangeAccountLink">
         </gaia-button>
       </gaia-input-form>
diff --git a/chrome/browser/resources/chromeos/login/saml_interstitial.js b/chrome/browser/resources/chromeos/login/saml_interstitial.js
index eb7d0636..4f1deba 100644
--- a/chrome/browser/resources/chromeos/login/saml_interstitial.js
+++ b/chrome/browser/resources/chromeos/login/saml_interstitial.js
@@ -6,6 +6,10 @@
   is: 'saml-interstitial',
 
   properties: {
+    changeAccountLink: {
+      type: HTMLElement,
+    },
+
     domain: {
       type: String,
       observer: 'onDomainChanged_'
@@ -14,7 +18,13 @@
     showDomainMessages_: {
       type: Boolean,
       value: false
-    },
+    }
+  },
+  ready: function() {
+    this.changeAccountLink = this.$.changeAccountLink;
+  },
+  submit: function() {
+    this.$.samlInterstitialForm.submit();
   },
   onDomainChanged_: function() {
     this.$.message.content =
@@ -26,5 +36,5 @@
   },
   onSamlPageChangeAccountClicked_: function() {
     this.fire('samlPageChangeAccountClicked');
-  },
+  }
 });
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
index 8488b3e9..5ceacb4 100644
--- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
+++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
@@ -576,6 +576,8 @@
           $('saml-interstitial').domain = data.enterpriseDomain;
           if (this.loading)
             this.loading = false;
+          // This event is for the browser tests.
+          $('saml-interstitial').fire('samlInterstitialPageReady');
           break;
       }
       this.updateControlsState();
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css
index d876977..5e0f42e 100644
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css
+++ b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css
@@ -198,6 +198,10 @@
 }
 
 #sink-search-input {
+  --paper-input-container: {
+    margin: 8px 0;
+    padding: 0;
+  };
   --paper-input-container-focus-color: rgb(33, 150, 243);
   --paper-input-container-input: {
     font-size: 12px;
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
index 370f41fd..41ab035 100644
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
+++ b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
@@ -148,7 +148,7 @@
           <div class="sink-content">
             <div>
               <paper-icon-button id="sink-search-icon" icon="search"
-                  on-tap="searchButtonClick_">
+                  on-tap="searchButtonClick_" title="[[searchButtonTitle_]]">
               </paper-icon-button>
             </div>
             <div id="search-input-container">
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js
index ca4f811..f851e5e 100644
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js
+++ b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js
@@ -328,6 +328,18 @@
     },
 
     /**
+     * Title text for the search button.
+     * @private {string}
+     */
+    searchButtonTitle_: {
+      type: String,
+      readOnly: true,
+      value: function() {
+        return loadTimeData.getString('searchButtonTitle');
+      },
+    },
+
+    /**
      * Label text for the user search input.
      * @private {string}
      */
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html
index 11e5804..30cd1084 100644
--- a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html
+++ b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html
@@ -9,7 +9,7 @@
     <paper-toolbar id="header-toolbar" class$="[[view]]">
       <div id="back-button-container">
         <paper-icon-button id="back-button" icon="[[arrowDropIcon_]]"
-            on-tap="onBackButtonClick_"
+            on-tap="onBackButtonClick_" title="[[backButtonTitle_]]"
             hidden$="[[computeBackButtonHidden_(view)]]">
         </paper-icon-button>
       </div>
@@ -19,13 +19,14 @@
         <div id="arrow-drop-container">
           <paper-icon-button icon="[[computeArrowDropIcon_(view)]]"
               id="arrow-drop-icon" disabled$="[[arrowDropIconDisabled]]"
-              hidden$="[[computeArrowDropIconHidden_(view)]]">
+              hidden$="[[computeArrowDropIconHidden_(view)]]"
+              title="[[dropDownButtonTitle_]]">
           </paper-icon-button>
         </div>
       </div>
       <div id="close-button-container">
         <paper-icon-button icon="close" id="close-button"
-            on-tap="onCloseButtonClick_">
+            on-tap="onCloseButtonClick_" title="[[closeButtonTitle_]]">
         </paper-icon-button>
       </div>
       <template is="dom-if" if="[[showEmail]]">
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js
index 0eb1e45d..2815bf5 100644
--- a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js
+++ b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js
@@ -27,6 +27,42 @@
     },
 
     /**
+     * Title text for the back button.
+     * @private {string}
+     */
+    backButtonTitle_: {
+      type: String,
+      readOnly: true,
+      value: function() {
+        return loadTimeData.getString('backButtonTitle');
+      },
+    },
+
+    /**
+     * Title text for the close button.
+     * @private {string}
+     */
+    closeButtonTitle_: {
+      type: String,
+      readOnly: true,
+      value: function() {
+        return loadTimeData.getString('closeButtonTitle');
+      },
+    },
+
+    /**
+     * Title text for the drop down button.
+     * @private {string}
+     */
+    dropDownButtonTitle_: {
+      type: String,
+      readOnly: true,
+      value: function() {
+        return loadTimeData.getString('dropDownButtonTitle');
+      },
+    },
+
+    /**
      * The header text to show.
      * @type {string}
      */
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
index 39ce67b..10a3d00c 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.html
@@ -1,8 +1,24 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
+<link rel="import" href="chrome://resources/html/assert.html">
+<link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://md-settings/certificate_manager_page/certificate_entry.html">
+<link rel="import" href="chrome://md-settings/certificate_manager_page/certificates_browser_proxy.html">
+<link rel="import" href="chrome://md-settings/i18n_setup.html">
+<link rel="import" href="chrome://md-settings/settings_shared_css.html">
 
 <dom-module id="settings-certificate-list">
   <template>
+    <style include="settings-shared">
+      .settings-box {
+        margin-bottom: 24px;
+      }
+    </style>
+    <div class="settings-box first">
+      <span class="start">[[getDescription_(certificateType)]]</span>
+      <paper-button on-tap="onImportTap_"
+          hidden="[[!canImport_(certificateType)]]">
+        $i18n{certificateManagerImport}</paper-button>
+    </div>
     <template is="dom-repeat" items="[[certificates]]">
       <settings-certificate-entry model="[[item]]"
           certificate-type="[[certificateType]]">
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
index 913ba18..94721d3d 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_list.js
@@ -19,4 +19,86 @@
     /** @type {!settings.CertificateType} */
     certificateType: String,
   },
+
+  behaviors: [I18nBehavior],
+
+  /**
+   * @return {string}
+   * @private
+   */
+  getDescription_: function() {
+    switch (this.certificateType) {
+      case settings.CertificateType.PERSONAL:
+        return this.i18n('certificateManagerYourCertificatesDescription');
+      case settings.CertificateType.SERVER:
+        return this.i18n('certificateManagerServersDescription');
+      case settings.CertificateType.CA:
+        return this.i18n('certificateManagerAuthoritiesDescription');
+      case settings.CertificateType.OTHER:
+        return this.i18n('certificateManagerOthersDescription');
+    }
+
+    assertNotReached();
+  },
+
+  /**
+   * @return {boolean}
+   * @private
+   */
+  canImport_: function() {
+    return this.certificateType != settings.CertificateType.OTHER;
+  },
+
+  /**
+   * Handles a rejected Promise returned from |browserProxy_|.
+   * @param {null|!CertificatesError|!CertificatesImportError} error
+   * @private
+   */
+  onRejected_: function(error) {
+    if (error === null) {
+      // Nothing to do here. Null indicates that the user clicked "cancel" on
+      // a native file chooser dialog.
+      return;
+    }
+
+    // Otherwise propagate the error to the parents, such that a dialog
+    // displaying the error will be shown.
+    this.fire('certificates-error', error);
+  },
+
+
+  /** @private */
+  dispatchImportActionEvent_: function() {
+    this.fire(
+        settings.CertificateActionEvent,
+        /** @type {!CertificateActionEventDetail} */ ({
+          action: settings.CertificateAction.IMPORT,
+          subnode: null,
+          certificateType: this.certificateType,
+        }));
+  },
+
+  /** @private */
+  onImportTap_: function() {
+    var browserProxy = settings.CertificatesBrowserProxyImpl.getInstance();
+    if (this.certificateType == settings.CertificateType.PERSONAL) {
+      browserProxy.importPersonalCertificate(false).then(
+          function(showPasswordPrompt) {
+            if (showPasswordPrompt)
+              this.dispatchImportActionEvent_();
+          }.bind(this),
+          this.onRejected_.bind(this));
+    } else if (this.certificateType == settings.CertificateType.CA) {
+      browserProxy.importCaCertificate().then(
+          function(certificateName) {
+            this.dispatchImportActionEvent_();
+          }.bind(this),
+          this.onRejected_.bind(this));
+    } else if (this.certificateType == settings.CertificateType.SERVER) {
+      browserProxy.importServerCertificate().catch(
+          this.onRejected_.bind(this));
+    } else {
+      assertNotReached();
+    }
+  },
 });
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.html b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.html
index 506d1c6..5e3d0ee 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.html
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.html
@@ -13,9 +13,17 @@
 <dom-module id="settings-certificate-manager-page">
   <template>
     <style>
-      /* TODO(dpapad): Find exact color value to use. */
       :host {
-        --paper-tabs-selection-bar-color: blue;
+        --paper-tabs-selection-bar-color: var(--paper-blue-500);
+      }
+
+      paper-tabs {
+        height: 40px;
+        margin-bottom: 24px;
+      }
+
+      paper-tab {
+        text-transform: uppercase;
       }
     </style>
 
@@ -43,7 +51,7 @@
       </settings-certificates-error-dialog>
     </template>
 
-    <paper-tabs selected="{{selected}}">
+    <paper-tabs noink selected="{{selected}}">
       <paper-tab>$i18n{certificateManagerYourCertificates}</paper-tab>
       <paper-tab>$i18n{certificateManagerServers}</paper-tab>
       <paper-tab>$i18n{certificateManagerAuthorities}</paper-tab>
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js
index 7614bd5..1ab7696 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_manager_page.js
@@ -103,39 +103,59 @@
   /** @override */
   ready: function() {
     this.addEventListener(settings.CertificateActionEvent, function(event) {
-      this.dialogModel_ = event.detail.subnode;
-      this.dialogModelCertificateType_ = event.detail.certificateType;
-      if (event.detail.action == settings.CertificateAction.EDIT) {
-        this.openDialog_(
-            'settings-ca-trust-edit-dialog',
-            'showCaTrustEditDialog_');
-      } else if (event.detail.action == settings.CertificateAction.DELETE) {
-        this.openDialog_(
-            'settings-certificate-delete-confirmation-dialog',
-            'showDeleteConfirmationDialog_');
-      } else if (event.detail.action ==
-          settings.CertificateAction.EXPORT_PERSONAL) {
-        this.openDialog_(
-            'settings-certificate-password-encryption-dialog',
-            'showPasswordEncryptionDialog_');
-      } else if (event.detail.action ==
-          settings.CertificateAction.IMPORT_PERSONAL) {
-        this.openDialog_(
-            'settings-certificate-password-decryption-dialog',
-            'showPasswordDecryptionDialog_');
-      } else if (event.detail.action == settings.CertificateAction.IMPORT_CA) {
-        // TODO(dpapad): Implement this.
+      if (event.detail.action == settings.CertificateAction.IMPORT) {
+        this.handleImportAction_(event.detail);
+      } else {
+        this.dialogModel_ = event.detail.subnode;
+        this.dialogModelCertificateType_ = event.detail.certificateType;
+        if (event.detail.action == settings.CertificateAction.EDIT) {
+          this.openDialog_(
+              'settings-ca-trust-edit-dialog',
+              'showCaTrustEditDialog_');
+        } else if (event.detail.action == settings.CertificateAction.DELETE) {
+          this.openDialog_(
+              'settings-certificate-delete-confirmation-dialog',
+              'showDeleteConfirmationDialog_');
+        } else if (event.detail.action ==
+            settings.CertificateAction.EXPORT_PERSONAL) {
+          this.openDialog_(
+              'settings-certificate-password-encryption-dialog',
+              'showPasswordEncryptionDialog_');
+        }
       }
+
+      event.stopPropagation();
+    }.bind(this));
+
+    this.addEventListener('certificates-error', function(event) {
+      this.errorDialogModel_ = event.detail;
+      this.openDialog_(
+          'settings-certificates-error-dialog',
+          'showErrorDialog_');
       event.stopPropagation();
     }.bind(this));
   },
 
   /**
-   * Opens a dialog and registers listeners for
-   *  1) Removing the dialog from the DOM once is closed.
-   *  2) Showing an error dialog if necessary.
-   * The listeners are destroyed when the dialog is removed (because of
-   * 'restamp');
+   * Handles a |CertificateAction.IMPORT| for cases where a dialog needs to be
+   * displayed to the user.
+   * @param {!CertificateActionEventDetail} eventdetail
+   * @private
+   */
+  handleImportAction_: function(actionEvent) {
+    if (actionEvent.certificateType == settings.CertificateType.PERSONAL) {
+      this.openDialog_(
+          'settings-certificate-password-decryption-dialog',
+          'showPasswordDecryptionDialog_');
+    } else if (actionEvent.certificateType == settings.CertificateType.CA) {
+      // TODO(dpapad): Implement this.
+    }
+  },
+
+  /**
+   * Opens a dialog and registers a listener for removing the dialog from the
+   * DOM once is closed. The listener is destroyed when the dialog is removed
+   * (because of 'restamp').
    *
    * @param {string} dialogTagName The tag name of the dialog to be shown.
    * @param {string} domIfBooleanName The name of the boolean variable
@@ -149,12 +169,6 @@
       dialog.addEventListener('iron-overlay-closed', function() {
         this.set(domIfBooleanName, false);
       }.bind(this));
-      dialog.addEventListener('certificates-error', function(event) {
-        this.errorDialogModel_ = event.detail;
-        this.openDialog_(
-            'settings-certificates-error-dialog',
-            'showErrorDialog_');
-      }.bind(this));
     }.bind(this));
   },
 });
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.html b/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.html
index 031b0d12..d8bf8693 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.html
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.html
@@ -54,10 +54,6 @@
             <paper-item id="export" on-tap="onExportTap_">
               $i18n{certificateManagerExport}
             </paper-item>
-            <paper-item hidden$="[[!canImport_(certificateType)]]"
-                on-tap="onImportTap_">
-              $i18n{certificateManagerImport}
-            </paper-item>
             <paper-item id="delete" hidden$="[[model.readonly]]"
                 on-tap="onDeleteTap_">
               $i18n{certificateManagerDelete}
diff --git a/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.js b/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.js
index 07c2ab9..b1340bc 100644
--- a/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.js
+++ b/chrome/browser/resources/settings/certificate_manager_page/certificate_subentry.js
@@ -12,7 +12,7 @@
  * component.
  * @typedef {{
  *   action: !settings.CertificateAction,
- *   subnode: !CertificateSubnode,
+ *   subnode: ?CertificateSubnode,
  *   certificateType: !settings.CertificateType
  * }}
  */
@@ -27,8 +27,7 @@
     DELETE: 0,
     EDIT: 1,
     EXPORT_PERSONAL: 2,
-    IMPORT_CA: 3,
-    IMPORT_PERSONAL: 4,
+    IMPORT: 3,
   };
 
   /**
@@ -81,7 +80,7 @@
   /**
    * Handles the case where a call to the browser resulted in a rejected
    * promise.
-   * @param {null|!CertificatesError|!CertificatesImportError} error
+   * @param {?CertificatesError} error
    * @private
    */
   onRejected_: function(error) {
@@ -141,32 +140,6 @@
     }
   },
 
-  /** @private */
-  onImportTap_: function() {
-    this.closePopupMenu_();
-    if (this.certificateType == settings.CertificateType.PERSONAL) {
-      // TODO(dpapad): Figure out when to pass true (ChromeOS?).
-      this.browserProxy_.importPersonalCertificate(false).then(
-          function(showPasswordPrompt) {
-            if (showPasswordPrompt) {
-              this.dispatchCertificateActionEvent_(
-                  settings.CertificateAction.IMPORT_PERSONAL);
-            }
-          }.bind(this),
-          this.onRejected_.bind(this));
-    } else if (this.certificateType == settings.CertificateType.CA) {
-      this.browserProxy_.importCaCertificate().then(
-          function(certificateName) {
-            this.dispatchCertificateActionEvent_(
-                settings.CertificateAction.IMPORT_CA);
-          }.bind(this),
-          this.onRejected_.bind(this));
-    } else if (this.certificateType == settings.CertificateType.SERVER) {
-      this.browserProxy_.importServerCertificate().catch(
-          this.onRejected_.bind(this));
-    }
-  },
-
   /**
    * @param {string} certificateType The type of this certificate.
    * @return {boolean} Whether the certificate can be edited.
@@ -176,15 +149,6 @@
     return this.certificateType == settings.CertificateType.CA;
   },
 
-  /**
-   * @param {string} certificateType The type of this certificate.
-   * @return {boolean} Whether a certificate can be imported.
-   * @private
-   */
-  canImport_: function(certificateType) {
-    return this.certificateType != settings.CertificateType.OTHER;
-  },
-
   /** @private */
   closePopupMenu_: function() {
     this.$$('iron-dropdown').close();
diff --git a/chrome/browser/resources/settings/languages_page/edit_dictionary_page.css b/chrome/browser/resources/settings/languages_page/edit_dictionary_page.css
deleted file mode 100644
index 306a9d2..0000000
--- a/chrome/browser/resources/settings/languages_page/edit_dictionary_page.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-:host {
-  display: flex;
-  flex-direction: column;
-}
-
-#addWordRow {
-  display: flex;
-}
-
-#newWord {
-  flex: 1;
-}
-
-iron-list {
-  /* TODO(michaelpg): Size to fit the viewport. */
-  height: 300px;
-}
-
-iron-list .word {
-  flex: 1;
-}
diff --git a/chrome/browser/resources/settings/languages_page/edit_dictionary_page.html b/chrome/browser/resources/settings/languages_page/edit_dictionary_page.html
index da281bb..e983d36 100644
--- a/chrome/browser/resources/settings/languages_page/edit_dictionary_page.html
+++ b/chrome/browser/resources/settings/languages_page/edit_dictionary_page.html
@@ -8,9 +8,30 @@
 <link rel="import" href="chrome://md-settings/settings_shared_css.html">
 
 <dom-module id="settings-edit-dictionary-page">
-  <link rel="import" type="css" href="edit_dictionary_page.css">
   <template>
-    <style include="settings-shared"></style>
+    <style include="settings-shared">
+      :host {
+        display: flex;
+        flex-direction: column;
+      }
+
+      #addWordRow {
+        display: flex;
+      }
+
+      #newWord {
+        flex: 1;
+      }
+
+      iron-list {
+        /* TODO(michaelpg): Size to fit the viewport. */
+        height: 300px;
+      }
+
+      iron-list .word {
+        flex: 1;
+      }
+    </style>
     <div class="settings-box block">
       <div id="addWordRow">
         <iron-a11y-keys id="keys" keys="enter esc"
diff --git a/chrome/browser/resources/settings/languages_page/language_detail_page.css b/chrome/browser/resources/settings/languages_page/language_detail_page.css
deleted file mode 100644
index 7d67d37..0000000
--- a/chrome/browser/resources/settings/languages_page/language_detail_page.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-label {
-  align-items: center;
-  display: flex;
-}
-
-label > *:not(:first-child) {
-  -webkit-margin-start: 5px;
-}
-
-label > span {
-  line-height: 42px;
-}
-
-label paper-button {
-  line-height: initial;
-}
diff --git a/chrome/browser/resources/settings/languages_page/language_detail_page.html b/chrome/browser/resources/settings/languages_page/language_detail_page.html
index 084effed..bb2dccd 100644
--- a/chrome/browser/resources/settings/languages_page/language_detail_page.html
+++ b/chrome/browser/resources/settings/languages_page/language_detail_page.html
@@ -12,9 +12,25 @@
 </if>
 
 <dom-module id="settings-language-detail-page">
-  <link rel="import" type="css" href="language_detail_page.css">
   <template>
-    <style include="settings-shared"></style>
+    <style include="settings-shared">
+      label {
+        align-items: center;
+        display: flex;
+      }
+
+      label > *:not(:first-child) {
+        -webkit-margin-start: 5px;
+      }
+
+      label > span {
+        line-height: 42px;
+      }
+
+      label paper-button {
+        line-height: initial;
+      }
+    </style>
     <settings-languages languages="{{languages}}"></settings-languages>
 <if expr="chromeos or is_win">
     <div id="languageSettings">
diff --git a/chrome/browser/resources/settings/languages_page/manage_languages_page.css b/chrome/browser/resources/settings/languages_page/manage_languages_page.css
deleted file mode 100644
index 91f87bf..0000000
--- a/chrome/browser/resources/settings/languages_page/manage_languages_page.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-iron-list {
-  height: 300px;
-}
diff --git a/chrome/browser/resources/settings/languages_page/manage_languages_page.html b/chrome/browser/resources/settings/languages_page/manage_languages_page.html
index 7a08ec11..cf58c00 100644
--- a/chrome/browser/resources/settings/languages_page/manage_languages_page.html
+++ b/chrome/browser/resources/settings/languages_page/manage_languages_page.html
@@ -10,9 +10,12 @@
 <link rel="import" href="languages.html">
 
 <dom-module id="settings-manage-languages-page">
-  <link rel="import" type="css" href="manage_languages_page.css">
   <template>
-    <style include="settings-shared"></style>
+    <style include="settings-shared">
+      iron-list {
+        height: 300px;
+      }
+    </style>
     <settings-languages languages="{{languages}}"></settings-languages>
     <div class="settings-box first content">
       <div class="start">
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd
index e36c423..fdc6a7e 100644
--- a/chrome/browser/resources/settings/settings_resources.grd
+++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -374,18 +374,12 @@
                  type="chrome_html"
                  flattenhtml="true"
                  allowexternalscript="true" />
-      <structure name="IDR_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_PAGE_CSS"
-                 file="languages_page/manage_languages_page.css"
-                 type="chrome_html" />
       <structure name="IDR_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_PAGE_HTML"
                  file="languages_page/manage_languages_page.html"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_PAGE_JS"
                  file="languages_page/manage_languages_page.js"
                  type="chrome_html" />
-      <structure name="IDR_SETTINGS_LANGUAGES_LANGUAGE_DETAIL_PAGE_CSS"
-                 file="languages_page/language_detail_page.css"
-                 type="chrome_html" />
       <structure name="IDR_SETTINGS_LANGUAGES_LANGUAGE_DETAIL_PAGE_HTML"
                  file="languages_page/language_detail_page.html"
                  type="chrome_html"
@@ -397,9 +391,6 @@
                  flattenhtml="true"
                  allowexternalscript="true" />
       <if expr="not is_macosx">
-        <structure name="IDR_SETTINGS_LANGUAGES_EDIT_DICTIONARY_PAGE_CSS"
-                   file="languages_page/edit_dictionary_page.css"
-                   type="chrome_html" />
         <structure name="IDR_SETTINGS_LANGUAGES_EDIT_DICTIONARY_PAGE_HTML"
                    file="languages_page/edit_dictionary_page.html"
                    type="chrome_html" />
diff --git a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
index 829fd6d..aef3e54 100644
--- a/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/environment_data_collection_win.cc
@@ -12,6 +12,7 @@
 #include "base/i18n/case_conversion.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_util.h"
diff --git a/chrome/browser/supervised_user/DEPS b/chrome/browser/supervised_user/DEPS
index e2928d96..42a8243 100644
--- a/chrome/browser/supervised_user/DEPS
+++ b/chrome/browser/supervised_user/DEPS
@@ -1,3 +1,3 @@
 include_rules = [
-"+components/user_manager",
+  "+components/user_manager",
 ]
diff --git a/chrome/browser/supervised_user/chromeos/DEPS b/chrome/browser/supervised_user/chromeos/DEPS
deleted file mode 100644
index 42a8243..0000000
--- a/chrome/browser/supervised_user/chromeos/DEPS
+++ /dev/null
@@ -1,3 +0,0 @@
-include_rules = [
-  "+components/user_manager",
-]
diff --git a/chrome/browser/sync/DEPS b/chrome/browser/sync/DEPS
index 96849fc..6f0afec 100644
--- a/chrome/browser/sync/DEPS
+++ b/chrome/browser/sync/DEPS
@@ -1,23 +1,8 @@
 include_rules = [
+  "+components/invalidation",
   "+components/sync_driver",
   "+components/sync_sessions",
   "+components/wifi_sync",
-
-  # Used by tests.
   "+google/cacheinvalidation",
-
-  # For files not in a subdirectory.
   "+sync/internal_api/public",
-  "+sync/js",
-
-  # TODO(tim): Remove everything below. Bug 131130.
-  "+sync/util/cryptographer.h",
-  #  Used by tests.
-  "+sync/syncable",
-  # Used by autofill tests, which should use the public sync API instead.
-  "+sync/test/engine/test_id_factory.h",
-  # TODO(zea): Needed for bookmark title comparison.
-  "+sync/internal_api/syncapi_internal.h",
-
-  "+components/invalidation",
 ]
diff --git a/chrome/browser/sync/glue/DEPS b/chrome/browser/sync/glue/DEPS
index 38aa483..fa2f750 100644
--- a/chrome/browser/sync/glue/DEPS
+++ b/chrome/browser/sync/glue/DEPS
@@ -2,16 +2,5 @@
   "-sync/engine",
   "-sync/sessions",
   "-sync/syncable",
-
-  "+sync/internal_api/public",
   "+sync/util",
-  "+sync/test",
-
-  # TODO(zea): SessionModelAssociator shouldn't need this.
-  # TODO(sync): Also need to fix crbug.com/123674.
-  "+sync/syncable",
-
-  # TODO(tim): This shouldn't be needed.
-  "+sync/util/cryptographer.h"
-
 ]
diff --git a/chrome/browser/sync/test/DEPS b/chrome/browser/sync/test/DEPS
new file mode 100644
index 0000000..7f0e9ba
--- /dev/null
+++ b/chrome/browser/sync/test/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+sync/syncable",
+]
diff --git a/chrome/browser/sync/test/integration/apps_helper.cc b/chrome/browser/sync/test/integration/apps_helper.cc
index 2b76b4d8..43569401 100644
--- a/chrome/browser/sync/test/integration/apps_helper.cc
+++ b/chrome/browser/sync/test/integration/apps_helper.cc
@@ -35,16 +35,16 @@
 
 namespace apps_helper {
 
-bool HasSameAppsAsVerifier(int index) {
-  return SyncAppHelper::GetInstance()->AppStatesMatch(
-      test()->GetProfile(index), test()->verifier());
+bool HasSameApps(Profile* profile1, Profile* profile2) {
+  return SyncAppHelper::GetInstance()->AppStatesMatch(profile1, profile2);
 }
 
-bool AllProfilesHaveSameAppsAsVerifier() {
-  for (int i = 0; i < test()->num_clients(); ++i) {
-    if (!HasSameAppsAsVerifier(i)) {
-      DVLOG(1) << "Profile " << i << " doesn't have the same apps as the"
-                                     " verifier profile.";
+bool AllProfilesHaveSameApps() {
+  const auto& profiles = test()->GetAllProfiles();
+  for (auto* profile : profiles) {
+    if (profile != profiles.front() &&
+        !HasSameApps(profiles.front(), profile)) {
+      DVLOG(1) << "Profiles apps do not match.";
       return false;
     }
   }
@@ -66,9 +66,11 @@
 }
 
 std::string InstallAppForAllProfiles(int index) {
-  for (int i = 0; i < test()->num_clients(); ++i)
-    InstallApp(test()->GetProfile(i), index);
-  return InstallApp(test()->verifier(), index);
+  std::string extension_id;
+  for (auto* profile : test()->GetAllProfiles()) {
+    extension_id = InstallApp(profile, index);
+  }
+  return extension_id;
 }
 
 void UninstallApp(Profile* profile, int index) {
@@ -86,6 +88,11 @@
       profile, CreateFakeAppName(index));
 }
 
+bool IsAppEnabled(Profile* profile, int index) {
+  return SyncExtensionHelper::GetInstance()->IsExtensionEnabled(
+      profile, CreateFakeAppName(index));
+}
+
 void IncognitoEnableApp(Profile* profile, int index) {
   return SyncExtensionHelper::GetInstance()->IncognitoEnableExtension(
       profile, CreateFakeAppName(index));
@@ -96,6 +103,11 @@
       profile, CreateFakeAppName(index));
 }
 
+bool IsIncognitoEnabled(Profile* profile, int index) {
+  return SyncExtensionHelper::GetInstance()->IsIncognitoEnabled(
+      profile, CreateFakeAppName(index));
+}
+
 void InstallAppsPendingForSync(Profile* profile) {
   SyncExtensionHelper::GetInstance()->InstallExtensionsPendingForSync(profile);
 }
diff --git a/chrome/browser/sync/test/integration/apps_helper.h b/chrome/browser/sync/test/integration/apps_helper.h
index 27567e3..1fba033 100644
--- a/chrome/browser/sync/test/integration/apps_helper.h
+++ b/chrome/browser/sync/test/integration/apps_helper.h
@@ -13,13 +13,13 @@
 
 namespace apps_helper {
 
-// Returns true iff the profile with index |index| has the same apps (hosted,
-// legacy packaged and platform) as the verifier.
-bool HasSameAppsAsVerifier(int index) WARN_UNUSED_RESULT;
+// Returns true iff |profile1| has same apps (hosted, legacy packaged and
+// platform) as |profile2|.
+bool HasSameApps(Profile* profile1, Profile* profile2);
 
 // Returns true iff all existing profiles have the same apps (hosted,
-// legacy packaged and platform) as the verifier.
-bool AllProfilesHaveSameAppsAsVerifier() WARN_UNUSED_RESULT;
+// legacy packaged and platform).
+bool AllProfilesHaveSameApps() WARN_UNUSED_RESULT;
 
 // Installs the app for the given index to |profile|, and returns the extension
 // ID of the new app.
@@ -47,12 +47,19 @@
 // Disables the app for the given index on |profile|.
 void DisableApp(Profile* profile, int index);
 
+// Returns true if the app with index |index| is enabled on |profile|.
+bool IsAppEnabled(Profile* profile, int index);
+
 // Enables the app for the given index in incognito mode on |profile|.
 void IncognitoEnableApp(Profile* profile, int index);
 
 // Disables the app for the given index in incognito mode on |profile|.
 void IncognitoDisableApp(Profile* profile, int index);
 
+// Returns true if the app with index |index| is enabled in incognito mode on
+// |profile|.
+bool IsIncognitoEnabled(Profile* profile, int index);
+
 // Gets the page ordinal value for the application at the given index on
 // |profile|.
 syncer::StringOrdinal GetPageOrdinalForApp(Profile* profile, int app_index);
diff --git a/chrome/browser/sync/test/integration/autofill_helper.cc b/chrome/browser/sync/test/integration/autofill_helper.cc
index b02a42c8..0fe79fd 100644
--- a/chrome/browser/sync/test/integration/autofill_helper.cc
+++ b/chrome/browser/sync/test/integration/autofill_helper.cc
@@ -315,7 +315,8 @@
 }
 
 void AddProfile(int profile, const AutofillProfile& autofill_profile) {
-  const std::vector<AutofillProfile*>& all_profiles = GetAllProfiles(profile);
+  const std::vector<AutofillProfile*>& all_profiles =
+      GetAllAutoFillProfiles(profile);
   std::vector<AutofillProfile> autofill_profiles;
   for (size_t i = 0; i < all_profiles.size(); ++i)
     autofill_profiles.push_back(*all_profiles[i]);
@@ -324,7 +325,8 @@
 }
 
 void RemoveProfile(int profile, const std::string& guid) {
-  const std::vector<AutofillProfile*>& all_profiles = GetAllProfiles(profile);
+  const std::vector<AutofillProfile*>& all_profiles =
+      GetAllAutoFillProfiles(profile);
   std::vector<AutofillProfile> autofill_profiles;
   for (size_t i = 0; i < all_profiles.size(); ++i) {
     if (all_profiles[i]->guid() != guid)
@@ -337,7 +339,8 @@
                    const std::string& guid,
                    const AutofillType& type,
                    const base::string16& value) {
-  const std::vector<AutofillProfile*>& all_profiles = GetAllProfiles(profile);
+  const std::vector<AutofillProfile*>& all_profiles =
+      GetAllAutoFillProfiles(profile);
   std::vector<AutofillProfile> profiles;
   for (size_t i = 0; i < all_profiles.size(); ++i) {
     profiles.push_back(*all_profiles[i]);
@@ -347,7 +350,7 @@
   autofill_helper::SetProfiles(profile, &profiles);
 }
 
-const std::vector<AutofillProfile*>& GetAllProfiles(
+const std::vector<AutofillProfile*>& GetAllAutoFillProfiles(
     int profile) {
   MockPersonalDataManagerObserver observer;
   EXPECT_CALL(observer, OnPersonalDataChanged()).
@@ -361,7 +364,7 @@
 }
 
 int GetProfileCount(int profile) {
-  return GetAllProfiles(profile).size();
+  return GetAllAutoFillProfiles(profile).size();
 }
 
 int GetKeyCount(int profile) {
@@ -409,9 +412,9 @@
 
 bool ProfilesMatch(int profile_a, int profile_b) {
   const std::vector<AutofillProfile*>& autofill_profiles_a =
-      GetAllProfiles(profile_a);
+      GetAllAutoFillProfiles(profile_a);
   const std::vector<AutofillProfile*>& autofill_profiles_b =
-      GetAllProfiles(profile_b);
+      GetAllAutoFillProfiles(profile_b);
   return ProfilesMatchImpl(
       profile_a, autofill_profiles_a, profile_b, autofill_profiles_b);
 }
diff --git a/chrome/browser/sync/test/integration/autofill_helper.h b/chrome/browser/sync/test/integration/autofill_helper.h
index 3613731..14dca507 100644
--- a/chrome/browser/sync/test/integration/autofill_helper.h
+++ b/chrome/browser/sync/test/integration/autofill_helper.h
@@ -88,7 +88,7 @@
 
 // Gets all the Autofill profiles in the PersonalDataManager of sync profile
 // |profile|.
-const std::vector<autofill::AutofillProfile*>& GetAllProfiles(
+const std::vector<autofill::AutofillProfile*>& GetAllAutoFillProfiles(
     int profile) WARN_UNUSED_RESULT;
 
 // Returns the number of autofill profiles contained by sync profile
diff --git a/chrome/browser/sync/test/integration/extensions_helper.cc b/chrome/browser/sync/test/integration/extensions_helper.cc
index 7f9a2fb..1dad8f42 100644
--- a/chrome/browser/sync/test/integration/extensions_helper.cc
+++ b/chrome/browser/sync/test/integration/extensions_helper.cc
@@ -70,9 +70,11 @@
 }
 
 std::string InstallExtensionForAllProfiles(int index) {
-  for (int i = 0; i < test()->num_clients(); ++i)
-    InstallExtension(test()->GetProfile(i), index);
-  return InstallExtension(test()->verifier(), index);
+  std::string extension_id;
+  for (auto* profile : test()->GetAllProfiles()) {
+    extension_id = InstallExtension(profile, index);
+  }
+  return extension_id;
 }
 
 void UninstallExtension(Profile* profile, int index) {
diff --git a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc
index da288ab..b89f270b 100644
--- a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc
+++ b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc
@@ -21,8 +21,8 @@
 using autofill::AutofillProfile;
 
 using autofill_helper::AllProfilesMatch;
+using autofill_helper::GetAllAutoFillProfiles;
 using autofill_helper::GetAllKeys;
-using autofill_helper::GetAllProfiles;
 using autofill_helper::GetKeyCount;
 using autofill_helper::GetProfileCount;
 using autofill_helper::RemoveKeys;
@@ -89,7 +89,7 @@
 
 void AutofillSyncPerfTest::AddProfiles(int profile, int num_profiles) {
   const std::vector<AutofillProfile*>& all_profiles =
-      GetAllProfiles(profile);
+      GetAllAutoFillProfiles(profile);
   std::vector<AutofillProfile> autofill_profiles;
   for (size_t i = 0; i < all_profiles.size(); ++i) {
     autofill_profiles.push_back(*all_profiles[i]);
@@ -102,7 +102,7 @@
 
 void AutofillSyncPerfTest::UpdateProfiles(int profile) {
   const std::vector<AutofillProfile*>& all_profiles =
-      GetAllProfiles(profile);
+      GetAllAutoFillProfiles(profile);
   std::vector<AutofillProfile> autofill_profiles;
   for (size_t i = 0; i < all_profiles.size(); ++i) {
     autofill_profiles.push_back(*all_profiles[i]);
diff --git a/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc b/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc
index 274c2a1f..efa247b 100644
--- a/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc
@@ -21,9 +21,8 @@
 
 const size_t kNumDefaultApps = 2;
 
-bool AllProfilesHaveSameAppListAsVerifier() {
-  return SyncAppListHelper::GetInstance()->
-      AllProfilesHaveSameAppListAsVerifier();
+bool AllProfilesHaveSameAppList() {
+  return SyncAppListHelper::GetInstance()->AllProfilesHaveSameAppList();
 }
 
 }  // namespace
@@ -57,7 +56,7 @@
 IN_PROC_BROWSER_TEST_F(SingleClientAppListSyncTest, AppListEmpty) {
   ASSERT_TRUE(SetupSync());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppListSyncTest, AppListSomeApps) {
@@ -74,6 +73,6 @@
   ASSERT_EQ(kNumApps + kNumDefaultApps, service->GetNumSyncItemsForTest());
 
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
 }
diff --git a/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc b/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc
index 2125f896..650f047e 100644
--- a/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc
@@ -8,7 +8,7 @@
 #include "chrome/browser/sync/test/integration/sync_test.h"
 #include "components/browser_sync/browser/profile_sync_service.h"
 
-using apps_helper::AllProfilesHaveSameAppsAsVerifier;
+using apps_helper::AllProfilesHaveSameApps;
 using apps_helper::InstallApp;
 using apps_helper::InstallPlatformApp;
 using sync_integration_test_util::AwaitCommitActivityCompletion;
@@ -26,7 +26,7 @@
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, StartWithNoApps) {
   ASSERT_TRUE(SetupSync());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, StartWithSomeLegacyApps) {
@@ -40,7 +40,7 @@
 
   ASSERT_TRUE(SetupSync());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, StartWithSomePlatformApps) {
@@ -54,7 +54,7 @@
 
   ASSERT_TRUE(SetupSync());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, InstallSomeLegacyApps) {
@@ -68,7 +68,7 @@
 
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, InstallSomePlatformApps) {
@@ -82,7 +82,7 @@
 
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
 
 IN_PROC_BROWSER_TEST_F(SingleClientAppsSyncTest, InstallSomeApps) {
@@ -104,5 +104,5 @@
 
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
 
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 }
diff --git a/chrome/browser/sync/test/integration/sync_app_list_helper.cc b/chrome/browser/sync/test/integration/sync_app_list_helper.cc
index 72c984b..487209e 100644
--- a/chrome/browser/sync/test/integration/sync_app_list_helper.cc
+++ b/chrome/browser/sync/test/integration/sync_app_list_helper.cc
@@ -39,53 +39,50 @@
     return;
   }
   test_ = test;
-
-  for (int i = 0; i < test->num_clients(); ++i) {
-    extensions::ExtensionSystem::Get(test_->GetProfile(i))
-        ->InitForRegularProfile(true);
+  for (auto* profile : test_->GetAllProfiles()) {
+    extensions::ExtensionSystem::Get(profile)->InitForRegularProfile(true);
   }
-  extensions::ExtensionSystem::Get(test_->verifier())
-      ->InitForRegularProfile(true);
 
   setup_completed_ = true;
 }
 
-bool SyncAppListHelper::AppListMatchesVerifier(Profile* profile) {
-  AppListSyncableService* service =
-      AppListSyncableServiceFactory::GetForProfile(profile);
-  AppListSyncableService* verifier =
-      AppListSyncableServiceFactory::GetForProfile(test_->verifier());
+bool SyncAppListHelper::AppListMatch(Profile* profile1, Profile* profile2) {
+  AppListSyncableService* service1 =
+      AppListSyncableServiceFactory::GetForProfile(profile1);
+  AppListSyncableService* service2 =
+      AppListSyncableServiceFactory::GetForProfile(profile2);
   // Note: sync item entries may not exist in verifier, but item lists should
   // match.
-  if (service->GetModel()->top_level_item_list()->item_count() !=
-      verifier->GetModel()->top_level_item_list()->item_count()) {
+  if (service1->GetModel()->top_level_item_list()->item_count() !=
+      service2->GetModel()->top_level_item_list()->item_count()) {
     LOG(ERROR) << "Model item count: "
-               << service->GetModel()->top_level_item_list()->item_count()
+               << service1->GetModel()->top_level_item_list()->item_count()
                << " != "
-               << verifier->GetModel()->top_level_item_list()->item_count();
+               << service2->GetModel()->top_level_item_list()->item_count();
     return false;
   }
   bool res = true;
   for (size_t i = 0;
-       i < service->GetModel()->top_level_item_list()->item_count(); ++i) {
-    AppListItem* item1 = service->GetModel()->top_level_item_list()->item_at(i);
+       i < service1->GetModel()->top_level_item_list()->item_count(); ++i) {
+    AppListItem* item1 =
+        service1->GetModel()->top_level_item_list()->item_at(i);
     AppListItem* item2 =
-        verifier->GetModel()->top_level_item_list()->item_at(i);
+        service2->GetModel()->top_level_item_list()->item_at(i);
     if (item1->CompareForTest(item2))
       continue;
 
     LOG(ERROR) << "Item(" << i << "): " << item1->ToDebugString()
                << " != " << item2->ToDebugString();
     size_t index2;
-    if (!verifier->GetModel()->top_level_item_list()->FindItemIndex(item1->id(),
+    if (!service2->GetModel()->top_level_item_list()->FindItemIndex(item1->id(),
                                                                     &index2)) {
       LOG(ERROR) << " Item(" << i << "): " << item1->ToDebugString()
-                 << " Not in verifier.";
+                 << " Not in profile2.";
     } else {
       LOG(ERROR) << " Item(" << i << "): " << item1->ToDebugString()
-                 << " Has different verifier index: " << index2;
-      item2 = verifier->GetModel()->top_level_item_list()->item_at(index2);
-      LOG(ERROR) << " Verifier Item(" << index2
+                 << " Has different profile2 index: " << index2;
+      item2 = service2->GetModel()->top_level_item_list()->item_at(index2);
+      LOG(ERROR) << " profile2 Item(" << index2
                  << "): " << item2->ToDebugString();
     }
     res = false;
@@ -93,28 +90,21 @@
   return res;
 }
 
-bool SyncAppListHelper::AllProfilesHaveSameAppListAsVerifier() {
-  bool res = true;
-  for (int i = 0; i < test_->num_clients(); ++i) {
-    if (!AppListMatchesVerifier(test_->GetProfile(i))) {
-      LOG(ERROR) << "Profile " << i
-                 << " doesn't have the same app list as the verifier profile.";
-      res = false;
-    }
-  }
-  if (!res) {
-    Profile* verifier = test_->verifier();
-    DVLOG(1) << "Verifier: "
-             << AppListSyncableServiceFactory::GetForProfile(verifier);
-    PrintAppList(test_->verifier());
-    for (int i = 0; i < test_->num_clients(); ++i) {
-      Profile* profile = test_->GetProfile(i);
-      DVLOG(1) << "Profile: " << i << ": "
+bool SyncAppListHelper::AllProfilesHaveSameAppList() {
+  const auto& profiles = test_->GetAllProfiles();
+  for (auto* profile : profiles) {
+    if (profile != profiles.front() &&
+        !AppListMatch(profiles.front(), profile)) {
+      DVLOG(1) << "Profile1: "
                << AppListSyncableServiceFactory::GetForProfile(profile);
       PrintAppList(profile);
+      DVLOG(1) << "Profile2: " <<
+          AppListSyncableServiceFactory::GetForProfile(profiles.front());
+      PrintAppList(profiles.front());
+      return false;
     }
   }
-  return res;
+  return true;
 }
 
 void SyncAppListHelper::MoveApp(Profile* profile, size_t from, size_t to) {
@@ -146,17 +136,6 @@
       folder->item_list()->item_at(index_in_folder), "");
 }
 
-void SyncAppListHelper::CopyOrdinalsToVerifier(Profile* profile,
-                                               const std::string& id) {
-  AppListSyncableService* service =
-      AppListSyncableServiceFactory::GetForProfile(profile);
-  AppListSyncableService* verifier =
-      AppListSyncableServiceFactory::GetForProfile(test_->verifier());
-  verifier->GetModel()->top_level_item_list()->SetItemPosition(
-      verifier->GetModel()->FindItem(id),
-      service->GetModel()->FindItem(id)->position());
-}
-
 void SyncAppListHelper::PrintAppList(Profile* profile) {
   AppListSyncableService* service =
       AppListSyncableServiceFactory::GetForProfile(profile);
diff --git a/chrome/browser/sync/test/integration/sync_app_list_helper.h b/chrome/browser/sync/test/integration/sync_app_list_helper.h
index cd788b25..90ec898 100644
--- a/chrome/browser/sync/test/integration/sync_app_list_helper.h
+++ b/chrome/browser/sync/test/integration/sync_app_list_helper.h
@@ -29,9 +29,8 @@
   // internal data structures.
   void SetupIfNecessary(SyncTest* test);
 
-  // Returns true iff all existing profiles have the same app list entries
-  // as the verifier.
-  bool AllProfilesHaveSameAppListAsVerifier();
+  // Returns true iff all existing profiles have the same app list entries.
+  bool AllProfilesHaveSameAppList();
 
   // Moves an app in |profile|.
   void MoveApp(Profile* profile, size_t from, size_t to);
@@ -46,9 +45,6 @@
                          size_t index_in_folder,
                          const std::string& folder_id);
 
-  // Copies ordinals for item matching |id| from |profile1| to test_->verifier.
-  void CopyOrdinalsToVerifier(Profile* profile1, const std::string& id);
-
   // Helper function for debugging, used to log the app lists on test failures.
   void PrintAppList(Profile* profile);
 
@@ -58,9 +54,9 @@
   SyncAppListHelper();
   ~SyncAppListHelper();
 
-  // Returns true iff |profile| has the same app list as |test_|->verifier()
+  // Returns true iff |profile1| has the same app list as |profile2|
   // and the app list entries all have the same state.
-  bool AppListMatchesVerifier(Profile* profile);
+  bool AppListMatch(Profile* profile1, Profile* profile2);
 
   // Helper function for debugging, logs info for an item, including the
   // contents of any folder items.
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc
index 4527584..3448e3d 100644
--- a/chrome/browser/sync/test/integration/sync_test.cc
+++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -420,6 +420,17 @@
   return profiles_[index];
 }
 
+std::vector<Profile*> SyncTest::GetAllProfiles() {
+  std::vector<Profile*> profiles;
+  if (use_verifier()) {
+    profiles.push_back(verifier());
+  }
+  for (int i = 0; i < num_clients(); ++i) {
+    profiles.push_back(GetProfile(i));
+  }
+  return profiles;
+}
+
 Browser* SyncTest::GetBrowser(int index) {
   if (browsers_.empty())
     LOG(FATAL) << "SetupClients() has not yet been called.";
diff --git a/chrome/browser/sync/test/integration/sync_test.h b/chrome/browser/sync/test/integration/sync_test.h
index c6680d87..be8b35db 100644
--- a/chrome/browser/sync/test/integration/sync_test.h
+++ b/chrome/browser/sync/test/integration/sync_test.h
@@ -130,6 +130,10 @@
   // and manages its lifetime.
   Profile* GetProfile(int index) WARN_UNUSED_RESULT;
 
+  // Returns a list of all profiles including the verifier if available. Callee
+  // owns the objects and manages its lifetime.
+  std::vector<Profile*> GetAllProfiles();
+
   // Returns a pointer to a particular browser. Callee owns the object
   // and manages its lifetime.
   Browser* GetBrowser(int index) WARN_UNUSED_RESULT;
diff --git a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc
index 2e707f04..d7d94d4 100644
--- a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sync/test/integration/apps_helper.h"
+#include "chrome/browser/sync/test/integration/extensions_helper.h"
 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
 #include "chrome/browser/sync/test/integration/sync_app_list_helper.h"
 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
@@ -26,13 +27,16 @@
 #include "ui/app_list/app_list_model.h"
 #include "ui/app_list/app_list_switches.h"
 
+using apps_helper::AwaitAllProfilesHaveSameApps;
 using apps_helper::DisableApp;
 using apps_helper::EnableApp;
-using apps_helper::HasSameAppsAsVerifier;
+using apps_helper::HasSameApps;
 using apps_helper::IncognitoDisableApp;
 using apps_helper::IncognitoEnableApp;
 using apps_helper::InstallApp;
 using apps_helper::InstallAppsPendingForSync;
+using apps_helper::IsAppEnabled;
+using apps_helper::IsIncognitoEnabled;
 using apps_helper::UninstallApp;
 using sync_integration_test_util::AwaitCommitActivityCompletion;
 
@@ -40,9 +44,8 @@
 
 const size_t kNumDefaultApps = 2;
 
-bool AllProfilesHaveSameAppListAsVerifier() {
-  return SyncAppListHelper::GetInstance()->
-      AllProfilesHaveSameAppListAsVerifier();
+bool AllProfilesHaveSameAppList() {
+  return SyncAppListHelper::GetInstance()->AllProfilesHaveSameAppList();
 }
 
 const app_list::AppListSyncableService::SyncItem* GetSyncItem(
@@ -82,7 +85,9 @@
 
 class TwoClientAppListSyncTest : public SyncTest {
  public:
-  TwoClientAppListSyncTest() : SyncTest(TWO_CLIENT_LEGACY) {}
+  TwoClientAppListSyncTest() : SyncTest(TWO_CLIENT_LEGACY) {
+    DisableVerifier();
+  }
 
   ~TwoClientAppListSyncTest() override {}
 
@@ -113,7 +118,6 @@
   void WaitForExtensionServicesToLoad() {
     for (int i = 0; i < num_clients(); ++i)
       WaitForExtensionsServiceToLoadForProfile(GetProfile(i));
-    WaitForExtensionsServiceToLoadForProfile(verifier());
   }
 
   void WaitForExtensionsServiceToLoadForProfile(Profile* profile) {
@@ -133,7 +137,7 @@
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, StartWithNoApps) {
   ASSERT_TRUE(SetupSync());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, StartWithSameApps) {
@@ -143,14 +147,13 @@
   for (int i = 0; i < kNumApps; ++i) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
 
   ASSERT_TRUE(SetupSync());
 
   ASSERT_TRUE(AwaitQuiescence());
 
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 // Install some apps on both clients, some on only one client, some on only the
@@ -167,21 +170,16 @@
   for (int j = 0; j < kNumCommonApps; ++i, ++j) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
 
   const int kNumProfile0Apps = 10;
   for (int j = 0; j < kNumProfile0Apps; ++i, ++j) {
     std::string id = InstallApp(GetProfile(0), i);
-    InstallApp(verifier(), i);
-    SyncAppListHelper::GetInstance()->CopyOrdinalsToVerifier(GetProfile(0), id);
   }
 
   const int kNumProfile1Apps = 10;
   for (int j = 0; j < kNumProfile1Apps; ++i, ++j) {
     std::string id = InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
-    SyncAppListHelper::GetInstance()->CopyOrdinalsToVerifier(GetProfile(1), id);
   }
 
   ASSERT_TRUE(SetupSync());
@@ -193,7 +191,7 @@
 
   // Verify the app lists, but ignore absolute position values, checking only
   // relative positions (see note in app_list_syncable_service.h).
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 // Install some apps on both clients, then sync.  Then install some apps on only
@@ -208,7 +206,6 @@
   for (int j = 0; j < kNumCommonApps; ++i, ++j) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
 
   ASSERT_TRUE(SetupSync());
@@ -218,15 +215,11 @@
   const int kNumProfile0Apps = 10;
   for (int j = 0; j < kNumProfile0Apps; ++i, ++j) {
     std::string id = InstallApp(GetProfile(0), i);
-    InstallApp(verifier(), i);
-    SyncAppListHelper::GetInstance()->CopyOrdinalsToVerifier(GetProfile(0), id);
   }
 
   const int kNumProfile1Apps = 10;
   for (int j = 0; j < kNumProfile1Apps; ++i, ++j) {
     std::string id = InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
-    SyncAppListHelper::GetInstance()->CopyOrdinalsToVerifier(GetProfile(1), id);
   }
 
   ASSERT_TRUE(AwaitQuiescence());
@@ -236,38 +229,35 @@
 
   // Verify the app lists, but ignore absolute position values, checking only
   // relative positions (see note in app_list_syncable_service.h).
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, Install) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
 
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, Uninstall) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
 
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   UninstallApp(GetProfile(0), 0);
-  UninstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 // Install an app on one client, then sync. Then uninstall the app on the first
@@ -276,32 +266,29 @@
 // ordinals.
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, UninstallThenInstall) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
 
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   UninstallApp(GetProfile(0), 0);
-  UninstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 1);
-  InstallApp(verifier(), 1);
   ASSERT_TRUE(AwaitQuiescence());
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, Merge) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
   InstallApp(GetProfile(1), 0);
@@ -309,92 +296,85 @@
 
   UninstallApp(GetProfile(0), 0);
   InstallApp(GetProfile(0), 1);
-  InstallApp(verifier(), 1);
 
   InstallApp(GetProfile(0), 2);
   InstallApp(GetProfile(1), 2);
-  InstallApp(verifier(), 2);
 
   InstallApp(GetProfile(1), 3);
-  InstallApp(verifier(), 3);
 
   ASSERT_TRUE(AwaitQuiescence());
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, UpdateEnableDisableApp) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
   InstallApp(GetProfile(1), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+
+  ASSERT_TRUE(IsAppEnabled(GetProfile(0), 0));
+  ASSERT_TRUE(IsAppEnabled(GetProfile(1), 0));
 
   DisableApp(GetProfile(0), 0);
-  DisableApp(verifier(), 0);
-  ASSERT_TRUE(HasSameAppsAsVerifier(0));
-  ASSERT_FALSE(HasSameAppsAsVerifier(1));
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+  ASSERT_FALSE(IsAppEnabled(GetProfile(0), 0));
+  ASSERT_FALSE(IsAppEnabled(GetProfile(1), 0));
 
   EnableApp(GetProfile(1), 0);
-  EnableApp(verifier(), 0);
-  ASSERT_TRUE(HasSameAppsAsVerifier(1));
-  ASSERT_FALSE(HasSameAppsAsVerifier(0));
-
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+  ASSERT_TRUE(IsAppEnabled(GetProfile(0), 0));
+  ASSERT_TRUE(IsAppEnabled(GetProfile(1), 0));
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, UpdateIncognitoEnableDisable) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   InstallApp(GetProfile(0), 0);
   InstallApp(GetProfile(1), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+
+  ASSERT_FALSE(IsIncognitoEnabled(GetProfile(0), 0));
+  ASSERT_FALSE(IsIncognitoEnabled(GetProfile(1), 0));
 
   IncognitoEnableApp(GetProfile(0), 0);
-  IncognitoEnableApp(verifier(), 0);
-  ASSERT_TRUE(HasSameAppsAsVerifier(0));
-  ASSERT_FALSE(HasSameAppsAsVerifier(1));
-
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+
+  ASSERT_TRUE(IsIncognitoEnabled(GetProfile(0), 0));
+  ASSERT_TRUE(IsIncognitoEnabled(GetProfile(1), 0));
 
   IncognitoDisableApp(GetProfile(1), 0);
-  IncognitoDisableApp(verifier(), 0);
-  ASSERT_TRUE(HasSameAppsAsVerifier(1));
-  ASSERT_FALSE(HasSameAppsAsVerifier(0));
-
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
+  ASSERT_FALSE(IsIncognitoEnabled(GetProfile(0), 0));
+  ASSERT_FALSE(IsIncognitoEnabled(GetProfile(1), 0));
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, DisableApps) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::APP_LIST));
   InstallApp(GetProfile(0), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
-  ASSERT_TRUE(HasSameAppsAsVerifier(0));
-  ASSERT_FALSE(HasSameAppsAsVerifier(1));
+  ASSERT_FALSE(AllProfilesHaveSameAppList());
 
   ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::APP_LIST));
   ASSERT_TRUE(AwaitQuiescence());
 
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 // Disable sync for the second client and then install an app on the first
@@ -402,28 +382,26 @@
 // same app with identical app and page ordinals.
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, DisableSync) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
   InstallApp(GetProfile(0), 0);
-  InstallApp(verifier(), 0);
   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
-  ASSERT_TRUE(HasSameAppsAsVerifier(0));
-  ASSERT_FALSE(HasSameAppsAsVerifier(1));
+  ASSERT_FALSE(AllProfilesHaveSameAppList());
 
   ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
   ASSERT_TRUE(AwaitQuiescence());
 
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 // Install some apps on both clients, then sync. Move an app on one client
 // and sync. Both clients should have the updated position for the app.
 IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, Move) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   std::vector<std::string> app_ids;
   // AppListPrefs should be empty since it only begins observing the model after
@@ -434,10 +412,9 @@
   for (int i = 0; i < kNumApps; ++i) {
     app_ids.push_back(InstallApp(GetProfile(0), i));
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // AppListPrefs should contain the newly installed apps.
   CheckAppInfoInPrefs(GetProfile(1), app_ids);
@@ -445,11 +422,9 @@
   size_t first = kNumDefaultApps;
   SyncAppListHelper::GetInstance()->MoveApp(
       GetProfile(0), first + 1, first + 2);
-  SyncAppListHelper::GetInstance()->MoveApp(
-      verifier(), first + 1, first + 2);
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // AppListPrefs should reflect the apps being moved in the model.
   CheckAppInfoInPrefs(GetProfile(1), app_ids);
@@ -465,19 +440,15 @@
   // Install a non-default app.
   InstallApp(GetProfile(0), 0);
   InstallApp(GetProfile(1), 0);
-  InstallApp(verifier(), 0);
 
   // Install a default app in Profile 0 only.
   const int default_app_index = 1;
   std::string default_app_id = InstallApp(GetProfile(0), default_app_index);
-  InstallApp(verifier(), default_app_index);
-  SyncAppListHelper::GetInstance()->CopyOrdinalsToVerifier(
-      GetProfile(0), default_app_id);
 
   ASSERT_TRUE(AwaitQuiescence());
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Flag Default app in Profile 1.
   extensions::ExtensionPrefs::Get(GetProfile(1))
@@ -488,9 +459,8 @@
   // Remove the default app in Profile 0 and verifier, ensure it was removed
   // in Profile 1.
   UninstallApp(GetProfile(0), default_app_index);
-  UninstallApp(verifier(), default_app_index);
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Ensure that a REMOVE_DEFAULT_APP SyncItem entry exists in Profile 1.
   const app_list::AppListSyncableService::SyncItem* sync_item =
@@ -502,14 +472,13 @@
   // Re-Install the same app in Profile 0.
   std::string app_id2 = InstallApp(GetProfile(0), default_app_index);
   EXPECT_EQ(default_app_id, app_id2);
-  InstallApp(verifier(), default_app_index);
   sync_item = GetSyncItem(GetProfile(0), app_id2);
   EXPECT_EQ(sync_pb::AppListSpecifics::TYPE_APP, sync_item->item_type);
 
   ASSERT_TRUE(AwaitQuiescence());
   InstallAppsPendingForSync(GetProfile(0));
   InstallAppsPendingForSync(GetProfile(1));
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Ensure that the REMOVE_DEFAULT_APP SyncItem entry in Profile 1 is replaced
   // with an APP entry after an install.
@@ -520,65 +489,40 @@
 
 #if !defined(OS_MACOSX)
 
-class TwoClientAppListSyncFolderTest : public TwoClientAppListSyncTest {
- public:
-  TwoClientAppListSyncFolderTest() {}
-  ~TwoClientAppListSyncFolderTest() override {}
-
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    TwoClientAppListSyncTest::SetUpCommandLine(command_line);
-  }
-
-  bool SetupClients() override {
-    bool res = TwoClientAppListSyncTest::SetupClients();
-    app_list::AppListSyncableService* verifier_service =
-        app_list::AppListSyncableServiceFactory::GetForProfile(verifier());
-    verifier_service->GetModel()->SetFoldersEnabled(true);
-    return res;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(TwoClientAppListSyncFolderTest);
-};
-
 // Install some apps on both clients, then sync. Move an app on one client
 // to a folder and sync. The app lists, including folders, should match.
-IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncFolderTest, MoveToFolder) {
+IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, MoveToFolder) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   const int kNumApps = 5;
   for (int i = 0; i < kNumApps; ++i) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   size_t index = 2u;
   std::string folder_id = "Folder 0";
   SyncAppListHelper::GetInstance()->MoveAppToFolder(
       GetProfile(0), index, folder_id);
-  SyncAppListHelper::GetInstance()->MoveAppToFolder(
-      verifier(), index, folder_id);
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
-IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncFolderTest, FolderAddRemove) {
+IN_PROC_BROWSER_TEST_F(TwoClientAppListSyncTest, FolderAddRemove) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   const int kNumApps = 10;
   for (int i = 0; i < kNumApps; ++i) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Move a few apps to a folder.
   const size_t kNumAppsToMove = 3;
@@ -589,42 +533,34 @@
   for (size_t i = 0; i < kNumAppsToMove; ++i) {
     SyncAppListHelper::GetInstance()->MoveAppToFolder(
         GetProfile(0), item_index, folder_id);
-    SyncAppListHelper::GetInstance()->MoveAppToFolder(
-        verifier(), item_index, folder_id);
   }
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Remove one app from the folder.
   SyncAppListHelper::GetInstance()->MoveAppFromFolder(
       GetProfile(0), 0, folder_id);
-  SyncAppListHelper::GetInstance()->MoveAppFromFolder(
-      verifier(), 0, folder_id);
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Remove remaining apps from the folder (deletes folder).
   for (size_t i = 1; i < kNumAppsToMove; ++i) {
     SyncAppListHelper::GetInstance()->MoveAppFromFolder(
         GetProfile(0), 0, folder_id);
-    SyncAppListHelper::GetInstance()->MoveAppFromFolder(
-        verifier(), 0, folder_id);
   }
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 
   // Move apps back to a (new) folder.
   for (size_t i = 0; i < kNumAppsToMove; ++i) {
     SyncAppListHelper::GetInstance()->MoveAppToFolder(
         GetProfile(0), item_index, folder_id);
-    SyncAppListHelper::GetInstance()->MoveAppToFolder(
-        verifier(), item_index, folder_id);
   }
 
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameAppList());
 }
 
 #endif  // !defined(OS_MACOSX)
diff --git a/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc b/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc
index 0dae46c..6ba8a21 100644
--- a/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc
@@ -27,13 +27,12 @@
 #include "extensions/common/constants.h"
 #include "sync/api/string_ordinal.h"
 
-using apps_helper::AllProfilesHaveSameAppsAsVerifier;
+using apps_helper::AllProfilesHaveSameApps;
 using apps_helper::CopyNTPOrdinals;
 using apps_helper::DisableApp;
 using apps_helper::EnableApp;
 using apps_helper::FixNTPOrdinalCollisions;
 using apps_helper::GetAppLaunchOrdinalForApp;
-using apps_helper::HasSameAppsAsVerifier;
 using apps_helper::IncognitoDisableApp;
 using apps_helper::IncognitoEnableApp;
 using apps_helper::InstallApp;
@@ -57,7 +56,9 @@
 
 class TwoClientAppsSyncTest : public SyncTest {
  public:
-  TwoClientAppsSyncTest() : SyncTest(TWO_CLIENT) {}
+  TwoClientAppsSyncTest() : SyncTest(TWO_CLIENT) {
+    DisableVerifier();
+  }
 
   ~TwoClientAppsSyncTest() override {}
 
@@ -74,7 +75,6 @@
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(StartWithSameApps)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupClients());
 
   const int kNumApps = 5;
@@ -101,32 +101,22 @@
   for (int j = 0; j < kNumCommonApps; ++i, ++j) {
     InstallApp(GetProfile(0), i);
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
   }
 
   const int kNumProfile0Apps = 10;
   for (int j = 0; j < kNumProfile0Apps; ++i, ++j) {
     InstallApp(GetProfile(0), i);
-    InstallApp(verifier(), i);
-    CopyNTPOrdinals(GetProfile(0), verifier(), i);
   }
 
   const int kNumProfile1Apps = 10;
   for (int j = 0; j < kNumProfile1Apps; ++i, ++j) {
     InstallApp(GetProfile(1), i);
-    InstallApp(verifier(), i);
-    CopyNTPOrdinals(GetProfile(1), verifier(), i);
   }
 
   const int kNumPlatformApps = 5;
   for (int j = 0; j < kNumPlatformApps; ++i, ++j) {
     InstallPlatformApp(GetProfile(1), i);
-    InstallPlatformApp(verifier(), i);
-    CopyNTPOrdinals(GetProfile(1), verifier(), i);
   }
-
-  FixNTPOrdinalCollisions(verifier());
-
   ASSERT_TRUE(SetupSync());
 
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
@@ -137,7 +127,6 @@
 // end up with all apps, and the app and page ordinals should be identical.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest,
                        E2E_ENABLED(InstallDifferentApps)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupClients());
 
   int i = 0;
@@ -165,7 +154,6 @@
 
 // TCM ID - 3711279.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(Add)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -176,7 +164,6 @@
 
 // TCM ID - 3706267.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(Uninstall)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -193,7 +180,6 @@
 // ordinals.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest,
                        E2E_ENABLED(UninstallThenInstall)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -209,7 +195,6 @@
 
 // TCM ID - 3699295.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(Merge)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -230,7 +215,6 @@
 // TCM ID - 7723126.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest,
                        E2E_ENABLED(UpdateEnableDisableApp)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -247,7 +231,6 @@
 // TCM ID - 7706637.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest,
                        E2E_ENABLED(UpdateIncognitoEnableDisable)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -265,7 +248,6 @@
 // one client and sync. Both clients should have the updated page ordinal for
 // the app.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(UpdatePageOrdinal)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -284,7 +266,6 @@
 // launch ordinal for the app.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest,
                        E2E_ENABLED(UpdateAppLaunchOrdinal)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -303,7 +284,6 @@
 // which page the CWS appears on and sync. Both clients should have the same
 // page and app launch ordinal values for the CWS.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(UpdateCWSOrdinals)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -333,7 +313,6 @@
 // Adjust the launch type on the first client and sync. Both clients should
 // have the same launch type values for the CWS.
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, E2E_ENABLED(UpdateLaunchType)) {
-  DisableVerifier();
   ASSERT_TRUE(SetupSync());
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
@@ -361,12 +340,10 @@
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, UnexpectedLaunchType) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 
   extensions::SetLaunchType(GetProfile(1), extensions::kWebStoreAppId,
                             extensions::LAUNCH_TYPE_REGULAR);
-  extensions::SetLaunchType(verifier(), extensions::kWebStoreAppId,
-                            extensions::LAUNCH_TYPE_REGULAR);
   ASSERT_TRUE(AwaitAllProfilesHaveSameApps());
 
   const extensions::Extension* extension =
@@ -402,7 +379,7 @@
 
 IN_PROC_BROWSER_TEST_F(TwoClientAppsSyncTest, BookmarkApp) {
   ASSERT_TRUE(SetupSync());
-  ASSERT_TRUE(AllProfilesHaveSameAppsAsVerifier());
+  ASSERT_TRUE(AllProfilesHaveSameApps());
 
   size_t num_extensions =
       GetExtensionRegistry(GetProfile(0))->enabled_extensions().size();
@@ -423,20 +400,10 @@
               GetExtensionRegistry(GetProfile(0))->enabled_extensions().size());
   }
   {
-    content::WindowedNotificationObserver windowed_observer(
-        extensions::NOTIFICATION_CRX_INSTALLER_DONE,
-        content::NotificationService::AllSources());
-    extensions::CreateOrUpdateBookmarkApp(GetExtensionService(verifier()),
-                                          &web_app_info);
-    windowed_observer.Wait();
-    EXPECT_EQ(num_extensions,
-              GetExtensionRegistry(verifier())->enabled_extensions().size());
-  }
-  {
     // Wait for the synced app to install.
     content::WindowedNotificationObserver windowed_observer(
         extensions::NOTIFICATION_CRX_INSTALLER_DONE,
-        base::Bind(&AllProfilesHaveSameAppsAsVerifier));
+        base::Bind(&AllProfilesHaveSameApps));
     windowed_observer.Wait();
   }
 }
diff --git a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc
index d8e9e6ab..ee2c569 100644
--- a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc
@@ -28,8 +28,8 @@
 using autofill_helper::AwaitProfilesMatch;
 using autofill_helper::CreateAutofillProfile;
 using autofill_helper::CreateUniqueAutofillProfile;
+using autofill_helper::GetAllAutoFillProfiles;
 using autofill_helper::GetAllKeys;
-using autofill_helper::GetAllProfiles;
 using autofill_helper::GetPersonalDataManager;
 using autofill_helper::GetProfileCount;
 using autofill_helper::KeysMatch;
@@ -162,40 +162,40 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   // Client1 adds a profile.
   AddProfile(1, CreateAutofillProfile(PROFILE_MARION));
   MakeABookmarkChange(1);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(2U, GetAllProfiles(0).size());
+  ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size());
 
   // Client0 adds the same profile.
   AddProfile(0, CreateAutofillProfile(PROFILE_MARION));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(2U, GetAllProfiles(0).size());
+  ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size());
 
   // Client1 removes a profile.
-  RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+  RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid());
   MakeABookmarkChange(1);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   // Client0 updates a profile.
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_FIRST),
                 base::ASCIIToUTF16("Bart"));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   // Client1 removes remaining profile.
-  RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+  RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid());
   MakeABookmarkChange(1);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(0U, GetAllProfiles(0).size());
+  ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 7261786.
@@ -206,7 +206,7 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3636294.
@@ -222,7 +222,7 @@
   AddProfile(1, profile1);
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3626291.
@@ -231,7 +231,7 @@
 
   AddProfile(0, CreateAutofillProfile(PROFILE_NULL));
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(0U, GetAllProfiles(0).size());
+  ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3616283.
@@ -241,7 +241,7 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3632260.
@@ -253,7 +253,7 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(3U, GetAllProfiles(0).size());
+  ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3602257.
@@ -263,12 +263,12 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
-  RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+  RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid());
   MakeABookmarkChange(1);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(0U, GetAllProfiles(0).size());
+  ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3627300.
@@ -280,7 +280,7 @@
   AddProfile(1, CreateAutofillProfile(PROFILE_FRASIER));
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(3U, GetAllProfiles(0).size());
+  ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3665264.
@@ -290,19 +290,19 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_FIRST),
                 base::ASCIIToUTF16("Lisa"));
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::EMAIL_ADDRESS),
                 base::ASCIIToUTF16("grrrl@TV.com"));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3628299.
@@ -312,19 +312,19 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_FIRST),
                 base::ASCIIToUTF16("Lisa"));
   MakeABookmarkChange(0);
   UpdateProfile(1,
-                GetAllProfiles(1)[0]->guid(),
+                GetAllAutoFillProfiles(1)[0]->guid(),
                 AutofillType(autofill::NAME_FIRST),
                 base::ASCIIToUTF16("Bart"));
   MakeABookmarkChange(1);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 }
 
 // TCM ID - 3608295.
@@ -334,19 +334,19 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   base::string16 max_length_string(AutofillTable::kMaxDataLength, '.');
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_FULL),
                 max_length_string);
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::EMAIL_ADDRESS),
                 max_length_string);
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::ADDRESS_HOME_LINE1),
                 max_length_string);
 
@@ -360,24 +360,24 @@
   AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   base::string16 exceeds_max_length_string(
       AutofillTable::kMaxDataLength + 1, '.');
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_FIRST),
                 exceeds_max_length_string);
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::NAME_LAST),
                 exceeds_max_length_string);
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::EMAIL_ADDRESS),
                 exceeds_max_length_string);
   UpdateProfile(0,
-                GetAllProfiles(0)[0]->guid(),
+                GetAllAutoFillProfiles(0)[0]->guid(),
                 AutofillType(autofill::ADDRESS_HOME_LINE1),
                 exceeds_max_length_string);
 
@@ -401,7 +401,7 @@
 
   MakeABookmarkChange(0);
   ASSERT_TRUE(AwaitProfilesMatch(0, 1));
-  ASSERT_EQ(1U, GetAllProfiles(0).size());
+  ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size());
 
   PersonalDataManager* pdm = GetPersonalDataManager(1);
   ASSERT_EQ(0U, pdm->GetCreditCards().size());
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc
index beaef900..a794367 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc
@@ -14,7 +14,6 @@
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_item_delegate_manager.h"
-#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_model.h"
 #include "ash/shell.h"
 #include "ash/system/tray/system_tray_delegate.h"
@@ -516,9 +515,6 @@
   // Reset the app window controllers here since it has a weak pointer to this.
   app_window_controllers_.clear();
 
-  for (auto iter : shelves_)
-    iter->shelf_layout_manager()->RemoveObserver(this);
-
   model_->RemoveObserver(this);
   if (ash::Shell::HasInstance())
     ash::Shell::GetInstance()->window_tree_host_manager()->RemoveObserver(this);
@@ -532,9 +528,6 @@
       model_->RemoveItemAt(index);
   }
 
-  if (ash::Shell::HasInstance())
-    ash::Shell::GetInstance()->RemoveShellObserver(this);
-
   // Release all profile dependent resources.
   ReleaseProfile();
   if (instance_ == this)
@@ -559,23 +552,20 @@
   CreateBrowserShortcutLauncherItem();
   UpdateAppLaunchersFromPref();
 
-  // TODO(sky): update unit test so that this test isn't necessary.
-  if (ash::Shell::HasInstance()) {
-    SetShelfAutoHideBehaviorFromPrefs();
-    SetShelfAlignmentFromPrefs();
 #if defined(OS_CHROMEOS)
+  // TODO(sky): update unit test so that this test isn't necessary.
+  if (ash::Shell::HasInstance())
     SetVirtualKeyboardBehaviorFromPrefs();
 #endif  // defined(OS_CHROMEOS)
-    syncable_prefs::PrefServiceSyncable* prefs =
-        PrefServiceSyncableFromProfile(profile_);
-    if (!prefs->FindPreference(prefs::kShelfAlignmentLocal)->HasUserSetting() ||
-        !prefs->FindPreference(prefs::kShelfAutoHideBehaviorLocal)->
-            HasUserSetting()) {
-      // This causes OnIsSyncingChanged to be called when the value of
-      // PrefService::IsSyncing() changes.
-      prefs->AddObserver(this);
-    }
-    ash::Shell::GetInstance()->AddShellObserver(this);
+
+  syncable_prefs::PrefServiceSyncable* prefs =
+      PrefServiceSyncableFromProfile(profile_);
+  if (!prefs->FindPreference(prefs::kShelfAlignmentLocal)->HasUserSetting() ||
+      !prefs->FindPreference(prefs::kShelfAutoHideBehaviorLocal)
+           ->HasUserSetting()) {
+    // This causes OnIsSyncingChanged to be called when the value of
+    // PrefService::IsSyncing() changes.
+    prefs->AddObserver(this);
   }
 }
 
@@ -893,12 +883,6 @@
   }
 }
 
-void ChromeLauncherController::OnAutoHideBehaviorChanged(
-    aura::Window* root_window,
-    ash::ShelfAutoHideBehavior new_behavior) {
-  SetShelfAutoHideBehaviorPrefs(new_behavior, root_window);
-}
-
 void ChromeLauncherController::SetLauncherItemImage(
     ash::ShelfID shelf_id,
     const gfx::ImageSkia& image) {
@@ -1156,14 +1140,73 @@
 }
 
 void ChromeLauncherController::OnShelfCreated(ash::Shelf* shelf) {
-  shelves_.insert(shelf);
-  shelf->shelf_layout_manager()->AddObserver(this);
+  aura::Window* root_window =
+      shelf->shelf_widget()->GetNativeWindow()->GetRootWindow();
+
+  shelf->SetAutoHideBehavior(
+      GetShelfAutoHideBehaviorFromPrefs(profile_, root_window));
+
+  if (ash::ShelfWidget::ShelfAlignmentAllowed())
+    shelf->SetAlignment(GetShelfAlignmentFromPrefs(profile_, root_window));
 }
 
-void ChromeLauncherController::OnShelfDestroyed(ash::Shelf* shelf) {
-  shelves_.erase(shelf);
-  // RemoveObserver is not called here, since by the time this method is called
-  // Shelf is already in its destructor.
+void ChromeLauncherController::OnShelfDestroyed(ash::Shelf* shelf) {}
+
+void ChromeLauncherController::OnShelfAlignmentChanged(ash::Shelf* shelf) {
+  const char* value = nullptr;
+  switch (shelf->GetAlignment()) {
+    case ash::SHELF_ALIGNMENT_BOTTOM:
+      value = ash::kShelfAlignmentBottom;
+      break;
+    case ash::SHELF_ALIGNMENT_LEFT:
+      value = ash::kShelfAlignmentLeft;
+      break;
+    case ash::SHELF_ALIGNMENT_RIGHT:
+      value = ash::kShelfAlignmentRight;
+      break;
+  }
+
+  aura::Window* root_window =
+      shelf->shelf_widget()->GetNativeWindow()->GetRootWindow();
+
+  UpdatePerDisplayPref(profile_->GetPrefs(), root_window,
+                       prefs::kShelfAlignment, value);
+
+  if (root_window == ash::Shell::GetPrimaryRootWindow()) {
+    // See comment in |kShelfAlignment| about why we have two prefs here.
+    profile_->GetPrefs()->SetString(prefs::kShelfAlignmentLocal, value);
+    profile_->GetPrefs()->SetString(prefs::kShelfAlignment, value);
+  }
+}
+
+void ChromeLauncherController::OnShelfAutoHideBehaviorChanged(
+    ash::Shelf* shelf) {
+  const char* value = nullptr;
+  switch (shelf->GetAutoHideBehavior()) {
+    case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
+      value = ash::kShelfAutoHideBehaviorAlways;
+      break;
+    case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
+      value = ash::kShelfAutoHideBehaviorNever;
+      break;
+    case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
+      // This one should not be a valid preference option for now. We only want
+      // to completely hide it when we run in app mode - or while we temporarily
+      // hide the shelf as part of an animation (e.g. the multi user change).
+      return;
+  }
+
+  aura::Window* root_window =
+      shelf->shelf_widget()->GetNativeWindow()->GetRootWindow();
+
+  UpdatePerDisplayPref(profile_->GetPrefs(), root_window,
+                       prefs::kShelfAutoHideBehavior, value);
+
+  if (root_window == ash::Shell::GetPrimaryRootWindow()) {
+    // See comment in |kShelfAlignment| about why we have two prefs here.
+    profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value);
+    profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehavior, value);
+  }
 }
 
 void ChromeLauncherController::ShelfItemAdded(int index) {
@@ -1217,8 +1260,6 @@
     controller->ActiveUserChanged(user_email);
   // Update the user specific shell properties from the new user profile.
   UpdateAppLaunchersFromPref();
-  SetShelfAlignmentFromPrefs();
-  SetShelfAutoHideBehaviorFromPrefs();
   SetShelfBehaviorsFromPrefs();
 #if defined(OS_CHROMEOS)
   SetVirtualKeyboardBehaviorFromPrefs();
@@ -1282,31 +1323,6 @@
   }
 }
 
-void ChromeLauncherController::OnShelfAlignmentChanged(
-    aura::Window* root_window) {
-  const char* pref_value = NULL;
-  switch (ash::Shell::GetInstance()->GetShelfAlignment(root_window)) {
-    case ash::SHELF_ALIGNMENT_BOTTOM:
-      pref_value = ash::kShelfAlignmentBottom;
-      break;
-    case ash::SHELF_ALIGNMENT_LEFT:
-      pref_value = ash::kShelfAlignmentLeft;
-      break;
-    case ash::SHELF_ALIGNMENT_RIGHT:
-      pref_value = ash::kShelfAlignmentRight;
-      break;
-  }
-
-  UpdatePerDisplayPref(
-      profile_->GetPrefs(), root_window, prefs::kShelfAlignment, pref_value);
-
-  if (root_window == ash::Shell::GetPrimaryRootWindow()) {
-    // See comment in |kShelfAlignment| about why we have two prefs here.
-    profile_->GetPrefs()->SetString(prefs::kShelfAlignmentLocal, pref_value);
-    profile_->GetPrefs()->SetString(prefs::kShelfAlignment, pref_value);
-  }
-}
-
 void ChromeLauncherController::OnDisplayConfigurationChanged() {
   SetShelfBehaviorsFromPrefs();
 }
@@ -1791,39 +1807,13 @@
   }
 }
 
-void ChromeLauncherController::SetShelfAutoHideBehaviorPrefs(
-    ash::ShelfAutoHideBehavior behavior,
-    aura::Window* root_window) {
-  const char* value = NULL;
-  switch (behavior) {
-    case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
-      value = ash::kShelfAutoHideBehaviorAlways;
-      break;
-    case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
-      value = ash::kShelfAutoHideBehaviorNever;
-      break;
-    case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
-      // This one should not be a valid preference option for now. We only want
-      // to completely hide it when we run in app mode - or while we temporarily
-      // hide the shelf as part of an animation (e.g. the multi user change).
-      return;
-  }
-
-  UpdatePerDisplayPref(
-      profile_->GetPrefs(), root_window, prefs::kShelfAutoHideBehavior, value);
-
-  if (root_window == ash::Shell::GetPrimaryRootWindow()) {
-    // See comment in |kShelfAlignment| about why we have two prefs here.
-    profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value);
-    profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehavior, value);
-  }
-}
-
 void ChromeLauncherController::SetShelfAutoHideBehaviorFromPrefs() {
-  aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows();
-  for (auto i = root_windows.begin(); i != root_windows.end(); ++i) {
-    ash::Shell::GetInstance()->SetShelfAutoHideBehavior(
-        GetShelfAutoHideBehaviorFromPrefs(profile_, *i), *i);
+  for (auto* window : ash::Shell::GetAllRootWindows()) {
+    ash::Shelf* shelf = ash::Shelf::ForWindow(window);
+    if (shelf) {
+      shelf->SetAutoHideBehavior(
+          GetShelfAutoHideBehaviorFromPrefs(profile_, window));
+    }
   }
 }
 
@@ -1831,10 +1821,10 @@
   if (!ash::ShelfWidget::ShelfAlignmentAllowed())
     return;
 
-  aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows();
-  for (auto i = root_windows.begin(); i != root_windows.end(); ++i) {
-    ash::Shell::GetInstance()->SetShelfAlignment(
-        GetShelfAlignmentFromPrefs(profile_, *i), *i);
+  for (auto* window : ash::Shell::GetAllRootWindows()) {
+    ash::Shelf* shelf = ash::Shelf::ForWindow(window);
+    if (shelf)
+      shelf->SetAlignment(GetShelfAlignmentFromPrefs(profile_, window));
   }
 }
 
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.h
index 45ec292..9bc54f36 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.h
@@ -7,7 +7,6 @@
 
 #include <list>
 #include <map>
-#include <set>
 #include <string>
 #include <vector>
 
@@ -16,10 +15,8 @@
 #include "ash/shelf/shelf_item_delegate.h"
 #include "ash/shelf/shelf_item_delegate_manager.h"
 #include "ash/shelf/shelf_item_types.h"
-#include "ash/shelf/shelf_layout_manager_observer.h"
 #include "ash/shelf/shelf_model_observer.h"
 #include "ash/shelf/shelf_types.h"
-#include "ash/shell_observer.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
@@ -87,14 +84,12 @@
 class ChromeLauncherController
     : public ash::ShelfDelegate,
       public ash::ShelfModelObserver,
-      public ash::ShellObserver,
       public ash::WindowTreeHostManager::Observer,
       public AppIconLoaderDelegate,
       public syncable_prefs::PrefServiceSyncableObserver,
       public AppSyncUIStateObserver,
       public ExtensionEnableFlowDelegate,
       public LauncherAppUpdater::Delegate,
-      public ash::ShelfLayoutManagerObserver,
       public ash::ShelfItemDelegateManagerObserver {
  public:
   // Indicates if a shelf item is incognito or not.
@@ -275,6 +270,8 @@
   // ash::ShelfDelegate:
   void OnShelfCreated(ash::Shelf* shelf) override;
   void OnShelfDestroyed(ash::Shelf* shelf) override;
+  void OnShelfAlignmentChanged(ash::Shelf* shelf) override;
+  void OnShelfAutoHideBehaviorChanged(ash::Shelf* shelf) override;
   ash::ShelfID GetShelfIDForAppID(const std::string& app_id) override;
   bool HasShelfIDToAppIDMapping(ash::ShelfID id) const override;
   const std::string& GetAppIDForShelfID(ash::ShelfID id) override;
@@ -293,9 +290,6 @@
   void ShelfItemMoved(int start_index, int target_index) override;
   void ShelfItemChanged(int index, const ash::ShelfItem& old_item) override;
 
-  // ash::ShellObserver:
-  void OnShelfAlignmentChanged(aura::Window* root_window) override;
-
   // ash::WindowTreeHostManager::Observer:
   void OnDisplayConfigurationChanged() override;
 
@@ -321,11 +315,6 @@
   void OnAppImageUpdated(const std::string& app_id,
                          const gfx::ImageSkia& image) override;
 
-  // ash::ShelfLayoutManagerObserver:
-  void OnAutoHideBehaviorChanged(
-      aura::Window* root_window,
-      ash::ShelfAutoHideBehavior new_behavior) override;
-
   // Called when the active user has changed.
   void ActiveUserChanged(const std::string& user_email);
 
@@ -453,10 +442,6 @@
   // Re-syncs shelf model with prefs::kPinnedLauncherApps.
   void UpdateAppLaunchersFromPref();
 
-  // Persists the shelf auto-hide behavior to prefs.
-  void SetShelfAutoHideBehaviorPrefs(ash::ShelfAutoHideBehavior behavior,
-                                     aura::Window* root_window);
-
   // Sets the shelf auto-hide behavior from prefs.
   void SetShelfAutoHideBehaviorFromPrefs();
 
@@ -575,9 +560,6 @@
 
   scoped_ptr<ExtensionEnableFlow> extension_enable_flow_;
 
-  // Shelves that are currently being observed.
-  std::set<ash::Shelf*> shelves_;
-
   // The owned browser status monitor.
   scoped_ptr<BrowserStatusMonitor> browser_status_monitor_;
 
diff --git a/chrome/browser/ui/ash/launcher/launcher_favicon_loader.h b/chrome/browser/ui/ash/launcher/launcher_favicon_loader.h
index 2a91b37a..31fc31c 100644
--- a/chrome/browser/ui/ash/launcher/launcher_favicon_loader.h
+++ b/chrome/browser/ui/ash/launcher/launcher_favicon_loader.h
@@ -9,6 +9,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "content/public/common/favicon_url.h"
 
 class GURL;
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm
index dcddda0..cdea9ad1 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller.mm
@@ -450,6 +450,13 @@
   [presentationModeController_ exitPresentationMode];
   presentationModeController_.reset();
 
+  // Explicitly release |fullscreenTransition_| here since it may call back to
+  // this BWC in |-dealloc|. Reset the fullscreen variables.
+  if (fullscreenTransition_) {
+    [fullscreenTransition_ browserWillBeDestroyed];
+    [self resetCustomAppKitFullscreenVariables];
+  }
+
   // Under certain testing configurations we may not actually own the browser.
   if (ownsBrowser_ == NO)
     ignore_result(browser_.release());
diff --git a/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.h b/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.h
index a92a1b7..e7a92bd 100644
--- a/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.h
+++ b/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.h
@@ -133,6 +133,9 @@
 // actual window's size.
 - (NSSize)desiredWindowLayoutSize;
 
+// Called when the browser is destroyed.
+- (void)browserWillBeDestroyed;
+
 @end
 
 #endif  // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_FULLSCREEN_TRANSITION_H_
diff --git a/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.mm b/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.mm
index 1a0792a..8febfb5 100644
--- a/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.mm
+++ b/chrome/browser/ui/cocoa/browser_window_fullscreen_transition.mm
@@ -164,7 +164,7 @@
 - (void)changePrimaryWindowToFinalFrame;
 
 // Override of CAAnimation delegate method.
-- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)flag;
+- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)finished;
 
 // Returns the layer of the root view of |window|.
 - (CALayer*)rootLayerOfWindow:(NSWindow*)window;
@@ -254,6 +254,14 @@
                                : [[primaryWindow_ contentView] bounds].size;
 }
 
+- (void)browserWillBeDestroyed {
+  CALayer* root = [self rootLayerOfWindow:primaryWindow_];
+  [root removeAllAnimations];
+  [snapshotLayer_ removeAllAnimations];
+
+  controller_ = nil;
+}
+
 // -------------------------Private Methods----------------------------
 
 - (void)takeSnapshot {
@@ -473,7 +481,7 @@
   changingPrimaryWindowSize_ = NO;
 }
 
-- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)flag {
+- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)finished {
   NSString* animationID = [theAnimation valueForKey:kAnimationIDKey];
 
   // Remove the snapshot window.
@@ -524,11 +532,11 @@
     [root removeAnimationForKey:kPrimaryWindowAnimationID];
     root.opacity = 1;
 
+    completedTransition_ = YES;
+
     if (!isEnteringFullscreen_)
       [controller_ exitFullscreenAnimationFinished];
   }
-
-  completedTransition_ = YES;
 }
 
 - (CALayer*)rootLayerOfWindow:(NSWindow*)window {
diff --git a/chrome/browser/ui/cocoa/first_run_dialog.h b/chrome/browser/ui/cocoa/first_run_dialog.h
index 2020ff0..ea48d4b 100644
--- a/chrome/browser/ui/cocoa/first_run_dialog.h
+++ b/chrome/browser/ui/cocoa/first_run_dialog.h
@@ -12,6 +12,7 @@
 // us improve Chromium.
 @interface FirstRunDialogController : NSWindowController {
  @private
+  // Bound to the value of the checkbox in FirstRunDialog.xib.
   BOOL statsEnabled_;
   BOOL makeDefaultBrowser_;
 
diff --git a/chrome/browser/ui/cocoa/first_run_dialog.mm b/chrome/browser/ui/cocoa/first_run_dialog.mm
index 1979bdd..f05c3bf 100644
--- a/chrome/browser/ui/cocoa/first_run_dialog.mm
+++ b/chrome/browser/ui/cocoa/first_run_dialog.mm
@@ -115,7 +115,8 @@
 // True when the stats checkbox should be checked by default. This is only
 // the case when the canary is running.
 bool StatsCheckboxDefault() {
-  return chrome::GetChannel() == version_info::Channel::CANARY;
+  // Opt-in means the checkbox is unchecked by default.
+  return !first_run::IsMetricsReportingOptIn();
 }
 
 }  // namespace
diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
index 3d8450a..68cf088 100644
--- a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
+++ b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm
@@ -957,6 +957,7 @@
 }
 
 void OmniboxViewMac::CopyToPasteboard(NSPasteboard* pboard) {
+  [pboard clearContents];
   base::scoped_nsobject<NSPasteboardItem> item(CreatePasteboardItem());
   [pboard writeObjects:@[ item.get() ]];
 }
diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_browsertest.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_browsertest.mm
index 03d3c5a..e180f64 100644
--- a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_browsertest.mm
+++ b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac_browsertest.mm
@@ -4,11 +4,14 @@
 
 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h"
 
+#include "base/strings/sys_string_conversions.h"
+#include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_window.h"
 #import "chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell.h"
 #include "chrome/browser/ui/location_bar/location_bar.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "ui/base/clipboard/clipboard_util_mac.h"
 
 class OmniboxViewMacBrowserTest : public InProcessBrowserTest {
  public:
@@ -56,3 +59,37 @@
   GetOmnibox()->OnMouseDown(0);
   EXPECT_TRUE(GetOmnibox()->model()->is_caret_visible());
 }
+
+// Verify that copying text from the omnibox into the pasteboard works.
+IN_PROC_BROWSER_TEST_F(OmniboxViewMacBrowserTest, CopyToPasteboard) {
+  std::string text = "orange yam";
+  NSString* pboard_type = @"com.google.chrome.asdf";
+
+  scoped_refptr<ui::UniquePasteboard> pasteboard = new ui::UniquePasteboard;
+  [[GetOmnibox()->field() currentEditor]
+      setString:base::SysUTF8ToNSString(text)];
+  [[GetOmnibox()->field() currentEditor]
+      setSelectedRange:NSMakeRange(0, text.size())];
+
+  GetOmnibox()->model()->SetUserText(base::UTF8ToUTF16(text));
+  GetOmnibox()->CopyToPasteboard(pasteboard->get());
+
+  NSString* pasteboard_string =
+      [pasteboard->get() stringForType:NSPasteboardTypeString];
+  EXPECT_EQ(text, pasteboard_string.UTF8String);
+
+  // Clear the pasteboard and set some new contents, using a custom Pboard type.
+  [pasteboard->get() clearContents];
+  [pasteboard->get()
+      setString:@"bad result"
+        forType:ui::ClipboardUtil::UTIForPasteboardType(pboard_type)];
+  GetOmnibox()->CopyToPasteboard(pasteboard->get());
+
+  // Check that the custom Pboard type is no longer present.
+  EXPECT_FALSE([pasteboard->get()
+      stringForType:ui::ClipboardUtil::UTIForPasteboardType(pboard_type)]);
+
+  // Check that the contents of the omnibox were copied to the clipboard.
+  pasteboard_string = [pasteboard->get() stringForType:NSPasteboardTypeString];
+  EXPECT_EQ(text, pasteboard_string.UTF8String);
+}
diff --git a/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm b/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
index 2c472ec..a936f07c 100644
--- a/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
+++ b/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
@@ -28,7 +28,7 @@
 #include "content/public/browser/native_web_keyboard_event.h"
 #include "skia/ext/skia_utils_mac.h"
 #include "ui/base/cocoa/cocoa_base_utils.h"
-#include "ui/base/cocoa/controls/hyperlink_text_view.h"
+#import "ui/base/cocoa/controls/hyperlink_button_cell.h"
 #include "ui/base/cocoa/window_size_constants.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/l10n/l10n_util_mac.h"
@@ -69,7 +69,8 @@
   base::scoped_nsobject<NSTableView> tableView_;
   base::scoped_nsobject<NSButton> connectButton_;
   base::scoped_nsobject<NSButton> cancelButton_;
-  base::scoped_nsobject<HyperlinkTextView> message_;
+  base::scoped_nsobject<NSTextField> message_;
+  base::scoped_nsobject<NSButton> getHelpButton_;
   bool buttonPressed_;
 
   Browser* browser_;                                  // Weak.
@@ -127,8 +128,11 @@
 // Creates the "Cancel" button.
 - (base::scoped_nsobject<NSButton>)cancelButton;
 
-// Creates the help link.
-- (base::scoped_nsobject<HyperlinkTextView>)message;
+// Creates the message.
+- (base::scoped_nsobject<NSTextField>)message;
+
+// Creates the "Get help" button.
+- (base::scoped_nsobject<NSButton>)getHelpButton;
 
 // Called when the "Connect" button is pressed.
 - (void)onConnect:(id)sender;
@@ -136,6 +140,9 @@
 // Called when the "Cancel" button is pressed.
 - (void)onCancel:(id)sender;
 
+// Called when the "Get help" button is pressed.
+- (void)onGetHelpPressed:(id)sender;
+
 @end
 
 @implementation ChooserBubbleUiController
@@ -238,8 +245,12 @@
 
   // Message.
   message_ = [self message];
+  CGFloat messageWidth = NSWidth([message_ frame]);
   CGFloat messageHeight = NSHeight([message_ frame]);
 
+  // Get help button.
+  getHelpButton_ = [self getHelpButton];
+
   // Separator.
   CGFloat separatorOriginX = 0.0f;
   CGFloat separatorOriginY = kMarginY + messageHeight + kVerticalPadding;
@@ -313,6 +324,15 @@
   [message_ setFrameOrigin:NSMakePoint(messageOriginX, messageOriginY)];
   [view addSubview:message_];
 
+  // Get help button.
+  getHelpButton_ = [self getHelpButton];
+  CGFloat getHelpButtonOriginX =
+      kMarginX + messageWidth - kHorizontalPadding / 2;
+  CGFloat getHelpButtonOriginY = kMarginY;
+  [getHelpButton_
+      setFrameOrigin:NSMakePoint(getHelpButtonOriginX, getHelpButtonOriginY)];
+  [view addSubview:getHelpButton_];
+
   bubbleFrame = [[self window] frameRectForContentRect:bubbleFrame];
   if ([[self window] isVisible]) {
     // Unfortunately, calling -setFrame followed by -setFrameOrigin  (called
@@ -330,7 +350,7 @@
     [self setAnchorPoint:[self getExpectedAnchorPoint]];
     [self showWindow:nil];
     [[self window] makeFirstResponder:nil];
-    [[self window] setInitialFirstResponder:connectButton_.get()];
+    [[self window] setInitialFirstResponder:tableView_.get()];
   }
 }
 
@@ -462,40 +482,32 @@
   return [self buttonWithTitle:cancelTitle action:@selector(onCancel:)];
 }
 
-- (base::scoped_nsobject<HyperlinkTextView>)message {
-  base::scoped_nsobject<HyperlinkTextView> textView(
-      [[HyperlinkTextView alloc] initWithFrame:NSZeroRect]);
+- (base::scoped_nsobject<NSTextField>)message {
+  base::scoped_nsobject<NSTextField> messageView(
+      [[NSTextField alloc] initWithFrame:NSZeroRect]);
+  [messageView setDrawsBackground:NO];
+  [messageView setBezeled:NO];
+  [messageView setEditable:NO];
+  [messageView setSelectable:NO];
+  [messageView
+      setStringValue:l10n_util::GetNSStringF(IDS_CHOOSER_BUBBLE_FOOTNOTE_TEXT,
+                                             base::string16())];
+  [messageView setFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]];
+  [messageView sizeToFit];
+  return messageView;
+}
 
-  base::string16 linkString =
-      l10n_util::GetStringUTF16(IDS_CHOOSER_BUBBLE_GET_HELP_LINK_TEXT);
-
-  NSString* text =
-      l10n_util::GetNSStringF(IDS_CHOOSER_BUBBLE_FOOTNOTE_TEXT, linkString);
-  [textView setMessage:text
-              withFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]
-          messageColor:[NSColor blackColor]];
-
-  NSColor* linkColor =
-      skia::SkColorToCalibratedNSColor(chrome_style::GetLinkColor());
-  [textView
-      addLinkRange:NSMakeRange([text length] - linkString.size(),
-                               linkString.size())
-           withURL:base::SysUTF8ToNSString(
-                       chooserBubbleController_->GetHelpCenterUrl().spec())
-         linkColor:linkColor];
-
-  // Removes the underlining from the link.
-  NSTextStorage* textStorage = [textView textStorage];
-  [textStorage addAttribute:NSUnderlineStyleAttributeName
-                      value:@(NSUnderlineStyleNone)
-                      range:NSMakeRange(0, [text length])];
-
-  [textView setVerticallyResizable:YES];
-  [textView
-      setFrameSize:NSMakeSize(kChooserBubbleWidth - 2 * kMarginX, MAXFLOAT)];
-  [textView sizeToFit];
-
-  return textView;
+- (base::scoped_nsobject<NSButton>)getHelpButton {
+  base::scoped_nsobject<NSButton> button(
+      [[NSButton alloc] initWithFrame:NSZeroRect]);
+  base::scoped_nsobject<HyperlinkButtonCell> cell([[HyperlinkButtonCell alloc]
+      initTextCell:l10n_util::GetNSString(
+                       IDS_CHOOSER_BUBBLE_GET_HELP_LINK_TEXT)]);
+  [button setCell:cell.get()];
+  [button sizeToFit];
+  [button setTarget:self];
+  [button setAction:@selector(onGetHelpPressed:)];
+  return button;
 }
 
 + (CGFloat)matchWidthsOf:(NSView*)viewA andOf:(NSView*)viewB {
@@ -528,6 +540,10 @@
   [self close];
 }
 
+- (void)onGetHelpPressed:(id)sender {
+  chooserBubbleController_->OpenHelpCenterUrl();
+}
+
 @end
 
 ChooserBubbleUiCocoa::ChooserBubbleUiCocoa(
diff --git a/chrome/browser/ui/infobar_container_delegate.cc b/chrome/browser/ui/infobar_container_delegate.cc
index f033de3..86655765 100644
--- a/chrome/browser/ui/infobar_container_delegate.cc
+++ b/chrome/browser/ui/infobar_container_delegate.cc
@@ -12,6 +12,28 @@
 #include "ui/views/window/non_client_view.h"
 #endif
 
+namespace {
+
+int GetDefaultArrowTargetHeight() {
+  return ui::MaterialDesignController::IsModeMaterial()
+             ? InfoBarContainerDelegate::kDefaultArrowTargetHeightMd
+             : InfoBarContainerDelegate::kDefaultArrowTargetHeight;
+}
+
+int GetDefaultArrowTargetHalfWidth() {
+  return ui::MaterialDesignController::IsModeMaterial()
+             ? InfoBarContainerDelegate::kDefaultArrowTargetHalfWidthMd
+             : InfoBarContainerDelegate::kDefaultArrowTargetHalfWidth;
+}
+
+int GetSeparatorLineHeightForLayout() {
+  return ui::MaterialDesignController::IsModeMaterial()
+             ? 0
+             : InfoBarContainerDelegate::kSeparatorLineHeight;
+}
+
+}  // namespace
+
 // static
 #if defined(OS_MACOSX)
 const int InfoBarContainerDelegate::kSeparatorLineHeight = 1;
@@ -22,17 +44,19 @@
     views::NonClientFrameView::kClientEdgeThickness;
 const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 9;
 #endif
+const int InfoBarContainerDelegate::kDefaultArrowTargetHeightMd = 11;
 
 const int InfoBarContainerDelegate::kDefaultBarTargetHeight = 36;
 const int InfoBarContainerDelegate::kDefaultBarTargetHeightMd = 40;
 const int InfoBarContainerDelegate::kMaximumArrowTargetHeight = 24;
 const int InfoBarContainerDelegate::kDefaultArrowTargetHalfWidth =
     kDefaultArrowTargetHeight;
+const int InfoBarContainerDelegate::kDefaultArrowTargetHalfWidthMd =
+    kDefaultArrowTargetHeightMd;
 const int InfoBarContainerDelegate::kMaximumArrowTargetHalfWidth = 14;
 
 InfoBarContainerDelegate::InfoBarContainerDelegate()
-    : top_arrow_target_height_(kDefaultArrowTargetHeight) {
-}
+    : top_arrow_target_height_(GetDefaultArrowTargetHeight()) {}
 
 InfoBarContainerDelegate::~InfoBarContainerDelegate() {
 }
@@ -40,10 +64,9 @@
 void InfoBarContainerDelegate::SetMaxTopArrowHeight(
     int height,
     infobars::InfoBarContainer* container) {
-  // Decrease the height by the arrow stroke thickness, which is the separator
-  // line height, because the infobar arrow target heights are without-stroke.
-  top_arrow_target_height_ = std::min(
-      std::max(height - kSeparatorLineHeight, 0), kMaximumArrowTargetHeight);
+  top_arrow_target_height_ =
+      std::min(std::max(height - GetSeparatorLineHeightForLayout(), 0),
+               kMaximumArrowTargetHeight);
   container->UpdateInfoBarArrowTargetHeights();
 }
 
@@ -55,13 +78,14 @@
   if (index == 0)
     return top_arrow_target_height_;
   if ((index > 1) || animation.IsShowing())
-    return kDefaultArrowTargetHeight;
+    return GetDefaultArrowTargetHeight();
   // When the first infobar is animating closed, we animate the second infobar's
   // arrow target height from the default to the top target height.  Note that
   // the animation values here are going from 1.0 -> 0.0 as the top bar closes.
-  return top_arrow_target_height_ + static_cast<int>(
-      (kDefaultArrowTargetHeight - top_arrow_target_height_) *
-          animation.GetCurrentValue());
+  return top_arrow_target_height_ +
+         static_cast<int>(
+             (GetDefaultArrowTargetHeight() - top_arrow_target_height_) *
+             animation.GetCurrentValue());
 }
 
 void InfoBarContainerDelegate::ComputeInfoBarElementSizes(
@@ -86,8 +110,9 @@
     // When the infobar is not animating (i.e. fully open), we set the
     // half-width to be proportionally the same distance between its default and
     // maximum values as the height is between its.
-    *arrow_half_width = kDefaultArrowTargetHalfWidth +
-        ((kMaximumArrowTargetHalfWidth - kDefaultArrowTargetHalfWidth) *
+    *arrow_half_width =
+        GetDefaultArrowTargetHalfWidth() +
+        ((kMaximumArrowTargetHalfWidth - GetDefaultArrowTargetHalfWidth()) *
          ((*arrow_height - kDefaultArrowTargetHeight) /
           (kMaximumArrowTargetHeight - kDefaultArrowTargetHeight)));
   }
@@ -95,8 +120,8 @@
   // this, changing the arrow height from 0 to kSeparatorLineHeight would
   // produce no visible effect, because the stroke would paint atop the divider
   // line above the infobar.
-  if (*arrow_height)
-    *arrow_height += kSeparatorLineHeight;
+  if (*arrow_height && !ui::MaterialDesignController::IsModeMaterial())
+    *arrow_height += GetSeparatorLineHeightForLayout();
 
   int target_height = bar_target_height != -1
                           ? bar_target_height
diff --git a/chrome/browser/ui/infobar_container_delegate.h b/chrome/browser/ui/infobar_container_delegate.h
index 8c788c72..22a5486 100644
--- a/chrome/browser/ui/infobar_container_delegate.h
+++ b/chrome/browser/ui/infobar_container_delegate.h
@@ -12,12 +12,15 @@
 
 class InfoBarContainerDelegate : public infobars::InfoBarContainer::Delegate {
  public:
+  // TODO(estade): make some or all of these private.
   static const int kDefaultBarTargetHeight;
   static const int kDefaultBarTargetHeightMd;
   static const int kSeparatorLineHeight;
   static const int kDefaultArrowTargetHeight;
+  static const int kDefaultArrowTargetHeightMd;
   static const int kMaximumArrowTargetHeight;
   static const int kDefaultArrowTargetHalfWidth;
+  static const int kDefaultArrowTargetHalfWidthMd;
   static const int kMaximumArrowTargetHalfWidth;
 
   InfoBarContainerDelegate();
diff --git a/chrome/browser/ui/layout_constants.cc b/chrome/browser/ui/layout_constants.cc
index c5479b71..4cabf78 100644
--- a/chrome/browser/ui/layout_constants.cc
+++ b/chrome/browser/ui/layout_constants.cc
@@ -16,6 +16,7 @@
   const int kLocationBarBubbleFontVerticalPadding[] = {1, 2, 4};
   const int kLocationBarBubbleHorizontalPadding[] = {1, 4, 4};
   const int kLocationBarBubbleVerticalPadding[] = {1, 3, 3};
+  const int kLocationBarBubbleAnchorVerticalInset[] = {5, 6, 8};
   const int kLocationBarHeight[] = {27, 28, 32};
   const int kLocationBarHorizontalPadding[] = {3, 6, 6};
   const int kLocationBarVerticalPadding[] = {0, 1, 1};
@@ -58,6 +59,8 @@
       return kLocationBarBubbleHorizontalPadding[mode];
     case LOCATION_BAR_BUBBLE_VERTICAL_PADDING:
       return kLocationBarBubbleVerticalPadding[mode];
+    case LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET:
+      return kLocationBarBubbleAnchorVerticalInset[mode];
     case LOCATION_BAR_HEIGHT:
       return kLocationBarHeight[mode];
     case LOCATION_BAR_HORIZONTAL_PADDING:
diff --git a/chrome/browser/ui/layout_constants.h b/chrome/browser/ui/layout_constants.h
index 2271882..4069716 100644
--- a/chrome/browser/ui/layout_constants.h
+++ b/chrome/browser/ui/layout_constants.h
@@ -32,6 +32,12 @@
   // The additional vertical padding of a bubble.
   LOCATION_BAR_BUBBLE_VERTICAL_PADDING,
 
+  // The vertical inset to apply to the bounds of a location bar bubble's anchor
+  // view, to bring the bubble closer to the anchor.  This compensates for the
+  // space between the bottoms of most such views and the visible bottoms of the
+  // images inside.
+  LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET,
+
   // The height to be occupied by the LocationBar. For
   // MaterialDesignController::NON_MATERIAL the height is determined from image
   // assets.
diff --git a/chrome/browser/ui/views/DEPS b/chrome/browser/ui/views/DEPS
index b81ef82..4637b49 100644
--- a/chrome/browser/ui/views/DEPS
+++ b/chrome/browser/ui/views/DEPS
@@ -1,7 +1,7 @@
 include_rules = [
- "+content/app/resources/grit/content_resources.h",
  "+chrome/browser/ui/views",
  "+components/constrained_window",
  "+components/mus/public/cpp",
  "+components/user_manager",
+ "+content/app/resources/grit/content_resources.h",
 ]
diff --git a/chrome/browser/ui/views/conflicting_module_view_win.cc b/chrome/browser/ui/views/conflicting_module_view_win.cc
index f33c7c5..181963ff 100644
--- a/chrome/browser/ui/views/conflicting_module_view_win.cc
+++ b/chrome/browser/ui/views/conflicting_module_view_win.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/enumerate_modules_model_win.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
@@ -59,7 +60,8 @@
   set_close_on_esc(true);
 
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 
   registrar_.Add(this, chrome::NOTIFICATION_MODULE_INCOMPATIBILITY_BADGE_CHANGE,
                  content::NotificationService::AllSources());
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 880c1ef0..bb3691e 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -17,6 +17,7 @@
 #include "chrome/browser/plugins/plugin_metadata.h"
 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h"
 #include "chrome/browser/ui/content_settings/content_setting_media_menu_model.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "content/public/browser/plugin_service.h"
@@ -144,7 +145,8 @@
       learn_more_link_(NULL),
       close_button_(NULL) {
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 ContentSettingBubbleContents::~ContentSettingBubbleContents() {
diff --git a/chrome/browser/ui/views/download/download_item_view_md.cc b/chrome/browser/ui/views/download/download_item_view_md.cc
index fa2da545..0d3082d 100644
--- a/chrome/browser/ui/views/download/download_item_view_md.cc
+++ b/chrome/browser/ui/views/download/download_item_view_md.cc
@@ -57,7 +57,9 @@
 #include "ui/gfx/text_elider.h"
 #include "ui/gfx/text_utils.h"
 #include "ui/gfx/vector_icons_public.h"
+#include "ui/views/animation/flood_fill_ink_drop_animation.h"
 #include "ui/views/animation/ink_drop_delegate.h"
+#include "ui/views/animation/ink_drop_hover.h"
 #include "ui/views/border.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/controls/button/label_button.h"
@@ -158,6 +160,7 @@
       dragging_(false),
       starting_drag_(false),
       model_(download_item),
+      ink_drop_delegate_(this, this),
       save_button_(nullptr),
       discard_button_(nullptr),
       dropdown_button_(new BarControlButton(this)),
@@ -185,9 +188,6 @@
   status_font_list_ =
       rb.GetFontList(ui::ResourceBundle::BaseFont).DeriveWithSizeDelta(-2);
 
-  body_hover_animation_.reset(new gfx::SlideAnimation(this));
-  drop_hover_animation_.reset(new gfx::SlideAnimation(this));
-
   SetAccessibilityFocusable(true);
 
   OnDownloadUpdated(download());
@@ -376,8 +376,6 @@
                                    2 * kMinimumVerticalPadding + child_height));
 }
 
-// Handle a mouse click and open the context menu if the mouse is
-// over the drop-down region.
 bool DownloadItemViewMd::OnMousePressed(const ui::MouseEvent& event) {
   HandlePressEvent(event, event.IsOnlyLeftMouseButton());
   return true;
@@ -392,6 +390,7 @@
   if (!starting_drag_) {
     starting_drag_ = true;
     drag_start_point_ = event.location();
+    ink_drop_delegate_.OnAction(views::InkDropState::HIDDEN);
   }
   if (dragging_) {
     if (download()->GetState() == DownloadItem::COMPLETE) {
@@ -414,7 +413,7 @@
 
 void DownloadItemViewMd::OnMouseCaptureLost() {
   // Mouse should not activate us in dangerous mode.
-  if (mode_ == DANGEROUS_MODE)
+  if (mode_ != NORMAL_MODE)
     return;
 
   if (dragging_) {
@@ -431,6 +430,8 @@
 
   if (event.key_code() == ui::VKEY_SPACE ||
       event.key_code() == ui::VKEY_RETURN) {
+    ink_drop_delegate_.set_last_ink_drop_location(
+        GetLocalBounds().CenterPoint());
     // OpenDownload may delete this, so don't add any code after this line.
     OpenDownload();
     return true;
@@ -463,6 +464,30 @@
   UpdateColorsFromTheme();
 }
 
+void DownloadItemViewMd::AddInkDropLayer(ui::Layer* ink_drop_layer) {
+  InkDropHostView::AddInkDropLayer(ink_drop_layer);
+  // The layer that's added to host the ink drop layer must mask to bounds
+  // so the hover effect is clipped while animating open.
+  layer()->SetMasksToBounds(true);
+}
+
+scoped_ptr<views::InkDropAnimation> DownloadItemViewMd::CreateInkDropAnimation()
+    const {
+  return make_scoped_ptr(new views::FloodFillInkDropAnimation(
+      size(), ink_drop_delegate_.last_ink_drop_location(),
+      color_utils::DeriveDefaultIconColor(GetTextColor())));
+}
+
+scoped_ptr<views::InkDropHover> DownloadItemViewMd::CreateInkDropHover() const {
+  if (IsShowingWarningDialog())
+    return nullptr;
+
+  gfx::Size size = GetPreferredSize();
+  return make_scoped_ptr(new views::InkDropHover(
+      size, kInkDropSmallCornerRadius, gfx::Rect(size).CenterPoint(),
+      color_utils::DeriveDefaultIconColor(GetTextColor())));
+}
+
 void DownloadItemViewMd::OnGestureEvent(ui::GestureEvent* event) {
   if (event->type() == ui::ET_GESTURE_TAP_DOWN) {
     HandlePressEvent(*event, true);
@@ -704,6 +729,7 @@
                            base::Time::Now() - creation_time_);
 
   UpdateAccessibleName();
+  ink_drop_delegate_.OnAction(views::InkDropState::ACTION_TRIGGERED);
 
   // Calling download()->OpenDownload may delete this, so this must be
   // the last thing we do.
@@ -799,6 +825,9 @@
   // Stop any completion animation.
   if (complete_animation_.get() && complete_animation_->is_animating())
     complete_animation_->End();
+
+  ink_drop_delegate_.set_last_ink_drop_location(event.location());
+  ink_drop_delegate_.OnAction(views::InkDropState::ACTION_PENDING);
 }
 
 void DownloadItemViewMd::HandleClickEvent(const ui::LocatedEvent& event,
@@ -825,9 +854,11 @@
       new_state == PUSHED ? gfx::VectorIconId::FIND_NEXT
                           : gfx::VectorIconId::FIND_PREV,
       base::Bind(&DownloadItemViewMd::GetTextColor, base::Unretained(this)));
-  dropdown_button_->ink_drop_delegate()->OnAction(
-      new_state == PUSHED ? views::InkDropState::ACTIVATED
-                          : views::InkDropState::DEACTIVATED);
+  if (new_state != dropdown_state_) {
+    dropdown_button_->ink_drop_delegate()->OnAction(
+        new_state == PUSHED ? views::InkDropState::ACTIVATED
+                            : views::InkDropState::DEACTIVATED);
+  }
   dropdown_button_->OnThemeChanged();
   dropdown_state_ = new_state;
   SchedulePaint();
@@ -1073,10 +1104,10 @@
     SchedulePaint();
 }
 
-SkColor DownloadItemViewMd::GetTextColor() {
+SkColor DownloadItemViewMd::GetTextColor() const {
   return GetTextColorForThemeProvider(GetThemeProvider());
 }
 
-SkColor DownloadItemViewMd::GetDimmedTextColor() {
+SkColor DownloadItemViewMd::GetDimmedTextColor() const {
   return SkColorSetA(GetTextColor(), 0xC7);
 }
diff --git a/chrome/browser/ui/views/download/download_item_view_md.h b/chrome/browser/ui/views/download/download_item_view_md.h
index e4357ea..26836d7c 100644
--- a/chrome/browser/ui/views/download/download_item_view_md.h
+++ b/chrome/browser/ui/views/download/download_item_view_md.h
@@ -31,9 +31,10 @@
 #include "content/public/browser/download_manager.h"
 #include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/font_list.h"
+#include "ui/views/animation/button_ink_drop_delegate.h"
+#include "ui/views/animation/ink_drop_host_view.h"
 #include "ui/views/context_menu_controller.h"
 #include "ui/views/controls/button/button.h"
-#include "ui/views/view.h"
 
 class BarControlButton;
 class DownloadShelfView;
@@ -61,8 +62,8 @@
 
 // The DownloadItemView in MD style. This is copied from DownloadItemView,
 // which it should eventually replace.
-class DownloadItemViewMd : public views::ButtonListener,
-                           public views::View,
+class DownloadItemViewMd : public views::InkDropHostView,
+                           public views::ButtonListener,
                            public views::ContextMenuController,
                            public content::DownloadItem::Observer,
                            public gfx::AnimationDelegate {
@@ -103,6 +104,11 @@
   void GetAccessibleState(ui::AXViewState* state) override;
   void OnThemeChanged() override;
 
+  // Overridden from view::InkDropHostView:
+  void AddInkDropLayer(ui::Layer* ink_drop_layer) override;
+  scoped_ptr<views::InkDropAnimation> CreateInkDropAnimation() const override;
+  scoped_ptr<views::InkDropHover> CreateInkDropHover() const override;
+
   // Overridden from ui::EventHandler:
   void OnGestureEvent(ui::GestureEvent* event) override;
 
@@ -220,10 +226,10 @@
   void ProgressTimerFired();
 
   // Returns the base text color.
-  SkColor GetTextColor();
+  SkColor GetTextColor() const;
 
   // Returns a slightly dimmed version of the base text color.
-  SkColor GetDimmedTextColor();
+  SkColor GetDimmedTextColor() const;
 
   // The download shelf that owns us.
   DownloadShelfView* shelf_;
@@ -269,13 +275,11 @@
   // A model class to control the status text we display.
   DownloadItemModel model_;
 
-  // Hover animations for our body and drop buttons.
-  scoped_ptr<gfx::SlideAnimation> body_hover_animation_;
-  scoped_ptr<gfx::SlideAnimation> drop_hover_animation_;
-
   // Animation for download complete.
   scoped_ptr<gfx::SlideAnimation> complete_animation_;
 
+  views::ButtonInkDropDelegate ink_drop_delegate_;
+
   // Progress animation
   base::RepeatingTimer progress_timer_;
 
diff --git a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
index b88dc52..d3ce68c 100644
--- a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc
@@ -11,6 +11,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/thread_task_runner_handle.h"
 #include "chrome/browser/extensions/extension_message_bubble_controller.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/grit/locale_settings.h"
 #include "ui/accessibility/ax_view_state.h"
@@ -58,7 +59,8 @@
   set_close_on_esc(true);
 
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 void ExtensionMessageBubbleView::Show() {
diff --git a/chrome/browser/ui/views/first_run_bubble.cc b/chrome/browser/ui/views/first_run_bubble.cc
index c34297a..e93f6ed 100644
--- a/chrome/browser/ui/views/first_run_bubble.cc
+++ b/chrome/browser/ui/views/first_run_bubble.cc
@@ -8,6 +8,7 @@
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/chrome_pages.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/search_engines/util.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -20,7 +21,6 @@
 #include "ui/views/widget/widget.h"
 
 namespace {
-const int kAnchorVerticalInset = 5;
 const int kTopInset = 1;
 const int kLeftInset = 2;
 const int kBottomInset = 7;
@@ -85,8 +85,8 @@
       browser_(browser),
       bubble_closer_(this, anchor_view) {
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(
-      gfx::Insets(kAnchorVerticalInset, 0, kAnchorVerticalInset, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 int FirstRunBubble::GetDialogButtons() const {
diff --git a/chrome/browser/ui/views/first_run_dialog.cc b/chrome/browser/ui/views/first_run_dialog.cc
index 89b12df..4a513a9 100644
--- a/chrome/browser/ui/views/first_run_dialog.cc
+++ b/chrome/browser/ui/views/first_run_dialog.cc
@@ -93,6 +93,8 @@
   layout->StartRowWithPadding(0, 0, 0, related_y);
   report_crashes_ = new views::Checkbox(l10n_util::GetStringUTF16(
       IDS_OPTIONS_ENABLE_LOGGING));
+  // Having this box checked means the user has to opt-out of metrics recording.
+  report_crashes_->SetChecked(!first_run::IsMetricsReportingOptIn());
   layout->AddView(report_crashes_);
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
index 7a998ac..36fc170c 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_browsertest.cc
@@ -11,11 +11,18 @@
 
 using BrowserNonClientFrameViewBrowserTest = ExtensionBrowserTest;
 
+// Test is Flaky on Windows see crbug.com/600201.
+#if defined(OS_WIN)
+#define MAYBE_InactiveSeparatorColor FLAKY_InactiveSeparatorColor
+#else
+#define MAYBE_InactiveSeparatorColor InactiveSeparatorColor
+#endif
+
 // Tests that the color returned by
 // BrowserNonClientFrameView::GetToolbarTopSeparatorColor() tracks the window
 // actiavtion state.
 IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewBrowserTest,
-                       InactiveSeparatorColor) {
+                       MAYBE_InactiveSeparatorColor) {
   // In the default theme, the active and inactive separator colors may be the
   // same.  Install a custom theme where they are different.
   InstallExtension(test_data_dir_.AppendASCII("theme"), 1);
diff --git a/chrome/browser/ui/views/global_error_bubble_view.cc b/chrome/browser/ui/views/global_error_bubble_view.cc
index 7d46d547..802e118 100644
--- a/chrome/browser/ui/views/global_error_bubble_view.cc
+++ b/chrome/browser/ui/views/global_error_bubble_view.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/ui/global_error/global_error.h"
 #include "chrome/browser/ui/global_error/global_error_service.h"
 #include "chrome/browser/ui/global_error/global_error_service_factory.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/elevation_icon_setter.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/app_menu_button.h"
@@ -35,9 +36,6 @@
 
 const int kMaxBubbleViewWidth = 262;
 
-// The vertical inset of the app bubble anchor from the app menu button.
-const int kAnchorVerticalInset = 5;
-
 const int kBubblePadding = 19;
 
 // Spacing between bubble text and buttons.
@@ -75,8 +73,8 @@
   set_margins(gfx::Insets(0, kBubblePadding, kBubblePadding, kBubblePadding));
 
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(
-      gfx::Insets(kAnchorVerticalInset, 0, kAnchorVerticalInset, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 
   std::vector<base::string16> message_strings(error_->GetBubbleViewMessages());
   std::vector<views::Label*> message_labels;
diff --git a/chrome/browser/ui/views/infobars/infobar_background.cc b/chrome/browser/ui/views/infobars/infobar_background.cc
index 7e9fe10..8e732f7b 100644
--- a/chrome/browser/ui/views/infobars/infobar_background.cc
+++ b/chrome/browser/ui/views/infobars/infobar_background.cc
@@ -8,14 +8,15 @@
 #include "chrome/browser/ui/views/infobars/infobar_view.h"
 #include "components/infobars/core/infobar.h"
 #include "third_party/skia/include/effects/SkGradientShader.h"
+#include "ui/base/material_design/material_design_controller.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/color_utils.h"
+#include "ui/gfx/scoped_canvas.h"
 #include "ui/views/view.h"
 
 InfoBarBackground::InfoBarBackground(
     infobars::InfoBarDelegate::Type infobar_type)
-    : separator_color_(SK_ColorBLACK),
-      top_color_(infobars::InfoBar::GetTopColor(infobar_type)),
+    : top_color_(infobars::InfoBar::GetTopColor(infobar_type)),
       bottom_color_(infobars::InfoBar::GetBottomColor(infobar_type)) {
   SetNativeControlColor(
       color_utils::AlphaBlend(top_color_, bottom_color_, 128));
@@ -25,25 +26,31 @@
 }
 
 void InfoBarBackground::Paint(gfx::Canvas* canvas, views::View* view) const {
+  if (ui::MaterialDesignController::IsModeMaterial()) {
+    PaintMd(canvas, view);
+    return;
+  }
+
   SkPoint gradient_points[2];
   gradient_points[0].iset(0, 0);
   gradient_points[1].iset(0, view->height());
-  SkColor gradient_colors[2] = { top_color_, bottom_color_ };
+  SkColor gradient_colors[2] = {top_color_, bottom_color_};
   SkPaint paint;
   paint.setStrokeWidth(
       SkIntToScalar(InfoBarContainerDelegate::kSeparatorLineHeight));
   paint.setStyle(SkPaint::kFill_Style);
   paint.setStrokeCap(SkPaint::kRound_Cap);
   paint.setShader(SkGradientShader::MakeLinear(
-      gradient_points, gradient_colors, NULL, 2, SkShader::kClamp_TileMode));
+      gradient_points, gradient_colors, nullptr, 2, SkShader::kClamp_TileMode));
 
-  InfoBarView* infobar = static_cast<InfoBarView*>(view);
   SkCanvas* canvas_skia = canvas->sk_canvas();
+  InfoBarView* infobar = static_cast<InfoBarView*>(view);
   canvas_skia->drawPath(infobar->fill_path(), paint);
 
-  paint.setShader(NULL);
-  paint.setColor(SkColorSetA(separator_color_,
-                             SkColorGetA(gradient_colors[0])));
+  paint.setShader(nullptr);
+  SkColor separator_color =
+      infobar->container_delegate()->GetInfoBarSeparatorColor();
+  paint.setColor(SkColorSetA(separator_color, SkColorGetA(gradient_colors[0])));
   paint.setStyle(SkPaint::kStroke_Style);
   // Anti-alias the path so it doesn't look goofy when the edges are not at 45
   // degree angles, but don't anti-alias anything else, especially not the fill,
@@ -57,5 +64,74 @@
       gfx::Rect(0,
                 view->height() - InfoBarContainerDelegate::kSeparatorLineHeight,
                 view->width(), InfoBarContainerDelegate::kSeparatorLineHeight),
-      separator_color_);
+      separator_color);
+}
+
+void InfoBarBackground::PaintMd(gfx::Canvas* canvas, views::View* view) const {
+  InfoBarView* infobar = static_cast<InfoBarView*>(view);
+  const infobars::InfoBarContainer::Delegate* delegate =
+      infobar->container_delegate();
+  SkPath stroke_path, fill_path;
+  SkColor separator_color = SK_ColorBLACK;
+  if (delegate) {
+    separator_color = delegate->GetInfoBarSeparatorColor();
+    int arrow_x;
+    if (delegate->DrawInfoBarArrows(&arrow_x) && infobar->arrow_height() > 0) {
+      SkScalar arrow_fill_height = SkIntToScalar(infobar->arrow_height());
+      SkScalar arrow_fill_half_width =
+          SkIntToScalar(infobar->arrow_half_width());
+      stroke_path.moveTo(SkIntToScalar(arrow_x) - arrow_fill_half_width,
+                         SkIntToScalar(infobar->arrow_height()));
+      stroke_path.rLineTo(arrow_fill_half_width, -arrow_fill_height);
+      stroke_path.rLineTo(arrow_fill_half_width, arrow_fill_height);
+
+      fill_path = stroke_path;
+      fill_path.close();
+    }
+  }
+  fill_path.addRect(0, SkIntToScalar(infobar->arrow_height()),
+                    SkIntToScalar(infobar->width()),
+                    SkIntToScalar(infobar->height()));
+
+  gfx::ScopedCanvas scoped(canvas);
+  // Undo the scale factor so we can stroke with a width of 1px (not 1dp).
+  const float scale = canvas->UndoDeviceScaleFactor();
+  // View bounds are in dp. Manually scale for px.
+  gfx::SizeF view_size_px = gfx::ScaleSize(gfx::SizeF(view->size()), scale);
+
+  SkPaint fill;
+  fill.setStyle(SkPaint::kFill_Style);
+  fill.setColor(top_color_);
+
+  SkCanvas* canvas_skia = canvas->sk_canvas();
+  // The paths provided by the above calculations are in dp. Manually scale for
+  // px.
+  SkMatrix dsf_transform;
+  dsf_transform.setScale(SkFloatToScalar(scale), SkFloatToScalar(scale));
+  fill_path.transform(dsf_transform);
+  // In order to affect exactly the pixels we want, the fill and stroke paths
+  // need to go through the pixel centers instead of along the pixel
+  // edges/corners. Skia considers integral coordinates to be the edges between
+  // pixels, so offset by 0.5 to get to the centers.
+  fill_path.offset(SK_ScalarHalf, SK_ScalarHalf);
+  canvas_skia->drawPath(fill_path, fill);
+
+  SkPaint stroke;
+  stroke.setStyle(SkPaint::kStroke_Style);
+  const int kSeparatorThicknessPx = 1;
+  stroke.setStrokeWidth(SkIntToScalar(kSeparatorThicknessPx));
+  stroke.setColor(separator_color);
+  stroke_path.transform(dsf_transform);
+  stroke_path.offset(SK_ScalarHalf, SK_ScalarHalf);
+
+  // The arrow part of the top separator. (The rest was drawn by the toolbar or
+  // the infobar above this one.)
+  stroke.setAntiAlias(true);
+  canvas_skia->drawPath(stroke_path, stroke);
+  // Bottom separator.
+  stroke.setAntiAlias(false);
+  SkScalar y = SkIntToScalar(view_size_px.height() - kSeparatorThicknessPx) +
+               SK_ScalarHalf;
+  SkScalar w = SkIntToScalar(view_size_px.width());
+  canvas_skia->drawLine(0, y, w, y, stroke);
 }
diff --git a/chrome/browser/ui/views/infobars/infobar_background.h b/chrome/browser/ui/views/infobars/infobar_background.h
index 631c3df7..1cb689b 100644
--- a/chrome/browser/ui/views/infobars/infobar_background.h
+++ b/chrome/browser/ui/views/infobars/infobar_background.h
@@ -15,13 +15,12 @@
   explicit InfoBarBackground(infobars::InfoBarDelegate::Type infobar_type);
   ~InfoBarBackground() override;
 
-  void set_separator_color(SkColor color) { separator_color_ = color; }
-
  private:
   // views::Background:
   void Paint(gfx::Canvas* canvas, views::View* view) const override;
 
-  SkColor separator_color_;
+  void PaintMd(gfx::Canvas* canvas, views::View* view) const;
+
   SkColor top_color_;
   SkColor bottom_color_;
 
diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc
index 7bf133f..d0b78c3 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_view.cc
@@ -102,6 +102,12 @@
   }
 }
 
+const infobars::InfoBarContainer::Delegate* InfoBarView::container_delegate()
+    const {
+  const infobars::InfoBarContainer* infobar_container = container();
+  return infobar_container ? infobar_container->delegate() : NULL;
+}
+
 InfoBarView::~InfoBarView() {
   // We should have closed any open menus in PlatformSpecificHide(), then
   // subclasses' RunMenu() functions should have prevented opening any new ones
@@ -180,12 +186,11 @@
   // Calculate the fill and stroke paths.  We do this here, rather than in
   // PlatformSpecificRecalculateHeight(), because this is also reached when our
   // width is changed, which affects both paths.
+  // TODO(estade): these paths aren't used for MD; remove when MD is default.
   stroke_path_.rewind();
   fill_path_.rewind();
   const infobars::InfoBarContainer::Delegate* delegate = container_delegate();
   if (delegate) {
-    static_cast<InfoBarBackground*>(background())->set_separator_color(
-        delegate->GetInfoBarSeparatorColor());
     int arrow_x;
     SkScalar arrow_fill_height = SkIntToScalar(std::max(
         arrow_height() - InfoBarContainerDelegate::kSeparatorLineHeight, 0));
@@ -332,12 +337,6 @@
          (bar_target_height() - bar_height());
 }
 
-const infobars::InfoBarContainer::Delegate* InfoBarView::container_delegate()
-    const {
-  const infobars::InfoBarContainer* infobar_container = container();
-  return infobar_container ? infobar_container->delegate() : NULL;
-}
-
 void InfoBarView::RunMenuAt(ui::MenuModel* menu_model,
                             views::MenuButton* button,
                             views::MenuAnchorPosition anchor) {
diff --git a/chrome/browser/ui/views/infobars/infobar_view.h b/chrome/browser/ui/views/infobars/infobar_view.h
index d7e80b6..c54108ce 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.h
+++ b/chrome/browser/ui/views/infobars/infobar_view.h
@@ -39,6 +39,7 @@
  public:
   explicit InfoBarView(scoped_ptr<infobars::InfoBarDelegate> delegate);
 
+  const infobars::InfoBarContainer::Delegate* container_delegate() const;
   const SkPath& fill_path() const { return fill_path_; }
   const SkPath& stroke_path() const { return stroke_path_; }
 
@@ -99,9 +100,6 @@
   // animate open and closed.
   int OffsetY(views::View* view) const;
 
-  // Convenience getter.
-  const infobars::InfoBarContainer::Delegate* container_delegate() const;
-
   // Shows a menu at the specified position.
   // NOTE: This must not be called if we're unowned.  (Subclasses should ignore
   // calls to RunMenu() in this case.)
@@ -146,7 +144,7 @@
   views::ImageButton* close_button_;
 
   // The paths for the InfoBarBackground to draw, sized according to the heights
-  // above.
+  // above. TODO(estade): remove these when MD is default.
   SkPath fill_path_;
   SkPath stroke_path_;
 
diff --git a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc
index 21e7858..85172f1 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc
@@ -8,6 +8,7 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "content/public/browser/notification_source.h"
 #include "ui/base/material_design/material_design_controller.h"
 #include "ui/gfx/geometry/rect.h"
@@ -27,7 +28,8 @@
             browser->exclusive_access_manager()->fullscreen_controller()));
   }
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(5, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 LocationBarBubbleDelegateView::~LocationBarBubbleDelegateView() {}
diff --git a/chrome/browser/ui/views/network_profile_bubble_view.cc b/chrome/browser/ui/views/network_profile_bubble_view.cc
index 69e0086..32fab33b 100644
--- a/chrome/browser/ui/views/network_profile_bubble_view.cc
+++ b/chrome/browser/ui/views/network_profile_bubble_view.cc
@@ -6,6 +6,7 @@
 
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/network_profile_bubble.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/app_menu_button.h"
@@ -25,7 +26,6 @@
 namespace {
 
 // Bubble layout constants.
-const int kAnchorVerticalInset = 5;
 const int kInset = 2;
 const int kNotificationBubbleWidth = 250;
 
@@ -63,7 +63,8 @@
       navigator_(navigator),
       profile_(profile) {
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(kAnchorVerticalInset, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
index f2c7777..8b786b5 100644
--- a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
+++ b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/histogram.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/elevation_icon_setter.h"
 #include "chrome/browser/upgrade_detector.h"
 #include "chrome/common/pref_names.h"
@@ -192,7 +193,8 @@
       later_button_(NULL),
       navigator_(navigator) {
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 }
 
 void OutdatedUpgradeBubbleView::ButtonPressed(
diff --git a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
index bc8cc01..c82a5c91 100644
--- a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
+++ b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_dialogs.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/collected_cookies_views.h"
 #include "chrome/browser/ui/views/website_settings/chosen_object_view.h"
 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h"
@@ -86,10 +87,6 @@
 // the popup header.
 const int kHeaderRowSpacing = 4;
 
-// To make the bubble's arrow point directly at the location icon rather than at
-// the Omnibox's edge, inset the bubble's anchor rect by this amount of pixels.
-const int kLocationIconVerticalMargin = 5;
-
 // The max possible width of the popup.
 const int kMaxPopupWidth = 1000;
 
@@ -327,8 +324,8 @@
   set_parent_window(parent_window);
 
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(kLocationIconVerticalMargin, 0,
-                                     kLocationIconVerticalMargin, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 
   const int kSpacing = 16;
   SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, kSpacing,
@@ -434,8 +431,8 @@
       profile->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled);
 
   // Compensate for built-in vertical padding in the anchor view's image.
-  set_anchor_view_insets(gfx::Insets(kLocationIconVerticalMargin, 0,
-                                     kLocationIconVerticalMargin, 0));
+  set_anchor_view_insets(gfx::Insets(
+      GetLayoutConstant(LOCATION_BAR_BUBBLE_ANCHOR_VERTICAL_INSET), 0));
 
   views::GridLayout* layout = new views::GridLayout(this);
   SetLayoutManager(layout);
diff --git a/chrome/browser/ui/webui/DEPS b/chrome/browser/ui/webui/DEPS
index 1c3fbd8..38d38fe 100644
--- a/chrome/browser/ui/webui/DEPS
+++ b/chrome/browser/ui/webui/DEPS
@@ -1,16 +1,18 @@
 include_rules = [
+  "+components/invalidation",
+  "+components/onc",
+  "+components/proximity_auth",
+  "+device/bluetooth",
+  "+device/nfc",
+  "+sync/internal_api/public/events",
+  "+sync/internal_api/public/sessions",
+  "+sync/internal_api/public/util/weak_handle.h",
+  "+sync/js",
+
   # Generated files
   "+js2webui/chrome/test/data",
 
-  "+sync/js",
-  "+sync/internal_api/public/sessions",
-  "+sync/internal_api/public/events",
-  "+sync/internal_api/public/util/weak_handle.h",
-
   # Other libraries.
-  "+components/onc",
-  "+device/bluetooth",
-  "+device/nfc",
   "+third_party/angle",       # For ANGLE version.
   "+third_party/zlib/zlib.h", # For compression level constants.
   "+third_party/libaddressinput", # For i18n address input.
@@ -18,7 +20,4 @@
   # DOM Distiller.
   "+components/dom_distiller/core",
   "+components/dom_distiller/webui",
-
-  "+components/invalidation",
-  "+components/proximity_auth",
 ]
diff --git a/chrome/browser/ui/webui/media_router/media_router_localized_strings_provider.cc b/chrome/browser/ui/webui/media_router/media_router_localized_strings_provider.cc
index dda40937..66a54e7 100644
--- a/chrome/browser/ui/webui/media_router/media_router_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/media_router/media_router_localized_strings_provider.cc
@@ -17,6 +17,14 @@
   html_source->AddLocalizedString("mediaRouterTitle", IDS_MEDIA_ROUTER_TITLE);
   html_source->AddLocalizedString("learnMoreText",
                                   IDS_MEDIA_ROUTER_LEARN_MORE);
+  html_source->AddLocalizedString("backButtonTitle",
+                                  IDS_MEDIA_ROUTER_BACK_BUTTON_TITLE);
+  html_source->AddLocalizedString("closeButtonTitle",
+                                  IDS_MEDIA_ROUTER_CLOSE_BUTTON_TITLE);
+  html_source->AddLocalizedString("dropDownButtonTitle",
+                                  IDS_MEDIA_ROUTER_DROP_DOWN_BUTTON_TITLE);
+  html_source->AddLocalizedString("searchButtonTitle",
+                                  IDS_MEDIA_ROUTER_SEARCH_BUTTON_TITLE);
 }
 
 void AddRouteDetailsStrings(content::WebUIDataSource* html_source) {
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
index 78b67d41..b4506f5 100644
--- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -205,10 +205,18 @@
       {"certificateManagerPageTitle", IDS_SETTINGS_CERTIFICATE_MANAGER},
       {"certificateManagerYourCertificates",
        IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES},
+      {"certificateManagerYourCertificatesDescription",
+       IDS_SETTINGS_CERTIFICATE_MANAGER_YOUR_CERTIFICATES_DESCRIPTION},
       {"certificateManagerServers", IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS},
+      {"certificateManagerServersDescription",
+       IDS_SETTINGS_CERTIFICATE_MANAGER_SERVERS_DESCRIPTION},
       {"certificateManagerAuthorities",
        IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES},
+      {"certificateManagerAuthoritiesDescription",
+       IDS_SETTINGS_CERTIFICATE_MANAGER_AUTHORITIES_DESCRIPTION},
       {"certificateManagerOthers", IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS},
+      {"certificateManagerOthersDescription",
+       IDS_SETTINGS_CERTIFICATE_MANAGER_OTHERS_DESCRIPTION},
       {"certificateManagerView", IDS_SETTINGS_CERTIFICATE_MANAGER_VIEW},
       {"certificateManagerEdit", IDS_SETTINGS_CERTIFICATE_MANAGER_EDIT},
       {"certificateManagerImport", IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT},
diff --git a/chrome/chrome_plugin.gypi b/chrome/chrome_plugin.gypi
index 1cf98f8..4b1ddb2 100644
--- a/chrome/chrome_plugin.gypi
+++ b/chrome/chrome_plugin.gypi
@@ -10,7 +10,6 @@
       'variables': { 'enable_wexit_time_destructors': 1, },
       'dependencies': [
         '../base/base.gyp:base',
-        '../content/content.gyp:content_plugin',
         '../gin/gin.gyp:gin',
         'chrome_features.gyp:chrome_common_features',
         'chrome_resources.gyp:chrome_strings',
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi
index 1afaa0fa..eed998e3 100644
--- a/chrome/chrome_renderer.gypi
+++ b/chrome/chrome_renderer.gypi
@@ -123,8 +123,8 @@
       'renderer/media/cast_session_delegate.h',
       'renderer/media/cast_threads.cc',
       'renderer/media/cast_threads.h',
-      'renderer/media/cast_transport_sender_ipc.cc',
-      'renderer/media/cast_transport_sender_ipc.h',
+      'renderer/media/cast_transport_ipc.cc',
+      'renderer/media/cast_transport_ipc.h',
       'renderer/media/cast_udp_transport.cc',
       'renderer/media/cast_udp_transport.h',
       'renderer/resources/extensions/app_custom_bindings.js',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 781db9a9..1c1225b 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -1862,7 +1862,6 @@
             'renderer',
             'utility',
             '../content/content.gyp:content_gpu',
-            '../content/content.gyp:content_plugin',
             '../content/content.gyp:content_ppapi_plugin',
             '../content/content.gyp:content_renderer',
             '../content/content.gyp:content_utility',
diff --git a/chrome/common/DEPS b/chrome/common/DEPS
index 52cf585..3234cc6 100644
--- a/chrome/common/DEPS
+++ b/chrome/common/DEPS
@@ -18,8 +18,8 @@
   "+components/nacl/common",
   "+components/offline_pages/offline_page_feature.h",
   "+components/password_manager/core/common",
-  "+components/printing/common",
   "+components/policy/core/common",
+  "+components/printing/common",
   "+components/signin/core/common",
   # TODO(fdoray): Remove this once the PreRead field trial has expired.
   # crbug.com/577698
diff --git a/chrome/common/cast_messages.h b/chrome/common/cast_messages.h
index f0e6fa6..aa68177 100644
--- a/chrome/common/cast_messages.h
+++ b/chrome/common/cast_messages.h
@@ -9,7 +9,7 @@
 #include "ipc/ipc_message_macros.h"
 #include "media/cast/common/rtp_time.h"
 #include "media/cast/logging/logging_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/rtcp/rtcp_defines.h"
 #include "net/base/ip_endpoint.h"
 
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 33af97d..7410935 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -1309,8 +1309,6 @@
     "tab-management-experiment-type-dill";
 const char kTabManagementExperimentTypeElderberry[] =
     "tab-management-experiment-type-elderberry";
-const char kEnableForcedMigrationToTabbedMode[] =
-    "enable-forced-migration-to-tabbed-mode";
 #endif  // defined(OS_ANDROID)
 
 #if defined(OS_WIN) || defined(OS_LINUX)
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index d931240..a82ca41 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -316,7 +316,6 @@
 extern const char kTabManagementExperimentTypeChive[];
 extern const char kTabManagementExperimentTypeDill[];
 extern const char kTabManagementExperimentTypeElderberry[];
-extern const char kEnableForcedMigrationToTabbedMode[];
 #endif  // defined(OS_ANDROID)
 
 #if defined(USE_ASH)
diff --git a/chrome/installer/setup/DEPS b/chrome/installer/setup/DEPS
index e30990a8..4037d207 100644
--- a/chrome/installer/setup/DEPS
+++ b/chrome/installer/setup/DEPS
@@ -1,4 +1,4 @@
 include_rules = [
-  "+courgette",
   "+chrome_elf/chrome_elf_constants.h",
+  "+courgette",
 ]
diff --git a/chrome/installer/util/user_experiment.cc b/chrome/installer/util/user_experiment.cc
index 796a79c..7ca824c 100644
--- a/chrome/installer/util/user_experiment.cc
+++ b/chrome/installer/util/user_experiment.cc
@@ -35,8 +35,6 @@
 #include "chrome/installer/util/product.h"
 #include "content/public/common/result_codes.h"
 
-#pragma comment(lib, "wtsapi32.lib")
-
 namespace installer {
 
 namespace {
diff --git a/chrome/installer/util/wmi.cc b/chrome/installer/util/wmi.cc
index 2b8c9f9..fd65773 100644
--- a/chrome/installer/util/wmi.cc
+++ b/chrome/installer/util/wmi.cc
@@ -11,8 +11,6 @@
 #include "base/win/scoped_comptr.h"
 #include "base/win/scoped_variant.h"
 
-#pragma comment(lib, "wbemuuid.lib")
-
 using base::win::ScopedVariant;
 
 namespace installer {
diff --git a/chrome/renderer/DEPS b/chrome/renderer/DEPS
index 97e9547..888f923 100644
--- a/chrome/renderer/DEPS
+++ b/chrome/renderer/DEPS
@@ -10,19 +10,19 @@
   "+components/crx_file",
   "+components/data_reduction_proxy/content/common",
   "+components/data_reduction_proxy/core/common",
-  "+components/dom_distiller/core",
   "+components/dom_distiller/content/common",
   "+components/dom_distiller/content/renderer",
+  "+components/dom_distiller/core",
   "+components/guest_view/renderer",
   "+components/nacl/common",
   "+components/nacl/renderer",
+  "+components/network_hints/renderer",
   "+components/page_load_metrics/renderer",
   "+components/password_manager/content/renderer",
   "+components/pdf/renderer",
   "+components/plugins/renderer",
   "+components/printing/common",
   "+components/printing/renderer",
-  "+components/network_hints/renderer",
   "+components/signin/core/common",
   "+components/startup_metric_utils/common",
   "+components/strings/grit",  # For generated headers
@@ -39,9 +39,9 @@
   "+content/public/renderer",
   "+extensions/common",
   "+extensions/renderer",
-  "+media/base",
   "+gin",
   "+grit",  # For generated headers. TODO(thestig): Remove.
+  "+media/base",
   "+ppapi/c",
   "+ppapi/shared_impl",
   "+skia",
diff --git a/chrome/renderer/media/DEPS b/chrome/renderer/media/DEPS
index 657bdead..5475cf4 100644
--- a/chrome/renderer/media/DEPS
+++ b/chrome/renderer/media/DEPS
@@ -2,5 +2,5 @@
   "+media/audio",  # For basic audio functions.
   "+media/video",  # For basic video functions.
   "+media/base",  # For basic media functions.
-  "+media/cast",  # For cast streaming library.  
+  "+media/cast",  # For cast streaming library.
 ]
diff --git a/chrome/renderer/media/cast_ipc_dispatcher.cc b/chrome/renderer/media/cast_ipc_dispatcher.cc
index 61cdd94..5ebfb5a 100644
--- a/chrome/renderer/media/cast_ipc_dispatcher.cc
+++ b/chrome/renderer/media/cast_ipc_dispatcher.cc
@@ -6,7 +6,7 @@
 
 #include "base/single_thread_task_runner.h"
 #include "chrome/common/cast_messages.h"
-#include "chrome/renderer/media/cast_transport_sender_ipc.h"
+#include "chrome/renderer/media/cast_transport_ipc.h"
 #include "ipc/ipc_message_macros.h"
 
 CastIPCDispatcher* CastIPCDispatcher::global_instance_ = NULL;
@@ -37,7 +37,7 @@
   }
 }
 
-int32_t CastIPCDispatcher::AddSender(CastTransportSenderIPC* sender) {
+int32_t CastIPCDispatcher::AddSender(CastTransportIPC* sender) {
   return id_map_.Add(sender);
 }
 
@@ -82,7 +82,7 @@
 void CastIPCDispatcher::OnNotifyStatusChange(
     int32_t channel_id,
     media::cast::CastTransportStatus status) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnNotifyStatusChange(status);
   } else {
@@ -95,7 +95,7 @@
     int32_t channel_id,
     const std::vector<media::cast::PacketEvent>& packet_events,
     const std::vector<media::cast::FrameEvent>& frame_events) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnRawEvents(packet_events, frame_events);
   } else {
@@ -106,7 +106,7 @@
 void CastIPCDispatcher::OnRtt(int32_t channel_id,
                               uint32_t ssrc,
                               base::TimeDelta rtt) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnRtt(ssrc, rtt);
   } else {
@@ -118,7 +118,7 @@
     int32_t channel_id,
     uint32_t ssrc,
     const media::cast::RtcpCastMessage& cast_message) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnRtcpCastMessage(ssrc, cast_message);
   } else {
@@ -127,7 +127,7 @@
 }
 
 void CastIPCDispatcher::OnReceivedPli(int32_t channel_id, int32_t ssrc) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnReceivedPli(ssrc);
   } else {
@@ -138,7 +138,7 @@
 
 void CastIPCDispatcher::OnReceivedPacket(int32_t channel_id,
                                          const media::cast::Packet& packet) {
-  CastTransportSenderIPC* sender = id_map_.Lookup(channel_id);
+  CastTransportIPC* sender = id_map_.Lookup(channel_id);
   if (sender) {
     sender->OnReceivedPacket(packet);
   } else {
diff --git a/chrome/renderer/media/cast_ipc_dispatcher.h b/chrome/renderer/media/cast_ipc_dispatcher.h
index ffdf61a..979c164 100644
--- a/chrome/renderer/media/cast_ipc_dispatcher.h
+++ b/chrome/renderer/media/cast_ipc_dispatcher.h
@@ -15,12 +15,12 @@
 #include "ipc/message_filter.h"
 #include "media/cast/cast_sender.h"
 #include "media/cast/logging/logging_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 
-class CastTransportSenderIPC;
+class CastTransportIPC;
 
 // This dispatcher listens to incoming IPC messages and sends
-// the call to the correct CastTransportSenderIPC instance.
+// the call to the correct CastTransportIPC instance.
 class CastIPCDispatcher : public IPC::MessageFilter {
  public:
   explicit CastIPCDispatcher(
@@ -28,7 +28,7 @@
 
   static CastIPCDispatcher* Get();
   void Send(IPC::Message* message);
-  int32_t AddSender(CastTransportSenderIPC* sender);
+  int32_t AddSender(CastTransportIPC* sender);
   void RemoveSender(int32_t channel_id);
 
   // IPC::MessageFilter implementation
@@ -68,7 +68,7 @@
 
   // A map of stream ids to delegates; must only be accessed on
   // |io_message_loop_|.
-  IDMap<CastTransportSenderIPC> id_map_;
+  IDMap<CastTransportIPC> id_map_;
   DISALLOW_COPY_AND_ASSIGN(CastIPCDispatcher);
 };
 
diff --git a/chrome/renderer/media/cast_session_delegate.cc b/chrome/renderer/media/cast_session_delegate.cc
index 08d069a..7c4f7a2 100644
--- a/chrome/renderer/media/cast_session_delegate.cc
+++ b/chrome/renderer/media/cast_session_delegate.cc
@@ -14,7 +14,7 @@
 #include "base/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "chrome/renderer/media/cast_threads.h"
-#include "chrome/renderer/media/cast_transport_sender_ipc.h"
+#include "chrome/renderer/media/cast_transport_ipc.h"
 #include "components/version_info/version_info.h"
 #include "content/public/renderer/render_thread.h"
 #include "media/cast/cast_config.h"
@@ -24,8 +24,8 @@
 #include "media/cast/logging/logging_defines.h"
 #include "media/cast/logging/proto/raw_events.pb.h"
 #include "media/cast/logging/raw_event_subscriber_bundle.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender.h"
 
 using media::cast::AudioSenderConfig;
 using media::cast::CastEnvironment;
@@ -73,8 +73,8 @@
       g_cast_threads.Get().GetVideoEncodeMessageLoopProxy());
 
   // Rationale for using unretained: The callback cannot be called after the
-  // destruction of CastTransportSenderIPC, and they both share the same thread.
-  cast_transport_.reset(new CastTransportSenderIPC(
+  // destruction of CastTransportIPC, and they both share the same thread.
+  cast_transport_.reset(new CastTransportIPC(
       local_endpoint, remote_endpoint, std::move(options),
       base::Bind(&CastSessionDelegateBase::ReceivePacket,
                  base::Unretained(this)),
diff --git a/chrome/renderer/media/cast_session_delegate.h b/chrome/renderer/media/cast_session_delegate.h
index 7b678018..c7f1b58e 100644
--- a/chrome/renderer/media/cast_session_delegate.h
+++ b/chrome/renderer/media/cast_session_delegate.h
@@ -34,7 +34,7 @@
 class RawEventSubscriberBundle;
 
 namespace transport {
-class CastTransportSender;
+class CastTransport;
 }  // namespace transport
 }  // namespace cast
 }  // namespace media
@@ -65,7 +65,7 @@
 
   base::ThreadChecker thread_checker_;
   scoped_refptr<media::cast::CastEnvironment> cast_environment_;
-  scoped_ptr<media::cast::CastTransportSender> cast_transport_;
+  scoped_ptr<media::cast::CastTransport> cast_transport_;
 
   // Proxy to the IO message loop.
   const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
diff --git a/chrome/renderer/media/cast_transport_sender_ipc.cc b/chrome/renderer/media/cast_transport_ipc.cc
similarity index 70%
rename from chrome/renderer/media/cast_transport_sender_ipc.cc
rename to chrome/renderer/media/cast_transport_ipc.cc
index ec38b75..196e244 100644
--- a/chrome/renderer/media/cast_transport_sender_ipc.cc
+++ b/chrome/renderer/media/cast_transport_ipc.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/renderer/media/cast_transport_sender_ipc.h"
+#include "chrome/renderer/media/cast_transport_ipc.h"
 
 #include <utility>
 
@@ -13,38 +13,36 @@
 #include "ipc/ipc_channel_proxy.h"
 #include "media/cast/cast_sender.h"
 
-CastTransportSenderIPC::ClientCallbacks::ClientCallbacks() {}
-CastTransportSenderIPC::ClientCallbacks::ClientCallbacks(
+CastTransportIPC::ClientCallbacks::ClientCallbacks() {}
+CastTransportIPC::ClientCallbacks::ClientCallbacks(
     const ClientCallbacks& other) = default;
-CastTransportSenderIPC::ClientCallbacks::~ClientCallbacks() {}
+CastTransportIPC::ClientCallbacks::~ClientCallbacks() {}
 
-CastTransportSenderIPC::CastTransportSenderIPC(
+CastTransportIPC::CastTransportIPC(
     const net::IPEndPoint& local_end_point,
     const net::IPEndPoint& remote_end_point,
     scoped_ptr<base::DictionaryValue> options,
     const media::cast::PacketReceiverCallback& packet_callback,
     const media::cast::CastTransportStatusCallback& status_cb,
     const media::cast::BulkRawEventsCallback& raw_events_cb)
-    : packet_callback_(packet_callback) ,
+    : packet_callback_(packet_callback),
       status_callback_(status_cb),
       raw_events_callback_(raw_events_cb) {
   if (CastIPCDispatcher::Get()) {
     channel_id_ = CastIPCDispatcher::Get()->AddSender(this);
   }
-  Send(new CastHostMsg_New(channel_id_,
-                           local_end_point,
-                           remote_end_point,
+  Send(new CastHostMsg_New(channel_id_, local_end_point, remote_end_point,
                            *options));
 }
 
-CastTransportSenderIPC::~CastTransportSenderIPC() {
+CastTransportIPC::~CastTransportIPC() {
   Send(new CastHostMsg_Delete(channel_id_));
   if (CastIPCDispatcher::Get()) {
     CastIPCDispatcher::Get()->RemoveSender(channel_id_);
   }
 }
 
-void CastTransportSenderIPC::InitializeAudio(
+void CastTransportIPC::InitializeAudio(
     const media::cast::CastTransportRtpConfig& config,
     const media::cast::RtcpCastMessageCallback& cast_message_cb,
     const media::cast::RtcpRttCallback& rtt_cb,
@@ -55,7 +53,7 @@
   Send(new CastHostMsg_InitializeAudio(channel_id_, config));
 }
 
-void CastTransportSenderIPC::InitializeVideo(
+void CastTransportIPC::InitializeVideo(
     const media::cast::CastTransportRtpConfig& config,
     const media::cast::RtcpCastMessageCallback& cast_message_cb,
     const media::cast::RtcpRttCallback& rtt_cb,
@@ -66,83 +64,75 @@
   Send(new CastHostMsg_InitializeVideo(channel_id_, config));
 }
 
-void CastTransportSenderIPC::InsertFrame(
-    uint32_t ssrc,
-    const media::cast::EncodedFrame& frame) {
+void CastTransportIPC::InsertFrame(uint32_t ssrc,
+                                   const media::cast::EncodedFrame& frame) {
   Send(new CastHostMsg_InsertFrame(channel_id_, ssrc, frame));
 }
 
-void CastTransportSenderIPC::SendSenderReport(
+void CastTransportIPC::SendSenderReport(
     uint32_t ssrc,
     base::TimeTicks current_time,
     media::cast::RtpTimeTicks current_time_as_rtp_timestamp) {
-  Send(new CastHostMsg_SendSenderReport(channel_id_,
-                                        ssrc,
-                                        current_time,
+  Send(new CastHostMsg_SendSenderReport(channel_id_, ssrc, current_time,
                                         current_time_as_rtp_timestamp));
 }
 
-void CastTransportSenderIPC::CancelSendingFrames(
+void CastTransportIPC::CancelSendingFrames(
     uint32_t ssrc,
     const std::vector<uint32_t>& frame_ids) {
-  Send(new CastHostMsg_CancelSendingFrames(channel_id_,
-                                           ssrc,
-                                           frame_ids));
+  Send(new CastHostMsg_CancelSendingFrames(channel_id_, ssrc, frame_ids));
 }
 
-void CastTransportSenderIPC::ResendFrameForKickstart(uint32_t ssrc,
-                                                     uint32_t frame_id) {
-  Send(new CastHostMsg_ResendFrameForKickstart(channel_id_,
-                                               ssrc,
-                                               frame_id));
+void CastTransportIPC::ResendFrameForKickstart(uint32_t ssrc,
+                                               uint32_t frame_id) {
+  Send(new CastHostMsg_ResendFrameForKickstart(channel_id_, ssrc, frame_id));
 }
 
-void CastTransportSenderIPC::AddValidRtpReceiver(uint32_t rtp_sender_ssrc,
-                                                 uint32_t rtp_receiver_ssrc) {
+void CastTransportIPC::AddValidRtpReceiver(uint32_t rtp_sender_ssrc,
+                                           uint32_t rtp_receiver_ssrc) {
   Send(new CastHostMsg_AddValidRtpReceiver(channel_id_, rtp_sender_ssrc,
                                            rtp_receiver_ssrc));
 }
 
-void CastTransportSenderIPC::InitializeRtpReceiverRtcpBuilder(
+void CastTransportIPC::InitializeRtpReceiverRtcpBuilder(
     uint32_t rtp_receiver_ssrc,
     const media::cast::RtcpTimeData& time_data) {
   Send(new CastHostMsg_InitializeRtpReceiverRtcpBuilder(
       channel_id_, rtp_receiver_ssrc, time_data));
 }
 
-void CastTransportSenderIPC::AddCastFeedback(
+void CastTransportIPC::AddCastFeedback(
     const media::cast::RtcpCastMessage& cast_message,
     base::TimeDelta target_delay) {
   Send(
       new CastHostMsg_AddCastFeedback(channel_id_, cast_message, target_delay));
 }
 
-void CastTransportSenderIPC::AddPli(
-    const media::cast::RtcpPliMessage& pli_message) {
+void CastTransportIPC::AddPli(const media::cast::RtcpPliMessage& pli_message) {
   Send(new CastHostMsg_AddPli(channel_id_, pli_message));
 }
 
-void CastTransportSenderIPC::AddRtcpEvents(
+void CastTransportIPC::AddRtcpEvents(
     const media::cast::ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events) {
   Send(new CastHostMsg_AddRtcpEvents(channel_id_, rtcp_events));
 }
 
-void CastTransportSenderIPC::AddRtpReceiverReport(
+void CastTransportIPC::AddRtpReceiverReport(
     const media::cast::RtcpReportBlock& rtp_receiver_report_block) {
   Send(new CastHostMsg_AddRtpReceiverReport(channel_id_,
                                             rtp_receiver_report_block));
 }
 
-void CastTransportSenderIPC::SendRtcpFromRtpReceiver() {
+void CastTransportIPC::SendRtcpFromRtpReceiver() {
   Send(new CastHostMsg_SendRtcpFromRtpReceiver(channel_id_));
 }
 
-void CastTransportSenderIPC::OnNotifyStatusChange(
+void CastTransportIPC::OnNotifyStatusChange(
     media::cast::CastTransportStatus status) {
   status_callback_.Run(status);
 }
 
-void CastTransportSenderIPC::OnRawEvents(
+void CastTransportIPC::OnRawEvents(
     const std::vector<media::cast::PacketEvent>& packet_events,
     const std::vector<media::cast::FrameEvent>& frame_events) {
   // Note: Casting away const to avoid having to copy all the data elements.  As
@@ -160,8 +150,7 @@
                            std::move(taken_packet_events));
 }
 
-void CastTransportSenderIPC::OnRtt(uint32_t rtp_sender_ssrc,
-                                   base::TimeDelta rtt) {
+void CastTransportIPC::OnRtt(uint32_t rtp_sender_ssrc, base::TimeDelta rtt) {
   ClientMap::iterator it = clients_.find(rtp_sender_ssrc);
   if (it == clients_.end()) {
     LOG(ERROR) << "Received RTT report for unknown SSRC: " << rtp_sender_ssrc;
@@ -171,7 +160,7 @@
     it->second.rtt_cb.Run(rtt);
 }
 
-void CastTransportSenderIPC::OnRtcpCastMessage(
+void CastTransportIPC::OnRtcpCastMessage(
     uint32_t rtp_sender_ssrc,
     const media::cast::RtcpCastMessage& cast_message) {
   ClientMap::iterator it = clients_.find(rtp_sender_ssrc);
@@ -184,7 +173,7 @@
   it->second.cast_message_cb.Run(cast_message);
 }
 
-void CastTransportSenderIPC::OnReceivedPli(uint32_t rtp_sender_ssrc) {
+void CastTransportIPC::OnReceivedPli(uint32_t rtp_sender_ssrc) {
   ClientMap::iterator it = clients_.find(rtp_sender_ssrc);
   if (it == clients_.end()) {
     LOG(ERROR) << "Received picture loss indicator for unknown SSRC: "
@@ -195,8 +184,7 @@
     it->second.pli_cb.Run();
 }
 
-void CastTransportSenderIPC::OnReceivedPacket(
-    const media::cast::Packet& packet) {
+void CastTransportIPC::OnReceivedPacket(const media::cast::Packet& packet) {
   if (!packet_callback_.is_null()) {
     // TODO(hubbe): Perhaps an non-ownership-transferring cb here?
     scoped_ptr<media::cast::Packet> packet_copy(
@@ -207,7 +195,7 @@
   }
 }
 
-void CastTransportSenderIPC::Send(IPC::Message* message) {
+void CastTransportIPC::Send(IPC::Message* message) {
   if (CastIPCDispatcher::Get()) {
     CastIPCDispatcher::Get()->Send(message);
   } else {
diff --git a/chrome/renderer/media/cast_transport_sender_ipc.h b/chrome/renderer/media/cast_transport_ipc.h
similarity index 73%
rename from chrome/renderer/media/cast_transport_sender_ipc.h
rename to chrome/renderer/media/cast_transport_ipc.h
index 6908f3d..4fe22e35 100644
--- a/chrome/renderer/media/cast_transport_sender_ipc.h
+++ b/chrome/renderer/media/cast_transport_ipc.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_RENDERER_MEDIA_CAST_TRANSPORT_SENDER_IPC_H_
-#define CHROME_RENDERER_MEDIA_CAST_TRANSPORT_SENDER_IPC_H_
+#ifndef CHROME_RENDERER_MEDIA_CAST_TRANSPORT_IPC_H_
+#define CHROME_RENDERER_MEDIA_CAST_TRANSPORT_IPC_H_
 
 #include <stdint.h>
 
@@ -13,27 +13,24 @@
 #include "base/thread_task_runner_handle.h"
 #include "ipc/ipc_channel_proxy.h"
 #include "media/cast/logging/logging_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 
-// This implementation of the CastTransportSender interface
-// communicates with the browser process over IPC and relays
-// all calls to/from the transport sender to the browser process.
-// The primary reason for this arrangement is to give the
+// This implementation of the CastTransport interface communicates with the
+// browser process over IPC and relays all calls to/from the cast transport to
+// the browser process. The primary reason for this arrangement is to give the
 // renderer less direct control over the UDP sockets.
-class CastTransportSenderIPC
-    : public media::cast::CastTransportSender {
+class CastTransportIPC : public media::cast::CastTransport {
  public:
-  CastTransportSenderIPC(
-      const net::IPEndPoint& local_end_point,
-      const net::IPEndPoint& remote_end_point,
-      scoped_ptr<base::DictionaryValue> options,
-      const media::cast::PacketReceiverCallback& packet_callback,
-      const media::cast::CastTransportStatusCallback& status_cb,
-      const media::cast::BulkRawEventsCallback& raw_events_cb);
+  CastTransportIPC(const net::IPEndPoint& local_end_point,
+                   const net::IPEndPoint& remote_end_point,
+                   scoped_ptr<base::DictionaryValue> options,
+                   const media::cast::PacketReceiverCallback& packet_callback,
+                   const media::cast::CastTransportStatusCallback& status_cb,
+                   const media::cast::BulkRawEventsCallback& raw_events_cb);
 
-  ~CastTransportSenderIPC() override;
+  ~CastTransportIPC() override;
 
-  // media::cast::CastTransportSender implementation.
+  // media::cast::CastTransport implementation.
   void InitializeAudio(
       const media::cast::CastTransportRtpConfig& config,
       const media::cast::RtcpCastMessageCallback& cast_message_cb,
@@ -67,8 +64,7 @@
       const media::cast::RtcpReportBlock& rtp_receiver_report_block) override;
   void SendRtcpFromRtpReceiver() override;
   void SetOptions(const base::DictionaryValue& options) final {}
-  void OnNotifyStatusChange(
-      media::cast::CastTransportStatus status);
+  void OnNotifyStatusChange(media::cast::CastTransportStatus status);
   void OnRawEvents(const std::vector<media::cast::PacketEvent>& packet_events,
                    const std::vector<media::cast::FrameEvent>& frame_events);
   void OnRtt(uint32_t rtp_sender_ssrc, base::TimeDelta rtt);
@@ -97,7 +93,7 @@
   typedef std::map<uint32_t, ClientCallbacks> ClientMap;
   ClientMap clients_;
 
-  DISALLOW_COPY_AND_ASSIGN(CastTransportSenderIPC);
+  DISALLOW_COPY_AND_ASSIGN(CastTransportIPC);
 };
 
-#endif  // CHROME_RENDERER_MEDIA_CAST_TRANSPORT_SENDER_IPC_H_
+#endif  // CHROME_RENDERER_MEDIA_CAST_TRANSPORT_IPC_H_
diff --git a/chrome/renderer/pepper/DEPS b/chrome/renderer/pepper/DEPS
index e19a4eee..4a32ee2 100644
--- a/chrome/renderer/pepper/DEPS
+++ b/chrome/renderer/pepper/DEPS
@@ -3,7 +3,7 @@
   "+components/nacl/renderer",
   "+ppapi/host",
   "+ppapi/proxy",
-  
+
   # TODO(raymes): Once all of the resources are refactored to the new pepper
   # resource model, these includes shouldn't be needed.
   "+ppapi/thunk",
diff --git a/chrome/test/data/webui/settings/certificate_manager_page_test.js b/chrome/test/data/webui/settings/certificate_manager_page_test.js
index bdb71b3..1f4316c8 100644
--- a/chrome/test/data/webui/settings/certificate_manager_page_test.js
+++ b/chrome/test/data/webui/settings/certificate_manager_page_test.js
@@ -20,7 +20,10 @@
       'exportPersonalCertificate',
       'exportPersonalCertificatePasswordSelected',
       'getCaCertificateTrust',
+      'importCaCertificate',
+      'importPersonalCertificate',
       'importPersonalCertificatePasswordSelected',
+      'importServerCertificate',
       'refreshCertificates',
       'viewCertificate',
     ]);
@@ -49,6 +52,18 @@
     },
 
     /** @override */
+    importServerCertificate: function() {
+      this.methodCalled('importServerCertificate');
+      return Promise.resolve();
+    },
+
+    /** @override */
+    importCaCertificate: function() {
+      this.methodCalled('importCaCertificate');
+      return Promise.resolve('dummyName');
+    },
+
+    /** @override */
     editCaCertificateTrust: function(id, ssl, email, objSign) {
       this.methodCalled('editCaCertificateTrust', {
         id: id, ssl: ssl, email: email, objSign: objSign,
@@ -89,6 +104,12 @@
     },
 
     /** @override */
+    importPersonalCertificate: function() {
+      this.methodCalled('importPersonalCertificate');
+      return Promise.resolve(true);
+    },
+
+    /** @override */
     importPersonalCertificatePasswordSelected: function(password) {
       this.resolverMap_.get(
           'importPersonalCertificatePasswordSelected').resolve(password);
@@ -554,7 +575,7 @@
   }
 
   function registerPageTests() {
-    /** @type {?SettingsCertificateManagerPage} */
+    /** @type {?SettingsCertificateManagerPageElement} */
     var page = null;
 
     /** @type {?TestCertificatesBrowserProxy} */
@@ -635,13 +656,13 @@
        *     simulate.
        */
       function dispatchCertificateActionEvent(action) {
-        var eventDetail = /** @type {!CertificateActionEventDetail} */ ({
+        page.fire(
+            settings.CertificateActionEvent,
+            /** @type {!CertificateActionEventDetail} */ ({
           action: action,
           subnode: createSampleCertificateSubnode(),
           certificateType: settings.CertificateType.PERSONAL
-        });
-        page.dispatchEvent(new CustomEvent(
-            settings.CertificateActionEvent, {detail: eventDetail}));
+        }));
       }
 
       /**
@@ -660,25 +681,95 @@
 
       test('OpensDialog_DeleteConfirmation', function() {
         testDialogOpensOnAction(
-              'settings-certificate-delete-confirmation-dialog',
-              settings.CertificateAction.DELETE);
+            'settings-certificate-delete-confirmation-dialog',
+            settings.CertificateAction.DELETE);
       });
 
       test('OpensDialog_PasswordEncryption', function() {
         testDialogOpensOnAction(
-              'settings-certificate-password-encryption-dialog',
-              settings.CertificateAction.EXPORT_PERSONAL);
+            'settings-certificate-password-encryption-dialog',
+            settings.CertificateAction.EXPORT_PERSONAL);
       });
 
       test('OpensDialog_PasswordDecryption', function() {
         testDialogOpensOnAction(
-              'settings-certificate-password-decryption-dialog',
-              settings.CertificateAction.IMPORT_PERSONAL);
+            'settings-certificate-password-decryption-dialog',
+            settings.CertificateAction.IMPORT);
       });
 
       test('OpensDialog_CaTrustEdit', function() {
         testDialogOpensOnAction(
-              'settings-ca-trust-edit-dialog', settings.CertificateAction.EDIT);
+            'settings-ca-trust-edit-dialog', settings.CertificateAction.EDIT);
+      });
+    });
+  }
+
+  function registerCertificateListTests() {
+    /** @type {?SettingsCertificateListElement} */
+    var element = null;
+
+    /** @type {?TestCertificatesBrowserProxy} */
+    var browserProxy = null;
+
+    suite('CertificateListTests', function() {
+      setup(function() {
+        browserProxy = new TestCertificatesBrowserProxy();
+        settings.CertificatesBrowserProxyImpl.instance_ = browserProxy;
+        PolymerTest.clearBody();
+        element = document.createElement('settings-certificate-list');
+        document.body.appendChild(element);
+      });
+
+      teardown(function() { element.remove(); });
+
+      /**
+       * Tests the "Import" button functionality.
+       * @param {!settings.CertificateType} certificateType
+       * @param {string} proxyMethodName The name of the proxy method expected
+       *     to be called.
+       * @param {boolean} actionEventExpected Whether a
+       *     settings.CertificateActionEvent is expected to fire as a result
+       *     tapping the Import button.
+       */
+      function testImportForCertificateType(
+          certificateType, proxyMethodName, actionEventExpected) {
+        element.certificateType = certificateType
+        Polymer.dom.flush();
+
+        var importButton = element.$$('paper-button');
+        assertTrue(!!importButton);
+
+        var waitForActionEvent = actionEventExpected ?
+            eventToPromise(settings.CertificateActionEvent, element) :
+            Promise.resolve(null);
+
+        MockInteractions.tap(importButton);
+        return browserProxy.whenCalled(proxyMethodName).then(function() {
+          return waitForActionEvent;
+        }).then(function(event) {
+          if (actionEventExpected) {
+            assertEquals(
+                settings.CertificateAction.IMPORT, event.detail.action);
+            assertEquals(certificateType, event.detail.certificateType);
+          }
+        });
+      }
+
+      test('ImportButton_Personal', function() {
+        return testImportForCertificateType(
+            settings.CertificateType.PERSONAL,
+            'importPersonalCertificate', true);
+      });
+
+      test('ImportButton_Server', function() {
+        return testImportForCertificateType(
+            settings.CertificateType.SERVER, 'importServerCertificate',
+            false);
+      });
+
+      test('ImportButton_CA', function() {
+        return testImportForCertificateType(
+            settings.CertificateType.CA, 'importCaCertificate', true);
       });
     });
   }
@@ -691,6 +782,7 @@
       registerPasswordDecryptDialogTests();
       registerPageTests();
       registerCertificateSubentryTests();
+      registerCertificateListTests();
     },
   };
 });
diff --git a/chrome/utility/DEPS b/chrome/utility/DEPS
index c2c7e7e..7bf6ee2 100644
--- a/chrome/utility/DEPS
+++ b/chrome/utility/DEPS
@@ -1,13 +1,13 @@
 include_rules = [
   "+chrome/grit",  # For generated headers.
+  "+components/safe_json",
+  "+components/wifi",
   "+content/public/child",
   "+content/public/utility",
-  "+components/wifi",
-  "+components/safe_json",
   "+courgette",
   "+extensions/common",
-  "+skia/ext",
   "+media",
+  "+skia/ext",
   "+third_party/libxml",
   "+third_party/zlib/google",
 ]
diff --git a/chrome/version.gni b/chrome/version.gni
index 2b53246..a29cb8d 100644
--- a/chrome/version.gni
+++ b/chrome/version.gni
@@ -95,6 +95,10 @@
 
     args = []
 
+    if (is_official_build) {
+      args += [ "--official" ]
+    }
+
     if (defined(invoker.sources)) {
       inputs += invoker.sources
       foreach(i, invoker.sources) {
diff --git a/chromecast/base/system_time_change_notifier_unittest.cc b/chromecast/base/system_time_change_notifier_unittest.cc
index 7a4ad95..2a3c19c70 100644
--- a/chromecast/base/system_time_change_notifier_unittest.cc
+++ b/chromecast/base/system_time_change_notifier_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/sequenced_task_runner.h"
diff --git a/chromecast/browser/media/cma_message_filter_host.cc b/chromecast/browser/media/cma_message_filter_host.cc
index 05a0374..071cad2 100644
--- a/chromecast/browser/media/cma_message_filter_host.cc
+++ b/chromecast/browser/media/cma_message_filter_host.cc
@@ -203,9 +203,7 @@
 
 // *** Handle incoming messages ***
 
-void CmaMessageFilterHost::CreateMedia(int media_id,
-                                       LoadType load_type,
-                                       AvailableTracks available_tracks) {
+void CmaMessageFilterHost::CreateMedia(int media_id, LoadType load_type) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
 
   scoped_ptr<MediaPipelineHost> media_pipeline_host(new MediaPipelineHost());
@@ -228,11 +226,10 @@
       FROM_HERE, base::Bind(&MediaPipelineCmaMap::SetMediaPipeline,
                             base::Unretained(g_pipeline_map.Pointer()),
                             process_id_, media_id, media_pipeline_host.get()));
-  task_runner_->PostTask(
-      FROM_HERE,
-      base::Bind(&MediaPipelineHost::Initialize,
-                 base::Unretained(media_pipeline_host.get()), load_type,
-                 available_tracks, client, create_backend_cb_));
+  task_runner_->PostTask(FROM_HERE,
+                         base::Bind(&MediaPipelineHost::Initialize,
+                                    base::Unretained(media_pipeline_host.get()),
+                                    load_type, client, create_backend_cb_));
   std::pair<MediaPipelineMap::iterator, bool> ret =
     media_pipelines_.insert(
         std::make_pair(media_id, media_pipeline_host.release()));
diff --git a/chromecast/browser/media/cma_message_filter_host.h b/chromecast/browser/media/cma_message_filter_host.h
index aee1b72..dece09fe 100644
--- a/chromecast/browser/media/cma_message_filter_host.h
+++ b/chromecast/browser/media/cma_message_filter_host.h
@@ -67,9 +67,7 @@
   MediaPipelineHost* LookupById(int media_id);
 
   // Handling of incoming IPC messages.
-  void CreateMedia(int media_id,
-                   LoadType load_type,
-                   AvailableTracks available_tracks);
+  void CreateMedia(int media_id, LoadType load_type);
   void DestroyMedia(int media_id);
   void SetCdm(int media_id, int render_frame_id, int cdm_id);
   void CreateAvPipe(int media_id, TrackId track_id, size_t shared_mem_size);
diff --git a/chromecast/browser/media/media_pipeline_backend_factory.h b/chromecast/browser/media/media_pipeline_backend_factory.h
index 1ca6e6d..e624623 100644
--- a/chromecast/browser/media/media_pipeline_backend_factory.h
+++ b/chromecast/browser/media/media_pipeline_backend_factory.h
@@ -6,6 +6,7 @@
 #define CHROMECAST_BROWSER_MEDIA_MEDIA_PIPELINE_BACKEND_FACTORY_H_
 
 #include "base/callback.h"
+#include "base/memory/scoped_ptr.h"
 #include "chromecast/public/media/media_pipeline_backend.h"
 #include "chromecast/public/media/media_pipeline_device_params.h"
 
diff --git a/chromecast/browser/media/media_pipeline_host.cc b/chromecast/browser/media/media_pipeline_host.cc
index 2707f229..34209da6 100644
--- a/chromecast/browser/media/media_pipeline_host.cc
+++ b/chromecast/browser/media/media_pipeline_host.cc
@@ -57,19 +57,15 @@
 
 void MediaPipelineHost::Initialize(
     LoadType load_type,
-    AvailableTracks available_tracks,
     const MediaPipelineClient& client,
     const CreateMediaPipelineBackendCB& create_backend_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
   media_pipeline_.reset(new MediaPipelineImpl());
   task_runner_.reset(new TaskRunnerImpl());
-  MediaPipelineDeviceParams::MediaSyncType sync_type;
-  if (load_type == kLoadTypeMediaStream ||
-      available_tracks == AUDIO_TRACK_ONLY) {
-    sync_type = MediaPipelineDeviceParams::kModeIgnorePts;
-  } else {
-    sync_type = MediaPipelineDeviceParams::kModeSyncPts;
-  }
+  MediaPipelineDeviceParams::MediaSyncType sync_type =
+      (load_type == kLoadTypeMediaStream)
+          ? MediaPipelineDeviceParams::kModeIgnorePts
+          : MediaPipelineDeviceParams::kModeSyncPts;
   MediaPipelineDeviceParams default_parameters(sync_type, task_runner_.get());
 
   media_pipeline_->SetClient(client);
diff --git a/chromecast/browser/media/media_pipeline_host.h b/chromecast/browser/media/media_pipeline_host.h
index 8fd40541..eea86ff 100644
--- a/chromecast/browser/media/media_pipeline_host.h
+++ b/chromecast/browser/media/media_pipeline_host.h
@@ -45,7 +45,6 @@
   ~MediaPipelineHost();
 
   void Initialize(LoadType load_type,
-                  AvailableTracks available_tracks,
                   const MediaPipelineClient& client,
                   const CreateMediaPipelineBackendCB& create_backend_cb);
 
diff --git a/chromecast/common/media/cma_ipc_common.h b/chromecast/common/media/cma_ipc_common.h
index 3ad9b90e..34311045 100644
--- a/chromecast/common/media/cma_ipc_common.h
+++ b/chromecast/common/media/cma_ipc_common.h
@@ -14,12 +14,6 @@
   kVideoTrackId = 1,
 };
 
-enum AvailableTracks {
-  AUDIO_TRACK_ONLY = 0,
-  VIDEO_TRACK_ONLY = 1,
-  AUDIO_AND_VIDEO_TRACKS = 2,
-};
-
 }  // namespace media
 }  // namespace chromecast
 
diff --git a/chromecast/common/media/cma_messages.h b/chromecast/common/media/cma_messages.h
index 3578ca3..5745655 100644
--- a/chromecast/common/media/cma_messages.h
+++ b/chromecast/common/media/cma_messages.h
@@ -26,10 +26,9 @@
 
 // Messages sent from the renderer to the browser process.
 
-IPC_MESSAGE_CONTROL3(CmaHostMsg_CreateMedia,
+IPC_MESSAGE_CONTROL2(CmaHostMsg_CreateMedia,
                      int /* Media pipeline ID */,
-                     chromecast::media::LoadType /* Load type */,
-                     chromecast::media::AvailableTracks /* Available tracks */)
+                     chromecast::media::LoadType /* Load type */)
 IPC_MESSAGE_CONTROL1(CmaHostMsg_DestroyMedia,
                      int /* Media pipeline ID */)
 IPC_MESSAGE_CONTROL3(CmaHostMsg_SetCdm,
diff --git a/chromecast/common/media/cma_param_traits_macros.h b/chromecast/common/media/cma_param_traits_macros.h
index f19eea7..2aae996 100644
--- a/chromecast/common/media/cma_param_traits_macros.h
+++ b/chromecast/common/media/cma_param_traits_macros.h
@@ -27,9 +27,6 @@
 IPC_ENUM_TRAITS_MIN_MAX_VALUE(chromecast::media::TrackId,
                               chromecast::media::kNoTrackId,
                               chromecast::media::kVideoTrackId)
-IPC_ENUM_TRAITS_MIN_MAX_VALUE(chromecast::media::AvailableTracks,
-                              chromecast::media::AUDIO_TRACK_ONLY,
-                              chromecast::media::AUDIO_AND_VIDEO_TRACKS)
 
 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::AudioCodec,
                               media::AudioCodec::kUnknownAudioCodec,
diff --git a/chromecast/media/base/media_message_loop.h b/chromecast/media/base/media_message_loop.h
index 4f4631b..22abcea7 100644
--- a/chromecast/media/base/media_message_loop.h
+++ b/chromecast/media/base/media_message_loop.h
@@ -7,6 +7,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/singleton.h"
 
 namespace base {
diff --git a/chromecast/media/base/media_resource_tracker_unittest.cc b/chromecast/media/base/media_resource_tracker_unittest.cc
index a3f2f6c..2e9da97 100644
--- a/chromecast/media/base/media_resource_tracker_unittest.cc
+++ b/chromecast/media/base/media_resource_tracker_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/location.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/waitable_event.h"
diff --git a/chromecast/media/cma/decoder/cast_audio_decoder.h b/chromecast/media/cma/decoder/cast_audio_decoder.h
index 23f4e8c..f6515316 100644
--- a/chromecast/media/cma/decoder/cast_audio_decoder.h
+++ b/chromecast/media/cma/decoder/cast_audio_decoder.h
@@ -8,6 +8,7 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 
 namespace base {
 class SingleThreadTaskRunner;
diff --git a/chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h b/chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h
index 5ba7471..ca4216f 100644
--- a/chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h
+++ b/chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h
@@ -7,6 +7,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
 #include "chromecast/media/cma/base/coded_frame_provider.h"
diff --git a/chromecast/media/cma/test/mock_frame_consumer.h b/chromecast/media/cma/test/mock_frame_consumer.h
index a59913d..cb00a9a 100644
--- a/chromecast/media/cma/test/mock_frame_consumer.h
+++ b/chromecast/media/cma/test/mock_frame_consumer.h
@@ -11,6 +11,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 
 namespace media {
 class AudioDecoderConfig;
diff --git a/chromecast/media/cma/test/mock_frame_provider.h b/chromecast/media/cma/test/mock_frame_provider.h
index c1b037c5..bf42e95 100644
--- a/chromecast/media/cma/test/mock_frame_provider.h
+++ b/chromecast/media/cma/test/mock_frame_provider.h
@@ -10,6 +10,7 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "chromecast/media/cma/base/coded_frame_provider.h"
 
 namespace chromecast {
diff --git a/chromecast/renderer/media/cma_renderer.cc b/chromecast/renderer/media/cma_renderer.cc
index 33f47ad..cbb24c9 100644
--- a/chromecast/renderer/media/cma_renderer.cc
+++ b/chromecast/renderer/media/cma_renderer.cc
@@ -13,7 +13,6 @@
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
 #include "base/thread_task_runner_handle.h"
-#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h"
 #include "chromecast/media/cma/base/cma_logging.h"
 #include "chromecast/media/cma/base/demuxer_stream_adapter.h"
@@ -117,16 +116,6 @@
   error_cb_ = error_cb;
   waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
 
-  bool has_audio = (demuxer_stream_provider_->GetStream(
-                        ::media::DemuxerStream::AUDIO) != nullptr);
-  bool has_video = (demuxer_stream_provider_->GetStream(
-                        ::media::DemuxerStream::VIDEO) != nullptr);
-  DCHECK(has_audio || has_video);
-  AvailableTracks available_tracks =
-      (has_audio ? (has_video ? AUDIO_AND_VIDEO_TRACKS : AUDIO_TRACK_ONLY)
-                 : VIDEO_TRACK_ONLY);
-  media_pipeline_->Initialize(available_tracks);
-
   MediaPipelineClient media_pipeline_client;
   media_pipeline_client.error_cb = ::media::BindToCurrentLoop(error_cb_);
   media_pipeline_client.buffering_state_cb = ::media::BindToCurrentLoop(
diff --git a/chromecast/renderer/media/media_channel_proxy.cc b/chromecast/renderer/media/media_channel_proxy.cc
index 7fe6188..cbbcdaf 100644
--- a/chromecast/renderer/media/media_channel_proxy.cc
+++ b/chromecast/renderer/media/media_channel_proxy.cc
@@ -22,16 +22,15 @@
 MediaChannelProxy::~MediaChannelProxy() {
 }
 
-void MediaChannelProxy::Open(LoadType load_type,
-                             AvailableTracks available_tracks) {
+void MediaChannelProxy::Open(LoadType load_type) {
   CHECK(!is_open_);
   // Renderer side.
   id_ = filter_->CreateChannel();
   is_open_ = true;
 
   // Browser side.
-  bool success = Send(scoped_ptr<IPC::Message>(
-      new CmaHostMsg_CreateMedia(id_, load_type, available_tracks)));
+  bool success = Send(
+      scoped_ptr<IPC::Message>(new CmaHostMsg_CreateMedia(id_, load_type)));
   if (!success) {
     is_open_ = false;
     id_ = 0;
diff --git a/chromecast/renderer/media/media_channel_proxy.h b/chromecast/renderer/media/media_channel_proxy.h
index 7b1127b..c7c4696 100644
--- a/chromecast/renderer/media/media_channel_proxy.h
+++ b/chromecast/renderer/media/media_channel_proxy.h
@@ -8,7 +8,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
-#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/pipeline/load_type.h"
 #include "chromecast/renderer/media/cma_message_filter_proxy.h"
 
@@ -27,7 +26,7 @@
   MediaChannelProxy();
 
   // Opens a CMA ipc channel.
-  void Open(LoadType load_type, AvailableTracks available_tracks);
+  void Open(LoadType load_type);
 
   // Closes the ipc channel.
   void Close();
@@ -66,4 +65,4 @@
 }  // namespace media
 }  // namespace chromecast
 
-#endif  // CHROMECAST_RENDERER_MEDIA_MEDIA_CHANNEL_PROXY_H_
+#endif  // CHROMECAST_RENDERER_MEDIA_MEDIA_CHANNEL_PROXY_H_
\ No newline at end of file
diff --git a/chromecast/renderer/media/media_pipeline_proxy.cc b/chromecast/renderer/media/media_pipeline_proxy.cc
index c653488..c0835f3 100644
--- a/chromecast/renderer/media/media_pipeline_proxy.cc
+++ b/chromecast/renderer/media/media_pipeline_proxy.cc
@@ -160,7 +160,6 @@
     LoadType load_type)
     : io_task_runner_(io_task_runner),
       render_frame_id_(render_frame_id),
-      load_type_(load_type),
       media_channel_proxy_(new MediaChannelProxy),
       proxy_(new MediaPipelineProxyInternal(media_channel_proxy_)),
       has_audio_(false),
@@ -171,6 +170,9 @@
           new VideoPipelineProxy(io_task_runner, media_channel_proxy_)),
       weak_factory_(this) {
   weak_this_ = weak_factory_.GetWeakPtr();
+  io_task_runner_->PostTask(
+      FROM_HERE,
+      base::Bind(&MediaChannelProxy::Open, media_channel_proxy_, load_type));
   thread_checker_.DetachFromThread();
 }
 
@@ -200,21 +202,12 @@
   return video_pipeline_.get();
 }
 
-void MediaPipelineProxy::Initialize(AvailableTracks available_tracks) {
-  DCHECK(thread_checker_.CalledOnValidThread());
-  has_audio_ = (available_tracks != VIDEO_TRACK_ONLY);
-  has_video_ = (available_tracks != AUDIO_TRACK_ONLY);
-  io_task_runner_->PostTask(
-      FROM_HERE, base::Bind(&MediaChannelProxy::Open, media_channel_proxy_,
-                            load_type_, available_tracks));
-}
-
 void MediaPipelineProxy::InitializeAudio(
     const ::media::AudioDecoderConfig& config,
     scoped_ptr<CodedFrameProvider> frame_provider,
     const ::media::PipelineStatusCB& status_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  DCHECK(has_audio_);
+  has_audio_ = true;
   audio_pipeline_->Initialize(config, std::move(frame_provider), status_cb);
 }
 
@@ -223,7 +216,7 @@
     scoped_ptr<CodedFrameProvider> frame_provider,
     const ::media::PipelineStatusCB& status_cb) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  DCHECK(has_video_);
+  has_video_ = true;
   video_pipeline_->Initialize(configs, std::move(frame_provider), status_cb);
 }
 
diff --git a/chromecast/renderer/media/media_pipeline_proxy.h b/chromecast/renderer/media/media_pipeline_proxy.h
index c4d90bf..8758926 100644
--- a/chromecast/renderer/media/media_pipeline_proxy.h
+++ b/chromecast/renderer/media/media_pipeline_proxy.h
@@ -10,7 +10,6 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
-#include "chromecast/common/media/cma_ipc_common.h"
 #include "chromecast/media/cma/pipeline/load_type.h"
 #include "chromecast/media/cma/pipeline/media_pipeline_client.h"
 #include "media/base/audio_decoder_config.h"
@@ -40,7 +39,6 @@
   void SetCdm(int cdm_id);
   AudioPipelineProxy* GetAudioPipeline() const;
   VideoPipelineProxy* GetVideoPipeline() const;
-  void Initialize(AvailableTracks available_tracks);
   void InitializeAudio(const ::media::AudioDecoderConfig& config,
                        scoped_ptr<CodedFrameProvider> frame_provider,
                        const ::media::PipelineStatusCB& status_cb);
@@ -61,7 +59,6 @@
   scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   const int render_frame_id_;
-  const LoadType load_type_;
 
   // CMA channel to convey IPC messages.
   scoped_refptr<MediaChannelProxy> const media_channel_proxy_;
diff --git a/chromeos/network/dhcp_proxy_script_fetcher_chromeos.h b/chromeos/network/dhcp_proxy_script_fetcher_chromeos.h
index 27d8d13..71b431db 100644
--- a/chromeos/network/dhcp_proxy_script_fetcher_chromeos.h
+++ b/chromeos/network/dhcp_proxy_script_fetcher_chromeos.h
@@ -7,6 +7,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "chromeos/chromeos_export.h"
 #include "net/proxy/dhcp_proxy_script_fetcher.h"
diff --git a/chromeos/timezone/timezone_resolver.h b/chromeos/timezone/timezone_resolver.h
index 2ae2d322..7402e9b 100644
--- a/chromeos/timezone/timezone_resolver.h
+++ b/chromeos/timezone/timezone_resolver.h
@@ -7,6 +7,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/threading/thread_checker.h"
 #include "chromeos/chromeos_export.h"
 #include "net/url_request/url_request_context_getter.h"
diff --git a/components/arc/arc_service_manager.cc b/components/arc/arc_service_manager.cc
index 71489575..75288c3 100644
--- a/components/arc/arc_service_manager.cc
+++ b/components/arc/arc_service_manager.cc
@@ -91,6 +91,10 @@
       new ArcNotificationManager(arc_bridge_service(), account_id)));
 }
 
+void ArcServiceManager::Shutdown() {
+  services_.clear();
+}
+
 //static
 void ArcServiceManager::SetArcBridgeServiceForTesting(
     scoped_ptr<ArcBridgeService> arc_bridge_service) {
diff --git a/components/arc/arc_service_manager.h b/components/arc/arc_service_manager.h
index 5c36f568..bb7051a 100644
--- a/components/arc/arc_service_manager.h
+++ b/components/arc/arc_service_manager.h
@@ -38,10 +38,14 @@
   // Called when the main profile is initialized after user logs in.
   void OnPrimaryUserProfilePrepared(const AccountId& account_id);
 
+  // Called to shut down all ARC services.
+  void Shutdown();
+
   // Set ArcBridgeService instance for testing. Call before ArcServiceManager
   // creation. ArcServiceManager owns |arc_bridge_service|.
   static void SetArcBridgeServiceForTesting(
       scoped_ptr<ArcBridgeService> arc_bridge_service);
+
  private:
   base::ThreadChecker thread_checker_;
   scoped_ptr<ArcBridgeService> arc_bridge_service_;
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
index 804b584..7579854 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -12,6 +12,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/i18n/case_conversion.h"
+#include "base/memory/linked_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/histogram_macros.h"
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index a564baa..5c02242d 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -197,11 +197,13 @@
 }
 
 // Returns whether the |suggestion| is valid considering the
-// |field_contents_canon|. Assigns true to |is_prefix_matched| if the
-// |field_contents_canon| is a prefix to |suggestion|, assigns false otherwise.
+// |field_contents_canon|, the |type| and |is_masked_server_card|. Assigns true
+// to |is_prefix_matched| if the |field_contents_canon| is a prefix to
+// |suggestion|, assigns false otherwise.
 bool IsValidSuggestionForFieldContents(base::string16 suggestion_canon,
                                        base::string16 field_contents_canon,
                                        const AutofillType& type,
+                                       bool is_masked_server_card,
                                        bool* is_prefix_matched) {
   *is_prefix_matched = true;
 
@@ -213,6 +215,17 @@
     return true;
   }
 
+  // For card number fields, suggest the card if:
+  // - the number matches any part of the card, or
+  // - it's a masked card and there are 6 or fewers typed so far.
+  if (type.GetStorableType() == CREDIT_CARD_NUMBER) {
+    if (suggestion_canon.find(field_contents_canon) == base::string16::npos &&
+        (!is_masked_server_card || field_contents_canon.size() >= 6)) {
+      return false;
+    }
+    return true;
+  }
+
   if (base::StartsWith(suggestion_canon, field_contents_canon,
                        base::CompareCase::SENSITIVE)) {
     return true;
@@ -705,9 +718,9 @@
     bool prefix_matched_suggestion;
     base::string16 suggestion_canon =
         AutofillProfile::CanonicalizeProfileString(value);
-    if (IsValidSuggestionForFieldContents(suggestion_canon,
-                                          field_contents_canon, type,
-                                          &prefix_matched_suggestion)) {
+    if (IsValidSuggestionForFieldContents(
+            suggestion_canon, field_contents_canon, type,
+            /* is_masked_server_card= */ false, &prefix_matched_suggestion)) {
       matched_profiles.push_back(profile);
       suggestions.push_back(Suggestion(value));
       suggestions.back().backend_id = profile->guid();
@@ -784,95 +797,12 @@
     return std::vector<Suggestion>();
 
   std::list<const CreditCard*> cards_to_suggest;
-  std::list<const CreditCard*> substring_matched_cards;
-  base::string16 field_contents_lower = base::i18n::ToLower(field_contents);
-  for (const CreditCard* credit_card : GetCreditCards()) {
-    // The value of the stored data for this field type in the |credit_card|.
-    base::string16 creditcard_field_value =
-        credit_card->GetInfo(type, app_locale_);
-    if (creditcard_field_value.empty())
-      continue;
-    base::string16 creditcard_field_lower =
-        base::i18n::ToLower(creditcard_field_value);
 
-    // TODO(crbug.com/598786): Refactor the prefix/substring suggestion matching
-    // in autofill.
-    // For card number fields, suggest the card if:
-    // - the number matches any part of the card, or
-    // - it's a masked card and there are 6 or fewers typed so far.
-    // For other fields, require that the field contents match the beginning of
-    // the stored data.
-    if (type.GetStorableType() == CREDIT_CARD_NUMBER) {
-      if (creditcard_field_lower.find(field_contents_lower) ==
-              base::string16::npos &&
-          (credit_card->record_type() != CreditCard::MASKED_SERVER_CARD ||
-           field_contents.size() >= 6)) {
-        continue;
-      }
-      cards_to_suggest.push_back(credit_card);
-    } else if (base::StartsWith(creditcard_field_lower, field_contents_lower,
-                                base::CompareCase::SENSITIVE)) {
-      cards_to_suggest.push_back(credit_card);
-    } else if (FieldIsSuggestionSubstringStartingOnTokenBoundary(
-                   creditcard_field_lower, field_contents_lower, true)) {
-      substring_matched_cards.push_back(credit_card);
-    }
-  }
+  GetOrderedCardsToSuggest(type, field_contents, &cards_to_suggest);
 
-  // Rank the suggestions by frecency (see AutofillDataModel for details).
-  base::Time comparison_time = base::Time::Now();
-  cards_to_suggest.sort([comparison_time](const AutofillDataModel* a,
-                                          const AutofillDataModel* b) {
-    return a->CompareFrecency(b, comparison_time);
-  });
+  DedupeCreditCardToSuggest(&cards_to_suggest);
 
-  // Prefix matches should precede other token matches.
-  if (IsFeatureSubstringMatchEnabled()) {
-    substring_matched_cards.sort([comparison_time](const AutofillDataModel* a,
-                                                   const AutofillDataModel* b) {
-      return a->CompareFrecency(b, comparison_time);
-    });
-    cards_to_suggest.insert(cards_to_suggest.end(),
-                            substring_matched_cards.begin(),
-                            substring_matched_cards.end());
-  }
-
-  DedupeCreditCardSuggestions(&cards_to_suggest);
-
-  std::vector<Suggestion> suggestions;
-  for (const CreditCard* credit_card : cards_to_suggest) {
-    // Make a new suggestion.
-    suggestions.push_back(Suggestion());
-    Suggestion* suggestion = &suggestions.back();
-
-    suggestion->value = credit_card->GetInfo(type, app_locale_);
-    suggestion->icon = base::UTF8ToUTF16(credit_card->type());
-    suggestion->backend_id = credit_card->guid();
-
-    // If the value is the card number, the label is the expiration date.
-    // Otherwise the label is the card number, or if that is empty the
-    // cardholder name. The label should never repeat the value.
-    if (type.GetStorableType() == CREDIT_CARD_NUMBER) {
-      suggestion->value = credit_card->TypeAndLastFourDigits();
-      suggestion->label = credit_card->GetInfo(
-          AutofillType(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR), app_locale_);
-    } else if (credit_card->number().empty()) {
-      if (type.GetStorableType() != CREDIT_CARD_NAME_FULL) {
-        suggestion->label = credit_card->GetInfo(
-            AutofillType(CREDIT_CARD_NAME_FULL), app_locale_);
-      }
-    } else {
-#if defined(OS_ANDROID)
-      // Since Android places the label on its own row, there's more horizontal
-      // space to work with. Show "Amex - 1234" rather than desktop's "*1234".
-      suggestion->label = credit_card->TypeAndLastFourDigits();
-#else
-      suggestion->label = base::ASCIIToUTF16("*");
-      suggestion->label.append(credit_card->LastFourDigits());
-#endif
-    }
-  }
-  return suggestions;
+  return GetSuggestionsForCards(cards_to_suggest, type);
 }
 
 bool PersonalDataManager::IsAutofillEnabled() const {
@@ -1012,7 +942,7 @@
 }
 
 // static
-void PersonalDataManager::DedupeCreditCardSuggestions(
+void PersonalDataManager::DedupeCreditCardToSuggest(
     std::list<const CreditCard*>* cards_to_suggest) {
   for (auto outer_it = cards_to_suggest->begin();
        outer_it != cards_to_suggest->end(); ++outer_it) {
@@ -1494,4 +1424,90 @@
   return profiles_;
 }
 
+void PersonalDataManager::GetOrderedCardsToSuggest(
+    const AutofillType& type,
+    const base::string16& field_contents,
+    std::list<const CreditCard*>* cards_to_suggest) const {
+  std::list<const CreditCard*> substring_matched_cards;
+  base::string16 field_contents_lower = base::i18n::ToLower(field_contents);
+  for (const CreditCard* credit_card : GetCreditCards()) {
+    // The value of the stored data for this field type in the |credit_card|.
+    base::string16 creditcard_field_value =
+        credit_card->GetInfo(type, app_locale_);
+    if (creditcard_field_value.empty())
+      continue;
+    base::string16 creditcard_field_lower =
+        base::i18n::ToLower(creditcard_field_value);
+
+    bool prefix_matched_suggestion;
+    if (IsValidSuggestionForFieldContents(
+            creditcard_field_lower, field_contents_lower, type,
+            credit_card->record_type() == CreditCard::MASKED_SERVER_CARD,
+            &prefix_matched_suggestion)) {
+      if (prefix_matched_suggestion) {
+        cards_to_suggest->push_back(credit_card);
+      } else {
+        substring_matched_cards.push_back(credit_card);
+      }
+    }
+  }
+
+  // Rank the cards by frecency (see AutofillDataModel for details).
+  base::Time comparison_time = base::Time::Now();
+  cards_to_suggest->sort([comparison_time](const AutofillDataModel* a,
+                                           const AutofillDataModel* b) {
+    return a->CompareFrecency(b, comparison_time);
+  });
+
+  // Prefix matches should precede other token matches.
+  if (IsFeatureSubstringMatchEnabled()) {
+    substring_matched_cards.sort([comparison_time](const AutofillDataModel* a,
+                                                   const AutofillDataModel* b) {
+      return a->CompareFrecency(b, comparison_time);
+    });
+    cards_to_suggest->insert(cards_to_suggest->end(),
+                             substring_matched_cards.begin(),
+                             substring_matched_cards.end());
+  }
+}
+
+std::vector<Suggestion> PersonalDataManager::GetSuggestionsForCards(
+    const std::list<const CreditCard*>& cards_to_suggest,
+    const AutofillType& type) const {
+  std::vector<Suggestion> suggestions;
+  for (const CreditCard* credit_card : cards_to_suggest) {
+    // Make a new suggestion.
+    suggestions.push_back(Suggestion());
+    Suggestion* suggestion = &suggestions.back();
+
+    suggestion->value = credit_card->GetInfo(type, app_locale_);
+    suggestion->icon = base::UTF8ToUTF16(credit_card->type());
+    suggestion->backend_id = credit_card->guid();
+
+    // If the value is the card number, the label is the expiration date.
+    // Otherwise the label is the card number, or if that is empty the
+    // cardholder name. The label should never repeat the value.
+    if (type.GetStorableType() == CREDIT_CARD_NUMBER) {
+      suggestion->value = credit_card->TypeAndLastFourDigits();
+      suggestion->label = credit_card->GetInfo(
+          AutofillType(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR), app_locale_);
+    } else if (credit_card->number().empty()) {
+      if (type.GetStorableType() != CREDIT_CARD_NAME_FULL) {
+        suggestion->label = credit_card->GetInfo(
+            AutofillType(CREDIT_CARD_NAME_FULL), app_locale_);
+      }
+    } else {
+#if defined(OS_ANDROID)
+      // Since Android places the label on its own row, there's more horizontal
+      // space to work with. Show "Amex - 1234" rather than desktop's "*1234".
+      suggestion->label = credit_card->TypeAndLastFourDigits();
+#else
+      suggestion->label = base::ASCIIToUTF16("*");
+      suggestion->label.append(credit_card->LastFourDigits());
+#endif
+    }
+  }
+  return suggestions;
+}
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index fd2dbef..7320193 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -231,10 +231,10 @@
   // will only update when Chrome is restarted.
   virtual const std::string& GetDefaultCountryCodeForNewAddress() const;
 
-  // De-dupe credit card suggestions. Full server cards are prefered over their
+  // De-dupe credit card to suggest. Full server cards are prefered over their
   // local duplicates, and local cards are preferred over their masked server
   // card duplicate.
-  static void DedupeCreditCardSuggestions(
+  static void DedupeCreditCardToSuggest(
       std::list<const CreditCard*>* cards_to_suggest);
 
  protected:
@@ -390,6 +390,20 @@
   const std::vector<AutofillProfile*>& GetProfiles(
       bool record_metrics) const;
 
+  // Fills |cards_to_suggest| with valid credit cards to suggest based on the
+  // |type| and |field_contents| of the credit card field. The cards are ordered
+  // by frecency.
+  void GetOrderedCardsToSuggest(
+      const AutofillType& type,
+      const base::string16& field_contents,
+      std::list<const CreditCard*>* cards_to_suggest) const;
+
+  // Returns the suggestions to display for the |cards_to_suggest| based on the
+  // |type| of the credit card field.
+  std::vector<Suggestion> GetSuggestionsForCards(
+      const std::list<const CreditCard*>& cards_to_suggest,
+      const AutofillType& type) const;
+
   const std::string app_locale_;
 
   // The default country code for new addresses.
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index 2b6e908e..c7d9219 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -3246,6 +3246,33 @@
   EXPECT_EQ(2U, suggestions.size());
 }
 
+// Test that a masked server card is not suggested if more that six numbers have
+// been typed in the field.
+TEST_F(PersonalDataManagerTest,
+       GetCreditCardSuggestions_MaskedCardWithMoreThan6Numbers) {
+  EnableWalletCardImport();
+
+  // Add a masked server card.
+  std::vector<CreditCard> server_cards;
+  server_cards.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "b459"));
+  test::SetCreditCardInfo(&server_cards.back(), "Emmet Dalton", "2110", "12",
+                          "2012");
+  server_cards.back().SetTypeForMaskedCard(kVisaCard);
+
+  test::SetServerCreditCards(autofill_table_, server_cards);
+  personal_data_->Refresh();
+  EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
+      .WillOnce(QuitMainMessageLoop());
+  base::MessageLoop::current()->Run();
+
+  std::vector<Suggestion> suggestions =
+      personal_data_->GetCreditCardSuggestions(AutofillType(CREDIT_CARD_NUMBER),
+                                               ASCIIToUTF16("12345678"));
+
+  // There should be no suggestions.
+  ASSERT_EQ(0U, suggestions.size());
+}
+
 // Test that local credit cards are ordered as expected.
 TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_LocalCardsRanking) {
   SetupReferenceLocalCreditCards();
@@ -3471,7 +3498,7 @@
 // Tests that only the full server card is kept when deduping with a local
 // duplicate of it.
 TEST_F(PersonalDataManagerTest,
-       DedupeCreditCardSuggestions_FullServerShadowsLocal) {
+       DedupeCreditCardToSuggest_FullServerShadowsLocal) {
   std::list<const CreditCard*> credit_cards;
 
   // Create 3 different local credit cards.
@@ -3492,7 +3519,7 @@
                                 base::TimeDelta::FromDays(15));
   credit_cards.push_back(&full_server_card);
 
-  PersonalDataManager::DedupeCreditCardSuggestions(&credit_cards);
+  PersonalDataManager::DedupeCreditCardToSuggest(&credit_cards);
   ASSERT_EQ(1U, credit_cards.size());
 
   const CreditCard* deduped_card(credit_cards.front());
@@ -3501,8 +3528,7 @@
 
 // Tests that only the local card is kept when deduping with a masked server
 // duplicate of it.
-TEST_F(PersonalDataManagerTest,
-       DedupeCreditCardSuggestions_LocalShadowsMasked) {
+TEST_F(PersonalDataManagerTest, DedupeCreditCardToSuggest_LocalShadowsMasked) {
   std::list<const CreditCard*> credit_cards;
 
   CreditCard local_card("1141084B-72D7-4B73-90CF-3D6AC154673B",
@@ -3522,7 +3548,7 @@
   masked_card.SetTypeForMaskedCard(kVisaCard);
   credit_cards.push_back(&masked_card);
 
-  PersonalDataManager::DedupeCreditCardSuggestions(&credit_cards);
+  PersonalDataManager::DedupeCreditCardToSuggest(&credit_cards);
   ASSERT_EQ(1U, credit_cards.size());
 
   const CreditCard* deduped_card(credit_cards.front());
@@ -3530,8 +3556,7 @@
 }
 
 // Tests that identical full server and masked credit cards are not deduped.
-TEST_F(PersonalDataManagerTest,
-       DedupeCreditCardSuggestions_FullServerAndMasked) {
+TEST_F(PersonalDataManagerTest, DedupeCreditCardToSuggest_FullServerAndMasked) {
   std::list<const CreditCard*> credit_cards;
 
   // Create a full server card that is a duplicate of one of the local cards.
@@ -3552,13 +3577,13 @@
   masked_card.SetTypeForMaskedCard(kVisaCard);
   credit_cards.push_back(&masked_card);
 
-  PersonalDataManager::DedupeCreditCardSuggestions(&credit_cards);
+  PersonalDataManager::DedupeCreditCardToSuggest(&credit_cards);
   EXPECT_EQ(2U, credit_cards.size());
 }
 
 // Tests that slightly different local, full server, and masked credit cards are
 // not deduped.
-TEST_F(PersonalDataManagerTest, DedupeCreditCardSuggestions_DifferentCards) {
+TEST_F(PersonalDataManagerTest, DedupeCreditCardToSuggest_DifferentCards) {
   std::list<const CreditCard*> credit_cards;
 
   CreditCard credit_card2("002149C1-EE28-4213-A3B9-DA243FFF021B",
@@ -3586,7 +3611,7 @@
   credit_card5.set_use_date(base::Time::Now() - base::TimeDelta::FromDays(15));
   credit_cards.push_back(&credit_card5);
 
-  PersonalDataManager::DedupeCreditCardSuggestions(&credit_cards);
+  PersonalDataManager::DedupeCreditCardToSuggest(&credit_cards);
   EXPECT_EQ(3U, credit_cards.size());
 }
 
diff --git a/components/component_updater/component_updater_service.cc b/components/component_updater/component_updater_service.cc
index 8f0515bd..775e780 100644
--- a/components/component_updater/component_updater_service.cc
+++ b/components/component_updater/component_updater_service.cc
@@ -264,16 +264,33 @@
   UMA_HISTOGRAM_ENUMERATION("ComponentUpdater.Calls", UPDATE_TYPE_AUTOMATIC,
                             UPDATE_TYPE_COUNT);
 
-  std::vector<std::string> ids;
+  std::vector<std::string> secure_ids;    // Requires HTTPS for update checks.
+  std::vector<std::string> unsecure_ids;  // Can fallback to HTTP.
   for (const auto id : components_order_) {
     DCHECK(components_.find(id) != components_.end());
-    ids.push_back(id);
+
+    auto component(GetComponent(id));
+    if (!component || component->requires_network_encryption)
+      secure_ids.push_back(id);
+    else
+      unsecure_ids.push_back(id);
   }
 
-  update_client_->Update(
-      ids, base::Bind(&CrxUpdateService::OnUpdate, base::Unretained(this)),
-      base::Bind(&CrxUpdateService::OnUpdateComplete, base::Unretained(this),
-                 base::TimeTicks::Now()));
+  if (!unsecure_ids.empty()) {
+    update_client_->Update(
+        unsecure_ids,
+        base::Bind(&CrxUpdateService::OnUpdate, base::Unretained(this)),
+        base::Bind(&CrxUpdateService::OnUpdateComplete, base::Unretained(this),
+                   base::TimeTicks::Now()));
+  }
+
+  if (!secure_ids.empty()) {
+    update_client_->Update(
+        secure_ids,
+        base::Bind(&CrxUpdateService::OnUpdate, base::Unretained(this)),
+        base::Bind(&CrxUpdateService::OnUpdateComplete, base::Unretained(this),
+                   base::TimeTicks::Now()));
+  }
 
   return true;
 }
diff --git a/components/component_updater/component_updater_url_constants.cc b/components/component_updater/component_updater_url_constants.cc
index 3cb8ef1..c762cc91 100644
--- a/components/component_updater/component_updater_url_constants.cc
+++ b/components/component_updater/component_updater_url_constants.cc
@@ -7,10 +7,15 @@
 namespace component_updater {
 
 // The default URL for the v3 protocol service endpoint. In some cases, the
-// component updater is allowed to fall back to and alternate URL source, if
+// component updater is allowed to fall back to other URL endpoints, if
 // the request to the default URL source fails.
+//
+// The responses to the requests made to these endpoints are always signed.
+//
 // The value of |kDefaultUrlSource| can be overridden with
 // --component-updater=url-source=someurl.
 const char kUpdaterDefaultUrl[] = "https://clients2.google.com/service/update2";
 
+const char kUpdaterFallbackUrl[] = "http://clients2.google.com/service/update2";
+
 }  // namespace component_updater
diff --git a/components/component_updater/component_updater_url_constants.h b/components/component_updater/component_updater_url_constants.h
index 3195dd8..10f3287 100644
--- a/components/component_updater/component_updater_url_constants.h
+++ b/components/component_updater/component_updater_url_constants.h
@@ -8,6 +8,7 @@
 namespace component_updater {
 
 extern const char kUpdaterDefaultUrl[];
+extern const char kUpdaterFallbackUrl[];
 
 }  // namespace component_updater
 
diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
index 6372118..8da26fd6 100644
--- a/components/component_updater/configurator_impl.cc
+++ b/components/component_updater/configurator_impl.cc
@@ -15,7 +15,7 @@
 #include "build/build_config.h"
 #include "components/component_updater/component_updater_switches.h"
 #include "components/component_updater/component_updater_url_constants.h"
-#include "components/update_client/configurator.h"
+#include "components/update_client/utils.h"
 #include "components/version_info/version_info.h"
 
 #if defined(OS_WIN)
@@ -82,12 +82,14 @@
 
 ConfiguratorImpl::ConfiguratorImpl(
     const base::CommandLine* cmdline,
-    net::URLRequestContextGetter* url_request_getter)
+    net::URLRequestContextGetter* url_request_getter,
+    bool require_encryption)
     : url_request_getter_(url_request_getter),
       fast_update_(false),
       pings_enabled_(false),
       deltas_enabled_(false),
-      background_downloads_enabled_(false) {
+      background_downloads_enabled_(false),
+      require_encryption_(require_encryption) {
   // Parse comma-delimited debug flags.
   std::vector<std::string> switch_values = base::SplitString(
       cmdline->GetSwitchValueASCII(switches::kComponentUpdater), ",",
@@ -140,9 +142,14 @@
   std::vector<GURL> urls;
   if (url_source_override_.is_valid()) {
     urls.push_back(GURL(url_source_override_));
-  } else {
-    urls.push_back(GURL(kUpdaterDefaultUrl));
+    return urls;
   }
+
+  urls.push_back(GURL(kUpdaterDefaultUrl));
+  urls.push_back(GURL(kUpdaterFallbackUrl));
+  if (require_encryption_)
+    update_client::RemoveUnsecureUrls(&urls);
+
   return urls;
 }
 
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
index d5f99cf..1fa95f1 100644
--- a/components/component_updater/configurator_impl.h
+++ b/components/component_updater/configurator_impl.h
@@ -27,7 +27,8 @@
 class ConfiguratorImpl {
  public:
   ConfiguratorImpl(const base::CommandLine* cmdline,
-                   net::URLRequestContextGetter* url_request_getter);
+                   net::URLRequestContextGetter* url_request_getter,
+                   bool require_encryption);
 
   ~ConfiguratorImpl();
 
@@ -92,6 +93,7 @@
   bool pings_enabled_;
   bool deltas_enabled_;
   bool background_downloads_enabled_;
+  bool require_encryption_;
 
   DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
 };
diff --git a/components/component_updater/default_component_installer.cc b/components/component_updater/default_component_installer.cc
index b286e29..8f5bba6 100644
--- a/components/component_updater/default_component_installer.cc
+++ b/components/component_updater/default_component_installer.cc
@@ -260,6 +260,8 @@
   if (installer_traits_->CanAutoUpdate()) {
     CrxComponent crx;
     crx.name = installer_traits_->GetName();
+    crx.requires_network_encryption =
+        installer_traits_->RequiresNetworkEncryption();
     crx.installer = this;
     crx.version = current_version_;
     crx.fingerprint = current_fingerprint_;
diff --git a/components/component_updater/default_component_installer.h b/components/component_updater/default_component_installer.h
index 5b99491..9de80d6 100644
--- a/components/component_updater/default_component_installer.h
+++ b/components/component_updater/default_component_installer.h
@@ -49,6 +49,10 @@
   // during component registration from the UI thread.
   virtual bool CanAutoUpdate() const = 0;
 
+  // Returns true if the network communication related to this component
+  // must be encrypted.
+  virtual bool RequiresNetworkEncryption() const = 0;
+
   // OnCustomInstall is called during the installation process. Components that
   // require custom installation operations should implement them here.
   // Returns false if a custom operation failed, and true otherwise.
diff --git a/components/components_tests.gyp b/components/components_tests.gyp
index 240c379..38bf5f2 100644
--- a/components/components_tests.gyp
+++ b/components/components_tests.gyp
@@ -1777,7 +1777,6 @@
           'dependencies': [
             '../content/content.gyp:content_common',
             '../content/content.gyp:content_gpu',
-            '../content/content.gyp:content_plugin',
             '../content/content.gyp:content_renderer',
             '../content/content_shell_and_tests.gyp:content_browser_test_base',
             '../content/content_shell_and_tests.gyp:content_browser_test_support',
diff --git a/components/dom_distiller/content/browser/distillable_page_utils_android.cc b/components/dom_distiller/content/browser/distillable_page_utils_android.cc
index 0b48f85..ab84a56c 100644
--- a/components/dom_distiller/content/browser/distillable_page_utils_android.cc
+++ b/components/dom_distiller/content/browser/distillable_page_utils_android.cc
@@ -5,6 +5,7 @@
 #include "components/dom_distiller/content/browser/distillable_page_utils_android.h"
 
 #include "base/bind.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "components/dom_distiller/content/browser/distillable_page_utils.h"
 #include "content/public/browser/web_contents.h"
diff --git a/components/invalidation/impl/android/java/src/org/chromium/components/invalidation/PendingInvalidation.java b/components/invalidation/impl/android/java/src/org/chromium/components/invalidation/PendingInvalidation.java
index c9a2fd12..deee2e3 100644
--- a/components/invalidation/impl/android/java/src/org/chromium/components/invalidation/PendingInvalidation.java
+++ b/components/invalidation/impl/android/java/src/org/chromium/components/invalidation/PendingInvalidation.java
@@ -122,16 +122,28 @@
         if (!(other instanceof PendingInvalidation)) return false;
         PendingInvalidation otherInvalidation = (PendingInvalidation) other;
         if (mObjectSource != otherInvalidation.mObjectSource) return false;
-        if (mObjectSource == 0) return true;
-        if (!mObjectId.equals(otherInvalidation.mObjectId)) return false;
-        if (!mPayload.equals(otherInvalidation.mPayload)) return false;
-        return mVersion == otherInvalidation.mVersion;
+        if (mObjectId == null) {
+            if (otherInvalidation.mObjectId != null) return false;
+        } else {
+            if (!mObjectId.equals(otherInvalidation.mObjectId)) return false;
+        }
+        if (mVersion != otherInvalidation.mVersion) return false;
+        if (mPayload == null) {
+            if (otherInvalidation.mPayload != null) return false;
+        } else {
+            if (!mPayload.equals(otherInvalidation.mPayload)) return false;
+        }
+        return true;
     }
 
     @Override
     public int hashCode() {
-        return mObjectId == null ? mObjectSource : mObjectSource ^ mObjectId.hashCode()
-                        ^ Long.valueOf(mVersion).hashCode();
+        int hashCode = 0;
+        if (mObjectId != null) hashCode ^= mObjectId.hashCode();
+        hashCode ^= mObjectSource;
+        hashCode ^= Long.valueOf(mVersion).hashCode();
+        if (mPayload != null) hashCode ^= mPayload.hashCode();
+        return hashCode;
     }
 
     @Override
diff --git a/components/invalidation/impl/invalidation_service_android.cc b/components/invalidation/impl/invalidation_service_android.cc
index cb7d845a..500aca4c 100644
--- a/components/invalidation/impl/invalidation_service_android.cc
+++ b/components/invalidation/impl/invalidation_service_android.cc
@@ -154,8 +154,12 @@
         return;
       }
       max_invalidation_versions_[object_id] = version;
-      object_invalidation_map.Insert(syncer::Invalidation::Init(
-          object_id, version, ConvertJavaStringToUTF8(env, java_payload)));
+      std::string payload;
+      if (!java_payload.is_null())
+        ConvertJavaStringToUTF8(env, java_payload, &payload);
+
+      object_invalidation_map.Insert(
+          syncer::Invalidation::Init(object_id, version, payload));
     }
   }
 
diff --git a/components/navigation_interception/OWNERS b/components/navigation_interception/OWNERS
index b387752..9896d43 100644
--- a/components/navigation_interception/OWNERS
+++ b/components/navigation_interception/OWNERS
@@ -1 +1,2 @@
-mnaganov@chromium.org
+michaelbai@chromium.org
+sgurun@chromium.org
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.cc b/components/page_load_metrics/browser/metrics_web_contents_observer.cc
index 9452877..50f0715 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer.cc
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer.cc
@@ -79,7 +79,7 @@
 
   // If we have a non-empty timing, it should always have a navigation start.
   if (timing.navigation_start.is_null()) {
-    DLOG(FATAL) << "Received null navigation_start.";
+    NOTREACHED() << "Received null navigation_start.";
     return false;
   }
 
@@ -93,50 +93,75 @@
     return false;
   }
 
+  if (!EventsInOrder(timing.response_start, timing.parse_start)) {
+    // We sometimes get a zero response_start with a non-zero parse start. See
+    // crbug.com/590212.
+    DLOG(ERROR) << "Invalid response_start " << timing.response_start
+                << " for parse_start " << timing.parse_start;
+    return false;
+  }
+
+  if (!EventsInOrder(timing.parse_start, timing.parse_stop)) {
+    NOTREACHED() << "Invalid parse_start " << timing.parse_start
+                 << " for parse_stop " << timing.parse_stop;
+    return false;
+  }
+
+  if (!timing.parse_stop.is_zero()) {
+    const base::TimeDelta parse_duration =
+        timing.parse_stop - timing.parse_start;
+    if (timing.parse_blocked_on_script_load_duration > parse_duration) {
+      NOTREACHED() << "Invalid parse_blocked_on_script_load_duration "
+                   << timing.parse_blocked_on_script_load_duration
+                   << " for parse duration " << parse_duration;
+      return false;
+    }
+  }
+
   if (!EventsInOrder(timing.dom_loading,
                      timing.dom_content_loaded_event_start)) {
-    DLOG(FATAL) << "Invalid dom_loading " << timing.dom_loading
-                << " for dom_content_loaded_event_start "
-                << timing.dom_content_loaded_event_start;
+    NOTREACHED() << "Invalid dom_loading " << timing.dom_loading
+                 << " for dom_content_loaded_event_start "
+                 << timing.dom_content_loaded_event_start;
     return false;
   }
 
   if (!EventsInOrder(timing.dom_content_loaded_event_start,
                      timing.load_event_start)) {
-    DLOG(FATAL) << "Invalid dom_content_loaded_event_start "
-                << timing.dom_content_loaded_event_start
-                << " for load_event_start " << timing.load_event_start;
+    NOTREACHED() << "Invalid dom_content_loaded_event_start "
+                 << timing.dom_content_loaded_event_start
+                 << " for load_event_start " << timing.load_event_start;
     return false;
   }
 
   if (!EventsInOrder(timing.dom_loading, timing.first_layout)) {
-    DLOG(FATAL) << "Invalid dom_loading " << timing.dom_loading
-                << " for first_layout " << timing.first_layout;
+    NOTREACHED() << "Invalid dom_loading " << timing.dom_loading
+                 << " for first_layout " << timing.first_layout;
     return false;
   }
 
   if (!EventsInOrder(timing.first_layout, timing.first_paint)) {
-    DLOG(FATAL) << "Invalid first_layout " << timing.first_layout
-                << " for first_paint " << timing.first_paint;
+    NOTREACHED() << "Invalid first_layout " << timing.first_layout
+                 << " for first_paint " << timing.first_paint;
     return false;
   }
 
   if (!EventsInOrder(timing.first_paint, timing.first_text_paint)) {
-    DLOG(FATAL) << "Invalid first_paint " << timing.first_paint
-                << " for first_text_paint " << timing.first_text_paint;
+    NOTREACHED() << "Invalid first_paint " << timing.first_paint
+                 << " for first_text_paint " << timing.first_text_paint;
     return false;
   }
 
   if (!EventsInOrder(timing.first_paint, timing.first_image_paint)) {
-    DLOG(FATAL) << "Invalid first_paint " << timing.first_paint
-                << " for first_image_paint " << timing.first_image_paint;
+    NOTREACHED() << "Invalid first_paint " << timing.first_paint
+                 << " for first_image_paint " << timing.first_image_paint;
     return false;
   }
 
   if (!EventsInOrder(timing.first_paint, timing.first_contentful_paint)) {
-    DLOG(FATAL) << "Invalid first_paint " << timing.first_paint
-                << " for first_contentful_paint "
-                << timing.first_contentful_paint;
+    NOTREACHED() << "Invalid first_paint " << timing.first_paint
+                 << " for first_contentful_paint "
+                 << timing.first_contentful_paint;
     return false;
   }
 
@@ -154,7 +179,7 @@
     return ABORT_FORWARD_BACK;
   if (ui::PageTransitionIsNewNavigation(transition))
     return ABORT_NEW_NAVIGATION;
-  DLOG(FATAL)
+  NOTREACHED()
       << "AbortTypeForPageTransition received unexpected ui::PageTransition: "
       << transition;
   return ABORT_OTHER;
@@ -245,7 +270,7 @@
                            aborted_chain_size_);
       return;
     default:
-      DLOG(FATAL)
+      NOTREACHED()
           << "LogAbortChainHistograms received unexpected ui::PageTransition: "
           << committed_transition;
       return;
diff --git a/components/page_load_metrics/common/page_load_metrics_messages.h b/components/page_load_metrics/common/page_load_metrics_messages.h
index ce86228..71e8c70b 100644
--- a/components/page_load_metrics/common/page_load_metrics_messages.h
+++ b/components/page_load_metrics/common/page_load_metrics_messages.h
@@ -23,6 +23,9 @@
   IPC_STRUCT_TRAITS_MEMBER(first_text_paint)
   IPC_STRUCT_TRAITS_MEMBER(first_image_paint)
   IPC_STRUCT_TRAITS_MEMBER(first_contentful_paint)
+  IPC_STRUCT_TRAITS_MEMBER(parse_start)
+  IPC_STRUCT_TRAITS_MEMBER(parse_stop)
+  IPC_STRUCT_TRAITS_MEMBER(parse_blocked_on_script_load_duration)
 IPC_STRUCT_TRAITS_END()
 
 // Sent from renderer to browser process when the PageLoadTiming for the
diff --git a/components/page_load_metrics/common/page_load_timing.cc b/components/page_load_metrics/common/page_load_timing.cc
index a479f703..bc9d0b827 100644
--- a/components/page_load_metrics/common/page_load_timing.cc
+++ b/components/page_load_metrics/common/page_load_timing.cc
@@ -22,7 +22,10 @@
          first_layout == other.first_layout &&
          first_paint == other.first_paint &&
          first_text_paint == other.first_text_paint &&
-         first_image_paint == other.first_image_paint;
+         first_image_paint == other.first_image_paint &&
+         parse_start == other.parse_start && parse_stop == other.parse_stop &&
+         parse_blocked_on_script_load_duration ==
+             other.parse_blocked_on_script_load_duration;
 }
 
 bool PageLoadTiming::IsEmpty() const {
@@ -30,7 +33,9 @@
          dom_loading.is_zero() && dom_content_loaded_event_start.is_zero() &&
          load_event_start.is_zero() && first_layout.is_zero() &&
          first_paint.is_zero() && first_text_paint.is_zero() &&
-         first_image_paint.is_zero();
+         first_image_paint.is_zero() && parse_start.is_zero() &&
+         parse_stop.is_zero() &&
+         parse_blocked_on_script_load_duration.is_zero();
 }
 
 }  // namespace page_load_metrics
diff --git a/components/page_load_metrics/common/page_load_timing.h b/components/page_load_metrics/common/page_load_timing.h
index 4336a282..3b1df5e 100644
--- a/components/page_load_metrics/common/page_load_timing.h
+++ b/components/page_load_metrics/common/page_load_timing.h
@@ -52,6 +52,16 @@
   // Time when the first contentful thing (image, text, etc.) is painted.
   base::TimeDelta first_contentful_paint;
 
+  // Time that the document's parser started and stopped parsing main resource
+  // content.
+  base::TimeDelta parse_start;
+  base::TimeDelta parse_stop;
+
+  // Sum of times when the parser is blocked waiting on the load of a script.
+  // This duration takes place between parser_start and parser_stop, and thus
+  // must be less than or equal to parser_stop - parser_start.
+  base::TimeDelta parse_blocked_on_script_load_duration;
+
   // If you add additional members, also be sure to update operator==,
   // page_load_metrics_messages.h, and IsEmpty().
 };
diff --git a/components/page_load_metrics/renderer/metrics_render_frame_observer.cc b/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
index 20f4d8a8..e9bdf6ec 100644
--- a/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
+++ b/components/page_load_metrics/renderer/metrics_render_frame_observer.cc
@@ -120,6 +120,10 @@
   timing.first_image_paint = ClampDelta(perf.firstImagePaint(), start);
   timing.first_contentful_paint =
       ClampDelta(perf.firstContentfulPaint(), start);
+  timing.parse_start = ClampDelta(perf.parseStart(), start);
+  timing.parse_stop = ClampDelta(perf.parseStop(), start);
+  timing.parse_blocked_on_script_load_duration =
+      base::TimeDelta::FromSecondsD(perf.parseBlockedOnScriptLoadDuration());
   return timing;
 }
 
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb
index 585cd112..9fd8210d 100644
--- a/components/policy/resources/policy_templates_am.xtb
+++ b/components/policy/resources/policy_templates_am.xtb
@@ -893,11 +893,6 @@
 <translation id="4039085364173654945">በአንድ ገጽ ላይ ያለ የሶስተኛ ወገን ንዑስ-ይዘት የኤች ቲ ቲ ፒ መሠረታዊ ማረጋገጫ መገናኛ ሳጥን ብቅ ማድረግ ይፈቀድለት እንደሆነ ይቆጣጠራል።
 
           ይሄ በመደበኝነት ማስገርን ለመከላከል ተብሎ ይሰናከላል። ይህ መመሪያ ካልተዋቀረ ይሄ ይሰናከልና የሶስተኛ ወገን ንዑስ ይዘት የኤች ቲ ቲ ፒ መሠረታዊ ማረጋገጫ መገናኛ ሳጥን ብቅ እንዲል እንዲያደርግ አይፈቀድለትም።</translation>
-<translation id="4052765007567912447">ተጠቃሚው የይለፍ ቃላትን በይለፍ ቃል አቀናባሪው ውስጥ በግልጽ ጽሑፍ ያሳይ እንደሆነ ይቆጣጠራል።
-
-          ይህን ቅንብር ካሰናከሉ የይለፍ ቃል አቀናባሪው የተከማቹ የይለፍ ቃላት በይለፍ ቃል አቀናባሪ መስኮት ውስጥ በግልጽ ጽሑፍ እንዲታዩ አይፈቅድም።
-
-          ይህን መመሪያ ካነቁ ወይም ካላዋቀሩ ተጠቃሚዎች በይለፍ ቃል አቀናባሪው ውስጥ በግልጽ ጽሁፍ የይለፍ ቃላቸውን ማየት ይችላሉ።</translation>
 <translation id="4056910949759281379">የSPDY ፕሮቶኮልን ያሰናክሉ</translation>
 <translation id="4088589230932595924">ማንነትን የማያሳውቅ ሁነታ ተገድዷል</translation>
 <translation id="4088983553732356374">ድር ጣቢያዎች የአካባቢ ውሂብ እንዲያዋቅሩ ይፈቀደላቸው እንደሆነ እንዲያዋቅሩ ያስችልዎታል። አካባቢያዊ ውሂብን ማዋቀር ለሁሉም ድር ጣቢያዎች ማዋቀር ሊፈቀድ ወይም ሊከለከል ይችላል።
@@ -1302,7 +1297,6 @@
       ከተገለጸ የተለዋዋጮች ዘሩን ለማምጣት ስራ ላይ በሚውለው ዩአርኤል ላይ «restrict» የሚባል የመጠይቅ ልኬት ያክላል። የልኬቱ ዋጋ በዚህ መመሪያ ውስጥ የተገለጸው ዋጋ ነው የሚሆነው።
 
       ካልተገለጸ የተለዋዋጮች ዘር ዩ አር ኤሉን አይቀይረውም።</translation>
-<translation id="5564962323737505851">የይለፍ ቃል ማቀናበሪያውን ያዋቅራል። የይለፍ ቃል ማቀናበሪያ ከነቃ ተጠቃሚው የተከማቹ የይለፍ ቃላትን በግልጽ ጽሑፍ ማሳየት ይችል እንደሆነ ማንቃት ወይም ማሰናከል መምረጥ ይችላሉ።</translation>
 <translation id="556941986578702361">የ<ph name="PRODUCT_OS_NAME" /> መደርደሪያው ራስ-መደበቅ ይቆጣጠሩ።
 
       ይህ መመሪያ ወደ «AlwaysAutoHideShelf» ከተዋቀረ መደርደሪያው ሁልጊዜ በራስ-ይደበቃል።
@@ -1414,7 +1408,6 @@
 <translation id="5893553533827140852">ይህ ቅንብር ከነቃ የgnubby ማረጋገጫ ጣቄዎች በርቀት አስተናጋጅ ግንኙነት ላይ በተኪ ይተላለፋሉ።
 
           ይህ ቅንብር ከተሰናከለ ወይም ካልተዋቀረ የgnubby ማረጋገጫ ጥያቄዎች በተኪ አይተላለፉም።</translation>
-<translation id="5912364507361265851">ተጠቃሚዎች የይለፍ ቃላትን በይለፍ ቃል አስተዳዳሪ ውስጥ እንዲያዩ ይፍቀዱላቸው</translation>
 <translation id="5921713479449475707">የራስ-ዝማኔ ውርዶች በHTTP በኩል ይፍቀዱ</translation>
 <translation id="5921888683953999946">በመግቢያ ገጹ ላይ ያለው ነባሪውን የትልቅ ጠቋሚ ተደራሽነት ባህሪ ያዋቅሩ።
 
@@ -2055,6 +2048,7 @@
 <translation id="7882585827992171421">ይህ መመሪያ በችርቻሮ ሁነታ ብቻ ነው ገባሪ የሚሆነው።
 
       በመግቢያ ገጹ ላይ እንደ ማያ ገጽ አዳኝ የሚያገለግለውን የቅጥያ መታወቂያን ይወስናል። ቅጥያው በDeviceAppPack መመሪያ በኩል ለዚህ ጎራ የተዋቀረ የAppPack አካል መሆን አለበት።</translation>
+<translation id="7882890448959833986">የማይደገፍ ሥርዓተ ክወና ማስጠንቀቂያን ያፍኑት</translation>
 <translation id="7912255076272890813">የተፈቀዱ የመተግበሪያ/ቅጥያ አይነቶችን ያዋቅሩ</translation>
 <translation id="793134539373873765">የስርዓተ ክወና ዝማኔ ለመላክ p2p ስራ ላይ ይዋል ወይም አይዋል ይገልጻል። ወደ እውነት ከተዋቀረ መሣሪያዎች የሚላኩ ዝማኔዎችን በላን ላይ ለመጋራትና እሱን ለመጠቀም ይሞክራሉ፣ ይህም የበይነመረብ መተላለፊያ ይዘት አጠቃቀም እና መጨናነቅ ዕድል ይቀንሳል። የተላከው ዝማኔ በላን ላይ የማይገኝ ከሆነ መሣሪያዎ ወደ የዝማኔ አገልጋዩ ይዞርና ከእሱ ያወርዳል። ወደ ሐሰት ከተዋቀረ ወይም እንዳልተዋቀረ ከተተወ p2p ስራ ላይ አይውልም።</translation>
 <translation id="7933141401888114454">ክትትል የሚደረግባቸው የተጠቃሚዎች መፍጠርን ያንቁ</translation>
@@ -2116,6 +2110,7 @@
 
 መመሪያው ሐሰት ተደርጎ ከተዘጋጀ፣ የበይነገጽ ዝርዝሩ ሪፖርት አይደረግም።</translation>
 <translation id="8146727383888924340">ተጠቃሚዎች ቅናሾችን በChrome ስርዓተ ክወና ምዝገባ በኩል እንዲያስመልሱ ይፍቀዱ</translation>
+<translation id="8148785525797916822"><ph name="PRODUCT_NAME" /> በኮምፒውተር ላይ ወይም ከእንግዲህ በማይደገፍ የሥርዓተ ክወና ላይ በሚሄድበት ጊዜ ብቅ የሚለውን ማስጠንቀቂያ ያፍናል።</translation>
 <translation id="8148901634826284024">የባለከፍተኛ ንፅፅር ሁነታ ተደራሽነት ባህሪን ያንቁ።
 
           ይህ መመሪያ ወደ እውነት ከተዋቀረ ባለከፍተኛ ንፅፅር ሁነታ ሁልጊዜ ይነቃል።
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb
index 64c1d4b0..a682c75 100644
--- a/components/policy/resources/policy_templates_ar.xtb
+++ b/components/policy/resources/policy_templates_ar.xtb
@@ -796,11 +796,6 @@
 <translation id="402759845255257575">عدم السماح لأي موقع بتشغيل جافا سكريبت</translation>
 <translation id="4027608872760987929">تمكين مزود البحث الافتراضي</translation>
 <translation id="4039085364173654945">‏للتحكم في السماح للمحتوى الفرعي لطرف ثالث على الصفحة بعرض نافذة منبثقة بمربع حوار مصادقة HTTP الأساسية. يتم عادةً تعطيل ذلك كحماية من التصيد. إذا لم يتم تعيين هذه السياسة، يتم تعطيل هذا الإعداد ولا يتم السماح للمحتوى الفرعي لطرف ثالث بعرض نافذة منبثقة بمربع حوار مصادقة HTTP الأساسية.</translation>
-<translation id="4052765007567912447">للتحكم في عرض المستخدم لكلمات المرور بنص واضح في مدير كلمات المرور.
-
-          إذا تم تعطيل هذا الإعداد، فلن يسمح مدير كلمات المرور بعرض كلمات المرور المخزنة بنص واضح في نافذة مدير كلمات المرور.
-
-          إذا تم تمكين هذا الإعداد أو لم يتم تعيين هذه السياسة، يستطيع المستخدمون عرض كلمات المرور بنص واضح في مدير كلمات المرور.</translation>
 <translation id="4056910949759281379">‏تعطيل بروتوكول SPDY</translation>
 <translation id="4088589230932595924">تم فرض وضع التصفح المتخفي</translation>
 <translation id="4088983553732356374">‏تسمح لك بتحديد ما إذا كان يُسمح لمواقع الويب بتعيين البيانات المحلية. يمكن إما السماح بتعيين البيانات المحلية لجميع مواقع الويب أو رفض تعيينها لجميع مواقع الويب.
@@ -1139,7 +1134,6 @@
       في حالة التحديد، ستتم إضافة معلمة طلب بحث تسمى 'restrict' إلى عنوان URL المستخدم لجلب القيمة الأولية للأشكال. قيمة المعلمة ستكون المعلمة المحددة في هذه السياسة.
 
       في حالة عدم التحديد، لن يتم تعديل عنوان URL للقيمة الأولية للأشكال.</translation>
-<translation id="5564962323737505851">تهيئة مدير كلمة المرور. إذا تم تمكين مدير كلمة المرور، فيمكنك تمكين، أو تعطيل، عرض المستخدم لكلمات المرور المخزنة بنص واضح.</translation>
 <translation id="556941986578702361">‏للتحكم بالإخفاء التلقائي لرف <ph name="PRODUCT_OS_NAME" />.
 
       في حالة تعيين هذه السياسة على "AlwaysAutoHideShelf"، سيتم إخفاء الرف تلقائيًا بشكل دائم
@@ -1245,7 +1239,6 @@
 <translation id="5893553533827140852">‏عند تمكين هذا الإعداد، سيتم توكيل طلبات مصادقة gnubby على اتصال مضيف بعيد.
 
           وعند تعطيله أو عدم تهيئته، لن يتم توكيل طلبات مصادقة gnubby.</translation>
-<translation id="5912364507361265851">السماح للمستخدمين بعرض كلمات المرور في مدير كلمات المرور</translation>
 <translation id="5921713479449475707">‏السماح بتنزيلات التحديث التلقائي عبر HTTP</translation>
 <translation id="5921888683953999946">‏تعيين الحالة الافتراضية لميزة الدخول إلى المؤشر الكبير في شاشة تسجيل الدخول.
 
@@ -1797,6 +1790,7 @@
 <translation id="7882585827992171421">‏لا تكون هذه السياسة نشطة سوى في وضع البيع بالتجزئة فقط.
 
       لتحديد معرف الإضافة المراد استخدامها كشاشة توقف على شاشة تسجيل الدخول. يجب أن تكون الإضافة جزءًا من AppPack والذي تمت تهيئته لهذا النطاق عبر السياسة DeviceAppPack.</translation>
+<translation id="7882890448959833986">إيقاف تحذير نظام التشغيل غير المدعوم</translation>
 <translation id="7912255076272890813">تهيئة أنواع التطبيقات/الإضافات المسموح بها</translation>
 <translation id="793134539373873765">‏لتحديد ما إذا كان سيتم استخدام p2p لحمولات تحديث نظام التشغيل. في حالة التعيين على "True"، ستجري الأجهزة مشاركة لحمولات التحديث وتحاول استهلاكها على شبكة LAN، ويحتمل أن يؤدي ذلك إلى تخفيف العبء على استخدام النطاق الترددي للإنترنت وتقليل  التكدس. وإذا لم تكن حمولة التحديث متاحة على شبكة LAN، فسيعاود الجهاز تنزيلها من خادم التحديث. وفي حالة التعيين على "False" أو غير مهيأ، فلن  يتم استخدام p2p.</translation>
 <translation id="7933141401888114454">تمكين إنشاء حسابات المستخدمين الخاضعة للإشراف</translation>
@@ -1854,6 +1848,7 @@
 
       عند تعيين هذه السياسة على "خطأ"، فلن يتم الإبلاغ عن قائمة الواجهة.</translation>
 <translation id="8146727383888924340">‏السماح للمستخدمين باسترداد قيمة العروض من خلال تسجيل نظام التشغيل Chrome</translation>
+<translation id="8148785525797916822">إيقاف التحذير الذي يظهر عندما يعمل <ph name="PRODUCT_NAME" /> على الكمبيوتر أو نظام التشغيل الذي لم يعد مدعومًا.</translation>
 <translation id="8148901634826284024">‏تمكين ميزة الدخول إلى وضع التباين العالي.
 
           في حالة تعيين هذه السياسة على "true"، سيتم تمكين وضع التباين العالي على الدوام.
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb
index 8dc47d06..fa232d6 100644
--- a/components/policy/resources/policy_templates_bg.xtb
+++ b/components/policy/resources/policy_templates_bg.xtb
@@ -799,7 +799,6 @@
 <translation id="402759845255257575">Забраняване на изпълняването на JavaScript от сайтовете</translation>
 <translation id="4027608872760987929">Активиране на търсещата машина по подразбиране</translation>
 <translation id="4039085364173654945">Контролира дали на подсъдържанието от трета страна на дадена страница е разрешено да отваря диалогов прозорец за базово HTTP удостоверяване. Обикновено опцията е деактивирана като защита срещу фишинг. Ако това правило не е зададено, настройката не е активна и горепосоченото няма да е разрешено.</translation>
-<translation id="4052765007567912447">Контролира дали потребителят може да показва пароли като нешифрован текст в диспечера на паролите. В случай че деактивирате тази настройка, диспечерът не разрешава съхранените пароли да се показват по този начин в прозореца му. Ако активирате или не зададете това правило, потребителите могат да виждат паролите си като нешифрован текст в диспечера на паролите.</translation>
 <translation id="4056910949759281379">Деактивиране на протокола SPDY</translation>
 <translation id="4088589230932595924">Режим „инкогнито“ е наложен принудително</translation>
 <translation id="4088983553732356374">Позволява да посочите дали на уебсайтовете е разрешено да задават локални данни. Това може да се разреши или откаже за всички уебсайтове.
@@ -1155,7 +1154,6 @@
 Ако правилото бъде посочено, към използвания за извличане на това число URL адрес ще се добави параметър на заявката, наречен restrict. Стойността на параметъра ще бъде указаната в това правило.
 
 В случай че то не е посочено, URL адресът за началното число за вариантите няма да се променя.</translation>
-<translation id="5564962323737505851">Конфигурира диспечера на паролите. Ако е активиран, можете да изберете дали да разрешите на потребителя да показва съхранените пароли като нешифрован текст.</translation>
 <translation id="556941986578702361">Контролирайте автоматичното скриване на полицата на <ph name="PRODUCT_OS_NAME" />.
 
 Ако за това правило е зададено „AlwaysAutoHideShelf“, тя ще се скрива автоматично винаги.
@@ -1260,7 +1258,6 @@
 <translation id="5893553533827140852">Ако тази настройка е активирана, заявките за удостоверяване през gnubby ще бъдат пренасочвани през връзка с отдалечен хост.
 
           Ако е деактивирана или не е конфигурирана, заявките за удостоверяване през gnubby няма да се пренасочват.</translation>
-<translation id="5912364507361265851">Разрешаване на потребителите да показват пароли в диспечера на паролите</translation>
 <translation id="5921713479449475707">Разрешаване на изтегляния на автоматични актуализации през HTTP</translation>
 <translation id="5921888683953999946">Задаване на стандартното състояние на функцията за достъпност с голям курсор на екрана за вход.
 
@@ -1848,6 +1845,7 @@
 <translation id="7882585827992171421">Това правило е активно само в режим за търговски експонати.
 
 Определя идентификационния номер на разширението, което да се използва като скрийнсейвър на екрана за вход. То трябва да е част от пакета с приложения, който е конфигуриран за този домейн чрез правилото „DeviceAppPack“.</translation>
+<translation id="7882890448959833986">Спиране на предупреждението за неподдържана операционна система</translation>
 <translation id="7912255076272890813">Конфигуриране на разрешените типове приложения/разширения</translation>
 <translation id="793134539373873765">Посочва дали за актуализации на операционната система да се ползва мрежа с равноправен достъп. Ако е зададено на „True“, устройствата ще споделят и ще опитват да получават актуализациите през локалната мрежа, което потенциално може да намали използването на капацитета и задръстването на връзката с интернет. Ако актуализацията не е налице в локалната мрежа, устройството ще премине към изтегляне от сървър за актуализации. Ако е зададено на „False“ или не е конфигурирано, няма да се ползва мрежа с равноправен достъп.</translation>
 <translation id="7933141401888114454">Активиране на създаването на контролирани потребители</translation>
@@ -1910,6 +1908,7 @@
 
 Ако за правилото е зададено „false“, списъкът с интерфейси няма да се предостави.</translation>
 <translation id="8146727383888924340">Разрешаване на потребителите да осребряват оферти чрез регистрацията за Chrome OS</translation>
+<translation id="8148785525797916822">Спира предупреждението, което се показва, когато <ph name="PRODUCT_NAME" /> работи на компютър или под операционна система, които вече не се поддържат.</translation>
 <translation id="8148901634826284024">Активиране на функцията за достъпност „режим на висок контраст“.
 
           Ако е зададено true, режимът на висок контраст винаги ще бъде активиран.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb
index 0e202057..ef4db4e 100644
--- a/components/policy/resources/policy_templates_bn.xtb
+++ b/components/policy/resources/policy_templates_bn.xtb
@@ -864,11 +864,6 @@
 
           আদর্শগতভাবে এটি একটি ফিশিং প্রতিরোধ হিসাবে অক্ষম আছে৷ যদি এই নীতিটি সেট না থেকে থাকে তবে এটি অক্ষম হয় এবং কোনো তৃতীয় পক্ষের উপ-সামগ্রী 
 একটি HTTP Basic Auth কথোপকথন বাক্সে পপ আপ হতে অনুমোদিত হবে না৷</translation>
-<translation id="4052765007567912447">পাসওয়ার্ড পরিচালকের মধ্যে ব্যবহারকারী সাফ পাঠ্যের মধ্যে পাসওয়ার্ড দেখাবে কিনা সেটি নিয়ন্ত্রণ করুন৷ 
-
-আপনি যদি এই সেটিংটি অক্ষম করেন, পাসওয়ার্ড পরিচালক পাসওয়ার্ড পরিচালক উইন্ডোর মধ্যে সাফ পাঠ্যের সঞ্চিত পাসওয়ার্ড দেখাতে অনুমতি দেবে না৷ 
-
-আপনি যদি এটি সক্ষম করেন অথবা নীতিটি সেট না করেন,  পাসওয়ার্ড পরিচালকের মধ্যে সাফ পাঠ্যে ব্যবহারকারীরা তাদের পাসওয়ার্ড দেখতে পারেন৷</translation>
 <translation id="4056910949759281379">SPDY প্রোটোকল অক্ষম করুন</translation>
 <translation id="4088589230932595924">ছদ্মবেশী মোডটি জোর করে আনা হয়েছে</translation>
 <translation id="4088983553732356374">ওয়েবসাইটগুলিকে স্থানীয় ডেটা সেট করতে দেওয়া হবে কিনা, আপনাকে তা সেট করার অনুমোদন দেয়। স্থানীয় ডেটা সেট করার কাজটি সমস্ত ওয়েবসাইটের জন্য অনুমোদন অথবা অস্বীকার করা যাবে।
@@ -1266,7 +1261,6 @@
 যদি নির্দিষ্ট করা থাকে, তাহলে বৈচিত্র সীডটি আনার জন্য ব্যবহৃত URL এ 'সীমিত' নামের একটি ক্যোয়েরি মাপদণ্ড যোগ করবে৷ মাপদন্ডটির মান ও এই নীতিতে নির্দিষ্ট করা মান একই হবে৷
 
 যদি নির্দিষ্ট করা না থাকে, বৈচিত্র সীডের URL কে সংশোধিত করবে না৷</translation>
-<translation id="5564962323737505851">পাসওয়ার্ড ম্যানেজার কনফিগার করুন৷ পাসওয়ার্ড ম্যানেজার সক্ষম থাকলে, ব্যবহারকারী স্বচ্ছ পাঠ্যে সঞ্চিত পাসওয়ার্ডগুলিকে দেখাতে পারবে কি না আপনি তা সক্ষম বা অক্ষম করতে পারেন৷</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> তাকটির স্বয়ংক্রিয়ভাবে লুকায়িত নিয়ন্ত্রণ করুন৷
 
       যদি নীতিটি 'AlwaysAutoHideShelf' এ সেট করা থাকে, তাহলে তাকটি সর্বদা স্বয়ংক্রিয়ভাবে লুকায়িত থাকবে৷
@@ -1377,7 +1371,6 @@
 <translation id="5893553533827140852">যদি এই সেটিং সক্ষম করা থাকে, তাহলে একটি দূরবর্তী হোস্ট সংযোগ জুড়ে gnubby প্রমাণীকরণের অনুরোধগুলির প্রক্সি করা হবে৷
 
           যদি এই সেটিং অক্ষম করা থাকে অথবা কনফিগার করা না থাকে, তাহলে gnubby প্রমাণীকরণের অনুরোধগুলির প্রক্সি করা হবে না৷</translation>
-<translation id="5912364507361265851">পাসওয়ার্ড পরিচালকে পাসওয়ার্ড দেখানোর জন্য ব্যবহারকারীদের মঞ্জুরি দিন</translation>
 <translation id="5921713479449475707">HTTP এর মাধ্যমে স্বতঃআপডেট ডাউনলোড করার মঞ্জুরি দিন</translation>
 <translation id="5921888683953999946">লগইন স্ক্রীনে বড় কার্সার অ্যাক্সেসযোগ্যতার বৈশিষ্ট্যের ডিফল্ট স্থিতি সেট করে৷
 
@@ -1541,6 +1534,7 @@
       আপনি এই সেটিংটি অক্ষম করলে, ব্যবহারকারীদেরকে Smart Lock ব্যবহার করতে দেয়া হবে না।
 
       এই নীতিটি সেট না করে রাখা হলে, ডিফল্টটি এন্টারপ্রাইজ-পরিচালিত ব্যবহারকারীদের জন্য মঞ্জুরি দেওয়া হয় না এবং অ-পরিচালিত ব্যবহারকারীদের জন্য মঞ্জুরি দেওয়া হয়।</translation>
+<translation id="6491139795995924304">ডিভাইসে Bluetooth মঞ্জুর করে</translation>
 <translation id="6513756852541213407">আপনাকে <ph name="PRODUCT_NAME" /> দ্বারা ব্যবহৃত প্রক্সি সার্ভারটি নির্দিষ্ট করার এবং ব্যবহারকারীদের প্রক্সি সেটিংস বাধা দেওয়ার অনুমতি দেয়৷ যদি আপনি কখনই প্রক্সি সার্ভার না ব্যবহার করা চয়ন করেন এবং সর্বদা সরাসরি সংযোগ করেন তবে অন্য সমস্ত বিকল্প এড়ানো হয়৷ যদি আপনি সিস্টেম প্রক্সি সেটিংস ব্যবহার করা বা প্রক্সি সার্ভারটি স্বয়ংক্রিয় সনাক্ত চয়ন করেন অন্যান্য সমস্ত বিকল্প এড়ানো হয়৷ যদি আপনি স্থির সার্ভার প্রক্সি মোড চয়ন করেন আপনি 'ঠিকানা বা প্রক্সি সার্ভারের URL' এবং 'প্রক্সি বাইপাস বিধিগুলির কমা দ্বারা পৃথকীকৃত তালিকায় আরো বিকল্প নির্দিষ্ট করতে পারেন৷ যদি আপনি একটি .pac প্রক্সি স্ক্রিপ্ট ব্যবহার বেছে নেন আপনাকে অবশ্যই '.pac ফাইলে URL'-এ স্ক্রিপ্টটিতে URL নির্দিষ্ট করতে হবে৷ বিস্তারিত উদাহরণের জন্য, এখানে যান: <ph name="PROXY_HELP_URL" /> যদি আপনি এই সেটিংটি সক্ষম করে থাকেন <ph name="PRODUCT_NAME" /> আদেশ পংক্তি থেকে নির্দিষ্ট করা প্রক্সি সম্পর্কিত সমস্ত বিকল্পকে এড়ায়৷ এই নীতিটি সেট না থাকাতে ছেড়ে দেওয়া ব্যবহারকারীদের তাদের নিজস্ব প্রক্সি সেটিংস চয়ন করার অনুমতি দেবে৷</translation>
 <translation id="6520802717075138474">প্রথমবার চালনার সাথে সাথে ডিফল্ট ব্রাউজার থেকে অনুসন্ধানের ইঞ্জিনগুলি আমদানি করুন</translation>
 <translation id="653608967792832033">ব্যবহারকারীর ইনপুট ছাড়াই সময়কাল নির্দিষ্ট করে, তারপর ব্যাটারি শক্তি চলতে থাকলেও স্ক্রীনটি লক হয়ে যায়৷
@@ -1797,6 +1791,11 @@
 
           যদি "RestoreOnStartup" নীতিটি আগের সেশনগুলি থেকে URLগুলি পূর্বাবস্থায় ফিরিয়ে আনতে সেট করা থাকে, তাহলে এই নীতিটি মান্য করা হবে না এবং ঐসব সাইটের জন্য কুকিজ স্থায়ীভাবে সংরক্ষণ করা হবে।</translation>
 <translation id="7207095846245296855">Google নিরাপদ অনুসন্ধান বলবৎ করে</translation>
+<translation id="7213425178181578730">এই নীতিটি মিথ্যাতে সেট করা থাকলে, <ph name="PRODUCT_OS_NAME" /> Bluetooth অক্ষম করবে এবং ব্যবহারকারী এটিকে ফিরিয়ে আনতে পারবে না।
+
+      এই নীতিটি সত্যতে সেট করা থাকলে বা সেট করা না থাকলে, ব্যবহারকারী তার ইচ্ছা মতো Bluetooth সক্ষম বা অক্ষম করতে পারবে।
+
+      এই নীতিটি সেট করা থাকলে, ব্যবহারকারী এটিকে পরিবর্তন বা ওভাররাইড করতে পারবে না।</translation>
 <translation id="7216442368414164495">ব্যবহারকারীদের নিরাপদ ব্রাউজিং এর বর্ধিত প্রতিবেদনের নির্বাচন করা অনুমোদন করে</translation>
 <translation id="7227967227357489766">যেসব ব্যবহারকারীরা ডিভাইসে লগইন করার মঞ্জুরিপ্রাপ্ত তাদের তালিকা নির্ধারণ করে৷ প্রবেশকার্যগুলি <ph name="USER_WHITELIST_ENTRY_FORMAT" /> ফর্মের, যেমন <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />৷ কোনো ডোমেনে অবাধ ব্যবহারকারীদের মঞ্জুরি করতে <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> ফর্মের প্রবেশকার্যগুলি ব্যবহার করুন৷
 
@@ -1981,6 +1980,7 @@
 <translation id="7882585827992171421">এই নীতিটি কেবল খুচরো মোডে সক্রিয়৷
 
       সাইন-ইন স্ক্রীনে এক্সটেনশানের id কে স্ক্রীন সেভার হিসাবে ব্যবহারের জন্য নির্ধারিত করে৷ এক্সটেনশানটিকে অবশ্যই AppPack এর অংশ হতে হবে যা DeviceAppPack নীতির মাধ্যমে এই ডোমেইনের জন্য কনফিগার করা হয়েছে৷</translation>
+<translation id="7882890448959833986">অসমর্থিত OS সতর্কবার্তা গোপন রাখুন</translation>
 <translation id="7912255076272890813">অনুমতিপ্রাপ্ত অ্যাপ্লিকেশন/এক্সটেনশন প্রকারগুলি কনফিগার করুন</translation>
 <translation id="793134539373873765">OS আপডেট প্লেলোডগুলির জন্য p2p ব্যবহার করা হবে কিনা নির্দিষ্ট করে৷ যদি True তে সেট করা থাকে, ডিভাইসগুলি শেয়ার করা হবে এবং ইন্টারনেট ব্যান্ডউইডথ ব্যবহার এবং ঝনঝট কমাতে LAN এ আপডেট প্লেলোডগুলির কনজিউম করার চেষ্টা করবে৷ যদি LAN এ আপডেট প্লেলোড উপলব্ধ না থাকে, তবে ডিভাইস আপডেট সার্ভার থেকে ডাউনলোড করতে ফিরে আসবে৷ যদি False তে সেট করা থাকে বা কনফিগার করা না থাকে, তবে p2p ব্যবহার করা হবে না৷</translation>
 <translation id="7933141401888114454">তত্বাবধানে থাকা ব্যবহারকারী তৈরি করা সক্ষম করুন</translation>
@@ -2042,6 +2042,7 @@
 
       যদি নীতিটি সেট না করা থাকে, বা মিথ্যাতে সেট করা থাকে, তাহলে ইন্টারফেস তালিকাটির প্রতিবেদন করা হবে না৷</translation>
 <translation id="8146727383888924340">Chrome OS নথিভুক্তকরণের মাধ্যমে ব্যবহারকারীদের অফারগুলি ভাঙ্গাতে অনুমতি দিন</translation>
+<translation id="8148785525797916822"><ph name="PRODUCT_NAME" /> যখন আর সমর্থিত নয় এমন কোনো কম্পিউটার বা অপারেটিং সিসটেমে চলে তখন যে সতর্কবার্তা দেখা দেয় সেটি গোপন করে।</translation>
 <translation id="8148901634826284024">উচ্চ বৈসাদৃশ্য মোড অ্যাক্সেসযোগ্যতার বৈশিষ্ট্য সক্রিয় করে৷
 
           যদি এই নীতি সত্যতে সেট করা থাকে, তাহলে উচ্চ বৈসাদৃশ্য মোড সবসময় সক্ষম থাকবে৷
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb
index 16577525..84af39ad 100644
--- a/components/policy/resources/policy_templates_ca.xtb
+++ b/components/policy/resources/policy_templates_ca.xtb
@@ -793,7 +793,6 @@
 <translation id="402759845255257575">No permetis que cap lloc web executi JavaScript</translation>
 <translation id="4027608872760987929">Activa el proveïdor de cerca predeterminat</translation>
 <translation id="4039085364173654945">Controla si el contingut secundari de tercers en una pàgina pot fer aparèixer un quadre de diàleg d'autenticació bàsica HTTP. Normalment es desactiva com a defensa de pesca (suplantació d'identitat). Si no es defineix aquesta política, aquest paràmetre es desactivarà i el contingut secundari de tercers no podrà fer aparèixer un quadre de diàleg d'autenticació bàsica HTTP.</translation>
-<translation id="4052765007567912447">Controla si l'usuari pot mostrar les contrasenyes en text no xifrat en el gestor de contrasenyes. Si desactiveu aquest paràmetre, el gestor de contrasenyes no permetrà mostrar les contrasenyes emmagatzemades en text no xifrat a la finestra del gestor de contrasenyes. Si activeu aquesta política o si no la definiu, els usuaris podran veure les seves contrasenyes en text no xifrat al gestor de contrasenyes.</translation>
 <translation id="4056910949759281379">Desactiva el protocol SPDY</translation>
 <translation id="4088589230932595924">S'ha forçat el mode d'incògnit</translation>
 <translation id="4088983553732356374">Us permet establir si els llocs web estan autoritzats per establir les dades locals. L'ajust de les dades locals es pot autoritzar o denegar per a tots els llocs web.
@@ -1147,7 +1146,6 @@
       Si s'especifica, afegirà un paràmetre de consulta anomenat "restrict" a l'URL utilitzat per obtenir el valor seed de les variacions. El valor del paràmetre serà el valor especificat en aquesta política.
 
       Si no s'especifica, no modificarà l'URL del valor seed de les variacions.</translation>
-<translation id="5564962323737505851">Configura el gestor de contrasenyes. Si el gestor de contrasenyes està activat, podeu activar o desactivar la possibilitat que l'usuari mostri les contrasenyes emmagatzemades com a text no xifrat.</translation>
 <translation id="556941986578702361">Controla l'ocultació automàtica del prestatge de <ph name="PRODUCT_OS_NAME" />.
 
 Si aquesta política es defineix com a "AlwaysAutoHideShelf", el prestatge s'amagarà sempre automàticament.
@@ -1254,7 +1252,6 @@
 <translation id="5893553533827140852">Si s'activa aquesta opció de configuració, les sol·licituds d'autenticació Gnubby s'enviaran per un servidor intermediari a través d'una connexió d'amfitrió remot.
 
           Si es desactiva o no es configura aquesta opció, les sol·licituds d'autenticació Gnubby s'enviaran per un servidor intermediari.</translation>
-<translation id="5912364507361265851">Permet que els usuaris mostrin les contrasenyes al Gestor de contrasenyes</translation>
 <translation id="5921713479449475707">Permet les baixades d'actualització automàtica mitjançant HTTP</translation>
 <translation id="5921888683953999946">Establiu l'estat predeterminat de la funció d'accessibilitat del cursor gran a la pantalla d'inici de sessió.
 
@@ -1635,9 +1632,9 @@
 
           Si la política RestoreOnStartup s'estableix per restaurar els URL de les sessions anteriors, aquesta política no es respectarà i les galetes s'emmagatzemaran permanentment per a aquests llocs.</translation>
 <translation id="7207095846245296855">Força l'aplicació de Google SafeSearch</translation>
-<translation id="7213425178181578730">Si aquesta política s'estableix en false, <ph name="PRODUCT_OS_NAME" /> desactivarà el Bluetooth i l'usuari no el podrà tornar a activar.
+<translation id="7213425178181578730">Si aquesta política s'estableix en "false", <ph name="PRODUCT_OS_NAME" /> desactivarà el Bluetooth i l'usuari no el podrà tornar a activar.
 
-      Si aquesta política s'estableix en true o es deixa sense establir, l'usuari podrà activar o desactivar el Bluetooth com vulgui.
+      Si aquesta política s'estableix en "true" o es deixa sense establir, l'usuari podrà activar o desactivar el Bluetooth com vulgui.
 
       Si aquesta política s'estableix, l'usuari no la podrà canviar ni substituir.</translation>
 <translation id="7216442368414164495">Permet que els usuaris activin els informes ampliats de la Navegació segura</translation>
@@ -1817,6 +1814,7 @@
 <translation id="7882585827992171421">Aquesta política només està activa en mode de venda.
 
       Determina l'identificador de l'extensió que s'ha d'utilitzar com a protector de pantalla a la pantalla d'inici de sessió. L'extensió ha de formar part de l'AppPack, que està configurat per a aquest domini a través de la política DeviceAppPack.</translation>
+<translation id="7882890448959833986">Suprimeix l'advertiment de sistema operatiu no compatible</translation>
 <translation id="7912255076272890813">Configuració dels tipus d'aplicacions i d'extensions permeses</translation>
 <translation id="793134539373873765">Permet especificar si s'utilitzarà la tecnologia d'igual a igual (P2P) per a les càrregues útils d'actualització del sistema operatiu. Si el valor s'estableix com a True, els dispositius compartiran i provaran de consumir les càrregues útils d'actualització a la xarxa LAN, amb la qual cosa és possible que es redueixi l'ús i la congestió de l'amplada de banda d'Internet. Si la càrrega útil d'actualització no està disponible a la xarxa LAN, el dispositiu farà les baixades des d'un servidor d'actualitzacions. Si el valor s'estableix com a False o si no es configura, no es farà servir P2P.</translation>
 <translation id="7933141401888114454">Activa la creació d'usuaris supervisats.</translation>
@@ -1874,6 +1872,7 @@
 
       Si la política s'estableix com a falsa, no s'informarà de la llista de la interfície.</translation>
 <translation id="8146727383888924340">Permet que els usuaris bescanviïn ofertes a través del registre de Chrome OS.</translation>
+<translation id="8148785525797916822">Suprimeix l'advertiment que es mostra quan <ph name="PRODUCT_NAME" /> s'executa en un ordinador o un sistema operatiu que ja no s'admet.</translation>
 <translation id="8148901634826284024">Activeu la funció d'accessibilitat del mode de contrast elevat.
 
           Si el valor d'aquesta política s'estableix a vertader, el mode de contrast elevat sempre estarà activat.
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb
index d707337..723bcb80 100644
--- a/components/policy/resources/policy_templates_cs.xtb
+++ b/components/policy/resources/policy_templates_cs.xtb
@@ -859,11 +859,6 @@
 <translation id="4039085364173654945">Kontroluje, zda je na stránce u obsahu třetích stran povoleno vyskakování dialogového okna HTTP Basic Auth.
 
           Tato možnost je obvykle vypnuta jako ochrana proti phishingu. Pokud zásada není nastavena, je tato možnost vypnuta a u obsahu třetích stran nebude povoleno vyskakování dialogového okna HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Určuje, zda mohou uživatelé ve správci hesel zobrazit hesla jako čitelný text.
-
-         Pokud toto nastavení deaktivujete, v okně správce hesel nebude možné zobrazit uložená hesla jako čitelný text.
-
-          Pokud tuto zásadu aktivujete nebo ji nenastavíte, uživatelé budou ve správci hesel moci zobrazit uložená hesla jako čitelný text.</translation>
 <translation id="4056910949759281379">Deaktivovat protokol SPDY</translation>
 <translation id="4088589230932595924">Anonymní režim je povinný.</translation>
 <translation id="4088983553732356374">Umožňuje určit, zda mohou webové stránky nastavovat místní data. Nastavení místních dat lze buď povolit pro všechny weby, nebo je pro všechny weby zakázat.
@@ -1259,7 +1254,6 @@
       Je-li zásada stanovena, bude k adrese URL přidán parametr dotazu s názvem „omezit“, který se použije k načtení počáteční hodnoty variace. Hodnota parametru bude představovat hodnotu stanovenou v této zásadě.
 
      Pokud zásada stanovena není, adresa URL počáteční hodnoty variace se nezmění.</translation>
-<translation id="5564962323737505851">Slouží ke konfiguraci správce hesel. Pokud je správce hesel aktivní, můžete se rozhodnout, zda uživatelům povolíte zobrazovat hesla jako čitelný text.</translation>
 <translation id="556941986578702361">Řídí automatické skrývání poličky systému <ph name="PRODUCT_OS_NAME" />.
 
 Pokud je tato zásada nastavena na hodnotu AlwaysAutoHideShelf, polička se vždy automaticky skryje.
@@ -1371,7 +1365,6 @@
 <translation id="5893553533827140852">Pokud je toto nastavení povoleno, žádosti gnubby o ověření budou zprostředkovány přes připojení ke vzdálenému hostiteli.
 
           Pokud je toto nastavení zakázáno nebo není nakonfigurováno, žádosti gnubby o ověření nebudou zprostředkovány.</translation>
-<translation id="5912364507361265851">Umožnit uživatelům zobrazit hesla ve Správci hesel</translation>
 <translation id="5921713479449475707">Povolení stahování automatických aktualizací prostřednictvím protokolu HTTP</translation>
 <translation id="5921888683953999946">Nastavuje výchozí stav funkce usnadnění přístupu pomocí velkého kurzoru na přihlašovací obrazovce.
 
@@ -1995,6 +1988,7 @@
 <translation id="7882585827992171421">Tato zásada je aktivní pouze v režimu prodeje.
 
       Určuje ID rozšíření, které se použije jako spořič obrazovky na přihlašovací obrazovce. Rozšíření musí být součásti balíčku AppPack, který je pro tuto doménu nakonfigurován v rámci zásady DeviceAppPack.</translation>
+<translation id="7882890448959833986">Potlačit upozornění ohledně nepodporovaného operačního systému</translation>
 <translation id="7912255076272890813">Konfigurovat povolené typy aplikací nebo rozšíření</translation>
 <translation id="793134539373873765">Určuje, zda má být pro datové části aktualizací operačního systému použita síť p2p. Pokud zásadu nastavíte na hodnotu True, zařízení budou sdílet pokus o využití datových částí aktualizace v síti LAN, což může vést ke snížení zahlcení a míry využití připojení k internetu. Pokud datová část aktualizace není v síti LAN k dispozici, zařízení přepne zpět na stahování ze serveru aktualizace. Pokud tuto zásadu nenakonfigurujete nebo ji nastavíte na hodnotu False, síť p2p nebude použita.</translation>
 <translation id="7933141401888114454">Povolit vytváření dozorovaných uživatelů</translation>
@@ -2053,6 +2047,7 @@
 
       Pokud je tato zásada nastavena na hodnotu false, seznam rozhraní odesílán nebude.</translation>
 <translation id="8146727383888924340">Povolit uživatelům uplatnit při registraci systému Chrome OS nabídky</translation>
+<translation id="8148785525797916822">Potlačí upozornění, které se zobrazuje, když je prohlížeč <ph name="PRODUCT_NAME" /> spuštěn na počítači nebo v operačním systému, který již není podporován.</translation>
 <translation id="8148901634826284024">Aktivuje funkci usnadnění přístupu pomocí vysokého kontrastu.
 
 Pokud je tato zásada nastavena na hodnotu true, režim vysokého kontrastu bude vždy aktivní.
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb
index 6be577d..3718a1e8 100644
--- a/components/policy/resources/policy_templates_da.xtb
+++ b/components/policy/resources/policy_templates_da.xtb
@@ -800,7 +800,6 @@
 <translation id="402759845255257575">Tillad ikke, at websites kører JavaScript</translation>
 <translation id="4027608872760987929">Aktiver standardsøgemaskine</translation>
 <translation id="4039085364173654945">Kontrollerer, om underlæggende tredjepartsindhold på en side har tilladelse til at vise et pop op-vindue med dialogboksen HTTP Basic Auth. Den er typisk deaktiveret som et phishingforsvar. Hvis denne politik ikke er angivet, deaktiveres den og underlæggende tredjepartsindhold har ikke tilladelse til at vise et pop op-vindue med dialogboksen HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Kontrollerer, om brugeren kan vise adgangskoder med tydelig tekst i Adgangskodemanager. Hvis du deaktiverer denne indstilling, tillader Adgangsmanageren ikke visning af gemte adgangskoder med tydelig tekst i vinduet Adgangsmanager. Hvis du aktiverer eller ikke angiver denne politik, kan brugerne se deres adgangskoder med tydelig tekst i Adgangsmanager.</translation>
 <translation id="4056910949759281379">Deaktiver SPDY-protokol</translation>
 <translation id="4088589230932595924">Inkognitotilstand er gennemtvunget</translation>
 <translation id="4088983553732356374">Giver dig mulighed for at angive, om websites må angive lokale data. Angivelse af lokale data kan enten være tilladt for alle websites eller forbudt for alle websites.
@@ -1161,7 +1160,6 @@
       Hvis dette er angivet, føjes der en forespørgselsparameter med navnet "restrict" til den webadresse, der bruges til at hente variationbasistallet. Værdien for parameteren er den værdi, der er angivet i denne politik.
 
       Hvis dette ikke er angivet, ændres variationbasistallet ikke.</translation>
-<translation id="5564962323737505851">Konfigurerer Adgangskodemanager. Hvis Adgangskodemanager er aktiveret, kan du vælge at aktivere eller deaktivere, om brugeren må vise gemte adgangskoder i ren tekst.</translation>
 <translation id="556941986578702361">Administrer, hvornår <ph name="PRODUCT_OS_NAME" />-hylden skjules automatisk.
 
       Hvis denne politik er angivet som "AlwaysAutoHideShelf'", skjules hylden altid automatisk.
@@ -1266,7 +1264,6 @@
 <translation id="5893553533827140852">Hvis denne indstilling er aktiveret, oprettes der en proxyforbindelse for anmodninger om gnubby-godkendelse på tværs af en fjernhostforbindelse.
 
           Hvis denne indstilling er deaktiveret eller ikke er konfigureret, oprettes der ingen proxyforbindelse for anmodninger om gnubby-godkendelse.</translation>
-<translation id="5912364507361265851">Tillad brugerne at vise adgangskoder i Adgangskodemanager</translation>
 <translation id="5921713479449475707">Tillad download af automatiske opdateringer via HTTP</translation>
 <translation id="5921888683953999946">Indstil standardtilstanden for hjælpefunktionen med den store markør på loginskærmen.
 
@@ -1840,6 +1837,7 @@
 <translation id="7882585827992171421">Denne politik er kun aktiv i detailtilstand.
 
       Bestemmer id'et for den udvidelse, der skal bruges som pauseskærm på loginskærmen. Udvidelsen skal være en del af den AppPack, der er konfigureret til dette domæne via politikken DeviceAppPack.</translation>
+<translation id="7882890448959833986">Ignorer advarslen om manglende understøttelse af OS</translation>
 <translation id="7912255076272890813">Konfigurer tilladte app-/udvidelsestyper</translation>
 <translation id="793134539373873765">Angiver, om p2p skal anvendes til OS-opdateringsdata. Hvis denne politik angives til Sand, vil enheder dele og forsøge at forbruge opdateringsdata på LAN-netværket, hvor den potentielt kan reducere forbruget og overbelastningen af internetbåndbredden. Hvis opdateringsdata ikke er tilgængelige på LAN-netværket, vil enheden i stedet downloade fra en opdateringsserver. Hvis den angives til Falsk eller ikke konfigureres, vil p2p ikke blive anvendt.</translation>
 <translation id="7933141401888114454">Aktivér oprettelse af administrerede brugere</translation>
@@ -1897,6 +1895,7 @@
 
       Hvis politikken er angivet til Falsk, rapporteres listen over grænseflader ikke.</translation>
 <translation id="8146727383888924340">Tillad, at brugerne indløser kampagnetilbud via Chrome OS-registrering</translation>
+<translation id="8148785525797916822">Ignorerer den advarsel, der vises, når <ph name="PRODUCT_NAME" /> kører på en computer eller et operativsystem, der ikke længere understøttes.</translation>
 <translation id="8148901634826284024">Aktivér hjælpefunktionen Høj kontrast.
 
           Hvis denne politik angives som sand, vil høj kontrast altid være aktiveret.
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 0ea0bbd4..23ab360 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -787,7 +787,6 @@
 <translation id="402759845255257575">Ausführung von JavaScript für keine Website zulassen</translation>
 <translation id="4027608872760987929">Standardsuchmaschine aktivieren</translation>
 <translation id="4039085364173654945">Bestimmt, ob untergeordnete Inhalte von Drittanbietern auf einer Seite in einem HTTP-Basic-Authentifizierungs-Pop-up erscheinen dürfen. In der Regel ist dies zur Abwehr gegen Phishing deaktiviert. Wenn die Richtlinie nicht konfiguriert ist, so ist die Einstellung standardmäßig deaktiviert, sodass untergeordnete Inhalte von Drittanbietern nicht in einem HTTP-Basic-Authentifizierungs-Pop-up erscheinen dürfen.</translation>
-<translation id="4052765007567912447">Bestimmt, ob Nutzer Passwörter im Passwortmanager in Klartext abrufen können. Wenn Sie diese Einstellung deaktivieren, können sich Nutzer Passwörter im Passwortmanagerfenster nicht in Klartext anzeigen lassen. Sollten Sie sie aktivieren oder nicht konfigurieren, so können Nutzer ihre Passwörter im Passwortmanager in Klartext einsehen.</translation>
 <translation id="4056910949759281379">SPDY-Protokoll deaktivieren</translation>
 <translation id="4088589230932595924">Inkognitomodus erzwungen</translation>
 <translation id="4088983553732356374">Mit dieser Richtlinie können Sie festlegen, welche Websites lokale Daten speichern dürfen. Das Speichern von lokalen Daten kann entweder für alle Websites zugelassen oder für alle Websites unterbunden werden.
@@ -1143,7 +1142,6 @@
       Ist die Richtlinie konfiguriert, wird der Abfrageparameter "restrict" zu der URL hinzugefügt, über die der Varianten-Seed abgerufen wird. Den Wert des Parameters legen Sie in dieser Richtlinie fest.
 
       Ist die Richtlinie nicht konfiguriert, bleibt die URL zum Abrufen des Varianten-Seeds unverändert.</translation>
-<translation id="5564962323737505851">Mit dieser Richtlinie wird der Passwortmanager konfiguriert. Ist der Passwortmanager aktiviert, können Sie festlegen, ob der Nutzer gespeicherte Passwörter als Klartext anzeigen kann.</translation>
 <translation id="556941986578702361">Automatisches Ausblenden der <ph name="PRODUCT_OS_NAME" />-Ablage verwalten
 
       Wenn diese Richtlinie auf "AlwaysAutoHideShelf" gesetzt ist, wird die Ablage immer automatisch ausgeblendet.
@@ -1248,7 +1246,6 @@
 <translation id="5893553533827140852">Wenn diese Einstellung aktiviert ist, wird für Anfragen zur Gnubby-Authentifizierung ein Proxy über eine Remotehostverbindung verwendet.
 
 Wenn diese Einstellung deaktiviert oder nicht konfiguriert ist, wird kein Proxy für Anfragen zur Gnubby-Authentifizierung verwendet.</translation>
-<translation id="5912364507361265851">Anzeige von Passwörtern im Passwortmanager durch Nutzer zulassen</translation>
 <translation id="5921713479449475707">Downloads automatischer Updates über HTTP zulassen</translation>
 <translation id="5921888683953999946">Hiermit wird der Standardstatus der Bedienungshilfefunktion für den großen Cursor auf der Anmeldeseite festgelegt.
 
@@ -1801,6 +1798,7 @@
 <translation id="7882585827992171421">Diese Richtlinie ist nur im Händlermodus aktiv.
 
       Bestimmt die ID der Erweiterung, die als Bildschirmschoner auf der Anmeldeseite verwendet werden soll. Die Erweiterung muss Teil des App-Pakets sein, das in der DeviceAppPack-Richtlinie für diese Domain konfiguriert wurde.</translation>
+<translation id="7882890448959833986">Warnung für nicht unterstützte Betriebssysteme unterdrücken</translation>
 <translation id="7912255076272890813">Zulässige App- bzw. Erweiterungstypen konfigurieren</translation>
 <translation id="793134539373873765">Gibt an, ob P2P für die Nutzdaten von Betriebssystem-Updates verwendet werden soll. Falls auf "True" gesetzt, teilen die Geräte Update-Nutzdaten im LAN und versuchen, die Daten von dort zu laden. Dadurch wird potenziell weniger Internetbandbreite verbraucht und es kommt seltener zu Datenstaus. Wenn die Update-Nutzdaten nicht im LAN verfügbar sind, lädt das Gerät sie ersatzweise von einem Updateserver herunter. Ist diese Option auf "False" gesetzt oder nicht konfiguriert, wird P2P nicht verwendet.</translation>
 <translation id="7933141401888114454">Erstellung von betreuten Nutzern aktivieren</translation>
@@ -1858,6 +1856,7 @@
 
       Wird die Richtlinie auf "False" gesetzt, wird die Liste der Netzwerkschnittstellen nicht gemeldet.</translation>
 <translation id="8146727383888924340">Nutzern das Einlösen von Angeboten über die Chrome OS-Registrierung gestatten</translation>
+<translation id="8148785525797916822">Unterdrückt die Anzeige einer Warnung, wenn <ph name="PRODUCT_NAME" /> auf einem nicht mehr unterstützten Computer oder unter einem nicht mehr unterstützten Betriebssystem ausgeführt wird.</translation>
 <translation id="8148901634826284024">Hiermit wird die Bedienungshilfefunktion für den Modus mit hohem Kontrast aktiviert.
 
           Ist diese Richtlinie auf "true" gesetzt, ist der Modus mit hohem Kontrast immer aktiviert.
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb
index 8b798c1f..5093d5c 100644
--- a/components/policy/resources/policy_templates_el.xtb
+++ b/components/policy/resources/policy_templates_el.xtb
@@ -881,11 +881,6 @@
 <translation id="4039085364173654945">Ελέγχει αν το υπο-περιεχόμενο τρίτων μερών σε μια σελίδα επιτρέπεται να ανοίγει ένα πλαίσιο διαλόγου HTTP Basic Auth.
 
           Συνήθως είναι απενεργοποιημένη ως άμυνα κατά του ηλεκτρονικού ''ψαρέματος''. Αν αυτή η πολιτική δεν καθοριστεί, απενεργοποιείται και δεν επιτρέπεται στο υπο-περιεχόμενο τρίτων μερών να ανοίγει ένα πλαίσιο διαλόγου HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Ελέγχει αν ο χρήστης μπορεί να εμφανίσει κωδικούς πρόσβασης σε μορφή απλού κειμένου στη διαχείριση κωδικών πρόσβασης.
-
-          Αν απενεργοποιήσετε αυτήν τη ρύθμιση, η διαχείριση κωδικών πρόσβασης δεν επιτρέπει την εμφάνιση αποθηκευμένων κωδικών πρόσβασης σε μορφή απλού κειμένου στο παράθυρο της διαχείρισης κωδικών πρόσβασης.
-
-          Αν ενεργοποιήσετε ή δεν ορίσετε αυτήν την πολιτική, οι χρήστες θα μπορούν να δουν τους κωδικούς πρόσβασης τους σε μορφή απλού κειμένου στη διαχείριση κωδικών πρόσβασης.</translation>
 <translation id="4056910949759281379">Απενεργοποίηση πρωτοκόλλου SPDY</translation>
 <translation id="4088589230932595924">Αναγκαστική χρήση κατάστασης ανώνυμης περιήγησης</translation>
 <translation id="4088983553732356374">Σας δίνει τη δυνατότητα να ορίσετε εάν επιτρέπεται στους ιστότοπους να ρυθμίζουν τοπικά δεδομένα. Η ρύθμιση των τοπικών δεδομένων μπορεί είτε 
@@ -1287,7 +1282,6 @@
       Αν προσδιοριστεί, θα προσθέτει μια παράμετρο ερωτήματος που αποκαλείται "restrict" στη διεύθυνση URL η οποία χρησιμοποιείται για την ανάκτηση των αρχικών θέσεων των παραλλαγών. Η τιμή αυτής της παραμέτρου θα είναι τιμή που έχει προσδιοριστεί σε αυτήν την πολιτική.
 
       Αν δεν προσδιοριστεί, δεν θα τροποποιηθεί η διεύθυνση URL των αρχικών θέσεων των παραλλαγών.</translation>
-<translation id="5564962323737505851">Κάνει διαμόρφωση της διαχείρισης κωδικού πρόσβασης. Αν η διαχείριση κωδικού πρόσβασης είναι ενεργοποιημένη, μπορείτε να επιλέξετε να ενεργοποιήσετε ή να απενεργοποιήσετε τη ρύθμιση εμφάνισης από τον χρήστη των αποθηκευμένων κωδικών πρόσβασης σε απλό κείμενο.</translation>
 <translation id="556941986578702361">Έλεγχος αυτόματης απόκρυψης του ραφιού του <ph name="PRODUCT_OS_NAME" />.
 
       Εάν αυτή η πολιτική έχει οριστεί ως "AlwaysAutoHideShelf", το ράφι θα αποκρύπτεται πάνα αυτόματα.
@@ -1399,7 +1393,6 @@
 <translation id="5893553533827140852">Εάν είναι ενεργοποιημένη αυτή η ρύθμιση, τότε η μεσολάβηση των αιτημάτων ελέγχου ταυτότητας gnubby θα γίνεται μέσω μιας απομακρυσμένης σύνδεσης σε κεντρικό υπολογιστή.
 
           Εάν είναι απενεργοποιημένη αυτή η ρύθμιση ή δεν διαμορφωθεί, δεν θα γίνεται μεσολάβηση των αιτημάτων ελέγχου ταυτότητας gnubby.</translation>
-<translation id="5912364507361265851">Να επιτρέπεται στους χρήστες να εμφανίζουν κωδικούς πρόσβασης στη Διαχείριση κωδικού πρόσβασης</translation>
 <translation id="5921713479449475707">Να επιτρέπονται οι λήψεις αυτόματης ενημέρωσης μέσω HTTP</translation>
 <translation id="5921888683953999946">Ρύθμιση της προεπιλεγμένης κατάστασης της δυνατότητας προσβασιμότητας μεγάλου δείκτη στην οθόνη σύνδεσης.
 
@@ -2033,6 +2026,7 @@
 <translation id="7882585827992171421">Αυτή η πολιτική είναι ενεργή μόνο σε εμπορική λειτουργία.
 
       Καθορίζει το αναγνωριστικό της επέκτασης που θα χρησιμοποιηθεί ως προφύλαξη οθόνης της οθόνης σύνδεσης. Η επέκταση θα πρέπει να αποτελεί τμήμα του AppPack το οποίο διαμορφώνεται για αυτόν τον τομέα μέσω της πολιτικής DeviceAppPack.</translation>
+<translation id="7882890448959833986">Καταστολή προειδοποίησης μη υποστηριζόμενου λειτουργικού συστήματος</translation>
 <translation id="7912255076272890813">Διαμόρφωση επιτρεπόμενων τύπων επεκτάσεων/εφαρμογών</translation>
 <translation id="793134539373873765">Προσδιορίζει αν θα χρησιμοποιηθεί το p2p για τα ωφέλιμα φορτία ενημέρωσης του λειτουργικού συστήματος. Αν η τιμή οριστεί σε "True", οι συσκευές θα χρησιμοποιούν από κοινού και θα προσπαθούν να καταναλώνουν τα ωφέλιμα φορτία ενημέρωσης στο LAN, μειώνοντας τη χρήση και τη συμφόρηση του εύρους ζώνης του διαδικτύου. Αν το ωφέλιμο φορτίο ενημέρωσης δεν είναι διαθέσιμο στο LAN, η συσκευή θα πραγματοποιήσει λήψη από ένα διακομιστή ενημέρωσης. Αν η τιμή οριστεί σε "False" ή δεν διαμορφωθεί, το p2p δεν θα χρησιμοποιηθεί.</translation>
 <translation id="7933141401888114454">Ενεργοποίηση δημιουργίας εποπτευόμενων χρηστών</translation>
@@ -2095,6 +2089,7 @@
 
       Εάν αυτή η πολιτική οριστεί αναληθής, η λίστα των διεπαφών δεν θα αναφερθεί.</translation>
 <translation id="8146727383888924340">Να επιτρέπεται στους χρήστες η εξαργύρωση προσφορών μέσω της εγγραφής του Chrome OS</translation>
+<translation id="8148785525797916822">Καταστέλλει την προειδοποίηση που εμφανίζεται όταν το <ph name="PRODUCT_NAME" /> εκτελείται σε κάποιον υπολογιστή ή σε κάποιο λειτουργικό σύστημα που δεν υποστηρίζεται πια.</translation>
 <translation id="8148901634826284024">Ενεργοποίηση της λειτουργίας προσβασιμότητας υψηλής αντίθεσης.
 
           Αν αυτή η πολιτική έχει την τιμή true, η λειτουργία υψηλής αντίθεσης θα είναι πάντα ενεργοποιημένη.
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 2de8af30..fd41ed7 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -890,11 +890,6 @@
 <translation id="4039085364173654945">Controls whether third-party sub-content on a page is allowed to pop up an HTTP Basic Auth dialogue box.
 
           Typically this is disabled as a phishing defence. If this policy is not set, this is disabled and third-party sub-content will not be allowed to pop up a HTTP Basic Auth dialogue box.</translation>
-<translation id="4052765007567912447">Controls whether the user may show passwords in clear text in the password manager.
-
-          If you disable this setting, the password manager does not allow showing stored passwords in clear text in the password manager window.
-
-          If you enable or do not set this policy, users can view their passwords in clear text in the password manager.</translation>
 <translation id="4056910949759281379">Disable SPDY protocol</translation>
 <translation id="4088589230932595924">Incognito mode forced.</translation>
 <translation id="4088983553732356374">Allows you to set whether websites are allowed to set local data. Setting local data can be either allowed for all websites or denied for all websites.
@@ -1300,7 +1295,6 @@
       If specified, will add a query parameter called 'restrict' to the URL used to fetch the Variations seed. The value of the parameter will be the value specified in this policy.
 
       If not specified, will not modify the Variations seed URL.</translation>
-<translation id="5564962323737505851">Configures the password manager. If the password manager is enabled, then you can choose to enable or disable whether the user may show stored passwords in clear text.</translation>
 <translation id="556941986578702361">Control auto-hiding of the <ph name="PRODUCT_OS_NAME" /> shelf.
 
       If this policy is set to 'AlwaysAutoHideShelf', the shelf will always auto-hide.
@@ -1413,7 +1407,6 @@
 <translation id="5893553533827140852">If this setting is enabled, then gnubby authentication requests will be proxied across a remote host connection.
 
           If this setting is disabled or not configured, gnubby authentication requests will not be proxied.</translation>
-<translation id="5912364507361265851">Allow users to show passwords in Password Manager</translation>
 <translation id="5921713479449475707">Allow autoupdate downloads via HTTP</translation>
 <translation id="5921888683953999946">Set the default state of the large cursor accessibility feature on the login screen.
 
@@ -2051,6 +2044,7 @@
 <translation id="7882585827992171421">This policy is active in retail mode only.
 
       Determines the id of the extension to be used as a screen saver on the sign-in screen. The extension must be part of the AppPack that is configured for this domain through the DeviceAppPack policy.</translation>
+<translation id="7882890448959833986">Suppress the unsupported OS warning</translation>
 <translation id="7912255076272890813">Configure allowed app/extension types</translation>
 <translation id="793134539373873765">Specifies whether p2p is to be used for OS update payloads. If set to True, devices will share and attempt to consume update payloads on the LAN, potentially reducing Internet bandwidth usage and congestion. If the update payload is not available on the LAN, the device will fall back to downloading from an update server. If set to False or not configured, p2p will not be used.</translation>
 <translation id="7933141401888114454">Enable creation of supervised users</translation>
@@ -2113,6 +2107,7 @@
 
       If the policy is set to false, the interface list will not be reported.</translation>
 <translation id="8146727383888924340">Allow users to redeem offers through Chrome OS Registration</translation>
+<translation id="8148785525797916822">Suppresses the warning that appears when <ph name="PRODUCT_NAME" /> is running on a computer or operating system that is no longer supported.</translation>
 <translation id="8148901634826284024">Enable the high contrast mode accessibility feature.
 
           If this policy is set to true, high contrast mode will always be enabled.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 500726f..c7b78ed 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -779,7 +779,6 @@
 <translation id="402759845255257575">No permitir que los sitios ejecuten JavaScript.</translation>
 <translation id="4027608872760987929">Habilitar el proveedor de búsqueda predeterminado</translation>
 <translation id="4039085364173654945">Controla si se permite que el subcontenido de terceros en una página muestre cuadros de diálogo emergentes de autenticación básica de HTTP. Normalmente, esto se inhabilita a modo defensa contra la suplantación de identidad. Si esta política no se configura, se inhabilita esta opción y no se permite que el subcontenido de terceros muestre cuadros de diálogo emergentes de autenticación básica de HTTP.</translation>
-<translation id="4052765007567912447">Controla si el usuario puede mostrar contraseñas no cifradas en el administrador de contraseñas. Si se inhabilita esta configuración, el administrador de contraseñas no permitirá mostrar las contraseñas no cifradas en la ventana del administrador de contraseñas. Si se habilita esta política o si no se configura, los usuarios podrán ver sus contraseñas no cifradas en el administrador de contraseñas.</translation>
 <translation id="4056910949759281379">Inhabilitar el protocolo SPDY</translation>
 <translation id="4088589230932595924">Modo incógnito forzado</translation>
 <translation id="4088983553732356374">Permite establecer si los sitios web pueden configurar datos locales. La configuración de datos locales puede permitirse para todos los sitios web o rechazarse para todos ellos.
@@ -1134,7 +1133,6 @@
       Si se especifica, agregará un parámetro de consulta llamado "restringir" a la URL que se utiliza para obtener el valor de inicialización de las variaciones. El valor del parámetro será el valor especificado en esta política.
 
       Si no se especifica, no se modificará la URL del valor de inicialización de las variaciones.</translation>
-<translation id="5564962323737505851">Configura el administrador de contraseñas. Si el administrador de contraseñas está habilitado, podrás optar por habilitar o inhabilitar la opción que permite al usuario mostrar las contraseñas almacenadas en texto sin cifrar.</translation>
 <translation id="556941986578702361">Permite controlar la opción para ocultar automáticamente los archivos de <ph name="PRODUCT_OS_NAME" />.
 
       Si esta política se establece en "AlwaysAutoHideShelf", los archivos se ocultarán automáticamente.
@@ -1238,7 +1236,6 @@
 <translation id="5893553533827140852">Si esta opción está habilitada, las solicitudes de autenticación gnubby se representarán a través de una conexión de host remota.
 
           Si esta opción está inhabilitada o no está configurada, no se representarán solicitudes de autenticación gnubby.</translation>
-<translation id="5912364507361265851">Permitir que los usuarios muestren las contraseñas en el Administrador de contraseñas.</translation>
 <translation id="5921713479449475707">Permitir descargas de actualizaciones automáticas a través de HTTP</translation>
 <translation id="5921888683953999946">Establece el estado predeterminado de la función de accesibilidad del cursor grande en la pantalla de acceso.
 
@@ -1793,6 +1790,7 @@
 <translation id="7882585827992171421">Esta política solo se encuentra activa en el modo de venta.
 
       Determina la ID de la extensión que se debe utilizar como protector de pantalla en la página de acceso. La extensión debe formar parte del AppPack configurado para este dominio a través de la política DeviceAppPack.</translation>
+<translation id="7882890448959833986">Eliminar la advertencia de SO incompatible</translation>
 <translation id="7912255076272890813">Configurar tipos de extensiones o aplicaciones permitidos</translation>
 <translation id="793134539373873765">Especifica si se debe utilizar la conexión P2P para cargas de actualizaciones del sistema operativo. Si esta política se establece en True, los dispositivos compartirán e intentarán consumir cargas de actualizaciones en la red LAN, y reducirán de forma potencial la congestión y el uso del ancho de banda de Internet. Si la carga de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar la descarga desde un servidor de actualizaciones. Si se establece en False o no se configura, no se utilizará la conexión P2P.</translation>
 <translation id="7933141401888114454">Habilita la creación de usuarios supervisados.</translation>
@@ -1849,6 +1847,7 @@
 
       Si esta política se establece en "False", no se informará sobre la lista de interfaces.</translation>
 <translation id="8146727383888924340">Permite a los usuarios canjear ofertas a través del Registro del Sistema operativo Chrome.</translation>
+<translation id="8148785525797916822">Elimina la advertencia que aparece cuando se ejecuta <ph name="PRODUCT_NAME" /> en una computadora o sistema operativo que ya no son compatibles.</translation>
 <translation id="8148901634826284024">Habilita la función de accesibilidad del modo de contraste alto.
 
           Si esta política se establece como verdadera, el modo de contraste alto estará siempre habilitado.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index dd1468c..358b608 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -890,11 +890,6 @@
 <translation id="4039085364173654945">Permite controlar si el contenido secundario de terceros de una página web se puede mostrar en un cuadro de diálogo emergente de autenticación básica HTTP.
 
           Esta opción suele estar inhabilitada para defender al usuario frente a los ataques de phishing. Si no se establece esta política, esta opción estará inhabilitada y el contenido secundario de terceros no podrá mostrarse como un cuadro de diálogo emergente de autenticación básica HTTP.</translation>
-<translation id="4052765007567912447">Permite controlar si las contraseñas se pueden mostrar sin cifrar a los usuarios en el administrador de contraseñas.
-
-          Si inhabilitas esta opción, no se podrán ver contraseñas almacenadas sin cifrar en la ventana del administrador de contraseñas.
-
-          Si habilitas esta opción o si no estableces esta política, los usuarios podrán ver sus contraseñas sin cifrar en el administrador de contraseñas.</translation>
 <translation id="4056910949759281379">Inhabilitar protocolo SPDY</translation>
 <translation id="4088589230932595924">Modo de incógnito forzado</translation>
 <translation id="4088983553732356374">Permite seleccionar si los sitios web tienen permiso para establecer datos locales. El establecimiento de datos locales se puede permitir o rechazar en todos los sitios web.
@@ -1297,7 +1292,6 @@
       Si se especifica, se añadirá un parámetro de consulta restrict a la URL utilizada para la obtención de la base de las variaciones. El valor del parámetro será el valor especificado en esta política.
 
       Si no se especifica, no se modificará la URL de la base de las variaciones.</translation>
-<translation id="5564962323737505851">Permite configurar el Administrador de contraseñas. Si el Administrador de contraseñas está habilitado, tienes la posibilidad de habilitar o inhabilitar la opción de visualización de contraseñas almacenadas de los usuarios sin encriptar.</translation>
 <translation id="556941986578702361">Permite controlar la opción para ocultar automáticamente los archivos de <ph name="PRODUCT_OS_NAME" />.
 
       Si esta política se establece en "AlwaysAutoHideShelf", los archivos se ocultarán automáticamente.
@@ -1409,7 +1403,6 @@
 <translation id="5893553533827140852">Si esta opción está habilitada, las solicitudes de autenticación gnubby se representarán a través de una conexión de host remota.
 
           Si esta opción está inhabilitada o no está configurada, no se representarán solicitudes de autenticación gnubby.</translation>
-<translation id="5912364507361265851">Permitir que los usuarios muestren contraseñas en el Administrador de contraseñas</translation>
 <translation id="5921713479449475707">Permitir descargas de actualizaciones automáticas a través de HTTP</translation>
 <translation id="5921888683953999946">Establece el estado predeterminado de la función de accesibilidad del cursor grande en la pantalla de inicio de sesión.
 
@@ -1844,9 +1837,9 @@
 
           Si la política RestoreOnStartup se configura para restaurar las URL de sesiones anteriores, esta política no se respetará y las cookies se almacenarán de forma permanente para estos sitios web.</translation>
 <translation id="7207095846245296855">Forzar Google SafeSearch</translation>
-<translation id="7213425178181578730">Si se asigna el valor False a esta política, <ph name="PRODUCT_OS_NAME" /> inhabilitará la conexión Bluetooth y el usuario no podrá volver a habilitarla.
+<translation id="7213425178181578730">Si se asigna el valor False a esta política, <ph name="PRODUCT_OS_NAME" /> inhabilitará la conexión Bluetooth, y el usuario no podrá volver a habilitarla.
 
-      Si se asigna el valor true a esta política o si esta no se configura, el usuario podrá habilitar o inhabilitar la conexión Bluetooth cuando lo desee.
+      Si se asigna el valor True a esta política o si esta no se configura, el usuario podrá habilitar o inhabilitar la conexión Bluetooth cuando lo desee.
 
       Si se establece esta política, el usuario no podrá cambiar esta opción ni anularla.</translation>
 <translation id="7216442368414164495">Permitir a los usuarios habilitar los informes ampliados de la función de navegación segura</translation>
@@ -2037,6 +2030,7 @@
 <translation id="7882585827992171421">Esta política solo se encuentra activa en el modo comercial.
 
       Permite determinar el ID de la extensión que se debe utilizar como salvapantallas en la pantalla de inicio de sesión. La extensión debe formar parte del paquete AppPack configurado para ese dominio a través de la política DeviceAppPack.</translation>
+<translation id="7882890448959833986">Suprimir la advertencia de SO no admitido</translation>
 <translation id="7912255076272890813">Configurar tipos de extensiones o aplicaciones permitidos</translation>
 <translation id="793134539373873765">Especifica si la conexión P2P se debe utilizar para cargas útiles de actualizaciones del sistema operativo. Si esta política se establece en True, los dispositivos compartirán e intentarán consumir cargas útiles de actualizaciones en la red LAN, reduciendo de forma potencial la congestión y el uso del ancho de banda. Si la carga útil de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar la descarga desde un servidor de actualizaciones. Si se establece en False o no se configura, no se utilizará la conexión P2P.</translation>
 <translation id="7933141401888114454">Habilitar la creación de usuarios supervisados</translation>
@@ -2098,6 +2092,7 @@
 
 Si la política está establecida en False, no se informará sobre la lista de interfaces.</translation>
 <translation id="8146727383888924340">Permitir a los usuarios canjear ofertas a través del servicio de registro de Chrome OS</translation>
+<translation id="8148785525797916822">Suprime la advertencia que aparece cuando <ph name="PRODUCT_NAME" /> se ejecuta en un ordenador o en un sistema operativo que ya no se admite.</translation>
 <translation id="8148901634826284024">Habilita la función de accesibilidad del modo de contraste alto.
 
           Si el valor de esta política se establece en True, siempre se habilitará el modo de contraste alto.
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb
index 946c087..f216d9e 100644
--- a/components/policy/resources/policy_templates_et.xtb
+++ b/components/policy/resources/policy_templates_et.xtb
@@ -876,11 +876,6 @@
 <translation id="4039085364173654945">Juhib, kas lehel olev kolmanda osapoole alamsisu võib HTTP Basic Authi hüpikdialoogina avaneda.
 
           Tavaliselt on see andmepüügi eest kaitsmiseks keelatud. Kui see reegel ei ole määratud, siis see keelatakse ja kolmanda osapoole alamsisu ei saa HTTP Basic Authi hüpikdialoogina avaneda.</translation>
-<translation id="4052765007567912447">Juhib, kas kasutaja võib paroolihalduses paroole tavatekstina vaadata.
-
-          Seade keelamisel ei luba paroolihaldur salvestatud paroole paroolihalduri aknas tavatekstina kuvada.
-
-          Kui lubate reegli või jätate selle määramata, siis saavad kasutajad paroolihalduris paroole tavatekstina vaadata.</translation>
 <translation id="4056910949759281379">Keela SPDY-protokoll</translation>
 <translation id="4088589230932595924">Inkognito režiim on jõustatud</translation>
 <translation id="4088983553732356374">Võimaldab teil seadistada, kas veebisaitidel on lubatud määrata kohalikke andmeid. Kohalike andmete määramise saab lubada või keelata kõigi veebisaitide jaoks.
@@ -1281,7 +1276,6 @@
       Kui see on määratud, lisatakse päringu parameeter „restrict” URL-ile, mida kasutatakse variatsioonide lähteväärtuse toomiseks. Parameetri väärtus on selles reeglis määratud väärtus.
 
       Kui seda ei määrata, siis variatsioonide lähteväärtuse URL-i ei muudeta.</translation>
-<translation id="5564962323737505851">Seadistab paroolihalduri. Kui paroolihaldur on lubatud, siis võite kasutajatel lubada või keelata talletatud paroolide näitamise tavatekstina.</translation>
 <translation id="556941986578702361">Seadistage hoidla <ph name="PRODUCT_OS_NAME" /> automaatne peitmine.
 
       Kui reegel on seatud väärtusele „AlwaysAutoHideShelf”, peidetakse hoidla alati automaatselt.
@@ -1392,7 +1386,6 @@
 <translation id="5893553533827140852">Kui see seade on lubatud, siis edastatakse gnubby autentimistaotlused puhverserverisse kaughosti ühenduse abil.
 
           Kui see seade on keelatud või seadistamata, siis ei edastata gnubby autentimistaotlusi puhverserveri abil.</translation>
-<translation id="5912364507361265851">Luba kasutajatel paroolihalduris paroolide näitamine</translation>
 <translation id="5921713479449475707">Automaatsete allalaadimiste lubamine HTTP kaudu</translation>
 <translation id="5921888683953999946">Sisselogimisekraanil suure kursori hõlbustusfunktsiooni vaikeoleku määramine.
 
@@ -2025,6 +2018,7 @@
 <translation id="7882585827992171421">Reegel on aktiivne ainult jaerežiimis.
 
       Määrab laienduse ID, mida kasutatakse sisselogimisekraani ekraanisäästjana. Laiendus peab kuuluma AppPacki, mis on seadistatud domeenile DeviceAppPack-reegliga.</translation>
+<translation id="7882890448959833986">Toetuseta OS-is hoiatuse blokeerimine</translation>
 <translation id="7912255076272890813">Seadista lubatud rakenduste/laienduste tüübid</translation>
 <translation id="793134539373873765">Määrab, kas OS-i värskendamise lastide jaoks kasutatakse p2p-võrgustikku. Kui väärtuseks on seatud Tõene, siis seade jagab ja proovib tarbida värskendamise laste LAN-is, vähendades potentsiaalselt Interneti-ribalaiuse kasutamist ja ummistumist. Kui värskendamise last pole LAN-is saadaval, naaseb seade allalaadimise juurde värskendusserverist. Kui väärtuseks on seatud Vale või see pole määratud, siis p2p-võrgustikku ei kasutata.</translation>
 <translation id="7933141401888114454">Järelevalvega kasutajate loomise lubamine</translation>
@@ -2089,6 +2083,7 @@
 
       Kui reegel määratakse olekule Väär, siis liideseloendit ei edastata.</translation>
 <translation id="8146727383888924340">Lubage kasutajatel pakkumisi lunastada Chrome OS-i registreerimise kaudu</translation>
+<translation id="8148785525797916822">Blokeerib hoiatuse, mis kuvatakse, kui teenust <ph name="PRODUCT_NAME" /> käitatakse arvutis või operatsioonisüsteemis, mida enam ei toetata.</translation>
 <translation id="8148901634826284024">Suure kontrastsusega režiimi hõlbustusfunktsiooni lubamine.
 
           Kui reegel on seatud väärtusele Tõene, on suure kontrastsusega režiim alati lubatud.
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb
index 52cbf17a..4601371 100644
--- a/components/policy/resources/policy_templates_fa.xtb
+++ b/components/policy/resources/policy_templates_fa.xtb
@@ -782,7 +782,6 @@
 <translation id="402759845255257575">به هیچ سایتی برای اجرای جاوا اسکریپت اجازه داده نشود</translation>
 <translation id="4027608872760987929">فعال کردن ارائه دهنده جستجوی پیش‌فرض</translation>
 <translation id="4039085364173654945">‏کنترل می‌کند که آیا یک محتوای فرعی شخص ثالث در یک صفحه، اجازه ظاهر شدن به صورت کادر گفتگوی HTTP Basic Auth را دارد یا نه. معمولاً برای محافظت از فیشینگ این گزینه غیرفعال است. اگر این قانون تنظیم نشده باقی بماند، غیرفعال می‌ماند و محتوای فرعی شخص ثالث مجاز نخواهد بود کادر گفتگوی HTTP Basic Auth را نشان دهد.</translation>
-<translation id="4052765007567912447">کنترل می‌کند که آیا کاربر می‌تواند در مدیر گذرواژه، گذرواژه‌ها را به صورت نوشتار ساده ببیند. با غیرفعال کردن این گزینه، مدیر گذرواژه در پنجره خود اجازه دیدن گذرواژه‌های ذخیره شده را به صورت نوشتار ساده نمی‌دهد. با فعال کردن یا تنظیم نکردن این قانون، کاربران می‌توانند گذرواژه‌های خود را در مدیر گذرواژه به صورت نوشتار ساده ببینند.</translation>
 <translation id="4056910949759281379">‏غیر فعال کردن پروتکل SPDY</translation>
 <translation id="4088589230932595924">حالت ناشناس به اجبار اعمال شد</translation>
 <translation id="4088983553732356374">‏به شما امکان می‌دهد تعیین کنید وب‌سایت‌ها مجاز به تنظیم داده محلی هستند یا خیر. تنظیم داده محلی می‌تواند برای تمام وب‌سایت‌ها مجاز یا ممنوع شود.
@@ -1133,7 +1132,6 @@
 اگر تعیین شود، یک پارامتر جستجو به نام «محدود» به نشانی وب استفاده شده در واکشی seed تغییرات اضافه خواهد شد. مقدار پارامتر مقدار مشخص شده در خط‌مشی خواهد بود.
 
 اگر تعیین نشود، نشانی وب seed تغییرات را تغییر نخواهد داد.</translation>
-<translation id="5564962323737505851">مدیر گذرواژه را پیکربندی می‌کند. اگر مدیر گذرواژه فعال باشد، می‌توانید تنظیم کنید که آیا کاربر می‌تواند گذرواژههای ذخیره شده را ببیند یا نه.</translation>
 <translation id="556941986578702361">‏پنهان شدن خودکار قفسه <ph name="PRODUCT_OS_NAME" /> را کنترل می‌کند.
 
       اگر این خط‌مشی روی «AlwaysAutoHideShelf» تنظیم شده باشد، قفسه همیشه بطور خودکار پنهان می‌شود.
@@ -1235,7 +1233,6 @@
 <translation id="5893553533827140852">‏اگر این تنظیم فعال باشد، درخواست‌های احراز هویت gnubby در سراسر یک اتصال به میزبان راه دور پروکسی خواهد شد.
 
 اگر این تنظیم غیرفعال باشد یا پیکربندی نشده باشد، درخواست‌های احراز هویت gnubby پروکسی نمی‌شود.</translation>
-<translation id="5912364507361265851">به کاربران اجازه دیدن گذرواژههای در مدیر گذرواژه داده شود</translation>
 <translation id="5921713479449475707">‏امکان بارگیری‌های به‌روزرسانی خودکار از طریق HTTP</translation>
 <translation id="5921888683953999946">حالت پیش‌فرض قابلیت دسترس‌پذیری نشانگر موشواره بزرگ را در صفحه ورود به سیستم تنظیم کنید.
 
@@ -1793,6 +1790,7 @@
 <translation id="7882585827992171421">‏این ‌خط‌مشی فقط در حالت خرده فروشی فعال است.
 
       شناسه برنامه افزودنی را تعیین می‌کند تا به صورت محافظ صفحه در صفحه ورود به سیستم استفاده شود. برنامه افزودنی باید بخشی از AppPack باشد که برای این دامنه از طریق ‌خط‌مشی DeviceAppPack پیکربندی می‌شود.</translation>
+<translation id="7882890448959833986">جلوگیری از هشدارهای سیستم‌عامل پشتیبانی‌نشده</translation>
 <translation id="7912255076272890813">پیکربندی انواع برنامه/برنامه افزودنی مجاز</translation>
 <translation id="793134539373873765">‏مشخص می‌کند p2p برای بسته‌های به‌روزرسانی سیستم عامل استفاده شود یا نه. اگر روی True تنظیم شود، دستگاه‌ها بسته‌های به‌روزرسانی در LAN را تقسیم و مصرف خواهند کرد، که به صورت بالقوه مصرف و تراکم پهنای باند اینترنت را کاهش می‌دهد. اگر بسته به‌روزرسانی در LAN در دسترس نباشد، دستگاه به بارگیری از سرور به‌روزرسانی بازمی‌گردد. اگر روی False تنظیم شود یا پیکربندی نشود، p2p استفاده نخواهد شد.</translation>
 <translation id="7933141401888114454">فعال کردن ایجاد کاربران تحت نظارت</translation>
@@ -1849,6 +1847,7 @@
 
 اگر این خط‌مشی روی False تنظیم شود، فهرست تداخل گزارش نخواهد شد.</translation>
 <translation id="8146727383888924340">‏اجازه به کاربران برای استفاده از پیشنهادات از طریق ثبت‌نام سیستم عامل Chrome</translation>
+<translation id="8148785525797916822">از نشان داده شدن هشدار هنگام اجرای <ph name="PRODUCT_NAME" /> در رایانه یا سیستم‌عاملی که دیگر پشتیبانی نمی‌شود جلوگیری می‌کند.</translation>
 <translation id="8148901634826284024">قابلیت دسترس‌پذیری حالت کنتراست بالا را به کار بیندازید.
 
           چنانچه این خط‌مشی روی صحیح تنظیم شده باشد، حالت کنتراست بالا همیشه به کار انداخته می‌شود.
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb
index 397faed..f5d6910 100644
--- a/components/policy/resources/policy_templates_fi.xtb
+++ b/components/policy/resources/policy_templates_fi.xtb
@@ -788,7 +788,6 @@
 <translation id="402759845255257575">Älä salli sivustojen käyttää JavaScriptiä</translation>
 <translation id="4027608872760987929">Ota oletushakupalvelu käyttöön</translation>
 <translation id="4039085364173654945">Määrittää, saako sivulla oleva kolmannen osapuolen alasisältö näyttää HTTP Basic Auth -valintaikkunan. Asetus on yleensä poistettu käytöstä tietojenkalastelun estotoimenpiteenä. Jos käytäntöä ei ole määritetty, asetus ei ole käytössä eikä kolmannen osapuolen alasisältö saa näyttää HTTP Basic Auth -valintaikkunaa.</translation>
-<translation id="4052765007567912447">Määrittää, voiko käyttäjä näyttää salasanat tekstinä salasanojen hallinnassa. Jos poistat tämän asetuksen käytöstä, salasanojen hallinta ei näytä tallennettuja salasanoja tekstinä. Jos otat asetuksen käyttöön tai et määritä asetusta, käyttäjät voivat nähdä salasanat tekstinä salasanojen hallinnassa.</translation>
 <translation id="4056910949759281379">Poista SPDY-protokolla käytöstä</translation>
 <translation id="4088589230932595924">Incognito-tila pakotettu</translation>
 <translation id="4088983553732356374">Tällä käytännöllä määritetään, onko sivustoilla lupa luoda paikallisia tietoja. Paikallisten tietojen luominen voidaan sallia kaikille sivustoille tai kieltää kaikilta sivustoilta.
@@ -1145,7 +1144,6 @@
       Jos käytäntö määritetään, kyselyparametri "restrict" lisätään Variations-siemenarvon hakemiseen käytettävään URL-osoitteeseen. Parametrin arvo on tässä käytännössä määritetty arvo.
 
       Jos käytäntöä ei määritetä, Variations-siemenarvon URL-osoitetta ei muokata.</translation>
-<translation id="5564962323737505851">Määrittää salasanan hallinnan asetukset. Jos salasanan hallinta on käytössä, voit valita, voivatko käyttäjät katsella tallennettuja salasanoja tekstimuodossa.</translation>
 <translation id="556941986578702361">Hallinnoi <ph name="PRODUCT_OS_NAME" /> -hyllyn automaattista piilottamista.
 
 Jos tämän käytännön arvo on AlwaysAutoHideShelf, hylly piilotetaan aina automaattisesti.
@@ -1250,7 +1248,6 @@
 <translation id="5893553533827140852">Jos asetus on käytössä, gnubby-todennuspyynnöt lähetetään välityspalvelimen kautta etäisäntäyhteyden avulla.
 
           Jos asetus ei ole käytössä tai sitä ei ole määritetty, gnubby-todennuspyyntöjä ei lähetetä välityspalvelimen kautta.</translation>
-<translation id="5912364507361265851">Anna käyttäjien katsella salasanoja salasanan hallinnassa</translation>
 <translation id="5921713479449475707">Salli automaattiset päivitykset HTTP:n kautta</translation>
 <translation id="5921888683953999946">Määritä suuren osoittimen käytettävyysominaisuuden oletustila kirjautumisnäytössä.
 
@@ -1808,6 +1805,7 @@
 <translation id="7882585827992171421">Tämä käytäntö toimii vain myyntitilassa.
 
       Määrittää tunnuksen perusteella laajennuksen, jota käytetään kirjautumisruudulla näytönsäästäjänä. Laajennuksen täytyy kuulua AppPack-sovelluspakettiin, joka on määritetty käytössä olevalle toimialueelle DeviceAppPack-käytännön kautta.</translation>
+<translation id="7882890448959833986">Älä näytä varoitusta käyttöjärjestelmän tuen päättymisestä</translation>
 <translation id="7912255076272890813">Määritä sallitut sovellus- ja laajennustyypit</translation>
 <translation id="793134539373873765">Tarkentaa, käytetäänkö p2p-menetelmää käyttöjärjestelmän päivityksen tietosisältöön. Jos määritys on Tosi, laitteet jakavat ja yrittävät käyttää päivitysten tietosisältöjä LAN-verkossa, mahdollisesti vähentäen laajakaistan käyttöä ja ruuhkaa. Jos päivityksen tietosisältö ei ole LAN-verkossa, laite palaa lataamaan päivityspalvelimelta. Jos määritys on Epätosi tai sitä ei ole asetettu, p2p-menetelmää ei käytetä.</translation>
 <translation id="7933141401888114454">Ota valvottujen käyttäjien luominen käyttöön</translation>
@@ -1865,6 +1863,7 @@
 
       Jos käytännön arvoksi on määritetty epätosi, käyttöliittymäluetteloa ei ilmoiteta.</translation>
 <translation id="8146727383888924340">Salli käyttäjien lunastaa tarjouksia Chrome-käyttöjärjestelmän rekisteröitymisen kautta</translation>
+<translation id="8148785525797916822">Älä näytä varoitusta, kun <ph name="PRODUCT_NAME" /> on käytössä tietokoneella tai käyttöjärjestelmässä, jonka tuki on päättynyt.</translation>
 <translation id="8148901634826284024">Ota käyttöön suuri kontrasti -tilan käytettävyysominaisuus.
 
           Jos tämän käytännön arvoksi on määritetty tosi, suuri kontrasti -tila on aina käytössä.
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb
index 1aa784f..74c1c296 100644
--- a/components/policy/resources/policy_templates_fil.xtb
+++ b/components/policy/resources/policy_templates_fil.xtb
@@ -885,11 +885,6 @@
 <translation id="4039085364173654945">Kinokontrol kung papayagan ang sub-content ng third-party sa isang pahina na mag-pop-up ng isang dialog box ng HTTP Basic Auth.
 
           Karaniwang hindi ito pinapagana bilang isang depensa sa phishing. Kung hindi nakatakda ang patakarang ito, hindi ito pinapagana at hindi papayagan ang sub-content ng third-party na mag-pop up ng isang dialog box ng HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Kinokontrol kung maaaring magpakita ang user o hindi ng mga password sa malinaw na teksto sa tagapamahala ng password.
-
-          Kung hindi mo pinagana ang setting na ito, hindi pinapayagan ng tagapamahala ng password ang pagpapakita ng mga naka-imbak na password sa malinaw na teksto sa window ng tagapamahala ng password.
-
-          Kung pinagana o hindi mo itinakda ang patakarang ito, makikita ng mga user ang kanilang mga password sa malinaw na teksto sa tagapamahala ng password.</translation>
 <translation id="4056910949759281379">Huwag paganahin ang SPDY protocol</translation>
 <translation id="4088589230932595924">Pinuwersa ang mode na incognito</translation>
 <translation id="4088983553732356374">Nagbibigay-daan sa iyong itakda kung maaari bang magtakda ng lokal na data ang mga website. Maaaring payagan para sa lahat ng website o tanggihan para sa lahat ng website ang pagtatakda ng lokal na data.
@@ -1291,7 +1286,6 @@
       Kung tinukoy ito, magdaragdag ito ng parameter ng query na tinatawag na 'paghigpitan' sa URL na ginagamit upang kunin ang seed ng Mga Variation. Ang halaga ng parameter ay ang halagang tutukuyin sa patakarang ito.
 
       Kung hindi ito tinukoy, hindi nito babaguhin ang URL ng seed ng Mga Variation.</translation>
-<translation id="5564962323737505851">Kino-configure ang tagapamahala ng password. Kung pinagana ang tagapamahala ng password, maaari mong piliing paganahin o hindi paganahin kung maaaring ipakita ng user ang mga naka-imbak na password sa malinaw na teksto.</translation>
 <translation id="556941986578702361">Kontrolin ang awtomatikong pagtatago ng shelf ng <ph name="PRODUCT_OS_NAME" />.
 
       Kung nakatakda ang patakarang ito sa 'AlwaysAutoHideShelf', palaging awtomatikong itatago ang shelf.
@@ -1402,7 +1396,6 @@
 <translation id="5893553533827140852">Kung naka-enable ang setting na ito, ipo-proxy ang mga kahilingan sa pagpapatunay ng gnubby sa isang malayuang koneksyon sa host.
 
           Kung naka-disable o hindi naka-configure ang setting na ito, hindi ipo-proxy ang mga kahilingan sa pagpapatunay ng gnubby.</translation>
-<translation id="5912364507361265851">Payagan ang mga user na ipakita ang mga password sa Tagapamahala ng Password</translation>
 <translation id="5921713479449475707">Pinapayagan ang mga pag-download ng autoupdate sa pamamagitan ng HTTP</translation>
 <translation id="5921888683953999946">Itakda ang default na katayuan ng pagiging naa-access ng malaking cursor sa screen sa pag-login.
 
@@ -2036,6 +2029,7 @@
 <translation id="7882585827992171421">Sa retail mode lamang aktibo ang patakarang ito.
 
       Tinutukoy ang id ng extension na gagamitin bilang isang screen saver sa screen sa pag-sign-in. Ang extension ay dapat na bahagi ng AppPack na naka-configure para sa domain na ito sa pamamagitan ng patakarang AppPacks.</translation>
+<translation id="7882890448959833986">Pigilan ang babala ng hindi sinusuportahang OS</translation>
 <translation id="7912255076272890813">I-configure ang mga pinapayagang uri ng app/extension</translation>
 <translation id="793134539373873765">Tinutukoy kung gagamitin ang p2p para sa mga payload sa pag-update ng OS. Kung nakatakda sa True, ang mga device ay magbabahagi at susubukang gamitin ang mga payload sa pag-update sa LAN, na malamang na babawasan ang paggamit at pagsikip sa Internet bandwidth. Kung hindi available sa LAN ang payload sa pag-update, babalik ang device sa pag-download mula sa server sa pag-update. Kung nakatakda sa False o hindi naka-configure, hindi gagamitin ang p2p.</translation>
 <translation id="7933141401888114454">I-enable ang paggawa ng mga pinapangasiwaang user</translation>
@@ -2098,6 +2092,7 @@
 
       Kung nakatakda ang patakarang ito sa false, hindi i-uulat ang listahan ng interface.</translation>
 <translation id="8146727383888924340">Payagan ang mga user na kumuha ng mga alok sa pamamagitan ng Pagpaparehistro ng Chrome OS</translation>
+<translation id="8148785525797916822">Pinipigilan ang babalang lumalabas kapag gumagana ang <ph name="PRODUCT_NAME" /> sa isang computer o operating system na hindi na sinusuportahan.</translation>
 <translation id="8148901634826284024">I-enable ang tampok na high contrast mode.
 
           Kung nakatakda sa true ang patakarang ito, palaging naka-enable ang high contrast mode.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index e6fd2c90..64ceab4d 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -895,11 +895,6 @@
 <translation id="4039085364173654945">Contrôle si un sous-contenu tiers sur une page est autorisé à ouvrir une boîte de dialogue d'authentification de base HTTP ( Basic Auth) dans une fenêtre pop-up. 
 
 Cette option est habituellement désactivée dans le cadre de la protection contre le phishing. Si cette règle n'est pas configurée, cette option est désactivée et le sous-contenu tiers n'est pas autorisé à afficher une boîte de dialogue d'authentification de base HTTP.</translation>
-<translation id="4052765007567912447">Contrôle si l'utilisateur peut afficher les mots de passe en texte clair dans le gestionnaire de mots de passe. 
-
-Si vous désactivez ce paramètre, le gestionnaire de mots de passe ne permet pas d'afficher les mots de passe stockés en texte clair dans la fenêtre du gestionnaire de mots de passe. 
-
-Si vous activez cette règle ou si vous ne la configurez pas, les utilisateurs peuvent afficher leurs mots de passe en texte clair dans le gestionnaire de mots de passe.</translation>
 <translation id="4056910949759281379">Désactiver le protocole SPDY</translation>
 <translation id="4088589230932595924">Mode navigation privée forcé</translation>
 <translation id="4088983553732356374">Vous permet de définir si les sites Web sont autorisés à configurer les données locales. La configuration des données locales peut être soit autorisée, soit bloquée pour tous les sites Web.
@@ -1308,7 +1303,6 @@
       Si cette règle est spécifiée, un paramètre de requête "restrict" est ajouté à l'URL utilisée pour récupérer la valeur de départ des variantes. La valeur de ce paramètre correspond à la valeur définie dans cette règle.
 
       Si elle n'est pas spécifiée, l'URL utilisée pour récupérer la valeur de départ des variantes n'est pas modifiée.</translation>
-<translation id="5564962323737505851">Configure le gestionnaire de mots de passe. Si le gestionnaire de mots de passe est activé, vous pouvez activer ou désactiver la stratégie permettant à l'utilisateur d'afficher en texte clair les mots de passe enregistrés.</translation>
 <translation id="556941986578702361">Définit si l'étagère <ph name="PRODUCT_OS_NAME" /> doit être masquée automatiquement ou non.
 
       Si cette règle est définie sur "AlwaysAutoHideShelf", l'étagère est toujours masquée automatiquement.
@@ -1419,7 +1413,6 @@
 <translation id="5893553533827140852">Si ce paramètre est activé, les demandes d'authentification gnubby seront envoyées par un proxy via une connexion hôte à distance.
 
           S'il est désactivé ou n'est pas configuré, ces demandes ne seront pas envoyées par un proxy.</translation>
-<translation id="5912364507361265851">Permet aux utilisateurs d'afficher les mots de passe dans le gestionnaire de mots de passe.</translation>
 <translation id="5921713479449475707">Autoriser les téléchargements de mise à jour automatique via HTTP</translation>
 <translation id="5921888683953999946">Définit l'état par défaut de la fonctionnalité d'accessibilité de grand curseur sur l'écran de connexion.
 
@@ -2053,6 +2046,7 @@
 <translation id="7882585827992171421">Cette règle n'est active qu'en mode "point de vente".
 
        Détermine l'identifiant de l'extension à utiliser comme économiseur d'écran sur l'écran de connexion. L'extension doit faire partie de l'AppPack configuré pour ce domaine via la règle DeviceAppPack.</translation>
+<translation id="7882890448959833986">Supprimer l'avertissement relatif au système d'exploitation non compatible</translation>
 <translation id="7912255076272890813">Configurer les types d'applications ou d'extensions autorisés</translation>
 <translation id="793134539373873765">Indiquer si une connexion P2P doit être utilisée pour les charges utiles de mise à jour de l'OS. Si le paramètre est défini sur "True", les charges utiles de mise à jour sur le réseau local sont partagées et utilisées par les appareils, ce qui peut avoir pour effet de réduire la quantité de bande passante utilisée et l'encombrement sur Internet. Si la charge utile de mise à jour n'est pas disponible sur le réseau local, le téléchargement est effectué sur l'appareil à partir d'un serveur de mise à jour. Si le paramètre est défini sur "False", ou s'il n'est pas configuré, la connexion P2P n'est pas utilisée.</translation>
 <translation id="7933141401888114454">Autoriser la création de comptes utilisateurs supervisés</translation>
@@ -2115,6 +2109,7 @@
 
       Si la règle est définie sur "False", aucune liste d'interfaces n'est générée.</translation>
 <translation id="8146727383888924340">Autoriser les utilisateurs à profiter de leurs offres via le service d'enregistrement Chrome OS</translation>
+<translation id="8148785525797916822">Supprime l'avertissement qui s'affiche lorsque l'application <ph name="PRODUCT_NAME" /> s'exécute sur un ordinateur ou un système d'exploitation qui n'est plus accepté.</translation>
 <translation id="8148901634826284024">Active la fonctionnalité d'accessibilité du mode Contraste élevé.
 
           Si vous définissez cette règle sur "True", le mode Contraste élevé est activé en permanence.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb
index 91e1c41..c8cb1a1 100644
--- a/components/policy/resources/policy_templates_gu.xtb
+++ b/components/policy/resources/policy_templates_gu.xtb
@@ -882,11 +882,6 @@
 <translation id="4039085364173654945">પૃષ્ઠ પરના તૃતીય-પક્ષ પેટા-સામગ્રીને HTTP Basic Auth સંવાદ બૉક્સને પૉપ-અપ કરવાની મંજૂરી છે કે નહી તે નિયંત્રિત કરે છે.
 
           સામાન્ય રીતે આ ફિશિંગ સુરક્ષા માટે અક્ષમ કરેલું હોય છે. જો આ નીતિ સેટ કરેલી નથી, આ અક્ષમ છે અને તૃતીય-પક્ષ પેટા-સામગ્રીને HTTP Basic Auth સંવાદ બૉક્સને પૉપ-અપ કરવાની મંજૂરી આપવામાં આવશે નહીં.</translation>
-<translation id="4052765007567912447">વપરાશકર્તા પાસવર્ડ મેનેજરમાં પાસવર્ડ્સને સ્પષ્ટ ટેક્સ્ટમાં બતાવી શકે છે કે નહીં તે નિયંત્રિત કરે છે.
-
-          જો તમે આ સેટિંગને અક્ષમ કરો છો, તો પાસવર્ડ મેનેજર, પાસવર્ડ મેનેજર વિંડોમાં સ્ટોર કરેલા પાસવર્ડ્સને સ્પષ્ટ ટેક્સ્ટમાં બતાવવાની મંજૂરી આપતું નથી.
-
-          જો તમે સક્ષમ કરો છો અથવા આ નીતિને સેટ કરતા નથી, તો વપરાશકર્તાઓ પાસવર્ડ મેનેજરમાં સ્પષ્ટ ટેક્સ્ટમાં તેમના પાસવર્ડ્સ જોઈ શકે છે.</translation>
 <translation id="4056910949759281379">SPDY પ્રોટોકોલને અક્ષમ કરો</translation>
 <translation id="4088589230932595924">ફરજિયાત છૂપો મોડ</translation>
 <translation id="4088983553732356374">વેબસાઇટ્સને સ્થાનિક ડેટા સેટ કરવાની મંજૂરી છે કે નહીં તે સેટ કરવાની તમને મંજૂરી આપે છે. સ્થાનિક ડેટા સેટ કરવાની બધી જ વેબસાઇટ્સ માટે મંજૂરી આપી શકાય છે અથવા તો બધી જ વેબસાઇટ્સ માટે નામંજૂર કરી શકાય છે.
@@ -1291,7 +1286,6 @@
       જો ઉલ્લેખિત હોય, તો વેરિએશન્સ સીડનું આનયન કરવા માટે "પ્રતિબંધ" તરીકે જાણીતું ક્વેરી પેરામીટર ઉમેરવામાં આવશે. પેરામીટરનું મૂલ્ય આ નીતિમાં ઉલ્લેખિત છે તે મૂલ્ય હશે.
 
       જો ઉલ્લેખિત નથી, વેરિએશન્સ સીડ URL માં ફેરફાર કરવામાં આવશે નહીં.</translation>
-<translation id="5564962323737505851">પાસવર્ડ મેનેજરને ગોઠવે છે. જો પાસવર્ડ મેનેજર સક્ષમ કરેલું છે, તો પછી વપરાશકર્તા સાફ બૉક્સમાં સંગ્રહિત પાસવર્ડ્સ બતાવી શકે કે નહિ તે સક્ષમ અથવા અક્ષમ કરવાનું પસંદ કરી શકો છો.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> શેલ્ફના સ્વત:છુપાવોને નિયંત્રિત કરો.
 
       જો આ નીતિ 'AlwaysAutoHideShelf' પર સેટ હોય, તો શેલ્ફને હંમેશા સ્વતઃ-છુપાવો કરશે.
@@ -1404,7 +1398,6 @@
 <translation id="5893553533827140852">જો આ સેટિંગ સક્ષમ કરેલી છે, તો પછી gnubby પ્રમાણીકરણ વિનંતીઓને સમગ્ર રિમોટ હોસ્ટ કનેક્શન પર પ્રોક્સી કરવામાં આવશે.
 
           જો આ સેટિંગ અક્ષમ કરેલી છે અથવા ગોઠવેલી નથી, તો gnubby પ્રમાણીકરણ વિનંતીઓને પ્રોક્સી કરવામાં આવશે નહીં.</translation>
-<translation id="5912364507361265851">વપરાશકર્તાને પાસવર્ડ મેનેજરમાં પાસવર્ડ બતાવવાની મંજૂરી આપે છે</translation>
 <translation id="5921713479449475707">HTTP મારફતે સ્વતઃઅપડેટ ડાઉનલોડ્સને મંજૂરી આપો</translation>
 <translation id="5921888683953999946">લોગિન સ્ક્રીન પર મોટું કર્સરની સ્થિતિ ઍક્સેસિબિલિટી સુવિધાની ડિફોલ્ટ સ્થિતિ સેટ કરો.
 
@@ -2018,6 +2011,7 @@
 <translation id="7882585827992171421">આ નીતિ ફક્ત રીટેલ મોડમાં સક્રિય છે.
 
       સાઇન-ઇન સ્ક્રીન પર સ્ક્રીન સેવર તરીકે ઉપયોગ કરવા માટેનાં એક્સટેંશનનો id નિર્ધારિત કરે છે. એક્સટેંશન AppPack નો ભાગ હોવો જોઈએ કે જે DeviceAppPack નીતિ દ્વારા આ ડોમેન માટે ગોઠવેલું હોય છે.</translation>
+<translation id="7882890448959833986">અસમર્થિત OS ચેતવણીને બંધ કરો</translation>
 <translation id="7912255076272890813">મંજૂર એપ્લિકેશન/એક્સ્ટેંશન પ્રકારોને ગોઠવો</translation>
 <translation id="793134539373873765">p2p નો ઉપયોગ OS અપડેટ પેલોડ્સ માટે કરવો કે નહીં તેનો ઉલ્લેખ કરે છે. જો ટ્રુ પર સેટ છે, તો ઉપકરણો સંભવિત રૂપે ઇન્ટરનેટ બેન્ડવિડ્થ અને ધસારાને ઘટાડીને, LAN પર અપડેટ પેલોડ્સનો ઉપયોગ કરવા માટે શેર કરશે અને પ્રયત્ન કરશે. જો LAN પર અપડેટ પેલોડ ઉપલબ્ધ નથી, તો ઉપકરણ અપડેટ સર્વરથી ડાઉનલોડ કરવા પર પાછું જશે. જો ફોલ્સ પર સેટ છે અથવા ગોઠવ્યું નથી, તો p2p નો ઉપયોગ કરવામાં આવશે નહીં.</translation>
 <translation id="7933141401888114454">નિરીક્ષિત વપરાશકર્તાઓના નિર્માણને સક્ષમ કરો</translation>
@@ -2080,6 +2074,7 @@
 
       જો નીતિ false પર સેટ છે, તો ઇન્ટરફેસ સૂચિની જાણ કરવામાં આવશે નહીં.</translation>
 <translation id="8146727383888924340">Chrome OS નોંધણી દ્વારા વપરાશકર્તાઓને ઓફર્સને રીડિમ કરવાની મંજૂરી આપો</translation>
+<translation id="8148785525797916822">જ્યારે <ph name="PRODUCT_NAME" /> એવા કમ્પ્યુટર અથવા ઓપરેટિંગ સિસ્ટમ પર ચાલી રહ્યું હોય કે જે હવે સમર્થિત નથી, તો ત્યારે દેખાતી ચેતવણીને બંધ કરે છે.</translation>
 <translation id="8148901634826284024">ઉચ્ચ કોન્ટ્રાસ્ટ મોડ ઍક્સેસિબિલિટી સુવિધાને સક્ષમ કરો.
 
           જો આ નીતિ ટ્રૂ પર સેટ કરેલી હોય, તો ઉચ્ચ કોન્ટ્રાસ્ટ મોડ હંમેશા સક્ષમ રહેશે.
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb
index 7a7dda4..26fae01 100644
--- a/components/policy/resources/policy_templates_hi.xtb
+++ b/components/policy/resources/policy_templates_hi.xtb
@@ -848,11 +848,6 @@
 <translation id="402759845255257575">किसी भी साइट को JavaScript चलाने की अनुमति न दें</translation>
 <translation id="4027608872760987929">डिफ़ॉल्‍ट खोज प्रदाता सक्षम करें</translation>
 <translation id="4039085364173654945">यह नियंत्रित करता है कि किसी पृष्ठ पर तृतीय-पक्ष उप-सामग्री को कोई HTTP मूल प्रमाणीकरण डॉयलॉग बॉक्‍स पॉप-अप करने की अनुमति है या नहीं. सामान्‍यत: यह फ़िशिंग से सुरक्षा के रूप में अक्षम होता है. यदि इस नीति को सेट नहीं किया जाता है, तो, यह अक्षम होती है और तृतीय-पक्ष उप-सामग्री को, HTTP मूल प्रमाणीकरण डॉयलॉग बॉक्‍स पॉप अप करने की अनुमति नहीं होगी.</translation>
-<translation id="4052765007567912447">यह नियंत्रित करती है कि क्‍या उपयोगकर्ता पासवर्ड प्रबंधक में पासवर्ड को साफ टेक्‍स्‍ट में दिखा सकता है.
-
-          यदि आप इस सेटिंग को अक्षम करते हैं, तो पासवर्ड प्रबंधक, संग्रहीत पासवर्ड को पासवर्ड प्रबंधक विंडो में नहीं दिखाने देता.
-
-          यदि आप इस नीति को सक्षम करते हैं या सेट नहीं करते, तो उपयोगकर्ता पासवर्ड प्रबंधक में अपने पासवर्ड को साफ टेक्‍स्‍ट में देख सकेंगे.</translation>
 <translation id="4056910949759281379">SPDY प्रोटोकॉल अक्षम करें</translation>
 <translation id="4088589230932595924">गुप्त मोड बाध्‍य किया गया</translation>
 <translation id="4088983553732356374">आपको यह सेट करने की अनुमति देती है कि वेबसाइट को स्थानीय डेटा सेट करने की अनुमति है या नहीं. स्थानीय डेटा सेट करने की अनुमति या तो सभी वेबसाइटों को दी जा सकती है या किसी भी वेबसाइट को नहीं दी जा सकती है.
@@ -1235,7 +1230,6 @@
       यदि निर्दिष्ट हो, तो विविधता सीड को फ़ेच करने के लिए उपयोग किए जाने वाले URL में एक क्वेरी पैरामीटर जोड़ देगी. पैरामीटर का मान इस नीति में निर्दिष्ट किया गया मान होगा.
 
       यदि सेट नहीं हो, तो विविधता सीड URL में बदलाव नहीं करेगी.</translation>
-<translation id="5564962323737505851">पासवर्ड प्रबंधक को कॉन्फ़िगर करता है. यदि पासवर्ड प्रबंधक सक्षम है, तो आप यह सक्षम या अक्षम कर सकते हैं कि उपयोगकर्ता संग्रहीत पासवर्ड को स्पष्ट टेक्स्ट में प्रदर्शित कर सकता है या नहीं.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> शेल्फ़ का स्वत:-छिपाना नियंत्रित करना.
 
       यदि यह नीति 'AlwaysAutoHideShelf' पर सेट हो, तो शेल्फ़ हमेशा ही स्वत:-छिपाया जाएगा.
@@ -1348,7 +1342,6 @@
 <translation id="5893553533827140852">यदि यह सेटिंग सक्षम है, तब gnubby प्रमाणन अनुरोध पूरे दूरस्थ होस्ट कनेक्शन पर प्रॉक्सी किया जाएगा.
 
           यदि यह सेटिंग अक्षम है या कॉन्फ़िगर नहीं है, तो gnubby प्रमाणन अनुरोध प्रॉक्सी नहीं किए जाएंगे.</translation>
-<translation id="5912364507361265851">उपयोगकर्ताओं को पासवर्ड प्रबंधक में पासवर्ड दिखाने की अनुमति दें</translation>
 <translation id="5921713479449475707">HTTP के द्वारा स्वतः अपडेट डाउनलोड की अनुमति दें</translation>
 <translation id="5921888683953999946">प्रवेश स्क्रीन पर बड़े कर्सर की पहुंच-योग्यता सुविधा की डिफ़ॉल्ट स्थिति सेट करें.
 
@@ -1951,6 +1944,7 @@
 <translation id="7882585827992171421">यह नीति केवल रीटेल मोड में सक्रिय होती है.
 
       साइन-इन स्क्रीन पर स्क्रीन सेवर के रूप में उपयोग किए जाने वाले एक्सटेंशन का आईडी निर्धारित करती है. एक्सटेंशन, DeviceAppPack नीति के माध्यम से इस डोमेन के लिए कॉन्फ़िगर किए गए AppPack का भाग होना चाहिए.</translation>
+<translation id="7882890448959833986">असमर्थित OS चेतावनी को छिपाएं</translation>
 <translation id="7912255076272890813">अनुमत ऐप्स /एक्सटेंशन प्रकारों को कॉन्फ़िगर करें</translation>
 <translation id="793134539373873765">निर्दिष्ट करता है कि p2p का OS अपडेट पेलोड के लिए उपयोग करना है या नहीं. यदि सही पर सेट है, तो डिवाइस संभावित रूप से इंटरनेट बैंड्विड्थ उपयोग और कंजेशन को कम करते हुए साझा करेंगे और LAN पर मौजूद अपडेट पेलोड का उपयोग करने का प्रयास करेंगे. यदि अपडेट पेलोड LAN पर उपलब्ध नहीं है, तो डिवाइस  अपडेट सर्वर से डाउनलोड करना प्रारंभ कर देगा. यदि गलत पर सेट है या कॉन्फ़िगर नहीं है, तो p2p का उपयोग नहीं किया जाएगा.</translation>
 <translation id="7933141401888114454">पर्यवेक्षित उपयोगकर्ताओं का बनाया जाना सक्षम करती है</translation>
@@ -2013,6 +2007,7 @@
 
       यदि नीति गलत पर सेट की गई हो, तो इंटरफ़ेस की रिपोर्ट नहीं की जाएगी.</translation>
 <translation id="8146727383888924340">उपयोगकर्ताओं को Chrome OS पंजीकरण के द्वारा ऑफ़र रिडीम करने की अनुमति दें</translation>
+<translation id="8148785525797916822">जब <ph name="PRODUCT_NAME" /> ऐसे कंप्यूटर या ऑपरेटिंग सिस्टम पर चलाया जा रहा है जो अब समर्थित नहीं है, तो उस समय दिखाई देने वाली चेतावनी को छिपाती है.</translation>
 <translation id="8148901634826284024">उच्च कंट्रास्ट मोड वाली पहुंच-योग्यता सुविधा सक्षम करें.
 
           यदि यह नीति सही पर सेट है, तो उच्च कंट्रास्ट मोड हमेशा सक्षम रहेगा.
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb
index 45f7584..f275d61 100644
--- a/components/policy/resources/policy_templates_hr.xtb
+++ b/components/policy/resources/policy_templates_hr.xtb
@@ -788,7 +788,6 @@
 <translation id="402759845255257575">Nemoj dopustiti nijednoj web-lokaciji da pokreće JavaScript</translation>
 <translation id="4027608872760987929">Omogući zadanog davatelja usluge pretraživanja</translation>
 <translation id="4039085364173654945">Nadzire smije li podsadržaj treće strane na stranici prikazivati skočni dijaloški okvir HTTP Basic Auth. Obično je to onemogućeno radi obrane od krađe identiteta. Ako ovo pravilo nije postavljeno, to je onemogućeno i podsadržajima treće strane neće biti dopušteno prikazivanje skočnog dijaloškog okvira HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Nadzire može li korisnik vidjeti zaporke u nešifriranom tekstu u upravitelju zaporki. Ako onemogućite ovu postavku, upravitelj zaporki ne dopušta prikaz pohranjenih zaporki u nešifriranom tekstu u prozoru upravitelja zaporki. Ako omogućite ili ne postavite ovo pravilo, korisnici mogu vidjeti svoje zaporke u nešifriranom tekstu u upravitelju zaporki.</translation>
 <translation id="4056910949759281379">Onemogući SPDY protokol</translation>
 <translation id="4088589230932595924">Anoniman način rada prisilno je uključen</translation>
 <translation id="4088983553732356374">Omogućuje vam da odredite je li web-lokacijama dopušteno postavljanje lokalnih podataka. Postavljanje lokalnih podataka može biti dopušteno za sve web-lokacije ili odbijeno za sve web-lokacije.
@@ -1146,7 +1145,6 @@
       Ako je naveden, parametar upita pod nazivom "restrict" dodat će se URL-u za dohvaćanje vrijednosti varijacija. Vrijednost parametra bit će vrijednost navedena u ovom pravilu.
 
       Ako nije naveden, URL vrijednosti varijacija neće se izmijeniti.</translation>
-<translation id="5564962323737505851">Konfigurira upravitelja zaporki. Ako je upravitelj zaporki omogućen, možete omogućiti ili onemogućiti korisničku opciju prikazivanja pohranjenih lozinki čitljivim tekstom.</translation>
 <translation id="556941986578702361">Kontroliraj automatsko skrivanje police proizvoda <ph name="PRODUCT_OS_NAME" />.
 
       Ako je ta polica postavljena na "AlwaysAutoHideShelf", polica će uvijek biti automatski skrivena.
@@ -1251,7 +1249,6 @@
 <translation id="5893553533827140852">Ako je ta postavka omogućena, zahtjevi autentifikacije "gnubby" proslijedit će se putem proxyja vezom udaljenog hosta.
 
           Ako je ta postavka onemogućena ili nije konfigurirana, zahtjevi autentifikacije "gnubby" neće se prosljeđivati putem proxyja.</translation>
-<translation id="5912364507361265851">Omogući korisnicima prikazivanje zaporki u Upravitelju zaporki</translation>
 <translation id="5921713479449475707">Dopusti preuzimanja automatskog ažuriranja putem HTTP-a</translation>
 <translation id="5921888683953999946">Postavi zadano stanje značajke pristupačnosti velikog pokazivača na zaslonu za prijavu.
 
@@ -1807,6 +1804,7 @@
 <translation id="7882585827992171421">To je pravilo aktivno samo u prodajnom načinu.
 
       Određuje ID proširenja koje će se upotrebljavati kao čuvar zaslona na zaslonu prijave. To proširenje mora biti dijelom paketa AppPack koji se konfigurira za ovu domenu pravilom DeviceAppPack.</translation>
+<translation id="7882890448959833986">Spriječi upozorenje o nepodržanom OS-u</translation>
 <translation id="7912255076272890813">Konfiguriraj dopuštene vrste aplikacija/proširenja</translation>
 <translation id="793134539373873765">Određuje hoće li se p2p upotrebljavati za podatke ažuriranja OS-a. Ako je postavljeno na Točno, uređaji će dijeliti i pokušati konzumirati podatke ažuriranja na LAN-u potencijalno smanjujući potrošnju internetske propusnosti i zagušenje. Ako podaci ažuriranja nisu dostupni na LAN-u, uređaj će prijeći na preuzimanje s poslužitelja ažuriranja. Ako je postavljeno na Netočno ili nije konfigurirano, p2p se neće upotrebljavati.</translation>
 <translation id="7933141401888114454">Omogući izradu nadziranih korisnika</translation>
@@ -1864,6 +1862,7 @@
 
       Ako se pravilo postavi na neistinito, popis sučelja neće se generirati.</translation>
 <translation id="8146727383888924340">Dopusti korisnicima da iskoriste ponude tijekom registracije OS-a Chrome</translation>
+<translation id="8148785525797916822">Sprječava upozorenje koje se prikazuje kada se <ph name="PRODUCT_NAME" /> izvodi na računalima ili operativnim sustavima koji više nisu podržani.</translation>
 <translation id="8148901634826284024">Omogući značajku pristupačnosti načina visokog kontrasta.
 
           Ako se to pravilo postavi na točno, način visokog kontrasta uvijek će biti omogućen.
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb
index af191b3..2ff497ed 100644
--- a/components/policy/resources/policy_templates_hu.xtb
+++ b/components/policy/resources/policy_templates_hu.xtb
@@ -790,7 +790,6 @@
 <translation id="402759845255257575">JavaScript futtatásának tiltása minden webhely számára</translation>
 <translation id="4027608872760987929">Alapértelmezett keresési szolgáltató engedélyezése</translation>
 <translation id="4039085364173654945">Azt szabályozza, hogy harmadik felek altartalma az oldalon megnyithat-e HTTP Basic Auth párbeszédpanelt. Ez általában le van tiltva az adathalászat elleni védelem miatt. Ha a házirend nincs beállítva, akkor ez a letiltás nincs konfigurálva, és a harmadik féltől származó altartalom számára nem lesz engedélyezve a HTTP Basic Auth párbeszédpanel megnyitása.</translation>
-<translation id="4052765007567912447">Azt szabályozza, hogy a felhasználók megjeleníthetik-e jelszavaikat egyszerű szövegként a jelszókezelőben. Ha kikapcsolja ezt a beállítást, a jelszókezelő nem engedi a tárolt jelszavak egyszerű szövegként való megjelenítését a jelszókezelő ablakában. Ha bekapcsolja vagy konfigurálatlanul hagyja ezt a beállítást, a felhasználók egyszerű szövegként tekinthetik meg a tárolt jelszavakat a jelszókezelőben.</translation>
 <translation id="4056910949759281379">SPDY protokoll letiltása</translation>
 <translation id="4088589230932595924">Inkognitómód kényszerítve</translation>
 <translation id="4088983553732356374">Azt határozza meg, hogy a webhelyek tárolhatnak-e helyi adatokat. A helyi adatok beállítását egyszerre lehet engedélyezni vagy letiltani az összes webhelynél.
@@ -1144,7 +1143,6 @@
       Ha meg van határozva, egy „restrict” nevű lekérdezési paramétert ad a Variations seed lekérdezésére használatos URL-hez. A paraméter értéke a házirendben meghatározott érték lesz.
 
       Ha nincs meghatározva, nem változtat a Variations seed URL-jén.</translation>
-<translation id="5564962323737505851">Beállítja a jelszókezelőt. Ha a jelszókezelő engedélyezve van, akkor választhat, hogy engedélyezi vagy letiltja a tárolt jelszavak egyszerű szövegként való megjelenítését a felhasználók számára.</translation>
 <translation id="556941986578702361">A(z) <ph name="PRODUCT_OS_NAME" /> polc automatikus elrejtését szabályozza.
 
       Ha az irányelv 'AlwaysAutoHideShelf' értékre van beállítva, akkor a rendszer mindig automatikusan elrejti a polcot.
@@ -1249,7 +1247,6 @@
 <translation id="5893553533827140852">Ha ez a beállítás engedélyezett, akkor a gnubby hitelesítési kéréseket a rendszer távoli szerverkapcsolaton keresztül proxyzza.
 
           Ha a beállítás tiltva van, vagy nincs konfigurálva, akkor a rendszer nem proxyzza a gnubby hitelesítési kéréseket.</translation>
-<translation id="5912364507361265851">Lehetővé teszi, hogy a felhasználók megjelenítsék a jelszavakat a Jelszókezelőben</translation>
 <translation id="5921713479449475707">Automatikus frissítési letöltések engedélyezése HTTP-n keresztül</translation>
 <translation id="5921888683953999946">A nagy egérmutató kisegítő lehetőség alapértelmezett állapotának megadása a bejelentkezési képernyőn.
 
@@ -1809,6 +1806,7 @@
 <translation id="7882585827992171421">Ez a házirend csak kiállító módban aktív.
 
       Meghatározza a bejelentkezési képernyőn képernyőkímélőként használni kívánt bővítmény azonosítóját. A bővítménynek abban az alkalmazáscsomagban kell lennie, amely meg van határozva ennél a domainnél az DeviceAppPack házirend használatával.</translation>
+<translation id="7882890448959833986">A nem támogatott operációs rendszerre vonatkozó figyelmeztetés elrejtése</translation>
 <translation id="7912255076272890813">Engedélyezett alkalmazás-/bővítménytípusok konfigurálása</translation>
 <translation id="793134539373873765">Megadja, hogy a rendszer egyenrangú kapcsolatot használjon-e az operációs rendszer frissítési tartalmai esetében. Ha „igaz” értékre van állítva, az eszközök megosztják és megpróbálják felhasználni a frissítési tartalmat a helyi hálózaton, és lehetőség szerint csökkentik a felhasznált internetes sávszélességet, valamint a túlterhelést. Ha a frissítési tartalom nem érhető el a helyi hálózaton, az eszköz inkább egy frissítési szerverről végzi el a letöltést. Ha „hamis” értékre van állítva, vagy nincs beállítva, a rendszer nem használ egyenrangú kapcsolatot.</translation>
 <translation id="7933141401888114454">Felügyelt felhasználók létrehozásának engedélyezése</translation>
@@ -1866,6 +1864,7 @@
 
       Ha az irányelv értéke hamis, az interfészek listáját a rendszer nem jelenti.</translation>
 <translation id="8146727383888924340">Ajánlatok beváltásának engedélyezése a felhasználók számára Chrome OS-regisztráció útján</translation>
+<translation id="8148785525797916822">Elveti a figyelmeztetést, amely akkor jelenik meg, ha a <ph name="PRODUCT_NAME" /> a továbbiakban már nem támogatott számítógépen vagy operációs rendszeren fut.</translation>
 <translation id="8148901634826284024">A nagy kontrasztú mód kisegítő lehetőség engedélyezése.
 
           Ha a házirend értéke igaz, a nagy kontrasztú mód mindig engedélyezve lesz.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 21a051b..6a597ba2 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -793,7 +793,6 @@
 <translation id="402759845255257575">Jangan izinkan situs apa pun menjalankan JavaScript</translation>
 <translation id="4027608872760987929">Aktifkan penyedia penelusuran default</translation>
 <translation id="4039085364173654945">Mengontrol apakah sub-konten pihak ketiga pada laman diizinkan untuk memunculkan kotak dialog HTTP Otorisasi Dasar. Biasanya, kebijakan ini dinonaktifkan sebagai pertahanan atas phishing. Jika tidak disetel, kebijakan ini akan dinonaktifkan dan sub-konten pihak ketiga tidak akan diizinkan untuk memunculkan kotak dialog HTTP Otorisasi Dasar.</translation>
-<translation id="4052765007567912447">Mengontrol apakah pengguna dapat menampilkan sandi dalam teks yang jelas di dalam pengelola sandi. Jika Anda menonaktifkan penyetelan ini, pengelola sandi tidak mengizinkan untuk menampilkan sandi yang disimpan dalam bentuk teks yang jelas pada jendela pengelola sandi. Jika Anda mengaktifkan atau tidak menyetel kebijakan ini, pengguna dapat melihat sandi mereka dalam teks yang jelas di dalam pengelola sandi.</translation>
 <translation id="4056910949759281379">Nonaktifkan protokol SPDY</translation>
 <translation id="4088589230932595924">Mode penyamaran dipaksakan</translation>
 <translation id="4088983553732356374">Memungkinkan Anda menentukan apakah situs web diizinkan untuk menyetel data lokal atau tidak. Penyetelan data lokal bisa diizinkan untuk semua situs web atau ditolak untuk semua situs web.
@@ -1147,7 +1146,6 @@
       Jika ditentukan, akan menambahkan parameter kueri yang disebut 'bataso' ke URL yang digunakan untuk mengambil bibit Variasi. Nilai parameter akan menjadi nilai yang ditentukan dalam kebijakan ini.
 
       Jika tidak ditentukan, tidak akan mengubah URL bibit Variasi.</translation>
-<translation id="5564962323737505851">Mengonfigurasi pengelola sandi. Jika pengelola sandi diaktifkan, Anda dapat memilih mengaktifkan atau menonaktifkan apakah pengguna dapat menampilkan sandi tersimpan dalam teks yang jelas.</translation>
 <translation id="556941986578702361">Mengontrol rak <ph name="PRODUCT_OS_NAME" /> sembunyi otomatis.
 
       Jika kebijakan ini disetel ke 'AlwaysAutoHideShelf', rak akan selalu bersembunyi secara otomatis.
@@ -1252,7 +1250,6 @@
 <translation id="5893553533827140852">Jika setelan ini diaktifkan, permintaan autentikasi gnubby akan dilakukan melalui proxy lewat sambungan hosting jarak jauh.
 
           Jika setelan ini dinonaktifkan atau tidak dikonfigurasi, permintaan autentikasi gnubby tidak akan dilakukan melalui proxy.</translation>
-<translation id="5912364507361265851">Izinkan pengguna menampilkan sandi pada Pengelola Sandi</translation>
 <translation id="5921713479449475707">Izinkan pengunduhan pembaruan otomatis melalui HTTP</translation>
 <translation id="5921888683953999946">Menyetel status default fitur aksesibilitas kursor besar di layar masuk.
 
@@ -1812,6 +1809,7 @@
 <translation id="7882585827992171421">Kebijakan ini hanya aktif dalam mode ritel.
 
       Menentukan id ekstensi untuk digunakan sebagai tirai layar pada layar masuk. Ekstensi haruslah bagian dari AppPack yang dikonfigurasi untuk domain ini melalui kebijakan DeviceAppPack.</translation>
+<translation id="7882890448959833986">Sembunyikan peringatan OS tidak didukung</translation>
 <translation id="7912255076272890813">Konfigurasikan jenis aplikasi/ekstensi yang diizinkan</translation>
 <translation id="793134539373873765">Tentukan apakah p2p akan digunakan untuk payload pembaruan OS. Jika disetel ke True, perangkat akan membagi dan berusaha menggunakan payload pembaruan pada LAN, serta berpotensi mengurangi penggunaan dan kepadatan bandwidth internet. Jika payload pembaruan tidak tersedia di LAN, perangkat tersebut akan kembali mengunduh dari server yang diperbarui. Jika disetel ke False atau tidak dikonfigurasi, p2p tidak akan digunakan.</translation>
 <translation id="7933141401888114454">Mengaktifkan pembuatan pengguna yang dilindungi</translation>
@@ -1869,6 +1867,7 @@
 
       Jika kebijakan disetel ke false, daftar antarmuka tidak akan dilaporkan.</translation>
 <translation id="8146727383888924340">Memungkinkan pengguna menukarkan penawaran melalui Pendaftaran Chrome OS</translation>
+<translation id="8148785525797916822">Menyembunyikan peringatan yang muncul ketika <ph name="PRODUCT_NAME" /> berjalan di komputer atau sistem operasi yang sudah tidak didukung.</translation>
 <translation id="8148901634826284024">Mengaktifkan fitur aksesibilitas mode kontras tinggi.
 
           Jika kebijakan ini disetel ke true, mode kontras tinggi akan selalu diaktifkan.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 5e045f1..e5bff6c 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -773,7 +773,6 @@
 <translation id="402759845255257575">Non consentire ad alcun sito di eseguire JavaScript</translation>
 <translation id="4027608872760987929">Attiva il provider di ricerca predefinito</translation>
 <translation id="4039085364173654945">Consente di stabilire se per i contenuti secondari di terze parti presenti in una pagina è consentita la visualizzazione di una finestra di dialogo Autorizzazione di base HTTP. Generalmente questa norma non è attiva per tutela dal phishing. Se questa norma non viene impostata, l'impostazione verrà disattivata e per i contenuti secondari di terze parti non potrà essere visualizzata una finestra di dialogo Autorizzazione di base HTTP.</translation>
-<translation id="4052765007567912447">Consente di stabilire se l'utente può visualizzare le password in testo non crittografato in Gestione password. Se disattivi questa impostazione, Gestione password impedisce la visualizzazione delle password memorizzate in testo non crittografato nella finestra Gestione password. Se attivi questa norma o non la imposti, gli utenti potranno visualizzare le loro password in testo non crittografato in Gestione password.</translation>
 <translation id="4056910949759281379">Disabilita protocollo SPDY</translation>
 <translation id="4088589230932595924">Modalità di navigazione in incognito forzata</translation>
 <translation id="4088983553732356374">Consente di stabilire se consentire o meno ai siti web di impostare dati locali. L'impostazione dei dati locali può essere consentita o vietata per tutti i siti web.
@@ -1116,7 +1115,6 @@
       Se specificata, questa norma aggiunge un parametro di query chiamato "restrict" all'URL utilizzato per recuperare il numero di inizializzazione delle varianti. Il valore del parametro sarà il valore specificato in questa norma.
 
       Se non è specificata, questa norma non modifica l'URL del numero di inizializzazione delle varianti.</translation>
-<translation id="5564962323737505851">Configura Gestione password. Se Gestione password è abilitata, puoi scegliere di consentire o meno all'utente di visualizzare le password memorizzate in testo non crittografato.</translation>
 <translation id="556941986578702361">Controlla la visualizzazione automatica dello shelf in <ph name="PRODUCT_OS_NAME" />.
 
       Se il criterio è impostato su "AlwaysAutoHideShelf", lo scaffale non sarà mai visualizzato.
@@ -1220,7 +1218,6 @@
 <translation id="5893553533827140852">Se questa impostazione è attivata, le richieste di autenticazione Gnubby verranno trasferite al proxy attraverso una connessione host remota.
 
           Se questa impostazione è disattivata o non configurata, le richieste di autenticazione Gnubby non verranno trasferite al proxy.</translation>
-<translation id="5912364507361265851">Consenti agli utenti di mostrare le password in Gestione password</translation>
 <translation id="5921713479449475707">Permetti download di aggiornamento automatico tramite HTTP</translation>
 <translation id="5921888683953999946">Consente di impostare lo stato predefinito della funzione di accessibilità del puntatore grande nella schermata di accesso.
 
@@ -1763,6 +1760,7 @@
 <translation id="7882585827992171421">Questa norma è attiva soltanto in modalità retail.
 
       Consente di stabilire l'ID dell'estensione da utilizzare come screensaver nella schermata di accesso. L'estensione deve far parte dell'AppPack configurato per il dominio tramite la norma DeviceAppPack.</translation>
+<translation id="7882890448959833986">Elimina l'avviso di sistema operativo non supportato</translation>
 <translation id="7912255076272890813">Configura tipi di app/estensioni consentiti</translation>
 <translation id="793134539373873765">Consente di specificare se p2p deve essere utilizzato per i payload di aggiornamento del sistema operativo. Se questa norma viene impostata su True, i dispositivi condivideranno e proveranno a consumare i payload di aggiornamento sulla LAN, riducendo potenzialmente l'utilizzo e la congestione della larghezza di banda Internet. Se il payload di aggiornamento non è disponibile sulla LAN, il dispositivo ripiegherà sul download da un server di aggiornamento. Se la norma viene impostata su False o non viene configurata, non verrà utilizzato p2p.</translation>
 <translation id="7933141401888114454">Attivazione della creazione di utenti controllati</translation>
@@ -1817,6 +1815,7 @@
 Il valore della norma deve essere specificato in millisecondi. I valori devono essere inferiori o uguali al ritardo di inattività.</translation>
 <translation id="8140204717286305802">Consente di comunicare al server l'elenco di interfacce di rete con i relativi tipi e indirizzi hardware. Se la norma viene impostata su False, l'elenco di interfacce non viene comunicato.</translation>
 <translation id="8146727383888924340">Consenti agli utenti di utilizzare le offerte tramite la registrazione a Chrome OS</translation>
+<translation id="8148785525797916822">Elimina l'avviso che viene mostrato quando <ph name="PRODUCT_NAME" /> è in esecuzione su un computer o l'avviso di sistema operativo non più supportato.</translation>
 <translation id="8148901634826284024">Consente di attivare la funzione di accessibilità della modalità ad alto contrasto.
 
 Se la norma viene impostata su true, la modalità ad alto contrasto sarà sempre attiva.
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index 5440260..d1c9723 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -65,7 +65,7 @@
 <translation id="1297182715641689552">‏השתמש בסקריפט Proxy מסוג ‎.pac</translation>
 <translation id="1300635491585192248">חיזוי פעולות ברשת בכל רשת שאינה סלולרית</translation>
 <translation id="1304973015437969093">מזהי תוספים/אפליקציות וכתובות אתרים של עדכונים המיועדים להתקנה שקטה</translation>
-<translation id="1310699457130669094">‏תוכל לציין כאן כתובת אתר לקובץ ‎.pac של שרת Proxy. מדיניות זו תקפה רק אם בחרת באופן ידני באפשרות 'בחר כיצד לציין הגדרות שרת Proxy' בהגדרות שרת Proxy. אין צורך להגדיר מדיניות זו אם בחרת בכל מצב אחר להגדרת קווי מדיניות של שרת Proxy. לדוגמאות מפורטות, בקר ב-<ph name="PROXY_HELP_URL" /></translation>
+<translation id="1310699457130669094">‏תוכל לציין כאן כתובת אתר לקובץ ‎.pac של שרת Proxy. מדיניות זו תקפה רק אם בחרת באופן ידני באפשרות 'בחר כיצד לציין הגדרות שרת Proxy' בהגדרות שרת Proxy. אין צורך להגדיר מדיניות זו אם בחרת בכל מצב אחר להגדרת קווי מדיניות של שרת Proxy. לדוגמאות מפורטות, היכנס ל-<ph name="PROXY_HELP_URL" /></translation>
 <translation id="1313457536529613143">הגדרת האחוז שלפיו ייקבע שינוי קנה המידה של השהיית עמעום המסך כאשר מובחנת פעילות משתמש בזמן שהמסך מעומעם או מיד לאחר כיבוי המסך.
 
           אם מדיניות זו מוגדרת, היא מציינת את האחוז שלפיו ייקבע שינוי קנה המידה של השהיית עמעום המסך כאשר מובחנת פעילות משתמש בזמן שהמסך מעומעם או מיד לאחר כיבוי המסך. בעת שינוי קנה המידה של עמעום המסך, ההשהיות של כיבוי מסך, נעילת מסך ומצב סרק יותאמו לשמירה על אותם הפרשים מהשהיית עמעום המסך שהוגדרו במקור.
@@ -532,7 +532,7 @@
          אם המדיניות הזו מוגדרת כ'true' או אינה מוגדרת, המשתמש לא נחשב כלא פעיל כשתוכן אודיו פועל. כך נמנע הסיום של פרק הזמן הקצוב לפני כניסה למצב לא פעיל וביצוע הפעולה המוגדרת למצב לא פעיל. עם זאת, עמעומם המסך, כיבוי המסך ונעילת המסך יבוצעו לאחר פרקי הזמן הקצובים שהוגדרו, ללא קשר לפעילות האודיו.
 
       אם המדיניות הזו מוגדרת כ'false', פעילות האודיו אינה מונעת מהמשתמש להיחשב כלא פעיל.</translation>
-<translation id="2948381198510798695">‏<ph name="PRODUCT_NAME" /> יעקוף כל שרת Proxy עבור רשימת המארחים המסופקת כאן. מדיניות זו תקפה רק אם בחרת הגדרות Proxy ידניות ב'בחר כיצד לציין את הגדרות שרת ה-Proxy'. אין צורך להגדיר מדיניות זו אם בחרת בכל מצב אחר להגדרת קווי מדיניות של שרת Proxy. לדוגמאות מפורטות יותר, בקר ב-<ph name="PROXY_HELP_URL" />.</translation>
+<translation id="2948381198510798695">‏<ph name="PRODUCT_NAME" /> יעקוף כל שרת Proxy עבור רשימת המארחים המסופקת כאן. מדיניות זו תקפה רק אם בחרת הגדרות Proxy ידניות ב'בחר כיצד לציין את הגדרות שרת ה-Proxy'. אין צורך להגדיר מדיניות זו אם בחרת בכל מצב אחר להגדרת קווי מדיניות של שרת Proxy. לדוגמאות מפורטות יותר, היכנס ל-<ph name="PROXY_HELP_URL" />.</translation>
 <translation id="2956777931324644324">‏המדיניות הזו הוצאה משימוש החל מגרסה 36 של <ph name="PRODUCT_NAME" />.
 
       מציינת האם יש להפעיל את תוסף האישורים המאוגד לדומיין TLS.
@@ -786,7 +786,6 @@
 <translation id="4039085364173654945">‏קובע אם תוכן משני של צד שלישי בדף מורשה להציג חלון קופץ של תיבת דו-שיח לאימות בסיסי ב-HTTP.
 
           בדרך כלל האפשרות הזו מושבתת כדי להגן מפני דיוג. אם המדיניות הזו אינה מוגדרת, האפשרות הזו מושבתת ותוכן משני של צד שלישי לא יורשה להציג חלון קופץ של תיבת דו-שיח לאימות בסיסי ב-HTTP.</translation>
-<translation id="4052765007567912447">בקרה על יכולות המשתמש להציג סיסמאות בטקסט ברור במנהל הסיסמאות. אם תשבית הגדרה זו, מנהל הסיסמאות אינו מאפשר הצגת סיסמאות שמורות בטקסט ברור בחלון מנהל הסיסמאות. אם תהפוך הגדרה זו לפעילה מדיניות זו או לא תגדיר אותה, המשתמשים יכולים להציג את סיסמאותיהם בטקסט ברור במנהל הסיסמאות.</translation>
 <translation id="4056910949759281379">‏השבת פרוטוקול SPDY</translation>
 <translation id="4088589230932595924">אילוץ של מצב גלישה בסתר</translation>
 <translation id="4088983553732356374">‏מדיניות זו מאפשרת לקבוע אם אתרים יורשו להגדיר נתונים מקומיים. הגדרת נתונים מקומיים יכולה להיות מותרת לכל האתרים או אסורה לכל האתרים.
@@ -1134,7 +1133,6 @@
       אם תצוין, תוסיף פרמטר שאילתה הנקרא 'restrict' לכתובת האתר שבה נעשה שימוש לאחזור Seed הווריאציות. ערך הפרמטר יהיה הערך שצוין במדיניות הזו.
 
       אם לא תצוין, לא תשנה את כתובת האתר של Seed הווריאציות.</translation>
-<translation id="5564962323737505851">המדיניות מגדירה את מנהל הסיסמאות. אם מנהל הסיסמאות מופעל, תוכל לבחור להפעיל או להשבית את יכולת המשתמש להציג סיסמאות מאוחסנות בטקסט ברור.</translation>
 <translation id="556941986578702361">‏מדיניות זו שולטת בהסתרה האוטומטית של המדף <ph name="PRODUCT_OS_NAME" />.
 
       אם מדיניות זו מוגדרת ל- 'AlwaysAutoHideShelf', המדף יוסתר תמיד אוטומטית.
@@ -1238,7 +1236,6 @@
 <translation id="5893553533827140852">‏אם ההגדרה הזו פועלת, בקשות אימות של Gnubby יועברו דרך שרת proxy בחיבור מארח מרוחק.
 
           אם ההגדרה הזו מושבתת או אינה מוגדרת, בקשות אימות של Gnubby לא יועברו דרך שרת proxy.</translation>
-<translation id="5912364507361265851">אפשר למשתמשים להציג סיסמאות במנהל הסיסמאות</translation>
 <translation id="5921713479449475707">‏אפשר הורדות של עדכונים אוטומטיים דרך HTTP</translation>
 <translation id="5921888683953999946">‏הגדר את מצב ברירת המחדל של תכונת הנגישות של הסמן הגדול במסך ההתחברות.
 
@@ -1464,7 +1461,7 @@
 
       אם לא תגדיר מדיניות זו כלל, חיזויי רשת יופעלו, אך המשתמשים יוכלו לשנות זאת.</translation>
 <translation id="6658245400435704251">מציין עד כמה שניות המכשיר יכול לעכב אוטומטית את הורדת העדכון המתבצעת באמצעותו, מהרגע שבו העדכון נדחף לראשונה אל השרת. המכשיר עשוי להמתין חלק מזמן זה במונחים של זמן לפי שעון רגיל, ואת החלק הנותר במונחים של מספר בדיקות העדכון. בכל מקרה, הפיזור נמצא בתחום העליון של פרק זמן קבוע, כדי שהמכשיר לעולם לא ייתקע לנצח בהמתנה להוריד עדכון.</translation>
-<translation id="6672934768721876104">‏מדיניות זו כבר אינה בתוקף, השתמש ב-ProxyMode במקום זאת. מאפשר לך לציין את שרת ה-Proxy ש-<ph name="PRODUCT_NAME" /> משתמש בו ומונע ממשתמשים לשנות את הגדרות שרת ה-Proxy. אם תבחר שלא להשתמש לעולם בשרת Proxy ולהתחבר תמיד ישירות, המערכת תתעלם מכל האפשרויות האחרות. אם תבחר להגדיר ידנית את הגדרות שרת ה-Proxy, תוכל לציין אפשרויות נוספות ב'כתובת או כתובת אתר של שרת Proxy', 'כתובת אתר לקובץ ‎.pac של שרת Proxy' ו'רשימה של כללי מעקף שרת Proxy ברשימה המופרדת בפסיקים'. לדוגמאות מפורטות, בקר ב-<ph name="PRODUCT_NAME" /> אם תהפוך הגדרה זו לפעילה, <ph name="PROXY_HELP_URL" /> מתעלם מכל האפשרויות הקשורות לשרת Proxy שהוגדרו בשורת הפקודה. אם לא תגדיר מדיניות זו, המשתמשים יוכלו לבחור את הגדרות שרת ה-Proxy בעצמם.</translation>
+<translation id="6672934768721876104">‏מדיניות זו כבר אינה בתוקף, השתמש ב-ProxyMode במקום זאת. מאפשר לך לציין את שרת ה-Proxy ש-<ph name="PRODUCT_NAME" /> משתמש בו ומונע ממשתמשים לשנות את הגדרות שרת ה-Proxy. אם תבחר שלא להשתמש לעולם בשרת Proxy ולהתחבר תמיד ישירות, המערכת תתעלם מכל האפשרויות האחרות. אם תבחר להגדיר ידנית את הגדרות שרת ה-Proxy, תוכל לציין אפשרויות נוספות ב'כתובת או כתובת אתר של שרת Proxy', 'כתובת אתר לקובץ ‎.pac של שרת Proxy' ו'רשימה של כללי מעקף שרת Proxy ברשימה המופרדת בפסיקים'. לדוגמאות מפורטות, היכנס ל-<ph name="PRODUCT_NAME" /> אם תהפוך הגדרה זו לפעילה, <ph name="PROXY_HELP_URL" /> מתעלם מכל האפשרויות הקשורות לשרת Proxy שהוגדרו בשורת הפקודה. אם לא תגדיר מדיניות זו, המשתמשים יוכלו לבחור את הגדרות שרת ה-Proxy בעצמם.</translation>
 <translation id="6689792153960219308">דיווח על מצב חומרה</translation>
 <translation id="6693751878507293182">אם תהפוך הגדרה זו לפעילה, החיפוש וההתקנה האוטומטיים של יישומי פלאגין חסרים יושבתו ב-<ph name="PRODUCT_NAME" />. בין אם תגדיר אפשרות זו כמושבתת ובין אם לא, מחפש הפלאגין יהפוך לפעיל.</translation>
 <translation id="6697474194550078937">‏הגבל את משך הזמן שבמהלכו משתמש שאומת באמצעות SAML יכול להתחבר באופן לא מקוון.
@@ -1784,6 +1781,7 @@
 <translation id="7882585827992171421">‏מדיניות זו פועלת במצב קמעונאי בלבד.
 
       קובעת את מזהה התוסף שישמש כשומר מסך במסך הכניסה. התוסף חייב להיות חלק מה-AppPack שמוגדר עבור דומיין זה באמצעות מדיניות DeviceAppPack.</translation>
+<translation id="7882890448959833986">בטל את האזהרה בדבר מערכת הפעלה לא נתמכת</translation>
 <translation id="7912255076272890813">הגדרת סוגי יישומים/תוספים מותרים</translation>
 <translation id="793134539373873765">‏מציין אם יש לעשות שימוש ב-p2p עבור תוכן מנות לעדכון מערכת ההפעלה. אם מוגדרת האפשרות True, מכשירים ישתפו וינסו לצרוך תוכן מנות של עדכונים ברשת LAN, ועלולים לפגוע ברמת השימוש ובצפיפות של רוחב הפס של האינטרנט. אם תוכן מנת העדכון אינו זמין ברשת ה-LAN, המכשיר יחזור לבצע הורדות משרת עדכונים. אם מוגדרת האפשרות False, או שהגדרה זו לא מוגדרת כלל, לא ייעשה שימוש ב-p2p.</translation>
 <translation id="7933141401888114454">אפשר יצירה של משתמשים מבוקרים</translation>
@@ -1841,6 +1839,7 @@
 
       אם המדיניות מוגדרת כ-False, רשימת הממשקים לא תדווח.</translation>
 <translation id="8146727383888924340">‏התר למשתמשים לממש מבצעים באמצעות רישום למערכת ההפעלה של Chrome</translation>
+<translation id="8148785525797916822">בטל את האזרה שמופיעה כאשר <ph name="PRODUCT_NAME" /> פועל במחשב או מערכת הפעלה שאינם נתמכים יותר.</translation>
 <translation id="8148901634826284024">‏הפעל את תכונת הנגישות של מצב ניגודיות גבוהה.
 
           אם מדיניות זו מוגדרת ל-True, מצב ניגודיות גבוהה יהיה מופעל תמיד.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index da792534..6e72ae29d 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -787,7 +787,6 @@
 <translation id="402759845255257575">すべてのサイトに対して Javascript の実行を許可しない</translation>
 <translation id="4027608872760987929">デフォルトの検索プロバイダを有効にする</translation>
 <translation id="4039085364173654945">ページ上のサードパーティ製のサブコンテンツで [HTTP 基本認証] ダイアログボックスのポップアップ表示を許可するかどうかを設定します。通常、これはフィッシング詐欺の防衛策として無効になっています。このポリシーが未設定の場合は無効になり、サブコンテンツで [HTTP 基本認証] ダイアログボックスのポップアップ表示は許可されません。</translation>
-<translation id="4052765007567912447">パスワード マネージャでクリア テキストのパスワードの表示をユーザーに対して許可するかどうかを管理します。この設定を無効にすると、保存されたクリア テキストのパスワードをパスワード マネージャ ウィンドウで表示することはできません。この設定を有効にするか未設定の場合、ユーザーはパスワード マネージャでクリア テキストのパスワードを表示できます。</translation>
 <translation id="4056910949759281379">SPDY プロトコルを無効にする</translation>
 <translation id="4088589230932595924">シークレット モードを適用する</translation>
 <translation id="4088983553732356374">ウェブサイトにローカルデータの設定を許可するかどうかを制御します。ローカルデータの設定をすべてのウェブサイトに対して許可するか、すべてのウェブサイトに対して拒否することができます。
@@ -1141,7 +1140,6 @@
       このポリシーが指定されている場合、バリエーション シードの取得に使用される URL に「restrict」というクエリ パラメータが追加されます。このパラメータの値には、このポリシーで指定された値が使用されます。
 
       このポリシーが指定されていない場合、バリエーション シード URL は変更されません。</translation>
-<translation id="5564962323737505851">パスワード マネージャを設定します。パスワード マネージャを有効にすると、クリア テキストで保存したパスワードの表示をユーザーに許可するかどうかを選択できます。</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> のシェルフの自動非表示を指定します。
 
       このポリシーが「AlwaysAutoHideShelf」に設定されている場合、シェルフは常に自動的に非表示になります。
@@ -1247,7 +1245,6 @@
 <translation id="5893553533827140852">この設定が有効になっている場合、gnubby 認証リクエストはリモート ホスト接続でプロキシ送信されます。
 
           この設定が無効になっているか設定されていない場合、gnubby 認証リクエストはプロキシ送信されません。</translation>
-<translation id="5912364507361265851">ユーザーに対してパスワード マネージャでのパスワードの表示を許可する</translation>
 <translation id="5921713479449475707">HTTP 経由での自動更新ダウンロードを許可する</translation>
 <translation id="5921888683953999946">ログイン画面でのユーザー補助機能「大きいカーソル」のデフォルト状態を設定します。
 
@@ -1809,6 +1806,7 @@
 <translation id="7882585827992171421">このポリシーは小売りモードでのみアクティブになります。
 
       ログイン画面のスクリーンセーバーとして使用する拡張機能の ID を指定します。拡張機能は、DeviceAppPack ポリシーを使用してこのドメインに設定されている AppPack のものである必要があります。</translation>
+<translation id="7882890448959833986">サポート外の OS の警告を表示しない</translation>
 <translation id="7912255076272890813">許可されるアプリ/拡張機能のタイプを設定する</translation>
 <translation id="793134539373873765">p2p を OS 更新ペイロードに使用するかどうかを指定します。True に設定すると、デバイスは LAN 上で更新ペイロードを共有し、使用しようとするため、インターネット帯域幅の使用と混雑が削減される可能性があります。更新ペイロードが LAN 上で使用できない場合、デバイスは更新サーバーからのダウンロードにフォールバックします。False に設定するか、何も設定しない場合、p2p は使用されません。</translation>
 <translation id="7933141401888114454">監視対象ユーザーを作成できるようにする</translation>
@@ -1865,6 +1863,7 @@
 
       このポリシーが False に設定されている場合、インターフェースのリストは報告されません。</translation>
 <translation id="8146727383888924340">Chrome OS の登録特典の利用をユーザーに許可する</translation>
+<translation id="8148785525797916822">サポートされなくなったパソコンまたはオペレーティング システムで <ph name="PRODUCT_NAME" /> を実行する際、警告が表示されないようにします。</translation>
 <translation id="8148901634826284024">ユーザー補助機能の 1 つであるハイコントラスト モードを有効にします。
 
           このポリシーが true に設定されている場合は、ハイコントラスト モードが常に有効になります。
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb
index db5ebe1..f3461c2f 100644
--- a/components/policy/resources/policy_templates_kn.xtb
+++ b/components/policy/resources/policy_templates_kn.xtb
@@ -794,7 +794,6 @@
 <translation id="402759845255257575">JavaScript ಚಲಿಸಲು ಯಾವುದೇ ಸೈಟ್ ಅನ್ನು ಅನುಮತಿಸಬೇಡ</translation>
 <translation id="4027608872760987929">ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟ ನೀಡುಗರನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="4039085364173654945">HTTP ಮೂಲ ದೃಢೀಕರಣ ಸಂವಾದ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪಾಪ್-ಅಪ್ ಮಾಡಲು ಪುಟದಲ್ಲಿನ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಉಪವಿಷಯವನ್ನು ಅನುಮತಿಸಲು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಸಾಂಕೇತಿಕವಾಗಿ ಇದನ್ನು ಫಿಶಿಂಗ್ ಡಿಫೆನ್ಸ್‌ನಂತೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೆ ಇದ್ದಲ್ಲಿ, ಇದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಉಪ ವಿಷಯವನ್ನು HTTP ಮೂಲ ದೃಢೀಕರಣ ಸಂವಾದ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪಾಪ್ ಅಪ್ ಮಾಡಲು ಅನುಮತಿಸುವುದಿಲ್ಲ.</translation>
-<translation id="4052765007567912447">ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಬಳಕೆದಾರರು ಸ್ಪಷ್ಟವಾದ ಪಠ್ಯದಲ್ಲಿ ತೋರಿಸಬಹುದೇ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನೀವು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಲ್ಲಿ, ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕ ವಿಂಡೊದಲ್ಲಿ ಸಂಗ್ರಹಿತವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ತೋರಿಸಲು ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕವು ಅನುಮತಿಸುವುದಿಲ್ಲ. ನೀವು ಸಕ್ರಿಯಗೊಳಿಸಿದಲ್ಲಿ ಅಥವಾ ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದಿದ್ದಲ್ಲಿ, ಬಳಕೆದಾರರು ತಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಸ್ಪಷ್ಟವಾದ ಪಠ್ಯದಲ್ಲಿ ವೀಕ್ಷಿಸಬಹುದಾಗಿದೆ.</translation>
 <translation id="4056910949759281379">SPDY ಪ್ರೋಟೊಕಾಲ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="4088589230932595924">ಅಜ್ಞಾತ ಮೋಡ್ ಅನ್ನು ಒತ್ತಾಯಿಸಲಾಗಿದೆ</translation>
 <translation id="4088983553732356374">ಸ್ಥಳೀಯ ಡೇಟಾ ಹೊಂದಿಸಲು ವೆಬ್‌ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಬೇಕೇ ಬೇಡವೇ ಎಂಬುದನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ. ಎಲ್ಲಾ ವೆಬ್‌ಸೈಟ್‌ಗಳಿಗೂ ಸ್ಥಳೀಯ ಡೇಟಾ ಹೊಂದಿಸುವಿಕೆಯನ್ನು ಅನುಮತಿಸಬಹುದು ಇಲ್ಲವೇ ಎಲ್ಲಾ ವೆಬ್‌ಸೈಟ್‌ಗಳಿಗೂ ನಿರಾಕರಿಸಬಹುದು.
@@ -1146,7 +1145,6 @@
       ನಿರ್ದಿಷ್ಟಪಡಿಸಿದರೆ, ಮಾರ್ಪಾಡುಗಳ ಮೂಲವನ್ನು ಪಡೆದುಕೊಳ್ಳಲು 'ನಿರ್ಬಂಧಿಸು' ಎಂದು ಹೇಳಲಾಗುವ ಕ್ವೈರಿ ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು URL ಗೆ ಸೇರಿಸುತ್ತದೆ. ಪ್ಯಾರಾಮೀಟರ್‌ನ ಮೌಲ್ಯವು ಈ ನೀತಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾದ ಮೌಲ್ಯವಾಗಿರುತ್ತದೆ.
 
       ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದರೆ, ಮಾರ್ಪಾಡುಗಳ ಮೂಲ URL ಅನ್ನು ಮಾರ್ಪಡಿಸುವುದಿಲ್ಲ.</translation>
-<translation id="5564962323737505851">ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ. ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ನಂತರ ಸಂಗ್ರಹಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸ್ಪಷ್ಟವಾದ ಪಠ್ಯದಲ್ಲಿ ಬಳಕೆದಾರರು ತೋರಿಸಬಹುದೆ ಎಂಬುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಆರಿಸಿಕೊಳ್ಳಬಹುದಾಗಿದೆ.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> ದ ಶೆಲ್ಫ್ ಸ್ವಯಂ-ಮರೆಮಾಡುವಿಕೆಯನ್ನು ನಿಯಂತ್ರಿಸಿ.
 
       ಈ ನೀತಿಯನ್ನು 'AlwaysAutoHideShelf' ಗೆ ಹೊಂದಿಸಲಾಗಿದ್ದರೆ, ಶೆಲ್ಫ್ ಯಾವಾಗಲೂ ಸ್ವಯಂ-ಮರೆಯಾಗುತ್ತದೆ.
@@ -1250,7 +1248,6 @@
 <translation id="5893553533827140852">ಈ ಸೆಟ್ಟಿಂಗ್‌ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ನಂತರ gnubby ದೃಢೀಕರಣ ವಿನಂತಿಗಳನ್ನು ರಿಮೋಟ್‌ ಹೋಸ್ಟ್‌ ಸಂಪರ್ಕದಾದ್ಯಂತ ಪ್ರಾಕ್ಸಿ ಮಾಡಲಾಗುವುದು.
            
            ಈ ಸೆಟ್ಟಿಂಗ್‌ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ ಅಥವಾ ಕಾನ್ಫಿಗರ್ ಮಾಡದಿದ್ದರೆ, gnubby ದೃಢೀಕರಣ ವಿನಂತಿಗಳನ್ನು ಪ್ರಾಕ್ಸಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
-<translation id="5912364507361265851">ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕರಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ತೋರಿಸಲು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಿ</translation>
 <translation id="5921713479449475707">HTTP ಮೂಲಕ ಸ್ವಯಂನವೀಕರಣ ಡೌನ್‌ಲೋಡ್‌ಗಳಿಗೆ ಅನುಮತಿಸಿ</translation>
 <translation id="5921888683953999946">ಲಾಗಿನ್ ಪರದೆಯಲ್ಲಿ ದೊಡ್ಡ ಕರ್ಸರ್ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯದ ಡೀಫಾಲ್ಟ್ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸಿ.
 
@@ -1658,7 +1655,7 @@
 
       ಈ ನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದಲ್ಲಿ ಅಥವಾ ಹೊಂದಿಸದೆ ಬಿಟ್ಟರೆ, ಬಳಕೆದಾರರಿಗೆ ತಮ್ಮ ಇಚ್ಛೆಯಂತೆ ಬ್ಲೂಟೂತ್‌ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
 
-      ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದರೆ, ಬಳಕೆದಾದರಿಗೆ ಅದನ್ನು ಬದಲಾಯಿಸಲು ಅಥವಾ ಅತಿಕ್ರಮಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
+      ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದರೆ, ಬಳಕೆದಾರರಿಗೆ ಅದನ್ನು ಬದಲಾಯಿಸಲು ಅಥವಾ ಅತಿಕ್ರಮಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7216442368414164495">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ವಿಸ್ತರಿತ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ಆಯ್ದುಕೊಳ್ಳಲು ಬಳಕೆದಾರರಿಗೆ ಅನುಮತಿಸುತ್ತದೆ</translation>
 <translation id="7227967227357489766">ಸಾಧನಕ್ಕೆ ಲಾಗಿನ್ ಮಾಡಲು ಅವಕಾಶವನ್ನು ನೀಡಿರುವಂತಹ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ವಿವರಿಸುತ್ತದೆ. <ph name="USER_WHITELIST_ENTRY_EXAMPLE" /> ನಂತಹ <ph name="USER_WHITELIST_ENTRY_FORMAT" /> ಸ್ವರೂಪದ ನಮೂದುಗಳಾಗಿವೆ. ಡೊಮೇನ್‌ನಲ್ಲಿ ನಿರಂಕುಶ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲು, <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> ಫಾರ್ಮ್‌‌ನ ನಮೂದುಗಳನ್ನು ಬಳಸಿ.
 
@@ -1829,6 +1826,7 @@
 <translation id="7882585827992171421">ಈ ನೀತಿಯು ಕೇವಲ ಚಿಲ್ಲರೆ ಮೋಡ್‌ನಲ್ಲಿ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ.
 
       ಸೈನ್-ಇನ್ ಪರದೆಯಲ್ಲಿ ವಿಸ್ತರಣೆಯ ಐಡಿ ಅನ್ನು ಸ್ಕ್ರೀನ್ ಸೇವರ್‌ನಂತೆ ಬಳಸಲು ನಿರ್ಧರಿಸುತ್ತದೆ. ವಿಸ್ತರಣೆಯು DeviceAppPack ನೀತಿಯ ಮೂಲಕ ಈ ಡೊಮೇನ್‌ಗಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವಂತಹ AppPack ನ ಭಾಗವಾಗಿರಬೇಕು.</translation>
+<translation id="7882890448959833986">ಬೆಂಬಲರಹಿತ OS ಎಚ್ಚರಿಕೆ ನಿಗ್ರಹಿಸಿ</translation>
 <translation id="7912255076272890813">ಅನುಮತಿಸಿದ ಅಪ್ಲಿಕೇಶನ್/ವಿಸ್ತರಣೆ ಪ್ರಕಾರಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation>
 <translation id="793134539373873765">p2p ಅನ್ನು OS ಅಪ್‌ಡೇಟ್‌‌ ಪ್ಲೇಲೋಡ್‌ಗಳಿಗಾಗಿ ಬಳಸಬೇಕೇ ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, ಸಾಧನಗಳಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಇಂಟರ್ನೆಟ್ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ ಬಳಕೆ ಹಾಗೂ ದಟ್ಟಣೆಯನ್ನು ಸಂಭಾವ್ಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುವ, LAN ನಲ್ಲಿರುವ ಅಪ್‌ಡೇಟ್‌‌ ಪ್ಲೇಲೋಡ್‌ಗಳನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಒಂದು ವೇಳೆ ಅಪ್‌ಡೇಟ್‌‌ ಪ್ಲೇಲೋಡ್ LAN ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲದಿದ್ದರೆ, ಸಾಧನವು ಅಪ್‌ಡೇಟ್‌‌ ಸರ್ವರ್‌ನಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದರಿಂದ ಪೂರ್ವ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ. ಸರಿ ಎಂದು ಹೊಂದಿಸಿದ ಅಥವಾ ಕಾನ್ಫಿಗರ್ ಮಾಡಿರದಿದ್ದರೆ, p2p ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7933141401888114454">ಮೇಲ್ವಿಚಾರಣೆಯ ಬಳಕೆದಾರರ ರಚನೆ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
@@ -1886,6 +1884,7 @@
 
       ನೀತಿಯನ್ನು ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದ್ದರೆ, ಇಂಟರ್ಫೇಸ್ ಪಟ್ಟಿಯನ್ನು ವರದಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="8146727383888924340">Chrome OS ನೋಂದಣಿಯ ಮೂಲಕ ಕೊಡುಗೆಗಳನ್ನು ರಿಡೀಮ್ ಮಾಡಲು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಿ</translation>
+<translation id="8148785525797916822">ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ <ph name="PRODUCT_NAME" /> ರನ್ ಆಗಬೇಕಾದರೆ ಅಥವಾ ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿತವಿಲ್ಲದ ಕಾರ್ಯಾಚರಣಾ ವ್ಯವಸ್ಥೆ ಇರುವಾಗ ಗೋಚರಿಸುವಂತಹ ಎಚ್ಚರಿಕೆಯನ್ನು ನಿಗ್ರಹಿಸುತ್ತದೆ.</translation>
 <translation id="8148901634826284024">ಅಧಿಕ ಕಾಂಟ್ರಾಸ್ಟ್ ಮೋಡ್ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.
 
           ಈ ನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, ಅಧಿಕ ಕಾಂಟ್ರಾಸ್ಟ್ ಮೋಡ್ ಯಾವಾಗಲೂ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ.
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index a15b3b1..cc23574 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -884,11 +884,6 @@
 <translation id="4039085364173654945">페이지의 제3자 하위 콘텐츠가 HTTP 기본 인증 대화 상자를 팝업할 수 있는지 여부를 관리합니다.
 
           일반적으로 이 설정은 피싱 차단을 위해 사용 중지되어 있습니다. 이 정책을 설정하지 않은 경우 사용 중지되며 제3자 하위 콘텐츠가 HTTP 기본 인증 대화 상자를 팝업할 수 없습니다.</translation>
-<translation id="4052765007567912447">사용자가 비밀번호 관리자에서 일반 텍스트로 비밀번호를 표시할 수 있는지 여부를 관리합니다.
-
-          이 설정을 사용 중지하면 비밀번호 관리자가 비밀번호 관리자 창에 저장된 비밀번호를 일반 텍스트로 표시할 수 없습니다.
-
-          이 설정을 사용하거나 이 정책을 설정하지 않으면 사용자가 비밀번호 관리자에서 일반 텍스트로 비밀번호를 볼 수 있습니다.</translation>
 <translation id="4056910949759281379">SPDY 프로토콜 사용 중지</translation>
 <translation id="4088589230932595924">시크릿 모드를 강제로 사용함</translation>
 <translation id="4088983553732356374">웹사이트에서 로컬 데이터를 설정하도록 허용할지 선택할 수 있습니다. 로컬 데이터 설정은 모든 웹사이트를 대상으로 허용하거나 거부할 수 있습니다.
@@ -1289,7 +1284,6 @@
       지정하는 경우 버전 시드를 가져올 때 사용하는 URL에 'restrict'라는 검색 매개변수가 추가됩니다. 매개변수 값은 이 정책에서 지정한 값입니다.
 
       지정하지 않으면 버전 시드 URL을 수정할 수 없습니다.</translation>
-<translation id="5564962323737505851">비밀번호 관리자를 설정합니다. 비밀번호 관리자를 사용하면 사용자가 저장된 비밀번호를 일반 텍스트로 볼 수 있는지를 선택할 수 있습니다.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> 실행기의 자동 숨김을 제어합니다.
 
       이 정책이 'AlwaysAutoHideShelf'로 설정되면 실행기를 항상 자동으로 숨깁니다.
@@ -1402,7 +1396,6 @@
 <translation id="5893553533827140852">이 설정을 사용하도록 설정하면 gnubby 인증 요청이 원격 호스트 연결을 통해 프록시됩니다.
 
           이 설정을 사용 중지하거나 구성하지 않으면 gnubby 인증 요청이 프록시되지 않습니다.</translation>
-<translation id="5912364507361265851">사용자가 비밀번호 관리자에 암호를 표시할 수 있도록 허용</translation>
 <translation id="5921713479449475707">HTTP를 통한 자동 업데이트 다운로드 허용</translation>
 <translation id="5921888683953999946">로그인 화면에서 큰 커서 접근성 기능의 기본 상태를 설정합니다.
 
@@ -2041,6 +2034,7 @@
 <translation id="7882585827992171421">이 정책은 판매 모드일 때만 사용할 수 있습니다.
 
       로그인 화면에서 화면 보호기로 사용되는 확장 프로그램의 ID를 결정합니다. 확장 프로그램은 DeviceAppPack 정책을 통해 이 도메인에 구성된 AppPack의 일부여야 합니다.</translation>
+<translation id="7882890448959833986">지원되지 않는 OS 경고 무시</translation>
 <translation id="7912255076272890813">허용된 앱/확장 프로그램 설정</translation>
 <translation id="793134539373873765">OS 업데이트 페이로드에 p2p를 사용할지 여부를 지정합니다. True로 설정되면 기기는 LAN에서 업데이트 페이로드를 공유하고 소비하려고 시도하여 인터넷 대역폭 사용량 및 혼잡을 줄일 수 있습니다. LAN에서 업데이트 페이로드를 사용할 수 없는 경우 기기는 다시 업데이트 서버로부터 다운로드합니다. False로 설정되었거나 아무런 설정이 없는 경우 p2p가 사용되지 않습니다.</translation>
 <translation id="7933141401888114454">관리 대상 사용자 생성을 허용합니다.</translation>
@@ -2103,6 +2097,7 @@
 
       정책이 false로 설정된 경우 인터페이스 목록이 보고되지 않습니다.</translation>
 <translation id="8146727383888924340">사용자가 Chrome OS 등록을 통해 쿠폰을 사용할 수 있게 합니다.</translation>
+<translation id="8148785525797916822">더 이상 지원되지 않는 컴퓨터 또는 운영체제에서 <ph name="PRODUCT_NAME" />이(가) 실행 중일 때 표시되는 경고를 무시합니다.</translation>
 <translation id="8148901634826284024">고대비 모드 접근성 기능을 사용하도록 설정합니다.
 
           이 정책을 true로 설정하면 고대비 모드를 항상 사용하도록 설정됩니다.
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb
index 316858e7..4322e74f 100644
--- a/components/policy/resources/policy_templates_lt.xtb
+++ b/components/policy/resources/policy_templates_lt.xtb
@@ -892,11 +892,6 @@
 <translation id="4039085364173654945">Valdoma, ar trečiosios šalies papildomas turinys puslapyje gali būti pateiktas iššokančiajame HTTP pagrindinės prieigos teisės dialogo lange.
 
           Įprastai tai neleidžiama siekiant apsisaugoti nuo sukčiavimo. Nenustačius šios politikos, tai neleidžiama ir trečiosios šalies papildomo turinio neleidžiama pateikti iššokančiajame HTTP pagrindinės prieigos teisės dialogo lange.</translation>
-<translation id="4052765007567912447">Valdoma, ar naudotojas (-a) gali rodyti aiškiai parašytus slaptažodžius slaptažodžių tvarkytuvėje.
-
-          Jei neleisite šio nustatymo, slaptažodžių tvarkytuvės lange nebus leidžiama rodyti aiškiai parašytų išsaugotų slaptažodžių.
-
-          Jei įgalinsite šią politiką arba jos nenustatysite, naudotojai galės peržiūrėti aiškiai parašytus slaptažodžius slaptažodžių tvarkytuvėje.</translation>
 <translation id="4056910949759281379">Neleisti SPDY protokolo</translation>
 <translation id="4088589230932595924">Įjungtas inkognito režimas</translation>
 <translation id="4088983553732356374">Leidžiama nustatyti, ar svetainėms galima nustatyti vietinius duomenis. Nustatyti vietinius duomenis galima leisti arba uždrausti visoms svetainėms.
@@ -1300,7 +1295,6 @@
       Jei jis nurodytas, prie pateikiant variantų pirminę reikšmę naudojamo URL bus pridėtas URL parametras „restrict“. Parametro vertė bus šioje politikoje nustatyta vertė.
 
       Jei ši politika nenustatyta, variantų pirminės reikšmės URL keičiamas nebus.</translation>
-<translation id="5564962323737505851">Konfigūruojama slaptažodžių tvarkytuvė. Jei slaptažodžių tvarkytuvė įgalinta, galite pasirinkti įgalinti naudotojo galimybę pateikti saugomus slaptažodžius aiškiu tekstu arba neleisti naudotis šia galimybe.</translation>
 <translation id="556941986578702361">Valdomas automatinis „<ph name="PRODUCT_OS_NAME" />“ lentynos paslėpimas.
 
       Jei ši politika nustatyta kaip „Visada automatiškai paslėpti lentyną“, lentyna visada automatiškai paslepiama.
@@ -1413,7 +1407,6 @@
 <translation id="5893553533827140852">Jei šis nustatymas įgalintas, „Gnubby“ autentifikavimo užklausos bus perduotos įgaliotajam serveriui nuotolinės prieglobos ryšiu.
 
           Jei šis nustatymas išjungtas arba nesukonfigūruotas, „Gnubby“ autentifikavimo užklausos nebus perduotos įgaliotajam serveriui.</translation>
-<translation id="5912364507361265851">Leisti naudotojams rodyti slaptažodžius slaptažodžių tvarkytuvėje</translation>
 <translation id="5921713479449475707">Leisti automatinio naujinio atsisiuntimus naudojant HTTP</translation>
 <translation id="5921888683953999946">Nustatyti numatytąją didelio žymeklio pasiekiamumo funkciją prisijungimo ekrane.
 
@@ -2053,6 +2046,7 @@
 <translation id="7882585827992171421">Ši politika taikoma tik mažmeninės prekybos režimu.
 
       Nustatomas plėtinio, kuris turėtų būti naudojamas kaip ekrano užsklanda prisijungimo ekrane, ID. Plėtinys turi būti „AppPack“ (programų paketo), kuris sukonfigūruotas šiam domenui taikant politiką „DeviceAppPack“ (įrenginio programų paketas), dalis.</translation>
+<translation id="7882890448959833986">Nerodyti nepalaikomos OS įspėjimo</translation>
 <translation id="7912255076272890813">Konfigūruoti leidžiamus programų / plėtinių tipus</translation>
 <translation id="793134539373873765">Nurodoma, ar P2P bus naudojamas naudingosiose OS naujinių apkrovose. Jei ši politika galioja, įrenginiai bendrins ir bandys naudoti naujinio naudingąsias apkrovas per LAN, taip potencialiai sumažindami interneto pralaidumo naudojimą ir perpildymą. Jei naujinio naudingoji apkrova nepasiekiama naudojant LAN, įrenginys vykdys atsisiuntimą iš naujinio serverio. Jei ši politika negalioja ar yra nesukonfigūruota, P2P nebus naudojama.</translation>
 <translation id="7933141401888114454">Įgalinti prižiūrimų naudotojų kūrimą</translation>
@@ -2115,6 +2109,7 @@
 
       Jei politika nustatyta kaip „False“, sąsajų sąrašas nebus pateiktas.</translation>
 <translation id="8146727383888924340">Leisti naudotojams pasinaudoti pasiūlymais atliekant „Chrome“ OS registraciją</translation>
+<translation id="8148785525797916822">Nerodomas įspėjimas, kuris rodomas, kai „<ph name="PRODUCT_NAME" />“ veikia kompiuteryje ar operacinėje sistemoje, kuri nebepalaikoma.</translation>
 <translation id="8148901634826284024">Įgalinti didelio kontrasto režimo pasiekiamumo funkciją.
 
           Jei ši politika galioja, didelio kontrasto režimas bus visada įgalintas.
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb
index 000b4b40..05ca8a6 100644
--- a/components/policy/resources/policy_templates_lv.xtb
+++ b/components/policy/resources/policy_templates_lv.xtb
@@ -891,11 +891,6 @@
 <translation id="4039085364173654945">Nosaka, vai lapā ietvertajam trešās puses sekundārajam saturam ir atļauts atvērt HTTP pamata autentifikācijas dialoglodziņu.
 
           Parasti šī iespēja ir atspējota kā aizsardzība pret pikšķerēšanu. Ja šī politika nav iestatīta, tā tiks atspējota un trešās puses sekundārajam saturam nebūs atļauts atvērt HTTP pamata autentifikācijas dialoglodziņu.</translation>
-<translation id="4052765007567912447">Nosaka, vai lietotājs var rādīt paroles paroļu pārvaldniekā atklātā tekstā.
-
-          Ja šis iestatījums ir atspējots, paroļu pārvaldnieks neļauj rādīt saglabātās paroles paroļu pārvaldnieka logā atklātā tekstā.
-
-          Ja šī politika ir iespējota vai nav iestatīta, lietotāji var skatīt paroles paroļu pārvaldniekā atklātā tekstā.</translation>
 <translation id="4056910949759281379">Atspējo SPDY protokolu</translation>
 <translation id="4088589230932595924">Inkognito režīms piespiedu kārtā</translation>
 <translation id="4088983553732356374">Izmantojot šo politiku, varat norādīt, vai vietnes var iestatīt lokālos datus. Lokālo datu iestatīšana var būt vai nu atļauta visām vietnēm, vai arī liegta visām vietnēm.
@@ -1300,7 +1295,6 @@
       Ja ir norādīta šīs politikas vērtība, vietrādim URL, kas tiek izmantots variantu sākotnējās vērtības iegūšanai, tiks pievienots vaicājuma parametrs “restrict”. Parametra vērtība būs šīs politikas norādītā vērtība.
 
       Ja šīs politikas vērtība nav norādīta, variantu sākotnējās vērtības URL netiks modificēts.</translation>
-<translation id="5564962323737505851">Konfigurē paroļu pārvaldnieku. Ja paroļu pārvaldnieks ir iespējots, var izvēlēties iespējot vai atspējot saglabāto paroļu rādīšanu nešifrētā tekstā.</translation>
 <translation id="556941986578702361">Kontrolējiet <ph name="PRODUCT_OS_NAME" /> plaukta automātisko slēpšanu.
 
       Ja šai politikai tiks izvēlēts iestatījums “AlwaysAutoHideShelf”, plaukts vienmēr tiks automātiski slēpts.
@@ -1411,7 +1405,6 @@
 <translation id="5893553533827140852">Ja šis iestatījums ir iespējots, Gnubby autentifikācijas pieprasījumiem tiks izmantoti starpniekserveri attālā saimniekdatora tīklā.
 
           Ja šis iestatījums ir atspējots vai nav konfigurēts, Gnubby autentifikācijas pieprasījumiem netiks izmantoti starpniekserveri.</translation>
-<translation id="5912364507361265851">Atļauj rādīt paroles paroļu pārvaldniekā</translation>
 <translation id="5921713479449475707">Atļaut automātiski atjaunināt lejupielādes, izmantojot HTTP</translation>
 <translation id="5921888683953999946">Iestatiet lielā kursora pieejamības funkcijas noklusējuma stāvokli pieteikšanās ekrānā.
 
@@ -2049,6 +2042,7 @@
 <translation id="7882585827992171421">Šī politika darbojas tikai mazumtirdzniecības režīmā.
 
       Nosaka paplašinājuma ID, kas jāizmanto kā ekrānsaudzētājs pierakstīšanās ekrānā. Paplašinājumam ir jābūt daļai no AppPack, kas konfigurēts šim domēnam, izmantojot politiku DeviceAppPack.</translation>
+<translation id="7882890448959833986">Brīdinājuma par neatbalstītu OS rādīšanas apturēšana</translation>
 <translation id="7912255076272890813">Atļauto lietotņu/paplašinājumu veidu konfigurēšana</translation>
 <translation id="793134539373873765">Norāda, vai operētājsistēmas atjaunināšanas vērtumiem izmantot P2P. Ja ir iestatīta vērtība “True”, ierīces kopīgos un mēģinās izmantot atjaunināšanas vērtumus LAN tīklā, tādējādi, iespējams, samazinot interneta joslas platuma lietojumu un pārblīvi. Ja LAN tīklā nav pieejams atjaunināšanas vērtums, ierīce izmantos lejupielādi no atjaunināšanas servera. Ja ir iestatīta vērtība “False” vai šis iestatījums nav konfigurēts, P2P netiks lietots.</translation>
 <translation id="7933141401888114454">Iespējot uzraudzīto lietotāju kontu izveidi</translation>
@@ -2111,6 +2105,7 @@
 
       Ja šīs politikas iestatījums ir “False”, saskarņu saraksts netiks nosūtīts.</translation>
 <translation id="8146727383888924340">Atļaut lietotājiem izpirkt piedāvājumus, izmantojot Chrome OS reģistrāciju</translation>
+<translation id="8148785525797916822">Aptur brīdinājuma rādīšanu, kad <ph name="PRODUCT_NAME" /> darbojas datorā vai operētājsistēmā, kura vairs netiek atbalstīta.</translation>
 <translation id="8148901634826284024">Iespējojiet augsta kontrasta pieejamības funkciju.
 
           Ja šī politika ir iestatīta uz “true”, augsta kontrasta režīms vienmēr būs iespējots.
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb
index aaa58f9..2f70b95 100644
--- a/components/policy/resources/policy_templates_ml.xtb
+++ b/components/policy/resources/policy_templates_ml.xtb
@@ -892,11 +892,6 @@
 <translation id="4039085364173654945">ഒരു പേജിലെ മൂന്നാം-കക്ഷി ഉപ-ഉള്ളടക്കത്തിനെ ഒരു HTTP അധിഷ്‌ഠിത ഓത്ത് ഡയലോഗ് ബോക്‌സ് പോപ്പ് അപ്പ് ചെയ്യാൻ അനുവദിച്ചിട്ടുണ്ടോ എന്നത് നിയന്ത്രിക്കുന്നു.
 
           സ്വതവേ ഇത് ഒരു ഫിഷിംഗ് സുരക്ഷയുടെ ഭാഗമായി അപ്രാപ്‌തമാക്കിയതാണ്. ഈ നയം സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിൽ, ഇത് അപ്രാപ്‌തമാകുകയും മൂന്നാം-കക്ഷി ഉപ-ഉള്ളടക്കത്തിനെ ഒരു HTTP അധിഷ്‌ഠിത ഓത്ത് ഡയലോഗ് ബോക്‌സ് പോപ്പ് അപ്പ് ചെയ്യാൻ അനുവദിക്കുകയും ചെയ്യുന്നതല്ല.</translation>
-<translation id="4052765007567912447">പാസ്‌വേഡ് മാനേജറിൽ ഉപയോക്താവ് വ്യക്തമായ വാചകത്തിൽ പാസ്‌വേഡുകൾ പ്രദർശിപ്പിക്കേണ്ടതുണ്ടോ എന്നത് നിയന്ത്രിക്കുന്നു.
-
-          നിങ്ങൾ ഈ ക്രമീകരണം അപ്രാപ്‌തമാക്കിയിട്ടുണ്ടെങ്കിൽ, പാസ്‌വേഡ് മാനേജർ വിൻഡോയിൽ സംഭരിച്ചിട്ടുള്ള പാസ്‌വേഡുകൾ വ്യക്തമായ വാചകത്തിൽ പ്രദർശിപ്പിക്കാൻ പാസ്‌വേഡ് മാനേജർ അനുവദിക്കുകയില്ല.
-
-          നിങ്ങൾ ഈ ക്രമീകരണം പ്രാപ്‌തമാക്കിയിട്ടുണ്ടെങ്കിലോ ഈ നയം സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിലോ, ഉപയോക്താവിന് അവരുടെ പാസ്‌വേഡുകൾ വ്യക്തമായ വാചകത്തിൽ അവരുടെ പാസ്‌വേഡ് മാനേജറിൽ കാണാൻ കഴിയുന്നതാണ്.</translation>
 <translation id="4056910949759281379">SPDY പ്രോട്ടോക്കോള്‍ അപ്രാപ്തമാക്കുക</translation>
 <translation id="4088589230932595924">ആൾമാറാട്ട മോഡ് നിർബന്ധിതമാക്കി</translation>
 <translation id="4088983553732356374">പ്രാദേശിക ഡാറ്റ സജ്ജമാക്കാൻ വെബ്‌സൈറ്റുകളെ അനുവദിക്കണോയെന്ന് സജ്ജമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. പ്രാദേശിക ഡാറ്റ സജ്ജമാക്കുന്നത് ഒന്നുകിൽ എല്ലാ വെബ്‌സൈറ്റുകൾക്കായും അനുവദിച്ചിട്ടുണ്ടായിരിക്കാം അല്ലെങ്കിൽ എല്ലാ വെബ്‌സൈറ്റുകൾക്കുമായി നിരസിച്ചിരിക്കാം.
@@ -1301,7 +1296,6 @@
       വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ, വേരിയേഷനുകൾ സീഡ് ലഭ്യമാക്കുന്നതിന് ഉപയോഗിച്ച URL-ലേക്ക് 'നിയന്ത്രിക്കുക' എന്ന അന്വേഷണ പാരാമീറ്റർ ചേർക്കും. പാരാമീറ്ററിന്റെ മൂല്യം ഈ നയത്തിൽ വ്യക്തമാക്കിയിട്ടുള്ള മൂല്യമായിരിക്കും.
  
       വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, വേരിയേഷനുകൾ സീഡ് URL പരിഷ്‌ക്കരിക്കില്ല.</translation>
-<translation id="5564962323737505851">പാസ്‌വേഡ് മാനേജര്‍ കോണ്‍ഫിഗര്‍ ചെയ്യുന്നു. പാസ്‌വേഡ് മാനേജര്‍ പ്രാപ്തമാക്കിയാല്‍, സംഭരിക്കപ്പെട്ടിട്ടുള്ള പാസ്‌വേഡുകള്‍ ക്ലിയര്‍ ടെക്സ്റ്റായി ഉപയോക്താവിന്‌ കാണിക്കാമോ വേണ്ടയോ എന്ന് പ്രാപ്തമാക്കാനും അല്ലെങ്കില്‍ അപ്രാപ്തമാക്കാനും തെരഞ്ഞെടുക്കാന്‍ നിങ്ങള്‍ക്ക് കഴിയും.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> ഷെൽഫിന്റെ യാന്ത്രിക മറയ്‌ക്കൽ നിയന്ത്രിക്കുക.
 
       ഈ നയം 'AlwaysAutoHideShelf' എന്ന് സജ്ജമാക്കിയാൽ എല്ലായ്‌പ്പോഴും ഷെൽഫ് യാന്ത്രികമായി മറയ്‌ക്കും.
@@ -1414,7 +1408,6 @@
 <translation id="5893553533827140852">ഈ ക്രമീകരണം പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുകയാണെങ്കിൽ, ഒരു വിദൂര ഹോസ്‌റ്റ് കണക്ഷനിലുടനീളം നുബ്ബി പ്രമാണീകരണ അഭ്യർത്ഥനകൾ അംഗീകരിക്കപ്പെടും.
 
           ഈ ക്രമീകരണം പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിലോ കോൺഫിഗർചെയ്‌തിട്ടില്ലെങ്കിലോ, നുബ്ബി പ്രമാണീകരണ അഭ്യർത്ഥനകൾ അംഗീകരിക്കപ്പെടില്ല.</translation>
-<translation id="5912364507361265851">പാസ്‌വേഡ് മാനേജരില്‍ പാസ്‌വേഡുകള്‍ കാണിക്കാന്‍ ഉപയോക്താക്കളെ അനുവദിക്കുക</translation>
 <translation id="5921713479449475707">HTTP മുഖേന യാന്ത്രിക അപ്‌ഡേറ്റ് ഡൗൺലോഡുകൾ അനുവദിക്കുക</translation>
 <translation id="5921888683953999946">ലോഗിൻ സ്‌ക്രീനിൽ വലിയ കഴ്‌സറിന്റെ പ്രവേശനക്ഷമത സവിശേഷതയുടെ സ്ഥിര അവസ്ഥ സജ്ജമാക്കുക.
 
@@ -2054,6 +2047,7 @@
 <translation id="7882585827992171421">ഈ നയം റീട്ടെയ്ൽ മോഡിൽ മാത്രം സജീവമാണ്.
 
       സൈൻ-ഇൻ സ്‌ക്രീനിൽ ഒരു സ്‌ക്രീൻ സേവർ ആയി ഉപയോഗിക്കുന്ന വിപുലീകരണത്തിന്റെ ഐഡി നിർണ്ണയിക്കുന്നു. വിപുലീകരണം, AppPacks നയം മുഖേന ഈ ഡൊമെയ്‌നിനായി കോൺഫിഗർ ചെയ്‌തിരിക്കുന്ന AppPack-ന്റെ ഭാഗമായിരിക്കണം.</translation>
+<translation id="7882890448959833986">പിന്തുണയ്‌ക്കാത്ത OS മുന്നറിയിപ്പ് നിയന്ത്രിക്കുക</translation>
 <translation id="7912255076272890813">അനുവദിച്ച അപ്ലിക്കേഷൻ/വിപുലീകരണ തരങ്ങൾ കോൺഫിഗർ ചെയ്യുക</translation>
 <translation id="793134539373873765">OS അപ്‌ഡേറ്റ് പേലോഡുകൾക്ക് p2p ഉപയോഗിക്കണോ എന്നത് വ്യക്തമാക്കുന്നു. True എന്നതായി സജ്ജമാക്കുകയാണെങ്കിൽ, ഉപകരണങ്ങൾ LAN-ൽ അപ്‌ഡേറ്റ് പേലോഡുകൾ പങ്കിടുകയും അവ ഉപയോഗിക്കാൻ ശ്രമിക്കുകയും ചെയ്യും, ഇത് ഇന്റർനെറ്റ് ബാൻഡ്‌വിഡ്ത്ത് ഉപയോഗവും തിരക്കും കുറയ്ക്കുകയും ചെയ്യുന്നു. LAN-ൽ അപ്‌ഡേറ്റ് പേലോഡുകൾ ലഭ്യമല്ലെങ്കിൽ, ഒരു അപ്‌ഡേറ്റ് സെർവറിൽ നിന്ന് ഡൗൺലോഡുചെയ്യുന്നതിലേക്ക് ഉപകരണം തിരികെ ഉപയോഗിക്കപ്പെടും. False എന്നതായി സജ്ജമാക്കിയിട്ടുണ്ടെങ്കിലോ കോൺഫിഗർ ചെയ്‌തിട്ടില്ലെങ്കിലോ, p2p ഉപയോഗിക്കപ്പെടില്ല.</translation>
 <translation id="7933141401888114454">സൂപ്പർവൈസുചെയ്‌ത ഉപയോക്താക്കളെ സൃഷ്‌ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക</translation>
@@ -2116,6 +2110,7 @@
 
       നയം തെറ്റ് എന്നതായി സജ്ജമാക്കുകയാണെങ്കിൽ, ഇന്റർഫേസ് ലിസ്റ്റ് റിപ്പോർട്ടുചെയ്യില്ല.</translation>
 <translation id="8146727383888924340">Chrome OS രജിസ്‌ട്രേഷനിലൂടെ ഓഫറുകൾ വീണ്ടെടുക്കാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക</translation>
+<translation id="8148785525797916822">തുടർന്ന്, ഒരു കമ്പ്യൂട്ടറിലോ പിന്തുണയ്‌ക്കാത്ത ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിലോ <ph name="PRODUCT_NAME" /> റൺ ചെയ്യുമ്പോൾ കാണിക്കുന്ന മുന്നറിയിപ്പിനെ നിയന്ത്രിക്കുന്നു.</translation>
 <translation id="8148901634826284024">ഉയർന്ന ദൃശ്യ തീവ്രത മോഡ് പ്രവേശനക്ഷമത സവിശേഷത പ്രവർത്തനക്ഷമമാക്കുക.
 
           ഈ നയം true എന്നതായി സജ്ജമാക്കുകയാണെങ്കിൽ, ഉയർന്ന ദൃശ്യ തീവ്രത മോഡ് എല്ലായ്‌പ്പോഴും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കും.
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb
index 9ae5030..34a5591 100644
--- a/components/policy/resources/policy_templates_mr.xtb
+++ b/components/policy/resources/policy_templates_mr.xtb
@@ -878,9 +878,6 @@
 <translation id="4039085364173654945">पृष्‍ठावरील तृतीय-पक्ष उप-सामग्रीस HTTP मूलभूत प्रमाणिकरण संवाद बॉक्स पॉप-अपची अनुमती आहे की नाही ते नियंत्रित करते.
 
           फिशींग संरक्षण म्हणून हे सहसा अक्षम केले जाते. हे धोरण सेट न केल्यास, हे अक्षम केले जाते आणि तृतीय-पक्ष उप-सामग्रीस HTTP मूलभूत प्रमाणिकरण संवाद बॉक्स टाकण्‍यास अनुमती दिली जाणार नाही.</translation>
-<translation id="4052765007567912447">वापरकर्ता संकेतशब्द व्यवस्‍थापकात सुस्पष्‍ट मजकूरात संकेतशब्द दर्शवू शकतो काय ते नियंत्रित करते.
-आपण हे सेटिंग अक्षम केल्यास, संकेतशब्द व्यवस्‍थापक विंडोमध्‍ये संकेतशब्द व्यवस्‍थापक संचय केलेले संकेतशब्द दर्शविण्‍याची अनुमती देत नाही.
-आपण हे धोरण सक्षम केल्यास किंवा सेट न केल्यास, वापरकर्त्यांना संकेतशब्द व्यवस्‍थापकात त्यांचे संकेतशब्द सुस्पष्‍ट मजकूरात पहाता येतील.</translation>
 <translation id="4056910949759281379">SPDY प्रोटोकॉल अक्षम करा</translation>
 <translation id="4088589230932595924">गुप्त मोडची सक्ती</translation>
 <translation id="4088983553732356374">वेबसाइटना स्थानिक डेटा सेट करण्याची अनुमती आहे किंवा नाही ते सेट करण्‍याची आपल्‍याला अनुमती देते. सर्व वेबसाइटना एकतर स्थानिक डेटा सेट करण्याची अनुमती असू शकते किंवा सर्व वेबसाइटना अनुमती नाकारली जाऊ शकते.
@@ -1278,7 +1275,6 @@
       निर्दिष्ट केल्यास, व्हेरिएशन सीड आणण्यासाठी वापरलेल्या URL वर 'प्रतिबंध' म्हटला जाणारा एक क्वेरी मापदंड जोडला जाईल. मापदंडाचे मूल्य या धोरणामध्ये निर्दिष्ट केलेले मूल्य असेल.
 
       निर्दिष्ट न केल्यास, व्हेरिएशन सीड URL सुधारित होणार नाही.</translation>
-<translation id="5564962323737505851">संकेतशब्द व्यवस्थापक कॉन्फिगर करते. संकेतशब्द व्यवस्थापक सक्षम केलेले असल्यास, वापरकर्ता स्पष्ट मजकूरात संचय केलेले संकेतशब्द दर्शवू शकतो की नाही हे सक्षम करणे किंवा अक्षम करणे आपण निवडू शकता.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> शेल्फचे स्वयं-लपविणे नियंत्रित करा.
 
       हे धोरण 'AlwaysAutoHideShelf' वर सेट केल्यास, शेल्फ नेहमी स्वयं-लपविले जाईल.
@@ -1386,7 +1382,6 @@
 <translation id="5893553533827140852">हे सेटिंग सक्षम असल्यास, दूरस्थ होस्ट कनेक्शनवर gnubby प्रमाणीकरण विनंत्या प्रॉक्सी केल्या जातील.
 
           हे सेटिंग अक्षम असल्यास किंवा कॉन्फिगर न केल्यास, gnubby प्रमाणीकरण विनंत्या प्रॉक्सी केल्या जाणार नाहीत.</translation>
-<translation id="5912364507361265851">संकेतशब्द व्यवस्थापक मध्ये संकेतशब्द दर्शवण्यास वापरकर्त्यांना परवानगी द्या</translation>
 <translation id="5921713479449475707">HTTP द्वारे स्वयंअद्यतन डाउनलोडला अनुमती द्या</translation>
 <translation id="5921888683953999946">लॉगिन स्क्रीनवरील मोठा कर्सर प्रवेशयोग्यता वैशिष्ट्याची डीफॉल्ट स्थिती सेट करा.
 
@@ -1811,9 +1806,9 @@
 <translation id="7207095846245296855">Google सुरक्षितशोध ला सक्ती करा</translation>
 <translation id="7213425178181578730">हे धोरण असत्यावर सेट असल्यास, <ph name="PRODUCT_OS_NAME" /> Bluetooth अक्षम करेल आणि वापरकर्ता ते परत सक्षम करू शकत नाही.
 
-      हे धोरण सत्यावर सेट असल्यास किंवा अनसेट सोडले असल्यास, वापरकर्ता त्याच्या इच्छेनुसार Bluetooth सक्षम किंवा अक्षम करण्यास सक्षम असेल.
+      हे धोरण सत्यावर सेट असल्यास किंवा सेट न करता सोडले असल्यास, वापरकर्ता त्याच्या इच्छेनुसार Bluetooth सक्षम किंवा अक्षम करण्यास सक्षम असेल.
 
-      हे धोरण सेट केले असल्यास, वापरकर्ता ते बदलू किंवा अधिलिखीत करू शकत नाही.</translation>
+      हे धोरण सेट केले असल्यास, वापरकर्ता ते बदलू किंवा अधिशून्य करू शकत नाही.</translation>
 <translation id="7216442368414164495">सुरक्षित ब्राउझिंग विस्तारित अहवालाची निवड करण्‍याची अनुमती द्या</translation>
 <translation id="7227967227357489766">डिव्हाइसवर लॉगिन करण्‍याची अनुमती असलेल्या वापरकर्त्यांची सूची परिभाषित करते. प्रविष्ट्या <ph name="USER_WHITELIST_ENTRY_FORMAT" /> फॉर्म असतात, जसे की <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />. डोमेनवर मध्‍यस्थ वापरकर्त्यांना अनुमती देण्‍यासाठी <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> फॉर्ममधील प्रविष्ट्या वापरा.
 
@@ -1994,6 +1989,7 @@
 <translation id="7882585827992171421">हे धोरण केवळ किरकोळ मोडमध्‍ये सक्रिय आहे.
 
       साइन-इन स्क्रीनवर स्क्रीन सेव्हर म्हणून वापरल्या जाणार्‍या विस्ताराचा id निर्धारित करते. विस्तार DeviceAppPack धोरणाद्वारे या डोमेनसाठी कॉन्फिगर केलेल्या AppPack चा भाग असणे आवश्यक आहे.</translation>
+<translation id="7882890448959833986">असमर्थित OS चेेतावणी दर्शवू नका</translation>
 <translation id="7912255076272890813">अनुमत अ‍ॅप/विस्तार प्रकार कॉन्फिगर करा</translation>
 <translation id="793134539373873765">जरी p2p हे OS अद्यतन अभिभारासाठी वापरले जाणार असले किंवा नसले तरीही ते निर्दिष्ट करते. सत्य वर सेट केल्यास, डिव्हाइस संभाव्यतः इंटरनेट बँडविड्थ वापर आणि संचय कमी करून, LAN वरील अद्यतन अभिभार वापरण्यासाठी शेअर करेल आणि प्रयत्न करेल. LAN वर अद्यतन अभिभार उपलब्ध नसल्यास, अद्यतन सर्व्हरवरून डाउनलोड करण्यात डिव्हाइस मागे पडेल. असत्य वर किंवा कॉन्फिगर न केलेल्यावर सेट केल्यास, p2p वापरले जाणार नाही.</translation>
 <translation id="7933141401888114454">पर्यवेक्षी वापरकर्त्यांची निर्मिती सक्षम करा</translation>
@@ -2055,6 +2051,7 @@
 
       धोरण असत्य वर सेट केले असल्यास, इंटरफेस सूचीचा अहवाल दिला जाणार नाही.</translation>
 <translation id="8146727383888924340">Chrome OS नोंदणी द्वारा ऑफरची पूर्तता करण्यास वापरकर्त्यांना अनुमती द्या</translation>
+<translation id="8148785525797916822">यापुढे समर्थित नसलेल्या संगणकावर किंवा ऑपरेटिंग सिस्टीमवर <ph name="PRODUCT_NAME" /> चालू असते तेव्हा दिसणारी चेतावणी दर्शवित नाही.</translation>
 <translation id="8148901634826284024">उच्च तीव्रता मोड प्रवेशयोग्यता वैशिष्ट्य सक्षम करा.
 
           हे धोरण सत्य वर सेट असल्यास, उच्च तीव्रता मोड नेहमी सक्षम राहील.
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb
index 0a24c51..3b1f2f4d 100644
--- a/components/policy/resources/policy_templates_ms.xtb
+++ b/components/policy/resources/policy_templates_ms.xtb
@@ -890,11 +890,6 @@
 <translation id="4039085364173654945">Mengawal sama ada kandungan kecil pihak ketiga pada halaman dibenarkan untuk menimbulkan kotak dialog Pengesahan Asas HTTP.
 
           Biasanya perkara ini dilumpuhkan sebagai perlindungan daripada pemancingan data. Jika dasar ini tidak ditetapkan, tetapan ini dilumpuhkan dan kandungan kecil pihak ketiga tidak akan dibenarkan untuk menimbulkan kotak dialog Pengesahan Asas HTTP.</translation>
-<translation id="4052765007567912447">Mengawal sama ada pengguna boleh memaparkan kata laluan menggunakan teks jelas dalam pengurus kata laluan.
-
-          Jika anda melumpuhkan tetapan ini, pengurus kata laluan tidak membenarkan pemaparan kata laluan yang disimpan menggunakan teks jelas dalam tetingkap pengurus kata laluan.
-
-          Jika anda mendayakan atau tidak menetapkan dasar ini, pengguna boleh melihat kata laluan mereka dalam teks jelas dalam pengurus kata laluan.</translation>
 <translation id="4056910949759281379">Lumpuhkan protokol SPDY</translation>
 <translation id="4088589230932595924">Mod Inkognito dipaksa</translation>
 <translation id="4088983553732356374">Membenarkan anda menetapkan sama ada tapak web dibenarkan untuk menetapkan data setempat. Penetapan data setempat boleh dibenarkan untuk semua tapak web atau dinafikan untuk semua tapak web.
@@ -1297,7 +1292,6 @@
       Jika ditetapkan, parameter pertanyaan yang dipanggil 'hadkan' akan ditambahkan kepada URL yang digunakan untuk mengambil benih Variasi. Nilai yang dinyatakan dalam dasar ini akan menjadi nilai parameter.
 
       Jika tidak ditetapkan, URL benih Variasi tidak akan diubah suai.</translation>
-<translation id="5564962323737505851">Mengkonfigurasi pengurus kata laluan. Jika pengurus kata laluan didayakan, maka anda boleh memilih untuk mendayakan atau melumpuhkan sama ada pengguna boleh menunjukkan kata laluan yang disimpan dalam teks yang jelas.</translation>
 <translation id="556941986578702361">Mengawal penyembunyian automatik rak <ph name="PRODUCT_OS_NAME" />.
 
       Jika dasar ini ditetapkan kepada 'AlwaysAutoHideShelf', rak akan sentiasa disembunyikan secara automatik.
@@ -1408,7 +1402,6 @@
 <translation id="5893553533827140852">Jika tetapan ini didayakan, maka permintaan pengesahan gnubby akan diproksikan merentas sambungan hos jauh.
 
           Jika tetapan ini dilumpuhkan atau tidak dikonfigurasikan, permintaan pengesahan gnubby tidak akan diproksikan.</translation>
-<translation id="5912364507361265851">Benarkan pengguna menunjukkan kata laluan dalam Pengurus Kata Laluan</translation>
 <translation id="5921713479449475707">Benarkan muat turun auto kemas kini melalui HTTP</translation>
 <translation id="5921888683953999946">Tetapkan keadaan lalai ciri kebolehcapaian kursor besar pada skrin log masuk. 
 
@@ -2044,6 +2037,7 @@
 <translation id="7882585827992171421">Dasar ini aktif dalam mod runcit sahaja.
 
       Menentukan id sambungan untuk digunakan sebagai penyelamat skrin pada skrin log masuk. Sambungan mestilah sebahagian daripada AppPack yang dikonfigurasikan untuk domain ini melalui dasar DeviceAppPack.</translation>
+<translation id="7882890448959833986">Sekat amaran OS yang tidak disokong</translation>
 <translation id="7912255076272890813">Konfigurasi jenis apl/sambungan yang dibenarkan</translation>
 <translation id="793134539373873765">Menentukan sama ada p2p akan digunakan untuk beban bayar kemas kini OS. Jika ditetapkan kepada Benar, peranti akan berkongsi dan cuba menggunakan beban bayar kemas kini pada LAN, berkemungkinan mengurangkan penggunaan dan kesesakan lebar jalur Internet. Jika beban bayar kemas kini tidak tersedia pada LAN, peranti ini akan kembali kepada memuat turun dari pelayan kemas kini. Jika ditetapkan kepada Palsu atau tidak dikonfigurasi, p2p tidak akan digunakan.</translation>
 <translation id="7933141401888114454">Dayakan penghasilan pengguna di bawah seliaan</translation>
@@ -2106,6 +2100,7 @@
 
       Jika dasar ditetapkan sebagai tidak benar, senarai antara muka tidak akan dilaporkan.</translation>
 <translation id="8146727383888924340">Benarkan pengguna menebus tawaran melalui Pendaftaran OS Chrome</translation>
+<translation id="8148785525797916822">Menyekat amaran yang dipaparkan semasa <ph name="PRODUCT_NAME" /> dijalankan pada komputer atau sistem pengendalian yang tidak disokong lagi.</translation>
 <translation id="8148901634826284024">Dayakan ciri kebolehcapaian mod kontras tinggi.
 
           Jika dasar ini ditetapkan kepada benar, mod kontras tinggi akan sentiasa didayakan.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 5e977e5..a0247b8 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -882,11 +882,6 @@
 <translation id="4039085364173654945">Hiermee wordt bepaald of subinhoud van derden op een pagina een dialoogvenster voor algemene HTTP-authenticatie als pop-up mag weergeven.
 
           Deze optie is meestal uitgeschakeld als beveiliging tegen phishing. Als dit beleid niet wordt ingesteld, wordt de optie uitgeschakeld en mag subinhoud van derden geen dialoogvenster voor algemene HTTP-authenticatie als pop-up weergeven.</translation>
-<translation id="4052765007567912447">Hiermee wordt bepaald of de gebruiker wachtwoorden als leesbare tekst mag weergeven in Wachtwoordbeheer.
-
-          Als je deze instelling uitschakelt, staat Wachtwoordbeheer de gebruiker niet toe opgeslagen wachtwoorden als leesbare tekst weer te geven in het venster van Wachtwoordbeheer.
-
-          Als je deze instelling inschakelt of niet configureert, kunnen gebruikers hun wachtwoorden als leesbare tekst bekijken in Wachtwoordbeheer.</translation>
 <translation id="4056910949759281379">SPDY-protocol uitschakelen</translation>
 <translation id="4088589230932595924">Incognitomodus afgedwongen</translation>
 <translation id="4088983553732356374">Hiermee kun je instellen of websites lokaal gegevens mogen instellen. Het instellen van lokale gegevens kan worden toegestaan voor alle websites of worden geweigerd voor alle websites.
@@ -1285,7 +1280,6 @@
       Als dit is gespecificeerd, wordt een queryparameter met de naam 'restrict' toegevoegd aan de URL die wordt gebruikt om de seed voor varianten op te halen. De waarde van de parameter is de waarde die wordt opgegeven in dit beleid.
 
       Als dit niet is gespecificeerd, wordt de URL voor de seed voor varianten niet aangepast.</translation>
-<translation id="5564962323737505851">Hiermee wordt Wachtwoordbeheer geconfigureerd. Als Wachtwoordbeheer is ingeschakeld, kun je specificeren of de gebruiker opgeslagen wachtwoorden als leesbare tekst mag weergeven.</translation>
 <translation id="556941986578702361">Het automatisch verbergen van het <ph name="PRODUCT_OS_NAME" />-archief beheren.
 
       Als dit beleid is ingesteld op 'AlwaysAutoHideShelf', wordt het archief altijd automatisch verborgen.
@@ -1397,7 +1391,6 @@
 <translation id="5893553533827140852">Als deze instelling is ingeschakeld, worden gnubby-verificatieverzoeken verzonden via een proxy met een externe hostverbinding.
 
           Als deze instelling uitgeschakeld of niet geconfigureerd is, worden gnubby-verificatieverzoeken niet via een proxy verzonden.</translation>
-<translation id="5912364507361265851">Gebruikers toestaan wachtwoorden weer te geven in Wachtwoordbeheer</translation>
 <translation id="5921713479449475707">Downloads voor automatische updates via HTTP toestaan</translation>
 <translation id="5921888683953999946">De standaardstatus van de toegankelijkheidsfunctie 'Grote muisaanwijzer' op het inlogscherm instellen.
 
@@ -2026,6 +2019,7 @@
 <translation id="7882585827992171421">Dit beleid is alleen actief in de commerciële modus.
 
       Hiermee bepaal je de ID van de extensie die moet worden gebruikt als schermbeveiliging voor het inlogvenster. De extensie moet onderdeel zijn van het AppPack dat is geconfigureerd voor dit domein via het beleid DeviceAppPack.</translation>
+<translation id="7882890448959833986">De waarschuwing voor een niet-ondersteund besturingssysteem negeren</translation>
 <translation id="7912255076272890813">Toegestane typen apps/extensies configureren</translation>
 <translation id="793134539373873765">Specificeert of p2p wordt gebruikt voor netto-updateladingen voor het besturingssysteem. Als dit is ingesteld op 'Waar', proberen apparaten netto-updateladingen (payloads) op te halen via het LAN, waardoor bandbreedtegebruik en vertraging kunnen worden verminderd. Als de netto-updatelading niet beschikbaar is via het LAN, gaat het apparaat over tot downloaden via een updateserver. Als deze instelling is ingesteld op 'Niet waar' of niet is geconfigureerd, wordt 2p2 niet gebruikt.</translation>
 <translation id="7933141401888114454">Maken van bewaakte gebruikers inschakelen</translation>
@@ -2088,6 +2082,7 @@
 
       Als het beleid is ingesteld op 'onwaar' (false), wordt de interfacelijst niet gerapporteerd.</translation>
 <translation id="8146727383888924340">Gebruikers toestaan aanbiedingen in te wisselen via registratie van Chrome OS</translation>
+<translation id="8148785525797916822">Hiermee wordt de waarschuwing genegeerd die wordt weergegeven wanneer <ph name="PRODUCT_NAME" /> wordt uitgevoerd op een computer die of besturingssysteem dat niet meer wordt ondersteund.</translation>
 <translation id="8148901634826284024">De toegankelijkheidsfunctie Modus voor hoog contrast inschakelen.
 
           Als dit beleid op 'waar' is ingesteld, is de modus voor hoog contrast altijd ingeschakeld.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb
index 964313cf..d8a2dac 100644
--- a/components/policy/resources/policy_templates_no.xtb
+++ b/components/policy/resources/policy_templates_no.xtb
@@ -15,12 +15,12 @@
       Hvis den settes til «true» (sann) eller ikke angis, rapporteres statistikken.</translation>
 <translation id="1046484220783400299">Slå på avviklede nettplattformfunksjoner for en begrenset periode</translation>
 <translation id="1047128214168693844">Ikke la noen nettsteder spore brukernes fysiske plassering</translation>
-<translation id="1057535219415338480">Aktiverer nettverksforslag i <ph name="PRODUCT_NAME" /> og hindrer brukerne i å endre denne innstillingen.
+<translation id="1057535219415338480">Slår på nettverksforutsigelse i <ph name="PRODUCT_NAME" /> og hindrer brukerne i å endre denne innstillingen.
 
       Dette kontrollerer både DNS-forhåndshenting og TCP- samt SSl-forhåndstilkobling og forhåndsgjengivelse av nettsteder. Navnet på retningslinjene viser til DNS-forhåndshenting av historiske grunner.
-      Hvis du aktiverer eller deaktiverer denne innstillingen, kan ikke brukerne endre eller overstyre denne innstillingen i <ph name="PRODUCT_NAME" />.
+      Hvis du slår denne innstillingen på eller av, kan ikke brukerne endre eller overstyre den i <ph name="PRODUCT_NAME" />.
 
-      Hvis denne retningslinjen ikke angis, aktiveres dette, men brukeren kan endre på det.</translation>
+      Hvis denne regelen ikke angis, kommer den til å være på, men brukeren kan velge å slå den av.</translation>
 <translation id="1062011392452772310">Slå på ekstern attestasjon for enheten</translation>
 <translation id="108735515923160176">Konfigurerer typen standardstartside i <ph name="PRODUCT_NAME" /> og hindrer brukerne i å endre startsideinnstillingene. Du kan velge mellom å spesifisere en hvilken som helst nettadresse som startside og å bruke Ny fane-siden.
 
@@ -699,7 +699,7 @@
 <translation id="3417418267404583991">Hvis denne retningslinjen er angitt som Sann eller ikke er konfigurert, aktiverer <ph name="PRODUCT_OS_NAME" /> gjestepålogging. Gjestepålogginger er anonyme brukerøkter og krever ikke passord.
 
       Hvis denne retningslinjen er angitt som Usann, tillater ikke <ph name="PRODUCT_OS_NAME" /> at gjesteøkter startes.</translation>
-<translation id="3428247105888806363">Aktivering av nettverksforslag.</translation>
+<translation id="3428247105888806363">Slå på nettverksforutsigelse</translation>
 <translation id="3460784402832014830">Spesifiserer nettadressen som søkemotoren bruker for å levere en ny fane-side.
 
           Denne innstillingen er valgfri. Hvis den ikke angis, leveres ingen nye fane-side.
@@ -846,7 +846,6 @@
 <translation id="4039085364173654945">Kontrollerer om tredjeparts underinnhold på en side kan åpne en HTTP Basic Auth-dialogrute som forgrunnsvindu.
 
           Dette deaktiveres vanligvis for å beskytte seg mot nettfisking. Hvis denne retningslinjen ikke er angitt, er den deaktivert, og tredjeparts underinnhold kan ikke åpne en HTTP Basic Auth-dialogrute som forgrunnsvindu.</translation>
-<translation id="4052765007567912447">Kontrollerer om brukeren kan vise passord i klartekst i passordbehandlingen. Hvis du deaktiverer denne innstillingen, tillater ikke passordbehandlingen at lagrede passord vises i klartekst i vinduet til passordbehandlingen. Hvis du aktiverer eller ikke angir denne retningslinjen, kan brukerne se passordene i klartekst i passordbehandlingen.</translation>
 <translation id="4056910949759281379">Deaktiver SPDY-protokoll</translation>
 <translation id="4088589230932595924">Tvungen inkognitomodus</translation>
 <translation id="4088983553732356374">Gjør det mulig å velge om nettsteder kan angi lokale data. Dette kan enten tillates for alle nettsteder eller blokkeres for alle nettsteder.
@@ -1239,7 +1238,6 @@
       Hvis angitt, legges et parameter kalt «begrenset» til nettadressen som brukes til å hente startverdien for variasjonene. Verdien av parameteret er verdien angitt i denne innstillingen.
 
       Hvis ikke angitt, endres ikke nettadressen for startverdien.</translation>
-<translation id="5564962323737505851">Konfigurerer passordbehandling. Hvis passordbehandling er aktivert, kan du velge å aktivere eller deaktivere hvorvidt brukeren kan vise lagrede passord i klartekst.</translation>
 <translation id="556941986578702361">Kontroller automatisk skjuling av <ph name="PRODUCT_OS_NAME" />-hyllen.
 
       Hvis denne innstillingen angis til «AlwaysAutoHideShelf'», skjules alltid hyllen automatisk.
@@ -1350,7 +1348,6 @@
 <translation id="5893553533827140852">Hvis denne innstillingen er aktivert sendes gnubby-godkjenningsforespørsler via en proxy-tjener på en ekstern tjenertilkobling.
 
           Hvis denne innstillingen ikke er aktivert sendes ikke gnubby-godkjenningsforespørsler via en proxy-tjener.</translation>
-<translation id="5912364507361265851">Tillat brukere å vise passord i passordbehandling</translation>
 <translation id="5921713479449475707">Tillat automatisk oppdatering av nedlastinger via HTTP</translation>
 <translation id="5921888683953999946">Angi standardtilstand for den store musepekerens tilgjengelighet på påloggingssiden.
 
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb
index a9250360c..c815b90 100644
--- a/components/policy/resources/policy_templates_pl.xtb
+++ b/components/policy/resources/policy_templates_pl.xtb
@@ -790,7 +790,6 @@
 <translation id="4039085364173654945">Określa, czy umieszczona na stronie treść dodatkowa innej firmy może wyświetlać okno dialogowe z podstawowym uwierzytelnianiem HTTP. 
 
 Zwykle ta zasada jest wyłączona w celu ochrony przed phishingiem. W przypadku nieskonfigurowania zasady ustawienie jest wyłączone i treść dodatkowa innej firmy nie może wyświetlać okna dialogowego z podstawowym uwierzytelnianiem HTTP.</translation>
-<translation id="4052765007567912447">Pozwala określić, czy użytkownik może wyświetlać tekst haseł w menedżerze haseł. Jeśli wyłączysz to ustawienie, w oknie menedżera haseł nie będzie można wyświetlać tekstu przechowywanych haseł. W przypadku włączenia lub nieskonfigurowania tej zasady użytkownicy będą mogli wyświetlać tekst haseł w menedżerze haseł.</translation>
 <translation id="4056910949759281379">Wyłącz protokół SPDY</translation>
 <translation id="4088589230932595924">Tryb incognito wymuszany</translation>
 <translation id="4088983553732356374">Pozwala określić, czy witryny mogą tworzyć dane lokalne. Może to być dozwolone lub zabronione dla wszystkich witryn.
@@ -1144,7 +1143,6 @@
       Ustawienie tej zasady powoduje dodanie parametru „restrict” do URL-a używanego do pobierania odmiany. Wartość parametru będzie taka sama jak wartość określona w tej zasadzie.
 
       Jeśli zasada nie zostanie określona, nie będzie modyfikować URL-a odmian.</translation>
-<translation id="5564962323737505851">Pozwala skonfigurować menedżera haseł. Po włączeniu menedżera haseł możesz włączyć lub wyłączyć opcję umożliwiającą użytkownikowi wyświetlenie tekstu zapisanych haseł.</translation>
 <translation id="556941986578702361">Steruje autoukrywaniem półki <ph name="PRODUCT_OS_NAME" />.
 
       W przypadku ustawienia wartości „AlwaysAutoHideShelf” półka zawsze będzie ukrywana automatycznie.
@@ -1249,7 +1247,6 @@
 <translation id="5893553533827140852">Jeśli włączysz to ustawienie, żądania uwierzytelniania Gnubby będą przesyłane przez serwer proxy podczas zdalnego połączenia z hostem.
 
           Jeśli wyłączysz to ustawienie lub go nie skonfigurujesz, żądania uwierzytelniania Gnubby nie będą przesyłane przez serwer proxy.</translation>
-<translation id="5912364507361265851">Zezwalaj użytkownikom na pokazywanie haseł w menedżerze haseł</translation>
 <translation id="5921713479449475707">Zezwalaj na pobieranie aktualizacji automatycznych przez HTTP</translation>
 <translation id="5921888683953999946">Ustawia domyślny stan funkcji ułatwień dostępu w postaci dużego kursora na ekranie logowania.
 
@@ -1799,6 +1796,7 @@
 <translation id="7882585827992171421">Ta zasada jest aktywna tylko w trybie sklepu.
 
       Określa identyfikator rozszerzenia używanego jako wygaszacz ekranu na ekranie logowania. Rozszerzenie musi być częścią pakietu aplikacji skonfigurowanego dla tej domeny przez zasadę DeviceAppPack.</translation>
+<translation id="7882890448959833986">Ukryj ostrzeżenie o nieobsługiwanym systemie operacyjnym</translation>
 <translation id="7912255076272890813">Skonfiguruj dozwolone typy aplikacji/rozszerzeń</translation>
 <translation id="793134539373873765">Określa, czy do pobierania aktualizacji systemu operacyjnego ma być używana sieć P2P. Jeśli w tej opcji ustawisz wartość Prawda, urządzenia będą dzieliły aktualizacje w sieci LAN i próbowały pobierać je z tej sieci, co może zmniejszyć wykorzystanie i obciążenie łącza internetowego. Jeśli aktualizacje nie będą dostępne w sieci LAN, urządzenie przełączy się na pobieranie aktualizacji z serwera. Jeśli ustawisz w tej opcji wartość Fałsz, sieć P2P nie będzie używana.</translation>
 <translation id="7933141401888114454">Włącz tworzenie użytkowników nadzorowanych</translation>
@@ -1856,6 +1854,7 @@
 
       Jeśli ta zasada ma wartość Fałsz, lista interfejsów nie zostanie zgłoszona.</translation>
 <translation id="8146727383888924340">Zezwalaj użytkownikom na wykorzystanie ofert w procesie rejestracji systemu operacyjnego Chrome</translation>
+<translation id="8148785525797916822">Ukrywanie ostrzeżenia pojawiającego się, gdy <ph name="PRODUCT_NAME" /> działa na komputerze lub w systemie operacyjnym, który nie jest obsługiwany.</translation>
 <translation id="8148901634826284024">Włącza funkcję ułatwień dostępu w postaci trybu wysokiego kontrastu.
 
           Jeśli ta zasada ma wartość „prawda”, tryb wysokiego kontrastu jest zawsze włączony.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index d17403a8..2758285 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -774,7 +774,6 @@
 <translation id="402759845255257575">Não permitir que nenhum site execute o JavaScript</translation>
 <translation id="4027608872760987929">Ativar o provedor de pesquisa padrão</translation>
 <translation id="4039085364173654945">Controla se o subconteúdo de terceiros em uma página pode acionar pop-up de uma caixa de diálogo básica de autorização HTTP. Normalmente, esta função é desativada como proteção contra phishing. Se esta política não estiver definida, a função é desativada e o subconteúdo de terceiros não terá permissão para acionar pop-up de uma caixa de diálogo básica de autorização HTTP.</translation>
-<translation id="4052765007567912447">Controla se é permitido ao usuário mostrar senhas em texto não criptografado no gerenciador de senhas. Se desativar esta configuração, o gerenciador de senhas não permitirá a exibição de senhas armazenadas em texto não criptografado na janela do gerenciador de senhas. Se ativar ou não definir esta política, os usuários poderão visualizar suas senhas em texto não criptografado no gerenciador de senhas.</translation>
 <translation id="4056910949759281379">Desativar o protocolo SPDY</translation>
 <translation id="4088589230932595924">Modo de navegação anônima forçado</translation>
 <translation id="4088983553732356374">Permite que você configure se os websites têm ou não permissão para definir dados locais. É possível permitir a configuração dos dados locais para todos os websites ou negá-la a todos eles.
@@ -1119,7 +1118,6 @@
       Se especificada, a política adicionará um parâmetro de consulta chamado "restrict" ao URL usado para buscar o termo-semente "Variações". O valor do parâmetro será o valor especificado nesta política.
 
       Se não for especificada, a política não modificará o URL do termo-semente "Variações".</translation>
-<translation id="5564962323737505851">Configura o gerenciador de senhas. Se o gerenciador de senhas estiver ativado, você poderá optar por ativar ou desativar a opção de o usuário poder mostrar as senhas armazenadas em texto não criptografado.</translation>
 <translation id="556941986578702361">Controla a ocultação automática da estante do <ph name="PRODUCT_OS_NAME" />.
 
       Se esta política estiver definida como "AlwaysAutoHideShelf", a estante sempre será ocultada automaticamente.
@@ -1224,7 +1222,6 @@
 <translation id="5893553533827140852">Quando essa configuração está ativada, as solicitações de autenticação gnubby são transmitidas por proxy por meio de uma conexão de host remoto.
 
            Se essa configuração não está ativada ou configurada, as solicitações de autenticação gnubby não são transmitidas por proxy.</translation>
-<translation id="5912364507361265851">Permitir que os usuários exibam senhas no gerenciador de senhas</translation>
 <translation id="5921713479449475707">Permitir atualização automática de downloads via HTTP</translation>
 <translation id="5921888683953999946">Definir o estado padrão do recurso de acessibilidade do cursor grande na tela de login.
 
@@ -1782,6 +1779,7 @@
 <translation id="7882585827992171421">Esta política só fica ativada em modo de varejo.
 
       Determina a identificação da extensão a ser usada como protetor de tela na tela de login. A extensão deve ser parte do AppPack configurado para este domínio por meio da política DeviceAppPack.</translation>
+<translation id="7882890448959833986">Remover o aviso de SO não compatível</translation>
 <translation id="7912255076272890813">Configurar tipos permitidos de aplicativo/extensão</translation>
 <translation id="793134539373873765">Especifica se p2p deve ser usado para cargas de atualização do sistema operacional. Se for definido como verdadeiro, os dispositivos compartilharão e tentarão consumir as cargas de atualização na LAN, possivelmente reduzindo o uso de largura de banda de Internet e o congestionamento. Se a carga de atualização não estiver disponível na LAN, o dispositivo voltará a fazer download a partir de um servidor de atualização. Se for definido como falso ou não for configurado, o p2p não será usado.</translation>
 <translation id="7933141401888114454">Ativar a criação de usuários supervisionados</translation>
@@ -1839,6 +1837,7 @@
 
       Se a política estiver definida como "False", a lista de interfaces não será informada.</translation>
 <translation id="8146727383888924340">Permitir que os usuários resgatem ofertas pelo Registro do Chrome OS</translation>
+<translation id="8148785525797916822">Remove o aviso que é exibido quando o <ph name="PRODUCT_NAME" /> é executado em um computador ou sistema operacional com o qual não é mais compatível.</translation>
 <translation id="8148901634826284024">Ativar o recurso de acessibilidade do modo de alto contraste.
 
           Se esta política for definida como "verdadeira", o modo de alto contraste estará sempre ativado.
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb
index bdbb511..b5942a55 100644
--- a/components/policy/resources/policy_templates_pt-PT.xtb
+++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -799,7 +799,6 @@
 <translation id="402759845255257575">Não permitir que os sites executem JavaScript</translation>
 <translation id="4027608872760987929">Ativar o fornecedor de pesquisas personalizado</translation>
 <translation id="4039085364173654945">Controla se o subconteúdo de terceiros numa página tem permissão para apresentar uma caixa de diálogo de Autenticação Básica de HTTP. Normalmente, esta definição está desativada como uma defesa contra phishing. Se esta política não for definida, a definição será desativada e o subconteúdo de terceiros não terá permissão para apresentar uma caixa de diálogo de Autenticação Básica de HTTP.</translation>
-<translation id="4052765007567912447">Controla se o utilizador pode visualizar palavras-passe em texto normal no gestor de palavras-passe. Se desativar esta definição, o gestor de palavras-passe não permite a apresentação de palavras-passe guardadas em texto normal na respetiva janela. Se ativar ou não definir esta política, os utilizadores podem ver as suas palavras-passe em texto normal no gestor de palavras-passe.</translation>
 <translation id="4056910949759281379">Desativar o protocolo SPDY</translation>
 <translation id="4088589230932595924">Modo de navegação anónima forçado</translation>
 <translation id="4088983553732356374">Permite-lhe definir se os Websites estão autorizados a definir dados locais. A definição dos dados locais pode ser autorizada para todos os Websites ou negada para todos os Websites.
@@ -1153,7 +1152,6 @@
       Se estiver especificada, irá adicionar um parâmetro de consulta denominado "restrito" ao URL utilizado para obter a semente Variações. O valor do parâmetro será o valor especificado nesta política.
 
       Se não estiver especificada, não irá modificar o URL da semente Variações.</translation>
-<translation id="5564962323737505851">Configura o gestor de palavras-passe. Se o gestor de palavras-passe estiver ativado, pode optar por permitir ou impedir que os utilizadores mostrem palavras-passe armazenadas em texto não encriptado.</translation>
 <translation id="556941986578702361">Controlar a ocultação automática da prateleira do <ph name="PRODUCT_OS_NAME" />.
 
       Se esta política estiver definida como 'AlwaysAutoHideShelf', a prateleira será sempre ocultada automaticamente.
@@ -1258,7 +1256,6 @@
 <translation id="5893553533827140852">Se esta definição estiver ativada, os pedidos de autenticação gnubby serão utilizados com proxy numa ligação de anfitrião remoto.
 
           Se esta definição estiver desativada ou não estiver configurada, os pedidos de autenticação não serão utilizados com proxy.</translation>
-<translation id="5912364507361265851">Permitir que os utilizadores mostrem palavras-passe no Gestor de Palavras-Passe</translation>
 <translation id="5921713479449475707">Permitir transferências de atualização automática por HTTP</translation>
 <translation id="5921888683953999946">Definir o estado predefinido da funcionalidade de acessibilidade do cursor grande no ecrã de início de sessão.
 
@@ -1818,6 +1815,7 @@
 <translation id="7882585827992171421">Esta política está ativa apenas no modo de retalho.
 
       Determina a ID da extensão a utilizar como proteção de ecrã no ecrã de início de sessão. A extensão deve ser parte do AppPack que está configurado para este domínio através da política DeviceAppPack.</translation>
+<translation id="7882890448959833986">Suprimir o aviso de SO não suportado</translation>
 <translation id="7912255076272890813">Configurar tipos de aplicações/extensões permitidos</translation>
 <translation id="793134539373873765">Especifica se o p2p será utilizado para cargas úteis de atualização do SO. Se estiver definido como Verdadeiro, os dispositivos irão partilhar e tentar consumir cargas úteisde atualização na LAN, reduzindo potencialmente a utilização e o congestionamento da largura de banda da Internet. Se a carga útil de atualização não estiver disponível na LAN, o dispositivo irá regressar à transferência a partir de um servidor de atualização. Se estiver definido como Falso ou se não estiver configurado, o p2p não será utilizado.</translation>
 <translation id="7933141401888114454">Permitir a criação de utilizadores supervisionados</translation>
@@ -1875,6 +1873,7 @@
 
       Se a política estiver definida como "false", a lista de interfaces não será comunicada.</translation>
 <translation id="8146727383888924340">Permitir que os utilizadores resgatem ofertas através do Registo no SO Chrome</translation>
+<translation id="8148785525797916822">Suprime o aviso apresentado quando o <ph name="PRODUCT_NAME" /> está em execução num computador ou num sistema operativo que já não é suportado.</translation>
 <translation id="8148901634826284024">Ativar a funcionalidade de acessibilidade do modo de alto contraste.
 
           Se esta política estiver definida como verdadeira, o modo de alto contraste estará sempre ativado.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index a9988e8e..43680f2 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -805,7 +805,6 @@
 <translation id="402759845255257575">Nu permite niciunui site să ruleze JavaScript</translation>
 <translation id="4027608872760987929">Activează furnizorul de căutare prestabilit</translation>
 <translation id="4039085364173654945">Stabilește dacă subconținutul terță parte dintr-o anumită pagină poate afișa într-o ferestră de tip pop-up o casetă de dialog pentru autentificarea HTTP de bază. De obicei, aceasta este dezactivată ca măsură de precauție împotriva atacurilor de tip phishing. Dacă această politică nu este setată, această funcție este dezactivată, iar subconținutul terță parte nu va avea permisiunea de a afișa într-o ferestră de tip pop-up o casetă de dialog pentru autentificarea HTTP de bază.</translation>
-<translation id="4052765007567912447">Stabilește dacă utilizatorul poate afișa parolele în text clar în managerul de parole. Dacă dezactivați această setare, nu se permite afișarea în text clar în fereastra managerului de parole a parolelor stocate. Dacă activați sau nu configurați această setare, utilizatorii pot vedea în text clar parolele în managerul de parole.</translation>
 <translation id="4056910949759281379">Dezactivează protocolul SPDY</translation>
 <translation id="4088589230932595924">Modul incognito a fost impus</translation>
 <translation id="4088983553732356374">Îți permite să setezi dacă site-urile au permisiunea de a seta date locale. Setarea datelor locale poate fi permisă sau refuzată în bloc pentru toate site-urile.
@@ -1163,7 +1162,6 @@
       Dacă este specificată, politica va adăuga un parametru de interogare numit „restrict” la adresa URL utilizată pentru preluarea valorii de bază pentru variante. Valoarea parametrului va fi valoarea specificată în această politică.
 
       Dacă nu este specificată, politica nu va modifica adresa URL a valorii de bază pentru variante.</translation>
-<translation id="5564962323737505851">Configurează managerul de parole. Dacă managerul de parole este activat, poți opta să activezi sau să dezactivezi posibilitatea unui utilizator de a afișa parolele stocate ca text simplu.</translation>
 <translation id="556941986578702361">Controlați ascunderea automată a raftului <ph name="PRODUCT_OS_NAME" />.
 
       Dacă această politică este setată la „AlwaysAutoHideShelf”, raftul va fi întotdeauna ascuns automat.
@@ -1268,7 +1266,6 @@
 <translation id="5893553533827140852">Dacă această setare este activată, solicitările de autentificare gnubby vor fi trimise printr-un proxy folosindu-se o conexiune a gazdei la distanță.
 
           Dacă această setare este dezactivată sau nu este configurată, solicitările de autentificare gnubby nu vor fi trimise printr-un proxy.</translation>
-<translation id="5912364507361265851">Permite utilizatorilor să afișeze parolele în managerul de parole</translation>
 <translation id="5921713479449475707">Permite descărcarea actualizărilor automate prin HTTP</translation>
 <translation id="5921888683953999946">Setați funcția de accesibilitate pentru cursorul mare ca stare prestabilită pe ecranul de conectare.
 
@@ -1422,6 +1419,7 @@
       Dacă dezactivezi această setare, utilizatorii nu vor avea permisiunea să folosească Smart Lock.
 
       Dacă politica nu este configurată, în mod prestabilit, permisiunea nu este acordată utilizatorilor gestionați de companie și este acordată utilizatorilor care nu sunt gestionați.</translation>
+<translation id="6491139795995924304">Permite Bluetooth pe dispozitiv</translation>
 <translation id="6513756852541213407">Vă permite să specificați serverul proxy utilizat de <ph name="PRODUCT_NAME" /> și împiedică modificarea setărilor de proxy de către utilizatori. Dacă alegeți să nu utilizați niciodată un server proxy și să vă conectați întotdeauna în mod direct, toate celelalte opțiuni sunt ignorate. Dacă alegeți să utilizați setările proxy-ului pentru sistem sau detectarea automată a serverului proxy, toate celelalte opțiuni sunt ignorate. Dacă alegeți modul server proxy fix, puteți specifica opțiuni suplimentare în „Adresa IP sau adresa URL a serverului proxy” și „Lista cu valori separate prin virgulă a regulilor de ocolire a proxy-ului”. Dacă alegeți să utilizați un script .pac pentru proxy, trebuie să specificați adresa URL a scriptului în „Adresa URL a unui fișier .pac pentru proxy”. Pentru exemple detaliate, accesați: <ph name="PROXY_HELP_URL" /> Dacă activați această setare, <ph name="PRODUCT_NAME" /> ignoră toate opțiunile legate de serverul proxy specificate din linia de comandă. Dacă această politică rămâne nesetată, utilizatorii vor putea să aleagă ei înșiși setările de proxy.</translation>
 <translation id="6520802717075138474">Importați motoarele de căutare din browserul prestabilit, la prima rulare</translation>
 <translation id="653608967792832033">Indică intervalul de timp fără intervenția utilizatorului după care ecranul este blocat atunci când dispozitivul funcționează pe baterie.
@@ -1652,6 +1650,11 @@
 
           Dacă politica „RestoreOnStartup” este setată pentru restabilirea adreselor URL din sesiunile anterioare, această politică nu va fi respectată, iar cookie-urile vor fi stocate permanent pentru site-urile respective.</translation>
 <translation id="7207095846245296855">Impune Căutarea sigură Google</translation>
+<translation id="7213425178181578730">Dacă această politică este dezactivată, <ph name="PRODUCT_OS_NAME" /> va dezactiva conexiunea Bluetooth, iar utilizatorul nu o va putea reactiva.
+
+      Dacă această politică este activată sau nu este configurată, utilizatorul va putea activa sau dezactiva conexiunea Bluetooth după cum dorește.
+
+      Dacă această politică este configurată, utilizatorul nu o poate modifica sau ignora.</translation>
 <translation id="7216442368414164495">Permite utilizatorilor să activeze raportarea detaliată privind Navigarea sigură</translation>
 <translation id="7227967227357489766">Această politică definește lista de utilizatori care au permisiunea de a se conecta la dispozitiv. Intrările sunt de forma <ph name="USER_WHITELIST_ENTRY_FORMAT" />, cum ar fi <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />. Pentru a accepta utilizatori arbitrari pe un anumit domeniu, utilizați intrări de forma <ph name="USER_WHITELIST_ENTRY_WILDCARD" />.
 
@@ -1825,6 +1828,7 @@
 <translation id="7882585827992171421">Această politică este activă numai în modul Vânzare.
 
       Politica stabilește codul extensiei de utilizat ca screen saver pentru ecranul de conectare. Extensia trebuie să facă parte din pachetul de aplicații care este configurat pentru acest domeniu prin intermediul politicii DeviceAppPack.</translation>
+<translation id="7882890448959833986">Elimină avertismentul privind sistemul de operare neacceptat</translation>
 <translation id="7912255076272890813">Configurați tipurile de aplicații/extensii permise</translation>
 <translation id="793134539373873765">Specifică dacă trebuie utilizată o rețea p2p pentru încărcările utile ale actualizărilor sistemului de operare. Dacă politica este activată, dispozitivele vor utiliza în comun și vor încerca să consume încărcările utile ale actualizărilor în rețeaua LAN, ceea ce ar putea reduce utilizarea lățimii de bandă de internet și ar evita congestionarea traficului. Dacă încărcarea utilă a actualizărilor nu este disponibilă în rețeaua LAN, dispozitivul va utiliza pentru descărcare un server cu actualizări. Dacă politica nu este activată sau nu este configurată, nu va fi utilizată o rețea p2p.</translation>
 <translation id="7933141401888114454">Permiteți crearea de utilizatori monitorizați</translation>
@@ -1882,6 +1886,7 @@
 
       Dacă politica este dezactivată, lista cu interfețe nu va fi raportată.</translation>
 <translation id="8146727383888924340">Permiteți utilizatorilor să valorifice oferte prin înregistrarea sistemului de operare Chrome</translation>
+<translation id="8148785525797916822">Elimină avertismentul care apare când <ph name="PRODUCT_NAME" /> rulează pe un computer sau pe un sistem de operare care nu mai este acceptat.</translation>
 <translation id="8148901634826284024">Activați funcția de accesibilitate pentru modul de contrast ridicat.
 
           Dacă această politică este activată, modul de contrast ridicat va fi întotdeauna activat.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index a87fa5d..44587181 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -768,7 +768,6 @@
 <translation id="402759845255257575">Запретить выполнение JavaScript на всех сайтах</translation>
 <translation id="4027608872760987929">Включить поисковую систему по умолчанию</translation>
 <translation id="4039085364173654945">Управляет отображением на странице всплывающих окон с запросами базовой аутентификации HTTP для стороннего вложенного содержания. Как правило, эта функция отключена в целях защиты от фишинга. Если это правило не настроено, эта функция также отключена, и стороннее вложенное содержание не может выводить запросы базовой аутентификации HTTP.</translation>
-<translation id="4052765007567912447">Определяет, может ли пользователь отображать пароли в менеджере паролей в незашифрованном виде. Если этот параметр отключен, пароли нельзя просматривать в окне менеджера паролей в виде текста; если он включен или не задан, делать это можно.</translation>
 <translation id="4056910949759281379">Отключение протокола SPDY</translation>
 <translation id="4088589230932595924">Принудительное использование режима инкогнито</translation>
 <translation id="4088983553732356374">Позволяет разрешить или запретить хранение локальных данных. Правило можно задать для всех сайтов.
@@ -1124,7 +1123,6 @@
       Если он задан, к URL загрузки исходного значения Variations будет добавлен параметр запроса "restrict" (ограничение). Значением правила будет заданное значение параметра.
 
       Если параметр не задан, URL загрузки исходного значения Variations останется без изменения.</translation>
-<translation id="5564962323737505851">Настраивает диспетчер паролей. Если диспетчер паролей активен, можно включить или отключить отображение сохраненных паролей в виде обычного текста.</translation>
 <translation id="556941986578702361">Управление отображением панели загрузок <ph name="PRODUCT_OS_NAME" />.
 
 Если параметру присвоено значение AlwaysAutoHideShelf, панель будет автоматически скрываться.
@@ -1228,7 +1226,6 @@
 <translation id="5893553533827140852">Если этот параметр включен, запросы на авторизацию Gnubby будут передаваться через подключение к удаленному хосту.
 
           Если этот параметр отключен или не задан, запросы на авторизацию Gnubby не будут передаваться через прокси.</translation>
-<translation id="5912364507361265851">Разрешить пользователям отображать пароли в диспетчере паролей</translation>
 <translation id="5921713479449475707">Разрешить автоматическое скачивание обновлений по протоколу HTTP</translation>
 <translation id="5921888683953999946">Наличие или отсутствие большого курсора по умолчанию на экране входа.
 
@@ -1785,6 +1782,7 @@
 <translation id="7882585827992171421">Это правило действует только в коммерческой версии.
 
       Определяет идентификатор расширения для использования в качестве заставки на экране входа. Расширение должно входить в состав пакета приложений для данного домена, заданного в правиле DeviceAppPack.</translation>
+<translation id="7882890448959833986">Скрывает предупреждения о неподдерживаемой ОС</translation>
 <translation id="7912255076272890813">Разрешенные типы приложений и расширений</translation>
 <translation id="793134539373873765">Определяет, будет ли использоваться одноранговая сеть p2p при обновлении операционной системы. Если задано значение "True", обмен данными между устройствами и обновление будут выполняться в сети LAN, что позволит сократить пропускную способность и перегрузку интернет-канала. Если в сети LAN обновление не поддерживается, устройство будет скачивать его со специального сервера. Если задано значение "False" или значение не задано, одноранговая сеть не будет использоваться.</translation>
 <translation id="7933141401888114454">Включает поддержку контролируемых профилей</translation>
@@ -1843,6 +1841,7 @@
 
       Если для политики задано значение false, список не отправляется.</translation>
 <translation id="8146727383888924340">Разрешает активацию бонусов через службу регистрации Chrome OS</translation>
+<translation id="8148785525797916822">Скрывает предупреждения о том, что <ph name="PRODUCT_NAME" /> работает на компьютере или операционной системы, которые больше не поддерживаются.</translation>
 <translation id="8148901634826284024">Включение или отключение режима высокой контрастности.
 
           Если для правила задано значение "true", режим высокой контрастности будет всегда включен.
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb
index 949723f..5678951 100644
--- a/components/policy/resources/policy_templates_sk.xtb
+++ b/components/policy/resources/policy_templates_sk.xtb
@@ -880,11 +880,6 @@
 <translation id="4039085364173654945">Kontroluje, či má vnorený obsah tretej strany na stránke povolenie zobrazovať kontextové dialógové okno s protokolom HTTP Basic Auth.
 
           Táto funkcia je zvyčajne zakázaná kvôli ochrane pred phishingom (neoprávneným získavaním údajov). Ak toto pravidlo nie je nastavené, je zakázané a vnorenému obsahu tretej strany sa nepovolí zobrazovať kontextové dialógové okno s protokolom HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Určuje, či môžu používatelia zobraziť heslá v správcovi hesiel formou čitateľného textu.
-
-          Ak toto nastavenie zakážete, v okne správcu hesiel nebude možné zobraziť uložené heslá formou čitateľného textu.
-
-          Ak toto nastavenie povolíte alebo ho nenastavíte, používatelia budú môcť v správcovi hesiel zobraziť uložené heslá formou čitateľného textu.</translation>
 <translation id="4056910949759281379">Zakázať protokol SPDY</translation>
 <translation id="4088589230932595924">Vynútený režim inkognito</translation>
 <translation id="4088983553732356374">Umožňuje nastaviť, či môžu webové stránky nastavovať miestne údaje. Nastavenie miestnych údajov je možné buď povoliť pre všetky webové stránky, alebo ho pre všetky webové stránky zakázať.
@@ -1286,7 +1281,6 @@
       Ak je pravidlo stanovené, pridá sa k webovej adrese parameter dopytu s názvom „obmedziť“, ktorý sa použije na načítanie počiatočnej hodnoty variácie. Hodnota parametra bude predstavovať hodnotu stanovenú v tomto pravidle.
 
       Ak pravidlo stanovené nie je, webová adresa počiatočnej hodnoty variácie sa nezmení.</translation>
-<translation id="5564962323737505851">Konfiguruje správcu hesiel. Ak je správca hesiel povolený, môžete povoliť alebo zakázať, či môže používateľ uchovávať heslá formou čitateľného textu.</translation>
 <translation id="556941986578702361">Ovláda nastavenie automatického skrývania poličky systému <ph name="PRODUCT_OS_NAME" />.
 
       Ak je toto pravidlo nastavené na hodnotu AlwaysAutoHideShelf, polička sa bude skrývať automaticky.
@@ -1397,7 +1391,6 @@
 <translation id="5893553533827140852">Ak je toto nastavenie povolené, žiadosti o overenie gnubby budú sprostredkované cez vzdialené pripojenie hostiteľa.
 
           Ak je toto nastavenie zakázané alebo nie je nakonfigurované, žiadosti o overenie gnubby nebudú sprostredkované.</translation>
-<translation id="5912364507361265851">Umožňuje používateľom zobraziť heslá v Správcovi hesiel</translation>
 <translation id="5921713479449475707">Povoliť stiahnutia automatických aktualizácií prostredníctvom protokolu HTTP</translation>
 <translation id="5921888683953999946">Nastaví predvolený stav veľkého kurzora (funkcia na uľahčenie prístupu) na prihlasovacej obrazovke.
 
@@ -2030,6 +2023,7 @@
 <translation id="7882585827992171421">Toto pravidlo je aktívne iba v režime určenom pre predaj.
 
       Určuje identifikátor rozšírenia, ktoré sa má použiť ako šetrič obrazovky na prihlasovacej obrazovke. Rozšírenie musí byť súčasťou balíka AppPack, ktorý bol pre túto doménu nakonfigurovaný v rámci pravidla DeviceAppPack.</translation>
+<translation id="7882890448959833986">Zrušenie zobrazovania upozornenia na nepodporovaný operačný systém</translation>
 <translation id="7912255076272890813">Nakonfigurovať povolené typy aplikácií/rozšírení</translation>
 <translation id="793134539373873765">Určuje, či sa pri aktualizovaní OS má použiť protokol p2p. Ak je táto možnosť nastavená na hodnotu True, zariadenia budú zdieľať aktualizácie a pokúsia sa ich sťahovať v sieti LAN, čím potenciálne znížia využitie a preťaženie rýchlosti pripojenia. Ak sa aktualizácie nedajú vykonať v sieti LAN, zariadenie ich prevezme z aktualizačného servera. Ak je táto možnosť nastavená na hodnotu False alebo nie je nakonfigurovaná, protokol p2p sa nepoužije.</translation>
 <translation id="7933141401888114454">Povoliť vytváranie kontrolovaných používateľov</translation>
@@ -2093,6 +2087,7 @@
 
       Ak je pravidlo nastavené na hodnotu False, zoznam rozhraní sa nenahlási.</translation>
 <translation id="8146727383888924340">Povoliť používateľom uplatniť ponuky pri registrácii systému OS Chrome</translation>
+<translation id="8148785525797916822">Zruší zobrazenie upozornenia spúšťaného vtedy, keď <ph name="PRODUCT_NAME" /> používate v počítači alebo operačnom systéme, ktorý už nie je podporovaný.</translation>
 <translation id="8148901634826284024">Povolí režim vysokého kontrastu (funkcia na uľahčenie prístupu).
 
       Ak toto nastavenie povolíte, bude režim vysokého kontrastu vždy zapnutý.
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb
index f07cc316..d0096c7 100644
--- a/components/policy/resources/policy_templates_sl.xtb
+++ b/components/policy/resources/policy_templates_sl.xtb
@@ -892,11 +892,6 @@
 <translation id="4039085364173654945">Določa, ali lahko podvsebina drugega ponudnika na strani odpre pojavno pogovorno okno HTTP Basic Auth.
 
           Običajno je to onemogočeno kot zaščita pred lažnim predstavljanjem. Če ta pravilnik ni nastavljen, je to onemogočeno in podvsebina drugega ponudnika ne bo mogla odpreti pojavnega pogovornega okna HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Nadzira, ali lahko uporabnik v upravitelju gesel prikaže gesla v besedilni obliki.
-
-         Če to nastavitev onemogočite, upravitelj gesel v svojem oknu ne dovoli prikaza shranjenih gesel v besedilni obliki.
-
-          Če ta pravilnik omogočite ali ga ne nastavite, si lahko uporabniki v upravitelju gesel ogledujejo gesla v besedilni obliki.</translation>
 <translation id="4056910949759281379">Onemogoči protokol SPDY</translation>
 <translation id="4088589230932595924">Vsiljen način brez beleženja zgodovine</translation>
 <translation id="4088983553732356374">Omogoča, da nastavite, ali je spletnim mestom dovoljeno nastavljanje lokalnih podatkov. Nastavljanje lokalnih podatkov je lahko dovoljeno za vsa mesta ali onemogočeno za vsa mesta.
@@ -1299,7 +1294,6 @@
       Če je pravilnik določen, se URL-ju za prenos semen različic doda parameter poizvedbe »restrict«. Vrednost parametra je vrednost, določena v tem pravilniku.
 
       Če pravilnik ni določen, se URL semen različic ne spremeni.</translation>
-<translation id="5564962323737505851">Nastavi upravitelja gesel. Če je omogočen, lahko izberete, ali želite omogočiti ali onemogočiti, ali lahko uporabnik prikaže gesla z vidnim besedilom.</translation>
 <translation id="556941986578702361">Nadzira samodejno skrivanje police v sistemu <ph name="PRODUCT_OS_NAME" />.
 
       Če je ta pravilnik nastavljen na »AlwaysAutoHideShelf«, se bo polica vedno samodejno skrila.
@@ -1412,7 +1406,6 @@
 <translation id="5893553533827140852">Če je ta nastavitev omogočena, bodo zahteve za preverjanje pristnosti »gnubby« posredovane prek povezave z oddaljenim gostiteljem.
 
           Če je ta nastavitev onemogočena ali ni konfigurirana, zahteve za preverjanje pristnosti »gnubby« ne bodo posredovane.</translation>
-<translation id="5912364507361265851">Dovoli uporabnikom, da pokažejo gesla v upravitelju gesel</translation>
 <translation id="5921713479449475707">Dovoli samoposodobitvene prenose prek HTTP</translation>
 <translation id="5921888683953999946">Nastavitev privzetega stanja funkcije velikega kazalca za ljudi s posebnimi potrebami na prijavnem zaslonu.
 
@@ -2051,6 +2044,7 @@
 <translation id="7882585827992171421">Ta pravilnik je aktiven samo v maloprodajnem načinu.
 
       Določa ID razširitve, ki se uporabi kot ohranjevalnik zaslona na zaslonu za prijavo. Razširitev mora biti del paketa AppPack, ki je za to domeno nastavljen s pravilnikom »DeviceAppPack«.</translation>
+<translation id="7882890448959833986">Onemogočanje opozorila glede nepodprtega operacijskega sistema</translation>
 <translation id="7912255076272890813">Konfiguracija dovoljenih vrst aplikacij/razširitev</translation>
 <translation id="793134539373873765">Določa, ali se za prenos posodobitvenih paketov operacijskega sistema uporablja p2p. Če je nastavljeno na »True«, naprave dajo posodobitvene pakete v skupno rabo v krajevnem omrežju in jih poskušajo uporabiti ter s tem morebiti zmanjšati uporabo internetne pasovne širine in zamašitve. Če posodobitveni paket ni na voljo v krajevnem omrežju, ga naprava poskuša prenesti iz posodobitvenegea strežnika. Če je nastavljeno na »False« ali ni nastavljeno, se uporabi p2p.</translation>
 <translation id="7933141401888114454">Omogoči ustvarjanje zaščitenih uporabnikov</translation>
@@ -2113,6 +2107,7 @@
 
       Če je pravilnik nastavljen na »False«, se o seznamu vmesnikov ne poroča.</translation>
 <translation id="8146727383888924340">Uporabnikom dovoli unovčenje ponudb prek registracije sistema Chrome OS.</translation>
+<translation id="8148785525797916822">Onemogoči opozorilo, ki se pojavi, ko se <ph name="PRODUCT_NAME" /> izvaja v računalniku ali operacijskem sistemu, ki ni več podprt.</translation>
 <translation id="8148901634826284024">Omogoči visokokontrastni način funkcij za ljudi s posebnimi potrebami.
 
           Če je ta pravilnik vklopljen, bo vedno omogočen visokokontrastni način.
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb
index c7fe139e..aeb9bd7 100644
--- a/components/policy/resources/policy_templates_sr.xtb
+++ b/components/policy/resources/policy_templates_sr.xtb
@@ -877,11 +877,6 @@
 <translation id="4039085364173654945">Контролише да ли је подсадржају треће стране на страници дозвољено да приказује дијалог HTTP Basic Auth као искачући прозор.
 
            То је обично онемогућено као заштита од „пецања“. Ако ове смернице нису подешене, ово је онемогућено и подсадржају треће стране неће бити дозвољено да приказује дијалог HTTP Basic Auth као искачући прозор.</translation>
-<translation id="4052765007567912447">Контролише да ли корисник сме да приказује лозинке у јасном тексту у менаџеру лозинки.
-
-         Ако онемогућите ово подешавање, менаџер лозинки не допушта приказивање сачуваних лозинки у јасном тексту у свом прозору.
-
-          Ако омогућите или не подесите ово подешавање, корисници могу да виде лозинке у јасном тексту у менаџеру лозинки.</translation>
 <translation id="4056910949759281379">Онемогући SPDY протокол</translation>
 <translation id="4088589230932595924">Режим Без архивирања је наметнут</translation>
 <translation id="4088983553732356374">Омогућавају вам да подесите да ли је веб-сајтовима дозвољено да постављају локалне податке. Постављање локалних података може да буде или дозвољено или забрањено за све веб-сајтове.
@@ -1282,7 +1277,6 @@
       Ако су наведене, додају параметар упита под називом „restrict“ у URL који се користи за преузимање почетне вредности варијација. Вредност параметра ће бити вредност наведена у овим смерницама.
 
       Ако нису наведене, оне неће мењати URL почетне вредности варијација.</translation>
-<translation id="5564962323737505851">Конфигурише менаџера лозинке. Ако је менаџер лозинке омогућен, можете да омогућите или онемогућите да ли ће корисник моћи да приказује сачуване лозинке у јасном тексту.</translation>
 <translation id="556941986578702361">Контролише аутоматско сакривање <ph name="PRODUCT_OS_NAME" /> полице.
 
       Ако су ове смернице подешене на „AlwaysAutoHideShelf“, полица ће се увек аутоматски сакривати.
@@ -1395,7 +1389,6 @@
 <translation id="5893553533827140852">Ако је ово подешавање омогућено, захтеви за gnubby потврду аутентичности ће се слати преко прокси везе са удаљеним хостом.
 
           Ако је ово подешавање онемогућено или није конфигурисано, захтеви за gnubby потврду аутентичности се неће слати преко проксија.</translation>
-<translation id="5912364507361265851">Омогући корисницима приказивање лозинке у Менаџеру лозинке</translation>
 <translation id="5921713479449475707">Дозволи преузимања аутоматских ажурирања преко HTTP-а</translation>
 <translation id="5921888683953999946">Подешавање подразумеваног статуса функције приступачности за велики курсор на екрану за пријављивање.
 
@@ -2029,6 +2022,7 @@
 <translation id="7882585827992171421">Ове смернице су активне само у режиму малопродаје.
 
       Одређују ИД додатка који ће се користити као чувар екрана на екрану за пријављивање. Додатак мора да буде део пакета апликација који је конфигурисан за овај домен преко смерница DeviceAppPack.</translation>
+<translation id="7882890448959833986">Спречава приказивање упозорења за неподржани ОС</translation>
 <translation id="7912255076272890813">Конфигурисање дозвољених типова апликација/додатака</translation>
 <translation id="793134539373873765">Одређују да ли ће се p2p користити за корисне податке ажурирања ОС-а. Ако су подешене на Тачно, уређаји ће делити и покушати да потроше корисне податке ажурирања на локалној мрежи, што може да смањи коришћење интернет пропусног опсега и закрчење. Ако корисни подаци ажурирања нису доступни на локалној мрежи, уређај ће их поново преузимати са сервера за ажурирање. Ако су подешене на Нетачно или нису конфигурисане, p2p се неће користити.</translation>
 <translation id="7933141401888114454">Омогућавање прављења корисника под надзором</translation>
@@ -2091,6 +2085,7 @@
 
       Ако се ова смерница подеси на false, неће долазити до пријављивања листе интерфејса.</translation>
 <translation id="8146727383888924340">Омогућавање корисницима да искористе понуде преко регистрације за Chrome ОС</translation>
+<translation id="8148785525797916822">Спречава да се приказује упозорење када се <ph name="PRODUCT_NAME" /> покреће на рачунару или оперативном систему који више није подржан.</translation>
 <translation id="8148901634826284024">Омогућавање функције приступачности за режим високог контраста.
 
           Ако се ове смернице подесе на „тачно“, режим високог контраста ће увек бити омогућен.
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb
index 0af8545..1f81232 100644
--- a/components/policy/resources/policy_templates_sv.xtb
+++ b/components/policy/resources/policy_templates_sv.xtb
@@ -896,11 +896,6 @@
 <translation id="4039085364173654945">Policyn styr om underordnat innehåll från tredje part på en sida får öppna en dialogruta för HTTP Basic Auth.
 
           Policyn är normalt inaktiverad som skydd mot lösenordsfiske. Om policyn inte anges är inställningen inaktiverad och underordnat innehåll från tredje part får inte öppna en dialogruta för HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Policyn avgör om användare får visa lösenord i lösenordshanteraren.
-
-          Om du inaktiverar inställningen går det inte att visa sparade lösenord som vanlig text i lösenordshanteraren.
-
-          Om du aktiverar eller inte anger policyn kan användarna visa lösenord som vanlig text i lösenordshanteraren.</translation>
 <translation id="4056910949759281379">Inaktivera SPDY-protokoll</translation>
 <translation id="4088589230932595924">Tvingat inkognitoläge</translation>
 <translation id="4088983553732356374">Innebär att du kan ange om webbplatser ska få ange lokal data. Att ange lokal data kan tillåtas för alla webbplatser eller nekas för alla webbplatser.
@@ -1305,7 +1300,6 @@
       Om den anges läggs en frågeparameter som kallas "restrict" till i webbadressen som används för att hämta startvärdet för Variations. Värdet för parametern kommer att vara det värde som anges i policyn.
 
       Om den inte anges ändras inte webbadressen för startvärdet för Variations.</translation>
-<translation id="5564962323737505851">Konfigurerar lösenordshanteraren. Om lösenordshanteraren är aktiverad kan du välja att aktivera eller inaktivera huruvida användare får visa sparade lösenord med vanlig text.</translation>
 <translation id="556941986578702361">Kontrollera hur <ph name="PRODUCT_OS_NAME" />-hyllan döljs automatiskt.
 
       Om policyn har angetts till AlwaysAutoHideShelf döljs alltid hyllan automatiskt.
@@ -1416,7 +1410,6 @@
 <translation id="5893553533827140852">Om inställningen är aktiverad kommer gnubby-autentiseringsbegäranden att skickas via proxy via en fjärranslutning.
 
           Om inställningen är inaktiverad eller inte konfigurerad kommer gnubby-autentiseringsbegäranden inte att skickas via proxy.</translation>
-<translation id="5912364507361265851">Tillåt att användarna visar lösenord i lösenordshanteraren</translation>
 <translation id="5921713479449475707">Tillåt nedladdning av automatiska uppdateringar via HTTP</translation>
 <translation id="5921888683953999946">Ange standardläget för hjälpmedelsfunktionen med en stor markör på inloggningsskärmen.
 
@@ -2055,6 +2048,7 @@
 <translation id="7882585827992171421">Den här policyn är bara aktiv i återförsäljarläge.
 
       Avgör ID för det tillägg som ska användas som skärmsläckare på inloggningsskärmen. Tillägget måste finnas i det AppPack som är konfigurerat för domänen i policyn DeviceAppPack.</translation>
+<translation id="7882890448959833986">Ignorera varningar för operativsystem som inte stöds</translation>
 <translation id="7912255076272890813">Konfigurera tillåtna app- och tilläggstyper</translation>
 <translation id="793134539373873765">Anger om p2p ska användas för uppdateringar av betalningar i operativsystemet. Om policyn är inställd på Sant kommer enheterna att dela och försöka använda uppdateringar av betalningar i det lokala nätverket och eventuellt reducera användningen av bandbredd och överbelastning. Om uppdateringar av betalningar inte är tillgängliga i det lokala nätverket kommer enheten att återgå till att ladda ned från en uppdateringsserver. Om policyn är inställd på Falskt eller inte konfigurerad kommer p2p inte att användas.</translation>
 <translation id="7933141401888114454">Aktivera alternativet att skapa övervakade användare</translation>
@@ -2117,6 +2111,7 @@
 
       Om principen anges som False skickas inte gränssnittslistan.</translation>
 <translation id="8146727383888924340">Tillåt att användare utnyttjar erbjudanden via registrering i Chrome OS</translation>
+<translation id="8148785525797916822">Ignorerar varningar som visas när <ph name="PRODUCT_NAME" /> körs på en dator eller i ett operativsystem som inte längre stöds.</translation>
 <translation id="8148901634826284024">Aktivera hjälpmedelsfunktionerna i högkontrastläge.
 
           Om den här principen är sann är högkontrastläget alltid aktiverat.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb
index 470672a..b3c24e6 100644
--- a/components/policy/resources/policy_templates_sw.xtb
+++ b/components/policy/resources/policy_templates_sw.xtb
@@ -877,11 +877,6 @@
 <translation id="4039085364173654945">Hudhibiti iwapo maudhui madogo ya wengine kwenye ukurasa yanaruhusiwa kuibukiza kisanduku kidadisi cha HTTP Basic Auth.
 
           Kwa kawaida hii inalemazwa kama ulinzi wa uhadaaji. Ikiwa sera hii haijawekwa, hii italemazwa na maudhui madogo ya wengine hayataruhusiwa kuibukiza kisanduku kidadisi cha HTTP Basic Auth.</translation>
-<translation id="4052765007567912447">Inadhibiti ikiwa mtumiaji anaweza kuonyesha nenosiri katika maandishi yaliyo wazi ndani ya kidhibiti cha nenosiri.
-
-          Ukilemaza mpangilio huu, kidhibiti cha nenosiri hakiruhusu kuonyesha manenosiri yaliyohifadhiwa katika maandishi yaliyo wazi ndani ya dirisha la kidhibiti cha nenosiri.
-
-          Ukiwezesha au usipoweka sera hii, watumiaji wanaweza kuona manenosiri yao katika maandishi yaliyo wazi ndani ya kidhibiti cha nenosiri.</translation>
 <translation id="4056910949759281379">Lemaza itifaki ya SPDY</translation>
 <translation id="4088589230932595924">Hali fiche imelazimishwa</translation>
 <translation id="4088983553732356374">Hukuruhusu kuweka iwapo tovuti zinaruhusiwa kuweka data ya ndani. Kuweka data ya ndani kunaweza kuruhusiwa kwa tovuti zote au kukataliwa kwa tovuti zote.
@@ -1278,7 +1273,6 @@
       Ikibainishwa, itaongeza kigezo cha hoja kinachoitwa 'kizuizi' kwa URL inayotumika kuleta mbegu Tofauti. Thamani ya kigezo itakuwa thamani iliyobainishwa katika sera hii.
 
       Isipobainishwa, haitarekebisha URL ya mbegu Tofauti.</translation>
-<translation id="5564962323737505851">Inasanidi kidhibiti cha nenosiri. Ikiwa kidhibiti cha nenosiri kimewezeshwa, hivyo basi unaweza kuchagua kuwezesha au kulemaza iwapo mtumiaji anaweza kuonyesha manenosiri yaliyohifadhiwa katika maandishi wazi.</translation>
 <translation id="556941986578702361">Dhibiti kujificha kiotomatiki kwa rafu ya <ph name="PRODUCT_OS_NAME" />.
 
       Iwapo sera hii itawekwa kuwa 'IjificheYenyeweKilaWakati', rafu itajificha kiotomatiki kila wakati.
@@ -1388,7 +1382,6 @@
 <translation id="5893553533827140852">Mpangilio huu ukiwashwa, basi maombi ya uthibitisho ya gnubby yatawekwa kama proksi kupitia muunganisho wa mpangishi wa mbali. 
 
        Mpangilio huu ukizimwa au usisanidiwe, maombi ya uthibitisho ya gnubby hayatawekwa kama proksi.</translation>
-<translation id="5912364507361265851">Waruhusu watumiaji kuonyesha manenosiri katika Kidhibiti cha Manenosiri</translation>
 <translation id="5921713479449475707">Ruhusu vipakuliwa vya kusasisha kiotomatiki kupitia HTTP</translation>
 <translation id="5921888683953999946">Weka hali chaguo-msingi ya kipengele cha upatikanaji wa kishale kikubwa kwenye skrini  ya kuingia katika akaunti. 
 
@@ -2016,6 +2009,7 @@
 <translation id="7882585827992171421">Sera hii ni amilifu katika modi rejareja tu.
 
       Inaamua kitambulisho cha kiendelezi cha kutumiwa kama taswira ya skrini kwenye skrini ya kuingia. Lazima kiendelezi kiwe kimoja wapo cha AppPack inayosanidiwa kwa ajili ya kikoa hiki kupitia kwenye sera ya DeviceAppPack.</translation>
+<translation id="7882890448959833986">Kandamiza onyo la Mfumo wa Uendeshaji usiotumika</translation>
 <translation id="7912255076272890813">Sanidi aina za programu/viendelezi zinazoruhusiwa</translation>
 <translation id="793134539373873765">Hubainisha iwapo p2p itatumika kwa sasisho za data ya OS. Kama imewekwa kuwa Kweli, vifaa vitashiriki na kujaribu kusasisha data kwenye LAN, hivyo kuna uwezekano wa kupunguza matumizi ya kipimo data cha intaneti na msongamano. Kama sasisho ya data haipo kwenye LAN, kifaa kitarudia kupakua kutoka kwenye seva ya sasisho. Kama imewekwa kuwa Uongo ama haijasanidiwa, p2p haitatumika.</translation>
 <translation id="7933141401888114454">Washa uundaji wa watumiaji wanaosimamiwa</translation>
@@ -2078,6 +2072,7 @@
 
       Ikiwa sera itawekwa kuwa Uongo, orodha ya violesura haitaripotiwa.</translation>
 <translation id="8146727383888924340">Ruhusu watumiaji kukomboa matoleo kupitia Usajili wa Mfumo wa Uendeshaji wa Chrome</translation>
+<translation id="8148785525797916822">Hukandamiza onyo linaloonekana <ph name="PRODUCT_NAME" /> inapofanya kazi kwenye kompyuta au mfumo wa uendeshaji ambao hautumiki tena.</translation>
 <translation id="8148901634826284024">Washa kipengee cha upatikanaji cha hali ya juu ya utofutishaji. 
 Kama sera hii imewekwa kuwa kweli, hali ya juu ya utofautishaji itawashwa kila wakati. 
 Kama sera hii imewekwa kuwa haitumiki, hali ya juu ya utofautishaji itazimwa kila wakati.
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb
index 5a6571c..1195887 100644
--- a/components/policy/resources/policy_templates_ta.xtb
+++ b/components/policy/resources/policy_templates_ta.xtb
@@ -782,7 +782,6 @@
 <translation id="402759845255257575">JavaScript ஐ இயக்குவதற்கு எந்த தளத்தையும் அனுமதிக்க வேண்டாம்</translation>
 <translation id="4027608872760987929">இயல்புநிலை தேடல் வழங்குநரை இயக்கு</translation>
 <translation id="4039085364173654945">பக்கத்தில் இருக்கும் மூன்றாம் தரப்பினரின் துணை உள்ளடக்கம் HTTP அடிப்படை அங்கீகார உரையாடல் பெட்டியை பாப் அப் செய்ய அனுமதிப்பதைக் கட்டுப்படுத்துகிறது. ஃபிஷிங் பாதுகாப்பிற்காக இது முடக்கப்பட்டது. இந்த கொள்கை அமைக்கப்படாமல் இருந்தால், இது முடக்கப்படும் மேலும் மூன்றாம் தரப்பினரின் துணை உள்ளடக்கம் HTTP அடிப்படை அங்கீகார உரையாடல் பெட்டியை பாப் அப் செய்வதற்கு அனுமதிக்கப்படாது.</translation>
-<translation id="4052765007567912447">பயனர் தனது கடவுச்சொல்லை, கடவுச்சொல் நிர்வாகியில், தெளிவான உரையில் காண்பிக்கலாமா என்பதைக் கட்டுப்படுத்துகிறது. நீங்கள் இந்த அமைப்பை முடக்கினால், கடவுச்சொல் நிர்வாகியின் சாளரத்தில் தெளிவான உரையில் சேமித்த கடவுச்சொற்களைக் காண்பிக்க,  கடவுச்சொல் நிர்வாகி அனுமதிக்க மாட்டார். நீங்கள் இந்தக் கொள்கையை முடக்கினால் அல்லது அமைக்கவில்லை என்றால், கடவுச்சொல் நிர்வாகியில் தெளிவான உரையில், பயனர் தனது கடவுச்சொல்லைக் காணலாம்.</translation>
 <translation id="4056910949759281379">SPDY நெறிமுறையை முடக்கு</translation>
 <translation id="4088589230932595924">மறைநிலைப் பயன்முறை செயலாக்கப்பட்டது</translation>
 <translation id="4088983553732356374">இணையதளங்கள் அகத் தரவை அமைக்க அனுமதிக்கப்படுமா என்பதை அமைக்க உங்களை அனுமதிக்கும். அகத் தரவை அமைத்தல் அனைத்து இணையதளங்களுக்கும் அனுமதிக்கப்படலாம் அல்லது அனைத்து இணையதளங்களுக்கும் மறுக்கப்படலாம்.
@@ -1134,7 +1133,6 @@
       குறிப்பிடப்பட்டால், மாறுபாடுகள் ஸீடைப் பெறுவதற்குப் பயன்படுத்தப்படும் URL க்கு 'கட்டுப்படுத்து' எனப்படும் வினவல் அளவுரு சேர்க்கப்படும். அளவுருவின் மதிப்பானது, இந்தக் கொள்கையில் குறிப்பிடப்பட்ட மதிப்பாக இருக்கும்.
 
       குறிப்பிடப்படவில்லை எனில், மாறுபாடுகள் ஸீட் URL திருத்தப்படாது.</translation>
-<translation id="5564962323737505851">கடவுச்சொல் நிர்வாகியை உள்ளமைக்கிறது. கடவுச்சொல் நிர்வாகி இயக்கப்பட்டால், தெளிவாக படிக்கக்கூடிய உரையில் சேமிக்கப்பட்ட கடவுச்சொற்களைப் பயனர் காண்பிக்கலாமா என்பதை நீங்கள் இயக்கலாம் அல்லது முடக்கலாம்.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> அடுக்கைத் தானாக மறைப்பதைக் கட்டுப்படுத்தலாம்.
 
       இந்தக் கொள்கையானது 'AlwaysAutoHideShelf' ஆக அமைக்கப்பட்டிருக்கும்போது, அடுக்கு எப்போதும் தானாக மறைக்கப்படும்.
@@ -1238,7 +1236,6 @@
 <translation id="5893553533827140852">இந்த அமைப்பு இயக்கப்பட்டிருந்தால், தொலைநிலை ஹோஸ்ட் இணைப்பில் gnubby அங்கீகரிப்புக் கோரிக்கைகள் ப்ராக்ஸி செய்யப்படும்.
 
          இந்த அமைப்பு முடக்கப்பட்டிருந்தால் அல்லது உள்ளமைக்கப்படாமல் இருந்தால், gnubby அங்கீகரிப்புக் கோரிக்கைகள் ப்ராக்ஸி செய்யப்படாது.</translation>
-<translation id="5912364507361265851">கடவுச்சொல் நிர்வாகியில் பயனர்கள் கடவுச்சொல்லைக் காண்பிக்க அனுமதி</translation>
 <translation id="5921713479449475707">தானியங்குப் புதுப்பிப்பு பதிவிறக்கங்களை HTTP வழியாக அனுமதி</translation>
 <translation id="5921888683953999946">பெரிய இடஞ்சுட்டியின் இயல்புநிலை அணுகல்தன்மை அம்சத்தை உள்நுழைவுத் திரையில் அமைக்கவும்.
 
@@ -1789,6 +1786,7 @@
 <translation id="7882585827992171421">இந்தக் கொள்கை விற்பனை பயன்முறையில் மட்டுமே செயலில் இருக்கும்.
 
       உள்நுழைவு திரையில் ஸ்கிரீன் சேவராகப் பயன்படுத்தப்படும் நீட்டிப்பு ஐடியைத் தீர்மானிக்கும். நீட்டிப்பானது இந்தக் களத்திற்காக DeviceAppPack கொள்கையால் உள்ளமைக்கப்பட்ட AppPack இன் பகுதியாக இருக்க வேண்டும்.</translation>
+<translation id="7882890448959833986">ஆதரிக்கப்படாத OS எச்சரிக்கையை முடக்கு</translation>
 <translation id="7912255076272890813">அனுமதிக்கப்படும் பயன்பாடு/நீட்டிப்பு வகைகளை உள்ளமை</translation>
 <translation id="793134539373873765">OS புதுப்பிப்பு தரவுகளுக்கு p2p பயன்படுத்தப்பட வேண்டுமா என்பதைக் குறிப்பிடுகிறது. சரி என அமைக்கப்பட்டிருந்தால், LAN இல் புதுப்பிப்பு தரவுகளைச் சாதனங்கள் பகிரும், மேலும் பெறுவதற்கும் முயற்சிக்கும், மேலும் இது இணைய அகலக்கற்றையின் பயன்பாடு மற்றும் நெரிசலைக் குறைக்கும். LAN இல் புதுப்பிப்பு தரவு இல்லையெனில், சாதனம் புதுப்பிப்புச் சாதனத்திலிருந்து பதிவிறக்குவதைக் குறைக்கும். தவறு அல்லது உள்ளமைக்கப்படவில்லை எனில், p2p பயன்படுத்தப்படாது.</translation>
 <translation id="7933141401888114454">கண்காணிக்கப்படும் பயனர்களின் உருவாக்கத்தை இயக்கு</translation>
@@ -1845,6 +1843,7 @@
 
       கொள்கை தவறு என அமைக்கப்பட்டிருந்தால், இடைமுகத்தின் பட்டியல் அறிக்கையிடப்படாது.</translation>
 <translation id="8146727383888924340">Chrome OS பதிவுசெய்தல் மூலம் சலுகைகளைப் பெற பயனர்களை அனுமதிக்கவும்</translation>
+<translation id="8148785525797916822">தற்போது ஆதரிக்கப்படாத கணினியில் அல்லது இயக்க முறைமையில் <ph name="PRODUCT_NAME" /> இயங்கும் போது தோன்றும் எச்சரிக்கையை முடக்கும்.</translation>
 <translation id="8148901634826284024">அதிக ஒளி மாறுபாடு பயன்முறை அணுகல்தன்மை அம்சத்தை இயக்கவும்.
 
           இந்தக் கொள்கை சரி என அமைக்கப்பட்டால், அதிக ஒளி மாறுபாடு  பயன்முறை எப்போதும் இயக்கப்பட்டிருக்கும்.
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index 0e1823d..21db0c1 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -801,7 +801,6 @@
 <translation id="402759845255257575">JavaScriptను అమలు చేయడానికి ఏ సైట్‌నూ అనుమతించవద్దు</translation>
 <translation id="4027608872760987929">డిఫాల్ట్ శోధన అందింపుదారుని ప్రారంభించు</translation>
 <translation id="4039085364173654945">పేజీలోని మూడో-పక్ష ఉప-కంటెంట్ HTTP ఆధారిత ప్రమాణీకరణ డైలాగ్ బాక్స్‌ను పాప్-అప్ చేయడానికి అనుమతించబడిందో, లేదో అనే దానిని నియంత్రిస్తుంది. సాధారణంగా ఇది ఒక ఫిషింగ్ రక్షణ వలె ఆపివేయబడింది. ఈ విధానం సెట్ చేయకపోతే, ఇది ఆపివేయబడుతుంది మరియు మూడో-పక్ష ఉప-కంటెంట్ ఒక HTTP ఆధారిత ప్రమాణీకరణ డైలాగ్ బాక్స్‌ను పాప్-అప్ చేయడానికి అనుమతించబడదు.</translation>
-<translation id="4052765007567912447">వినియోగదారు పాస్‌వర్డ్ మేనేజర్‌లో పాస్‌వర్డ్‌లను స్పష్టమైన వచనంలో ప్రదర్శించవచ్చో, లేదో నియంత్రిస్తుంది. మీరు ఈ సెట్టింగ్‌ను ఆపివేస్తే, పాస్‌వర్డ్ మేనేజర్ నిల్వ చేయబడిన పాస్‌వర్డ్‌లను పాస్‌వర్డ్ మేనేజర్ విండోలో స్పష్టమైన వచనంలో ప్రదర్శించడానికి అనుమతించదు. మీరు ప్రారంభించినా లేదా ఈ విధానాన్ని సెట్ చేయకపోయినా, వినియోగదారులు వారి పాస్‌వర్డ్‌లను పాస్‌వర్డ్ మేనేజర్‌లో స్పష్టమైన వచనంలో చూడగలరు.</translation>
 <translation id="4056910949759281379">SPDY ప్రోటోకాల్‌ని ఆపివేయి</translation>
 <translation id="4088589230932595924">అజ్ఞాత మోడ్ నిర్బంధం చేయడం</translation>
 <translation id="4088983553732356374">స్థానిక డేటాను సెట్ చేయడానికి వెబ్‌సైట్‌లను అనుమతించవచ్చో లేదో సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. స్థానిక డేటాను సెట్ చేయడం అనేది అన్ని వెబ్‌సైట్‌లకు అనుమతించబడుతుంది లేదా అన్ని వెబ్‌సైట్‌లకు నిరాకరించబడుతుంది.
@@ -1159,7 +1158,6 @@
       పేర్కొనబడితే, వ్యత్యాసాల సీడ్‌ను పొందడానికి ఉపయోగించే URLకు 'నిరోధించు' అనే ప్రశ్న పరామితిని జోడిస్తుంది. పరామితి విలువ ఈ విధానంలో పేర్కొన్న విలువ అవుతుంది.
 
       పేర్కొనబడకపోతే, వ్యత్యాసాల సీడ్ URLను సవరించదు.</translation>
-<translation id="5564962323737505851">పాస్‌వర్డ్‌ నిర్వాహణని కాన్ఫిగర్ చేస్తుంది. పాస్‌వర్డ్ నిర్వహణ ప్రారంభించబడితే, వినియోగదారు పూర్తి టెక్స్ట్‌లో నిల్వ పాస్‌వర్డ్‌లని చూపించాలా వద్దా అనే దాన్ని ప్రారంభించడాన్ని లేదా ఆపివేయడాన్ని మీరు ఎంచుకోవచ్చు.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> అరను స్వయంచాలకంగా దాచడాన్ని నియంత్రిస్తుంది.
 
       ఈ విధానాన్ని 'AlwaysAutoHideShelf'కు సెట్ చేస్తే, అర ఎల్లప్పుడూ స్వయంచాలకంగా దాచబడుతుంది.
@@ -1264,7 +1262,6 @@
 <translation id="5893553533827140852">ఈ సెట్టింగ్ ప్రారంభించబడితే, gnubby ప్రామాణీకరణ అభ్యర్థనలు రిమోట్ హోస్ట్ కనెక్షన్‌లో ప్రాక్సీ చేయబడతాయి.
 
           ఈ సెట్టింగ్ నిలిపివేయబడితే లేదా కాన్ఫిగర్ చేయబడకపోతే, gnubby ప్రామాణీకరణ అభ్యర్థనలు ప్రాక్సీ చేయబడవు.</translation>
-<translation id="5912364507361265851">పాస్‌వర్డ్ నిర్వహణలో పాస్‌వర్డ్‌లని చూపించడానికి వినియోగదారులని అనుమతించు</translation>
 <translation id="5921713479449475707">స్వీయ నవీకరణ డౌన్‌లోడ్‌లను HTTP ద్వారా అనుమతించండి</translation>
 <translation id="5921888683953999946">లాగిన్ స్క్రీన్‌లో పెద్ద కర్సర్ ప్రాప్యత లక్షణం యొక్క డిఫాల్ట్ స్థితిని సెట్ చేయండి.
 
@@ -1826,6 +1823,7 @@
 <translation id="7882585827992171421">ఈ విధానం రిటైల్ మోడ్‌‌లో మాత్రమే సక్రియంగా ఉంటుంది.
 
       సైన్-ఇన్ స్క్రీన్‌లో స్క్రీన్ సేవర్‌గా ఉపయోగించబడే పొడిగింపు idని నిర్ధారిస్తుంది. పొడిగింపు తప్పనిసరిగా DeviceAppPack విధానం ద్వారా ఈ డొమైన్ కోసం కాన్ఫిగర్ చేయబడిన AppPackలో భాగంగా ఉండాలి.</translation>
+<translation id="7882890448959833986">OSకి మద్దతు లేదు హెచ్చరికను ఆపివేయి</translation>
 <translation id="7912255076272890813">అనుమతించబడిన అనువర్తన/పొడిగింపు రకాలను కాన్ఫిగర్ చేయండి</translation>
 <translation id="793134539373873765">OS నవీకరణ పేలోడ్‌ల కోసం p2p ఉపయోగించబడాలో లేదో పేర్కొంటుంది. ఒప్పుకు సెట్ చేస్తే, పరికరాలు భాగస్వామ్యం చేస్తాయి మరియు ఇంటర్నెట్ బ్యాండ్‌విడ్త్ వినియోగం మరియు సంకులతను సంభావ్యంగా తగ్గిస్తూ, LANలో నవీకరణ పేలోడ్‌లను వినియోగించడానికి ప్రయత్నిస్తాయి. LANలో నవీకరణ పేలోడ్ అందుబాటులో లేకపోతే, పరికరం నవీకరణ సర్వర్ నుండి డౌన్‌లోడ్ చేయడానికి తిరిగి వస్తుంది. తప్పుకు సెట్ చేస్తే లేదా కాన్ఫిగర్ చేయకపోతే, p2p ఉపయోగించబడదు.</translation>
 <translation id="7933141401888114454">పర్యవేక్షించబడే వినియోగదారుల రూపకల్పనను ప్రారంభించండి</translation>
@@ -1883,6 +1881,7 @@
 
       విధానాన్ని తప్పుకు సెట్ చేస్తే, ఇంటర్‌ఫేస్ జాబితా నివేదించబడదు.</translation>
 <translation id="8146727383888924340">Chrome OS నమోదు ద్వారా ఆఫర్‌లను రీడీమ్ చేయడానికి వినియోగదారులను అనుమతించండి</translation>
+<translation id="8148785525797916822"><ph name="PRODUCT_NAME" /> ప్రస్తుతం మద్దతు లేని కంప్యూటర్ లేదా ఆపరేటింగ్ సిస్టమ్‌లో అమలవుతున్నప్పుడు కనిపించే హెచ్చరికను ఆపివేస్తుంది.</translation>
 <translation id="8148901634826284024">అధిత కాంట్రాస్ట్ మోడ్ ప్రాప్యత లక్షణాన్ని ప్రారంభించండి.
 
           ఈ విధానాన్ని ఒప్పుకు సెట్ చేస్తే, అధిక కాంట్రాస్ట్ మోడ్ ఎల్లప్పుడూ ప్రారంభించబడుతుంది.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 007c9d5..0422f08 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -787,7 +787,6 @@
 <translation id="402759845255257575">ไม่อนุญาตให้ไซต์ใดๆ เรียกใช้ JavaScript</translation>
 <translation id="4027608872760987929">เปิดใช้งานผู้ให้บริการการค้นหาเริ่มต้น</translation>
 <translation id="4039085364173654945">ควบคุมว่าจะให้เนื้อหาย่อยของบุคคลที่สามบนหน้าเว็บได้รับอนุญาตให้ป๊อปอัปช่องโต้ตอบการตรวจสอบสิทธิ์พื้นฐาน HTTP หรือไม่ ซึ่งโดยปกติจะถูกปิดใช้งานเพื่อป้องกันฟิชชิง หากนโยบายนี้ไม่มีการตั้งค่าไว้ จะถูกปิดใช้งานและเนื้อหาย่อยของบุคคลที่สามจะไม่ได้รับอนุญาตให้ป๊อปอัปช่องโต้ตอบการตรวจสอบสิทธิ์พื้นฐาน HTTP</translation>
-<translation id="4052765007567912447">ควบคุมว่าผู้ใช้จะสามารถแสดงรหัสผ่านเป็นข้อความที่ชัดเจนในตัวจัดการรหัสผ่านหรือไม่ หากคุณปิดใช้งานการตั้งค่านี้ ตัวจัดการรหัสผ่านจะไม่อนุญาตให้แสดงรหัสผ่านที่เก็บไว้เป็นข้อความที่ชัดเจนในหน้าต่างตัวจัดการรหัสผ่าน หากคุณเปิดใช้งานหรือไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะสามารถดูรหัสผ่านของตนเป็นข้อความที่ชัดเจนในตัวจัดการรหัสผ่านได้</translation>
 <translation id="4056910949759281379">ปิดใช้งานโปรโตคอล SPDY</translation>
 <translation id="4088589230932595924">บังคับใช้โหมดไม่ระบุตัวตน</translation>
 <translation id="4088983553732356374">ให้คุณตั้งค่าว่าจะอนุญาตให้เว็บไซต์ตั้งค่าข้อมูลในเครื่องไหม โดยสามารถอนุญาตทุกเว็บไซต์หรือปฏิเสธทุกเว็บไซต์ในการตั้งค่าข้อมูลในเครื่อง
@@ -1141,7 +1140,6 @@
       หากระบุ จะเป็นการเพิ่มพารามิเตอร์ข้อความค้นหาที่เรียกว่า "restrict" ไปยัง URL ที่ใช้เพื่อเรียกเมล็ดรูปแบบ ค่าของพารามิเตอร์จะเป็นค่าที่ระบุในนโยบายนี้
 
       หากไม่ระบุ จะไม่แก้ไข URL เมล็ดรูปแบบ</translation>
-<translation id="5564962323737505851">กำหนดค่าตัวจัดการรหัสผ่าน หากตัวจัดการรหัสผ่านถูกเปิดใช้งานไว้ คุณสามารถเลือกที่จะเปิดหรือปิดใช้งานว่าจะให้ผู้ใช้แสดงรหัสผ่านที่เก็บไว้เป็นข้อความที่ชัดเจนหรือไม่</translation>
 <translation id="556941986578702361">ควบคุมการซ่อนอัตโนมัติสำหรับชั้นวางของ <ph name="PRODUCT_OS_NAME" />
 
       หากตั้งค่านโยบายนี้เป็น "AlwaysAutoHideShelf" ชั้นวางจะซ่อนอัตโนมัติทุกครั้ง
@@ -1246,7 +1244,6 @@
 <translation id="5893553533827140852">หากเปิดใช้การตั้งค่านี้ คำขอตรวจสอบสิทธิ์ Gnubby จะส่งผ่านพร็อกซีโดยใช้การเชื่อมต่อโฮสต์ระยะไกล
 
           หากปิดใช้การตั้งค่านี้หรือไม่ได้กำหนดค่า คำขอตรวจสอบสิทธิ์ Gnubby จะไม่ส่งผ่านพร็อกซี</translation>
-<translation id="5912364507361265851">อนุญาตให้ผู้ใช้แสดงรหัสผ่านในตัวจัดการรหัสผ่าน</translation>
 <translation id="5921713479449475707">อนุญาตการดาวน์โหลดการอัปเดตอัตโนมัติผ่านทาง HTTP</translation>
 <translation id="5921888683953999946">ตั้งค่าสถานะเริ่มต้นของคุณลักษณะการเข้าถึงเคอร์เซอร์ขนาดใหญ่บนหน้าจอการเข้าสู่ระบบ
 
@@ -1811,6 +1808,7 @@
 <translation id="7882585827992171421">นโยบายนี้ใช้งานได้ในโหมดปลีกเท่านั้น
 
       กำหนด ID ของส่วนขยายที่จะใช้เป็นโปรแกรมรักษาหน้าจอบนหน้าจอลงชื่อเข้าใช้ ส่วนขยายนี้ต้องเป็นส่วนหนึ่งของ AppPack ซึ่งได้รับการกำหนดค่าสำหรับโดเมนนี้ผ่านทางนโยบาย DeviceAppPack</translation>
+<translation id="7882890448959833986">ระงับคำเตือนระบบปฏิบัติการที่ไม่ได้รับการสนับสนุน</translation>
 <translation id="7912255076272890813">กำหนดค่าประเภทแอปพลิเคชัน/ส่วนขยายที่อนุญาต</translation>
 <translation id="793134539373873765">ระบุว่าจะใช้ p2p สำหรับส่วนข้อมูลการอัปเดต OS ไหม หากตั้งค่าเป็น "จริง" อุปกรณ์จะแชร์และพยายามรับส่วนข้อมูลการอัปเดตบน LAN ซึ่งอาจลดแบนด์วิดท์และความคับคั่งในอินเทอร์เน็ต หากส่วนข้อมูลการอัปเดตไม่พร้อมใช้งานบน LAN อุปกรณ์จะกลับไปใช้การดาวน์โหลดจากเซิร์ฟเวอร์การอัปเดต หากตั้งค่าเป็น "เท็จ" หรือไม่กำหนดค่า p2p จะไม่ถูกใช้งาน</translation>
 <translation id="7933141401888114454">เปิดใช้งานการสร้างผู้ใช้ภายใต้การดูแล</translation>
@@ -1867,6 +1865,7 @@
 
       หากตั้งนโยบายเป็น False จะไม่มีการรายงานรายการอินเทอร์เฟซ</translation>
 <translation id="8146727383888924340">อนุญาตให้ผู้ใช้แลกข้อเสนอพิเศษผ่านการลงทะเบียน Chrome OS</translation>
+<translation id="8148785525797916822">ระงับคำเตือนที่ปรากฏขึ้นเมื่อ <ph name="PRODUCT_NAME" /> ทำงานบนคอมพิวเตอร์หรือระบบปฏิบัติการที่ไม่ได้รับการสนับสนุนอีกต่อไป</translation>
 <translation id="8148901634826284024">เปิดใช้งานคุณลักษณะการเข้าถึงโหมดคอนทราสต์สูง
 
           หากนโยบายนี้ถูกตั้งค่าเป็น "จริง" โหมดคอนทราสต์สูงจะถูกเปิดใช้งานเสมอ
@@ -2109,7 +2108,7 @@
 <translation id="8965758116018152083">หากตั้งค่านโยบายนี้เป็นสตริงเปล่าหรือไม่ได้กำหนดค่า <ph name="PRODUCT_OS_NAME" /> จะไม่แสดงตัวเลือกเติมข้อความอัตโนมัติในระหว่างขั้นตอนการลงชื่อเข้าใช้ของผู้ใช้
       หากตั้งค่านโยบายนี้เป็นสตริงที่แสดงชื่อโดเมน <ph name="PRODUCT_OS_NAME" /> จะแสดงตัวเลือกเติมข้อความอัตโนมัติในขณะที่ผู้ใช้ลงชื่อเข้าใช้ โดยอนุญาตให้ผู้ใช้พิมพ์เฉพาะชื่อผู้ใช้โดยไม่ต้องมีส่วนขยายชื่อโดเมน ผู้ใช้สามารถเขียนทับส่วนขยายชื่อโดเมนนี้ได้</translation>
 <translation id="8970205333161758602">ระงับการแจ้งเตือนการปฏิเสธของ <ph name="PRODUCT_FRAME_NAME" /></translation>
-<translation id="8971221018777092728">เครื่องควบคุมเวลาเซสชันสาธารณะสำหรับการเข้าสู่ระบบอัตโนมัติ</translation>
+<translation id="8971221018777092728">ตัวจับเวลาเซสชันสาธารณะสำหรับการเข้าสู่ระบบอัตโนมัติ</translation>
 <translation id="8976248126101463034">อนุญาตให้ตรวจสอบสิทธิ์ Gnubby สำหรับโฮสต์การเข้าถึงระยะไกล</translation>
 <translation id="8992176907758534924">ไม่อนุญาตให้ไซต์ใดแสดงภาพ</translation>
 <translation id="9035964157729712237">รหัสส่วนขยายที่ได้รับการยกเว้นจากรายการที่ไม่อนุญาต</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index c9e57a6..aa9458d 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -889,11 +889,6 @@
 <translation id="4039085364173654945">Bir sayfadaki üçüncü taraf alt içeriğinin bir HTTP Basic Auth iletişim kutusu görüntülemesine izin verilip verilmeyeceğini denetler.
 
           Genellikle, kimlik avından korunma amacıyla bu özellik devre dışı bırakılır. Bu politika ayarlanmazsa, bu özellik devre dışı bırakılır ve üçüncü taraf alt içeriğinin bir HTTP Basic Auth iletişim kutusu görüntülemesine izin verilmez.</translation>
-<translation id="4052765007567912447">Kullanıcının şifreleri şifre yöneticisinde açık metin olarak gösterip gösteremeyeceğini kontrol eder.
-
-          Bu ayarı devre dışı bırakırsanız, şifre yöneticisi kaydedilen şifrelerin şifre yöneticisi penceresinde açık metin olarak gösterilmesine izin vermez.
-
-          Bu politikayı etkinleştirirseniz veya ayarlamazsanız, kullanıcılar şifrelerini şifre yöneticisinde açık metin olarak görüntüleyebilirler.</translation>
 <translation id="4056910949759281379">SPDY protokolünü devre dışı bırak</translation>
 <translation id="4088589230932595924">Gizli mod zorunlu</translation>
 <translation id="4088983553732356374">Web sitelerinin yerel verileri ayarlamasına izin verilip verilmeyeceğini belirlemenize olanak sağlar. Yerel verileri ayarlamaları için ya tüm web sitelerine izin verilir ya da hiçbirine izin verilmez.
@@ -1296,7 +1291,6 @@
       Belirtilirse, Varyasyon temeli almak üzere kullanılan URL'ye 'restrict' adlı bir parametre eklenir. Parametrenin değeri bu politikada belirlenen değer olacaktır.
 
       Belirtilmezse, Varyasyon temeli URL'sinde değişiklik yapılmaz.</translation>
-<translation id="5564962323737505851">Şifre yöneticisini yapılandırır. Şifre yöneticisi etkinleştirilirse, kullanıcının depolanmış olan şifreleri açık metin olarak görüntüleyebilmesini etkinleştirmeyi veya devre dışı bırakmayı seçebilirsiniz.</translation>
 <translation id="556941986578702361"><ph name="PRODUCT_OS_NAME" /> rafının otomatik gizlenmesini kontrol eder.
 
       Bu politika 'AlwaysAutoHideShelf' seçeneğine ayarlanırsa, raf her zaman otomatik olarak gizlenir.
@@ -1406,7 +1400,6 @@
 <translation id="5893553533827140852">Bu ayar etkinleştirilirse gnubby kimlik doğrulama isteklerinde uzaktan ana bilgisayar bağlantısı üzerinden proxy kullanılır.
 
           Bu ayar devre dışı bırakılır veya yapılandırılmazsa gnubby kimlik doğrulama isteklerinde proxy kullanılmaz.</translation>
-<translation id="5912364507361265851">Kullanıcıların şifreleri Şifre Yöneticisi'nde görüntülemelerine izin ver</translation>
 <translation id="5921713479449475707">HTTP aracılığıyla otomatik güncelleme indirmeye izin ver</translation>
 <translation id="5921888683953999946">Giriş ekranında büyük imleç erişilebilirlik özelliğinin varsayılan durumunu ayarla.
 
@@ -1578,6 +1571,7 @@
       Bu ayarı devre dışı bırakırsanız kullanıcıların Smart Lock'u kullanmasına izin verilmez.
 
       Bu politika ayarlanmadan bırakılırsa, varsayılan olarak kuruluş tarafından yönetilen kullanıcılara izin verilmezken, yönetilmeyen kullanıcılara izin verilir.</translation>
+<translation id="6491139795995924304">Cihazda Bluetooth'a izin ver</translation>
 <translation id="6513756852541213407"><ph name="PRODUCT_NAME" /> tarafından kullanılan proxy sunucuyu belirlemenize olanak sağlar ve kullanıcıların proxy ayarlarını değiştirmelerini önler. 
 
           Hiç proxy sunucu kullanmamayı ve her zaman doğrudan bağlanmayı seçerseniz diğer tüm seçenekler yoksayılır. 
@@ -1851,6 +1845,11 @@
 
           "RestoreOnStartup" politikası önceki oturumlara ilişkin URL'leri geri yükleyecek şekilde ayarlanmışsa bu politika yoksayılır ve o siteler için çerezler kalıcı olarak depolanır.</translation>
 <translation id="7207095846245296855">Google Güvenli Arama'yı zorla</translation>
+<translation id="7213425178181578730">Bu politika yanlış değerine ayarlanırsa <ph name="PRODUCT_OS_NAME" />, Bluetooth'u devre dışı bırakır ve kullanıcı, bu işlevi etkinleştiremez.
+
+      Bu politika doğru değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcı, Bluetooth'u istediği gibi etkinleştirebilir veya devre dışı bırakabilir.
+
+      Bu politika ayarlanırsa kullanıcı, bunu değiştiremez veya geçersiz kılamaz.</translation>
 <translation id="7216442368414164495">Kullanıcıların Güvenli Tarama genişletilmiş raporlamasını etkinleştirmesine izin ver</translation>
 <translation id="7227967227357489766">Cihaza giriş yapmalarına izin verilen kullanıcıların listesini tanımlar. Girişler <ph name="USER_WHITELIST_ENTRY_FORMAT" /> biçimindedir (örneğin, <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />). Bir etki alanı üzerinde keyfi kullanıcılara izin vermek için <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> biçiminde girişler kullanın.
 
@@ -2031,6 +2030,7 @@
 <translation id="7882585827992171421">Bu politika yalnızca perakende modunda etkindir.
 
       Oturum açma ekranında ekran koruyucu olarak kullanılacak uzantının kimliğini belirler. Uzantı, DeviceAppPack politikası kullanılarak bu alan adı için yapılandırılmış AppPack'in bir parçası olmalıdır.</translation>
+<translation id="7882890448959833986">Desteklenmeyen OS uyarısını gizle</translation>
 <translation id="7912255076272890813">İzin verilen uygulama/uzantı türlerini yapılandır</translation>
 <translation id="793134539373873765">OS güncelleme yükleri için p2p'nin kullanılıp kullanılmayacağını belirtir. Doğru seçeneğine ayarlanırsa, cihazlar LAN üzerindeki yükleri paylaşır ve kullanmaya çalışır, bu da İnternet bant genişliği kullanımını ve tıkanıklığını potansiyel olarak azaltır. Güncelleme yükü LAN'da kullanılamıyorsa, cihaz bir güncelleme sunucusundan indirme işlemine geçer. Yanlış seçeneğine ayarlanırsa veya yapılandırılmazsa p2p kullanılmaz.</translation>
 <translation id="7933141401888114454">Denetlenen kullanıcılar oluşturmayı etkinleştir</translation>
@@ -2092,6 +2092,7 @@
 
       Bu politika yanlış değerine ayarlanırsa arayüz listesi rapor edilmez.</translation>
 <translation id="8146727383888924340">Kullanıcıların Chrome OS Kaydını kullanarak tekliflerden yararlanmasına izin ver</translation>
+<translation id="8148785525797916822"><ph name="PRODUCT_NAME" />, artık desteklenmeyen bir bilgisayarda veya işletim sisteminde çalışırken görüntülenen uyarıyı gizler.</translation>
 <translation id="8148901634826284024">Yüksek kontrast modu erişilebilirlik özelliğini etkinleştir.
 
           Bu politika true (doğru) olarak ayarlanırsa, yüksek kontrast modu her zaman etkin olur.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 5d77389b..30fb70d 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -795,7 +795,6 @@
 <translation id="402759845255257575">Забороняти всім сайтам запускати JavaScript</translation>
 <translation id="4027608872760987929">Увімкнути пошукову службу за умовчанням</translation>
 <translation id="4039085364173654945">Контролює, чи дозволено розміщеному на сторінці "дочірньому" вмісту третьої сторони відображати спливаюче діалогове вікно базової автентифікації HTTP. Як правило, це налаштування вимкнено з метою захисту від фішингу. Якщо це правило не встановлено, налаштування вимикається, а "дочірньому вмісту" третьої сторони забороняється відображати спливаюче діалогове вікно базової автентифікації HTTP.</translation>
-<translation id="4052765007567912447">Контролює, чи користувач може відображати паролі відкритим текстом у диспетчері паролів. Якщо це налаштування вимкнено, диспетчер паролів забороняє відображати збережені паролі відкритим текстом у вікні диспетчера паролів. Якщо це правило ввімкнено або не встановлено, користувачі можуть переглядати свої паролі відкритим текстом у диспетчері паролів.</translation>
 <translation id="4056910949759281379">Вимкнути протокол SPDY</translation>
 <translation id="4088589230932595924">Примусово запускати режим анонімного перегляду</translation>
 <translation id="4088983553732356374">Ви можете дозволити або заборонити всім веб-сайтам зберігати локальні дані.
@@ -1150,7 +1149,6 @@
       Якщо вказано, параметр запиту з назвою "restrict" додається до URL-адреси, яка використовується для отримання початкового числа Варіацій. Значенням параметру буде значення, визначене в цьому правилі.
 
       Якщо не вказано, URL-адреса початкового числа Варіацій не змінюється.</translation>
-<translation id="5564962323737505851">Налаштовує диспетчер паролів. Якщо диспетчер паролів увімкнено, можна дозволяти чи забороняти користувачам відображати збережені паролі відкритим текстом.</translation>
 <translation id="556941986578702361">Контролюється автоматичне ховання полиці <ph name="PRODUCT_OS_NAME" />.
 
       Якщо для цього правила встановлено значення "AlwaysAutoHideShelf", полиця завжди ховається атвоматично.
@@ -1255,7 +1253,6 @@
 <translation id="5893553533827140852">Якщо цей параметр увімкнено, запити на автентифікацію розширення Gnubby надсилаються через віддалене з’єднанння з хостом.
 
           Якщо цей параметр вимкнено або не налаштовано, запити на автентифікацію розширення Gnubby не надсилаються.</translation>
-<translation id="5912364507361265851">Дозволити користувачам відображати паролі в диспетчері паролів</translation>
 <translation id="5921713479449475707">Дозволити завантаження автоматичних оновлень через HTTP</translation>
 <translation id="5921888683953999946">Налаштувати стан за умовчанням для функції доступності великого курсора на екрані входу.
 
@@ -1813,6 +1810,7 @@
 <translation id="7882585827992171421">Це правило активне лише в режимі роздрібного продажу.
 
       Визначає ідентифікатор розширення, яке має використовуватись як заставка на екрані входу. Це розширення має входити в пакет AppPack, налаштований для цього домену за допомогою правила DeviceAppPack.</translation>
+<translation id="7882890448959833986">Блокування застереження в непідтримуваних ОС</translation>
 <translation id="7912255076272890813">Налаштувати типи дозволених програм або розширень</translation>
 <translation id="793134539373873765">Указує, чи має використовуватися p2p (однорангове з’єднання) для даних оновлення ОС. Якщо для цього правила встановлено значення "true", пристрої обмінюватимуться даними й намагатимуться використовувати дані оновлення в LAN, що потенційно може знижувати використання пропускної спроможності й перевантаження каналів інтернет-зв’язку. Якщо дані оновлення не доступні через LAN, пристрій завантажуватиме їх із сервера оновлення. Якщо для цього правила встановлено значення "false" або його не налаштовано, p2p не використовуватиметься.</translation>
 <translation id="7933141401888114454">Вмикає створення контрольованих користувачів</translation>
@@ -1870,6 +1868,7 @@
 
       Якщо це правило має значення "false", список інтерфейсів не повідомлятиметься.</translation>
 <translation id="8146727383888924340">Дозволяє користувачам отоварювати пропозиції через реєстрацію в ОС Chrome</translation>
+<translation id="8148785525797916822">Блокує застереження, яке з’являється, коли <ph name="PRODUCT_NAME" /> запущено на комп’ютері чи в операційній системі, що більше не підтримуються.</translation>
 <translation id="8148901634826284024">Увімкнути функцію доступності режиму високого контрасту.
 
           Якщо для цього правила встановлено значення "true", режим високого контрасту буде завжди ввімкнено.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 9ae2ce2..2e47fb2 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -881,11 +881,6 @@
 <translation id="4039085364173654945">Kiểm soát liệu nội dung phụ của bên thứ ba trên trang có được phép bật lên hộp thoại Xác thực cơ bản HTTP hay không.
 
           Thông thường, chính sách này được tắt nhằm đề phòng hoạt động lừa đảo. Nếu không thiết lập chính sách này, chính sách sẽ bị tắt và nội dung phụ bên thứ ba sẽ không được phép bật lên hộp thoại Xác thực cơ bản HTTP.</translation>
-<translation id="4052765007567912447">Kiểm soát liệu người dùng có thể hiển thị mật khẩu dưới dạng văn bản rõ ràng trong trình quản lý mật khẩu hay không.
-
-          Nếu bạn tắt cài đặt này, trình quản lý mật khẩu không cho phép hiển thị mật khẩu được lưu trữ dưới dạng văn bản rõ ràng trong cửa sổ trình quản lý mật khẩu.
-
-          Nếu bạn bật hoặc không thiết lập chính sách này, người dùng có thể xem mật khẩu của họ dưới dạng văn bản rõ ràng trong trình quản lý mật khẩu.</translation>
 <translation id="4056910949759281379">Vô hiệu hóa giao thức SPDY</translation>
 <translation id="4088589230932595924">Bắt buộc chế độ ẩn danh</translation>
 <translation id="4088983553732356374">Cho phép bạn đặt trang web được phép hay không được phép đặt dữ liệu cục bộ. Bạn có thể cho phép hoặc từ chối cho phép tất cả các trang web đặt dữ liệu cục bộ.
@@ -1287,7 +1282,6 @@
       Nếu được chỉ định, sẽ thêm thông số truy vấn được gọi là 'restrict' vào URL được sử dụng để tìm nạp khởi đầu Biến thể. Giá trị của thông số sẽ là giá trị được chỉ định trong chính sách này.
 
       Nếu không được chỉ định, sẽ không sửa đổi URL khởi đầu Biến thể.</translation>
-<translation id="5564962323737505851">Định cấu hình trình quản lý mật khẩu. Nếu bật trình quản lý mật khẩu, bạn có thể chọn bật hoặc tắt chế độ người dùng có thể hiển thị mật khẩu được lưu trữ bằng văn bản rõ ràng hay không.</translation>
 <translation id="556941986578702361">Kiểm soát tự động ẩn giá <ph name="PRODUCT_OS_NAME" />.
 
       Nếu chính sách này được đặt thành 'Luôn tự động ẩn giá', giá sẽ luôn tự động ẩn.
@@ -1400,7 +1394,6 @@
 <translation id="5893553533827140852">Nếu cài đặt này được bật, yêu cầu xác thực gnubby sẽ được proxy qua kết nối máy chủ từ xa.
 
           Nếu cài đặt này bị tắt hoặc không được định cấu hình, yêu cầu xác thực gnubby sẽ không được proxy.</translation>
-<translation id="5912364507361265851">Cho phép người dùng hiển thị mật khẩu trong Trình quản lý mật khẩu</translation>
 <translation id="5921713479449475707">Cho phép tài nguyên đã tải xuống tự động cập nhật qua HTTP</translation>
 <translation id="5921888683953999946">Đặt trạng thái mặc định của tính năng trợ năng con trỏ lớn trên màn hình đăng nhập.
 
@@ -2025,6 +2018,7 @@
 <translation id="7882585827992171421">Chính sách này chỉ hoạt động trong chế độ bán lẻ.
 
       Xác định id của tiện ích được sử dụng làm trình bảo vệ màn hình trên màn hình đăng nhập. Tiện ích phải thuộc AppPack được định cấu hình cho miền này thông qua chính sách DeviceAppPack.</translation>
+<translation id="7882890448959833986">Ẩn cảnh báo hệ điều hành không được hỗ trợ</translation>
 <translation id="7912255076272890813">Định cấu hình loại ứng dụng/tiện ích được cho phép</translation>
 <translation id="793134539373873765">Chỉ định có sử dụng p2p cho các phần tải dữ liệu cập nhật OS không. Nếu được đặt thành True, các thiết bị sẽ chia sẻ và cố gắng sử dụng các phần tải dữ liệu cập nhật trên LAN, có thể làm giảm nghẽn và mức sử dụng băng thông Internet. Nếu phần tải dữ liệu cập nhật không khả dụng trên LAN, thiết bị sẽ quay lại tải xuống từ máy chủ cập nhật. Nếu được đặt thành False hay không được định cấu hình, p2p sẽ không được sử dụng.</translation>
 <translation id="7933141401888114454">Cho phép tạo người dùng được giám sát</translation>
@@ -2087,6 +2081,7 @@
 
       Nếu chính sách được đặt giá trị thành sai, danh sách giao diện sẽ không được báo cáo.</translation>
 <translation id="8146727383888924340">Cho phép người dùng đổi phiếu mua hàng thông qua Đăng ký Chrome OS</translation>
+<translation id="8148785525797916822">Ẩn cảnh báo xuất hiện khi <ph name="PRODUCT_NAME" /> đang chạy trên máy tính hoặc hệ điều hành không được hỗ trợ nữa.</translation>
 <translation id="8148901634826284024">Bật tính năng trợ năng chế độ tương phản cao.
 
           Nếu chính sách này được đặt thành true, chế độ tương phản cao sẽ luôn được bật.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index dee6d379..c5ee861 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -767,7 +767,6 @@
 <translation id="402759845255257575">不允许任何网站运行 JavaScript</translation>
 <translation id="4027608872760987929">启用默认搜索服务提供商</translation>
 <translation id="4039085364173654945">控制是否允许网页上的第三方子内容弹出 HTTP 基本身份认证对话框。通常情况下,为了防止网上诱骗,此设置是停用的。如果未设置此政策,就会停用此设置,而不允许第三方子内容弹出 HTTP 基本身份认证对话框。</translation>
-<translation id="4052765007567912447">控制用户是否可以在密码管理器中以明文显示密码。如果您停用了此设置,就不允许在密码管理器窗口中以明文显示存储的密码。如果您启用或未设置此策略,用户就可以在密码管理器中以明文查看自己的密码。</translation>
 <translation id="4056910949759281379">停用 SPDY 协议</translation>
 <translation id="4088589230932595924">强制使用隐身模式</translation>
 <translation id="4088983553732356374">可让您指定是否允许网站设置本地数据。您可以允许所有网站设置本地数据,也可以禁止所有网站设置本地数据。
@@ -1116,7 +1115,6 @@
       指定后,系统将会向用来提取变体种子的网址中添加一个名为“restrict”的查询参数。此参数的值就是此政策中指定的值。
 
       如果未指定,则不会修改变体种子网址。</translation>
-<translation id="5564962323737505851">配置密码管理器。如果密码管理器已启用,您可以选择是否允许用户以明文形式显示存储的密码。</translation>
 <translation id="556941986578702361">控制 <ph name="PRODUCT_OS_NAME" />任务栏是否自动隐藏。
 
       如果此策略设置为“AlwaysAutoHideShelf”,任务栏将始终自动隐藏。
@@ -1222,7 +1220,6 @@
 <translation id="5893553533827140852">如果启用此设置,系统将通过远程主机连接经由代理处理gnubby身份验证请求。
 
           如果您已停用或未配置此设置,那么系统将不会经由代理处理gnubby身份验证请求。</translation>
-<translation id="5912364507361265851">允许用户在“密码管理器”中显示密码</translation>
 <translation id="5921713479449475707">允许通过 HTTP 自动更新下载内容</translation>
 <translation id="5921888683953999946">设置登录屏幕上大号光标辅助功能的默认状态。
 
@@ -1776,6 +1773,7 @@
 <translation id="7882585827992171421">此策略仅在零售模式下有效。
 
       确定在登录屏幕上用作屏幕保护程序的扩展程序的 ID。该扩展程序必须属于通过 DeviceAppPack 策略为此域配置的 AppPack。</translation>
+<translation id="7882890448959833986">禁止显示“操作系统不受支持”警告</translation>
 <translation id="7912255076272890813">配置允许的应用/扩展程序类型</translation>
 <translation id="793134539373873765">指定是否对操作系统更新有效负荷使用 p2p。如果设置为 True,设备将共享并试图消耗局域网中的更新有效负荷,从而可能会减少互联网带宽使用量和拥堵。如果局域网中没有更新有效负荷,设备将回退到从更新服务器下载。如果设置为 False 或未配置,则不会使用 p2p。</translation>
 <translation id="7933141401888114454">允许创建受监管用户</translation>
@@ -1832,6 +1830,7 @@
 
       如果此政策设为False,则不报告接口列表。</translation>
 <translation id="8146727383888924340">允许用户通过注册 Chrome 操作系统来兑换优惠</translation>
+<translation id="8148785525797916822">禁止显示当<ph name="PRODUCT_NAME" />在不再受支持的计算机或操作系统上运行时出现的警告。</translation>
 <translation id="8148901634826284024">启用高反差模式辅助功能。
 
           如果此政策的值设为 True,则系统将始终启用高反差模式。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index af4a46f..02d5a78 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -789,7 +789,6 @@
 <translation id="402759845255257575">不允許任何網站執行 JavaScript</translation>
 <translation id="4027608872760987929">啟用預設搜尋引擎</translation>
 <translation id="4039085364173654945">控制是否允許網頁上的第三方附屬內容彈出「HTTP 基本驗證」對話方塊。為了防止網路釣魚,這項功能通常會停用。如果未設定這項政策,系統會停用這項功能,並且不允許第三方附屬內容彈出「HTTP 基本驗證」對話方塊。</translation>
-<translation id="4052765007567912447">控制使用者是否要在密碼管理員中以清楚文字顯示密碼。如果您停用這項設定,密碼管理員就不會允許在密碼管理員視窗中以清楚文字顯示儲存的密碼。如果您啟用或未設定這項政策,使用者即可在密碼管理員中查看到清楚的密碼文字。</translation>
 <translation id="4056910949759281379">停用 SPDY 通訊協定</translation>
 <translation id="4088589230932595924">強制使用無痕模式</translation>
 <translation id="4088983553732356374">可讓您設定是否允許網站設定本機資料。您可以允許所有網站都能設定本機資料,也可以禁止所有網站設定本機資料。
@@ -1143,7 +1142,6 @@
       如果指定這項政策,系統在連結變異版本種子的擷取網址時,會加入「restrict」這個查詢參數。參數值即為這項政策中指定的值。
 
       如果未指定這項政策,則系統不會修改變異版本種子網址。</translation>
-<translation id="5564962323737505851">設定密碼管理員。如果已啟用密碼管理員,那麼您就能選擇是否要允許使用者以純文字顯示儲存密碼。</translation>
 <translation id="556941986578702361">設定 <ph name="PRODUCT_OS_NAME" /> 檔案櫃的自動隱藏功能。
 
       如果您將這項政策設為「AlwaysAutoHideShelf」,檔案櫃就會一律自動隱藏。
@@ -1249,7 +1247,6 @@
 <translation id="5893553533827140852">啟用這項設定時,系統將透過遠端主機連線以 Proxy 處理 gnubby 驗證要求。
 
           如果停用或不設定這項設定,系統將不會以 Proxy 處理 gnubby 驗證要求。</translation>
-<translation id="5912364507361265851">允許使用者在密碼管理員中顯示密碼</translation>
 <translation id="5921713479449475707">允許透過 HTTP 自動更新下載</translation>
 <translation id="5921888683953999946">設定大型游標協助功能在登入畫面的預設狀態。
 
@@ -1806,6 +1803,7 @@
 <translation id="7882585827992171421">這項政策僅在零售模式下有效。
 
       決定使用擴充程式 ID 當做登入畫面的螢幕保護程式。該擴充功能必須屬於您透過 DeviceAppPack 政策為這個網域設定的 AppPack。</translation>
+<translation id="7882890448959833986">偵測到不支援的作業系統時不顯示警告</translation>
 <translation id="7912255076272890813">設定允許的應用程式/擴充功能類型</translation>
 <translation id="793134539373873765">指定是否使用 P2P 更新裝載作業系統。如果設為 True,裝置將會在 LAN 上共用並嘗試使用更新裝載,藉此降低網際網路頻寬用量及減輕壅塞。如果 LAN 上未提供更新裝載,裝置將回歸至更新伺服器進行下載。如果設為 False 或未設定,則不會使用 P2P。</translation>
 <translation id="7933141401888114454">啟用建立受監管使用者的功能</translation>
@@ -1862,6 +1860,7 @@
 
       如果這項政策設為 False,則不會回報介面清單。</translation>
 <translation id="8146727383888924340">允許使用者透過 Chrome OS Registration 兌換優惠</translation>
+<translation id="8148785525797916822">在我們已停止支援的電腦或作業系統執行 <ph name="PRODUCT_NAME" /> 時,不顯示警告訊息。</translation>
 <translation id="8148901634826284024">啟用高反差模式協助功能。
 
           如果您將這項政策設為 True,系統將一律啟用高反差模式。
diff --git a/components/printing/test/print_web_view_helper_browsertest.cc b/components/printing/test/print_web_view_helper_browsertest.cc
index 8070e1a..ecdd795 100644
--- a/components/printing/test/print_web_view_helper_browsertest.cc
+++ b/components/printing/test/print_web_view_helper_browsertest.cc
@@ -138,10 +138,15 @@
 
 class PrintWebViewHelperTestBase : public content::RenderViewTest {
  public:
-  PrintWebViewHelperTestBase() : print_render_thread_(NULL) {}
+  PrintWebViewHelperTestBase() : print_render_thread_(nullptr) {}
   ~PrintWebViewHelperTestBase() override {}
 
  protected:
+  // content::RenderViewTest:
+  content::ContentRendererClient* CreateContentRendererClient() override {
+    return new PrintTestContentRendererClient();
+  }
+
   void SetUp() override {
     print_render_thread_ = new PrintMockRenderThread();
     render_thread_.reset(print_render_thread_);
@@ -149,16 +154,13 @@
     content::RenderViewTest::SetUp();
   }
 
-  content::ContentRendererClient* CreateContentRendererClient() override {
-    return new PrintTestContentRendererClient();
-  }
-
   void TearDown() override {
 #if defined(LEAK_SANITIZER)
     // Do this before shutting down V8 in RenderViewTest::TearDown().
     // http://crbug.com/328552
     __lsan_do_leak_check();
 #endif
+
     content::RenderViewTest::TearDown();
   }
 
@@ -166,6 +168,7 @@
     ExecuteJavaScriptForTests("window.print();");
     ProcessPendingMessages();
   }
+
   // The renderer should be done calculating the number of rendered pages
   // according to the specified settings defined in the mock render thread.
   // Verify the page count is correct.
@@ -207,7 +210,7 @@
     const IPC::Message* print_msg =
         render_thread_->sink().GetUniqueMessageMatching(
             PrintHostMsg_DidPrintPage::ID);
-    bool did_print_msg = (NULL != print_msg);
+    bool did_print_msg = !!print_msg;
     ASSERT_EQ(printed, did_print_msg);
     if (printed) {
       PrintHostMsg_DidPrintPage::Param post_did_print_page_param;
@@ -228,7 +231,7 @@
     const IPC::Message* print_msg =
         render_thread_->sink().GetUniqueMessageMatching(
             PrintHostMsg_SetupScriptedPrintPreview::ID);
-    bool did_print_msg = (NULL != print_msg);
+    bool did_print_msg = !!print_msg;
     ASSERT_EQ(requested, did_print_msg);
   }
 
@@ -424,24 +427,21 @@
 #if defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING)
 const TestPageData kTestPages[] = {
     {
-     "<html>"
-     "<head>"
-     "<meta"
-     "  http-equiv=\"Content-Type\""
-     "  content=\"text/html; charset=utf-8\"/>"
-     "<title>Test 1</title>"
-     "</head>"
-     "<body style=\"background-color: white;\">"
-     "<p style=\"font-family: arial;\">Hello World!</p>"
-     "</body>",
-     1,
-     // Mac printing code compensates for the WebKit scale factor while
-     // generating the metafile, so we expect smaller pages. (On non-Mac
-     // platforms, this would be 675x900).
-     600,
-     780,
-     NULL,
-     NULL,
+        "<html>"
+        "<head>"
+        "<meta"
+        "  http-equiv=\"Content-Type\""
+        "  content=\"text/html; charset=utf-8\"/>"
+        "<title>Test 1</title>"
+        "</head>"
+        "<body style=\"background-color: white;\">"
+        "<p style=\"font-family: arial;\">Hello World!</p>"
+        "</body>",
+        1,
+        // Mac printing code compensates for the WebKit scale factor while
+        // generating the metafile, so we expect smaller pages. (On non-Mac
+        // platforms, this would be 675x900).
+        600, 780, nullptr, nullptr,
     },
 };
 #endif  // defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING)
@@ -455,7 +455,7 @@
 TEST_F(MAYBE_PrintWebViewHelperTest, PrintLayoutTest) {
   bool baseline = false;
 
-  EXPECT_TRUE(print_render_thread_->printer() != NULL);
+  EXPECT_TRUE(print_render_thread_->printer());
   for (size_t i = 0; i < arraysize(kTestPages); ++i) {
     // Load an HTML page and print it.
     LoadHTML(kTestPages[i].page);
@@ -527,15 +527,15 @@
  protected:
   void VerifyPrintPreviewCancelled(bool did_cancel) {
     bool print_preview_cancelled =
-        (render_thread_->sink().GetUniqueMessageMatching(
-             PrintHostMsg_PrintPreviewCancelled::ID) != NULL);
+        !!render_thread_->sink().GetUniqueMessageMatching(
+            PrintHostMsg_PrintPreviewCancelled::ID);
     EXPECT_EQ(did_cancel, print_preview_cancelled);
   }
 
   void VerifyPrintPreviewFailed(bool did_fail) {
     bool print_preview_failed =
-        (render_thread_->sink().GetUniqueMessageMatching(
-             PrintHostMsg_PrintPreviewFailed::ID) != NULL);
+        !!render_thread_->sink().GetUniqueMessageMatching(
+            PrintHostMsg_PrintPreviewFailed::ID);
     EXPECT_EQ(did_fail, print_preview_failed);
   }
 
@@ -543,7 +543,7 @@
     const IPC::Message* preview_msg =
         render_thread_->sink().GetUniqueMessageMatching(
             PrintHostMsg_MetafileReadyForPrinting::ID);
-    bool did_get_preview_msg = (NULL != preview_msg);
+    bool did_get_preview_msg = !!preview_msg;
     ASSERT_EQ(generated_preview, did_get_preview_msg);
     if (did_get_preview_msg) {
       PrintHostMsg_MetafileReadyForPrinting::Param preview_param;
@@ -555,15 +555,15 @@
   }
 
   void VerifyPrintFailed(bool did_fail) {
-    bool print_failed = (render_thread_->sink().GetUniqueMessageMatching(
-                             PrintHostMsg_PrintingFailed::ID) != NULL);
+    bool print_failed = !!render_thread_->sink().GetUniqueMessageMatching(
+        PrintHostMsg_PrintingFailed::ID);
     EXPECT_EQ(did_fail, print_failed);
   }
 
   void VerifyPrintPreviewInvalidPrinterSettings(bool settings_invalid) {
     bool print_preview_invalid_printer_settings =
-        (render_thread_->sink().GetUniqueMessageMatching(
-             PrintHostMsg_PrintPreviewInvalidPrinterSettings::ID) != NULL);
+        !!render_thread_->sink().GetUniqueMessageMatching(
+            PrintHostMsg_PrintPreviewInvalidPrinterSettings::ID);
     EXPECT_EQ(settings_invalid, print_preview_invalid_printer_settings);
   }
 
@@ -599,7 +599,7 @@
     const IPC::Message* default_page_layout_msg =
         render_thread_->sink().GetUniqueMessageMatching(
             PrintHostMsg_DidGetDefaultPageLayout::ID);
-    bool did_get_default_page_layout_msg = (NULL != default_page_layout_msg);
+    bool did_get_default_page_layout_msg = !!default_page_layout_msg;
     if (did_get_default_page_layout_msg) {
       PrintHostMsg_DidGetDefaultPageLayout::Param param;
       PrintHostMsg_DidGetDefaultPageLayout::Read(default_page_layout_msg,
diff --git a/components/strings/components_chromium_strings_bn.xtb b/components/strings/components_chromium_strings_bn.xtb
index 54dbcf1..08b6d3e 100644
--- a/components/strings/components_chromium_strings_bn.xtb
+++ b/components/strings/components_chromium_strings_bn.xtb
@@ -16,6 +16,8 @@
           &gt;
           LAN সেটিংস
           এবং "আপনার LAN এর জন্য একটি প্রক্সি সার্ভার ব্যবহার করুন" চেকবাক্সটি অনির্বাচন করুন৷</translation>
+<translation id="48558539577516920">আপনার ফায়ারওয়াল বা অ্যান্টিভাইরাস সেটিংসে Chromium কে নেটওয়ার্ক অ্যাক্সেস 
+        করতে মঞ্জুরি দিন।</translation>
 <translation id="580822234363523061">Chromium মেনুতে
           যান &gt;
           <ph name="SETTINGS_TITLE" />
diff --git a/components/strings/components_chromium_strings_ca.xtb b/components/strings/components_chromium_strings_ca.xtb
index e2c5646b..eb76bea 100644
--- a/components/strings/components_chromium_strings_ca.xtb
+++ b/components/strings/components_chromium_strings_ca.xtb
@@ -16,7 +16,7 @@
           &gt;
           Configuració de LAN
           i desmarqueu la casella de selecció Utilitza un servidor intermediari per a la LAN.</translation>
-<translation id="48558539577516920">Configureu el tallafoc o l'antivirus per permetre que Chrome accedeixi
+<translation id="48558539577516920">Configureu el tallafoc o l'antivirus per permetre que Chromium accedeixi
           a la xarxa.</translation>
 <translation id="580822234363523061">Aneu al
           menú de Chromium &gt;
diff --git a/components/strings/components_chromium_strings_ko.xtb b/components/strings/components_chromium_strings_ko.xtb
index 3641f73..10daa9e 100644
--- a/components/strings/components_chromium_strings_ko.xtb
+++ b/components/strings/components_chromium_strings_ko.xtb
@@ -15,7 +15,7 @@
           &gt;
           LAN 설정으로 이동하여
           '사용자 LAN에 프록시 서버 사용'을 선택 취소합니다.</translation>
-<translation id="48558539577516920">Chromium이 방화벽이나 바이러스 백신이 설정된
+<translation id="48558539577516920">Chromium이 방화벽이나 백신 프로그램이 설정된
         네트워크에 액세스할 수 있도록 허용합니다.</translation>
 <translation id="580822234363523061">Chromium 메뉴 &gt;
           <ph name="SETTINGS_TITLE" />
diff --git a/components/strings/components_chromium_strings_ro.xtb b/components/strings/components_chromium_strings_ro.xtb
index 8e43899..23b4ece 100644
--- a/components/strings/components_chromium_strings_ro.xtb
+++ b/components/strings/components_chromium_strings_ro.xtb
@@ -16,6 +16,8 @@
           &gt;
           Setări LAN
           și debifați caseta „Utilizați un server proxy pentru LAN”.</translation>
+<translation id="48558539577516920">Din setările pentru firewall sau antivirus, permite browserului Chromium să acceseze
+          rețeaua.</translation>
 <translation id="580822234363523061">Accesați
           meniul Chromium &gt;
           <ph name="SETTINGS_TITLE" />
diff --git a/components/strings/components_chromium_strings_tr.xtb b/components/strings/components_chromium_strings_tr.xtb
index f877b24..bd3c1f1 100644
--- a/components/strings/components_chromium_strings_tr.xtb
+++ b/components/strings/components_chromium_strings_tr.xtb
@@ -15,6 +15,8 @@
           &gt;
           LAN Ayarları
           öğesine gidin ve "LAN için proxy sunucusu kullan" onay kutusunun seçimini kaldırın.</translation>
+<translation id="48558539577516920">Güvenlik duvarınızın veya virüsten korunma programınızın ayarlarından,
+        Chromium'un ağa erişmesine izin verin.</translation>
 <translation id="580822234363523061">Chromium menüsü &gt;
           <ph name="SETTINGS_TITLE" />
           &gt;
diff --git a/components/strings/components_google_chrome_strings_bn.xtb b/components/strings/components_google_chrome_strings_bn.xtb
index d3cc461..4c85721 100644
--- a/components/strings/components_google_chrome_strings_bn.xtb
+++ b/components/strings/components_google_chrome_strings_bn.xtb
@@ -7,6 +7,8 @@
 <translation id="2874156562296220396">Google Chrome, সম্ভবত <ph name="BEGIN_LINK_CHROMIUM" />ক্রোমিয়াম<ph name="END_LINK_CHROMIUM" /> মুক্ত উৎস প্রোজেক্ট এবং অন্যান্য <ph name="BEGIN_LINK_OSS" />মুক্ত উৎস সফ্টওয়্যার<ph name="END_LINK_OSS" /> দ্বারা তৈরি করা হয়েছে৷</translation>
 <translation id="3140883423282498090">আপনি পরবর্তী সময়ে যখন Google Chrome পুনরায় লঞ্চ করবেন আপনার পরিবর্তনগুলি কার্যকর হবে৷</translation>
 <translation id="3444832043240812445">যদি আপনি <ph name="BEGIN_LINK" />ক্র্যাশ প্রতিবেদন সক্ষম করেন<ph name="END_LINK" /> তাহলে এই পৃষ্ঠাটি কেবল আপনার সাম্প্রতিক ক্র্যাশগুলির তথ্য দেখায়৷</translation>
+<translation id="3875312571075912821">আপনার ফায়ারওয়াল বা অ্যান্টিভাইরাস সেটিংসে Chrome কে নেটওয়ার্ক অ্যাক্সেস 
+        করতে মঞ্জুরি দিন।</translation>
 <translation id="4010643444566880169">Chrome OS তার প্রাথমিক সেটআপ সম্পূর্ণ করেনি।</translation>
 <translation id="6011049234605203654">Chrome মেনুতে
           যান &gt;
diff --git a/components/strings/components_google_chrome_strings_ko.xtb b/components/strings/components_google_chrome_strings_ko.xtb
index ee517152..eedd03a 100644
--- a/components/strings/components_google_chrome_strings_ko.xtb
+++ b/components/strings/components_google_chrome_strings_ko.xtb
@@ -7,7 +7,7 @@
 <translation id="2874156562296220396">Chrome은 <ph name="BEGIN_LINK_CHROMIUM" />Chromium<ph name="END_LINK_CHROMIUM" /> 오픈소스 프로젝트를 비롯한 여러 <ph name="BEGIN_LINK_OSS" />오픈소스 소프트웨어<ph name="END_LINK_OSS" />에 기초해 만들어진 브라우저입니다.</translation>
 <translation id="3140883423282498090">Chrome을 다시 시작하면 변경사항이 적용됩니다.</translation>
 <translation id="3444832043240812445"><ph name="BEGIN_LINK" />충돌 보고를 사용<ph name="END_LINK" />하면 최근 충돌에 대한 정보만 이 페이지에 표시됩니다.</translation>
-<translation id="3875312571075912821">Chrome이 방화벽이나 바이러스 백신이 설정된
+<translation id="3875312571075912821">Chrome이 방화벽이나 백신 프로그램이 설정된
         네트워크에 액세스할 수 있도록 허용합니다.</translation>
 <translation id="4010643444566880169">Chrome OS 초기 설정이 완료되지 않았습니다.</translation>
 <translation id="6011049234605203654">Chrome 메뉴 &gt;
diff --git a/components/strings/components_google_chrome_strings_ro.xtb b/components/strings/components_google_chrome_strings_ro.xtb
index a02ffc2e..c6e55f1 100644
--- a/components/strings/components_google_chrome_strings_ro.xtb
+++ b/components/strings/components_google_chrome_strings_ro.xtb
@@ -7,6 +7,8 @@
 <translation id="2874156562296220396">Google Chrome există ca urmare a proiectului open source <ph name="BEGIN_LINK_CHROMIUM" />Chromium<ph name="END_LINK_CHROMIUM" /> și al altor <ph name="BEGIN_LINK_OSS" />software-uri open source<ph name="END_LINK_OSS" />.</translation>
 <translation id="3140883423282498090">Modificările se vor aplica următoarea dată când relansați Google Chrome.</translation>
 <translation id="3444832043240812445">Această pagină afișează informații cu privire la recentele blocări numai dacă <ph name="BEGIN_LINK" />activezi raportarea blocărilor<ph name="END_LINK" />.</translation>
+<translation id="3875312571075912821">Din setările pentru firewall sau antivirus, permite browserului Chrome să acceseze
+          rețeaua.</translation>
 <translation id="4010643444566880169">Sistemul de operare Chrome nu a finalizat configurarea inițială.</translation>
 <translation id="6011049234605203654">Accesați
           meniul Chrome &gt;
diff --git a/components/strings/components_google_chrome_strings_tr.xtb b/components/strings/components_google_chrome_strings_tr.xtb
index ecb2afd..48ff3703 100644
--- a/components/strings/components_google_chrome_strings_tr.xtb
+++ b/components/strings/components_google_chrome_strings_tr.xtb
@@ -7,6 +7,8 @@
 <translation id="2874156562296220396">Google Chrome, <ph name="BEGIN_LINK_CHROMIUM" />Chromium<ph name="END_LINK_CHROMIUM" /> açık kaynak projesi ve diğer <ph name="BEGIN_LINK_OSS" />açık kaynak yazılımlar<ph name="END_LINK_OSS" /> ile oluşturulmuştur.</translation>
 <translation id="3140883423282498090">Yaptığınız değişiklikler Google Chrome'u yeniden başlattığınızda geçerli olacak.</translation>
 <translation id="3444832043240812445"><ph name="BEGIN_LINK" />Kilitlenme bildirmeyi etkinleştirdiyseniz<ph name="END_LINK" />, bu sayfada yalnızca, karşılaştığınız son kilitlenme olayları hakkında bilgiler gösterilir.</translation>
+<translation id="3875312571075912821">Güvenlik duvarınızın veya virüsten korunma programınızın ayarlarından,
+        Chrome'un ağa erişmesine izin verin.</translation>
 <translation id="4010643444566880169">Chrome OS ilk kurulumu tamamlayamadı.</translation>
 <translation id="6011049234605203654">Chrome menüsü &gt;
           <ph name="SETTINGS_TITLE" />
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index e2da54f..2eebc90 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">ትሮችን ክፈት</translation>
 <translation id="1753706481035618306">የገጽ ቁጥር</translation>
 <translation id="1763864636252898013">ይህ አገልጋይ <ph name="DOMAIN" /> መሆኑን ሊያረጋግጥ አልቻለም፤ የደህንነት እውቅና ማረጋገጫው በመሣሪያዎ ስርዓተ ክወና የሚታመን አይደለም። ይሄ በተሳሳተ አወቃቀር ወይም አንድ አጥቂ ግንኙነትዎን በመጥለፉ የተከሰተ ሊሆን ይችላል።</translation>
-<translation id="1775135663370355363">ታሪክ ከዚህ መሣሪያ በማሳየት ላይ። <ph name="BEGIN_LINK" />ተጨማሪ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">እባክዎ የማመሳሰል ይለፍ ሐረግዎን ያዘምኑ።</translation>
 <translation id="1791429645902722292">Google ዘመናዊ ቁልፍ</translation>
 <translation id="1821930232296380041">ልክ ያልሆነ ጥያቄ ወይም የጥያቄ ልኬቶች</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">የላቁ ደብቅ</translation>
 <translation id="3479539252931486093">ይህ ያልተጠበቀ ነበር? <ph name="BEGIN_LINK" />ያሳውቁን<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">በዚህ ጊዜ ላይ ወላጅህን ማግኘት አልቻልንም። እባክህ እንደገና ሞክር።</translation>
-<translation id="3516765099410062445">ታሪክ ከገቡ መሣሪያዎችዎ በማሳየት ላይ። <ph name="BEGIN_LINK" />ተጨማሪ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">አቃፊ</translation>
 <translation id="3528171143076753409">የአገልጋይ እውቅና ማረጋገጫ የታመነ አይደለም።</translation>
 <translation id="3539171420378717834">የዚህን ካርድ ቅጂ በዚህ መሣሪያ ላይ አቆይ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index d0d0942e..0efdf8e 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">علامات التبويب المفتوحة</translation>
 <translation id="1753706481035618306">رقم الصفحة</translation>
 <translation id="1763864636252898013">هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ بل إنه شهادة أمان غير موثوقة من خلال نظام تشغيل جهازك. وربما يكون السبب في ذلك خطأ في التكوين أو مهاجمًا يعترض الاتصال.</translation>
-<translation id="1775135663370355363">إظهار السجل من هذا الجهاز. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">الرجاء تحديث عبارة مرور المزامنة.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">طلب غير صالح، أو معلمات طلب غير صالحة</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">الإخفاء (خيار متقدم)</translation>
 <translation id="3479539252931486093">ألم تتوقَّع هذا؟ <ph name="BEGIN_LINK" />أطلِعنا على الأمر<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">لم نتمكن من الوصول إلى أحد والديك في الوقت الحالي. يُرجى إعادة المحاولة مرة أخرى.</translation>
-<translation id="3516765099410062445">إظهار السجل من الأجهزة التي تم تسجيل الدخول إليها. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">المجلد</translation>
 <translation id="3528171143076753409">شهادة الخادم غير موثوق فيها.</translation>
 <translation id="3539171420378717834">الاحتفاظ بنسخة من هذه البطاقة على هذا الجهاز</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index e497d0f..54a2788 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Отворени раздели</translation>
 <translation id="1753706481035618306">Номер на страницата</translation>
 <translation id="1763864636252898013">Сървърът не можа да докаже, че е <ph name="DOMAIN" />; операционната система на устройството ви няма доверие на сертификата му за сигурност. Това може да се дължи на неправилно конфигуриране или на прихващане на връзката ви от атакуващ.</translation>
-<translation id="1775135663370355363">Показва се историята от това устройство. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Моля, актуализирайте пропуска си за синхронизиране.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Заявката или параметрите й са невалидни</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Скриване на подробностите</translation>
 <translation id="3479539252931486093">Това неочаквано ли беше? <ph name="BEGIN_LINK" />Уведомете ни<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Не можахме да се свържем с родителя ви. Моля, опитайте отново.</translation>
-<translation id="3516765099410062445">Показва се историята от устройствата, на които сте влезли в профила си. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
 <translation id="3528171143076753409">Сертификатът на сървъра не е надежден.</translation>
 <translation id="3539171420378717834">Съхраняване на копие на картата на това устройство</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index f6543d6..b6c97bb 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">খোলা ট্যাব</translation>
 <translation id="1753706481035618306">পৃষ্ঠা সংখ্যা</translation>
 <translation id="1763864636252898013">এই সার্ভার প্রমাণ করতে পারেনি যে এটি <ph name="DOMAIN" />; এর নিরাপত্তা শংসাপত্রটি আপনার ডিভােইসের নিকট বিশ্বাসযোগ্য নয়। কোনো ভুল কনফিগারেশনের কারণে অথবা কোনো আক্রমণকারী আপনার সংযোগ মাঝপথে আটকে দিচ্ছে বলে এমনটা হতে পারে।</translation>
-<translation id="1775135663370355363">এই ডিভাইস থেকে ইতিহাস দেখাচ্ছে৷ <ph name="BEGIN_LINK" />আরো জানুন<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">দয়া করে আপনার সিঙ্ক পাসফ্রেজ আপডেট করুন৷</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">অবৈধ অনুরোধ বা অনুরোধ মাপকাঠিগুলি</translation>
@@ -255,7 +254,6 @@
 <translation id="3462200631372590220">উন্নত করার বিশদ বিবরণ, লুকান</translation>
 <translation id="3479539252931486093">এটি কি অপ্রত্যাশিত ছিল? <ph name="BEGIN_LINK" />আমাদেরকে জানান<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">আমরা এই মুহূর্তে আপনার পিতামাতার সাথে যোগাযোগ করতে পারিনি৷ অনুগ্রহ করে আবার চেষ্টা করুন৷</translation>
-<translation id="3516765099410062445">আপনার সাইন ইন করা ডিভাইসগুলি থেকে ইতিহাস দেখাচ্ছে৷ <ph name="BEGIN_LINK" />আরো জানুন<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ফোল্ডার</translation>
 <translation id="3528171143076753409">সার্ভারের শংসাপত্র বিশ্বস্ত নয়৷</translation>
 <translation id="3539171420378717834">এই ডিভাইসে কার্ডটির একটি প্রতিলিপি রাখুন</translation>
@@ -270,6 +268,8 @@
 <translation id="3609138628363401169">সার্ভারটি TLS পুনঃনেগোশিয়েশান এক্সটেনশান সমর্থন করে না৷</translation>
 <translation id="362276910939193118">সম্পূর্ণ ইতিহাস দেখান</translation>
 <translation id="3623476034248543066">মান দেখান</translation>
+<translation id="3630155396527302611">নেটওয়ার্ক অ্যাক্সেস করতে এটি যদি ইতোমধ্যে মঞ্জুরিকৃত প্রোগ্রাম হিসাবে তালিকাতে থাকে, তাহলে
+      তালিকাটি থেকে এটি সরানোর চেষ্টা করে পুনরায় যোগ করে দেখুন।</translation>
 <translation id="3648607100222897006">এই পরীক্ষামূলক বৈশিষ্ট্যগুলি যেকোনো সময়ে পরিবর্তন, ভঙ্গ বা অদৃশ্য হয়ে যেতে পারে৷ আপনি এই পরীক্ষাগুলির যেকোনো একটি চালু করতে কী ঘটতে পারে সে সম্পর্কে আমরা কোনো রকম নিশ্চয়তা দিই না এবং এমনকি আপনার ব্রাউজার তাত্ক্ষণিকভাবে বিস্ফোরণ ঘটাতে পারে৷ মজা সরিয়ে, আপনার ব্রাউজার আপনার সকল ডেটা মুছে দিতে পারে, বা আপনার সুরক্ষা ও গোপনীয়তা অপ্রত্যাশিতভাবে ক্ষতিগ্রস্থ হতে পারে৷ আপনার দ্বারা সক্রিয় করা যেকোনো পরীক্ষা এই ব্রাউজারের সমস্ত ব্যবহারকারীদের জন্য সক্রিয় হবে৷ দয়া করে সাবধানতার সাথে এগিয়ে যান৷</translation>
 <translation id="3650584904733503804">বৈধতা যাচাইকরণ সফল হয়েছে</translation>
 <translation id="3651020361689274926">অনুরোধ হওয়া সংস্থানটি আর বিদ্যমান নেই এবং অগ্রবর্তী ঠিকানা নেই৷ এটি একটি স্থায়ী অবস্থা হিসাবে প্রত্যাশিত৷</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index 5b89406..26f54060 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -74,7 +74,6 @@
 <translation id="17513872634828108">Pestanyes obertes</translation>
 <translation id="1753706481035618306">Número de pàgina</translation>
 <translation id="1763864636252898013">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el sistema operatiu del vostre dispositiu considera que el seu certificat de seguretat no és de confiança. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation>
-<translation id="1775135663370355363">S'està mostrant l'historial d'aquest dispositiu. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Actualitzeu la frase de contrasenya de sincronització.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Sol·licitud o paràmetres de la sol·licitud no vàlids</translation>
@@ -251,7 +250,6 @@
 <translation id="3462200631372590220">Amaga la informació avançada</translation>
 <translation id="3479539252931486093">Heu trobat el lloc bloquejat de manera inesperada? <ph name="BEGIN_LINK" />Informeu-nos-en<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">En aquests moments no ens hem pogut posar en contacte amb els pares. Torneu-ho a provar.</translation>
-<translation id="3516765099410062445">S'està mostrant l'historial dels dispositius on heu iniciat la sessió. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
 <translation id="3528171143076753409">El certificat del servidor no és de confiança.</translation>
 <translation id="3539171420378717834">Desa una còpia d'aquesta targeta al dispositiu</translation>
@@ -266,7 +264,7 @@
 <translation id="3609138628363401169">El servidor no admet l'extensió de renegociació TLS.</translation>
 <translation id="362276910939193118">Mostra l'historial complet</translation>
 <translation id="3623476034248543066">Mostra el valor</translation>
-<translation id="3630155396527302611">Si ja està inclòs com un programa amb autorització per accedir a la xarxa, proveu
+<translation id="3630155396527302611">Si ja està inclòs a la llista de programes autoritzats per accedir a la xarxa, proveu
       de suprimir-lo de la llista i torneu-lo a afegir.</translation>
 <translation id="3648607100222897006">Aquestes funcions experimentals poden canviar, trencar-se o desaparèixer en qualsevol moment. No donem cap garantia sobre què pot passar si activeu algun d'aquests experiments, i fins i tot el vostre navegador es podria fregir de sobte. Bromes a part,és possible que el vostre navegador suprimeixi totes les vostres dades, o bé la seguretat i la privadesa poden estar compromeses de maneres inesperades. Qualsevol experiment que activeu s'activaran per a tots els usuaris d'aquest navegador. Continueu amb precaució.</translation>
 <translation id="3650584904733503804">Validació correcta</translation>
@@ -730,7 +728,7 @@
 <translation id="901974403500617787">Les marques que s'apliquen a tot el sistema només les pot definir l'usuari: <ph name="OWNER_EMAIL" />.</translation>
 <translation id="9020142588544155172">El servidor ha rebutjat la connexió.</translation>
 <translation id="9020542370529661692">Aquesta pàgina s'ha traduït a <ph name="TARGET_LANGUAGE" /></translation>
-<translation id="9038649477754266430">Utilitzeu un servei de predicció per poder carregar les pàgines més ràpidament</translation>
+<translation id="9038649477754266430">Utilitza un servei de predicció per poder carregar les pàgines més ràpidament</translation>
 <translation id="9039213469156557790">A més, aquesta pàgina conté altres recursos que no són segurs. La resta d'usuaris poden visualitzar-los mentre estan en trànsit, i algun atacant podria modificar-los per canviar el comportament de la pàgina.</translation>
 <translation id="9049981332609050619">Heu provat d'accedir a <ph name="DOMAIN" />, però el servidor ha presentat un certificat no vàlid.</translation>
 <translation id="9050666287014529139">Frase de contrasenya</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index b42c106..dfab6f2 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -74,7 +74,6 @@
 <translation id="17513872634828108">Otevřené karty</translation>
 <translation id="1753706481035618306">Číslo stránky</translation>
 <translation id="1763864636252898013">Server nedokázal prokázat, že patří doméně <ph name="DOMAIN" />. Operační systém vašeho zařízení nedůvěřuje jeho bezpečnostnímu certifikátu. Může to být způsobeno nesprávnou konfigurací nebo tím, že vaše připojení zachytává útočník.</translation>
-<translation id="1775135663370355363">Zobrazuje se historie z tohoto zařízení. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Aktualizujte prosím heslovou frázi pro synchronizaci.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Neplatný požadavek nebo parametry požadavku</translation>
@@ -241,7 +240,6 @@
 <translation id="3462200631372590220">Skrýt rozšířené</translation>
 <translation id="3479539252931486093">Nebylo toto očekáváno? <ph name="BEGIN_LINK" />Informujte nás<ph name="END_LINK" />.</translation>
 <translation id="3498215018399854026">V tuto chvíli se nám s vaším rodičem nepodařilo spojit. Zkuste to prosím znovu.</translation>
-<translation id="3516765099410062445">Zobrazuje se historie všech přihlášených zařízení. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Složka</translation>
 <translation id="3528171143076753409">Certifikát serveru není důvěryhodný.</translation>
 <translation id="3539171420378717834">Uchovat kopii této karty v tomto zařízení</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index 986dd2d..1636d1f9 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Åbne faner</translation>
 <translation id="1753706481035618306">Sidetal</translation>
 <translation id="1763864636252898013">Denne server kunne ikke bevise, at den er <ph name="DOMAIN" />, da operativsystemet på din enhed ikke har tillid til sikkerhedscertifikatet. Dette kan skyldes en fejlkonfiguration, eller at en hacker har opfanget din forbindelse.</translation>
-<translation id="1775135663370355363">Viser historik fra denne enhed. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Opdater din adgangssætning til synkronisering.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Ugyldig anmodning eller anmodningsparametre</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Skjul avanceret</translation>
 <translation id="3479539252931486093">Var dette uventet? <ph name="BEGIN_LINK" />Giv os gerne feedback<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Vi kan ikke få fat i din forælder på nuværende tidspunkt. Prøv igen.</translation>
-<translation id="3516765099410062445">Viser historik fra de enheder, hvor du er logget ind. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappe</translation>
 <translation id="3528171143076753409">Serverens certifikat er ikke troværdigt.</translation>
 <translation id="3539171420378717834">Gem en kopi af dette kort på denne enhed</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index eda583fe..6045e139 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -78,7 +78,6 @@
 <translation id="17513872634828108">Geöffnete Tabs</translation>
 <translation id="1753706481035618306">Seitenzahl</translation>
 <translation id="1763864636252898013">Dieser Server konnte nicht beweisen, dass er <ph name="DOMAIN" /> ist. Sein Sicherheitszertifikat wird vom Betriebssystem Ihres Geräts als nicht vertrauenswürdig eingestuft. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.</translation>
-<translation id="1775135663370355363">Der Verlauf für dieses Gerät wird angezeigt. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Synchronisierungs-Passphrase aktualisieren</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Anfrage oder Anfrageparameter ungültig</translation>
@@ -255,7 +254,6 @@
 <translation id="3462200631372590220">Erweiterte Informationen ausblenden</translation>
 <translation id="3479539252931486093">Geschah dies unerwartet? <ph name="BEGIN_LINK" />Informieren Sie uns<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Wir können deinen Vater bzw. deine Mutter momentan nicht erreichen. Bitte versuche es später erneut.</translation>
-<translation id="3516765099410062445">Der Verlauf für alle Geräte, auf denen Sie angemeldet sind, wird angezeigt. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Ordner</translation>
 <translation id="3528171143076753409">Serverzertifikat ist nicht vertrauenswürdig.</translation>
 <translation id="3539171420378717834">Kopie dieser Karte auf diesem Gerät speichern</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index a8a459c..8c2e8ff0 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Ανοικτές καρτέλες</translation>
 <translation id="1753706481035618306">Αριθμός σελίδας</translation>
 <translation id="1763864636252898013">Ο διακομιστής δεν μπόρεσε να αποδείξει ότι είναι <ph name="DOMAIN" />. Το πιστοποιητικό ασφαλείας του δεν θεωρείται έμπιστο από το λειτουργικό σύστημα της συσκευής σας. Αυτό μπορεί να οφείλεται σε λανθασμένη ρύθμιση ή σε κάποιον τρίτο που επιτίθεται στη σύνδεσή σας.</translation>
-<translation id="1775135663370355363">Εμφάνιση ιστορικού από αυτήν τη συσκευή. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Ενημερώστε την κωδική φράση πρόσβασης συγχρονισμού.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Μη έγκυρο αίτημα ή παράμετροι αιτήματος</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Απόκρυψη σύνθετων</translation>
 <translation id="3479539252931486093">Δεν το περιμένατε; <ph name="BEGIN_LINK" />Ενημερώστε μας<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Δεν ήταν δυνατή η επικοινωνία με τον γονέα σας αυτήν τη στιγμή. Δοκιμάστε ξανά.</translation>
-<translation id="3516765099410062445">Εμφάνιση ιστορικού από τις συνδεδεμένες συσκευές σας. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Φάκελος</translation>
 <translation id="3528171143076753409">Το πιστοποιητικό του διακομιστή δεν είναι αξιόπιστο.</translation>
 <translation id="3539171420378717834">Διατήρηση αντιγράφου αυτής της κάρτας σε αυτήν τη συσκευή</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 9f2da9f..2c854db 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Open tabs</translation>
 <translation id="1753706481035618306">Page number</translation>
 <translation id="1763864636252898013">This server could not prove that it is <ph name="DOMAIN" />; its security certificate is not trusted by your device's operating system. This may be caused by a misconfiguration or an attacker intercepting your connection.</translation>
-<translation id="1775135663370355363">Showing history from this device. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Please update your sync passphrase.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Invalid request or request parameters</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Hide advanced</translation>
 <translation id="3479539252931486093">Was this unexpected? <ph name="BEGIN_LINK" />Let us know<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">We could not reach your parent at the moment. Please try again.</translation>
-<translation id="3516765099410062445">Showing history from your signed-in devices. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3528171143076753409">Server's certificate is not trusted</translation>
 <translation id="3539171420378717834">Keep a copy of this card on this device</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 47c0c32..ad7e889a 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -76,7 +76,6 @@
 <translation id="17513872634828108">Pestañas abiertas</translation>
 <translation id="1753706481035618306">Número de página</translation>
 <translation id="1763864636252898013">Este servidor no pudo probar que su dominio es <ph name="DOMAIN" />; el sistema operativo del dispositivo no confía en el certificado de seguridad. Es posible que esto se deba a una configuración incorrecta o a que un atacante interceptó la conexión.</translation>
-<translation id="1775135663370355363">Se muestra el historial de este dispositivo. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Actualiza tu frase de contraseña de sincronización.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Solicitud o parámetros de solicitud no válidos</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ocultar detalles avanzados</translation>
 <translation id="3479539252931486093">¿Ocurrió algo inesperado? <ph name="BEGIN_LINK" />Cuéntanos<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">No pudimos comunicarnos con ninguno de tus padres. Vuelve a intentarlo.</translation>
-<translation id="3516765099410062445">Se muestra el historial de los dispositivos a los que accediste. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
 <translation id="3528171143076753409">El certificado del servidor no es de confianza.</translation>
 <translation id="3539171420378717834">Conservar una copia de la tarjeta en el dispositivo.</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 10aaff1..233e686 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Pestañas abiertas</translation>
 <translation id="1753706481035618306">Número de página</translation>
 <translation id="1763864636252898013">Este servidor no ha podido probar que su dominio es <ph name="DOMAIN" />, el sistema operativo de tu dispositivo no confía en su certificado de seguridad. Este problema puede deberse a una configuración incorrecta o a que un atacante haya interceptado la conexión.</translation>
-<translation id="1775135663370355363">Mostrando historial de este dispositivo. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Actualiza tu frase de contraseña de sincronización.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Parámetros de solicitud o solicitud no válidos</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ocultar opciones avanzadas</translation>
 <translation id="3479539252931486093">¿No te lo esperabas? <ph name="BEGIN_LINK" />Notifícanoslo<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">No hemos podido contactar con tu padre/madre/tutor. Vuelve a intentarlo.</translation>
-<translation id="3516765099410062445">Mostrando historial de dispositivos en los que has iniciado sesión. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Carpeta</translation>
 <translation id="3528171143076753409">El certificado de servidor no es de confianza.</translation>
 <translation id="3539171420378717834">Guardar una copia de la tarjeta en este dispositivo</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 12854fb..da055795 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Avatud vahelehed</translation>
 <translation id="1753706481035618306">Lk</translation>
 <translation id="1763864636252898013">Server ei suutnud tõestada, et see on domeen <ph name="DOMAIN" />, seadme operatsioonisüsteem ei usalda selle turvasertifikaati. Selle põhjuseks võib olla vale seadistus või ründaja, kes on sekkunud teie ühendusse.</translation>
-<translation id="1775135663370355363">Kuvatakse ajalugu sellest seadmest. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Värskendage sünkroonimise parooli.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Taotlus või selle parameetrid on kehtetud</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Peida täpsemad üksikasjad</translation>
 <translation id="3479539252931486093">Kas see oli ootamatu? <ph name="BEGIN_LINK" />Andke meile sellest teada<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Teie vanemaga ei õnnestunud praegu ühendust võtta. Proovige hiljem uuesti.</translation>
-<translation id="3516765099410062445">Kuvatakse ajalugu teie sisselogitud seadmetest. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Kaust</translation>
 <translation id="3528171143076753409">Serveri sertifikaat ei ole usaldusväärne.</translation>
 <translation id="3539171420378717834">Säilita kaardi koopia seadmes</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 7579bcf..0e5c4d1 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">بازکردن برگه‌ها</translation>
 <translation id="1753706481035618306">شماره صفحه</translation>
 <translation id="1763864636252898013">این سرور نتوانست اثبات کند که این <ph name="DOMAIN" /> است؛ گواهی امنیتی آن مورد اعتماد سیستم عامل دستگاه شما نیست. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجی اتصال شما را قطع کرده است.</translation>
-<translation id="1775135663370355363">نمایش سابقه از این دستگاه. <ph name="BEGIN_LINK" />کسب اطلاعات بیشتر<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">لطفاً «رمز عبارتی همگام‌سازی» خود را به‌روزرسانی کنید.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">پارامترهای درخواست یا درخواست نامعتبر</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">پنهان کردن پیشرفته</translation>
 <translation id="3479539252931486093">غیرمنتظره بود؟ <ph name="BEGIN_LINK" />به ما اطلاع دهید<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">در حال حاضر نمی‌توانیم با والدینتان تماس برقرار کنیم. لطفاً دوباره امتحان کنید.</translation>
-<translation id="3516765099410062445">نمایش سابقه از دستگاه‌هایی که با آنها به سیستم وارد شده‌اید. <ph name="BEGIN_LINK" />کسب اطلاعات بیشتر<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">پوشه</translation>
 <translation id="3528171143076753409">گواهی سرور مطمئن نیست.</translation>
 <translation id="3539171420378717834">یک کپی از این کارت در این دستگاه نگهداری شود</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index 83b5da5..38ce44d7 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Avoimet välilehdet</translation>
 <translation id="1753706481035618306">Sivunumero</translation>
 <translation id="1763864636252898013">Palvelin ei voinut todistaa olevansa <ph name="DOMAIN" />; laitteesi käyttöjärjestelmä ei luota sen suojausvarmenteeseen. Tämä voi johtua määritysvirheestä tai verkkoyhteytesi siepanneesta hyökkääjästä.</translation>
-<translation id="1775135663370355363">Näytetään tämän laitteen historia. <ph name="BEGIN_LINK" />Lisätietoja<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Päivitä synkronoinnin tunnuslause.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Pyyntö on virheellinen tai pyynnön parametrit ovat virheelliset</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Piilota lisäasetukset</translation>
 <translation id="3479539252931486093">Etkö odottanut tätä? <ph name="BEGIN_LINK" />Kerro siitä meille.<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Emme tavoittaneet vanhempaasi. Yritä uudelleen.</translation>
-<translation id="3516765099410062445">Näytetään kirjautuneiden laitteiden historia. <ph name="BEGIN_LINK" />Lisätietoja<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Kansio</translation>
 <translation id="3528171143076753409">Palvelimen varmenne ei ole luotettava.</translation>
 <translation id="3539171420378717834">Säilytä tämän kortin kopio laitteella.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index e25df68..c5c314a 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Mga bukas na tab</translation>
 <translation id="1753706481035618306">Numero ng page</translation>
 <translation id="1763864636252898013">Hindi mapatunayan ng server na ito na ito ay <ph name="DOMAIN" />; hindi pinagkakatiwalaan ng operating system ng iyong device ang certificate ng seguridad nito. Maaaring dulot ito ng maling configuration o isang umaatake na hinahadlangan ang iyong koneksyon.</translation>
-<translation id="1775135663370355363">Ipinapakita ang kasaysayan mula sa device na ito. <ph name="BEGIN_LINK" />Matuto nang higit pa<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Mangyaring i-update ang iyong passphrase ng pag-sync.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Di-wastong kahilingan o mga parameter ng kahilingan</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Itago ang advanced</translation>
 <translation id="3479539252931486093">Hindi mo ba ito inaasahan? <ph name="BEGIN_LINK" />Ipaalam sa amin<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Hindi namin makaugnayan ang iyong magulang sa sandaling ito. Pakisubukang muli.</translation>
-<translation id="3516765099410062445">Ipinapakita ang kasaysayan mula sa iyong mga naka-sign in na device. <ph name="BEGIN_LINK" />Matuto nang higit pa<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3528171143076753409">Hindi pinagkakatiwalaan ang certificate ng server.</translation>
 <translation id="3539171420378717834">Magtago ng kopya ng card na ito sa device na ito</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index ad53a0d0..7cd41cfd 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Onglets ouverts</translation>
 <translation id="1753706481035618306">Numéro de page</translation>
 <translation id="1763864636252898013">Impossible de vérifier sur le serveur qu'il s'agit bien du domaine <ph name="DOMAIN" />, car son certificat de sécurité n'est pas considéré comme fiable par le système d'exploitation de votre appareil. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.</translation>
-<translation id="1775135663370355363">Affichage de l'historique de cet appareil : <ph name="BEGIN_LINK" />en savoir plus<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Mettre à jour votre phrase secrète de synchronisation</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">La demande ou ses paramètres ne sont pas valides.</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Masquer les paramètres avancés</translation>
 <translation id="3479539252931486093">S'agit-il d'une erreur inattendue ? <ph name="BEGIN_LINK" />Signalez-nous ce problème.<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Impossible de joindre votre parent pour le moment. Veuillez réessayer.</translation>
-<translation id="3516765099410062445">Affichage de l'historique des appareils auxquels vous êtes connecté : <ph name="BEGIN_LINK" />en savoir plus<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dossier</translation>
 <translation id="3528171143076753409">Le certificat du serveur n'est pas approuvé.</translation>
 <translation id="3539171420378717834">Conserver une copie de cette carte sur cet appareil</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 02a28e5..14bfc48 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">ટેબ્સ ખોલો</translation>
 <translation id="1753706481035618306">પૃષ્ઠ નંબર</translation>
 <translation id="1763864636252898013">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર તમારા ઉપકરણની ઑપરેટિંગ સિસ્ટમ દ્વારા વિશ્વસનીય નથી. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation>
-<translation id="1775135663370355363">આ ઉપકરણમાંથી ઇતિહાસ બતાવી રહ્યાં છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">કૃપા કરી તમારા સમન્વયન પાસફ્રેઝને અપડેટ કરો.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">અમાન્ય વિનંતી અથવા વિનંતી પરિમાણો</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">વિગતવાર છુપાવો</translation>
 <translation id="3479539252931486093">શું આ અનપેક્ષિત હતું? <ph name="BEGIN_LINK" />અમને જણાવો<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">અમે આ પળે તમારા વાલી સુધી પહોંચી શક્યાં નથી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
-<translation id="3516765099410062445">તમે સાઇન ઇન થયેલા હોય તેવા ઉપકરણોમાંથી ઇતિહાસ બતાવી રહ્યું છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ફોલ્ડર</translation>
 <translation id="3528171143076753409">સર્વરનું પ્રમાણપત્ર વિશ્વસનીય નથી.</translation>
 <translation id="3539171420378717834">આ ઉપકરણ પર આ કાર્ડની એક કૉપિ રાખો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 100e217..c147dc1 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">टैब खोलें</translation>
 <translation id="1753706481035618306">पृष्‍ठ संख्‍या</translation>
 <translation id="1763864636252898013">यह सर्वर यह नहीं प्रमाणित कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र आपके डिवाइस के ऑपरेटिंग सिस्टम द्वारा विश्वसनीय नहीं है. ऐसा गलत कॉन्फ़िगरेशन या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन में अवरोध डालने के कारण हो सकता है.</translation>
-<translation id="1775135663370355363">इस डिवाइस का इतिहास दिखाया जा रहा है. <ph name="BEGIN_LINK" />अधिक जानें<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">कृपया अपना समन्‍वयन पासफ्रेज़ अपडेट करें.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">अमान्य अनुरोध या अनुरोध पैरामीटर</translation>
@@ -252,7 +251,6 @@
 <translation id="3462200631372590220">उन्नत को छिपाएं</translation>
 <translation id="3479539252931486093">क्या यह अनपेक्षित था? <ph name="BEGIN_LINK" />हमें बताएं<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">हम इस समय आपके अभिभावक तक नहीं पहुंच पा रहे हैं. कृपया पुन: प्रयास करें.</translation>
-<translation id="3516765099410062445">आपके साइन-इन किए गए डिवाइस का इतिहास दिखाया जा रहा है. <ph name="BEGIN_LINK" />अधिक जानें<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">फ़ोल्डर</translation>
 <translation id="3528171143076753409">सर्वर का प्रमाणपत्र विश्वसनीय नहीं है.</translation>
 <translation id="3539171420378717834">इस डिवाइस पर इस कार्ड की प्रतिलिपि रखें</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index b8e0fae3..79be6cf5 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Otvorene kartice</translation>
 <translation id="1753706481035618306">Broj stranice</translation>
 <translation id="1763864636252898013">Poslužitelj nije mogao dokazati da je <ph name="DOMAIN" />; operativni sustav vašeg uređaja smatra da njegov sigurnosni certifikat nije pouzdan. To može biti uzrokovano pogrešnom konfiguracijom ili napadom na vašu vezu.</translation>
-<translation id="1775135663370355363">Prikazuje se povijest s tog uređaja. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Ažurirajte zaporku za sinkronizaciju.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Nevažeći zahtjev ili parametri zahtjeva</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Sakrij napredno</translation>
 <translation id="3479539252931486093">Niste to očekivali? <ph name="BEGIN_LINK" />Javite nam<ph name="END_LINK" />.</translation>
 <translation id="3498215018399854026">Nismo uspjeli stupiti u kontakt s tvojim roditeljem. Pokušaj ponovo.</translation>
-<translation id="3516765099410062445">Prikazuje se povijest s uređaja na kojima se prijavljujete. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapa</translation>
 <translation id="3528171143076753409">Certifikat poslužitelja nije pouzdan.</translation>
 <translation id="3539171420378717834">Zadrži kopiju te kartice na uređaju</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 50b731fa..cd3a180 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Megnyitott lapok</translation>
 <translation id="1753706481035618306">Oldalszám</translation>
 <translation id="1763864636252898013">A szerver nem tudta bizonyítani, hogy valóban a(z) <ph name="DOMAIN" /> domainbe tartozik; biztonsági tanúsítványa az Ön eszközének operációs rendszere szerint nem megbízható. Ennek oka lehet konfigurációs hiba, vagy hogy egy támadó eltérítette az Ön kapcsolódását.</translation>
-<translation id="1775135663370355363">Előzmények megjelenítése erről az eszközről. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Kérjük, frissítse szinkronizálási összetett jelszavát.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Érvénytelen kérés vagy kérésparaméter</translation>
@@ -252,7 +251,6 @@
 <translation id="3462200631372590220">Speciális beállítások elrejtése</translation>
 <translation id="3479539252931486093">Ez váratlanul érte Önt? <ph name="BEGIN_LINK" />Tudassa velünk.<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Jelenleg nem tudjuk elérni szüleidet. Próbálkozz újra.</translation>
-<translation id="3516765099410062445">Előzmények megjelenítése bejelentkezett eszközeiről. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappa</translation>
 <translation id="3528171143076753409">A szervezet tanúsítványa nem megbízható.</translation>
 <translation id="3539171420378717834">A kártya másolatának megőrzése az eszközön</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 62b873b..159dda5 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Buka tab</translation>
 <translation id="1753706481035618306">Nomor laman</translation>
 <translation id="1763864636252898013">Server ini tidak dapat membuktikan bahwa ini adalah <ph name="DOMAIN" />; sertifikat keamanannya tidak dipercaya oleh sistem operasi perangkat Anda. Hal ini dapat disebabkan oleh kesalahan konfigurasi atau penyerang memotong sambungan Anda.</translation>
-<translation id="1775135663370355363">Menampilkan riwayat dari perangkat ini. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Perbarui frasa sandi sinkronisasi Anda.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Permintaan atau parameter permintaan tidak valid</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Sembunyikan lanjutan</translation>
 <translation id="3479539252931486093">Apakah hal ini tidak diharapkan? <ph name="BEGIN_LINK" />Beri tahu kami<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Orang tua Anda saat ini tidak dapat dihubungi. Coba lagi.</translation>
-<translation id="3516765099410062445">Menampilkan riwayat dari perangkat Anda yang sudah masuk. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3528171143076753409">Sertifikat server tidak dipercaya.</translation>
 <translation id="3539171420378717834">Menyimpan salinan kartu ini di perangkat ini</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 398e14cb..ee6f5413 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -74,7 +74,6 @@
 <translation id="17513872634828108">Schede aperte</translation>
 <translation id="1753706481035618306">Numero di pagina</translation>
 <translation id="1763864636252898013">Questo server non è riuscito a dimostrare che si tratta di <ph name="DOMAIN" />; il relativo certificato di sicurezza non è considerato attendibile dal sistema operativo del dispositivo. Il problema potrebbe essere dovuto a un'errata configurazione o a un malintenzionato che intercetta la connessione.</translation>
-<translation id="1775135663370355363">Visualizzazione della cronologia da questo dispositivo. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Aggiorna la tua passphrase di sincronizzazione.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Richiesta o parametri della richiesta non validi</translation>
@@ -241,7 +240,6 @@
 <translation id="3462200631372590220">Nascondi avanzate</translation>
 <translation id="3479539252931486093">Non era previsto? <ph name="BEGIN_LINK" />Contattaci<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">In questo momento, non è possibile raggiungere il tuo genitore. Riprova.</translation>
-<translation id="3516765099410062445">Visualizzazione della cronologia dai dispositivi su cui hai eseguito l'accesso. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Cartella</translation>
 <translation id="3528171143076753409">Il certificato del server non è affidabile.</translation>
 <translation id="3539171420378717834">Conserva una copia di questa carta sul dispositivo</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 2865abe6..e51a341f 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -76,7 +76,6 @@
 <translation id="17513872634828108">כרטיסיות פתוחות</translation>
 <translation id="1753706481035618306">מספר דף</translation>
 <translation id="1763864636252898013">השרת הזה לא הצליח להוכיח שהוא <ph name="DOMAIN" />. אישור האבטחה שלו לא נחשב כמהימן על ידי מערכת ההפעלה של המכשיר. ייתכן שהסיבה לכך היא תצורה שגויה או תוקף המיירט את החיבור שלך.</translation>
-<translation id="1775135663370355363">מציג היסטוריה מהמכשיר הזה. <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">עדכן את משפט-הסיסמה של הסינכרון.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">הבקשה או הפרמטרים של הבקשה אינם חוקיים</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">הסתר פרטים מתקדמים</translation>
 <translation id="3479539252931486093">האם זה קרה באופן בלתי צפוי? <ph name="BEGIN_LINK" />ספר לנו על כך<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">לא הצלחנו ליצור קשר עם ההורה שלך. נסה שוב מאוחר יותר.</translation>
-<translation id="3516765099410062445">מציג היסטוריה מהמכשירים שבהם אתה מחובר לחשבון. <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">תיקיה</translation>
 <translation id="3528171143076753409">אישור השרת אינו מהימן.</translation>
 <translation id="3539171420378717834">שמור עותק של הכרטיס הזה במכשיר הזה</translation>
@@ -370,7 +368,7 @@
 1240185477879256427אתר
 Del</translation>
 <translation id="477518548916168453">השרת אינו תומך בפונקציונליות הדרושה למילוי הבקשה.</translation>
-<translation id="4782449893814226250">שאלת את הוריך אם זה בסדר לבקר בדף זה.</translation>
+<translation id="4782449893814226250">שאלת את הוריך אם זה בסדר להיכנס לדף זה.</translation>
 <translation id="4800132727771399293">‏בדוק את תאריך התפוגה ואת ה-CVC ונסה שוב</translation>
 <translation id="4807049035289105102">‏לא ניתן לבקר כעת באתר <ph name="SITE" /> מכיוון שהאתר שלח אישורים משובשים ש-Google Chrome אינו יכול לעבד. שגיאות רשת ותקיפות מתרחשות בדרך כלל לזמן מוגבל, כך שסביר להניח שהדף הזה יפעל מאוחר יותר.</translation>
 <translation id="4813512666221746211">שגיאת רשת</translation>
@@ -474,7 +472,7 @@
 <translation id="6146055958333702838">בדוק את הכבלים והפעל מחדש את הנתבים, המודמים ושאר התקני הרשת
   שאתה משתמש בהם.</translation>
 <translation id="614940544461990577">נסה:</translation>
-<translation id="6150607114729249911">אופס! עליך לשאול את ההורים שלך אם אתה יכול לבקר בדף הזה.</translation>
+<translation id="6150607114729249911">אופס! עליך לשאול את ההורים שלך אם אתה יכול להיכנס לדף הזה.</translation>
 <translation id="6151417162996330722">תקופת התוקף של אישור השרת ארוכה מדי.</translation>
 <translation id="6154808779448689242">אסימון המדיניות שהוחזר אינו תואם לאסימון הנוכחי</translation>
 <translation id="6165508094623778733">למידע נוסף</translation>
@@ -571,7 +569,7 @@
 <translation id="721197778055552897"><ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /> בנושא זה.</translation>
 <translation id="7219179957768738017">החיבור משתמש ב-<ph name="SSL_VERSION" />.</translation>
 <translation id="7225807090967870017">מזהה גרסה</translation>
-<translation id="7231308970288859235">אופס! עליך לשאול את ההורה שלך אם אתה יכול לבקר בדף הזה.</translation>
+<translation id="7231308970288859235">אופס! עליך לשאול את ההורה שלך אם אתה יכול להיכנס לדף הזה.</translation>
 <translation id="7246609911581847514">אתה רואה את ההודעה הזו מפני שהמנהל שלך צריך לאשר אתרים חדשים עם הביקור הראשון שלך.</translation>
 <translation id="725866823122871198">לא ניתן ליצור חיבור פרטי אל <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> מפני שהתאריך והשעה (<ph name="DATE_AND_TIME" />) במחשב שלך שגויים.</translation>
 <translation id="7265986070661382626">לא ניתן לבקר כעת ב-<ph name="SITE" /> מכיוון שהאתר <ph name="BEGIN_LINK" />משתמש בהצמדת אישורים<ph name="END_LINK" />. שגיאות רשת ותקיפות מתרחשות בדרך כלל לזמן מוגבל, כך שסביר להניח שהדף יפעל מאוחר יותר.</translation>
@@ -642,7 +640,7 @@
 <translation id="7894616681410591072">אופס! אתה צריך אישור מ<ph name="NAME" /> כדי לגשת לדף הזה.</translation>
 <translation id="790025292736025802"><ph name="URL" /> לא נמצא</translation>
 <translation id="7912024687060120840">בתיקייה:</translation>
-<translation id="7920092496846849526">שאלת את ההורים אם זה בסדר לבקר בדף זה.</translation>
+<translation id="7920092496846849526">שאלת את ההורים אם זה בסדר להיכנס לדף זה.</translation>
 <translation id="7935318582918952113">DOM Distiller</translation>
 <translation id="7938958445268990899">אישור השרת עדיין לא בתוקף.</translation>
 <translation id="7951415247503192394">(32 סיביות)</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 0ac8882a..66608c6 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">開いているタブ</translation>
 <translation id="1753706481035618306">ページ番号</translation>
 <translation id="1763864636252898013">このサーバーが <ph name="DOMAIN" /> であることを確認できませんでした。このサーバーのセキュリティ証明書は、ご使用のデバイスのオペレーティング システムによって信頼されているものではありません。原因としては、不適切な設定や、悪意のあるユーザーによる接続妨害が考えられます。</translation>
-<translation id="1775135663370355363">このデバイスから履歴を表示しています。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">同期パスフレーズを更新してください。</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">無効なリクエストまたはリクエスト パラメータです</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">詳細情報を表示しない</translation>
 <translation id="3479539252931486093">想定外の動作である場合は、<ph name="BEGIN_LINK" />問題を報告<ph name="END_LINK" />してください。</translation>
 <translation id="3498215018399854026">現在、保護者にたずねることができません。もう一度お試しください。</translation>
-<translation id="3516765099410062445">ログインしているデバイスから履歴を表示しています。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">フォルダ</translation>
 <translation id="3528171143076753409">サーバーの証明書を信頼できません。</translation>
 <translation id="3539171420378717834">このデバイスにこのカード情報のコピーを保存する</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 108afe4e..d5fb2f4 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -76,7 +76,6 @@
 <translation id="17513872634828108">ತೆರೆದ ಟ್ಯಾಬ್‌ಗಳು</translation>
 <translation id="1753706481035618306">ಪುಟ ಸಂಖ್ಯೆ</translation>
 <translation id="1763864636252898013">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವು ನಿಮ್ಮ ಸಾಧನದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ ಪ್ರಕಾರ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಲ್ಲ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation>
-<translation id="1775135663370355363">ಈ ಸಾಧನದದಲ್ಲಿನ ಇತಿಹಾಸವನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಿಂಕ್ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ನವೀಕರಿಸಿ.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">ಅಮಾನ್ಯವಾದ ವಿನಂತಿ ಅಥವಾ ವಿನಂತಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು</translation>
@@ -248,7 +247,6 @@
 <translation id="3462200631372590220">ಸುಧಾರಿತ ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="3479539252931486093">ಇದು ಅನಿರೀಕ್ಷಿತವೇ? <ph name="BEGIN_LINK" />ನಮಗೆ ತಿಳಿಸಿ<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">ಈ ಕ್ಷಣದಲ್ಲಿ ನಿಮ್ಮ ಪೋಷಕರನ್ನು ತಲುಪಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
-<translation id="3516765099410062445">ನಿಮ್ಮ ಸೈನ್ ಇನ್ ಮಾಡಿದ ಸಾಧನಗಳಿಂದ ಇತಿಹಾಸವನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ಫೋಲ್ಡರ್</translation>
 <translation id="3528171143076753409">ಸರ್ವರ್‌ನ ಪ್ರಮಾಣಪತ್ರ ನಂಬಲರ್ಹವಾಗಿಲ್ಲ.</translation>
 <translation id="3539171420378717834">ಈ ಸಾಧನದಲ್ಲಿ ಈ ಕಾರ್ಡ್‌ನ ನಕಲನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 7b06680..62cdbbb 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">열린 탭</translation>
 <translation id="1753706481035618306">페이지 번호</translation>
 <translation id="1763864636252898013">이 서버가 <ph name="DOMAIN" />임을 입증할 수 없으며 기기의 운영체제에서 신뢰하는 보안 인증서가 아닙니다. 서버를 잘못 설정했거나 불법 사용자가 연결을 가로채고 있기 때문일 수 있습니다.</translation>
-<translation id="1775135663370355363">이 기기의 방문 기록을 표시합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">동기화 암호를 업데이트하세요.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">잘못된 요청 또는 요청 매개변수</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">세부정보 숨기기</translation>
 <translation id="3479539252931486093">예기치 않은 문제가 발생했나요? <ph name="BEGIN_LINK" />Google에 알리기<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">현재 부모님께 연락할 수 없습니다. 나중에 다시 시도해 주세요.</translation>
-<translation id="3516765099410062445">로그인한 기기의 방문 기록을 표시합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">폴더</translation>
 <translation id="3528171143076753409">서버의 인증서를 신뢰할 수 없습니다.</translation>
 <translation id="3539171420378717834">카드 사본을 이 기기에 저장</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 4187ac74..c08b2891 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Atidaryti skirtukai</translation>
 <translation id="1753706481035618306">Puslapio numeris</translation>
 <translation id="1763864636252898013">Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas nėra patikimas įrenginio operacinei sistemai. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užgrobėjo.</translation>
-<translation id="1775135663370355363">Rodoma šio įrenginio istorija. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Atnaujinkite sinchronizavimo slaptafrazę.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Netinkama užklausa arba jos parametrai</translation>
@@ -255,7 +254,6 @@
 <translation id="3462200631372590220">Slėpti išsamią informaciją</translation>
 <translation id="3479539252931486093">Ar tai buvo netikėta? <ph name="BEGIN_LINK" />Praneškime mums apie tai<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Šiuo metu nepavyko susisiekti su jūsų tėvu. Bandykite dar kartą.</translation>
-<translation id="3516765099410062445">Rodoma įrenginių, kuriuose esate prisijungę, istorija. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Aplankas</translation>
 <translation id="3528171143076753409">Serverio sertifikatas nepatikimas.</translation>
 <translation id="3539171420378717834">Išsaugoti kortelės kopiją įrenginyje</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index 8b9a9eb..b422fcc 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Atvērt cilnes</translation>
 <translation id="1753706481035618306">Lapas numurs</translation>
 <translation id="1763864636252898013">Šis serveris nevarēja pierādīt, ka šī ir vietne <ph name="DOMAIN" />; tās drošības sertifikāts netiek uzskatīts par uzticamu jūsu ierīces operētājsistēmā. Iespējams, tas ir nepareizas konfigurācijas dēļ vai arī kāds ir ļaunprātīgi izmantojis jūsu savienojumu.</translation>
-<translation id="1775135663370355363">Tiek rādīta vēsture no šīs ierīces. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="1783075131180517613">Atjauniniet savu sinhronizācijas ieejas frāzi.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Pieprasījums vai tā parametri nebija derīgi.</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Slēpt papildu informāciju</translation>
 <translation id="3479539252931486093">Vai tas bija negaidīti? <ph name="BEGIN_LINK" />Informējiet mūs<ph name="END_LINK" />!</translation>
 <translation id="3498215018399854026">Mēs nevarējām sasniegt jūsu māti/tēvu. Lūdzu, mēģiniet vēlreiz.</translation>
-<translation id="3516765099410062445">Tiek rādīta vēsture no ierīcēm, kurās esat pierakstījies. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="3527085408025491307">Mape</translation>
 <translation id="3528171143076753409">Servera sertifikāts nav uzticams.</translation>
 <translation id="3539171420378717834">Saglabāt šīs kartes kopiju šajā ierīcē</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index 9713b258..8292f17 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">ഓപ്പൺ ടാബുകൾ</translation>
 <translation id="1753706481035618306">പേജ് നമ്പർ</translation>
 <translation id="1763864636252898013">ഈ സെർവറിന് അത് <ph name="DOMAIN" /> ആണെന്ന് തെളിയിക്കാനായില്ല; അതിന്റെ സുരക്ഷ സർട്ടിഫിക്കറ്റിനെ നിങ്ങളുടെ ഉപകരണത്തിന്റെ ഓപ്പറേറ്റിംഗ് സിസ്‌റ്റത്തിന് പരിചയമില്ല. തെറ്റായ കോൺഫിഗറേഷൻ കാരണമോ ഒരു അക്രമണകാരി നിങ്ങളുടെ കണക്ഷനെ തടസ്സപ്പെടുത്തുന്നത് കൊണ്ടോ ആയിരിക്കാം ഇത് സംഭവിച്ചത്.</translation>
-<translation id="1775135663370355363">ഈ ഉപകരണത്തിൽ നിന്നുള്ള ചരിത്രം കാണിക്കുന്നു. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">നിങ്ങളുടെ സമന്വയ പാസ്‌ഫ്രേസ് ദയവായി അപ്‌ഡേറ്റ് ചെയ്യുക.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">അഭ്യർത്ഥന അല്ലെങ്കിൽ അഭ്യർത്ഥന പാരാമീറ്ററുകൾ അസാധുവാണ്</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">വിപുലമായവ മറയ്ക്കുക</translation>
 <translation id="3479539252931486093">ഇത് അപ്രതീക്ഷിതമായിരുന്നോ? <ph name="BEGIN_LINK" />ഞങ്ങളെ അറിയിക്കുക<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">ഇപ്പോൾ ഞങ്ങൾക്ക് നിങ്ങളുടെ രക്ഷകർത്താവിനെ ബന്ധപ്പെടാനായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation>
-<translation id="3516765099410062445">നിങ്ങളുടെ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന ഉപകരണങ്ങളിൽ നിന്നുള്ള ചരിത്രം കാണിക്കുന്നു. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ഫോൾഡർ</translation>
 <translation id="3528171143076753409">സെര്‍വറിന്‍റെ സര്‍ട്ടിഫിക്കറ്റ് വിശ്വാസയോഗ്യമല്ല.</translation>
 <translation id="3539171420378717834">ഈ ഉപകരണത്തിൽ ഈ കാർഡിന്റെ ഒരു പകർപ്പ് സൂക്ഷിക്കുക</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index fd89a247..b6b8a11 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">खुले टॅब</translation>
 <translation id="1753706481035618306">पृष्ठ क्रमांक</translation>
 <translation id="1763864636252898013">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता प्रमाणपत्र आपल्या डिव्हाइसच्या ऑपरेटिंग प्रणालीद्वारे विश्वसनीय नाही. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा आक्रमणकर्त्याने आपले कनेक्शन आंतरखंडित केल्यामुळे झाले असू शकते.</translation>
-<translation id="1775135663370355363">या डिव्हाइसवरील इतिहास दर्शवत आहे. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">कृपया आपले समक्रमित सांकेतिक वाक्यांश अद्यतनित करा.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">अवैध विनंती किंवा विनंती मापदंड</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">प्रगत लपवा</translation>
 <translation id="3479539252931486093">हे अनपेक्षित होते? <ph name="BEGIN_LINK" />आम्हाला कळवा<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">याक्षणी आम्ही आपल्या पालकांपर्यंत पोहोचू शकलो नाही. कृपया पुन्हा प्रयत्न करा.</translation>
-<translation id="3516765099410062445">आपल्या साइन-इन केलेल्या डिव्हाइसेसवरील इतिहास दर्शवत आहे. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">फोल्डर</translation>
 <translation id="3528171143076753409">सर्व्हरचे प्रमाणपत्र विश्वासनीय नाही.</translation>
 <translation id="3539171420378717834">या डिव्हाइसवर या कार्डची एक प्रत ठेवा</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index e8db489..430688e 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Buka tab</translation>
 <translation id="1753706481035618306">Nombor halaman</translation>
 <translation id="1763864636252898013">Pelayan ini tidak dapat membuktikan bahawa domainnya ialah <ph name="DOMAIN" />; sijil keselamatannya tidak dipercayai oleh sistem pengendalian peranti anda. Ini mungkin disebabkan oleh kesilapan konfigurasi atau penyerang yang memintasi sambungan anda.</translation>
-<translation id="1775135663370355363">Menunjukkan sejarah dari peranti ini. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Sila kemas kini frasa laluan segerak anda.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Permintaan atau parameter permintaan tidak sah</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Menyembunyikan butiran</translation>
 <translation id="3479539252931486093">Adakah hal ini tidak dijangka? <ph name="BEGIN_LINK" />Beritahu kami<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Kami tidak dapat menghubungi ibu bapa anda pada masa ini. Sila cuba lagi.</translation>
-<translation id="3516765099410062445">Memaparkan sejarah dari peranti log masuk anda. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3528171143076753409">Sijil pelayan tidak dipercayai.</translation>
 <translation id="3539171420378717834">Simpan salinan kad ini pada peranti ini</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 4861df1..edaf2e8a3 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -74,7 +74,6 @@
 <translation id="17513872634828108">Geopende tabbladen</translation>
 <translation id="1753706481035618306">Paginanummer</translation>
 <translation id="1763864636252898013">De server kan niet bewijzen dat dit <ph name="DOMAIN" /> is. Het beveiligingscertificaat van de server wordt niet vertrouwd door het besturingssysteem van je apparaat. Dit kan worden veroorzaakt door een verkeerde configuratie of een aanvaller die je verbinding onderschept.</translation>
-<translation id="1775135663370355363">Geschiedenis van dit apparaat wordt weergegeven. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Update je wachtwoordzin voor synchronisatie.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Ongeldige aanvraag of aanvraagparameters</translation>
@@ -241,7 +240,6 @@
 <translation id="3462200631372590220">Gedetailleerde informatie verbergen</translation>
 <translation id="3479539252931486093">Wat dit onverwacht? <ph name="BEGIN_LINK" />Laat het ons weten<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">We kunnen je ouder momenteel niet bereiken. Probeer het opnieuw.</translation>
-<translation id="3516765099410062445">Geschiedenis van je ingelogde apparaten wordt weergegeven. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Map</translation>
 <translation id="3528171143076753409">Het servercertificaat is niet betrouwbaar.</translation>
 <translation id="3539171420378717834">Een exemplaar van deze kaart op dit apparaat bewaren</translation>
@@ -401,7 +399,7 @@
 <translation id="5439770059721715174">Schemavalidatiefout op '<ph name="ERROR_PATH" />': <ph name="ERROR" /></translation>
 <translation id="5447330194051379405">Alle opgeslagen pagina's weergeven</translation>
 <translation id="5452270690849572955">Deze pagina op <ph name="HOST_NAME" /> kan niet worden gevonden</translation>
-<translation id="5455374756549232013">Onjuiste tijdstempel van beleid</translation>
+<translation id="5455374756549232013">Onjuist tijdstempel van beleid</translation>
 <translation id="5455790498993699893"><ph name="ACTIVE_MATCH" /> van <ph name="TOTAL_MATCHCOUNT" /></translation>
 <translation id="5470861586879999274">&amp;Opnieuw bewerken</translation>
 <translation id="5492298309214877701">Deze site op het intranet van het bedrijf, de organisatie of de school heeft dezelfde URL als een externe website.
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 816332c..b12bf33 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Åpne faner</translation>
 <translation id="1753706481035618306">Sidenummer</translation>
 <translation id="1763864636252898013">Denne tjeneren kunne ikke bevise at den er <ph name="DOMAIN" />. Sikkerhetssertifikatet til tjeneren er ikke klarert av enhetens operativsystem. Dette kan være forårsaket av en feilkonfigurering eller en angriper som avskjærer tilkoblingen din.</translation>
-<translation id="1775135663370355363">Viser loggen fra denne enheten. <ph name="BEGIN_LINK" />Les mer<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Oppdater passordfrasen for synkronisering.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Ugyldig forespørsel eller forespørselsparametere</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Skjul detaljer</translation>
 <translation id="3479539252931486093">Var dette uventet? <ph name="BEGIN_LINK" />Si fra til oss<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Vi kunne ikke nå foreldrene dine akkurat nå. Prøv igjen.</translation>
-<translation id="3516765099410062445">Viser loggen fra de påloggede enhetene. <ph name="BEGIN_LINK" />Les mer<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mappe</translation>
 <translation id="3528171143076753409">Tjenerens sertifikat er ikke pålitelig.</translation>
 <translation id="3539171420378717834">Lagre en kopi av dette kortet på denne enheten</translation>
@@ -482,7 +480,7 @@
 <translation id="6282194474023008486">Postnummer</translation>
 <translation id="6305205051461490394"><ph name="URL" /> er ikke tilgjengelig.</translation>
 <translation id="6321917430147971392">Kontrollér DNS-innstillingene dine</translation>
-<translation id="6328639280570009161">Prøv å slå av nettverksforslag.</translation>
+<translation id="6328639280570009161">Prøv å slå av nettverksforutsigelse</translation>
 <translation id="6337534724793800597">Filtrér retningslinjer etter navn</translation>
 <translation id="6342069812937806050">Akkurat nå</translation>
 <translation id="6355080345576803305">Offentlig økt-overstyring</translation>
@@ -735,7 +733,7 @@
 <translation id="901974403500617787">Rapporteringer som gjelder for hele systemet kan bare angis av eieren: <ph name="OWNER_EMAIL" />.</translation>
 <translation id="9020142588544155172">Tjeneren tillot ikke tilkoblingen.</translation>
 <translation id="9020542370529661692">Denne siden har blitt oversatt til <ph name="TARGET_LANGUAGE" /></translation>
-<translation id="9038649477754266430">Bruk en forslagstjeneste for å laste inn sider raskere</translation>
+<translation id="9038649477754266430">Bruk en prediksjonstjeneste for å laste inn sider raskere</translation>
 <translation id="9039213469156557790">Denne siden inneholder i tillegg andre ressurser som ikke er sikre. Disse ressursene er synlige for andre mens de sendes frem og tilbake, og eventuelle angripere kan modifisere dem for å endre på atferden til siden.</translation>
 <translation id="9049981332609050619">Du forsøkte å nå <ph name="DOMAIN" />, men tjeneren oppga et ugyldig sertifikat.</translation>
 <translation id="9050666287014529139">Passordfrase</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index 7e48aa0..e1819dc 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Otwarte karty</translation>
 <translation id="1753706481035618306">Numer strony</translation>
 <translation id="1763864636252898013">Ten serwer nie mógł udowodnić, że należy do <ph name="DOMAIN" />. Jego certyfikat bezpieczeństwa nie jest zaufany w systemie operacyjnym tego urządzenia. Może to być spowodowane błędną konfiguracją lub przechwyceniem połączenia przez atakującego.</translation>
-<translation id="1775135663370355363">Wyświetlanie historii z tego urządzenia. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Zaktualizuj swoje hasło synchronizacji.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Nieprawidłowe żądanie lub jego parametry</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">Ukryj zaawansowane</translation>
 <translation id="3479539252931486093">Zaskoczyło Cię to? <ph name="BEGIN_LINK" />Daj nam znać<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Obecnie nie możemy się skontaktować z Twoim rodzicem. Spróbuj ponownie.</translation>
-<translation id="3516765099410062445">Wyświetlanie historii z zalogowanych urządzeń. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3528171143076753409">Certyfikat serwera nie jest zaufany.</translation>
 <translation id="3539171420378717834">Zachowaj kopię tej karty na urządzeniu</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index 4be49a5..9440478 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Guias abertas</translation>
 <translation id="1753706481035618306">Numero da página</translation>
 <translation id="1763864636252898013">Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança não é confiável para o sistema operacional do seu dispositivo. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.</translation>
-<translation id="1775135663370355363">Mostrando histórico deste dispositivo. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Favor atualizar sua senha de sincronização.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Solicitação ou parâmetros de solicitação inválidos</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ocultar detalhes</translation>
 <translation id="3479539252931486093">Isso foi inesperado? <ph name="BEGIN_LINK" />Informe-nos<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Não foi possível contatar seu pai/mãe no momento. Tente novamente.</translation>
-<translation id="3516765099410062445">Mostrando o histórico de seus dispositivos conectados. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Pasta</translation>
 <translation id="3528171143076753409">O certificado do servidor não é confiável.</translation>
 <translation id="3539171420378717834">Manter uma cópia deste cartão neste dispositivo</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index dc5c9aa..535df02 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Separadores abertos</translation>
 <translation id="1753706481035618306">Número de página</translation>
 <translation id="1763864636252898013">Este servidor não conseguiu provar que é o domínio <ph name="DOMAIN" />; o sistema operativo do seu dispositivo não confia no respetivo certificado de segurança. Isto pode ser o resultado de uma configuração incorreta ou de um invasor a intercetar a sua ligação.</translation>
-<translation id="1775135663370355363">A mostrar o histórico deste dispositivo. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Atualize a frase de acesso de sincronização.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Pedido ou parâmetros do pedido inválidos</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ocultar avançadas</translation>
 <translation id="3479539252931486093">Esta ação foi inesperada? <ph name="BEGIN_LINK" />Informe-nos<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Não conseguimos falar com o(a) seu (sua) pai/mãe de momento. Tente novamente.</translation>
-<translation id="3516765099410062445">A mostrar o histórico do seus dispositivos com sessão iniciada. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Pasta</translation>
 <translation id="3528171143076753409">O certificado do servidor não é fidedigno.</translation>
 <translation id="3539171420378717834">Guardar uma cópia deste cartão neste dispositivo</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 9f78e69..44045f6 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">File deschise</translation>
 <translation id="1753706481035618306">Numărul paginii</translation>
 <translation id="1763864636252898013">Acest server nu a putut dovedi că este <ph name="DOMAIN" />; sistemul de operare al dispozitivului nu consideră că certificatul său de securitate este de încredere. Cauza poate fi o configurare greșită sau interceptarea conexiunii de către un atacator.</translation>
-<translation id="1775135663370355363">Se afișează istoricul de pe dispozitiv. <ph name="BEGIN_LINK" />Aflați mai multe<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Actualizează expresia de acces pentru sincronizare.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Solicitarea sau parametrii săi sunt greșiți</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">Ascundeți detaliile avansate</translation>
 <translation id="3479539252931486093">A fost o situație neașteptată? <ph name="BEGIN_LINK" />Anunță-ne<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Momentan, nu ți-am putut contacta părintele. Încearcă din nou.</translation>
-<translation id="3516765099410062445">Se afișează istoricul din dispozitivele de pe care v-ați conectat. <ph name="BEGIN_LINK" />Aflați mai multe<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Dosar</translation>
 <translation id="3528171143076753409">Certificatul serverului nu este de încredere.</translation>
 <translation id="3539171420378717834">Păstrează o copie a cardului pe dispozitiv</translation>
@@ -268,6 +266,8 @@
 <translation id="3609138628363401169">Serverul nu acceptă extensia de renegociere TLS.</translation>
 <translation id="362276910939193118">Afișează întregul istoric</translation>
 <translation id="3623476034248543066">Afișați valoarea</translation>
+<translation id="3630155396527302611">Dacă este deja inclus ca program căruia i se permite să acceseze rețeaua, încearcă
+      să îl elimini din listă și să îl adaugi din nou.</translation>
 <translation id="3648607100222897006">Aceste funcții experimentale pot oricând să se schimbe, să nu mai funcționeze sau să dispară. Nu oferim absolut nicio garanție cu privire la efectele activării acestor experimente. Se poate chiar ca browserul să se defecteze brusc. Lăsând gluma la o parte, browserul poate să șteargă toate datele sau securitatea și confidențialitatea datelor se pot compromite într-un mod neașteptat. Toate experimentele pe care le activezi vor fi activate pentru toți utilizatorii acestui browser. Continuă cu prudență.</translation>
 <translation id="3650584904733503804">Validarea a reușit</translation>
 <translation id="3651020361689274926">Resursa solicitată nu mai există și nu apare nicio adresă de redirecționare. Se pare că această stare este definitivă.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index f5dee0c..fd150a8 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Открытые вкладки</translation>
 <translation id="1753706481035618306">Номер страницы</translation>
 <translation id="1763864636252898013">Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Операционная система устройства не доверяет его сертификату безопасности. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.</translation>
-<translation id="1775135663370355363">Отображается история только для этого устройства. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Обновите кодовую фразу для синхронизации.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Недопустимый запрос или неверные параметры запроса</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">Скрыть подробности</translation>
 <translation id="3479539252931486093">Этот сайт не должен быть заблокирован? <ph name="BEGIN_LINK" />Сообщите нам об этом<ph name="END_LINK" />.</translation>
 <translation id="3498215018399854026">Не удалось связаться с вашими родителями. Повторите попытку.</translation>
-<translation id="3516765099410062445">Отображается история со всех устройств, на которых используется тот же аккаунт. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
 <translation id="3528171143076753409">Сертификат сервера не является доверенным.</translation>
 <translation id="3539171420378717834">Хранить данные карты на этом устройстве</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 4eaa232a..194e48a3 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -74,7 +74,6 @@
 <translation id="17513872634828108">Otvorené karty</translation>
 <translation id="1753706481035618306">Číslo stránky</translation>
 <translation id="1763864636252898013">Server nedokáže overiť, či ide o doménu <ph name="DOMAIN" />, operačný systém vášho zariadenia nedôveruje jej bezpečnostnému certifikátu. Môže to byť spôsobené nesprávnou konfiguráciou alebo tým, že vaše pripojenie zachytil útočník.</translation>
-<translation id="1775135663370355363">Zobrazuje sa história tohto zariadenia. <ph name="BEGIN_LINK" />Viac informácií<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Aktualizujte prístupovú frázu na synchronizáciu.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Neplatná žiadosť alebo parametre žiadosti</translation>
@@ -241,7 +240,6 @@
 <translation id="3462200631372590220">Skryť rozšírené podrobnosti</translation>
 <translation id="3479539252931486093">Neočakávali ste to? <ph name="BEGIN_LINK" />Dajte nám vedieť<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">V tejto chvíli sa nám nepodarilo spojiť s vaším rodičom. Skúste to znova neskôr.</translation>
-<translation id="3516765099410062445">Zobrazuje sa história zo zariadení, na ktorých ste prihlásený/-á. <ph name="BEGIN_LINK" />Viac informácií<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Priečinok</translation>
 <translation id="3528171143076753409">Certifikát servera nie je dôveryhodný.</translation>
 <translation id="3539171420378717834">Ponechať kópiu tejto karty na tomto zariadení</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index 7061f37..56b51dc3 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Odpri zavihke</translation>
 <translation id="1753706481035618306">Številka strani</translation>
 <translation id="1763864636252898013">Strežniku ni uspelo dokazati, da je <ph name="DOMAIN" />; operacijski sistem vaše naprave ne zaupa njegovemu varnostnemu potrdilu. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.</translation>
-<translation id="1775135663370355363">Prikaz zgodovine te naprave. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Posodobite geslo za sinhronizacijo.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Neveljavna zahteva ali parametri zahteve</translation>
@@ -255,7 +254,6 @@
 <translation id="3462200631372590220">Skrij podrobnosti</translation>
 <translation id="3479539252931486093">Ali tega niste pričakovali? <ph name="BEGIN_LINK" />Sporočite nam<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Trenutno ni mogoče vzpostaviti stika s staršem. Poskusi znova pozneje.</translation>
-<translation id="3516765099410062445">Prikaz zgodovine naprav, v katere ste prijavljeni. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapa</translation>
 <translation id="3528171143076753409">Potrdilo strežnika ni zaupanja vredno.</translation>
 <translation id="3539171420378717834">Ohrani kopijo te kartice v tej napravi</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index d9fa74b9..3b30fa5d 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -76,7 +76,6 @@
 <translation id="17513872634828108">Отворене картице</translation>
 <translation id="1753706481035618306">Број странице</translation>
 <translation id="1763864636252898013">Овај сервер не може да докаже да је <ph name="DOMAIN" />; оперативни систем уређаја нема поверења у његов безбедносни сертификат. Узрок томе је можда погрешна конфигурација или нападач који је прекинуо везу.</translation>
-<translation id="1775135663370355363">Приказујемо историју са овог уређаја. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Ажурирај приступну фразу за синхронизацију</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Неважећи захтев или параметри захтева</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">Сакриј напредно</translation>
 <translation id="3479539252931486093">Да ли је ово било неочекивано? <ph name="BEGIN_LINK" />Обавестите нас<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Тренутно не можемо да контактирамо родитеља. Покушај поново.</translation>
-<translation id="3516765099410062445">Приказујемо историју са уређаја на које сте пријављени. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Директоријум</translation>
 <translation id="3528171143076753409">Сертификат сервера није поуздан.</translation>
 <translation id="3539171420378717834">Задржи копију ове картице на овом уређају</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 14b68c3f..ee5bb70 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Öppna flikar</translation>
 <translation id="1753706481035618306">Sidnummer</translation>
 <translation id="1763864636252898013">Servern kunde inte bevisa att den är <ph name="DOMAIN" /> eftersom enhetens operativsystem inte litar på dess säkerhetscertifikat. Detta kan orsakas av en felaktig konfigurering eller att någon spärrar anslutningen.</translation>
-<translation id="1775135663370355363">Visar historik från den här enheten. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Uppdatera lösenfrasen för synkroniseringen.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Begäran eller parametrar i begäran var ogiltiga</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Dölja avancerade uppgifter</translation>
 <translation id="3479539252931486093">Var det här oväntat? <ph name="BEGIN_LINK" />Meddela oss<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Vi kunde inte nå din förälder just nu. Försök igen.</translation>
-<translation id="3516765099410062445">Visar historik från enheter som du är inloggad på. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Mapp</translation>
 <translation id="3528171143076753409">Servercertifikatet är inte tillförlitligt.</translation>
 <translation id="3539171420378717834">Spara en kopia av kortet på enheten</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index deec83c..f8319cf 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -37,7 +37,7 @@
 <translation id="1227224963052638717">Sera isiyojulikana.</translation>
 <translation id="1227633850867390598">Ficha thamani</translation>
 <translation id="1228893227497259893">Kitambulisho cha huluki kisicho halali</translation>
-<translation id="1232569758102978740">Hakuna Kichwa</translation>
+<translation id="1232569758102978740">Hakina Jina</translation>
 <translation id="1254117744268754948">Chagua Folda</translation>
 <translation id="1270699273812232624">Ruhusu vipengee</translation>
 <translation id="1285320974508926690">Kamwe usitafsiri tovuti hii</translation>
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Vichupo vilivyo wazi</translation>
 <translation id="1753706481035618306">Nambari ya ukurasa</translation>
 <translation id="1763864636252898013">Seva hii haikuweza kuthibitisha kuwa ni <ph name="DOMAIN" />; cheti chake cha usalama hakiaminiwi na mfumo wa uendeshaji wa kifaa chako. Hii inaweza kusababishwa na usanidi usiofaa au mvamizi kuingilia muunganisho wako.</translation>
-<translation id="1775135663370355363">Inaonyesha historia kutoka katika kifaa hiki. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Tafadhali sasisha kaulisiri yako iliyolandanishwa.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Ombi au vigezo vya ombi batili</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ficha mahiri</translation>
 <translation id="3479539252931486093">Je, hukutarajia tukio hili? <ph name="BEGIN_LINK" />Tujulishe<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Hatukuweza kufikia mzazi wako wakati huu. Tafadhali jaribu tena.</translation>
-<translation id="3516765099410062445">Inaonyesha historia kutoka katika vifaa vyako ulivyoingia. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Folda</translation>
 <translation id="3528171143076753409">Cheti cha seva hakiaminiki.</translation>
 <translation id="3539171420378717834">Weka nakala ya kadi hii kwenye kifaa hiki</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 151d8f7..22c74565 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -76,7 +76,6 @@
 <translation id="17513872634828108">தாவல்களைத் திற</translation>
 <translation id="1753706481035618306">பக்க எண்</translation>
 <translation id="1763864636252898013">இது <ph name="DOMAIN" /> தான் என்பதை இந்தச் சேவையகம் உறுதிப்படுத்தவில்லை; இதன் பாதுகாப்புச் சான்றிதழை உங்கள் சாதனத்தின் இயக்க முறைமை நம்பவில்லை. இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.</translation>
-<translation id="1775135663370355363">இந்தச் சாதனத்திலிருந்து வரலாற்றைக் காட்டுகிறது. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">உங்களின் ஒத்திசை சொற்றொடரைப் புதுப்பிக்கவும்.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">தவறான கோரிக்கை அல்லது கோரிக்கை அளவுருக்கள்</translation>
@@ -248,7 +247,6 @@
 <translation id="3462200631372590220">மேம்பட்டவையை மறை</translation>
 <translation id="3479539252931486093">இதை எதிர்பார்க்கவில்லையா? <ph name="BEGIN_LINK" />எங்களுக்குத் தெரியப்படுத்தவும்<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">தற்போது உங்கள் பெற்றோரைத் தொடர்புகொள்ள முடியவில்லை. மீண்டும் முயற்சிக்கவும்.</translation>
-<translation id="3516765099410062445">நீங்கள் உள்நுழைந்திருக்கும் சாதனங்களிலிருந்து வரலாற்றைக் காண்பிக்கிறது. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">கோப்புறை</translation>
 <translation id="3528171143076753409">சேவையகச் சான்றிதழ் நம்பப்படவில்லை.</translation>
 <translation id="3539171420378717834">இந்தக் கார்டின் பிரதியை சாதனத்தில் சேமி</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 244c559..8091077f 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">తెరిచిన ట్యాబ్‍లు</translation>
 <translation id="1753706481035618306">పేజీ సంఖ్య</translation>
 <translation id="1763864636252898013">ఈ సర్వర్ <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రాన్ని మీ పరికర ఆపరేటింగ్ సిస్టమ్ విశ్వసించలేదు. ఇది తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా దాడిచేసే వ్యక్తి మీ కనెక్షన్‌కి అంతరాయం కలిగించడం వలన జరిగి ఉండవచ్చు.</translation>
-<translation id="1775135663370355363">ఈ పరికరం నుండి చరిత్రను చూపుతోంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">దయచేసి మీ సమకాలీకరణ పాస్‌ఫ్రేజ్‌ను నవీకరించండి.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">చెల్లని అభ్యర్థన లేదా అభ్యర్థన పరామితులు</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">అధునాతనం దాచు</translation>
 <translation id="3479539252931486093">ఊహించని విధంగా ఇది సంభవించిందా? <ph name="BEGIN_LINK" />మాకు తెలియజేయండి<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">మేము ప్రస్తుతం మీ తల్లి/తండ్రిని సంప్రదించలేకపోయాము. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
-<translation id="3516765099410062445">మీరు సైన్ ఇన్ చేసిన పరికరాల నుండి చరిత్రను చూపుతోంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">ఫోల్డర్</translation>
 <translation id="3528171143076753409">సర్వర్ యొక్క ప్రమాణ పత్రం నమ్మదగినది కాదు.</translation>
 <translation id="3539171420378717834">ఈ పరికరంలో ఈ కార్డ్ కాపీని ఉంచు</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 24c947c..6987be78 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">แท็บที่เปิดอยู่</translation>
 <translation id="1753706481035618306">เลขหน้า</translation>
 <translation id="1763864636252898013">เซิร์ฟเวอร์นี้ไม่สามารถพิสูจน์ได้ว่าเป็น <ph name="DOMAIN" /> เพราะระบบปฏิบัติการของอุปกรณ์ของคุณไม่เชื่อถือใบรับรองความปลอดภัย โดยอาจเกิดจากการกำหนดค่าผิดหรือผู้บุกรุกที่ขัดขวางการเชื่อมต่อของคุณ</translation>
-<translation id="1775135663370355363">กำลังแสดงประวัติจากอุปกรณ์นี้ <ph name="BEGIN_LINK" />เรียนรู้เพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">โปรดอัปเดตข้อความรหัสผ่านที่ซิงค์ของคุณ</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">คำขอหรือพารามิเตอร์คำขอไม่ถูกต้อง</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">ซ่อนข้อมูลขั้นสูง</translation>
 <translation id="3479539252931486093">หากเหตุการณ์นี้ผิดปกติ <ph name="BEGIN_LINK" />โปรดแจ้งให้เราทราบ<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">เราไม่สามารถติดต่อผู้ปกครองของคุณได้ในขณะนี้ โปรดลองอีกครั้ง</translation>
-<translation id="3516765099410062445">กำลังแสดงประวัติจากอุปกรณ์ที่คุณลงชื่อเข้าใช้ <ph name="BEGIN_LINK" />เรียนรู้เพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">โฟลเดอร์</translation>
 <translation id="3528171143076753409">ใบรับรองของเซิร์ฟเวอร์ไม่น่าเชื่อถือ</translation>
 <translation id="3539171420378717834">เก็บสำเนาบัตรนี้ไว้บนอุปกรณ์นี้</translation>
@@ -269,8 +267,8 @@
 <translation id="3609138628363401169">เซิร์ฟเวอร์ไม่สนับสนุนการยอมรับการแก้ไข TLS ซ้ำอีกครั้ง</translation>
 <translation id="362276910939193118">แสดงประวัติการเข้าชมทั้งหมด</translation>
 <translation id="3623476034248543066">แสดงค่า</translation>
-<translation id="3630155396527302611">หากอยู่ในรายการโปรแกรมที่ได้รับอนุญาตให้เข้าถึงเครือข่ายอยู่แล้ว
-      ให้ลองนำออกจากรายการและเพิ่มกลับเข้าไปใหม่</translation>
+<translation id="3630155396527302611">หากโปรแกรมอยู่ในรายการที่ได้รับอนุญาตให้เข้าถึงเครือข่ายอยู่แล้ว
+      ลองนำโปรแกรมออกจากรายการและเพิ่มกลับเข้าไปใหม่</translation>
 <translation id="3648607100222897006">คุณลักษณะทดลองเหล่านี้อาจมีการเปลี่ยนแปลง เสียหาย หรือยกเลิกไปได้ตลอดเวลา เราไม่รับประกันใดๆ เกี่ยวกับสิ่งที่อาจเกิดขึ้นทั้งสิ้นหากคุณเปิดใช้การทดลองรายการใดรายการหนึ่งนี้ เบราว์เซอร์ของคุณอาจพังโดยไม่มีสัญญาณเตือน ยิ่งไปกว่านั้น เบราว์เซอร์อาจลบข้อมูลทั้งหมดของคุณได้ หรือการรักษาความปลอดภัยและความเป็นส่วนตัวของคุณอาจโดนคุกคามโดยไม่คาดคิด การทดลองใดๆ ที่คุณเปิดใช้งานจะเปิดใช้สำหรับผู้ใช้ทุกคนที่ใช้เบราว์เซอร์นี้ด้วย โปรดดำเนินการด้วยความระมัดระวัง</translation>
 <translation id="3650584904733503804">การตรวจสอบสำเร็จ</translation>
 <translation id="3651020361689274926">ทรัพยากรที่ร้องขอไม่มีอยู่แล้วและไม่พบที่อยู่ในการส่งต่อ ปัญหานี้ไม่ใช่ข้อผิดพลาดที่เกิดขึ้นชั่วคราว</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 8b6bcad..d34ae43 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Açık sekmeler</translation>
 <translation id="1753706481035618306">Sayfa numarası</translation>
 <translation id="1763864636252898013">Bu sunucu <ph name="DOMAIN" /> olduğunu kanıtlayamadı. cihazınızın işletim sistemi, sunucunun güvenlik sertifikasına güvenmiyor. Bu durum, bir yanlış yapılandırmadan veya bağlantıya müdahale eden bir saldırgandan kaynaklanıyor olabilir.</translation>
-<translation id="1775135663370355363">Bu cihazın geçmişi gösteriliyor. <ph name="BEGIN_LINK" />Daha fazla bilgi edinin<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Lütfen senkronizasyon parolanızı güncelleyin.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Geçersiz istek veya istek parametreleri</translation>
@@ -253,7 +252,6 @@
 <translation id="3462200631372590220">Gelişmiş bilgileri gizle</translation>
 <translation id="3479539252931486093">Bu beklenmedik bir durum mu? <ph name="BEGIN_LINK" />Bize bildirin<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Şu anda ebeveyninize erişemedik. Lütfen tekrar deneyin.</translation>
-<translation id="3516765099410062445">Oturum açtığınız cihazlardan geçmiş bilgileri gösteriliyor. <ph name="BEGIN_LINK" />Daha fazla bilgi edinin<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Klasör</translation>
 <translation id="3528171143076753409">Sunucunun sertifikasına güvenilmiyor.</translation>
 <translation id="3539171420378717834">Bu kartın bir kopyasını bu cihazda tut</translation>
@@ -268,6 +266,8 @@
 <translation id="3609138628363401169">Sunucu TLS yeniden anlaşma uzantısını desteklemiyor.</translation>
 <translation id="362276910939193118">Tam Geçmişi Göster</translation>
 <translation id="3623476034248543066">Değeri göster</translation>
+<translation id="3630155396527302611">Ağa erişmesine izin verilmiş bir program olarak zaten listeleniyorsa,
+    listeden kaldırıp tekrar eklemeyi deneyin.</translation>
 <translation id="3648607100222897006">Bu deneysel özellikler zaman zaman değişebilir, bozulabilir veya kullanımdan kaldırılabilir. Bu deneylerden herhangi birini açtığınızda tarayıcınızın aniden yanmaya başlaması mümkün olduğundan, başınıza gelebilecekler konusunda kesinlikle hiçbir garanti vermeyiz. Şaka bir yana, tarayıcınız tüm verilerinizi silebilir ya da güvenliğiniz ve gizliliğiniz beklenmedik şekillerde riske girebilir. Etkinleştireceğiniz her deney bu tarayıcının tüm kullanıcıları için etkin hale gelecektir. Lütfen dikkatle ilerleyin.</translation>
 <translation id="3650584904733503804">Doğrulama başarılı</translation>
 <translation id="3651020361689274926">İstenen kaynak artık mevcut değil ve yönlendirme adresi yok. Bunun kalıcı bir durum olması bekleniyor.</translation>
@@ -730,7 +730,7 @@
 <translation id="901974403500617787">Tüm sistem için geçerli olan işaretler sadece sahibi <ph name="OWNER_EMAIL" /> tarafından ayarlanabilir.</translation>
 <translation id="9020142588544155172">Sunucu bağlantıyı reddetti.</translation>
 <translation id="9020542370529661692">Bu sayfa <ph name="TARGET_LANGUAGE" /> diline çevrildi</translation>
-<translation id="9038649477754266430">Sayfaları daha hızlı yüklemek için bir tahmin hizmeti kullanın</translation>
+<translation id="9038649477754266430">Sayfaları daha hızlı yüklemek için bir tahmin hizmeti kullan</translation>
 <translation id="9039213469156557790">Ayrıca, bu sayfa güvenli olmayan başka kaynaklar içeriyor. Bu kaynaklar, aktarım sırasında başkaları tarafından görülebilir ve bir saldırgan tarafından sayfanın davranışını değiştirmek üzere kullanılabilir.</translation>
 <translation id="9049981332609050619"><ph name="DOMAIN" /> alan adına erişmeye çalıştınız, ancak sunucu geçersiz bir sertifika sağladı.</translation>
 <translation id="9050666287014529139">Parola</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 10aaf3da..3337937f 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Відкриті вкладки</translation>
 <translation id="1753706481035618306">Номер сторінки</translation>
 <translation id="1763864636252898013">Цей сервер не зміг довести, що він – домен <ph name="DOMAIN" />. Операційна система вашого пристрою не вважає його сертифікат безпеки надійним. Імовірні причини: неправильна конфігурація або хтось намагається перехопити ваше з’єднання.</translation>
-<translation id="1775135663370355363">Показано історію з цього пристрою. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Оновіть парольну фразу для синхронізації.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Недійсний запит або параметри запиту</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Сховати додаткову інформацію</translation>
 <translation id="3479539252931486093">Не очікували? <ph name="BEGIN_LINK" />Повідомте нас<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Не вдалося зв’язатися з одним із ваших батьків. Повторіть спробу.</translation>
-<translation id="3516765099410062445">Показано історію з пристроїв, на яких ви ввійшли. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Папка</translation>
 <translation id="3528171143076753409">Сертифікат сервера ненадійний.</translation>
 <translation id="3539171420378717834">Зберігати копію даних цієї картки на цьому пристрої</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index ada568b..ccab061 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">Tab đang mở</translation>
 <translation id="1753706481035618306">Số trang</translation>
 <translation id="1763864636252898013">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này không được hệ điều hành thiết bị của bạn tin cậy. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.</translation>
-<translation id="1775135663370355363">Hiển thị lịch sử từ thiết bị này. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">Vui lòng cập nhật cụm mật khẩu đồng bộ hóa của bạn.</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">Yêu cầu hoặc tham số yêu cầu không hợp lệ</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">Ẩn chi tiết</translation>
 <translation id="3479539252931486093">Trang web này có như bạn mong đợi không? Hãy <ph name="BEGIN_LINK" />cho chúng tôi biết<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">Chúng tôi không thể liên lạc với cha mẹ của bạn vào thời điểm này. Vui lòng thử lại.</translation>
-<translation id="3516765099410062445">Hiển thị lịch sử từ các thiết bị mà bạn đã đăng nhập. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">Thư mục</translation>
 <translation id="3528171143076753409">Chứng chỉ của máy chủ không đáng tin cậy.</translation>
 <translation id="3539171420378717834">Giữ bản sao thẻ này trên thiết bị này</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 4471420..468e1cfa 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -75,7 +75,6 @@
 <translation id="17513872634828108">目前打开的标签页</translation>
 <translation id="1753706481035618306">页码</translation>
 <translation id="1763864636252898013">此服务器无法证明它是<ph name="DOMAIN" />;您设备的操作系统不信任其安全证书。出现此问题的原因可能是配置有误或您的连接被拦截了。</translation>
-<translation id="1775135663370355363">目前显示的是通过此设备浏览的内容记录。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">请更新您的同步密码。</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">请求或请求参数无效</translation>
@@ -244,7 +243,6 @@
 <translation id="3462200631372590220">隐藏详情</translation>
 <translation id="3479539252931486093">不应该出现这种情况?请<ph name="BEGIN_LINK" />告诉我们<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">我们暂时无法与您父母取得联系,请重试。</translation>
-<translation id="3516765099410062445">显示的是您登录过的设备中的历史记录。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">文件夹</translation>
 <translation id="3528171143076753409">服务器的证书不受信任。</translation>
 <translation id="3539171420378717834">在此设备上保存此信用卡的副本</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index c3ea30ba..f07522e 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -77,7 +77,6 @@
 <translation id="17513872634828108">開啟分頁</translation>
 <translation id="1753706481035618306">頁碼</translation>
 <translation id="1763864636252898013">伺服器無法證明其屬於 <ph name="DOMAIN" /> 網域;其安全性憑證未取得您裝置作業系統的信任。這可能是因為設定錯誤,或有攻擊者攔截您的連線所致。</translation>
-<translation id="1775135663370355363">在這台裝置中顯示紀錄項目。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="1783075131180517613">請更新您的同步通關密語。</translation>
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1821930232296380041">要求或要求參數無效</translation>
@@ -254,7 +253,6 @@
 <translation id="3462200631372590220">隱藏詳細資料</translation>
 <translation id="3479539252931486093">這是未預期的情況嗎?<ph name="BEGIN_LINK" />通知我們<ph name="END_LINK" /></translation>
 <translation id="3498215018399854026">我們暫時無法與您的家長聯絡,請再試一次。</translation>
-<translation id="3516765099410062445">在已登入的裝置中顯示紀錄項目。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="3527085408025491307">資料夾</translation>
 <translation id="3528171143076753409">伺服器憑證授權不可靠。</translation>
 <translation id="3539171420378717834">在這個裝置上保留這張信用卡的複本</translation>
diff --git a/components/translate/ios/browser/ios_translate_driver.h b/components/translate/ios/browser/ios_translate_driver.h
index 20103ad..1af2ba51f 100644
--- a/components/translate/ios/browser/ios_translate_driver.h
+++ b/components/translate/ios/browser/ios_translate_driver.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "components/translate/core/browser/translate_driver.h"
 #include "components/translate/ios/browser/language_detection_controller.h"
diff --git a/components/translate/ios/browser/language_detection_controller.h b/components/translate/ios/browser/language_detection_controller.h
index 3422e067..3c81da4 100644
--- a/components/translate/ios/browser/language_detection_controller.h
+++ b/components/translate/ios/browser/language_detection_controller.h
@@ -11,6 +11,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/mac/scoped_nsobject.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string16.h"
 #include "components/prefs/pref_member.h"
diff --git a/components/translate/ios/browser/translate_controller_unittest.mm b/components/translate/ios/browser/translate_controller_unittest.mm
index 0e572b9..371faec 100644
--- a/components/translate/ios/browser/translate_controller_unittest.mm
+++ b/components/translate/ios/browser/translate_controller_unittest.mm
@@ -4,6 +4,7 @@
 
 #import "components/translate/ios/browser/translate_controller.h"
 
+#include "base/memory/scoped_ptr.h"
 #include "base/values.h"
 #import "components/translate/ios/browser/js_translate_manager.h"
 #include "ios/web/public/test/test_web_state.h"
diff --git a/components/update_client/action_update.cc b/components/update_client/action_update.cc
index ea0ad6e..c8045a2 100644
--- a/components/update_client/action_update.cc
+++ b/components/update_client/action_update.cc
@@ -294,7 +294,7 @@
   DCHECK(thread_checker_.CalledOnValidThread());
 
   // On demand component updates are always downloaded in foreground.
-  return !item->on_demand && item->component.allow_background_download &&
+  return !item->on_demand && item->component.allows_background_download &&
          update_context_->config->UseBackgroundDownloader();
 }
 
diff --git a/components/update_client/action_update_check.cc b/components/update_client/action_update_check.cc
index 9e31eb6..13455f5 100644
--- a/components/update_client/action_update_check.cc
+++ b/components/update_client/action_update_check.cc
@@ -97,9 +97,12 @@
 
 void ActionUpdateCheck::UpdateCheckComplete(
     int error,
-    const UpdateResponse::Results& results) {
+    const UpdateResponse::Results& results,
+    int retry_after_sec) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
+  update_context_->retry_after_sec_ = retry_after_sec;
+
   if (!error)
     OnUpdateCheckSucceeded(results);
   else
diff --git a/components/update_client/action_update_check.h b/components/update_client/action_update_check.h
index 7576d64..67fc4d1 100644
--- a/components/update_client/action_update_check.h
+++ b/components/update_client/action_update_check.h
@@ -36,7 +36,9 @@
   void Run(UpdateContext* update_context, Callback callback) override;
 
  private:
-  void UpdateCheckComplete(int error, const UpdateResponse::Results& results);
+  void UpdateCheckComplete(int error,
+                           const UpdateResponse::Results& results,
+                           int retry_after_sec);
 
   void OnUpdateCheckSucceeded(const UpdateResponse::Results& results);
   void OnUpdateCheckFailed(int error);
diff --git a/components/update_client/ping_manager.cc b/components/update_client/ping_manager.cc
index 19188145..2d665933 100644
--- a/components/update_client/ping_manager.cc
+++ b/components/update_client/ping_manager.cc
@@ -179,7 +179,9 @@
   bool SendPing(const CrxUpdateItem* item);
 
  private:
-  void OnRequestSenderComplete(int error, const std::string& response);
+  void OnRequestSenderComplete(int error,
+                               const std::string& response,
+                               int retry_after_sec);
 
   const scoped_refptr<Configurator> config_;
   scoped_ptr<RequestSender> request_sender_;
@@ -196,7 +198,8 @@
 }
 
 void PingSender::OnRequestSenderComplete(int error,
-                                         const std::string& response) {
+                                         const std::string& response,
+                                         int retry_after_sec) {
   DCHECK(thread_checker_.CalledOnValidThread());
   delete this;
 }
@@ -205,7 +208,9 @@
   DCHECK(item);
   DCHECK(thread_checker_.CalledOnValidThread());
 
-  std::vector<GURL> urls(config_->PingUrl());
+  auto urls(config_->PingUrl());
+  if (item->component.requires_network_encryption)
+    RemoveUnsecureUrls(&urls);
 
   if (urls.empty())
     return false;
@@ -225,12 +230,14 @@
 PingManager::~PingManager() {
 }
 
-// Sends a fire and forget ping when the updates are complete. The ping
-// sender object self-deletes after sending the ping has completed asynchrously.
-void PingManager::SendPing(const CrxUpdateItem* item) {
-  PingSender* ping_sender(new PingSender(config_));
+bool PingManager::SendPing(const CrxUpdateItem* item) {
+  scoped_ptr<PingSender> ping_sender(new PingSender(config_));
   if (!ping_sender->SendPing(item))
-    delete ping_sender;
+    return false;
+
+  // The ping sender object self-deletes after sending the ping asynchrously.
+  ping_sender.release();
+  return true;
 }
 
 }  // namespace update_client
diff --git a/components/update_client/ping_manager.h b/components/update_client/ping_manager.h
index d5a6311d..c907e7d 100644
--- a/components/update_client/ping_manager.h
+++ b/components/update_client/ping_manager.h
@@ -19,7 +19,11 @@
   explicit PingManager(const scoped_refptr<Configurator>& config);
   virtual ~PingManager();
 
-  virtual void SendPing(const CrxUpdateItem* item);
+  // Sends a fire and forget ping for the |item|. Returns true if the
+  // ping is queued up and may be sent in the future, or false, if an error
+  // occurs right away. The ping itself is not persisted and it will be
+  // discarded if it can't be sent for any reason.
+  virtual bool SendPing(const CrxUpdateItem* item);
 
  private:
   const scoped_refptr<Configurator> config_;
diff --git a/components/update_client/ping_manager_unittest.cc b/components/update_client/ping_manager_unittest.cc
index cf1d147..e25dc94 100644
--- a/components/update_client/ping_manager_unittest.cc
+++ b/components/update_client/ping_manager_unittest.cc
@@ -177,4 +177,23 @@
   interceptor->Reset();
 }
 
+// Tests that sending the ping fails when the component requires encryption but
+// the ping URL is unsecure.
+TEST_F(ComponentUpdaterPingManagerTest, PingManagerRequiresEncryptionTest) {
+  config_->SetPingUrl(GURL("http:\\foo\bar"));
+
+  {
+    CrxUpdateItem item;
+    item.component.requires_network_encryption = true;
+
+    EXPECT_FALSE(ping_manager_->SendPing(&item));
+  }
+
+  {
+    // Tests that the default for |requires_network_encryption| is true.
+    CrxUpdateItem item;
+    EXPECT_FALSE(ping_manager_->SendPing(&item));
+  }
+}
+
 }  // namespace update_client
diff --git a/components/update_client/request_sender.cc b/components/update_client/request_sender.cc
index e8fd4660..f3e5814 100644
--- a/components/update_client/request_sender.cc
+++ b/components/update_client/request_sender.cc
@@ -4,6 +4,8 @@
 
 #include "components/update_client/request_sender.h"
 
+#include <algorithm>
+
 #include "base/base64.h"
 #include "base/bind.h"
 #include "base/bind_helpers.h"
@@ -17,6 +19,7 @@
 #include "components/update_client/utils.h"
 #include "net/http/http_response_headers.h"
 #include "net/url_request/url_fetcher.h"
+#include "net/url_request/url_request_status.h"
 
 namespace update_client {
 
@@ -28,6 +31,25 @@
     "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB+Yi+3SdJKCyFJmm+suW3CyXygvVsbDbPnJgoC"
     "X4GeTtoL8Q/WjPx7CGtXOL1Xjbx0VPPN3DrvqZSL/oXy9hVw==";
 
+// The ETag header carries the ECSDA signature of the protocol response, if
+// signing has been used.
+const char kHeaderEtag[] = "ETag";
+
+// The server uses the optional X-Retry-After header to indicate that the
+// current request should not be attempted again. Any response received along
+// with the X-Retry-After header should be interpreted as it would have been
+// without the X-Retry-After header.
+//
+// In addition to the presence of the header, the value of the header is
+// used as a signal for when to do future update checks, but only when the
+// response is over https. Values over http are not trusted and are ignored.
+//
+// The value of the header is the number of seconds to wait before trying to do
+// a subsequent update check. The upper bound for the number of seconds to wait
+// before trying to do a subsequent update check is capped at 24 hours.
+const char kHeaderXRetryAfter[] = "X-Retry-After";
+const int64_t kMaxRetryAfterSec = 24 * 60 * 60;
+
 }  // namespace
 
 // This value is chosen not to conflict with network errors defined by
@@ -55,7 +77,7 @@
   request_sender_callback_ = request_sender_callback;
 
   if (urls_.empty()) {
-    return HandleSendError(-1);
+    return HandleSendError(-1, 0);
   }
 
   cur_url_ = urls_.begin();
@@ -63,7 +85,7 @@
   if (use_signing_) {
     public_key_ = GetKey(kKeyPubBytesBase64);
     if (public_key_.empty())
-      return HandleSendError(-1);
+      return HandleSendError(-1, 0);
   }
 
   SendInternal();
@@ -91,16 +113,18 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::Bind(&RequestSender::SendInternalComplete, base::Unretained(this),
-                   -1, std::string(), std::string()));
+                   -1, std::string(), std::string(), 0));
 }
 
 void RequestSender::SendInternalComplete(int error,
                                          const std::string& response_body,
-                                         const std::string& response_etag) {
+                                         const std::string& response_etag,
+                                         int retry_after_sec) {
   if (!error) {
     if (!use_signing_) {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(request_sender_callback_, 0, response_body));
+          FROM_HERE, base::Bind(request_sender_callback_, 0, response_body,
+                                retry_after_sec));
       return;
     }
 
@@ -108,7 +132,8 @@
     DCHECK(signer_.get());
     if (signer_->ValidateResponse(response_body, response_etag)) {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(request_sender_callback_, 0, response_body));
+          FROM_HERE, base::Bind(request_sender_callback_, 0, response_body,
+                                retry_after_sec));
       return;
     }
 
@@ -116,35 +141,49 @@
   }
 
   DCHECK(error);
-  if (++cur_url_ != urls_.end() &&
+
+  // A positive |retry_after_sec| is a hint from the server that the client
+  // should not send further request until the cooldown has expired.
+  if (retry_after_sec <= 0 && ++cur_url_ != urls_.end() &&
       base::ThreadTaskRunnerHandle::Get()->PostTask(
           FROM_HERE,
           base::Bind(&RequestSender::SendInternal, base::Unretained(this)))) {
     return;
   }
 
-  HandleSendError(error);
+  HandleSendError(error, retry_after_sec);
 }
 
 void RequestSender::OnURLFetchComplete(const net::URLFetcher* source) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(source);
 
-  VLOG(1) << "request completed from url: " << source->GetOriginalURL().spec();
+  const GURL original_url(source->GetOriginalURL());
+  VLOG(1) << "request completed from url: " << original_url.spec();
 
   const int fetch_error(GetFetchError(*source));
   std::string response_body;
   CHECK(source->GetResponseAsString(&response_body));
 
+  int64_t retry_after_sec(-1);
+  const auto status(source->GetStatus().status());
+  if (original_url.SchemeIsCryptographic() &&
+      status == net::URLRequestStatus::SUCCESS) {
+    retry_after_sec = GetInt64HeaderValue(source, kHeaderXRetryAfter);
+    retry_after_sec = std::min(retry_after_sec, kMaxRetryAfterSec);
+  }
+
   base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE,
-      base::Bind(&RequestSender::SendInternalComplete, base::Unretained(this),
-                 fetch_error, response_body, GetServerETag(source)));
+      FROM_HERE, base::Bind(&RequestSender::SendInternalComplete,
+                            base::Unretained(this), fetch_error, response_body,
+                            GetStringHeaderValue(source, kHeaderEtag),
+                            static_cast<int>(retry_after_sec)));
 }
 
-void RequestSender::HandleSendError(int error) {
+void RequestSender::HandleSendError(int error, int retry_after_sec) {
   base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::Bind(request_sender_callback_, error, std::string()));
+      FROM_HERE, base::Bind(request_sender_callback_, error, std::string(),
+                            retry_after_sec));
 }
 
 std::string RequestSender::GetKey(const char* key_bytes_base64) {
@@ -166,15 +205,23 @@
   return url.ReplaceComponents(replacements);
 }
 
-std::string RequestSender::GetServerETag(const net::URLFetcher* source) {
+std::string RequestSender::GetStringHeaderValue(const net::URLFetcher* source,
+                                                const char* header_name) {
   const auto response_headers(source->GetResponseHeaders());
   if (!response_headers)
     return std::string();
 
   std::string etag;
-  return response_headers->EnumerateHeader(nullptr, "ETag", &etag)
+  return response_headers->EnumerateHeader(nullptr, header_name, &etag)
              ? etag
              : std::string();
 }
 
+int64_t RequestSender::GetInt64HeaderValue(const net::URLFetcher* source,
+                                           const char* header_name) {
+  const auto response_headers(source->GetResponseHeaders());
+  return response_headers ? response_headers->GetInt64HeaderValue(header_name)
+                          : -1;
+}
+
 }  // namespace update_client
diff --git a/components/update_client/request_sender.h b/components/update_client/request_sender.h
index ddf5cca..b5daaa2e 100644
--- a/components/update_client/request_sender.h
+++ b/components/update_client/request_sender.h
@@ -5,6 +5,8 @@
 #ifndef COMPONENTS_UPDATE_CLIENT_REQUEST_SENDER_H_
 #define COMPONENTS_UPDATE_CLIENT_REQUEST_SENDER_H_
 
+#include <stdint.h>
+
 #include <string>
 #include <vector>
 
@@ -35,8 +37,13 @@
 class RequestSender : public net::URLFetcherDelegate {
  public:
   // If |error| is 0, then the response is provided in the |response| parameter.
-  using RequestSenderCallback =
-      base::Callback<void(int error, const std::string& response)>;
+  // |retry_after_sec| contains the value of the X-Retry-After response header,
+  // when the response was received from a cryptographically secure URL. The
+  // range for this value is [-1, 86400]. If |retry_after_sec| is -1 it means
+  // that the header could not be found, or trusted, or had an invalid value.
+  // The upper bound represents a delay of one day.
+  using RequestSenderCallback = base::Callback<
+      void(int error, const std::string& response, int retry_after_sec)>;
 
   static int kErrorResponseNotTrusted;
 
@@ -57,9 +64,15 @@
   // Decodes and returns the public key used by CUP.
   static std::string GetKey(const char* key_bytes_base64);
 
-  // Returns the Etag of the server response or an empty string if the
-  // Etag is not available.
-  static std::string GetServerETag(const net::URLFetcher* source);
+  // Returns the string value of a header of the server response or an empty
+  // string if the header is not available.
+  static std::string GetStringHeaderValue(const net::URLFetcher* source,
+                                          const char* header_name);
+
+  // Returns the integral value of a header of the server response or -1 if
+  // if the header is not available or a conversion error has occured.
+  static int64_t GetInt64HeaderValue(const net::URLFetcher* source,
+                                     const char* header_name);
 
   // Overrides for URLFetcherDelegate.
   void OnURLFetchComplete(const net::URLFetcher* source) override;
@@ -67,19 +80,20 @@
   // Implements the error handling and url fallback mechanism.
   void SendInternal();
 
-  // Called when SendInternal complets. |response_body|and |response_etag|
+  // Called when SendInternal completes. |response_body| and |response_etag|
   // contain the body and the etag associated with the HTTP response.
   void SendInternalComplete(int error,
                             const std::string& response_body,
-                            const std::string& response_etag);
+                            const std::string& response_etag,
+                            int retry_after_sec);
 
   // Helper function to handle a non-continuable error in Send.
-  void HandleSendError(int error);
+  void HandleSendError(int error, int retry_after_sec);
 
   base::ThreadChecker thread_checker_;
 
   const scoped_refptr<Configurator> config_;
-  bool use_signing_;
+  bool use_signing_;  // True if CUP signing is used.
   std::vector<GURL> urls_;
   std::string request_body_;
   RequestSenderCallback request_sender_callback_;
diff --git a/components/update_client/request_sender_unittest.cc b/components/update_client/request_sender_unittest.cc
index 5132fd9..5582132 100644
--- a/components/update_client/request_sender_unittest.cc
+++ b/components/update_client/request_sender_unittest.cc
@@ -45,7 +45,9 @@
   void SetUp() override;
   void TearDown() override;
 
-  void RequestSenderComplete(int error, const std::string& response);
+  void RequestSenderComplete(int error,
+                             const std::string& response,
+                             int retry_after_sec);
 
  protected:
   void Quit();
@@ -124,7 +126,8 @@
 }
 
 void RequestSenderTest::RequestSenderComplete(int error,
-                                              const std::string& response) {
+                                              const std::string& response,
+                                              int retry_after_sec) {
   error_ = error;
   response_ = response;
 
diff --git a/components/update_client/test_configurator.cc b/components/update_client/test_configurator.cc
index 93279c4..6ba5392 100644
--- a/components/update_client/test_configurator.cc
+++ b/components/update_client/test_configurator.cc
@@ -55,10 +55,16 @@
 }
 
 std::vector<GURL> TestConfigurator::UpdateUrl() const {
+  if (!update_check_url_.is_empty())
+    return std::vector<GURL>(1, update_check_url_);
+
   return MakeDefaultUrls();
 }
 
 std::vector<GURL> TestConfigurator::PingUrl() const {
+  if (!ping_url_.is_empty())
+    return std::vector<GURL>(1, ping_url_);
+
   return UpdateUrl();
 }
 
@@ -133,6 +139,14 @@
   download_preference_ = download_preference;
 }
 
+void TestConfigurator::SetUpdateCheckUrl(const GURL& url) {
+  update_check_url_ = url;
+}
+
+void TestConfigurator::SetPingUrl(const GURL& url) {
+  ping_url_ = url;
+}
+
 scoped_refptr<base::SequencedTaskRunner>
 TestConfigurator::GetSequencedTaskRunner() const {
   DCHECK(worker_task_runner_.get());
diff --git a/components/update_client/test_configurator.h b/components/update_client/test_configurator.h
index 391ebc94..ed5bf32bc 100644
--- a/components/update_client/test_configurator.h
+++ b/components/update_client/test_configurator.h
@@ -83,6 +83,8 @@
   void SetInitialDelay(int seconds);
   void SetDownloadPreference(const std::string& download_preference);
   void SetUseCupSigning(bool use_cup_signing);
+  void SetUpdateCheckUrl(const GURL& url);
+  void SetPingUrl(const GURL& url);
 
  private:
   friend class base::RefCountedThreadSafe<TestConfigurator>;
@@ -96,6 +98,8 @@
   int ondemand_time_;
   std::string download_preference_;
   bool use_cup_signing_;
+  GURL update_check_url_;
+  GURL ping_url_;
 
   scoped_refptr<net::TestURLRequestContextGetter> context_;
 
diff --git a/components/update_client/update_checker.cc b/components/update_client/update_checker.cc
index dc98251..234ef22 100644
--- a/components/update_client/update_checker.cc
+++ b/components/update_client/update_checker.cc
@@ -33,6 +33,15 @@
   return IsValidBrand(brand) ? brand : std::string("");
 }
 
+// Returns true if at least one item requires network encryption.
+bool IsEncryptionRequired(const std::vector<CrxUpdateItem*>& items) {
+  for (const auto& item : items) {
+    if (item->component.requires_network_encryption)
+      return true;
+  }
+  return false;
+}
+
 // Builds an update check request for |components|. |additional_attributes| is
 // serialized as part of the <request> element of the request to customize it
 // with data that is not platform or component specific. For each |item|, a
@@ -93,7 +102,9 @@
       const UpdateCheckCallback& update_check_callback) override;
 
  private:
-  void OnRequestSenderComplete(int error, const std::string& response);
+  void OnRequestSenderComplete(int error,
+                               const std::string& response,
+                               int retry_after_sec);
   base::ThreadChecker thread_checker_;
 
   const scoped_refptr<Configurator> config_;
@@ -123,26 +134,30 @@
 
   update_check_callback_ = update_check_callback;
 
+  auto urls(config_->UpdateUrl());
+  if (IsEncryptionRequired(items_to_check))
+    RemoveUnsecureUrls(&urls);
+
   request_sender_.reset(new RequestSender(config_));
   request_sender_->Send(
       config_->UseCupSigning(),
       BuildUpdateCheckRequest(*config_, items_to_check, additional_attributes),
-      config_->UpdateUrl(),
-      base::Bind(&UpdateCheckerImpl::OnRequestSenderComplete,
-                 base::Unretained(this)));
+      urls, base::Bind(&UpdateCheckerImpl::OnRequestSenderComplete,
+                       base::Unretained(this)));
   return true;
 }
 
 void UpdateCheckerImpl::OnRequestSenderComplete(int error,
-                                                const std::string& response) {
+                                                const std::string& response,
+                                                int retry_after_sec) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
   if (!error) {
     UpdateResponse update_response;
     if (update_response.Parse(response)) {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE,
-          base::Bind(update_check_callback_, error, update_response.results()));
+          FROM_HERE, base::Bind(update_check_callback_, error,
+                                update_response.results(), retry_after_sec));
       return;
     }
 
@@ -151,8 +166,8 @@
   }
 
   base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE,
-      base::Bind(update_check_callback_, error, UpdateResponse::Results()));
+      FROM_HERE, base::Bind(update_check_callback_, error,
+                            UpdateResponse::Results(), retry_after_sec));
 }
 
 }  // namespace
diff --git a/components/update_client/update_checker.h b/components/update_client/update_checker.h
index 1de7f0c..1f0eb993 100644
--- a/components/update_client/update_checker.h
+++ b/components/update_client/update_checker.h
@@ -25,7 +25,9 @@
 class UpdateChecker {
  public:
   using UpdateCheckCallback =
-      base::Callback<void(int error, const UpdateResponse::Results& results)>;
+      base::Callback<void(int error,
+                          const UpdateResponse::Results& results,
+                          int retry_after_sec)>;
 
   using Factory =
       scoped_ptr<UpdateChecker> (*)(const scoped_refptr<Configurator>& config);
diff --git a/components/update_client/update_checker_unittest.cc b/components/update_client/update_checker_unittest.cc
index 26873c7..3348996 100644
--- a/components/update_client/update_checker_unittest.cc
+++ b/components/update_client/update_checker_unittest.cc
@@ -47,7 +47,9 @@
   void SetUp() override;
   void TearDown() override;
 
-  void UpdateCheckComplete(int error, const UpdateResponse::Results& results);
+  void UpdateCheckComplete(int error,
+                           const UpdateResponse::Results& results,
+                           int retry_after_sec);
 
  protected:
   void Quit();
@@ -129,7 +131,8 @@
 
 void UpdateCheckerTest::UpdateCheckComplete(
     int error,
-    const UpdateResponse::Results& results) {
+    const UpdateResponse::Results& results,
+    int retry_after_sec) {
   error_ = error;
   results_ = results;
   Quit();
@@ -308,4 +311,25 @@
   EXPECT_EQ(0ul, results_.list.size());
 }
 
+// Tests that the UpdateCheckers will not make an update check for a
+// component that requires encryption when the update check URL is unsecure.
+TEST_F(UpdateCheckerTest, UpdateCheckRequiresEncryptionError) {
+  config_->SetUpdateCheckUrl(GURL("http:\\foo\bar"));
+
+  update_checker_ = UpdateChecker::Create(config_);
+
+  CrxUpdateItem item(BuildCrxUpdateItem());
+  item.component.requires_network_encryption = true;
+  std::vector<CrxUpdateItem*> items_to_check;
+  items_to_check.push_back(&item);
+
+  update_checker_->CheckForUpdates(
+      items_to_check, "", base::Bind(&UpdateCheckerTest::UpdateCheckComplete,
+                                     base::Unretained(this)));
+  RunThreads();
+
+  EXPECT_EQ(-1, error_);
+  EXPECT_EQ(0u, results_.list.size());
+}
+
 }  // namespace update_client
diff --git a/components/update_client/update_client.cc b/components/update_client/update_client.cc
index 86b3dfc..8fa551d 100644
--- a/components/update_client/update_client.cc
+++ b/components/update_client/update_client.cc
@@ -52,8 +52,8 @@
 CrxUpdateItem::~CrxUpdateItem() {
 }
 
-CrxComponent::CrxComponent() : allow_background_download(true) {
-}
+CrxComponent::CrxComponent()
+    : allows_background_download(true), requires_network_encryption(true) {}
 
 CrxComponent::CrxComponent(const CrxComponent& other) = default;
 
diff --git a/components/update_client/update_client.h b/components/update_client/update_client.h
index 12d19c9..e354fb62 100644
--- a/components/update_client/update_client.h
+++ b/components/update_client/update_client.h
@@ -143,6 +143,7 @@
   ERROR_UPDATE_INVALID_ARGUMENT = -1,
   ERROR_UPDATE_IN_PROGRESS = 1,
   ERROR_UPDATE_CANCELED = 2,
+  ERROR_UPDATE_RETRY_LATER = 3,
 };
 
 // Defines an interface for a generic CRX installer.
@@ -197,10 +198,14 @@
   std::string name;         // Optional.
 
   // Specifies that the CRX can be background-downloaded in some cases.
-  // The default for this value is |true| and the value can be overriden at
-  // the registration time. This is a temporary change until the issue
-  // crbug/340448 is resolved.
-  bool allow_background_download;
+  // The default for this value is |true|.
+  bool allows_background_download;
+
+  // Specifies that the update checks and pings associated with this component
+  // require confidentiality. The default for this value is |true|. As a side
+  // note, the confidentiality of the downloads is enforced by the server,
+  // which only returns secure download URLs in this case.
+  bool requires_network_encryption;
 };
 
 // All methods are safe to call only from the browser's main thread. Once an
diff --git a/components/update_client/update_client_unittest.cc b/components/update_client/update_client_unittest.cc
index a0bee0f..957f6973 100644
--- a/components/update_client/update_client_unittest.cc
+++ b/components/update_client/update_client_unittest.cc
@@ -97,7 +97,7 @@
   explicit FakePingManagerImpl(const scoped_refptr<Configurator>& config);
   ~FakePingManagerImpl() override;
 
-  void SendPing(const CrxUpdateItem* item) override;
+  bool SendPing(const CrxUpdateItem* item) override;
 
   const std::vector<CrxUpdateItem>& items() const;
 
@@ -113,8 +113,9 @@
 FakePingManagerImpl::~FakePingManagerImpl() {
 }
 
-void FakePingManagerImpl::SendPing(const CrxUpdateItem* item) {
+bool FakePingManagerImpl::SendPing(const CrxUpdateItem* item) {
   items_.push_back(*item);
+  return true;
 }
 
 const std::vector<CrxUpdateItem>& FakePingManagerImpl::items() const {
@@ -227,7 +228,7 @@
         const UpdateCheckCallback& update_check_callback) override {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
           FROM_HERE,
-          base::Bind(update_check_callback, 0, UpdateResponse::Results()));
+          base::Bind(update_check_callback, 0, UpdateResponse::Results(), 0));
       return true;
     }
   };
@@ -368,7 +369,7 @@
       results.list.push_back(result);
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -580,7 +581,7 @@
       results.list.push_back(result2);
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -827,7 +828,7 @@
       results.list.push_back(result2);
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -1099,7 +1100,7 @@
       }
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -1340,7 +1341,7 @@
       results.list.push_back(result);
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -1573,7 +1574,7 @@
       }
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -1778,7 +1779,7 @@
         const UpdateCheckCallback& update_check_callback) override {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
           FROM_HERE,
-          base::Bind(update_check_callback, 0, UpdateResponse::Results()));
+          base::Bind(update_check_callback, 0, UpdateResponse::Results(), 0));
       return true;
     }
   };
@@ -1911,7 +1912,7 @@
       results.list.push_back(result);
 
       base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(update_check_callback, 0, results));
+          FROM_HERE, base::Bind(update_check_callback, 0, results, 0));
       return true;
     }
   };
@@ -2063,7 +2064,7 @@
         const UpdateCheckCallback& update_check_callback) override {
       base::ThreadTaskRunnerHandle::Get()->PostTask(
           FROM_HERE,
-          base::Bind(update_check_callback, 0, UpdateResponse::Results()));
+          base::Bind(update_check_callback, 0, UpdateResponse::Results(), 0));
       return true;
     }
   };
@@ -2243,4 +2244,174 @@
                                    base::Version("1.0"), 10);
 }
 
+TEST_F(UpdateClientTest, RetryAfter) {
+  class DataCallbackFake {
+   public:
+    static void Callback(const std::vector<std::string>& ids,
+                         std::vector<CrxComponent>* components) {
+      CrxComponent crx;
+      crx.name = "test_jebg";
+      crx.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash));
+      crx.version = Version("0.9");
+      crx.installer = new TestInstaller;
+      components->push_back(crx);
+    }
+  };
+
+  class CompletionCallbackFake {
+   public:
+    static void Callback(const base::Closure& quit_closure, int error) {
+      static int num_call = 0;
+      ++num_call;
+
+      EXPECT_LE(num_call, 4);
+
+      if (num_call == 1) {
+        EXPECT_EQ(0, error);
+      } else if (num_call == 2) {
+        // This request is throttled since the update engine received a
+        // positive |retry_after_sec| value in the update check response.
+        EXPECT_EQ(Error::ERROR_UPDATE_RETRY_LATER, error);
+      } else if (num_call == 3) {
+        // This request is a foreground Install, which is never throttled.
+        // The update engine received a |retry_after_sec| value of 0, which
+        // resets the throttling.
+        EXPECT_EQ(0, error);
+      } else if (num_call == 4) {
+        // This request succeeds since there is no throttling in effect.
+        EXPECT_EQ(0, error);
+      }
+
+      quit_closure.Run();
+    }
+  };
+
+  class FakeUpdateChecker : public UpdateChecker {
+   public:
+    static scoped_ptr<UpdateChecker> Create(
+        const scoped_refptr<Configurator>& config) {
+      return scoped_ptr<UpdateChecker>(new FakeUpdateChecker());
+    }
+
+    bool CheckForUpdates(
+        const std::vector<CrxUpdateItem*>& items_to_check,
+        const std::string& additional_attributes,
+        const UpdateCheckCallback& update_check_callback) override {
+      static int num_call = 0;
+      ++num_call;
+
+      EXPECT_LE(num_call, 3);
+
+      int retry_after_sec(0);
+      if (num_call == 1) {
+        // Throttle the next call.
+        retry_after_sec = 60 * 60;  // 1 hour.
+      }
+
+      base::ThreadTaskRunnerHandle::Get()->PostTask(
+          FROM_HERE, base::Bind(update_check_callback, 0,
+                                UpdateResponse::Results(), retry_after_sec));
+      return true;
+    }
+  };
+
+  class FakeCrxDownloader : public CrxDownloader {
+   public:
+    static scoped_ptr<CrxDownloader> Create(
+        bool is_background_download,
+        net::URLRequestContextGetter* context_getter,
+        const scoped_refptr<base::SequencedTaskRunner>& task_runner) {
+      return scoped_ptr<CrxDownloader>(new FakeCrxDownloader());
+    }
+
+   private:
+    FakeCrxDownloader()
+        : CrxDownloader(base::ThreadTaskRunnerHandle::Get(), nullptr) {}
+    ~FakeCrxDownloader() override {}
+
+    void DoStartDownload(const GURL& url) override { EXPECT_TRUE(false); }
+  };
+
+  class FakePingManager : public FakePingManagerImpl {
+   public:
+    explicit FakePingManager(const scoped_refptr<Configurator>& config)
+        : FakePingManagerImpl(config) {}
+    ~FakePingManager() override { EXPECT_TRUE(items().empty()); }
+  };
+
+  scoped_ptr<PingManager> ping_manager(new FakePingManager(config()));
+  scoped_refptr<UpdateClient> update_client(new UpdateClientImpl(
+      config(), std::move(ping_manager), &FakeUpdateChecker::Create,
+      &FakeCrxDownloader::Create));
+
+  MockObserver observer;
+
+  InSequence seq;
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_CHECKING_FOR_UPDATES,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+  EXPECT_CALL(observer, OnEvent(Events::COMPONENT_NOT_UPDATED,
+                                "jebgalgnebhfojomionfpkfelancnnkf"))
+      .Times(1);
+
+  update_client->AddObserver(&observer);
+
+  std::vector<std::string> ids;
+  ids.push_back(std::string("jebgalgnebhfojomionfpkfelancnnkf"));
+
+  {
+    // The engine handles this Update call but responds with a valid
+    // |retry_after_sec|, which causes subsequent calls to fail.
+    base::RunLoop runloop;
+    update_client->Update(
+        ids, base::Bind(&DataCallbackFake::Callback),
+        base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure()));
+    runloop.Run();
+  }
+
+  {
+    // This call will result in a completion callback invoked with
+    // Error::ERROR_UPDATE_RETRY_LATER.
+    base::RunLoop runloop;
+    update_client->Update(
+        ids, base::Bind(&DataCallbackFake::Callback),
+        base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure()));
+    runloop.Run();
+  }
+
+  {
+    // The Install call is handled, and the throttling is reset due to
+    // the value of |retry_after_sec| in the completion callback.
+    base::RunLoop runloop;
+    update_client->Install(
+        std::string("jebgalgnebhfojomionfpkfelancnnkf"),
+        base::Bind(&DataCallbackFake::Callback),
+        base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure()));
+    runloop.Run();
+  }
+
+  {
+    // This call succeeds.
+    base::RunLoop runloop;
+    update_client->Update(
+        ids, base::Bind(&DataCallbackFake::Callback),
+        base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure()));
+    runloop.Run();
+  }
+
+  update_client->RemoveObserver(&observer);
+}
+
 }  // namespace update_client
diff --git a/components/update_client/update_engine.cc b/components/update_client/update_engine.cc
index 06cf6eb..20f9a6a 100644
--- a/components/update_client/update_engine.cc
+++ b/components/update_client/update_engine.cc
@@ -9,6 +9,7 @@
 #include "base/location.h"
 #include "base/stl_util.h"
 #include "base/thread_task_runner_handle.h"
+#include "base/time/time.h"
 #include "components/update_client/action_update_check.h"
 #include "components/update_client/configurator.h"
 #include "components/update_client/crx_update_item.h"
@@ -36,8 +37,8 @@
       blocking_task_runner(config->GetSequencedTaskRunner()),
       update_checker_factory(update_checker_factory),
       crx_downloader_factory(crx_downloader_factory),
-      ping_manager(ping_manager) {
-}
+      ping_manager(ping_manager),
+      retry_after_sec_(0) {}
 
 UpdateContext::~UpdateContext() {
   STLDeleteElements(&update_items);
@@ -84,6 +85,12 @@
     const CompletionCallback& callback) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
+  if (IsThrottled(is_foreground)) {
+    base::ThreadTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::Bind(callback, Error::ERROR_UPDATE_RETRY_LATER));
+    return;
+  }
+
   scoped_ptr<UpdateContext> update_context(new UpdateContext(
       config_, is_foreground, ids, crx_data_callback,
       notify_observers_callback_, callback, update_checker_factory_,
@@ -109,6 +116,18 @@
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(update_contexts_.find(update_context) != update_contexts_.end());
 
+  const int throttle_sec(update_context->retry_after_sec_);
+  DCHECK_LE(throttle_sec, 24 * 60 * 60);
+
+  // Only positive values for throttle_sec are effective. 0 means that no
+  // throttling occurs and has the effect of resetting the member.
+  // Negative values are not trusted and are ignored.
+  if (throttle_sec >= 0)
+    throttle_updates_until_ =
+        throttle_sec
+            ? base::Time::Now() + base::TimeDelta::FromSeconds(throttle_sec)
+            : base::Time();
+
   auto callback = update_context->callback;
 
   update_contexts_.erase(update_context);
@@ -117,4 +136,16 @@
   callback.Run(error);
 }
 
+bool UpdateEngine::IsThrottled(bool is_foreground) const {
+  if (is_foreground || throttle_updates_until_.is_null())
+    return false;
+
+  const auto now(base::Time::Now());
+
+  // Throttle the calls in the interval (t - 1 day, t) to limit the effect of
+  // unset clocks or clock drift.
+  return throttle_updates_until_ - base::TimeDelta::FromDays(1) < now &&
+         now < throttle_updates_until_;
+}
+
 }  // namespace update_client
diff --git a/components/update_client/update_engine.h b/components/update_client/update_engine.h
index f2a577a3..1d69ece 100644
--- a/components/update_client/update_engine.h
+++ b/components/update_client/update_engine.h
@@ -63,6 +63,10 @@
  private:
   void UpdateComplete(UpdateContext* update_context, int error);
 
+  // Returns true if the update engine rejects this update call because it
+  // occurs too soon.
+  bool IsThrottled(bool is_foreground) const;
+
   base::ThreadChecker thread_checker_;
 
   scoped_refptr<Configurator> config_;
@@ -79,6 +83,12 @@
   // Contains the contexts associated with each update in progress.
   std::set<UpdateContext*> update_contexts_;
 
+  // Implements a rate limiting mechanism for background update checks. Has the
+  // effect of rejecting the update call if the update call occurs before
+  // a certain time, which is negotiated with the server as part of the
+  // update protocol. See the comments for X-Retry-After header.
+  base::Time throttle_updates_until_;
+
   DISALLOW_COPY_AND_ASSIGN(UpdateEngine);
 };
 
@@ -135,6 +145,9 @@
 
   // Contains the ids of the items to update.
   std::queue<std::string> queue;
+
+  // The time in seconds to wait until doing further update checks.
+  int retry_after_sec_;
 };
 
 }  // namespace update_client
diff --git a/components/update_client/utils.cc b/components/update_client/utils.cc
index a76e073..caa00cea 100644
--- a/components/update_client/utils.cc
+++ b/components/update_client/utils.cc
@@ -34,6 +34,7 @@
 #include "net/url_request/url_fetcher.h"
 #include "net/url_request/url_request_context_getter.h"
 #include "net/url_request/url_request_status.h"
+#include "url/gurl.h"
 
 namespace update_client {
 
@@ -238,4 +239,12 @@
          }) == brand.end();
 }
 
+void RemoveUnsecureUrls(std::vector<GURL>* urls) {
+  DCHECK(urls);
+  urls->erase(std::remove_if(
+                  urls->begin(), urls->end(),
+                  [](const GURL& url) { return !url.SchemeIsCryptographic(); }),
+              urls->end());
+}
+
 }  // namespace update_client
diff --git a/components/update_client/utils.h b/components/update_client/utils.h
index bd428ca..af353f7 100644
--- a/components/update_client/utils.h
+++ b/components/update_client/utils.h
@@ -6,6 +6,7 @@
 #define COMPONENTS_UPDATE_CLIENT_UTILS_H_
 
 #include <string>
+#include <vector>
 
 #include "base/memory/scoped_ptr.h"
 
@@ -98,6 +99,9 @@
 // Returns true if the |brand| parameter matches ^([a-zA-Z]{4})?$ .
 bool IsValidBrand(const std::string& brand);
 
+// Removes the unsecure urls in the |urls| parameter.
+void RemoveUnsecureUrls(std::vector<GURL>* urls);
+
 }  // namespace update_client
 
 #endif  // COMPONENTS_UPDATE_CLIENT_UTILS_H_
diff --git a/components/update_client/utils_unittest.cc b/components/update_client/utils_unittest.cc
index 81530705..b15fcac4 100644
--- a/components/update_client/utils_unittest.cc
+++ b/components/update_client/utils_unittest.cc
@@ -81,4 +81,35 @@
   EXPECT_FALSE(IsValidBrand(std::string("\xaa")));   // Has non-ASCII char.
 }
 
+TEST(UpdateClientUtils, RemoveUnsecureUrls) {
+  const GURL test1[] = {GURL("http://foo"), GURL("https://foo")};
+  std::vector<GURL> urls(std::begin(test1), std::end(test1));
+  RemoveUnsecureUrls(&urls);
+  EXPECT_EQ(1u, urls.size());
+  EXPECT_EQ(urls[0], GURL("https://foo"));
+
+  const GURL test2[] = {GURL("https://foo"), GURL("http://foo")};
+  urls.assign(std::begin(test2), std::end(test2));
+  RemoveUnsecureUrls(&urls);
+  EXPECT_EQ(1u, urls.size());
+  EXPECT_EQ(urls[0], GURL("https://foo"));
+
+  const GURL test3[] = {GURL("https://foo"), GURL("https://bar")};
+  urls.assign(std::begin(test3), std::end(test3));
+  RemoveUnsecureUrls(&urls);
+  EXPECT_EQ(2u, urls.size());
+  EXPECT_EQ(urls[0], GURL("https://foo"));
+  EXPECT_EQ(urls[1], GURL("https://bar"));
+
+  const GURL test4[] = {GURL("http://foo")};
+  urls.assign(std::begin(test4), std::end(test4));
+  RemoveUnsecureUrls(&urls);
+  EXPECT_EQ(0u, urls.size());
+
+  const GURL test5[] = {GURL("http://foo"), GURL("http://bar")};
+  urls.assign(std::begin(test5), std::end(test5));
+  RemoveUnsecureUrls(&urls);
+  EXPECT_EQ(0u, urls.size());
+}
+
 }  // namespace update_client
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc
index f35f09b..1bca247 100644
--- a/content/app/content_main_runner.cc
+++ b/content/app/content_main_runner.cc
@@ -357,9 +357,6 @@
 #endif
 #if !defined(CHROME_MULTIPLE_DLL_BROWSER)
 #if defined(ENABLE_PLUGINS)
-#if !defined(OS_LINUX)
-    { switches::kPluginProcess,      PluginMain },
-#endif
     { switches::kPpapiPluginProcess, PpapiPluginMain },
     { switches::kPpapiBrokerProcess, PpapiBrokerMain },
 #endif  // ENABLE_PLUGINS
diff --git a/content/app/strings/translations/content_strings_bn.xtb b/content/app/strings/translations/content_strings_bn.xtb
index 4ac117f..4701a46 100644
--- a/content/app/strings/translations/content_strings_bn.xtb
+++ b/content/app/strings/translations/content_strings_bn.xtb
@@ -51,6 +51,7 @@
 <translation id="2896972712917208084">রেডিও বোতাম গোষ্ঠী</translation>
 <translation id="2901282870647571346">চলচ্চিত্রের বর্তমান অবস্থা</translation>
 <translation id="2908441821576996758">দয়া করে ইমেল ঠিকানাগুলির একটি কমা দিয়ে আলাদা করা মান প্রবেশ করান৷</translation>
+<translation id="2931838996092594335">ক্লিক করুন</translation>
 <translation id="2940813599313844715">অবজেক্ট</translation>
 <translation id="2942448076852699108">হাইলাইট করা সামগ্রী</translation>
 <translation id="3040011195152428237">লিঙ্ক</translation>
@@ -176,6 +177,7 @@
 <translation id="8785498733064193001">প্লেব্যাক শুরু করুন</translation>
 <translation id="8851136666856101339">প্রধান</translation>
 <translation id="8987927404178983737">মাস</translation>
+<translation id="9002566407876343676">খুলুন</translation>
 <translation id="901493112792887934">সেকেন্ডে বর্তমান সময়</translation>
 <translation id="9048119486235211610">নেভিগেশন</translation>
 <translation id="9050748414552849310">বন্ধ করা পরিচয়লিপিগুলি দেখান</translation>
diff --git a/content/app/strings/translations/content_strings_es-419.xtb b/content/app/strings/translations/content_strings_es-419.xtb
index b71836e..167740bc 100644
--- a/content/app/strings/translations/content_strings_es-419.xtb
+++ b/content/app/strings/translations/content_strings_es-419.xtb
@@ -51,7 +51,7 @@
 <translation id="2896972712917208084">grupo de botones de selección</translation>
 <translation id="2901282870647571346">estado actual de la película</translation>
 <translation id="2908441821576996758">Ingresa una lista de direcciones de correo electrónico separadas por coma</translation>
-<translation id="2931838996092594335">hacer clic en</translation>
+<translation id="2931838996092594335">hacer clic</translation>
 <translation id="2940813599313844715">objeto</translation>
 <translation id="2942448076852699108">contenido destacado</translation>
 <translation id="3040011195152428237">enlace</translation>
diff --git a/content/app/strings/translations/content_strings_ro.xtb b/content/app/strings/translations/content_strings_ro.xtb
index da46577..01dbadc 100644
--- a/content/app/strings/translations/content_strings_ro.xtb
+++ b/content/app/strings/translations/content_strings_ro.xtb
@@ -51,6 +51,7 @@
 <translation id="2896972712917208084">grup butoane radio</translation>
 <translation id="2901282870647571346">starea actuală a filmului</translation>
 <translation id="2908441821576996758">Introdu o listă de adrese de e-mail separate prin virgulă.</translation>
+<translation id="2931838996092594335">dă clic</translation>
 <translation id="2940813599313844715">obiect</translation>
 <translation id="2942448076852699108">conținut evidențiat</translation>
 <translation id="3040011195152428237">link</translation>
@@ -176,6 +177,7 @@
 <translation id="8785498733064193001">începeți redarea</translation>
 <translation id="8851136666856101339">principal</translation>
 <translation id="8987927404178983737">Lună</translation>
+<translation id="9002566407876343676">deschide</translation>
 <translation id="901493112792887934">timp actual în secunde</translation>
 <translation id="9048119486235211610">navigare</translation>
 <translation id="9050748414552849310">afișați subtitrările</translation>
diff --git a/content/app/strings/translations/content_strings_th.xtb b/content/app/strings/translations/content_strings_th.xtb
index 6446a68b..0ba3f8d4 100644
--- a/content/app/strings/translations/content_strings_th.xtb
+++ b/content/app/strings/translations/content_strings_th.xtb
@@ -59,7 +59,7 @@
 <translation id="3078740164268491126">ตาราง</translation>
 <translation id="3086746722712840547">หมายเหตุ</translation>
 <translation id="310520048233152454">โปรดป้อน URL</translation>
-<translation id="3175736971608411871">เครื่องควบคุมเวลา</translation>
+<translation id="3175736971608411871">ตัวจับเวลา</translation>
 <translation id="3199563858620722075">ช่องตัวเลือกรวม</translation>
 <translation id="3450233048674729344">ค่าต้องน้อยกว่าหรือเท่ากับ <ph name="MAXIMUM" /></translation>
 <translation id="3486220673238053218">คำจำกัดความ</translation>
diff --git a/content/app/strings/translations/content_strings_tr.xtb b/content/app/strings/translations/content_strings_tr.xtb
index c862c218..c6faf1a6 100644
--- a/content/app/strings/translations/content_strings_tr.xtb
+++ b/content/app/strings/translations/content_strings_tr.xtb
@@ -51,6 +51,7 @@
 <translation id="2896972712917208084">radyo düğmesi grubu</translation>
 <translation id="2901282870647571346">filmin geçerli durumu</translation>
 <translation id="2908441821576996758">Lütfen e-posta adreslerinin virgülle ayrılmış listesini girin.</translation>
+<translation id="2931838996092594335">tıklama</translation>
 <translation id="2940813599313844715">nesne</translation>
 <translation id="2942448076852699108">vurgulanan içerik</translation>
 <translation id="3040011195152428237">bağlantı</translation>
@@ -176,6 +177,7 @@
 <translation id="8785498733064193001">oynatmayı başlat</translation>
 <translation id="8851136666856101339">main</translation>
 <translation id="8987927404178983737">Ay</translation>
+<translation id="9002566407876343676">açma</translation>
 <translation id="901493112792887934">saniye olarak geçerli süre</translation>
 <translation id="9048119486235211610">gezinme</translation>
 <translation id="9050748414552849310">alt yazıları göster</translation>
diff --git a/content/browser/android/java/OWNERS b/content/browser/android/java/OWNERS
index 0cebb68..ce79cad 100644
--- a/content/browser/android/java/OWNERS
+++ b/content/browser/android/java/OWNERS
@@ -1,2 +1,2 @@
-mnaganov@chromium.org
+michaelbai@chromium.org
 torne@chromium.org
diff --git a/content/browser/bluetooth/bluetooth_dispatcher_host.cc b/content/browser/bluetooth/bluetooth_dispatcher_host.cc
index 71f66c3..c7a2dd3 100644
--- a/content/browser/bluetooth/bluetooth_dispatcher_host.cc
+++ b/content/browser/bluetooth/bluetooth_dispatcher_host.cc
@@ -701,16 +701,11 @@
   RecordWebBluetoothFunctionCall(
       UMAWebBluetoothFunction::REMOTE_GATT_SERVER_DISCONNECT);
 
-  // Make sure the origin is allowed to access the device. We perform this check
-  // in case a hostile renderer is trying to disconnect a device that the
-  // renderer is not allowed to access.
-  if (allowed_devices_map_.GetDeviceAddress(GetOrigin(frame_routing_id),
-                                            device_id)
-          .empty()) {
-    bad_message::ReceivedBadMessage(
-        this, bad_message::BDH_DEVICE_NOT_ALLOWED_FOR_ORIGIN);
-    return;
-  }
+  // Frames can send a disconnect request after they've started navigating,
+  // making calls to GetLastCommitted origin invalid. Because we still need
+  // to disconnect the device, otherwise we would leave users with no other
+  // option to disconnect than closing the tab, we purposefully don't
+  // check if the frame has permission to interact with the device.
 
   RenderFrameHostImpl* render_frame_host =
       RenderFrameHostImpl::FromID(render_process_id_, frame_routing_id);
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index fd3b225..0f5c572 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -774,16 +774,6 @@
     prefs->flash_stage3d_baseline_enabled = false;
   if (IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS))
     prefs->accelerated_2d_canvas_enabled = false;
-  // TODO(senorblanco): The renderer shouldn't have an extra setting
-  // for this, but should rely on extension availability.
-  // Note that |gl_multisampling_enabled| only affects the decoder's
-  // default framebuffer allocation, which does not support
-  // multisampled_render_to_texture, only msaa with explicit resolve.
-  if (IsDriverBugWorkaroundActive(
-          gpu::DISABLE_CHROMIUM_FRAMEBUFFER_MULTISAMPLE) ||
-      (IsDriverBugWorkaroundActive(gpu::DISABLE_MULTIMONITOR_MULTISAMPLING) &&
-       display_count_ > 1))
-    prefs->gl_multisampling_enabled = false;
 
 #if defined(USE_AURA)
   if (!CanUseGpuBrowserCompositor()) {
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
index b973f19..623e755 100644
--- a/content/child/BUILD.gn
+++ b/content/child/BUILD.gn
@@ -13,7 +13,6 @@
   # content component (i.e. not content/test or content/shell).
   visibility = [
     "//content/gpu/*",
-    "//content/plugin/*",
     "//content/ppapi_plugin/*",
     "//content/public/child:child_sources",
     "//content/renderer/*",
@@ -79,50 +78,11 @@
   if (enable_plugins) {
     deps += [ "//ppapi/proxy" ]
   } else {
-    sources -= [
-      "browser_font_resource_trusted.cc",
-      "npapi/plugin_host.cc",
-      "npapi/plugin_host.h",
-      "npapi/plugin_instance.cc",
-      "npapi/plugin_instance.h",
-      "npapi/plugin_lib.cc",
-      "npapi/plugin_lib.h",
-      "npapi/webplugin.h",
-      "npapi/webplugin_delegate.h",
-      "npapi/webplugin_delegate_impl.cc",
-      "npapi/webplugin_delegate_impl.h",
-      "npapi/webplugin_resource_client.h",
-    ]
-
-    if (is_mac) {
-      sources -= [
-        "npapi/plugin_instance_mac.mm",
-        "npapi/plugin_web_event_converter_mac.h",
-        "npapi/plugin_web_event_converter_mac.mm",
-        "npapi/webplugin_accelerated_surface_mac.h",
-        "npapi/webplugin_delegate_impl_mac.mm",
-      ]
-    } else if (is_win) {
-      sources -= [ "npapi/webplugin_delegate_impl_win.cc" ]
-    } else if (is_android) {
-      sources -= [ "npapi/webplugin_delegate_impl_android.cc" ]
-    }
-    if (use_aura) {
-      sources -= [ "npapi/webplugin_delegate_impl_aura.cc" ]
-    }
+    sources -= [ "browser_font_resource_trusted.cc" ]
   }
 
   configs += [
     "//content:content_implementation",
     "//build/config/compiler:no_size_t_to_int_warning",
   ]
-
-  if (use_aura && is_mac) {
-    # This file is already excluded on non-Mac.
-    sources -= [ "npapi/webplugin_delegate_impl_mac.mm" ]
-  }
-
-  if (is_win || !use_aura) {
-    sources -= [ "npapi/webplugin_delegate_impl_aura.cc" ]
-  }
 }
diff --git a/content/child/npapi/DEPS b/content/child/npapi/DEPS
deleted file mode 100644
index d07f4af..0000000
--- a/content/child/npapi/DEPS
+++ /dev/null
@@ -1,4 +0,0 @@
-include_rules = [
-  "+printing",
-  "+ui/base",
-]
diff --git a/content/child/npapi/OWNERS b/content/child/npapi/OWNERS
deleted file mode 100644
index bd012ea..0000000
--- a/content/child/npapi/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-ananta@chromium.org
-bauerb@chromium.org
diff --git a/content/child/npapi/np_channel_base.cc b/content/child/npapi/np_channel_base.cc
deleted file mode 100644
index 29984ea..0000000
--- a/content/child/npapi/np_channel_base.cc
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/np_channel_base.h"
-
-#include <stddef.h>
-
-#include "base/auto_reset.h"
-#include "base/containers/hash_tables.h"
-#include "base/files/scoped_file.h"
-#include "base/lazy_instance.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_local.h"
-#include "build/build_config.h"
-#include "ipc/ipc_sync_message.h"
-
-#if defined(OS_POSIX)
-#include "base/files/file_util.h"
-#include "ipc/ipc_channel_posix.h"
-#endif
-
-namespace content {
-
-namespace {
-
-typedef base::hash_map<std::string, scoped_refptr<NPChannelBase> > ChannelMap;
-
-struct ChannelGlobals {
-  ChannelMap channel_map;
-  scoped_refptr<NPChannelBase> current_channel;
-};
-
-#if defined(OS_ANDROID)
-// Workaround for http://crbug.com/298179 - NPChannelBase is only intended
-// for use on one thread per process. Using TLS to store the globals removes the
-// worst thread hostility in this class, especially needed for webview which
-// runs in single-process mode. TODO(joth): Make a complete fix, most likely
-// as part of addressing http://crbug.com/258510.
-base::LazyInstance<base::ThreadLocalPointer<ChannelGlobals> >::Leaky
-    g_channels_tls_ptr = LAZY_INSTANCE_INITIALIZER;
-
-ChannelGlobals* GetChannelGlobals() {
-  ChannelGlobals* globals = g_channels_tls_ptr.Get().Get();
-  if (!globals) {
-    globals = new ChannelGlobals;
-    g_channels_tls_ptr.Get().Set(globals);
-  }
-  return globals;
-}
-
-#else
-
-base::LazyInstance<ChannelGlobals>::Leaky g_channels_globals =
-    LAZY_INSTANCE_INITIALIZER;
-
-ChannelGlobals* GetChannelGlobals() { return g_channels_globals.Pointer(); }
-
-#endif  // OS_ANDROID
-
-ChannelMap* GetChannelMap() {
-  return &GetChannelGlobals()->channel_map;
-}
-
-}  // namespace
-
-NPChannelBase* NPChannelBase::GetChannel(
-    const IPC::ChannelHandle& channel_handle,
-    IPC::Channel::Mode mode,
-    ChannelFactory factory,
-    base::SingleThreadTaskRunner* ipc_task_runner,
-    bool create_pipe_now,
-    base::WaitableEvent* shutdown_event) {
-#if defined(OS_POSIX)
-  // On POSIX the channel_handle conveys an FD (socket) which is duped by the
-  // kernel during the IPC message exchange (via the SCM_RIGHTS mechanism).
-  // Ensure we do not leak this FD.
-  base::ScopedFD fd(channel_handle.socket.auto_close ?
-                    channel_handle.socket.fd : -1);
-#endif
-
-  scoped_refptr<NPChannelBase> channel;
-  std::string channel_key = channel_handle.name;
-  ChannelMap::const_iterator iter = GetChannelMap()->find(channel_key);
-  if (iter == GetChannelMap()->end()) {
-    channel = factory();
-  } else {
-    channel = iter->second;
-  }
-
-  DCHECK(channel.get() != NULL);
-
-  if (!channel->channel_valid()) {
-    channel->channel_handle_ = channel_handle;
-#if defined(OS_POSIX)
-    ignore_result(fd.release());
-#endif
-    if (mode & IPC::Channel::MODE_SERVER_FLAG) {
-      channel->channel_handle_.name =
-          IPC::Channel::GenerateVerifiedChannelID(channel_key);
-    }
-    channel->mode_ = mode;
-    if (channel->Init(ipc_task_runner, create_pipe_now, shutdown_event)) {
-      (*GetChannelMap())[channel_key] = channel;
-    } else {
-      channel = NULL;
-    }
-  }
-
-  return channel.get();
-}
-
-void NPChannelBase::Broadcast(IPC::Message* message) {
-  for (ChannelMap::iterator iter = GetChannelMap()->begin();
-       iter != GetChannelMap()->end();
-       ++iter) {
-    iter->second->Send(new IPC::Message(*message));
-  }
-  delete message;
-}
-
-NPChannelBase::NPChannelBase()
-    : mode_(IPC::Channel::MODE_NONE),
-      non_npobject_count_(0),
-      peer_pid_(0),
-      channel_valid_(false),
-      in_unblock_dispatch_(0),
-      send_unblocking_only_during_unblock_dispatch_(false) {
-}
-
-NPChannelBase::~NPChannelBase() {
-}
-
-NPChannelBase* NPChannelBase::GetCurrentChannel() {
-  return GetChannelGlobals()->current_channel.get();
-}
-
-void NPChannelBase::CleanupChannels() {
-  // Make a copy of the references as we can't iterate the map since items will
-  // be removed from it as we clean them up.
-  std::vector<scoped_refptr<NPChannelBase> > channels;
-  for (ChannelMap::const_iterator iter = GetChannelMap()->begin();
-       iter != GetChannelMap()->end();
-       ++iter) {
-    channels.push_back(iter->second);
-  }
-
-  for (size_t i = 0; i < channels.size(); ++i)
-    channels[i]->CleanUp();
-
-  // This will clean up channels added to the map for which subsequent
-  // AddRoute wasn't called
-  GetChannelMap()->clear();
-}
-
-base::WaitableEvent* NPChannelBase::GetModalDialogEvent(int render_view_id) {
-  return NULL;
-}
-
-bool NPChannelBase::Init(base::SingleThreadTaskRunner* ipc_task_runner,
-                         bool create_pipe_now,
-                         base::WaitableEvent* shutdown_event) {
-#if defined(OS_POSIX)
-  // Attempting to initialize with an invalid channel handle.
-  // See http://crbug.com/97285 for details.
-  if (mode_ == IPC::Channel::MODE_CLIENT && -1 == channel_handle_.socket.fd)
-    return false;
-#endif
-
-  channel_ =
-      IPC::SyncChannel::Create(channel_handle_, mode_, this, ipc_task_runner,
-                               create_pipe_now, shutdown_event);
-
-#if defined(OS_POSIX)
-  // Check the validity of fd for bug investigation.  Remove after fixed.
-  // See crbug.com/97285 for details.
-  if (mode_ == IPC::Channel::MODE_SERVER)
-    CHECK_NE(-1, channel_->GetClientFileDescriptor());
-#endif
-
-  channel_valid_ = true;
-  return true;
-}
-
-bool NPChannelBase::Send(IPC::Message* message) {
-  if (!channel_) {
-    VLOG(1) << "Channel is NULL; dropping message";
-    delete message;
-    return false;
-  }
-
-  if (send_unblocking_only_during_unblock_dispatch_ &&
-      in_unblock_dispatch_ == 0 &&
-      message->is_sync()) {
-    message->set_unblock(false);
-  }
-
-  return channel_->Send(message);
-}
-
-bool NPChannelBase::OnMessageReceived(const IPC::Message& message) {
-  // Push this channel as the current channel being processed. This also forms
-  // a stack of scoped_refptr avoiding ourselves (or any instance higher
-  // up the callstack) from being deleted while processing a message.
-  base::AutoReset<scoped_refptr<NPChannelBase> > keep_alive(
-      &GetChannelGlobals()->current_channel, this);
-
-  bool handled;
-  if (message.should_unblock())
-    in_unblock_dispatch_++;
-  if (message.routing_id() == MSG_ROUTING_CONTROL) {
-    handled = OnControlMessageReceived(message);
-  } else {
-    handled = router_.RouteMessage(message);
-    if (!handled && message.is_sync()) {
-      // The listener has gone away, so we must respond or else the caller will
-      // hang waiting for a reply.
-      IPC::Message* reply = IPC::SyncMessage::GenerateReply(&message);
-      reply->set_reply_error();
-      Send(reply);
-    }
-  }
-  if (message.should_unblock())
-    in_unblock_dispatch_--;
-
-  return handled;
-}
-
-void NPChannelBase::OnChannelConnected(int32_t peer_pid) {
-  peer_pid_ = peer_pid;
-}
-
-void NPChannelBase::AddRoute(int route_id, IPC::Listener* listener) {
-  non_npobject_count_++;
-  router_.AddRoute(route_id, listener);
-}
-
-void NPChannelBase::RemoveRoute(int route_id) {
-  router_.RemoveRoute(route_id);
-
-  non_npobject_count_--;
-  DCHECK(non_npobject_count_ >= 0);
-
-  if (!non_npobject_count_) {
-    for (ChannelMap::iterator iter = GetChannelMap()->begin();
-         iter != GetChannelMap()->end(); ++iter) {
-      if (iter->second.get() == this) {
-        GetChannelMap()->erase(iter);
-        return;
-      }
-    }
-
-    NOTREACHED();
-  }
-}
-
-bool NPChannelBase::OnControlMessageReceived(const IPC::Message& msg) {
-  NOTREACHED() <<
-      "should override in subclass if you care about control messages";
-  return false;
-}
-
-void NPChannelBase::OnChannelError() {
-  channel_valid_ = false;
-
-  // TODO(shess): http://crbug.com/97285
-  // Once an error is seen on a channel, remap the channel to prevent
-  // it from being vended again.  Keep the channel in the map so
-  // RemoveRoute() can clean things up correctly.
-  for (ChannelMap::iterator iter = GetChannelMap()->begin();
-       iter != GetChannelMap()->end(); ++iter) {
-    if (iter->second.get() == this) {
-      // Insert new element before invalidating |iter|.
-      (*GetChannelMap())[iter->first + "-error"] = iter->second;
-      GetChannelMap()->erase(iter);
-      break;
-    }
-  }
-}
-
-}  // namespace content
diff --git a/content/child/npapi/np_channel_base.h b/content/child/npapi/np_channel_base.h
deleted file mode 100644
index e074165..0000000
--- a/content/child/npapi/np_channel_base.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_NP_CHANNEL_BASE_H_
-#define CONTENT_CHILD_NPAPI_NP_CHANNEL_BASE_H_
-
-#include <stdint.h>
-
-#include <string>
-
-#include "base/containers/hash_tables.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/process/process.h"
-#include "ipc/ipc_channel_handle.h"
-#include "ipc/ipc_sync_channel.h"
-#include "ipc/message_router.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-}
-
-namespace content {
-
-// Encapsulates an IPC channel between a renderer and another process. Used to
-// proxy access to NP objects.
-class NPChannelBase : public IPC::Listener,
-                      public IPC::Sender,
-                      public base::RefCountedThreadSafe<NPChannelBase> {
- public:
-  // WebPlugin[Delegate] call these on construction and destruction to setup
-  // the routing and manage lifetime of this object.
-  void AddRoute(int route_id, IPC::Listener* listener);
-  void RemoveRoute(int route_id);
-
-  // IPC::Sender implementation:
-  bool Send(IPC::Message* msg) override;
-
-  base::ProcessId peer_pid() { return channel_->GetPeerPID(); }
-  IPC::ChannelHandle channel_handle() const { return channel_handle_; }
-
-  // Returns a new route id.
-  virtual int GenerateRouteID() = 0;
-
-  // Returns whether the channel is valid or not. A channel is invalid
-  // if it is disconnected due to a channel error.
-  bool channel_valid() {
-    return channel_valid_;
-  }
-
-  // Returns the most recent NPChannelBase to have received a message
-  // in this process.
-  static NPChannelBase* GetCurrentChannel();
-
-  static void CleanupChannels();
-
-  // Returns the event that's set when a call to the renderer causes a modal
-  // dialog to come up. The default implementation returns NULL. Derived
-  // classes should override this method if this functionality is required.
-  virtual base::WaitableEvent* GetModalDialogEvent(int render_view_id);
-
- protected:
-  typedef NPChannelBase* (*ChannelFactory)();
-
-  friend class base::RefCountedThreadSafe<NPChannelBase>;
-
-  ~NPChannelBase() override;
-
-  // Returns a NPChannelBase derived object for the given channel name.
-  // If an existing channel exists returns that object, otherwise creates a
-  // new one.  Even though on creation the object is refcounted, each caller
-  // must still ref count the returned value.  When there are no more routes
-  // on the channel and its ref count is 0, the object deletes itself.
-  static NPChannelBase* GetChannel(
-      const IPC::ChannelHandle& channel_handle,
-      IPC::Channel::Mode mode,
-      ChannelFactory factory,
-      base::SingleThreadTaskRunner* ipc_task_runner,
-      bool create_pipe_now,
-      base::WaitableEvent* shutdown_event);
-
-  // Sends a message to all instances.
-  static void Broadcast(IPC::Message* message);
-
-  // Called on the worker thread
-  NPChannelBase();
-
-  virtual void CleanUp() { }
-
-  // Implemented by derived classes to handle control messages
-  virtual bool OnControlMessageReceived(const IPC::Message& msg);
-
-  // IPC::Listener implementation:
-  bool OnMessageReceived(const IPC::Message& msg) override;
-  void OnChannelConnected(int32_t peer_pid) override;
-  void OnChannelError() override;
-
-  void set_send_unblocking_only_during_unblock_dispatch() {
-    send_unblocking_only_during_unblock_dispatch_ = true;
-  }
-
-  virtual bool Init(base::SingleThreadTaskRunner* ipc_task_runner,
-                    bool create_pipe_now,
-                    base::WaitableEvent* shutdown_event);
-
-  scoped_ptr<IPC::SyncChannel> channel_;
-  IPC::ChannelHandle channel_handle_;
-
- private:
-  IPC::Channel::Mode mode_;
-  // This tracks the number of routes registered without an NPObject. It's used
-  // to manage the lifetime of this object. See comment for AddRoute() and
-  // RemoveRoute().
-  int non_npobject_count_;
-  int peer_pid_;
-
-  // true when in the middle of a RemoveRoute call
-  bool in_remove_route_;
-
-  // Used to implement message routing functionality to WebPlugin[Delegate]
-  // objects
-  IPC::MessageRouter router_;
-
-  // A channel is invalid if it is disconnected as a result of a channel
-  // error. This flag is used to indicate the same.
-  bool channel_valid_;
-
-  // Track whether we're dispatching a message with the unblock flag; works like
-  // a refcount, 0 when we're not.
-  int in_unblock_dispatch_;
-
-  // If true, sync messages will only be marked as unblocking if the channel is
-  // in the middle of dispatching an unblocking message.  The non-renderer
-  // process wants to avoid setting the unblock flag on its sync messages
-  // unless necessary, since it can potentially introduce reentrancy into
-  // WebKit in ways that it doesn't expect (i.e. causing layout during paint).
-  // However to avoid deadlock, we must ensure that any message that's sent as
-  // a result of a sync call from the renderer must unblock the renderer.  We
-  // additionally have to do this for async messages from the renderer that
-  // have the unblock flag set, since they could be followed by a sync message
-  // that won't get dispatched until the call to the renderer is complete.
-  bool send_unblocking_only_during_unblock_dispatch_;
-
-  DISALLOW_COPY_AND_ASSIGN(NPChannelBase);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_NP_CHANNEL_BASE_H_
diff --git a/content/child/npapi/plugin_host.cc b/content/child/npapi/plugin_host.cc
deleted file mode 100644
index 867537be..0000000
--- a/content/child/npapi/plugin_host.cc
+++ /dev/null
@@ -1,863 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/plugin_host.h"
-
-#include <stddef.h>
-#include <string.h>
-
-#include "base/command_line.h"
-#include "base/files/file_util.h"
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/child/npapi/webplugin_delegate.h"
-#include "content/public/common/content_client.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/user_agent.h"
-#include "content/public/common/webplugininfo.h"
-#include "net/base/filename_util.h"
-#include "third_party/WebKit/public/web/WebBindings.h"
-#include "third_party/WebKit/public/web/WebKit.h"
-#include "third_party/npapi/bindings/npruntime.h"
-#include "ui/gl/gl_implementation.h"
-#include "ui/gl/gl_surface.h"
-
-using blink::WebBindings;
-
-// Declarations for stub implementations of deprecated functions, which are no
-// longer listed in npapi.h.
-extern "C" {
-void* NPN_GetJavaEnv();
-void* NPN_GetJavaPeer(NPP);
-}
-
-namespace content {
-
-// Finds a PluginInstance from an NPP.
-// The caller must take a reference if needed.
-static PluginInstance* FindInstance(NPP id) {
-  if (id == NULL) {
-    return NULL;
-  }
-  return reinterpret_cast<PluginInstance*>(id->ndata);
-}
-
-#if defined(OS_MACOSX)
-// Returns true if Core Animation plugins are supported. This requires that the
-// OS supports shared accelerated surfaces via IOSurface. This is true on Snow
-// Leopard and higher.
-static bool SupportsCoreAnimationPlugins() {
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kDisableCoreAnimationPlugins))
-    return false;
-  // We also need to be running with desktop GL and not the software
-  // OSMesa renderer in order to share accelerated surfaces between
-  // processes. Because on MacOS we lazy-initialize GLSurface in the
-  // renderer process here, ensure we're not also initializing GL somewhere
-  // else, and that we only do this once.
-  static gfx::GLImplementation implementation = gfx::kGLImplementationNone;
-  if (implementation == gfx::kGLImplementationNone) {
-    // Not initialized yet.
-    DCHECK_EQ(implementation, gfx::GetGLImplementation())
-        << "GL already initialized by someone else to: "
-        << gfx::GetGLImplementation();
-    if (!gfx::GLSurface::InitializeOneOff()) {
-      return false;
-    }
-    implementation = gfx::GetGLImplementation();
-  }
-  return (implementation == gfx::kGLImplementationDesktopGL);
-}
-#endif
-
-PluginHost::PluginHost() {
-  InitializeHostFuncs();
-}
-
-PluginHost::~PluginHost() {
-}
-
-PluginHost *PluginHost::Singleton() {
-  CR_DEFINE_STATIC_LOCAL(scoped_refptr<PluginHost>, singleton, ());
-  if (singleton.get() == NULL) {
-    singleton = new PluginHost();
-  }
-
-  DCHECK(singleton.get() != NULL);
-  return singleton.get();
-}
-
-void PluginHost::InitializeHostFuncs() {
-  memset(&host_funcs_, 0, sizeof(host_funcs_));
-  host_funcs_.size = sizeof(host_funcs_);
-  host_funcs_.version = (NP_VERSION_MAJOR << 8) | (NP_VERSION_MINOR);
-
-  // The "basic" functions
-  host_funcs_.geturl = &NPN_GetURL;
-  host_funcs_.posturl = &NPN_PostURL;
-  host_funcs_.requestread = &NPN_RequestRead;
-  host_funcs_.newstream = &NPN_NewStream;
-  host_funcs_.write = &NPN_Write;
-  host_funcs_.destroystream = &NPN_DestroyStream;
-  host_funcs_.status = &NPN_Status;
-  host_funcs_.uagent = &NPN_UserAgent;
-  host_funcs_.memalloc = &NPN_MemAlloc;
-  host_funcs_.memfree = &NPN_MemFree;
-  host_funcs_.memflush = &NPN_MemFlush;
-  host_funcs_.reloadplugins = &NPN_ReloadPlugins;
-
-  // Stubs for deprecated Java functions
-  host_funcs_.getJavaEnv = &NPN_GetJavaEnv;
-  host_funcs_.getJavaPeer = &NPN_GetJavaPeer;
-
-  // Advanced functions we implement
-  host_funcs_.geturlnotify = &NPN_GetURLNotify;
-  host_funcs_.posturlnotify = &NPN_PostURLNotify;
-  host_funcs_.getvalue = &NPN_GetValue;
-  host_funcs_.setvalue = &NPN_SetValue;
-  host_funcs_.invalidaterect = &NPN_InvalidateRect;
-  host_funcs_.invalidateregion = &NPN_InvalidateRegion;
-  host_funcs_.forceredraw = &NPN_ForceRedraw;
-
-  // These come from the Javascript Engine
-  host_funcs_.getstringidentifier = WebBindings::getStringIdentifier;
-  host_funcs_.getstringidentifiers = WebBindings::getStringIdentifiers;
-  host_funcs_.getintidentifier = WebBindings::getIntIdentifier;
-  host_funcs_.identifierisstring = WebBindings::identifierIsString;
-  host_funcs_.utf8fromidentifier = WebBindings::utf8FromIdentifier;
-  host_funcs_.intfromidentifier = WebBindings::intFromIdentifier;
-  host_funcs_.createobject = WebBindings::createObject;
-  host_funcs_.retainobject = WebBindings::retainObject;
-  host_funcs_.releaseobject = WebBindings::releaseObject;
-  host_funcs_.invoke = WebBindings::invoke;
-  host_funcs_.invokeDefault = WebBindings::invokeDefault;
-  host_funcs_.evaluate = WebBindings::evaluate;
-  host_funcs_.getproperty = WebBindings::getProperty;
-  host_funcs_.setproperty = WebBindings::setProperty;
-  host_funcs_.removeproperty = WebBindings::removeProperty;
-  host_funcs_.hasproperty = WebBindings::hasProperty;
-  host_funcs_.hasmethod = WebBindings::hasMethod;
-  host_funcs_.releasevariantvalue = WebBindings::releaseVariantValue;
-  host_funcs_.setexception = WebBindings::setException;
-  host_funcs_.pushpopupsenabledstate = NPN_PushPopupsEnabledState;
-  host_funcs_.poppopupsenabledstate = NPN_PopPopupsEnabledState;
-  host_funcs_.enumerate = WebBindings::enumerate;
-  host_funcs_.pluginthreadasynccall = NPN_PluginThreadAsyncCall;
-  host_funcs_.construct = WebBindings::construct;
-  host_funcs_.getvalueforurl = NPN_GetValueForURL;
-  host_funcs_.setvalueforurl = NPN_SetValueForURL;
-  host_funcs_.getauthenticationinfo = NPN_GetAuthenticationInfo;
-  host_funcs_.scheduletimer = NPN_ScheduleTimer;
-  host_funcs_.unscheduletimer = NPN_UnscheduleTimer;
-  host_funcs_.popupcontextmenu = NPN_PopUpContextMenu;
-  host_funcs_.convertpoint = NPN_ConvertPoint;
-  host_funcs_.handleevent = NPN_HandleEvent;
-  host_funcs_.unfocusinstance = NPN_UnfocusInstance;
-  host_funcs_.urlredirectresponse = NPN_URLRedirectResponse;
-}
-
-void PluginHost::PatchNPNetscapeFuncs(NPNetscapeFuncs* overrides) {
-  // When running in the plugin process, we need to patch the NPN functions
-  // that the plugin calls to interact with NPObjects that we give.  Otherwise
-  // the plugin will call the v8 NPN functions, which won't work since we have
-  // an NPObjectProxy and not a real v8 implementation.
-  if (overrides->invoke)
-    host_funcs_.invoke = overrides->invoke;
-
-  if (overrides->invokeDefault)
-    host_funcs_.invokeDefault = overrides->invokeDefault;
-
-  if (overrides->evaluate)
-    host_funcs_.evaluate = overrides->evaluate;
-
-  if (overrides->getproperty)
-    host_funcs_.getproperty = overrides->getproperty;
-
-  if (overrides->setproperty)
-    host_funcs_.setproperty = overrides->setproperty;
-
-  if (overrides->removeproperty)
-    host_funcs_.removeproperty = overrides->removeproperty;
-
-  if (overrides->hasproperty)
-    host_funcs_.hasproperty = overrides->hasproperty;
-
-  if (overrides->hasmethod)
-    host_funcs_.hasmethod = overrides->hasmethod;
-
-  if (overrides->setexception)
-    host_funcs_.setexception = overrides->setexception;
-
-  if (overrides->enumerate)
-    host_funcs_.enumerate = overrides->enumerate;
-}
-
-bool PluginHost::SetPostData(const char* buf,
-                             uint32_t length,
-                             std::vector<std::string>* names,
-                             std::vector<std::string>* values,
-                             std::vector<char>* body) {
-  // Use a state table to do the parsing.  Whitespace must be
-  // trimmed after the fact if desired.  In our case, we actually
-  // don't care about the whitespace, because we're just going to
-  // pass this back into another POST.  This function strips out the
-  // "Content-length" header and does not append it to the request.
-
-  //
-  // This parser takes action only on state changes.
-  //
-  // Transition table:
-  //                  :       \n  NULL    Other
-  // 0 GetHeader      1       2   4       0
-  // 1 GetValue       1       0   3       1
-  // 2 GetData        2       2   3       2
-  // 3 DONE
-  // 4 ERR
-  //
-  enum { INPUT_COLON=0, INPUT_NEWLINE, INPUT_NULL, INPUT_OTHER };
-  enum { GETNAME, GETVALUE, GETDATA, DONE, ERR };
-  int statemachine[3][4] = { { GETVALUE, GETDATA, GETDATA, GETNAME },
-                             { GETVALUE, GETNAME, DONE, GETVALUE },
-                             { GETDATA,  GETDATA, DONE, GETDATA } };
-  std::string name, value;
-  const char* ptr = static_cast<const char*>(buf);
-  const char* start = ptr;
-  int state = GETNAME;  // initial state
-  bool done = false;
-  bool err = false;
-  do {
-    int input;
-
-    // Translate the current character into an input
-    // for the state table.
-    switch (*ptr) {
-      case ':' :
-        input = INPUT_COLON;
-        break;
-      case '\n':
-        input = INPUT_NEWLINE;
-        break;
-      case 0   :
-        input = INPUT_NULL;
-        break;
-      default  :
-        input = INPUT_OTHER;
-        break;
-    }
-
-    int newstate = statemachine[state][input];
-
-    // Take action based on the new state.
-    if (state != newstate) {
-      switch (newstate) {
-        case GETNAME:
-          // Got a value.
-          value = std::string(start, ptr - start);
-          base::TrimWhitespaceASCII(value, base::TRIM_ALL, &value);
-          // If the name field is empty, we'll skip this header
-          // but we won't error out.
-          if (!name.empty() && name != "content-length") {
-            names->push_back(name);
-            values->push_back(value);
-          }
-          start = ptr + 1;
-          break;
-        case GETVALUE:
-          // Got a header.
-          name = base::ToLowerASCII(base::StringPiece(start, ptr - start));
-          base::TrimWhitespaceASCII(name, base::TRIM_ALL, &name);
-          start = ptr + 1;
-          break;
-        case GETDATA: {
-          // Finished headers, now get body
-          if (*ptr)
-            start = ptr + 1;
-          size_t previous_size = body->size();
-          size_t new_body_size = length - static_cast<int>(start - buf);
-          body->resize(previous_size + new_body_size);
-          if (!body->empty())
-            memcpy(&body->front() + previous_size, start, new_body_size);
-          done = true;
-          break;
-        }
-        case ERR:
-          // error
-          err = true;
-          done = true;
-          break;
-      }
-    }
-    state = newstate;
-    ptr++;
-  } while (!done);
-
-  return !err;
-}
-
-}  // namespace content
-
-extern "C" {
-
-using content::FindInstance;
-using content::PluginHost;
-using content::PluginInstance;
-using content::WebPlugin;
-
-// Allocates memory from the host's memory space.
-void* NPN_MemAlloc(uint32_t size) {
-  // Note: We must use the same allocator/deallocator
-  // that is used by the javascript library, as some of the
-  // JS APIs will pass memory to the plugin which the plugin
-  // will attempt to free.
-  return malloc(size);
-}
-
-// Deallocates memory from the host's memory space
-void NPN_MemFree(void* ptr) {
-  if (ptr != NULL && ptr != reinterpret_cast<void*>(-1))
-    free(ptr);
-}
-
-// Requests that the host free a specified amount of memory.
-uint32_t NPN_MemFlush(uint32_t size) {
-  // This is not relevant on Windows; MAC specific
-  return size;
-}
-
-// This is for dynamic discovery of new plugins.
-// Should force a re-scan of the plugins directory to load new ones.
-void NPN_ReloadPlugins(NPBool reload_pages) {
-  blink::resetPluginCache(reload_pages ? true : false);
-}
-
-// Requests a range of bytes for a seekable stream.
-NPError NPN_RequestRead(NPStream* stream, NPByteRange* range_list) {
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_GetURLNotify(NPP id,
-                         const char* url,
-                         const char* target,
-                         void* notify_data) {
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_GetURL(NPP id, const char* url, const char* target) {
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_PostURLNotify(NPP id,
-                    const char* url,
-                    const char* target,
-                    uint32_t len,
-                    const char* buf,
-                    NPBool file,
-                    void* notify_data) {
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_PostURL(NPP id,
-                    const char* url,
-                    const char* target,
-                    uint32_t len,
-                    const char* buf,
-                    NPBool file) {
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_NewStream(NPP id,
-                      NPMIMEType type,
-                      const char* target,
-                      NPStream** stream) {
-  // Requests creation of a new data stream produced by the plugin,
-  // consumed by the browser.
-  //
-  // Browser should put this stream into a window target.
-  //
-  // TODO: implement me
-  DVLOG(1) << "NPN_NewStream is not implemented yet.";
-  return NPERR_GENERIC_ERROR;
-}
-
-int32_t NPN_Write(NPP id, NPStream* stream, int32_t len, void* buffer) {
-  // Writes data to an existing Plugin-created stream.
-
-  // TODO: implement me
-  DVLOG(1) << "NPN_Write is not implemented yet.";
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_DestroyStream(NPP id, NPStream* stream, NPReason reason) {
-  // Destroys a stream (could be created by plugin or browser).
-  //
-  // Reasons:
-  //    NPRES_DONE          - normal completion
-  //    NPRES_USER_BREAK    - user terminated
-  //    NPRES_NETWORK_ERROR - network error (all errors fit here?)
-  //
-  //
-
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get() == NULL) {
-    NOTREACHED();
-    return NPERR_GENERIC_ERROR;
-  }
-
-  return plugin->NPP_DestroyStream(stream, reason);
-}
-
-const char* NPN_UserAgent(NPP id) {
-#if defined(OS_WIN)
-  // Flash passes in a null id during the NP_initialize call.  We need to
-  // default to the Mozilla user agent if we don't have an NPP instance or
-  // else Flash won't request windowless mode.
-  bool use_mozilla_user_agent = true;
-  if (id) {
-    scoped_refptr<PluginInstance> plugin = FindInstance(id);
-    if (plugin.get() && !plugin->use_mozilla_user_agent())
-      use_mozilla_user_agent = false;
-  }
-
-  if (use_mozilla_user_agent)
-    return "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) "
-        "Gecko/20061103 Firefox/2.0a1";
-#endif
-
-  // Provide a consistent user-agent string with memory that lasts
-  // long enough for the caller to read it.
-  static base::LazyInstance<std::string>::Leaky leaky_user_agent =
-    LAZY_INSTANCE_INITIALIZER;
-  if (leaky_user_agent == NULL)
-    leaky_user_agent.Get() = content::GetContentClient()->GetUserAgent();
-  return leaky_user_agent.Get().c_str();
-}
-
-void NPN_Status(NPP id, const char* message) {
-  // Displays a message on the status line of the browser window.
-
-  // TODO: implement me
-  DVLOG(1) << "NPN_Status is not implemented yet.";
-}
-
-void NPN_InvalidateRect(NPP id, NPRect *invalidRect) {
-  // Invalidates specified drawing area prior to repainting or refreshing a
-  // windowless plugin
-
-  // Before a windowless plugin can refresh part of its drawing area, it must
-  // first invalidate it.  This function causes the NPP_HandleEvent method to
-  // pass an update event or a paint message to the plugin.  After calling
-  // this method, the plugin receives a paint message asynchronously.
-
-  // The browser redraws invalid areas of the document and any windowless
-  // plugins at regularly timed intervals. To force a paint message, the
-  // plugin can call NPN_ForceRedraw after calling this method.
-
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get() && plugin->webplugin()) {
-    if (invalidRect) {
-      gfx::Rect rect(invalidRect->left,
-                     invalidRect->top,
-                     invalidRect->right - invalidRect->left,
-                     invalidRect->bottom - invalidRect->top);
-      plugin->webplugin()->InvalidateRect(rect);
-    } else {
-      plugin->webplugin()->Invalidate();
-    }
-  }
-}
-
-void NPN_InvalidateRegion(NPP id, NPRegion invalidRegion) {
-  // Invalidates a specified drawing region prior to repainting
-  // or refreshing a window-less plugin.
-  //
-  // Similar to NPN_InvalidateRect.
-
-  // TODO: this is overkill--add platform-specific region handling (at the
-  // very least, fetch the region's bounding box and pass it to InvalidateRect).
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  DCHECK(plugin.get() != NULL);
-  if (plugin.get() && plugin->webplugin())
-    plugin->webplugin()->Invalidate();
-}
-
-void NPN_ForceRedraw(NPP id) {
-  // Forces repaint for a windowless plugin.
-  //
-  // We deliberately do not implement this; we don't want plugins forcing
-  // synchronous paints.
-}
-
-NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) {
-  // Allows the plugin to query the browser for information
-  //
-  // Variables:
-  //    NPNVxDisplay (unix only)
-  //    NPNVxtAppContext (unix only)
-  //    NPNVjavascriptEnabledBool:  tells whether Javascript is enabled
-  //    NPNVasdEnabledBool:  tells whether SmartUpdate is enabled
-  //    NPNVOfflineBool: tells whether offline-mode is enabled
-
-  NPError rv = NPERR_GENERIC_ERROR;
-
-  switch (static_cast<int>(variable)) {
-    case NPNVjavascriptEnabledBool: {
-      // yes, JS is enabled.
-      *((void**)value) = (void*)1;
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVSupportsWindowless: {
-      NPBool* supports_windowless = reinterpret_cast<NPBool*>(value);
-      *supports_windowless = true;
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVprivateModeBool: {
-      NPBool* private_mode = reinterpret_cast<NPBool*>(value);
-      scoped_refptr<PluginInstance> plugin(FindInstance(id));
-      if (!plugin.get()) {
-        NOTREACHED();
-        return NPERR_INVALID_INSTANCE_ERROR;
-      }
-      *private_mode = plugin->webplugin()->IsOffTheRecord();
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-  #if defined(OS_MACOSX)
-    case NPNVpluginDrawingModel: {
-      // return the drawing model that was negotiated when we initialized.
-      scoped_refptr<PluginInstance> plugin(FindInstance(id));
-      if (!plugin.get()) {
-        NOTREACHED();
-        return NPERR_INVALID_INSTANCE_ERROR;
-      }
-      *reinterpret_cast<int*>(value) = plugin->drawing_model();
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVsupportsCoreGraphicsBool:
-    case NPNVsupportsCocoaBool: {
-      // These drawing and event models are always supported.
-      NPBool* supports_model = reinterpret_cast<NPBool*>(value);
-      *supports_model = true;
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVsupportsInvalidatingCoreAnimationBool:
-    case NPNVsupportsCoreAnimationBool: {
-      NPBool* supports_model = reinterpret_cast<NPBool*>(value);
-      *supports_model = content::SupportsCoreAnimationPlugins();
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-#ifndef NP_NO_CARBON
-    case NPNVsupportsCarbonBool:
-#endif
-#ifndef NP_NO_QUICKDRAW
-    case NPNVsupportsQuickDrawBool:
-#endif
-    case NPNVsupportsOpenGLBool: {
-      // These models are never supported. OpenGL was never widely supported,
-      // and QuickDraw and Carbon have been deprecated for quite some time.
-      NPBool* supports_model = reinterpret_cast<NPBool*>(value);
-      *supports_model = false;
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVsupportsCompositingCoreAnimationPluginsBool: {
-      NPBool* supports_compositing = reinterpret_cast<NPBool*>(value);
-      *supports_compositing = content::SupportsCoreAnimationPlugins();
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-    case NPNVsupportsUpdatedCocoaTextInputBool: {
-      // We support the clarifications to the Cocoa IME event spec.
-      NPBool* supports_update = reinterpret_cast<NPBool*>(value);
-      *supports_update = true;
-      rv = NPERR_NO_ERROR;
-      break;
-    }
-  #endif  // OS_MACOSX
-    default:
-      DVLOG(1) << "NPN_GetValue(" << variable << ") is not implemented yet.";
-      break;
-  }
-  return rv;
-}
-
-NPError NPN_SetValue(NPP id, NPPVariable variable, void* value) {
-  // Allows the plugin to set various modes
-
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (!plugin.get()) {
-    NOTREACHED();
-    return NPERR_INVALID_INSTANCE_ERROR;
-  }
-  switch(variable) {
-    case NPPVpluginTransparentBool: {
-      // Sets transparent mode for display of the plugin
-      //
-      // Transparent plugins require the browser to paint the background
-      // before having the plugin paint.  By default, windowless plugins
-      // are transparent.  Making a windowless plugin opaque means that
-      // the plugin does not require the browser to paint the background.
-      bool mode = (value != 0);
-      plugin->set_transparent(mode);
-      return NPERR_NO_ERROR;
-    }
-    case NPPVjavascriptPushCallerBool:
-      // Specifies whether you are pushing or popping the JSContext off.
-      // the stack
-      // TODO: implement me
-      DVLOG(1) << "NPN_SetValue(NPPVJavascriptPushCallerBool) is not "
-                  "implemented.";
-      return NPERR_GENERIC_ERROR;
-    case NPPVpluginKeepLibraryInMemory:
-      // Tells browser that plugin library should live longer than usual.
-      // TODO: implement me
-      DVLOG(1) << "NPN_SetValue(NPPVpluginKeepLibraryInMemory) is not "
-                  "implemented.";
-      return NPERR_GENERIC_ERROR;
-  #if defined(OS_MACOSX)
-    case NPPVpluginDrawingModel: {
-      intptr_t model = reinterpret_cast<intptr_t>(value);
-      if (model == NPDrawingModelCoreGraphics ||
-          ((model == NPDrawingModelInvalidatingCoreAnimation ||
-            model == NPDrawingModelCoreAnimation) &&
-           content::SupportsCoreAnimationPlugins())) {
-        plugin->set_drawing_model(static_cast<NPDrawingModel>(model));
-        return NPERR_NO_ERROR;
-      }
-      return NPERR_GENERIC_ERROR;
-    }
-    case NPPVpluginEventModel: {
-      // Only the Cocoa event model is supported.
-      intptr_t model = reinterpret_cast<intptr_t>(value);
-      if (model == NPEventModelCocoa) {
-        plugin->set_event_model(static_cast<NPEventModel>(model));
-        return NPERR_NO_ERROR;
-      }
-      return NPERR_GENERIC_ERROR;
-    }
-  #endif
-    default:
-      // TODO: implement me
-      DVLOG(1) << "NPN_SetValue(" << variable << ") is not implemented.";
-      break;
-  }
-
-  NOTREACHED();
-  return NPERR_GENERIC_ERROR;
-}
-
-void* NPN_GetJavaEnv() {
-  // TODO: implement me
-  DVLOG(1) << "NPN_GetJavaEnv is not implemented.";
-  return NULL;
-}
-
-void* NPN_GetJavaPeer(NPP) {
-  // TODO: implement me
-  DVLOG(1) << "NPN_GetJavaPeer is not implemented.";
-  return NULL;
-}
-
-void NPN_PushPopupsEnabledState(NPP id, NPBool enabled) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get())
-    plugin->PushPopupsEnabledState(enabled ? true : false);
-}
-
-void NPN_PopPopupsEnabledState(NPP id) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get())
-    plugin->PopPopupsEnabledState();
-}
-
-void NPN_PluginThreadAsyncCall(NPP id,
-                               void (*func)(void*),
-                               void* user_data) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get())
-    plugin->PluginThreadAsyncCall(func, user_data);
-}
-
-NPError NPN_GetValueForURL(NPP id,
-                           NPNURLVariable variable,
-                           const char* url,
-                           char** value,
-                           uint32_t* len) {
-  if (!id)
-    return NPERR_INVALID_PARAM;
-
-  if (!url || !*url || !len)
-    return NPERR_INVALID_URL;
-
-  *len = 0;
-  std::string result;
-
-  switch (variable) {
-    case NPNURLVProxy: {
-      result = "DIRECT";
-      scoped_refptr<PluginInstance> plugin(FindInstance(id));
-      if (!plugin.get())
-        return NPERR_GENERIC_ERROR;
-
-      WebPlugin* webplugin = plugin->webplugin();
-      if (!webplugin)
-        return NPERR_GENERIC_ERROR;
-
-      if (!webplugin->FindProxyForUrl(GURL(std::string(url)), &result))
-        return NPERR_GENERIC_ERROR;
-      break;
-    }
-    case NPNURLVCookie: {
-      scoped_refptr<PluginInstance> plugin(FindInstance(id));
-      if (!plugin.get())
-        return NPERR_GENERIC_ERROR;
-
-      WebPlugin* webplugin = plugin->webplugin();
-      if (!webplugin)
-        return NPERR_GENERIC_ERROR;
-
-      // Bypass third-party cookie blocking by using the url as the
-      // first_party_for_cookies.
-      GURL cookies_url((std::string(url)));
-      result = webplugin->GetCookies(cookies_url, cookies_url);
-      break;
-    }
-    default:
-      return NPERR_GENERIC_ERROR;
-  }
-
-  // Allocate this using the NPAPI allocator. The plugin will call
-  // NPN_Free to free this.
-  *value = static_cast<char*>(NPN_MemAlloc(result.length() + 1));
-  base::strlcpy(*value, result.c_str(), result.length() + 1);
-  *len = result.length();
-
-  return NPERR_NO_ERROR;
-}
-
-NPError NPN_SetValueForURL(NPP id,
-                           NPNURLVariable variable,
-                           const char* url,
-                           const char* value,
-                           uint32_t len) {
-  if (!id)
-    return NPERR_INVALID_PARAM;
-
-  if (!url || !*url)
-    return NPERR_INVALID_URL;
-
-  switch (variable) {
-    case NPNURLVCookie: {
-      scoped_refptr<PluginInstance> plugin(FindInstance(id));
-      if (!plugin.get())
-        return NPERR_GENERIC_ERROR;
-
-      WebPlugin* webplugin = plugin->webplugin();
-      if (!webplugin)
-        return NPERR_GENERIC_ERROR;
-
-      std::string cookie(value, len);
-      GURL cookies_url((std::string(url)));
-      webplugin->SetCookie(cookies_url, cookies_url, cookie);
-      return NPERR_NO_ERROR;
-    }
-    case NPNURLVProxy:
-      // We don't support setting proxy values, fall through...
-      break;
-    default:
-      // Fall through and return an error...
-      break;
-  }
-
-  return NPERR_GENERIC_ERROR;
-}
-
-NPError NPN_GetAuthenticationInfo(NPP id,
-                                  const char* protocol,
-                                  const char* host,
-                                  int32_t port,
-                                  const char* scheme,
-                                  const char* realm,
-                                  char** username,
-                                  uint32_t* ulen,
-                                  char** password,
-                                  uint32_t* plen) {
-  if (!id || !protocol || !host || !scheme || !realm || !username ||
-      !ulen || !password || !plen)
-    return NPERR_INVALID_PARAM;
-
-  // TODO: implement me (bug 23928)
-  return NPERR_GENERIC_ERROR;
-}
-
-uint32_t NPN_ScheduleTimer(NPP id,
-                           uint32_t interval,
-                           NPBool repeat,
-                           void (*func)(NPP id, uint32_t timer_id)) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (!plugin.get())
-    return 0;
-
-  return plugin->ScheduleTimer(interval, repeat, func);
-}
-
-void NPN_UnscheduleTimer(NPP id, uint32_t timer_id) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get())
-    plugin->UnscheduleTimer(timer_id);
-}
-
-NPError NPN_PopUpContextMenu(NPP id, NPMenu* menu) {
-  if (!menu)
-    return NPERR_INVALID_PARAM;
-
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get()) {
-    return plugin->PopUpContextMenu(menu);
-  }
-  NOTREACHED();
-  return NPERR_GENERIC_ERROR;
-}
-
-NPBool NPN_ConvertPoint(NPP id, double sourceX, double sourceY,
-                        NPCoordinateSpace sourceSpace,
-                        double *destX, double *destY,
-                        NPCoordinateSpace destSpace) {
-  scoped_refptr<PluginInstance> plugin(FindInstance(id));
-  if (plugin.get()) {
-    return plugin->ConvertPoint(
-        sourceX, sourceY, sourceSpace, destX, destY, destSpace);
-  }
-  NOTREACHED();
-  return false;
-}
-
-NPBool NPN_HandleEvent(NPP id, void *event, NPBool handled) {
-  // TODO: Implement advanced key handling: http://crbug.com/46578
-  NOTIMPLEMENTED();
-  return false;
-}
-
-NPBool NPN_UnfocusInstance(NPP id, NPFocusDirection direction) {
-  // TODO: Implement advanced key handling: http://crbug.com/46578
-  NOTIMPLEMENTED();
-  return false;
-}
-
-void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) {
-}
-
-}  // extern "C"
diff --git a/content/child/npapi/plugin_host.h b/content/child/npapi/plugin_host.h
deleted file mode 100644
index 5db27e85..0000000
--- a/content/child/npapi/plugin_host.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// TODO: Need mechanism to cleanup the static instance
-
-#ifndef CONTENT_CHILD_NPAPI_PLUGIN_HOST_H_
-#define CONTENT_CHILD_NPAPI_PLUGIN_HOST_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "third_party/npapi/bindings/nphostapi.h"
-
-namespace content {
-
-// The Plugin Host implements the NPN_xxx functions for NPAPI plugins.
-// These are the functions exposed from the Plugin Host for use
-// by the Plugin.
-//
-// The PluginHost is managed as a singleton.  This isn't strictly
-// necessary, but since the callback functions are all global C
-// functions, there is really no point in having per-instance PluginHosts.
-class PluginHost : public base::RefCounted<PluginHost> {
- public:
-  // Access the single PluginHost instance.  Callers
-  // must call deref() when finished with the object.
-  static PluginHost* Singleton();
-
-  // The table of functions provided to the plugin.
-  NPNetscapeFuncs* host_functions() { return &host_funcs_; }
-
-  // Helper function for parsing post headers, and applying attributes
-  // to the stream.  NPAPI post data include headers + data combined.
-  // This function parses it out and adds it to the stream in a WebKit
-  // style.
-  static bool SetPostData(const char* buf,
-                          uint32_t length,
-                          std::vector<std::string>* names,
-                          std::vector<std::string>* values,
-                          std::vector<char>* body);
-
-  void PatchNPNetscapeFuncs(NPNetscapeFuncs* overrides);
-
- private:
-  friend class base::RefCounted<PluginHost>;
-
-  virtual ~PluginHost();
-
-  PluginHost();
-  void InitializeHostFuncs();
-  NPNetscapeFuncs host_funcs_;
-  DISALLOW_COPY_AND_ASSIGN(PluginHost);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_PLUGIN_HOST_H_
diff --git a/content/child/npapi/plugin_instance.cc b/content/child/npapi/plugin_instance.cc
deleted file mode 100644
index 8121930c..0000000
--- a/content/child/npapi/plugin_instance.cc
+++ /dev/null
@@ -1,407 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/plugin_instance.h"
-
-#include <string.h>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/files/file_util.h"
-#include "base/location.h"
-#include "base/single_thread_task_runner.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "content/child/npapi/plugin_host.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/child/npapi/webplugin_delegate.h"
-#include "content/child/npapi/webplugin_resource_client.h"
-#include "content/public/common/content_constants.h"
-#include "content/public/common/content_switches.h"
-#include "net/base/escape.h"
-
-#if defined(OS_MACOSX)
-#include <ApplicationServices/ApplicationServices.h>
-#endif
-
-namespace content {
-
-PluginInstance::PluginInstance(PluginLib* plugin, const std::string& mime_type)
-    : plugin_(plugin),
-      npp_(0),
-      host_(PluginHost::Singleton()),
-      npp_functions_(plugin->functions()),
-      transparent_(true),
-      webplugin_(0),
-      mime_type_(mime_type),
-      use_mozilla_user_agent_(false),
-#if defined (OS_MACOSX)
-#ifdef NP_NO_QUICKDRAW
-      drawing_model_(NPDrawingModelCoreGraphics),
-#else
-      drawing_model_(NPDrawingModelQuickDraw),
-#endif
-#ifdef NP_NO_CARBON
-      event_model_(NPEventModelCocoa),
-#else
-      event_model_(NPEventModelCarbon),
-#endif
-      currently_handled_event_(NULL),
-#endif
-      task_runner_(base::ThreadTaskRunnerHandle::Get()),
-      load_manually_(false),
-      next_timer_id_(1) {
-  npp_ = new NPP_t();
-  npp_->ndata = 0;
-  npp_->pdata = 0;
-
-  if (mime_type_ == kFlashPluginSwfMimeType)
-    transparent_ = false;
-
-  memset(&zero_padding_, 0, sizeof(zero_padding_));
-}
-
-PluginInstance::~PluginInstance() {
-  if (npp_ != 0) {
-    delete npp_;
-    npp_ = 0;
-  }
-
-  if (plugin_.get())
-    plugin_->CloseInstance();
-}
-
-bool PluginInstance::Start(const GURL& url,
-                           char** const param_names,
-                           char** const param_values,
-                           int param_count,
-                           bool load_manually) {
-  load_manually_ = load_manually;
-  unsigned short mode = load_manually_ ? NP_FULL : NP_EMBED;
-  npp_->ndata = this;
-
-  NPError err = NPP_New(mode, param_count,
-      const_cast<char **>(param_names), const_cast<char **>(param_values));
-  return err == NPERR_NO_ERROR;
-}
-
-unsigned PluginInstance::GetBackingTextureId() {
-  // By default the plugin instance is not backed by an OpenGL texture.
-  return 0;
-}
-
-// NPAPI methods
-NPError PluginInstance::NPP_New(unsigned short mode,
-                                short argc,
-                                char* argn[],
-                                char* argv[]) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->newp != 0);
-  DCHECK(argc >= 0);
-
-  if (npp_functions_->newp != 0) {
-    return npp_functions_->newp(
-        (NPMIMEType)mime_type_.c_str(), npp_, mode,  argc, argn, argv, NULL);
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-void PluginInstance::NPP_Destroy() {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->destroy != 0);
-
-  if (npp_functions_->destroy != 0) {
-    NPSavedData *savedData = 0;
-    npp_functions_->destroy(npp_, &savedData);
-
-    // TODO: Support savedData.  Technically, these need to be
-    //       saved on a per-URL basis, and then only passed
-    //       to new instances of the plugin at the same URL.
-    //       Sounds like a huge security risk.  When we do support
-    //       these, we should pass them back to the PluginLib
-    //       to be stored there.
-    DCHECK(savedData == 0);
-  }
-
-  for (unsigned int file_index = 0; file_index < files_created_.size();
-       file_index++) {
-    base::DeleteFile(files_created_[file_index], false);
-  }
-
-  // Ensure that no timer callbacks are invoked after NPP_Destroy.
-  timers_.clear();
-}
-
-NPError PluginInstance::NPP_SetWindow(NPWindow* window) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->setwindow != 0);
-
-  if (npp_functions_->setwindow != 0) {
-    return npp_functions_->setwindow(npp_, window);
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-NPError PluginInstance::NPP_NewStream(NPMIMEType type,
-                                      NPStream* stream,
-                                      NPBool seekable,
-                                      unsigned short* stype) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->newstream != 0);
-  if (npp_functions_->newstream != 0) {
-      return npp_functions_->newstream(npp_, type, stream, seekable, stype);
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-NPError PluginInstance::NPP_DestroyStream(NPStream* stream, NPReason reason) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->destroystream != 0);
-
-  if (stream == NULL || (stream->ndata == NULL))
-    return NPERR_INVALID_INSTANCE_ERROR;
-
-  if (npp_functions_->destroystream != 0) {
-    NPError result = npp_functions_->destroystream(npp_, stream, reason);
-    stream->ndata = NULL;
-    return result;
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-int PluginInstance::NPP_WriteReady(NPStream* stream) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->writeready != 0);
-  if (npp_functions_->writeready != 0) {
-    return npp_functions_->writeready(npp_, stream);
-  }
-  return 0;
-}
-
-int PluginInstance::NPP_Write(NPStream* stream,
-                              int offset,
-                              int len,
-                              void* buffer) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->write != 0);
-  if (npp_functions_->write != 0) {
-    return npp_functions_->write(npp_, stream, offset, len, buffer);
-  }
-  return 0;
-}
-
-void PluginInstance::NPP_StreamAsFile(NPStream* stream, const char* fname) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->asfile != 0);
-  if (npp_functions_->asfile != 0) {
-    npp_functions_->asfile(npp_, stream, fname);
-  }
-
-  // Creating a temporary FilePath instance on the stack as the explicit
-  // FilePath constructor with StringType as an argument causes a compiler
-  // error when invoked via vector push back.
-  base::FilePath file_name = base::FilePath::FromUTF8Unsafe(fname);
-  files_created_.push_back(file_name);
-}
-
-NPError PluginInstance::NPP_GetValue(NPPVariable variable, void* value) {
-  DCHECK(npp_functions_ != 0);
-  // getvalue is NULL for Shockwave
-  if (npp_functions_->getvalue != 0) {
-    return npp_functions_->getvalue(npp_, variable, value);
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-NPError PluginInstance::NPP_SetValue(NPNVariable variable, void* value) {
-  DCHECK(npp_functions_ != 0);
-  if (npp_functions_->setvalue != 0) {
-    return npp_functions_->setvalue(npp_, variable, value);
-  }
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-short PluginInstance::NPP_HandleEvent(void* event) {
-  DCHECK(npp_functions_ != 0);
-  DCHECK(npp_functions_->event != 0);
-  if (npp_functions_->event != 0) {
-    return npp_functions_->event(npp_, (void*)event);
-  }
-  return false;
-}
-
-bool PluginInstance::NPP_Print(NPPrint* platform_print) {
-  DCHECK(npp_functions_ != 0);
-  if (npp_functions_->print != 0) {
-    npp_functions_->print(npp_, platform_print);
-    return true;
-  }
-  return false;
-}
-
-
-void PluginInstance::PluginThreadAsyncCall(void (*func)(void*),
-                                           void* user_data) {
-  task_runner_->PostTask(
-      FROM_HERE, base::Bind(&PluginInstance::OnPluginThreadAsyncCall, this,
-                            func, user_data));
-}
-
-void PluginInstance::OnPluginThreadAsyncCall(void (*func)(void*),
-                                             void* user_data) {
-  // Do not invoke the callback if NPP_Destroy has already been invoked.
-  if (webplugin_)
-    func(user_data);
-}
-
-uint32_t PluginInstance::ScheduleTimer(uint32_t interval,
-                                       NPBool repeat,
-                                       void (*func)(NPP id,
-                                                    uint32_t timer_id)) {
-  // Use next timer id.
-  uint32_t timer_id;
-  timer_id = next_timer_id_;
-  ++next_timer_id_;
-  DCHECK(next_timer_id_ != 0);
-
-  // Record timer interval and repeat.
-  TimerInfo info;
-  info.interval = interval;
-  info.repeat = repeat ? true : false;
-  timers_[timer_id] = info;
-
-  // Schedule the callback.
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE,
-      base::Bind(&PluginInstance::OnTimerCall, this, func, npp_, timer_id),
-      base::TimeDelta::FromMilliseconds(interval));
-  return timer_id;
-}
-
-void PluginInstance::UnscheduleTimer(uint32_t timer_id) {
-  // Remove info about the timer.
-  TimerMap::iterator it = timers_.find(timer_id);
-  if (it != timers_.end())
-    timers_.erase(it);
-}
-
-#if !defined(OS_MACOSX)
-NPError PluginInstance::PopUpContextMenu(NPMenu* menu) {
-  NOTIMPLEMENTED();
-  return NPERR_GENERIC_ERROR;
-}
-#endif
-
-void PluginInstance::OnTimerCall(void (*func)(NPP id, uint32_t timer_id),
-                                 NPP id,
-                                 uint32_t timer_id) {
-  // Do not invoke callback if the timer has been unscheduled.
-  TimerMap::iterator it = timers_.find(timer_id);
-  if (it == timers_.end())
-    return;
-
-  // Get all information about the timer before invoking the callback. The
-  // callback might unschedule the timer.
-  TimerInfo info = it->second;
-
-  func(id, timer_id);
-
-  // If the timer was unscheduled by the callback, just free up the timer id.
-  if (timers_.find(timer_id) == timers_.end())
-    return;
-
-  // Reschedule repeating timers after invoking the callback so callback is not
-  // re-entered if it pumps the message loop.
-  if (info.repeat) {
-    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-        FROM_HERE,
-        base::Bind(&PluginInstance::OnTimerCall, this, func, npp_, timer_id),
-        base::TimeDelta::FromMilliseconds(info.interval));
-  } else {
-    timers_.erase(it);
-  }
-}
-
-void PluginInstance::PushPopupsEnabledState(bool enabled) {
-  popups_enabled_stack_.push(enabled);
-}
-
-void PluginInstance::PopPopupsEnabledState() {
-  popups_enabled_stack_.pop();
-}
-
-bool PluginInstance::ConvertPoint(double source_x, double source_y,
-                                  NPCoordinateSpace source_space,
-                                  double* dest_x, double* dest_y,
-                                  NPCoordinateSpace dest_space) {
-#if defined(OS_MACOSX)
-  CGRect main_display_bounds = CGDisplayBounds(CGMainDisplayID());
-
-  double flipped_screen_x = source_x;
-  double flipped_screen_y = source_y;
-  switch(source_space) {
-    case NPCoordinateSpacePlugin:
-      flipped_screen_x += plugin_origin_.x();
-      flipped_screen_y += plugin_origin_.y();
-      break;
-    case NPCoordinateSpaceWindow:
-      flipped_screen_x += containing_window_frame_.x();
-      flipped_screen_y = containing_window_frame_.height() - source_y +
-          containing_window_frame_.y();
-      break;
-    case NPCoordinateSpaceFlippedWindow:
-      flipped_screen_x += containing_window_frame_.x();
-      flipped_screen_y += containing_window_frame_.y();
-      break;
-    case NPCoordinateSpaceScreen:
-      flipped_screen_y = main_display_bounds.size.height - flipped_screen_y;
-      break;
-    case NPCoordinateSpaceFlippedScreen:
-      break;
-    default:
-      NOTREACHED();
-      return false;
-  }
-
-  double target_x = flipped_screen_x;
-  double target_y = flipped_screen_y;
-  switch(dest_space) {
-    case NPCoordinateSpacePlugin:
-      target_x -= plugin_origin_.x();
-      target_y -= plugin_origin_.y();
-      break;
-    case NPCoordinateSpaceWindow:
-      target_x -= containing_window_frame_.x();
-      target_y -= containing_window_frame_.y();
-      target_y = containing_window_frame_.height() - target_y;
-      break;
-    case NPCoordinateSpaceFlippedWindow:
-      target_x -= containing_window_frame_.x();
-      target_y -= containing_window_frame_.y();
-      break;
-    case NPCoordinateSpaceScreen:
-      target_y = main_display_bounds.size.height - flipped_screen_y;
-      break;
-    case NPCoordinateSpaceFlippedScreen:
-      break;
-    default:
-      NOTREACHED();
-      return false;
-  }
-
-  if (dest_x)
-    *dest_x = target_x;
-  if (dest_y)
-    *dest_y = target_y;
-  return true;
-#else
-  NOTIMPLEMENTED();
-  return false;
-#endif
-}
-
-}  // namespace content
diff --git a/content/child/npapi/plugin_instance.h b/content/child/npapi/plugin_instance.h
deleted file mode 100644
index 08ab1805..0000000
--- a/content/child/npapi/plugin_instance.h
+++ /dev/null
@@ -1,274 +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.
-
-// TODO: Need to deal with NPAPI's NPSavedData.
-//       I haven't seen plugins use it yet.
-
-#ifndef CONTENT_CHILD_NPAPI_PLUGIN_INSTANCE_H_
-#define CONTENT_CHILD_NPAPI_PLUGIN_INSTANCE_H_
-
-#include <stdint.h>
-
-#include <map>
-#include <stack>
-#include <string>
-#include <vector>
-
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "build/build_config.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "third_party/npapi/bindings/nphostapi.h"
-#include "ui/gfx/geometry/point.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/native_widget_types.h"
-#include "url/gurl.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-}
-
-namespace content {
-
-class PluginLib;
-class PluginHost;
-class WebPlugin;
-class WebPluginResourceClient;
-
-#if defined(OS_MACOSX)
-class ScopedCurrentPluginEvent;
-#endif
-
-// A PluginInstance is an active, running instance of a Plugin.
-// A single plugin may have many PluginInstances.
-class PluginInstance : public base::RefCountedThreadSafe<PluginInstance> {
- public:
-  // Create a new instance of a plugin.  The PluginInstance
-  // will hold a reference to the plugin.
-  PluginInstance(PluginLib* plugin, const std::string &mime_type);
-
-  // Activates the instance by calling NPP_New.
-  // This should be called after our instance is all
-  // setup from the host side and we are ready to receive
-  // requests from the plugin.  We must not call any
-  // functions on the plugin instance until start has
-  // been called.
-  //
-  // url: The instance URL.
-  // param_names: the list of names of attributes passed via the
-  //       element.
-  // param_values: the list of values corresponding to param_names
-  // param_count: number of attributes
-  // load_manually: if true indicates that the plugin data would be passed
-  //                from webkit. if false indicates that the plugin should
-  //                download the data.
-  //                This also controls whether the plugin is instantiated as
-  //                a full page plugin (NP_FULL) or embedded (NP_EMBED)
-  //
-  bool Start(const GURL& url,
-             char** const param_names,
-             char** const param_values,
-             int param_count,
-             bool load_manually);
-
-  // NPAPI's instance identifier for this instance
-  NPP npp() { return npp_; }
-
-  // Get/Set whether this instance is transparent. This only applies to
-  // windowless plugins.  Transparent plugins require that webkit paint the
-  // background.
-  // Default is true for all plugins other than Flash. For Flash, we default to
-  // opaque since it always tells us if it's transparent during NPP_New.
-  bool transparent() { return transparent_; }
-  void set_transparent(bool value) { transparent_ = value; }
-
-  // Get/Set the WebPlugin associated with this instance
-  WebPlugin* webplugin() { return webplugin_; }
-  void set_web_plugin(WebPlugin* webplugin) {
-    webplugin_ = webplugin;
-  }
-
-  // Get the mimeType for this plugin stream
-  const std::string &mime_type() { return mime_type_; }
-
-  PluginLib* plugin_lib() { return plugin_.get(); }
-
-#if defined(OS_MACOSX)
-  // Get/Set the Mac NPAPI drawing and event models
-  NPDrawingModel drawing_model() { return drawing_model_; }
-  void set_drawing_model(NPDrawingModel value) { drawing_model_ = value; }
-  NPEventModel event_model() { return event_model_; }
-  void set_event_model(NPEventModel value) { event_model_ = value; }
-  // Updates the instance's tracking of the location of the plugin location
-  // relative to the upper left of the screen.
-  void set_plugin_origin(const gfx::Point& origin) { plugin_origin_ = origin; }
-  // Updates the instance's tracking of the frame of the containing window
-  // relative to the upper left of the screen.
-  void set_window_frame(const gfx::Rect& frame) {
-    containing_window_frame_ = frame;
-  }
-#endif
-
-  // Returns the WebPluginResourceClient object for a stream that has become
-  // seekable.
-  WebPluginResourceClient* GetRangeRequest(int id);
-
-  // If true, send the Mozilla user agent instead of Chrome's to the plugin.
-  bool use_mozilla_user_agent() { return use_mozilla_user_agent_; }
-  void set_use_mozilla_user_agent() { use_mozilla_user_agent_ = true; }
-
-  // If the plugin instance is backed by a texture, return its ID in the
-  // compositor's namespace. Otherwise return 0. Returns 0 by default.
-  unsigned GetBackingTextureId();
-
-  // Helper that implements NPN_PluginThreadAsyncCall semantics
-  void PluginThreadAsyncCall(void (*func)(void *),
-                             void* userData);
-
-  uint32_t ScheduleTimer(uint32_t interval,
-                         NPBool repeat,
-                         void (*func)(NPP id, uint32_t timer_id));
-
-  void UnscheduleTimer(uint32_t timer_id);
-
-  bool ConvertPoint(double source_x, double source_y,
-                    NPCoordinateSpace source_space,
-                    double* dest_x, double* dest_y,
-                    NPCoordinateSpace dest_space);
-
-  NPError PopUpContextMenu(NPMenu* menu);
-
-  //
-  // NPAPI methods for calling the Plugin Instance
-  //
-  NPError NPP_New(unsigned short, short, char *[], char *[]);
-  NPError NPP_SetWindow(NPWindow*);
-  NPError NPP_NewStream(NPMIMEType, NPStream*, NPBool, unsigned short*);
-  NPError NPP_DestroyStream(NPStream*, NPReason);
-  int NPP_WriteReady(NPStream*);
-  int NPP_Write(NPStream*, int, int, void*);
-  void NPP_StreamAsFile(NPStream*, const char*);
-  void NPP_URLNotify(const char*, NPReason, void*);
-  NPError NPP_GetValue(NPPVariable, void*);
-  NPError NPP_SetValue(NPNVariable, void*);
-  short NPP_HandleEvent(void*);
-  void NPP_Destroy();
-  bool NPP_Print(NPPrint* platform_print);
-  void NPP_URLRedirectNotify(const char* url, int32_t status,
-                             void* notify_data);
-
-  void SendJavaScriptStream(const GURL& url,
-                            const std::string& result,
-                            bool success);
-
-  void PushPopupsEnabledState(bool enabled);
-  void PopPopupsEnabledState();
-
-  bool popups_allowed() const {
-    return popups_enabled_stack_.empty() ? false : popups_enabled_stack_.top();
-  }
-
- private:
-  friend class base::RefCountedThreadSafe<PluginInstance>;
-
-#if defined(OS_MACOSX)
-  friend class ScopedCurrentPluginEvent;
-  // Sets the event that the plugin is currently handling. The object is not
-  // owned or copied, so the caller must call this again with NULL before the
-  // event pointer becomes invalid. Clients use ScopedCurrentPluginEvent rather
-  // than calling this directly.
-  void set_currently_handled_event(NPCocoaEvent* event) {
-    currently_handled_event_ = event;
-  }
-#endif
-
-  ~PluginInstance();
-  void OnPluginThreadAsyncCall(void (*func)(void *), void* userData);
-  void OnTimerCall(void (*func)(NPP id, uint32_t timer_id),
-                   NPP id,
-                   uint32_t timer_id);
-
-  // This is a hack to get the real player plugin to work with chrome
-  // The real player plugin dll(nppl3260) when loaded by firefox is loaded via
-  // the NS COM API which is analogous to win32 COM. So the NPAPI functions in
-  // the plugin are invoked via an interface by firefox. The plugin instance
-  // handle which is passed to every NPAPI method is owned by the real player
-  // plugin, i.e. it expects the ndata member to point to a structure which
-  // it knows about. Eventually it dereferences this structure and compares
-  // a member variable at offset 0x24(Version 6.0.11.2888) /2D (Version
-  // 6.0.11.3088) with 0 and on failing this check, takes  a different code
-  // path which causes a crash. Safari and Opera work with version 6.0.11.2888
-  // by chance as their ndata structure contains a 0 at the location which real
-  // player checks:(. They crash with version 6.0.11.3088 as well. The
-  // following member just adds a 96 byte padding to our PluginInstance class
-  // which is passed in the ndata member. This magic number works correctly on
-  // Vista with UAC on or off :(.
-  // NOTE: Please dont change the ordering of the member variables
-  // New members should be added after this padding array.
-  // TODO(iyengar) : Disassemble the Realplayer ndata structure and look into
-  // the possiblity of conforming to it (http://b/issue?id=936667). We
-  // could also log a bug with Real, which would save the effort.
-  uint8_t zero_padding_[96];
-  scoped_refptr<PluginLib>                 plugin_;
-  NPP                                      npp_;
-  scoped_refptr<PluginHost>                host_;
-  NPPluginFuncs*                           npp_functions_;
-  bool                                     transparent_;
-  WebPlugin*                               webplugin_;
-  std::string                              mime_type_;
-  bool                                     use_mozilla_user_agent_;
-#if defined(OS_MACOSX)
-  NPDrawingModel                           drawing_model_;
-  NPEventModel                             event_model_;
-  gfx::Point                               plugin_origin_;
-  gfx::Rect                                containing_window_frame_;
-  NPCocoaEvent*                            currently_handled_event_;  // weak
-#endif
-  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-
-  // This flag if true indicates that the plugin data would be passed from
-  // webkit. if false indicates that the plugin should download the data.
-  bool                                     load_manually_;
-
-  // Stack indicating if popups are to be enabled for the outgoing
-  // NPN_GetURL/NPN_GetURLNotify calls.
-  std::stack<bool>                         popups_enabled_stack_;
-
-  // List of files created for the current plugin instance. File names are
-  // added to the list every time the NPP_StreamAsFile function is called.
-  std::vector<base::FilePath> files_created_;
-
-  // Next unusued timer id.
-  uint32_t next_timer_id_;
-
-  // Map of timer id to settings for timer.
-  struct TimerInfo {
-    uint32_t interval;
-    bool repeat;
-  };
-  typedef std::map<uint32_t, TimerInfo> TimerMap;
-  TimerMap timers_;
-
-  DISALLOW_COPY_AND_ASSIGN(PluginInstance);
-};
-
-#if defined(OS_MACOSX)
-// Helper to simplify correct usage of set_currently_handled_event.
-// Instantiating will set |instance|'s currently handled to |event| for the
-// lifetime of the object, then NULL when it goes out of scope.
-class ScopedCurrentPluginEvent {
- public:
-  ScopedCurrentPluginEvent(PluginInstance* instance, NPCocoaEvent* event);
-  ~ScopedCurrentPluginEvent();
-
- private:
-  scoped_refptr<PluginInstance> instance_;
-  DISALLOW_COPY_AND_ASSIGN(ScopedCurrentPluginEvent);
-};
-#endif
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_PLUGIN_INSTANCE_H_
diff --git a/content/child/npapi/plugin_instance_mac.mm b/content/child/npapi/plugin_instance_mac.mm
deleted file mode 100644
index bc8edb2..0000000
--- a/content/child/npapi/plugin_instance_mac.mm
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2010 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 <AppKit/AppKit.h>
-
-#include "base/logging.h"
-#include "build/build_config.h"
-#include "content/child/npapi/plugin_instance.h"
-
-// When C++ exceptions are disabled, the C++ library defines |try| and
-// |catch| so as to allow exception-expecting C++ code to build properly when
-// language support for exceptions is not present.  These macros interfere
-// with the use of |@try| and |@catch| in Objective-C files such as this one.
-// Undefine these macros here, after everything has been #included, since
-// there will be no C++ uses and only Objective-C uses from this point on.
-#undef try
-#undef catch
-
-namespace content {
-
-NPError PluginInstance::PopUpContextMenu(NPMenu* menu) {
-  if (!currently_handled_event_)
-    return NPERR_GENERIC_ERROR;
-
-  CGRect main_display_bounds = CGDisplayBounds(CGMainDisplayID());
-  NSPoint screen_point = NSMakePoint(
-      plugin_origin_.x() + currently_handled_event_->data.mouse.pluginX,
-      plugin_origin_.y() + currently_handled_event_->data.mouse.pluginY);
-  // Plugin offsets are upper-left based, so flip vertically for Cocoa.
-  screen_point.y = main_display_bounds.size.height - screen_point.y;
-
-  NSMenu* nsmenu = reinterpret_cast<NSMenu*>(menu);
-  NPError return_val = NPERR_NO_ERROR;
-  @try {
-    [nsmenu popUpMenuPositioningItem:nil atLocation:screen_point inView:nil];
-  }
-  @catch (NSException* e) {
-    NSLog(@"Caught exception while handling PopUpContextMenu: %@", e);
-    return_val = NPERR_GENERIC_ERROR;
-  }
-
-  return return_val;
-}
-
-ScopedCurrentPluginEvent::ScopedCurrentPluginEvent(PluginInstance* instance,
-                                                   NPCocoaEvent* event)
-    : instance_(instance) {
-  instance_->set_currently_handled_event(event);
-}
-
-ScopedCurrentPluginEvent::~ScopedCurrentPluginEvent() {
-  instance_->set_currently_handled_event(NULL);
-}
-
-}  // namespace content
diff --git a/content/child/npapi/plugin_lib.cc b/content/child/npapi/plugin_lib.cc
deleted file mode 100644
index a472c0a..0000000
--- a/content/child/npapi/plugin_lib.cc
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/plugin_lib.h"
-
-#include <stddef.h>
-#include <string.h>
-
-#include "base/bind.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/single_thread_task_runner.h"
-#include "base/strings/string_util.h"
-#include "base/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "content/child/npapi/plugin_host.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/common/plugin_list.h"
-
-namespace content {
-
-// A list of all the instantiated plugins.
-static std::vector<scoped_refptr<PluginLib> >* g_loaded_libs;
-
-PluginLib* PluginLib::CreatePluginLib(const base::FilePath& filename) {
-  // We can only have one PluginLib object per plugin as it controls the per
-  // instance function calls (i.e. NP_Initialize and NP_Shutdown).  So we keep
-  // a map of PluginLib objects.
-  if (!g_loaded_libs)
-    g_loaded_libs = new std::vector<scoped_refptr<PluginLib> >;
-
-  for (size_t i = 0; i < g_loaded_libs->size(); ++i) {
-    if ((*g_loaded_libs)[i]->plugin_info().path == filename)
-      return (*g_loaded_libs)[i].get();
-  }
-
-  WebPluginInfo info;
-  if (!PluginList::Singleton()->ReadPluginInfo(filename, &info))
-    return NULL;
-
-  return new PluginLib(info);
-}
-
-void PluginLib::UnloadAllPlugins() {
-  if (g_loaded_libs) {
-    // PluginLib::Unload() can remove items from the list and even delete
-    // the list when it removes the last item, so we must work with a copy
-    // of the list so that we don't get the carpet removed under our feet.
-    std::vector<scoped_refptr<PluginLib> > loaded_libs(*g_loaded_libs);
-    for (size_t i = 0; i < loaded_libs.size(); ++i)
-      loaded_libs[i]->Unload();
-
-    if (g_loaded_libs && g_loaded_libs->empty()) {
-      delete g_loaded_libs;
-      g_loaded_libs = NULL;
-    }
-  }
-}
-
-void PluginLib::ShutdownAllPlugins() {
-  if (g_loaded_libs) {
-    for (size_t i = 0; i < g_loaded_libs->size(); ++i)
-      (*g_loaded_libs)[i]->Shutdown();
-  }
-}
-
-PluginLib::PluginLib(const WebPluginInfo& info)
-    : web_plugin_info_(info),
-      library_(NULL),
-      initialized_(false),
-      saved_data_(0),
-      instance_count_(0),
-      skip_unload_(false),
-      defer_unload_(false) {
-  memset(static_cast<void*>(&plugin_funcs_), 0, sizeof(plugin_funcs_));
-  g_loaded_libs->push_back(make_scoped_refptr(this));
-
-  memset(&entry_points_, 0, sizeof(entry_points_));
-}
-
-PluginLib::~PluginLib() {
-  if (saved_data_ != 0) {
-    // TODO - delete the savedData object here
-  }
-}
-
-NPPluginFuncs* PluginLib::functions() {
-  return &plugin_funcs_;
-}
-
-NPError PluginLib::NP_Initialize() {
-  LOG_IF(ERROR, PluginList::DebugPluginLoading())
-      << "PluginLib::NP_Initialize(" << web_plugin_info_.path.value()
-      << "): initialized=" << initialized_;
-  if (initialized_)
-    return NPERR_NO_ERROR;
-
-  if (!Load())
-    return NPERR_MODULE_LOAD_FAILED_ERROR;
-
-  PluginHost* host = PluginHost::Singleton();
-  if (host == 0)
-    return NPERR_GENERIC_ERROR;
-
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
-  NPError rv = entry_points_.np_initialize(host->host_functions(),
-                                           &plugin_funcs_);
-#else
-  NPError rv = entry_points_.np_initialize(host->host_functions());
-#if defined(OS_MACOSX)
-  // On the Mac, we need to get entry points after calling np_initialize to
-  // match the behavior of other browsers.
-  if (rv == NPERR_NO_ERROR) {
-    rv = entry_points_.np_getentrypoints(&plugin_funcs_);
-  }
-#endif  // OS_MACOSX
-#endif
-  LOG_IF(ERROR, PluginList::DebugPluginLoading())
-      << "PluginLib::NP_Initialize(" << web_plugin_info_.path.value()
-      << "): result=" << rv;
-  initialized_ = (rv == NPERR_NO_ERROR);
-  return rv;
-}
-
-void PluginLib::NP_Shutdown(void) {
-  DCHECK(initialized_);
-  entry_points_.np_shutdown();
-}
-
-NPError PluginLib::NP_ClearSiteData(const char* site,
-                                    uint64_t flags,
-                                    uint64_t max_age) {
-  DCHECK(initialized_);
-  if (plugin_funcs_.clearsitedata)
-    return plugin_funcs_.clearsitedata(site, flags, max_age);
-  return NPERR_INVALID_FUNCTABLE_ERROR;
-}
-
-char** PluginLib::NP_GetSitesWithData() {
-  DCHECK(initialized_);
-  if (plugin_funcs_.getsiteswithdata)
-    return plugin_funcs_.getsiteswithdata();
-  return NULL;
-}
-
-void PluginLib::PreventLibraryUnload() {
-  skip_unload_ = true;
-}
-
-PluginInstance* PluginLib::CreateInstance(const std::string& mime_type) {
-  PluginInstance* new_instance = new PluginInstance(this, mime_type);
-  instance_count_++;
-  DCHECK_NE(static_cast<PluginInstance*>(NULL), new_instance);
-  return new_instance;
-}
-
-void PluginLib::CloseInstance() {
-  instance_count_--;
-  // If a plugin is running in its own process it will get unloaded on process
-  // shutdown.
-  if ((instance_count_ == 0) && !defer_unload_)
-    Unload();
-}
-
-bool PluginLib::Load() {
-  if (library_)
-    return true;
-
-  bool rv = false;
-  base::NativeLibrary library = 0;
-  base::NativeLibraryLoadError error;
-
-#if defined(OS_WIN)
-  // This is to work around a bug in the Real player recorder plugin which
-  // intercepts LoadLibrary calls from chrome.dll and wraps NPAPI functions
-  // provided by the plugin. It crashes if the media player plugin is being
-  // loaded. Workaround is to load the dll dynamically by getting the
-  // LoadLibrary API address from kernel32.dll which bypasses the recorder
-  // plugin.
-  if (web_plugin_info_.name.find(L"Windows Media Player") !=
-      std::wstring::npos) {
-    library = base::LoadNativeLibraryDynamically(web_plugin_info_.path);
-  } else {
-    library = base::LoadNativeLibrary(web_plugin_info_.path, &error);
-  }
-#else
-  library = base::LoadNativeLibrary(web_plugin_info_.path, &error);
-#endif
-
-  if (!library) {
-    LOG_IF(ERROR, PluginList::DebugPluginLoading())
-        << "Couldn't load plugin " << web_plugin_info_.path.value() << " "
-        << error.ToString();
-    return rv;
-  }
-
-#if defined(OS_MACOSX)
-  // According to the WebKit source, QuickTime at least requires us to call
-  // UseResFile on the plugin resources before loading.
-  if (library->bundle_resource_ref != -1)
-    UseResFile(library->bundle_resource_ref);
-#endif
-
-  rv = true;  // assume success now
-
-  entry_points_.np_initialize =
-      (NP_InitializeFunc)base::GetFunctionPointerFromNativeLibrary(library,
-          "NP_Initialize");
-  if (entry_points_.np_initialize == 0)
-    rv = false;
-
-#if defined(OS_WIN) || defined(OS_MACOSX)
-  entry_points_.np_getentrypoints =
-      (NP_GetEntryPointsFunc)base::GetFunctionPointerFromNativeLibrary(
-          library, "NP_GetEntryPoints");
-  if (entry_points_.np_getentrypoints == 0)
-    rv = false;
-#endif
-
-  entry_points_.np_shutdown =
-      (NP_ShutdownFunc)base::GetFunctionPointerFromNativeLibrary(library,
-          "NP_Shutdown");
-  if (entry_points_.np_shutdown == 0)
-    rv = false;
-
-  if (rv) {
-    plugin_funcs_.size = sizeof(plugin_funcs_);
-    plugin_funcs_.version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
-#if !defined(OS_POSIX)
-    if (entry_points_.np_getentrypoints(&plugin_funcs_) != NPERR_NO_ERROR)
-      rv = false;
-#else
-    // On Linux and Mac, we get the plugin entry points during NP_Initialize.
-#endif
-  }
-
-  if (rv) {
-    LOG_IF(ERROR, PluginList::DebugPluginLoading())
-        << "Plugin " << web_plugin_info_.path.value()
-        << " loaded successfully.";
-    library_ = library;
-  } else {
-    LOG_IF(ERROR, PluginList::DebugPluginLoading())
-        << "Plugin " << web_plugin_info_.path.value()
-        << " failed to load, unloading.";
-    base::UnloadNativeLibrary(library);
-  }
-
-  return rv;
-}
-
-// This is a helper to help perform a delayed NP_Shutdown and FreeLibrary on the
-// plugin dll.
-void FreePluginLibraryHelper(const base::FilePath& path,
-                             base::NativeLibrary library,
-                             NP_ShutdownFunc shutdown_func) {
-  if (shutdown_func) {
-    // Don't call NP_Shutdown if the library has been reloaded since this task
-    // was posted.
-    bool reloaded = false;
-    if (g_loaded_libs) {
-      for (size_t i = 0; i < g_loaded_libs->size(); ++i) {
-        if ((*g_loaded_libs)[i]->plugin_info().path == path) {
-          reloaded = true;
-          break;
-        }
-      }
-    }
-    if (!reloaded)
-      shutdown_func();
-  }
-
-  if (library) {
-    // Always call base::UnloadNativeLibrary so that the system reference
-    // count is decremented.
-    base::UnloadNativeLibrary(library);
-  }
-}
-
-void PluginLib::Unload() {
-  if (library_) {
-    // In case of single process mode, a plugin can delete itself
-    // by executing a script. So delay the unloading of the library
-    // so that the plugin will have a chance to unwind.
-/* TODO(dglazkov): Revisit when re-enabling the JSC build.
-#if USE(JSC)
-    // The plugin NPAPI instances may still be around. Delay the
-    // NP_Shutdown and FreeLibrary calls at least till the next
-    // peek message.
-    defer_unload = true;
-#endif
-*/
-    if (!defer_unload_) {
-      LOG_IF(ERROR, PluginList::DebugPluginLoading())
-          << "Scheduling delayed unload for plugin "
-          << web_plugin_info_.path.value();
-      base::ThreadTaskRunnerHandle::Get()->PostTask(
-          FROM_HERE, base::Bind(&FreePluginLibraryHelper, web_plugin_info_.path,
-                                skip_unload_ ? NULL : library_,
-                                entry_points_.np_shutdown));
-    } else {
-      Shutdown();
-      if (!skip_unload_) {
-        LOG_IF(ERROR, PluginList::DebugPluginLoading())
-            << "Unloading plugin " << web_plugin_info_.path.value();
-        base::UnloadNativeLibrary(library_);
-      }
-    }
-
-    library_ = NULL;
-  }
-
-  for (size_t i = 0; i < g_loaded_libs->size(); ++i) {
-    if ((*g_loaded_libs)[i].get() == this) {
-      g_loaded_libs->erase(g_loaded_libs->begin() + i);
-      break;
-    }
-  }
-  if (g_loaded_libs->empty()) {
-    delete g_loaded_libs;
-    g_loaded_libs = NULL;
-  }
-}
-
-void PluginLib::Shutdown() {
-  if (initialized_) {
-    NP_Shutdown();
-    initialized_ = false;
-  }
-}
-
-}  // namespace content
diff --git a/content/child/npapi/plugin_lib.h b/content/child/npapi/plugin_lib.h
deleted file mode 100644
index 1228fb7f..0000000
--- a/content/child/npapi/plugin_lib.h
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_PLUGIN_LIB_H_
-#define CONTENT_CHILD_NPAPI_PLUGIN_LIB_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/native_library.h"
-#include "build/build_config.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/common/content_export.h"
-#include "content/public/common/webplugininfo.h"
-#include "third_party/npapi/bindings/nphostapi.h"
-
-namespace base {
-class FilePath;
-}
-
-namespace content {
-
-class PluginInstance;
-
-// This struct holds entry points into a plugin.  The entry points are
-// slightly different between Win/Mac and Unixes.  Note that the interface for
-// querying plugins is synchronous and it is preferable to use a higher-level
-// asynchronous information to query information.
-struct PluginEntryPoints {
-#if !defined(OS_POSIX) || defined(OS_MACOSX)
-  NP_GetEntryPointsFunc np_getentrypoints;
-#endif
-  NP_InitializeFunc np_initialize;
-  NP_ShutdownFunc np_shutdown;
-};
-
-// A PluginLib is a single NPAPI Plugin Library, and is the lifecycle
-// manager for new PluginInstances.
-class CONTENT_EXPORT PluginLib : public base::RefCounted<PluginLib> {
- public:
-  static PluginLib* CreatePluginLib(const base::FilePath& filename);
-
-  // Unloads all the loaded plugin libraries and cleans up the plugin map.
-  static void UnloadAllPlugins();
-
-  // Shuts down all loaded plugin instances.
-  static void ShutdownAllPlugins();
-
-  // Get the Plugin's function pointer table.
-  NPPluginFuncs* functions();
-
-  // Creates a new instance of this plugin.
-  PluginInstance* CreateInstance(const std::string& mime_type);
-
-  // Called by the instance when the instance is tearing down.
-  void CloseInstance();
-
-  // Gets information about this plugin and the mime types that it
-  // supports.
-  const WebPluginInfo& plugin_info() { return web_plugin_info_; }
-
-  //
-  // NPAPI functions
-  //
-
-  // NPAPI method to initialize a Plugin.
-  // Initialize can be safely called multiple times
-  NPError NP_Initialize();
-
-  // NPAPI method to shutdown a Plugin.
-  void NP_Shutdown(void);
-
-  // NPAPI method to clear locally stored data (LSO's or "Flash cookies").
-  NPError NP_ClearSiteData(const char* site, uint64_t flags, uint64_t max_age);
-
-  // NPAPI method to get a NULL-terminated list of all sites under which data
-  // is stored.
-  char** NP_GetSitesWithData();
-
-  int instance_count() const { return instance_count_; }
-
-  // Prevents the library code from being unload when Unload() is called (since
-  // some plugins crash if unloaded).
-  void PreventLibraryUnload();
-
-  // Indicates whether plugin unload can be deferred.
-  void set_defer_unload(bool defer_unload) {
-    defer_unload_ = defer_unload;
-  }
-
-  // protected for testability.
- protected:
-  friend class base::RefCounted<PluginLib>;
-
-  // Creates a new PluginLib.
-  explicit PluginLib(const WebPluginInfo& info);
-
-  virtual ~PluginLib();
-
-  // Attempts to load the plugin from the library.
-  // Returns true if it is a legitimate plugin, false otherwise
-  bool Load();
-
-  // Unloads the plugin library.
-  void Unload();
-
-  // Shutdown the plugin library.
-  void Shutdown();
-
- private:
-  WebPluginInfo web_plugin_info_;  // Supported mime types, description
-  base::NativeLibrary library_;  // The opened library reference.
-  NPPluginFuncs plugin_funcs_;  // The struct of plugin side functions.
-  bool initialized_;  // Is the plugin initialized?
-  NPSavedData *saved_data_;  // Persisted plugin info for NPAPI.
-  int instance_count_;  // Count of plugins in use.
-  bool skip_unload_;  // True if library_ should not be unloaded.
-
-  // Function pointers to entry points into the plugin.
-  PluginEntryPoints entry_points_;
-
-  // Set to true if unloading of the plugin dll is to be deferred.
-  bool defer_unload_;
-
-  DISALLOW_COPY_AND_ASSIGN(PluginLib);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_PLUGIN_LIB_H_
diff --git a/content/child/npapi/plugin_lib_unittest.cc b/content/child/npapi/plugin_lib_unittest.cc
deleted file mode 100644
index 1469828..0000000
--- a/content/child/npapi/plugin_lib_unittest.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/plugin_lib.h"
-
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace content {
-
-// Test the unloading of plugin libs. Bug http://crbug.com/46526 showed that
-// if UnloadAllPlugins() simply iterates through the g_loaded_libs global
-// variable, we can get a crash if no plugin libs were marked as always loaded.
-class PluginLibTest : public PluginLib {
- public:
-  PluginLibTest() : PluginLib(WebPluginInfo()) {}
-  using PluginLib::Unload;
-
- protected:
-  ~PluginLibTest() override {}
-};
-
-TEST(PluginLibLoading, UnloadAllPlugins) {
-  // For the creation of the g_loaded_libs global variable.
-  ASSERT_EQ(static_cast<PluginLibTest*>(NULL),
-      PluginLibTest::CreatePluginLib(base::FilePath()));
-
-  // Try with a single plugin lib.
-  scoped_refptr<PluginLibTest> plugin_lib1(new PluginLibTest());
-  PluginLib::UnloadAllPlugins();
-
-  // Need to create it again, it should have been destroyed above.
-  ASSERT_EQ(static_cast<PluginLibTest*>(NULL),
-      PluginLibTest::CreatePluginLib(base::FilePath()));
-
-  // Try with two plugin libs.
-  plugin_lib1 = new PluginLibTest();
-  scoped_refptr<PluginLibTest> plugin_lib2(new PluginLibTest());
-  PluginLib::UnloadAllPlugins();
-
-  // Need to create it again, it should have been destroyed above.
-  ASSERT_EQ(static_cast<PluginLibTest*>(NULL),
-      PluginLibTest::CreatePluginLib(base::FilePath()));
-
-  // Now try to manually Unload one and then UnloadAll.
-  plugin_lib1 = new PluginLibTest();
-  plugin_lib2 = new PluginLibTest();
-  plugin_lib1->Unload();
-  PluginLib::UnloadAllPlugins();
-
-  // Need to create it again, it should have been destroyed above.
-  ASSERT_EQ(static_cast<PluginLibTest*>(NULL),
-      PluginLibTest::CreatePluginLib(base::FilePath()));
-
-  // Now try to manually Unload the only one and then UnloadAll.
-  plugin_lib1 = new PluginLibTest();
-  plugin_lib1->Unload();
-  PluginLib::UnloadAllPlugins();
-}
-
-}  // namespace content
diff --git a/content/child/npapi/plugin_web_event_converter_mac.h b/content/child/npapi/plugin_web_event_converter_mac.h
deleted file mode 100644
index 7847553..0000000
--- a/content/child/npapi/plugin_web_event_converter_mac.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_
-#define CONTENT_CHILD_NPAPI_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_
-
-#include "base/macros.h"
-#include "third_party/npapi/bindings/npapi.h"
-
-namespace blink {
-class WebInputEvent;
-class WebKeyboardEvent;
-class WebMouseEvent;
-class WebMouseWheelEvent;
-}
-
-namespace content {
-
-// Utility class to translating WebInputEvent structs to equivalent structures
-// suitable for sending to Mac plugins (via NPP_HandleEvent).
-class PluginWebEventConverter {
- public:
-  PluginWebEventConverter();
-  virtual ~PluginWebEventConverter();
-
-  // Initializes a converter for the given web event. Returns false if the event
-  // could not be converted.
-  bool InitWithEvent(const blink::WebInputEvent& web_event);
-
-  // Returns a pointer to a plugin event--suitable for passing to
-  // NPP_HandleEvent--corresponding to the the web event this converter was
-  // created with. The pointer is valid only as long as this object is.
-  // Returns NULL iff InitWithEvent returned false.
-  NPCocoaEvent* plugin_event() { return &cocoa_event_; }
-
- private:
-  // Stores a converted plugin representation of the given web event, suitable
-  // for returning from plugin_event.
-  // Returns true if the event was successfully converted.
-  bool ConvertKeyboardEvent(const blink::WebKeyboardEvent& web_event);
-  bool ConvertMouseEvent(const blink::WebMouseEvent& web_event);
-  bool ConvertMouseWheelEvent(const blink::WebMouseWheelEvent& web_event);
-
-  // Returns the Cocoa translation of web_event's modifiers.
-  static NSUInteger CocoaModifiers(const blink::WebInputEvent& web_event);
-
-  NPCocoaEvent cocoa_event_;
-
-  DISALLOW_COPY_AND_ASSIGN(PluginWebEventConverter);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_
diff --git a/content/child/npapi/plugin_web_event_converter_mac.mm b/content/child/npapi/plugin_web_event_converter_mac.mm
deleted file mode 100644
index 4ddd4343..0000000
--- a/content/child/npapi/plugin_web_event_converter_mac.mm
+++ /dev/null
@@ -1,189 +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.
-
-#import <Cocoa/Cocoa.h>
-#include <string.h>
-
-#include "base/logging.h"
-#include "content/child/npapi/plugin_web_event_converter_mac.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-
-using blink::WebInputEvent;
-using blink::WebKeyboardEvent;
-using blink::WebMouseEvent;
-using blink::WebMouseWheelEvent;
-
-namespace content {
-
-namespace {
-
-// Returns true if the given key is a modifier key.
-bool KeyIsModifier(int native_key_code) {
-  switch (native_key_code) {
-    case 55:  // Left command
-    case 54:  // Right command
-    case 58:  // Left option
-    case 61:  // Right option
-    case 59:  // Left control
-    case 62:  // Right control
-    case 56:  // Left shift
-    case 60:  // Right shift
-    case 57:  // Caps lock
-      return true;
-    default:
-      return false;
-  }
-}
-
-// Returns true if the caps lock flag should be set for the given event.
-bool CapsLockIsActive(const WebInputEvent& event) {
-  // Only key events have accurate information for the caps lock flag; see
-  // <https://bugs.webkit.org/show_bug.cgi?id=46518>.
-  // For other types, use the live state.
-  if (WebInputEvent::isKeyboardEventType(event.type))
-    return (event.modifiers & WebInputEvent::CapsLockOn) != 0;
-  else
-    return ([[NSApp currentEvent] modifierFlags] & NSAlphaShiftKeyMask) != 0;
-}
-
-}  // namespace
-
-#pragma mark -
-
-PluginWebEventConverter::PluginWebEventConverter() {
-}
-
-PluginWebEventConverter::~PluginWebEventConverter() {
-}
-
-bool PluginWebEventConverter::InitWithEvent(const WebInputEvent& web_event) {
-  memset(&cocoa_event_, 0, sizeof(cocoa_event_));
-  if (web_event.type == WebInputEvent::MouseWheel) {
-    return ConvertMouseWheelEvent(
-        *static_cast<const WebMouseWheelEvent*>(&web_event));
-  } else if (WebInputEvent::isMouseEventType(web_event.type)) {
-    return ConvertMouseEvent(*static_cast<const WebMouseEvent*>(&web_event));
-  } else if (WebInputEvent::isKeyboardEventType(web_event.type)) {
-    return ConvertKeyboardEvent(
-       *static_cast<const WebKeyboardEvent*>(&web_event));
-  }
-  DLOG(WARNING) << "Unknown event type " << web_event.type;
-  return false;
-}
-
-bool PluginWebEventConverter::ConvertKeyboardEvent(
-    const WebKeyboardEvent& key_event) {
-  cocoa_event_.data.key.keyCode = key_event.nativeKeyCode;
-
-  cocoa_event_.data.key.modifierFlags |= CocoaModifiers(key_event);
-
-  // Modifier keys have their own event type, and don't get character or
-  // repeat data.
-  if (KeyIsModifier(key_event.nativeKeyCode)) {
-    cocoa_event_.type = NPCocoaEventFlagsChanged;
-    return true;
-  }
-
-  cocoa_event_.data.key.characters = reinterpret_cast<NPNSString*>(
-      [NSString stringWithFormat:@"%S", key_event.text]);
-  cocoa_event_.data.key.charactersIgnoringModifiers =
-      reinterpret_cast<NPNSString*>(
-          [NSString stringWithFormat:@"%S", key_event.unmodifiedText]);
-
-  if (key_event.modifiers & WebInputEvent::IsAutoRepeat)
-    cocoa_event_.data.key.isARepeat = true;
-
-  switch (key_event.type) {
-    case WebInputEvent::KeyDown:
-      cocoa_event_.type = NPCocoaEventKeyDown;
-      return true;
-    case WebInputEvent::KeyUp:
-      cocoa_event_.type = NPCocoaEventKeyUp;
-      return true;
-    case WebInputEvent::RawKeyDown:
-    case WebInputEvent::Char:
-      // May be used eventually for IME, but currently not needed.
-      return false;
-    default:
-      NOTREACHED();
-      return false;
-  }
-}
-
-bool PluginWebEventConverter::ConvertMouseEvent(
-    const WebMouseEvent& mouse_event) {
-  cocoa_event_.data.mouse.pluginX = mouse_event.x;
-  cocoa_event_.data.mouse.pluginY = mouse_event.y;
-  cocoa_event_.data.mouse.modifierFlags |= CocoaModifiers(mouse_event);
-  cocoa_event_.data.mouse.clickCount = mouse_event.clickCount;
-  switch (mouse_event.button) {
-    case WebMouseEvent::ButtonLeft:
-      cocoa_event_.data.mouse.buttonNumber = 0;
-      break;
-    case WebMouseEvent::ButtonMiddle:
-      cocoa_event_.data.mouse.buttonNumber = 2;
-      break;
-    case WebMouseEvent::ButtonRight:
-      cocoa_event_.data.mouse.buttonNumber = 1;
-      break;
-    default:
-      cocoa_event_.data.mouse.buttonNumber = mouse_event.button;
-      break;
-  }
-  switch (mouse_event.type) {
-    case WebInputEvent::MouseDown:
-      cocoa_event_.type = NPCocoaEventMouseDown;
-      return true;
-    case WebInputEvent::MouseUp:
-      cocoa_event_.type = NPCocoaEventMouseUp;
-      return true;
-    case WebInputEvent::MouseMove: {
-      bool mouse_is_down =
-          (mouse_event.modifiers & WebInputEvent::LeftButtonDown) ||
-          (mouse_event.modifiers & WebInputEvent::RightButtonDown) ||
-          (mouse_event.modifiers & WebInputEvent::MiddleButtonDown);
-      cocoa_event_.type = mouse_is_down ? NPCocoaEventMouseDragged
-                                        : NPCocoaEventMouseMoved;
-      return true;
-    }
-    case WebInputEvent::MouseEnter:
-      cocoa_event_.type = NPCocoaEventMouseEntered;
-      return true;
-    case WebInputEvent::MouseLeave:
-      cocoa_event_.type = NPCocoaEventMouseExited;
-      return true;
-    default:
-      NOTREACHED();
-      return false;
-  }
-}
-
-bool PluginWebEventConverter::ConvertMouseWheelEvent(
-    const WebMouseWheelEvent& wheel_event) {
-  cocoa_event_.type = NPCocoaEventScrollWheel;
-  cocoa_event_.data.mouse.pluginX = wheel_event.x;
-  cocoa_event_.data.mouse.pluginY = wheel_event.y;
-  cocoa_event_.data.mouse.modifierFlags |= CocoaModifiers(wheel_event);
-  cocoa_event_.data.mouse.deltaX = wheel_event.deltaX;
-  cocoa_event_.data.mouse.deltaY = wheel_event.deltaY;
-  return true;
-}
-
-NSUInteger PluginWebEventConverter::CocoaModifiers(
-    const WebInputEvent& web_event) {
-  NSInteger modifiers = 0;
-  if (web_event.modifiers & WebInputEvent::ControlKey)
-    modifiers |= NSControlKeyMask;
-  if (web_event.modifiers & WebInputEvent::ShiftKey)
-    modifiers |= NSShiftKeyMask;
-  if (web_event.modifiers & WebInputEvent::AltKey)
-    modifiers |= NSAlternateKeyMask;
-  if (web_event.modifiers & WebInputEvent::MetaKey)
-    modifiers |= NSCommandKeyMask;
-  if (CapsLockIsActive(web_event))
-    modifiers |= NSAlphaShiftKeyMask;
-  return modifiers;
-}
-
-}  // namespace content
diff --git a/content/child/npapi/webplugin.h b/content/child/npapi/webplugin.h
deleted file mode 100644
index 8591391..0000000
--- a/content/child/npapi/webplugin.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_WEBPLUGIN_H_
-#define CONTENT_CHILD_NPAPI_WEBPLUGIN_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "build/build_config.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gl/gpu_preference.h"
-
-// TODO(port): this typedef is obviously incorrect on non-Windows
-// platforms, but now a lot of code now accidentally depends on them
-// existing.  #ifdef out these declarations and fix all the users.
-typedef void* HANDLE;
-
-class GURL;
-struct NPObject;
-
-namespace content {
-
-class WebPluginResourceClient;
-#if defined(OS_MACOSX)
-class WebPluginAcceleratedSurface;
-#endif
-
-// The WebKit side of a plugin implementation.  It provides wrappers around
-// operations that need to interact with the frame and other WebCore objects.
-class WebPlugin {
- public:
-  virtual ~WebPlugin() {}
-
-  virtual void Invalidate() = 0;
-  virtual void InvalidateRect(const gfx::Rect& rect) = 0;
-
-  // Resolves the proxies for the url, returns true on success.
-  virtual bool FindProxyForUrl(const GURL& url, std::string* proxy_list) = 0;
-
-  // Cookies
-  virtual void SetCookie(const GURL& url,
-                         const GURL& first_party_for_cookies,
-                         const std::string& cookie) = 0;
-  virtual std::string GetCookies(const GURL& url,
-                                 const GURL& first_party_for_cookies) = 0;
-
-  // Cancels document load.
-  virtual void CancelDocumentLoad() = 0;
-
-  virtual void DidStartLoading() = 0;
-  virtual void DidStopLoading() = 0;
-
-  // Returns true iff in incognito mode.
-  virtual bool IsOffTheRecord() = 0;
-
-#if defined(OS_MACOSX)
-  // Called to inform the WebPlugin that the plugin has gained or lost focus.
-  virtual void FocusChanged(bool focused) {}
-
-  // Starts plugin IME.
-  virtual void StartIme() {}
-
-  // Returns the accelerated surface abstraction for accelerated plugins.
-  virtual WebPluginAcceleratedSurface* GetAcceleratedSurface(
-      gfx::GpuPreference gpu_preference) = 0;
-
-  // Core Animation plugin support. CA plugins always render through
-  // the compositor.
-  virtual void AcceleratedPluginEnabledRendering() = 0;
-  virtual void AcceleratedPluginAllocatedIOSurface(int32_t width,
-                                                   int32_t height,
-                                                   uint32_t surface_id) = 0;
-  virtual void AcceleratedPluginSwappedIOSurface() = 0;
-#endif
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_WEBPLUGIN_H_
diff --git a/content/child/npapi/webplugin_accelerated_surface_mac.h b/content/child/npapi/webplugin_accelerated_surface_mac.h
deleted file mode 100644
index d91f8f21..0000000
--- a/content/child/npapi/webplugin_accelerated_surface_mac.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_WEBPLUGIN_ACCELERATED_SURFACE_MAC_H_
-#define CONTENT_CHILD_NPAPI_WEBPLUGIN_ACCELERATED_SURFACE_MAC_H_
-
-#include "ui/gfx/geometry/size.h"
-#include "ui/gfx/native_widget_types.h"
-
-// Avoid having to include OpenGL headers here.
-typedef struct _CGLContextObject* CGLContextObj;
-
-namespace content {
-
-// Interface class for interacting with an accelerated plugin surface, used
-// for the Core Animation flavors of plugin drawing on the Mac.
-class WebPluginAcceleratedSurface {
- public:
-  virtual ~WebPluginAcceleratedSurface() {}
-
-  // Sets the size of the surface.
-  virtual void SetSize(const gfx::Size& size) = 0;
-
-  // Returns the context used to draw into this surface.
-  // If initializing the surface failed, this will be NULL.
-  virtual CGLContextObj context() = 0;
-
-  // Readies the surface for drawing. Must be called before any drawing session.
-  virtual void StartDrawing() = 0;
-
-  // Ends a drawing session. Changes to the surface may not be reflected until
-  // this is called.
-  virtual void EndDrawing() = 0;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_WEBPLUGIN_ACCELERATED_SURFACE_MAC_H_
diff --git a/content/child/npapi/webplugin_delegate.h b/content/child/npapi/webplugin_delegate.h
deleted file mode 100644
index d272af9..0000000
--- a/content/child/npapi/webplugin_delegate.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_H_
-#define CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_H_
-
-#include <string>
-#include <vector>
-
-#include "base/strings/string16.h"
-#include "build/build_config.h"
-#include "content/common/cursors/webcursor.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "ui/gfx/native_widget_types.h"
-
-class GURL;
-class SkCanvas;
-struct NPObject;
-
-namespace blink {
-class WebInputEvent;
-}
-
-namespace gfx {
-class Rect;
-}
-
-namespace content {
-
-struct Referrer;
-class WebPluginResourceClient;
-
-// This is the interface that a plugin implementation needs to provide.
-class WebPluginDelegate {
- public:
-  virtual ~WebPluginDelegate() {}
-
-  // Initializes the plugin implementation with the given (UTF8) arguments.
-  // Note that the lifetime of WebPlugin must be longer than this delegate.
-  // If this function returns false the plugin isn't started and shouldn't be
-  // called again.  If this method succeeds, then the WebPlugin is valid until
-  // PluginDestroyed is called.
-  // The load_manually parameter if true indicates that the plugin data would
-  // be passed from webkit. if false indicates that the plugin should download
-  // the data. This also controls whether the plugin is instantiated as a full
-  // page plugin (NP_FULL) or embedded (NP_EMBED).
-  virtual bool Initialize(const GURL& url,
-                          const std::vector<std::string>& arg_names,
-                          const std::vector<std::string>& arg_values,
-                          bool load_manually) = 0;
-
-  // Called when the WebPlugin is being destroyed.  This is a signal to the
-  // delegate that it should tear-down the plugin implementation and not call
-  // methods on the WebPlugin again.
-  virtual void PluginDestroyed() = 0;
-
-  // Update the geometry of the plugin.  This is a request to move the
-  // plugin, relative to its containing window, to the coords given by
-  // window_rect.  Its contents should be clipped to the coords given
-  // by clip_rect, which are relative to the origin of the plugin
-  // window.  The clip_rect is in plugin-relative coordinates.
-  virtual void UpdateGeometry(const gfx::Rect& window_rect,
-                              const gfx::Rect& clip_rect) = 0;
-
-  // Tells the plugin to paint the damaged rect.  |canvas| is only used for
-  // windowless plugins.
-  virtual void Paint(SkCanvas* canvas, const gfx::Rect& rect) = 0;
-
-  // Informs the plugin that it has gained or lost focus. This is only called in
-  // windowless mode.
-  virtual void SetFocus(bool focused) = 0;
-
-  // For windowless plugins, gives them a user event like mouse/keyboard.
-  // Returns whether the event was handled. This is only called in windowsless
-  // mode. See NPAPI NPP_HandleEvent for more information.
-  virtual bool HandleInputEvent(const blink::WebInputEvent& event,
-                                WebCursor::CursorInfo* cursor) = 0;
-
-  // Returns the process id of the process that is running the plugin.
-  virtual int GetProcessId() = 0;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_H_
diff --git a/content/child/npapi/webplugin_delegate_impl.cc b/content/child/npapi/webplugin_delegate_impl.cc
deleted file mode 100644
index 4aa3912..0000000
--- a/content/child/npapi/webplugin_delegate_impl.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-
-#include <stddef.h>
-
-#include <string>
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/process/process_handle.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-
-using blink::WebCursorInfo;
-using blink::WebInputEvent;
-
-namespace content {
-
-WebPluginDelegateImpl* WebPluginDelegateImpl::Create(
-    WebPlugin* plugin,
-    const base::FilePath& filename,
-    const std::string& mime_type) {
-  scoped_refptr<PluginLib> plugin_lib(PluginLib::CreatePluginLib(filename));
-  if (plugin_lib.get() == NULL)
-    return NULL;
-
-  NPError err = plugin_lib->NP_Initialize();
-  if (err != NPERR_NO_ERROR)
-    return NULL;
-
-  scoped_refptr<PluginInstance> instance(plugin_lib->CreateInstance(mime_type));
-  return new WebPluginDelegateImpl(plugin, instance.get());
-}
-
-void WebPluginDelegateImpl::PluginDestroyed() {
-  if (handle_event_depth_) {
-    base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
-  } else {
-    delete this;
-  }
-}
-
-bool WebPluginDelegateImpl::Initialize(
-    const GURL& url,
-    const std::vector<std::string>& arg_names,
-    const std::vector<std::string>& arg_values,
-    bool load_manually) {
-  if (instance_->plugin_lib()->plugin_info().name.find(
-          base::ASCIIToUTF16("QuickTime Plug-in")) != std::wstring::npos) {
-    quirks_ |= PLUGIN_QUIRK_COPY_STREAM_DATA;
-  }
-
-  instance_->set_web_plugin(plugin_);
-  if (quirks_ & PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES) {
-    PluginLib* plugin_lib = instance()->plugin_lib();
-    if (plugin_lib->instance_count() > 1) {
-      return false;
-    }
-  }
-
-  int argc = 0;
-  scoped_ptr<char*[]> argn(new char*[arg_names.size()]);
-  scoped_ptr<char*[]> argv(new char*[arg_names.size()]);
-  for (size_t i = 0; i < arg_names.size(); ++i) {
-    if (quirks_ & PLUGIN_QUIRK_NO_WINDOWLESS &&
-        base::LowerCaseEqualsASCII(arg_names[i], "windowlessvideo")) {
-      continue;
-    }
-    argn[argc] = const_cast<char*>(arg_names[i].c_str());
-    argv[argc] = const_cast<char*>(arg_values[i].c_str());
-    argc++;
-  }
-
-  creation_succeeded_ = instance_->Start(
-      url, argn.get(), argv.get(), argc, load_manually);
-  if (!creation_succeeded_) {
-    VLOG(1) << "Couldn't start plugin instance";
-    return false;
-  }
-
-  bool should_load = PlatformInitialize();
-
-  plugin_url_ = url.spec();
-
-  return should_load;
-}
-
-void WebPluginDelegateImpl::DestroyInstance() {
-  if (instance_.get() && (instance_->npp()->ndata != NULL)) {
-    window_.window = NULL;
-    if (creation_succeeded_ &&
-        !(quirks_ & PLUGIN_QUIRK_DONT_SET_NULL_WINDOW_HANDLE_ON_DESTROY)) {
-      instance_->NPP_SetWindow(&window_);
-    }
-
-    instance_->NPP_Destroy();
-
-    instance_->set_web_plugin(NULL);
-
-    PlatformDestroyInstance();
-
-    instance_ = 0;
-  }
-}
-
-void WebPluginDelegateImpl::UpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect) {
-
-  if (first_set_window_call_) {
-    first_set_window_call_ = false;
-    // Plugins like media player on Windows have a bug where in they handle the
-    // first geometry update and ignore the rest resulting in painting issues.
-    // This quirk basically ignores the first set window call sequence for
-    // these plugins and has been tested for Windows plugins only.
-    if (quirks_ & PLUGIN_QUIRK_IGNORE_FIRST_SETWINDOW_CALL)
-      return;
-  }
-
-  WindowlessUpdateGeometry(window_rect, clip_rect);
-}
-
-void WebPluginDelegateImpl::SetFocus(bool focused) {
-  // This is called when internal WebKit focus (the focused element on the page)
-  // changes, but plugins need to know about OS-level focus, so we have an extra
-  // layer of focus tracking.
-  //
-  // On Windows, historically browsers did not set focus events to windowless
-  // plugins when the toplevel window focus changes. Sending such focus events
-  // breaks full screen mode in Flash because it will come out of full screen
-  // mode when it loses focus, and its full screen window causes the browser to
-  // lose focus.
-  has_webkit_focus_ = focused;
-#if !defined(OS_WIN)
-  if (containing_view_has_focus_)
-    SetPluginHasFocus(focused);
-#else
-  SetPluginHasFocus(focused);
-#endif
-}
-
-void WebPluginDelegateImpl::SetPluginHasFocus(bool focused) {
-  if (focused == plugin_has_focus_)
-    return;
-  if (PlatformSetPluginHasFocus(focused))
-    plugin_has_focus_ = focused;
-}
-
-void WebPluginDelegateImpl::SetContentAreaHasFocus(bool has_focus) {
-  containing_view_has_focus_ = has_focus;
-#if !defined(OS_WIN)  // See SetFocus above.
-  SetPluginHasFocus(containing_view_has_focus_ && has_webkit_focus_);
-#endif
-}
-
-int WebPluginDelegateImpl::GetProcessId() {
-  // We are in process, so the plugin pid is this current process pid.
-  return base::GetCurrentProcId();
-}
-
-base::FilePath WebPluginDelegateImpl::GetPluginPath() {
-  return instance()->plugin_lib()->plugin_info().path;
-}
-
-bool WebPluginDelegateImpl::HandleInputEvent(
-    const WebInputEvent& event,
-    WebCursor::CursorInfo* cursor_info) {
-  bool pop_user_gesture = false;
-  if (IsUserGesture(event)) {
-    pop_user_gesture = true;
-    instance()->PushPopupsEnabledState(true);
-  }
-
-  bool handled = PlatformHandleInputEvent(event, cursor_info);
-
-  if (pop_user_gesture) {
-    instance()->PopPopupsEnabledState();
-  }
-
-  return handled;
-}
-
-bool WebPluginDelegateImpl::IsUserGesture(const WebInputEvent& event) {
-  switch (event.type) {
-    case WebInputEvent::MouseDown:
-    case WebInputEvent::MouseUp:
-    case WebInputEvent::KeyDown:
-    case WebInputEvent::KeyUp:
-      return true;
-    default:
-      return false;
-  }
-}
-
-}  // namespace content
diff --git a/content/child/npapi/webplugin_delegate_impl.h b/content/child/npapi/webplugin_delegate_impl.h
deleted file mode 100644
index d38dce16..0000000
--- a/content/child/npapi/webplugin_delegate_impl.h
+++ /dev/null
@@ -1,287 +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 CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_IMPL_H_
-#define CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_IMPL_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/sequenced_task_runner_helpers.h"
-#include "base/timer/timer.h"
-#include "build/build_config.h"
-#include "content/child/npapi/webplugin_delegate.h"
-#include "content/common/cursors/webcursor.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/native_widget_types.h"
-
-namespace base {
-class FilePath;
-}
-
-#if defined(OS_MACOSX)
-#ifdef __OBJC__
-@class CALayer;
-@class CARenderer;
-#else
-class CALayer;
-class CARenderer;
-#endif
-#endif
-
-namespace content {
-class PluginInstance;
-class WebPlugin;
-
-#if defined(OS_MACOSX)
-class WebPluginAcceleratedSurface;
-class ExternalDragTracker;
-#endif  // OS_MACOSX
-
-// An implementation of WebPluginDelegate that runs in the plugin process,
-// proxied from the renderer by WebPluginDelegateProxy.
-class WebPluginDelegateImpl : public WebPluginDelegate {
- public:
-  enum PluginQuirks {
-    PLUGIN_QUIRK_SETWINDOW_TWICE = 1,  // Win32
-    PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE = 2,  // Win32
-    PLUGIN_QUIRK_DONT_CALL_WND_PROC_RECURSIVELY = 4,  // Win32
-    PLUGIN_QUIRK_DONT_SET_NULL_WINDOW_HANDLE_ON_DESTROY = 8,  // Win32
-    PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16,  // Win32
-    PLUGIN_QUIRK_DIE_AFTER_UNLOAD = 32,  // Win32
-    PLUGIN_QUIRK_PATCH_SETCURSOR = 64,  // Win32
-    PLUGIN_QUIRK_BLOCK_NONSTANDARD_GETURL_REQUESTS = 128,  // Win32
-    PLUGIN_QUIRK_WINDOWLESS_OFFSET_WINDOW_TO_DRAW = 256,  // Linux
-    PLUGIN_QUIRK_WINDOWLESS_INVALIDATE_AFTER_SET_WINDOW = 512,  // Linux
-    PLUGIN_QUIRK_NO_WINDOWLESS = 1024,  // Windows
-    PLUGIN_QUIRK_PATCH_REGENUMKEYEXW = 2048,  // Windows
-    PLUGIN_QUIRK_ALWAYS_NOTIFY_SUCCESS = 4096,  // Windows
-    PLUGIN_QUIRK_HANDLE_MOUSE_CAPTURE = 16384,  // Windows
-    PLUGIN_QUIRK_WINDOWLESS_NO_RIGHT_CLICK = 32768,  // Linux
-    PLUGIN_QUIRK_IGNORE_FIRST_SETWINDOW_CALL = 65536,  // Windows.
-    PLUGIN_QUIRK_EMULATE_IME = 131072,  // Windows.
-    PLUGIN_QUIRK_FAKE_WINDOW_FROM_POINT = 262144,  // Windows.
-    PLUGIN_QUIRK_COPY_STREAM_DATA = 524288,  // All platforms
-  };
-
-  static WebPluginDelegateImpl* Create(WebPlugin* plugin,
-                                       const base::FilePath& filename,
-                                       const std::string& mime_type);
-
-  // WebPluginDelegate implementation
-  bool Initialize(const GURL& url,
-                  const std::vector<std::string>& arg_names,
-                  const std::vector<std::string>& arg_values,
-                  bool load_manually) override;
-  void PluginDestroyed() override;
-  void UpdateGeometry(const gfx::Rect& window_rect,
-                      const gfx::Rect& clip_rect) override;
-  void Paint(SkCanvas* canvas, const gfx::Rect& rect) override;
-  void SetFocus(bool focused) override;
-  bool HandleInputEvent(const blink::WebInputEvent& event,
-                        WebCursor::CursorInfo* cursor_info) override;
-  int GetProcessId() override;
-  // End of WebPluginDelegate implementation.
-
-  PluginInstance* instance() { return instance_.get(); }
-  gfx::Rect GetRect() const { return window_rect_; }
-  gfx::Rect GetClipRect() const { return clip_rect_; }
-
-  // Returns the path for the library implementing this plugin.
-  base::FilePath GetPluginPath();
-
-  // Returns a combination of PluginQuirks.
-  int GetQuirks() const { return quirks_; }
-
-  // Informs the plugin that the view it is in has gained or lost focus.
-  void SetContentAreaHasFocus(bool has_focus);
-
-#if defined(OS_MACOSX) && !defined(USE_AURA)
-  // Informs the plugin that the geometry has changed, as with UpdateGeometry,
-  // but also includes the new buffer context for that new geometry.
-  void UpdateGeometryAndContext(const gfx::Rect& window_rect,
-                                const gfx::Rect& clip_rect,
-                                gfx::NativeDrawingContext context);
-  // Informs the delegate that the plugin called NPN_Invalidate*. Used as a
-  // trigger for Core Animation drawing.
-  void PluginDidInvalidate();
-  // Returns the delegate currently processing events.
-  static WebPluginDelegateImpl* GetActiveDelegate();
-  // Informs the plugin that the window it is in has gained or lost focus.
-  void SetWindowHasFocus(bool has_focus);
-  // Informs the plugin that its tab or window has been hidden or shown.
-  void SetContainerVisibility(bool is_visible);
-  // Informs the plugin that its containing window's frame has changed.
-  // Frames are in screen coordinates.
-  void WindowFrameChanged(const gfx::Rect& window_frame,
-                          const gfx::Rect& view_frame);
-  // Informs the plugin that IME composition has completed.
-  // If |text| is empty, IME was cancelled.
-  void ImeCompositionCompleted(const base::string16& text);
-  // Informs the delegate that the plugin set a Cocoa NSCursor.
-  void SetNSCursor(NSCursor* cursor);
-
-  // Indicates that the windowless plugins will draw directly to the window
-  // context instead of a buffer context.
-  void SetNoBufferContext();
-
-  // TODO(caryclark): This is a temporary workaround to allow the Darwin / Skia
-  // port to share code with the Darwin / CG port. Later, this will be removed
-  // and all callers will use the Paint defined above.
-  void CGPaint(CGContextRef context, const gfx::Rect& rect);
-#endif  // OS_MACOSX && !USE_AURA
-
- private:
-  friend class base::DeleteHelper<WebPluginDelegateImpl>;
-  friend class WebPluginDelegate;
-
-  WebPluginDelegateImpl(WebPlugin* plugin, PluginInstance* instance);
-  ~WebPluginDelegateImpl() override;
-
-  // Called by Initialize() for platform-specific initialization.
-  // If this returns false, the plugin shouldn't be started--see Initialize().
-  bool PlatformInitialize();
-
-  // Called by DestroyInstance(), used for platform-specific destruction.
-  void PlatformDestroyInstance();
-
-  //----------------------------
-  // used for windowless plugins
-  void WindowlessUpdateGeometry(const gfx::Rect& window_rect,
-                                const gfx::Rect& clip_rect);
-  void WindowlessPaint(gfx::NativeDrawingContext hdc, const gfx::Rect& rect);
-
-  // Tells the plugin about the current state of the window.
-  // See NPAPI NPP_SetWindow for more information.
-  void WindowlessSetWindow();
-
-  // Informs the plugin that it has gained or lost keyboard focus (on the Mac,
-  // this just means window first responder status).
-  void SetPluginHasFocus(bool focused);
-
-  // Handles the platform specific details of setting plugin focus. Returns
-  // false if the platform cancelled the focus tranfer.
-  bool PlatformSetPluginHasFocus(bool focused);
-
-  //-----------------------------------------
-  // used for windowed and windowless plugins
-
-  // Does platform-specific event handling. Arguments and return are identical
-  // to HandleInputEvent.
-  bool PlatformHandleInputEvent(const blink::WebInputEvent& event,
-                                WebCursor::CursorInfo* cursor_info);
-
-  // Closes down and destroys our plugin instance.
-  void DestroyInstance();
-
-
-  // Note: on Mac OS X, the only time the windowed handle is non-zero
-  // is the case of accelerated rendering, which uses a fake window handle to
-  // identify itself back to the browser. It still performs all of its
-  // work offscreen.
-
-  WebPlugin* plugin_;
-  scoped_refptr<PluginInstance> instance_;
-
-  NPWindow window_;
-  gfx::Rect window_rect_;
-  gfx::Rect clip_rect_;
-  int quirks_;
-
-#if defined(OS_MACOSX) && !defined(USE_AURA)
-  // Sets window_rect_ to |rect|
-  void SetPluginRect(const gfx::Rect& rect);
-  // Sets content_area_origin to |origin|
-  void SetContentAreaOrigin(const gfx::Point& origin);
-  // Updates everything that depends on the plugin's absolute screen location.
-  void PluginScreenLocationChanged();
-  // Updates anything that depends on plugin visibility.
-  void PluginVisibilityChanged();
-
-  // Starts an IME session.
-  void StartIme();
-
-  // Informs the browser about the updated accelerated drawing surface.
-  void UpdateAcceleratedSurface();
-
-  // Uses a CARenderer to draw the plugin's layer in our OpenGL surface.
-  void DrawLayerInSurface();
-
-  bool use_buffer_context_;
-  CGContextRef buffer_context_;  // Weak ref.
-
-  CALayer* layer_;  // Used for CA drawing mode. Weak, retained by plugin.
-  WebPluginAcceleratedSurface* surface_;  // Weak ref.
-  CARenderer* renderer_;  // Renders layer_ to surface_.
-  scoped_ptr<base::RepeatingTimer> redraw_timer_;
-
-  // The upper-left corner of the web content area in screen coordinates,
-  // relative to an upper-left (0,0).
-  gfx::Point content_area_origin_;
-
-  bool containing_window_has_focus_;
-  bool initial_window_focus_;
-  bool container_is_visible_;
-  bool have_called_set_window_;
-
-  gfx::Rect cached_clip_rect_;
-
-  bool ime_enabled_;
-  int keyup_ignore_count_;
-
-  scoped_ptr<ExternalDragTracker> external_drag_tracker_;
-#endif  // OS_MACOSX && !USE_AURA
-
-  // Called by the message filter hook when the plugin enters a modal loop.
-  void OnModalLoopEntered();
-
-  // Returns true if the message passed in corresponds to a user gesture.
-  static bool IsUserGesture(const blink::WebInputEvent& event);
-
-  // The url with which the plugin was instantiated.
-  std::string plugin_url_;
-
-  // Holds the depth of the HandleEvent callstack.
-  int handle_event_depth_;
-
-  // Holds the current cursor set by the windowless plugin.
-  WebCursor current_windowless_cursor_;
-
-  // Set to true initially and indicates if this is the first npp_setwindow
-  // call received by the plugin.
-  bool first_set_window_call_;
-
-  // True if the plugin thinks it has keyboard focus
-  bool plugin_has_focus_;
-  // True if the plugin element has focus within the web content, regardless of
-  // whether its containing view currently has focus.
-  bool has_webkit_focus_;
-  // True if the containing view currently has focus.
-  // Initially set to true so that plugin focus still works in environments
-  // where SetContentAreaHasFocus is never called. See
-  // https://bugs.webkit.org/show_bug.cgi?id=46013 for details.
-  bool containing_view_has_focus_;
-
-  // True if NPP_New did not return an error.
-  bool creation_succeeded_;
-
-#if defined(OS_WIN)
-  // Runnable Method Factory used to invoke the OnUserGestureEnd method
-  // asynchronously.
-  base::WeakPtrFactory<WebPluginDelegateImpl> user_gesture_msg_factory_;
-#endif
-
-  DISALLOW_COPY_AND_ASSIGN(WebPluginDelegateImpl);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_WEBPLUGIN_DELEGATE_IMPL_H_
diff --git a/content/child/npapi/webplugin_delegate_impl_android.cc b/content/child/npapi/webplugin_delegate_impl_android.cc
deleted file mode 100644
index 7458f05..0000000
--- a/content/child/npapi/webplugin_delegate_impl_android.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-
-#include <string.h>
-
-#include "base/logging.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/common/cursors/webcursor.h"
-
-using blink::WebInputEvent;
-
-namespace content {
-
-WebPluginDelegateImpl::WebPluginDelegateImpl(
-    WebPlugin* plugin,
-    PluginInstance* instance)
-    : plugin_(plugin),
-      instance_(instance),
-      quirks_(0),
-      handle_event_depth_(0),
-      first_set_window_call_(true) {
-  memset(&window_, 0, sizeof(window_));
-}
-
-WebPluginDelegateImpl::~WebPluginDelegateImpl() {
-}
-
-bool WebPluginDelegateImpl::PlatformInitialize() {
-  return true;
-}
-
-void WebPluginDelegateImpl::PlatformDestroyInstance() {
-  // Nothing to do here.
-}
-
-void WebPluginDelegateImpl::Paint(SkCanvas* canvas, const gfx::Rect& rect) {
-}
-
-void WebPluginDelegateImpl::WindowlessUpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect) {
-}
-
-void WebPluginDelegateImpl::WindowlessPaint(gfx::NativeDrawingContext context,
-                                            const gfx::Rect& damage_rect) {
-}
-
-bool WebPluginDelegateImpl::PlatformSetPluginHasFocus(bool focused) {
-  return false;
-}
-
-bool WebPluginDelegateImpl::PlatformHandleInputEvent(
-    const WebInputEvent& event, WebCursor::CursorInfo* cursor_info) {
-  return false;
-}
-
-}  // content
diff --git a/content/child/npapi/webplugin_delegate_impl_aura.cc b/content/child/npapi/webplugin_delegate_impl_aura.cc
deleted file mode 100644
index db0a816a..0000000
--- a/content/child/npapi/webplugin_delegate_impl_aura.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-
-#include "content/child/npapi/plugin_instance.h"
-#include "content/common/cursors/webcursor.h"
-
-using blink::WebInputEvent;
-
-namespace content {
-
-WebPluginDelegateImpl::WebPluginDelegateImpl(WebPlugin* plugin,
-                                             PluginInstance* instance) {
-}
-
-WebPluginDelegateImpl::~WebPluginDelegateImpl() {
-}
-
-bool WebPluginDelegateImpl::PlatformInitialize() {
-  return true;
-}
-
-void WebPluginDelegateImpl::PlatformDestroyInstance() {
-  // Nothing to do here.
-}
-
-void WebPluginDelegateImpl::Paint(SkCanvas* canvas, const gfx::Rect& rect) {
-}
-
-void WebPluginDelegateImpl::WindowlessUpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect) {
-}
-
-void WebPluginDelegateImpl::WindowlessPaint(gfx::NativeDrawingContext context,
-                                            const gfx::Rect& damage_rect) {
-}
-
-bool WebPluginDelegateImpl::PlatformSetPluginHasFocus(bool focused) {
-  return true;
-}
-
-bool WebPluginDelegateImpl::PlatformHandleInputEvent(
-    const WebInputEvent& event, WebCursor::CursorInfo* cursor_info) {
-  return false;
-}
-
-}  // namespace content
diff --git a/content/child/npapi/webplugin_delegate_impl_mac.mm b/content/child/npapi/webplugin_delegate_impl_mac.mm
deleted file mode 100644
index d17a48e..0000000
--- a/content/child/npapi/webplugin_delegate_impl_mac.mm
+++ /dev/null
@@ -1,696 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-
-#import <Cocoa/Cocoa.h>
-#import <QuartzCore/QuartzCore.h>
-#include <stdint.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <set>
-#include <string>
-
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/child/npapi/plugin_web_event_converter_mac.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/child/npapi/webplugin_accelerated_surface_mac.h"
-#include "content/common/cursors/webcursor.h"
-#include "skia/ext/skia_utils_mac.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
-
-using blink::WebKeyboardEvent;
-using blink::WebInputEvent;
-using blink::WebMouseEvent;
-using blink::WebMouseWheelEvent;
-
-// Important implementation notes: The Mac definition of NPAPI, particularly
-// the distinction between windowed and windowless modes, differs from the
-// Windows and Linux definitions.  Most of those differences are
-// accomodated by the WebPluginDelegate class.
-
-namespace content {
-
-namespace {
-
-const int kCoreAnimationRedrawPeriodMs = 10;  // 100 Hz
-
-WebPluginDelegateImpl* g_active_delegate;
-
-// Helper to simplify correct usage of g_active_delegate.  Instantiating will
-// set the active delegate to |delegate| for the lifetime of the object, then
-// NULL when it goes out of scope.
-class ScopedActiveDelegate {
- public:
-  explicit ScopedActiveDelegate(WebPluginDelegateImpl* delegate) {
-    g_active_delegate = delegate;
-  }
-  ~ScopedActiveDelegate() {
-    g_active_delegate = NULL;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ScopedActiveDelegate);
-};
-
-}  // namespace
-
-// Helper to build and maintain a model of a drag entering the plugin but not
-// starting there. See explanation in PlatformHandleInputEvent.
-class ExternalDragTracker {
- public:
-  ExternalDragTracker() : pressed_buttons_(0) {}
-
-  // Returns true if an external drag is in progress.
-  bool IsDragInProgress() { return pressed_buttons_ != 0; };
-
-  // Returns true if the given event appears to be related to an external drag.
-  bool EventIsRelatedToDrag(const WebInputEvent& event);
-
-  // Updates the tracking of whether an external drag is in progress--and if
-  // so what buttons it involves--based on the given event.
-  void UpdateDragStateFromEvent(const WebInputEvent& event);
-
- private:
-  // Returns the mask for just the button state in a WebInputEvent's modifiers.
-  static int WebEventButtonModifierMask();
-
-  // The WebInputEvent modifier flags for any buttons that were down when an
-  // external drag entered the plugin, and which and are still down now.
-  int pressed_buttons_;
-
-  DISALLOW_COPY_AND_ASSIGN(ExternalDragTracker);
-};
-
-void ExternalDragTracker::UpdateDragStateFromEvent(const WebInputEvent& event) {
-  switch (event.type) {
-    case WebInputEvent::MouseEnter:
-      pressed_buttons_ = event.modifiers & WebEventButtonModifierMask();
-      break;
-    case WebInputEvent::MouseUp: {
-      const WebMouseEvent* mouse_event =
-          static_cast<const WebMouseEvent*>(&event);
-      if (mouse_event->button == WebMouseEvent::ButtonLeft)
-        pressed_buttons_ &= ~WebInputEvent::LeftButtonDown;
-      if (mouse_event->button == WebMouseEvent::ButtonMiddle)
-        pressed_buttons_ &= ~WebInputEvent::MiddleButtonDown;
-      if (mouse_event->button == WebMouseEvent::ButtonRight)
-        pressed_buttons_ &= ~WebInputEvent::RightButtonDown;
-      break;
-    }
-    default:
-      break;
-  }
-}
-
-bool ExternalDragTracker::EventIsRelatedToDrag(const WebInputEvent& event) {
-  const WebMouseEvent* mouse_event = static_cast<const WebMouseEvent*>(&event);
-  switch (event.type) {
-    case WebInputEvent::MouseUp:
-      // We only care about release of buttons that were part of the drag.
-      return ((mouse_event->button == WebMouseEvent::ButtonLeft &&
-               (pressed_buttons_ & WebInputEvent::LeftButtonDown)) ||
-              (mouse_event->button == WebMouseEvent::ButtonMiddle &&
-               (pressed_buttons_ & WebInputEvent::MiddleButtonDown)) ||
-              (mouse_event->button == WebMouseEvent::ButtonRight &&
-               (pressed_buttons_ & WebInputEvent::RightButtonDown)));
-    case WebInputEvent::MouseEnter:
-      return (event.modifiers & WebEventButtonModifierMask()) != 0;
-    case WebInputEvent::MouseLeave:
-    case WebInputEvent::MouseMove: {
-      int event_buttons = (event.modifiers & WebEventButtonModifierMask());
-      return (pressed_buttons_ &&
-              pressed_buttons_ == event_buttons);
-    }
-    default:
-      return false;
-  }
-  return false;
-}
-
-int ExternalDragTracker::WebEventButtonModifierMask() {
-  return WebInputEvent::LeftButtonDown |
-         WebInputEvent::RightButtonDown |
-         WebInputEvent::MiddleButtonDown;
-}
-
-#pragma mark -
-#pragma mark Core WebPluginDelegate implementation
-
-WebPluginDelegateImpl::WebPluginDelegateImpl(
-    WebPlugin* plugin,
-    PluginInstance* instance)
-    : plugin_(plugin),
-      instance_(instance),
-      quirks_(0),
-      use_buffer_context_(true),
-      buffer_context_(NULL),
-      layer_(nil),
-      surface_(NULL),
-      renderer_(nil),
-      containing_window_has_focus_(false),
-      initial_window_focus_(false),
-      container_is_visible_(false),
-      have_called_set_window_(false),
-      ime_enabled_(false),
-      keyup_ignore_count_(0),
-      external_drag_tracker_(new ExternalDragTracker()),
-      handle_event_depth_(0),
-      first_set_window_call_(true),
-      plugin_has_focus_(false),
-      has_webkit_focus_(false),
-      containing_view_has_focus_(true),
-      creation_succeeded_(false) {
-  memset(&window_, 0, sizeof(window_));
-}
-
-WebPluginDelegateImpl::~WebPluginDelegateImpl() {
-  DestroyInstance();
-}
-
-bool WebPluginDelegateImpl::PlatformInitialize() {
-  // Don't set a NULL window handle on destroy for Mac plugins.  This matches
-  // Safari and other Mac browsers (see PluginView::stop() in PluginView.cpp,
-  // where code to do so is surrounded by an #ifdef that excludes Mac OS X, or
-  // destroyPlugin in WebNetscapePluginView.mm, for examples).
-  quirks_ |= PLUGIN_QUIRK_DONT_SET_NULL_WINDOW_HANDLE_ON_DESTROY;
-
-  // Mac plugins don't expect to be unloaded, and they don't always do so
-  // cleanly, so don't unload them at shutdown.
-  instance()->plugin_lib()->PreventLibraryUnload();
-
-#ifndef NP_NO_CARBON
-  if (instance()->event_model() == NPEventModelCarbon)
-    return false;
-#endif
-
-  window_.type = NPWindowTypeDrawable;
-  NPDrawingModel drawing_model = instance()->drawing_model();
-  switch (drawing_model) {
-#ifndef NP_NO_QUICKDRAW
-    case NPDrawingModelQuickDraw:
-      return false;
-#endif
-    case NPDrawingModelCoreGraphics:
-      break;
-    case NPDrawingModelCoreAnimation:
-    case NPDrawingModelInvalidatingCoreAnimation: {
-      // Ask the plugin for the CALayer it created for rendering content.
-      // Create a surface to host it, and request a "window" handle to identify
-      // the surface.
-      CALayer* layer = nil;
-      NPError err = instance()->NPP_GetValue(NPPVpluginCoreAnimationLayer,
-                                             reinterpret_cast<void*>(&layer));
-      if (!err) {
-        if (drawing_model == NPDrawingModelCoreAnimation) {
-          // Create the timer; it will be started when we get a window handle.
-          redraw_timer_.reset(new base::RepeatingTimer);
-        }
-        layer_ = layer;
-
-        gfx::GpuPreference gpu_preference = gfx::PreferDiscreteGpu;
-        // On dual GPU systems, force the use of the discrete GPU for
-        // the CARenderer underlying our Core Animation backend for
-        // all plugins except Flash. For some reason Unity3D's output
-        // doesn't show up if the integrated GPU is used. Safari keeps
-        // even Flash 11 with Stage3D on the integrated GPU, so mirror
-        // that behavior here.
-        const WebPluginInfo& plugin_info =
-            instance_->plugin_lib()->plugin_info();
-        if (plugin_info.name.find(base::ASCIIToUTF16("Flash")) !=
-            base::string16::npos)
-          gpu_preference = gfx::PreferIntegratedGpu;
-        surface_ = plugin_->GetAcceleratedSurface(gpu_preference);
-
-        // If surface initialization fails for some reason, just continue
-        // without any drawing; returning false would be a more confusing user
-        // experience (since it triggers a missing plugin placeholder).
-        if (surface_ && surface_->context()) {
-          renderer_ = [[CARenderer rendererWithCGLContext:surface_->context()
-                                                  options:NULL] retain];
-          [renderer_ setLayer:layer_];
-          plugin_->AcceleratedPluginEnabledRendering();
-        }
-      }
-      break;
-    }
-    default:
-      NOTREACHED();
-      break;
-  }
-
-  return true;
-}
-
-void WebPluginDelegateImpl::PlatformDestroyInstance() {
-  if (redraw_timer_)
-    redraw_timer_->Stop();
-  [renderer_ release];
-  renderer_ = nil;
-  layer_ = nil;
-}
-
-void WebPluginDelegateImpl::UpdateGeometryAndContext(
-    const gfx::Rect& window_rect, const gfx::Rect& clip_rect,
-    CGContextRef context) {
-  buffer_context_ = context;
-  UpdateGeometry(window_rect, clip_rect);
-}
-
-void WebPluginDelegateImpl::Paint(SkCanvas* canvas, const gfx::Rect& rect) {
-  skia::SkiaBitLocker bit_locker(canvas);
-  CGContextRef context = bit_locker.cgContext();
-  CGPaint(context, rect);
-}
-
-void WebPluginDelegateImpl::CGPaint(CGContextRef context,
-                                    const gfx::Rect& rect) {
-  WindowlessPaint(context, rect);
-}
-
-bool WebPluginDelegateImpl::PlatformHandleInputEvent(
-    const WebInputEvent& event, WebCursor::CursorInfo* cursor_info) {
-  DCHECK(cursor_info != NULL);
-
-  // If an event comes in before the plugin has been set up, bail.
-  if (!have_called_set_window_)
-    return false;
-
-  // WebKit sometimes sends spurious mouse move events when the window doesn't
-  // have focus; Cocoa event model plugins don't expect to receive mouse move
-  // events when they are in a background window, so drop those events.
-  if (!containing_window_has_focus_ &&
-      (event.type == WebInputEvent::MouseMove ||
-       event.type == WebInputEvent::MouseEnter ||
-       event.type == WebInputEvent::MouseLeave)) {
-    return false;
-  }
-
-  if (WebInputEvent::isMouseEventType(event.type) ||
-      event.type == WebInputEvent::MouseWheel) {
-    // Check our plugin location before we send the event to the plugin, just
-    // in case we somehow missed a plugin frame change.
-    const WebMouseEvent* mouse_event =
-        static_cast<const WebMouseEvent*>(&event);
-    gfx::Point content_origin(
-        mouse_event->globalX - mouse_event->x - window_rect_.x(),
-        mouse_event->globalY - mouse_event->y - window_rect_.y());
-    if (content_origin.x() != content_area_origin_.x() ||
-        content_origin.y() != content_area_origin_.y()) {
-      DLOG(WARNING) << "Stale plugin content area location: "
-                    << content_area_origin_.ToString() << " instead of "
-                    << content_origin.ToString();
-      SetContentAreaOrigin(content_origin);
-    }
-
-    current_windowless_cursor_.GetCursorInfo(cursor_info);
-  }
-
-  // Per the Cocoa Plugin IME spec, plugins shoudn't receive keydown or keyup
-  // events while composition is in progress. Treat them as handled, however,
-  // since IME is consuming them on behalf of the plugin.
-  if ((event.type == WebInputEvent::KeyDown && ime_enabled_) ||
-      (event.type == WebInputEvent::KeyUp && keyup_ignore_count_)) {
-    // Composition ends on a keydown, so ime_enabled_ will be false at keyup;
-    // because the keydown wasn't sent to the plugin, the keyup shouldn't be
-    // either (per the spec).
-    if (event.type == WebInputEvent::KeyDown)
-      ++keyup_ignore_count_;
-    else
-      --keyup_ignore_count_;
-    return true;
-  }
-
-  ScopedActiveDelegate active_delegate(this);
-
-  // Create the plugin event structure.
-  scoped_ptr<PluginWebEventConverter> event_converter(
-      new PluginWebEventConverter);
-  if (!event_converter->InitWithEvent(event)) {
-    // Silently consume any keyboard event types that aren't handled, so that
-    // they don't fall through to the page.
-    if (WebInputEvent::isKeyboardEventType(event.type))
-      return true;
-    return false;
-  }
-  NPCocoaEvent* plugin_event = event_converter->plugin_event();
-
-  // The plugin host receives events related to drags starting outside the
-  // plugin, but the NPAPI Cocoa event model spec says plugins shouldn't receive
-  // them, so filter them out.
-  // If WebKit adds a page capture mode (like the plugin capture mode that
-  // handles drags starting inside) this can be removed.
-  bool drag_related = external_drag_tracker_->EventIsRelatedToDrag(event);
-  external_drag_tracker_->UpdateDragStateFromEvent(event);
-  if (drag_related) {
-    if (event.type == WebInputEvent::MouseUp &&
-        !external_drag_tracker_->IsDragInProgress()) {
-      // When an external drag ends, we need to synthesize a MouseEntered.
-      NPCocoaEvent enter_event = *plugin_event;
-      enter_event.type = NPCocoaEventMouseEntered;
-      ScopedCurrentPluginEvent event_scope(instance(), &enter_event);
-      instance()->NPP_HandleEvent(&enter_event);
-    }
-    return false;
-  }
-
-  // Send the plugin the event.
-  scoped_ptr<ScopedCurrentPluginEvent> event_scope(
-      new ScopedCurrentPluginEvent(instance(), plugin_event));
-  int16_t handle_response = instance()->NPP_HandleEvent(plugin_event);
-  bool handled = handle_response != kNPEventNotHandled;
-
-  // Start IME if requested by the plugin.
-  if (handled && handle_response == kNPEventStartIME &&
-      event.type == WebInputEvent::KeyDown) {
-    StartIme();
-    ++keyup_ignore_count_;
-  }
-
-  // Plugins don't give accurate information about whether or not they handled
-  // events, so browsers on the Mac ignore the return value.
-  // Scroll events are the exception, since the Cocoa spec defines a meaning
-  // for the return value.
-  if (WebInputEvent::isMouseEventType(event.type)) {
-    handled = true;
-  } else if (WebInputEvent::isKeyboardEventType(event.type)) {
-    // For Command-key events, trust the return value since eating all menu
-    // shortcuts is not ideal.
-    // TODO(stuartmorgan): Implement the advanced key handling spec, and trust
-    // trust the key event return value from plugins that implement it.
-    if (!(event.modifiers & WebInputEvent::MetaKey))
-      handled = true;
-  }
-
-  return handled;
-}
-
-#pragma mark -
-
-void WebPluginDelegateImpl::WindowlessUpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect) {
-  gfx::Rect old_clip_rect = clip_rect_;
-  cached_clip_rect_ = clip_rect;
-  if (container_is_visible_)  // Remove check when cached_clip_rect_ is removed.
-    clip_rect_ = clip_rect;
-  bool clip_rect_changed = (clip_rect_ != old_clip_rect);
-  bool window_size_changed = (window_rect.size() != window_rect_.size());
-
-  if (window_rect == window_rect_ && !clip_rect_changed)
-    return;
-
-  if (old_clip_rect.IsEmpty() != clip_rect_.IsEmpty()) {
-    PluginVisibilityChanged();
-  }
-
-  SetPluginRect(window_rect);
-
-  if (window_size_changed || clip_rect_changed)
-    WindowlessSetWindow();
-}
-
-void WebPluginDelegateImpl::WindowlessPaint(gfx::NativeDrawingContext context,
-                                            const gfx::Rect& damage_rect) {
-  // If we get a paint event before we are completely set up (e.g., a nested
-  // call while the plugin is still in NPP_SetWindow), bail.
-  if (!have_called_set_window_ || (use_buffer_context_ && !buffer_context_))
-    return;
-  DCHECK(!use_buffer_context_ || buffer_context_ == context);
-
-  gfx::Rect paint_rect = damage_rect;
-  if (use_buffer_context_) {
-    // Plugin invalidates trigger asynchronous paints with the original
-    // invalidation rect; the plugin may be resized before the paint is handled,
-    // so we need to ensure that the damage rect is still sane.
-    paint_rect.Intersect(
-        gfx::Rect(0, 0, window_rect_.width(), window_rect_.height()));
-  } else {
-    // Use the actual window region when drawing directly to the window context.
-    paint_rect.Intersect(window_rect_);
-  }
-
-  ScopedActiveDelegate active_delegate(this);
-
-  CGContextSaveGState(context);
-
-  if (!use_buffer_context_) {
-    // Reposition the context origin so that plugins will draw at the correct
-    // location in the window.
-    CGContextClipToRect(context, paint_rect.ToCGRect());
-    CGContextTranslateCTM(context, window_rect_.x(), window_rect_.y());
-  }
-
-  NPCocoaEvent paint_event;
-  memset(&paint_event, 0, sizeof(NPCocoaEvent));
-  paint_event.type = NPCocoaEventDrawRect;
-  paint_event.data.draw.context = context;
-  paint_event.data.draw.x = paint_rect.x();
-  paint_event.data.draw.y = paint_rect.y();
-  paint_event.data.draw.width = paint_rect.width();
-  paint_event.data.draw.height = paint_rect.height();
-  instance()->NPP_HandleEvent(&paint_event);
-
-  if (use_buffer_context_) {
-    // The backing buffer can change during the call to NPP_HandleEvent, in
-    // which case the old context is (or is about to be) invalid.
-    if (context == buffer_context_)
-      CGContextRestoreGState(context);
-  } else {
-    // Always restore the context to the saved state.
-    CGContextRestoreGState(context);
-  }
-}
-
-void WebPluginDelegateImpl::WindowlessSetWindow() {
-  if (!instance())
-    return;
-
-  window_.x = 0;
-  window_.y = 0;
-  window_.height = window_rect_.height();
-  window_.width = window_rect_.width();
-  window_.clipRect.left = clip_rect_.x();
-  window_.clipRect.top = clip_rect_.y();
-  window_.clipRect.right = clip_rect_.x() + clip_rect_.width();
-  window_.clipRect.bottom = clip_rect_.y() + clip_rect_.height();
-
-  NPError err = instance()->NPP_SetWindow(&window_);
-
-  // Send an appropriate window focus event after the first SetWindow.
-  if (!have_called_set_window_) {
-    have_called_set_window_ = true;
-    SetWindowHasFocus(initial_window_focus_);
-  }
-
-  DCHECK(err == NPERR_NO_ERROR);
-}
-
-#pragma mark -
-
-#pragma mark -
-#pragma mark Mac Extensions
-
-void WebPluginDelegateImpl::PluginDidInvalidate() {
-  if (instance()->drawing_model() == NPDrawingModelInvalidatingCoreAnimation)
-    DrawLayerInSurface();
-}
-
-WebPluginDelegateImpl* WebPluginDelegateImpl::GetActiveDelegate() {
-  return g_active_delegate;
-}
-
-void WebPluginDelegateImpl::SetWindowHasFocus(bool has_focus) {
-  // If we get a window focus event before calling SetWindow, just remember the
-  // states (WindowlessSetWindow will then send it on the first call).
-  if (!have_called_set_window_) {
-    initial_window_focus_ = has_focus;
-    return;
-  }
-
-  if (has_focus == containing_window_has_focus_)
-    return;
-  containing_window_has_focus_ = has_focus;
-
-  ScopedActiveDelegate active_delegate(this);
-  NPCocoaEvent focus_event;
-  memset(&focus_event, 0, sizeof(focus_event));
-  focus_event.type = NPCocoaEventWindowFocusChanged;
-  focus_event.data.focus.hasFocus = has_focus;
-  instance()->NPP_HandleEvent(&focus_event);
-}
-
-bool WebPluginDelegateImpl::PlatformSetPluginHasFocus(bool focused) {
-  if (!have_called_set_window_)
-    return false;
-
-  plugin_->FocusChanged(focused);
-
-  ScopedActiveDelegate active_delegate(this);
-
-  NPCocoaEvent focus_event;
-  memset(&focus_event, 0, sizeof(focus_event));
-  focus_event.type = NPCocoaEventFocusChanged;
-  focus_event.data.focus.hasFocus = focused;
-  instance()->NPP_HandleEvent(&focus_event);
-
-  return true;
-}
-
-void WebPluginDelegateImpl::SetContainerVisibility(bool is_visible) {
-  if (is_visible == container_is_visible_)
-    return;
-  container_is_visible_ = is_visible;
-
-  // TODO(stuartmorgan): This is a temporary workarond for
-  // <http://crbug.com/34266>. When that is fixed, the cached_clip_rect_ code
-  // should all be removed.
-  if (is_visible) {
-    clip_rect_ = cached_clip_rect_;
-  } else {
-    clip_rect_.set_width(0);
-    clip_rect_.set_height(0);
-  }
-
-  // If the plugin is changing visibility, let the plugin know. If it's scrolled
-  // off screen (i.e., cached_clip_rect_ is empty), then container visibility
-  // doesn't change anything.
-  if (!cached_clip_rect_.IsEmpty()) {
-    PluginVisibilityChanged();
-    WindowlessSetWindow();
-  }
-
-  // When the plugin become visible, send an empty invalidate. If there were any
-  // pending invalidations this will trigger a paint event for the damaged
-  // region, and if not it's a no-op. This is necessary since higher levels
-  // that would normally do this weren't responsible for the clip_rect_ change).
-  if (!clip_rect_.IsEmpty())
-    instance()->webplugin()->InvalidateRect(gfx::Rect());
-}
-
-void WebPluginDelegateImpl::WindowFrameChanged(const gfx::Rect& window_frame,
-                                               const gfx::Rect& view_frame) {
-  instance()->set_window_frame(window_frame);
-  SetContentAreaOrigin(gfx::Point(view_frame.x(), view_frame.y()));
-}
-
-void WebPluginDelegateImpl::ImeCompositionCompleted(
-    const base::string16& text) {
-  ime_enabled_ = false;
-
-  // If |text| is empty this was just called to tell us composition was
-  // cancelled externally (e.g., the user pressed esc).
-  if (!text.empty()) {
-    NPCocoaEvent text_event;
-    memset(&text_event, 0, sizeof(NPCocoaEvent));
-    text_event.type = NPCocoaEventTextInput;
-    text_event.data.text.text =
-        reinterpret_cast<NPNSString*>(base::SysUTF16ToNSString(text));
-    instance()->NPP_HandleEvent(&text_event);
-  }
-}
-
-void WebPluginDelegateImpl::SetNSCursor(NSCursor* cursor) {
-  current_windowless_cursor_.InitFromNSCursor(cursor);
-}
-
-void WebPluginDelegateImpl::SetNoBufferContext() {
-  use_buffer_context_ = false;
-}
-
-#pragma mark -
-#pragma mark Internal Tracking
-
-void WebPluginDelegateImpl::SetPluginRect(const gfx::Rect& rect) {
-  bool plugin_size_changed = rect.width() != window_rect_.width() ||
-                             rect.height() != window_rect_.height();
-  window_rect_ = rect;
-  PluginScreenLocationChanged();
-  if (plugin_size_changed)
-    UpdateAcceleratedSurface();
-}
-
-void WebPluginDelegateImpl::SetContentAreaOrigin(const gfx::Point& origin) {
-  content_area_origin_ = origin;
-  PluginScreenLocationChanged();
-}
-
-void WebPluginDelegateImpl::PluginScreenLocationChanged() {
-  gfx::Point plugin_origin(content_area_origin_.x() + window_rect_.x(),
-                           content_area_origin_.y() + window_rect_.y());
-  instance()->set_plugin_origin(plugin_origin);
-}
-
-void WebPluginDelegateImpl::PluginVisibilityChanged() {
-  if (instance()->drawing_model() == NPDrawingModelCoreAnimation) {
-    bool plugin_visible = container_is_visible_ && !clip_rect_.IsEmpty();
-    if (plugin_visible && !redraw_timer_->IsRunning()) {
-      redraw_timer_->Start(FROM_HERE,
-          base::TimeDelta::FromMilliseconds(kCoreAnimationRedrawPeriodMs),
-          this, &WebPluginDelegateImpl::DrawLayerInSurface);
-    } else if (!plugin_visible) {
-      redraw_timer_->Stop();
-    }
-  }
-}
-
-void WebPluginDelegateImpl::StartIme() {
-  if (ime_enabled_)
-    return;
-  ime_enabled_ = true;
-  plugin_->StartIme();
-}
-
-#pragma mark -
-#pragma mark Core Animation Support
-
-void WebPluginDelegateImpl::DrawLayerInSurface() {
-  // If we haven't plumbed up the surface yet, don't try to draw.
-  if (!renderer_)
-    return;
-
-  [renderer_ beginFrameAtTime:CACurrentMediaTime() timeStamp:NULL];
-  if (CGRectIsEmpty([renderer_ updateBounds])) {
-    // If nothing has changed, we are done.
-    [renderer_ endFrame];
-    return;
-  }
-
-  surface_->StartDrawing();
-
-  CGRect layerRect = [layer_ bounds];
-  [renderer_ addUpdateRect:layerRect];
-  [renderer_ render];
-  [renderer_ endFrame];
-
-  surface_->EndDrawing();
-}
-
-// Update the size of the surface to match the current size of the plugin.
-void WebPluginDelegateImpl::UpdateAcceleratedSurface() {
-  if (!surface_ || !layer_)
-    return;
-
-  [CATransaction begin];
-  [CATransaction setValue:[NSNumber numberWithInt:0]
-                   forKey:kCATransactionAnimationDuration];
-  [layer_ setFrame:CGRectMake(0, 0,
-                              window_rect_.width(), window_rect_.height())];
-  [CATransaction commit];
-
-  [renderer_ setBounds:[layer_ bounds]];
-  surface_->SetSize(window_rect_.size());
-  // Kick off the drawing timer, if necessary.
-  PluginVisibilityChanged();
-}
-
-}  // namespace content
diff --git a/content/child/npapi/webplugin_delegate_impl_win.cc b/content/child/npapi/webplugin_delegate_impl_win.cc
deleted file mode 100644
index 70657052..0000000
--- a/content/child/npapi/webplugin_delegate_impl_win.cc
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-
-#include <stdint.h>
-#include <string.h>
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/compiler_specific.h"
-#include "base/lazy_instance.h"
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/synchronization/lock.h"
-#include "base/version.h"
-#include "base/win/windows_version.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/common/cursors/webcursor.h"
-#include "content/common/plugin_constants_win.h"
-#include "content/public/common/content_constants.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-#include "ui/gfx/win/dpi.h"
-#include "ui/gfx/win/hwnd_util.h"
-
-using blink::WebKeyboardEvent;
-using blink::WebInputEvent;
-using blink::WebMouseEvent;
-
-namespace content {
-
-namespace {
-
-// http://crbug.com/16114
-// Enforces providing a valid device context in NPWindow, so that NPP_SetWindow
-// is never called with NPNWindoTypeDrawable and NPWindow set to NULL.
-// Doing so allows removing NPP_SetWindow call during painting a windowless
-// plugin, which otherwise could trigger layout change while painting by
-// invoking NPN_Evaluate. Which would cause bad, bad crashes. Bad crashes.
-// TODO(dglazkov): If this approach doesn't produce regressions, move class to
-// webplugin_delegate_impl.h and implement for other platforms.
-class DrawableContextEnforcer {
- public:
-  explicit DrawableContextEnforcer(NPWindow* window)
-      : window_(window),
-        disposable_dc_(window && !window->window) {
-    // If NPWindow is NULL, create a device context with monochrome 1x1 surface
-    // and stuff it to NPWindow.
-    if (disposable_dc_)
-      window_->window = CreateCompatibleDC(NULL);
-  }
-
-  ~DrawableContextEnforcer() {
-    if (!disposable_dc_)
-      return;
-
-    DeleteDC(static_cast<HDC>(window_->window));
-    window_->window = NULL;
-  }
-
- private:
-  NPWindow* window_;
-  bool disposable_dc_;
-};
-
-}  // namespace
-
-WebPluginDelegateImpl::WebPluginDelegateImpl(WebPlugin* plugin,
-                                             PluginInstance* instance)
-    : plugin_(plugin),
-      instance_(instance),
-      quirks_(0),
-      handle_event_depth_(0),
-      first_set_window_call_(true),
-      plugin_has_focus_(false),
-      has_webkit_focus_(false),
-      containing_view_has_focus_(true),
-      creation_succeeded_(false),
-      user_gesture_msg_factory_(this) {
-  memset(&window_, 0, sizeof(window_));
-}
-
-WebPluginDelegateImpl::~WebPluginDelegateImpl() {
-  DestroyInstance();
-}
-
-bool WebPluginDelegateImpl::PlatformInitialize() {
-  return true;
-}
-
-void WebPluginDelegateImpl::PlatformDestroyInstance() {
-}
-
-void WebPluginDelegateImpl::Paint(SkCanvas* canvas, const gfx::Rect& rect) {
-  if (skia::SupportsPlatformPaint(canvas)) {
-    skia::ScopedPlatformPaint scoped_platform_paint(canvas);
-    HDC hdc = scoped_platform_paint.GetPlatformSurface();
-    WindowlessPaint(hdc, rect);
-  }
-}
-
-// Returns true if the message passed in corresponds to a user gesture.
-static bool IsUserGestureMessage(unsigned int message) {
-  switch (message) {
-    case WM_LBUTTONDOWN:
-    case WM_LBUTTONUP:
-    case WM_RBUTTONDOWN:
-    case WM_RBUTTONUP:
-    case WM_MBUTTONDOWN:
-    case WM_MBUTTONUP:
-    case WM_KEYDOWN:
-    case WM_KEYUP:
-      return true;
-
-    default:
-      break;
-  }
-
-  return false;
-}
-
-void WebPluginDelegateImpl::WindowlessUpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect) {
-  bool window_rect_changed = (window_rect_ != window_rect);
-  // Only resend to the instance if the geometry has changed.
-  if (!window_rect_changed && clip_rect == clip_rect_)
-    return;
-
-  clip_rect_ = clip_rect;
-  window_rect_ = window_rect;
-
-  WindowlessSetWindow();
-
-  if (window_rect_changed) {
-    WINDOWPOS win_pos = {0};
-    win_pos.x = window_rect_.x();
-    win_pos.y = window_rect_.y();
-    win_pos.cx = window_rect_.width();
-    win_pos.cy = window_rect_.height();
-
-    NPEvent pos_changed_event;
-    pos_changed_event.event = WM_WINDOWPOSCHANGED;
-    pos_changed_event.wParam = 0;
-    pos_changed_event.lParam = reinterpret_cast<uintptr_t>(&win_pos);
-
-    instance()->NPP_HandleEvent(&pos_changed_event);
-  }
-}
-
-void WebPluginDelegateImpl::WindowlessPaint(HDC hdc,
-                                            const gfx::Rect& damage_rect) {
-  DCHECK(hdc);
-
-  RECT damage_rect_win;
-  damage_rect_win.left   = damage_rect.x();  // + window_rect_.x();
-  damage_rect_win.top    = damage_rect.y();  // + window_rect_.y();
-  damage_rect_win.right  = damage_rect_win.left + damage_rect.width();
-  damage_rect_win.bottom = damage_rect_win.top + damage_rect.height();
-
-  // Save away the old HDC as this could be a nested invocation.
-  void* old_dc = window_.window;
-  window_.window = hdc;
-
-  NPEvent paint_event;
-  paint_event.event = WM_PAINT;
-  paint_event.wParam = PtrToUlong(hdc);
-  paint_event.lParam = reinterpret_cast<uintptr_t>(&damage_rect_win);
-  instance()->NPP_HandleEvent(&paint_event);
-  window_.window = old_dc;
-}
-
-void WebPluginDelegateImpl::WindowlessSetWindow() {
-  if (!instance())
-    return;
-
-  if (window_rect_.IsEmpty())  // wait for geometry to be set.
-    return;
-
-  window_.clipRect.top = clip_rect_.y();
-  window_.clipRect.left = clip_rect_.x();
-  window_.clipRect.bottom = clip_rect_.y() + clip_rect_.height();
-  window_.clipRect.right = clip_rect_.x() + clip_rect_.width();
-  window_.height = window_rect_.height();
-  window_.width = window_rect_.width();
-  window_.x = window_rect_.x();
-  window_.y = window_rect_.y();
-  window_.type = NPWindowTypeDrawable;
-  DrawableContextEnforcer enforcer(&window_);
-
-  NPError err = instance()->NPP_SetWindow(&window_);
-  DCHECK(err == NPERR_NO_ERROR);
-}
-
-bool WebPluginDelegateImpl::PlatformSetPluginHasFocus(bool focused) {
-  NPEvent focus_event;
-  focus_event.event = focused ? WM_SETFOCUS : WM_KILLFOCUS;
-  focus_event.wParam = 0;
-  focus_event.lParam = 0;
-
-  instance()->NPP_HandleEvent(&focus_event);
-  return true;
-}
-
-static bool NPEventFromWebMouseEvent(const WebMouseEvent& event,
-                                     NPEvent* np_event) {
-  np_event->lParam =
-      static_cast<uint32_t>(MAKELPARAM(event.windowX, event.windowY));
-  np_event->wParam = 0;
-
-  if (event.modifiers & WebInputEvent::ControlKey)
-    np_event->wParam |= MK_CONTROL;
-  if (event.modifiers & WebInputEvent::ShiftKey)
-    np_event->wParam |= MK_SHIFT;
-  if (event.modifiers & WebInputEvent::LeftButtonDown)
-    np_event->wParam |= MK_LBUTTON;
-  if (event.modifiers & WebInputEvent::MiddleButtonDown)
-    np_event->wParam |= MK_MBUTTON;
-  if (event.modifiers & WebInputEvent::RightButtonDown)
-    np_event->wParam |= MK_RBUTTON;
-
-  switch (event.type) {
-    case WebInputEvent::MouseMove:
-    case WebInputEvent::MouseLeave:
-    case WebInputEvent::MouseEnter:
-      np_event->event = WM_MOUSEMOVE;
-      return true;
-    case WebInputEvent::MouseDown:
-      switch (event.button) {
-        case WebMouseEvent::ButtonLeft:
-          np_event->event = WM_LBUTTONDOWN;
-          break;
-        case WebMouseEvent::ButtonMiddle:
-          np_event->event = WM_MBUTTONDOWN;
-          break;
-        case WebMouseEvent::ButtonRight:
-          np_event->event = WM_RBUTTONDOWN;
-          break;
-        case WebMouseEvent::ButtonNone:
-          break;
-      }
-      return true;
-    case WebInputEvent::MouseUp:
-      switch (event.button) {
-        case WebMouseEvent::ButtonLeft:
-          np_event->event = WM_LBUTTONUP;
-          break;
-        case WebMouseEvent::ButtonMiddle:
-          np_event->event = WM_MBUTTONUP;
-          break;
-        case WebMouseEvent::ButtonRight:
-          np_event->event = WM_RBUTTONUP;
-          break;
-        case WebMouseEvent::ButtonNone:
-          break;
-      }
-      return true;
-    default:
-      NOTREACHED();
-      return false;
-  }
-}
-
-static bool NPEventFromWebKeyboardEvent(const WebKeyboardEvent& event,
-                                        NPEvent* np_event) {
-  np_event->wParam = event.windowsKeyCode;
-
-  switch (event.type) {
-    case WebInputEvent::KeyDown:
-      np_event->event = WM_KEYDOWN;
-      np_event->lParam = 0;
-      return true;
-    case WebInputEvent::Char:
-      np_event->event = WM_CHAR;
-      np_event->lParam = 0;
-      return true;
-    case WebInputEvent::KeyUp:
-      np_event->event = WM_KEYUP;
-      np_event->lParam = 0x8000;
-      return true;
-    default:
-      NOTREACHED();
-      return false;
-  }
-}
-
-static bool NPEventFromWebInputEvent(const WebInputEvent& event,
-                                     NPEvent* np_event) {
-  switch (event.type) {
-    case WebInputEvent::MouseMove:
-    case WebInputEvent::MouseLeave:
-    case WebInputEvent::MouseEnter:
-    case WebInputEvent::MouseDown:
-    case WebInputEvent::MouseUp:
-      if (event.size < sizeof(WebMouseEvent)) {
-        NOTREACHED();
-        return false;
-      }
-      return NPEventFromWebMouseEvent(
-          *static_cast<const WebMouseEvent*>(&event), np_event);
-    case WebInputEvent::KeyDown:
-    case WebInputEvent::Char:
-    case WebInputEvent::KeyUp:
-      if (event.size < sizeof(WebKeyboardEvent)) {
-        NOTREACHED();
-        return false;
-      }
-      return NPEventFromWebKeyboardEvent(
-          *static_cast<const WebKeyboardEvent*>(&event), np_event);
-    default:
-      return false;
-  }
-}
-
-bool WebPluginDelegateImpl::PlatformHandleInputEvent(
-    const WebInputEvent& event, WebCursor::CursorInfo* cursor_info) {
-  DCHECK(cursor_info != NULL);
-
-  NPEvent np_event;
-  if (!NPEventFromWebInputEvent(event, &np_event)) {
-    return false;
-  }
-
-  handle_event_depth_++;
-
-  bool popups_enabled = false;
-
-  if (IsUserGestureMessage(np_event.event)) {
-    instance()->PushPopupsEnabledState(true);
-    popups_enabled = true;
-  }
-
-  bool ret = instance()->NPP_HandleEvent(&np_event) != 0;
-
-  if (popups_enabled) {
-    instance()->PopPopupsEnabledState();
-  }
-
-  // Flash and SilverLight always return false, even when they swallow the
-  // event.  Flash does this because it passes the event to its window proc,
-  // which is supposed to return 0 if an event was handled.  There are few
-  // exceptions, such as IME, where it sometimes returns true.
-  ret = true;
-
-  if (np_event.event == WM_MOUSEMOVE) {
-    current_windowless_cursor_.InitFromExternalCursor(GetCursor());
-    // Snag a reference to the current cursor ASAP in case the plugin modified
-    // it. There is a nasty race condition here with the multiprocess browser
-    // as someone might be setting the cursor in the main process as well.
-    current_windowless_cursor_.GetCursorInfo(cursor_info);
-  }
-
-  handle_event_depth_--;
-
-  return ret;
-}
-
-}  // namespace content
diff --git a/content/child/npapi/webplugin_resource_client.h b/content/child/npapi/webplugin_resource_client.h
deleted file mode 100644
index ee2e456..0000000
--- a/content/child/npapi/webplugin_resource_client.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_CHILD_NPAPI_WEBPLUGIN_RESOURCE_CLIENT_H_
-#define CONTENT_CHILD_NPAPI_WEBPLUGIN_RESOURCE_CLIENT_H_
-
-#include <stdint.h>
-
-#include <string>
-
-
-class GURL;
-
-namespace content {
-
-// Simpler version of ResourceHandleClient that lends itself to proxying.
-class WebPluginResourceClient {
- public:
-  virtual ~WebPluginResourceClient() {}
-
-  virtual void WillSendRequest(const GURL& url, int http_status_code) = 0;
-  // The request_is_seekable parameter indicates whether byte range requests
-  // can be issued for the underlying stream.
-  virtual void DidReceiveResponse(const std::string& mime_type,
-                                  const std::string& headers,
-                                  uint32_t expected_length,
-                                  uint32_t last_modified,
-                                  bool request_is_seekable) = 0;
-  virtual void DidReceiveData(const char* buffer, int length,
-                              int data_offset) = 0;
-  // The resource ids passed here ensures that data for range requests
-  // is cleared. This applies for seekable streams.
-  virtual void DidFinishLoading(unsigned long resource_id) = 0;
-  virtual void DidFail(unsigned long resource_id) = 0;
-  virtual int ResourceId() = 0;
-  // Tells this object that it will get responses from multiple resources.
-  // This is necessary since the plugin process uses a single instance of
-  // PluginStreamUrl object for multiple range requests.
-  virtual void AddRangeRequestResourceId(unsigned long resource_id) { }
-};
-
-}  // namespace content
-
-#endif  // CONTENT_CHILD_NPAPI_WEBPLUGIN_RESOURCE_CLIENT_H_
diff --git a/content/child/plugin_message_generator.cc b/content/child/plugin_message_generator.cc
deleted file mode 100644
index d490345..0000000
--- a/content/child/plugin_message_generator.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Get basic type definitions.
-#define IPC_MESSAGE_IMPL
-#include "content/child/plugin_message_generator.h"
-
-// Generate constructors.
-#include "ipc/struct_constructor_macros.h"
-#include "content/child/plugin_message_generator.h"
-
-// Generate destructors.
-#include "ipc/struct_destructor_macros.h"
-#include "content/child/plugin_message_generator.h"
-
-// Generate param traits write methods.
-#include "ipc/param_traits_write_macros.h"
-namespace IPC {
-#include "content/child/plugin_message_generator.h"
-}  // namespace IPC
-
-// Generate param traits read methods.
-#include "ipc/param_traits_read_macros.h"
-namespace IPC {
-#include "content/child/plugin_message_generator.h"
-}  // namespace IPC
-
-// Generate param traits log methods.
-#include "ipc/param_traits_log_macros.h"
-namespace IPC {
-#include "content/child/plugin_message_generator.h"
-}  // namespace IPC
diff --git a/content/child/plugin_message_generator.h b/content/child/plugin_message_generator.h
deleted file mode 100644
index 9eddea22..0000000
--- a/content/child/plugin_message_generator.h
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Multiply-included file, hence no include guard.
-
-#include "content/child/plugin_messages.h"
diff --git a/content/child/plugin_messages.h b/content/child/plugin_messages.h
deleted file mode 100644
index c759722..0000000
--- a/content/child/plugin_messages.h
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// Multiply-included message file, hence no include guard.
-
-#include <stdint.h>
-
-#include "build/build_config.h"
-#include "content/common/content_export.h"
-#include "content/common/content_param_traits.h"
-#include "content/common/cursors/webcursor.h"
-#include "ipc/ipc_channel_handle.h"
-#include "ipc/ipc_message_macros.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/ipc/gfx_param_traits.h"
-#include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/surface/transport_dib.h"
-#include "url/ipc/url_param_traits.h"
-
-#if defined(OS_POSIX)
-#include "base/file_descriptor_posix.h"
-#endif
-
-#undef IPC_MESSAGE_EXPORT
-#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
-
-#define IPC_MESSAGE_START PluginMsgStart
-
-IPC_STRUCT_BEGIN(PluginMsg_Init_Params)
-  IPC_STRUCT_MEMBER(GURL,  url)
-  IPC_STRUCT_MEMBER(GURL,  page_url)
-  IPC_STRUCT_MEMBER(std::vector<std::string>, arg_names)
-  IPC_STRUCT_MEMBER(std::vector<std::string>, arg_values)
-  IPC_STRUCT_MEMBER(bool, load_manually)
-  IPC_STRUCT_MEMBER(int, host_render_view_routing_id)
-IPC_STRUCT_END()
-
-IPC_STRUCT_BEGIN(PluginMsg_UpdateGeometry_Param)
-  IPC_STRUCT_MEMBER(gfx::Rect, window_rect)
-  IPC_STRUCT_MEMBER(gfx::Rect, clip_rect)
-  IPC_STRUCT_MEMBER(TransportDIB::Handle, windowless_buffer0)
-  IPC_STRUCT_MEMBER(TransportDIB::Handle, windowless_buffer1)
-  IPC_STRUCT_MEMBER(int, windowless_buffer_index)
-IPC_STRUCT_END()
-
-//-----------------------------------------------------------------------------
-// Plugin messages
-// These are messages sent from the renderer process to the plugin process.
-// Tells the plugin process to create a new plugin instance with the given
-// id.  A corresponding WebPluginDelegateStub is created which hosts the
-// WebPluginDelegateImpl.
-IPC_SYNC_MESSAGE_CONTROL1_1(PluginMsg_CreateInstance,
-                            std::string /* mime_type */,
-                            int /* instance_id */)
-
-// The WebPluginDelegateProxy sends this to the WebPluginDelegateStub in its
-// destructor, so that the stub deletes the actual WebPluginDelegateImpl
-// object that it's hosting.
-IPC_SYNC_MESSAGE_CONTROL1_0(PluginMsg_DestroyInstance,
-                            int /* instance_id */)
-
-IPC_SYNC_MESSAGE_CONTROL0_1(PluginMsg_GenerateRouteID,
-                           int /* id */)
-
-// The messages below all map to WebPluginDelegate methods.
-IPC_SYNC_MESSAGE_ROUTED1_2(PluginMsg_Init,
-                           PluginMsg_Init_Params,
-                           bool /* transparent */,
-                           bool /* result */)
-
-// Used to synchronously request a paint for windowless plugins.
-IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_Paint,
-                           gfx::Rect /* damaged_rect */)
-
-// Sent by the renderer after it paints from its backing store so that the
-// plugin knows it can send more invalidates.
-IPC_MESSAGE_ROUTED0(PluginMsg_DidPaint)
-
-// Updates the plugin location.
-IPC_MESSAGE_ROUTED1(PluginMsg_UpdateGeometry,
-                    PluginMsg_UpdateGeometry_Param)
-
-// A synchronous version of above.
-IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_UpdateGeometrySync,
-                           PluginMsg_UpdateGeometry_Param)
-
-IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_SetFocus,
-                           bool /* focused */)
-
-IPC_SYNC_MESSAGE_ROUTED1_2(PluginMsg_HandleInputEvent,
-                           IPC::WebInputEventPointer /* event */,
-                           bool /* handled */,
-                           content::WebCursor /* cursor type*/)
-
-IPC_MESSAGE_ROUTED1(PluginMsg_SetContentAreaFocus,
-                    bool /* has_focus */)
-
-IPC_MESSAGE_CONTROL1(PluginMsg_SignalModalDialogEvent,
-                     int /* render_view_id */)
-
-IPC_MESSAGE_CONTROL1(PluginMsg_ResetModalDialogEvent,
-                     int /* render_view_id */)
-
-#if defined(OS_MACOSX)
-IPC_MESSAGE_ROUTED1(PluginMsg_SetWindowFocus,
-                    bool /* has_focus */)
-
-IPC_MESSAGE_ROUTED0(PluginMsg_ContainerHidden)
-
-IPC_MESSAGE_ROUTED3(PluginMsg_ContainerShown,
-                    gfx::Rect /* window_frame */,
-                    gfx::Rect /* view_frame */,
-                    bool /* has_focus */)
-
-IPC_MESSAGE_ROUTED2(PluginMsg_WindowFrameChanged,
-                    gfx::Rect /* window_frame */,
-                    gfx::Rect /* view_frame */)
-
-IPC_MESSAGE_ROUTED1(PluginMsg_ImeCompositionCompleted,
-                    base::string16 /* text */)
-#endif
-
-//-----------------------------------------------------------------------------
-// PluginHost messages
-// These are messages sent from the plugin process to the renderer process.
-// They all map to the corresponding WebPlugin methods.
-
-IPC_MESSAGE_ROUTED1(PluginHostMsg_InvalidateRect,
-                    gfx::Rect /* rect */)
-
-IPC_SYNC_MESSAGE_ROUTED1_2(PluginHostMsg_ResolveProxy,
-                           GURL /* url */,
-                           bool /* result */,
-                           std::string /* proxy list */)
-
-IPC_MESSAGE_ROUTED3(PluginHostMsg_SetCookie,
-                    GURL /* url */,
-                    GURL /* first_party_for_cookies */,
-                    std::string /* cookie */)
-
-IPC_SYNC_MESSAGE_ROUTED2_1(PluginHostMsg_GetCookies,
-                           GURL /* url */,
-                           GURL /* first_party_for_cookies */,
-                           std::string /* cookies */)
-
-IPC_MESSAGE_ROUTED0(PluginHostMsg_CancelDocumentLoad)
-
-IPC_MESSAGE_ROUTED0(PluginHostMsg_DidStartLoading)
-IPC_MESSAGE_ROUTED0(PluginHostMsg_DidStopLoading)
-
-IPC_MESSAGE_CONTROL0(PluginHostMsg_PluginShuttingDown)
-
-#if defined(OS_MACOSX)
-IPC_MESSAGE_ROUTED1(PluginHostMsg_FocusChanged,
-                    bool /* focused */)
-
-IPC_MESSAGE_ROUTED0(PluginHostMsg_StartIme)
-
-//----------------------------------------------------------------------
-// Core Animation plugin implementation rendering via compositor.
-
-// Notifies the renderer process that this plugin will be using the
-// accelerated rendering path.
-IPC_MESSAGE_ROUTED0(PluginHostMsg_AcceleratedPluginEnabledRendering)
-
-// Notifies the renderer process that the plugin allocated a new
-// IOSurface into which it is rendering. The renderer process forwards
-// this IOSurface to the GPU process, causing it to be bound to a
-// texture from which the compositor can render. Any previous
-// IOSurface allocated by this plugin must be implicitly released by
-// the receipt of this message.
-IPC_MESSAGE_ROUTED3(PluginHostMsg_AcceleratedPluginAllocatedIOSurface,
-                    int32_t /* width */,
-                    int32_t /* height */,
-                    uint32_t /* surface_id */)
-
-// Notifies the renderer process that the plugin produced a new frame
-// of content into its IOSurface, and therefore that the compositor
-// needs to redraw.
-IPC_MESSAGE_ROUTED0(PluginHostMsg_AcceleratedPluginSwappedIOSurface)
-#endif
diff --git a/content/common/gpu/media/dxva_video_decode_accelerator_win.cc b/content/common/gpu/media/dxva_video_decode_accelerator_win.cc
index c15d7db9..fb6e381 100644
--- a/content/common/gpu/media/dxva_video_decode_accelerator_win.cc
+++ b/content/common/gpu/media/dxva_video_decode_accelerator_win.cc
@@ -2003,6 +2003,9 @@
   if (GetState() == kUninitialized)
     return;
 
+  // Best effort to make the GL context current.
+  make_context_current_.Run();
+
   decoder_thread_.Stop();
   weak_this_factory_.InvalidateWeakPtrs();
   output_picture_buffers_.clear();
@@ -2294,6 +2297,9 @@
 }
 
 void DXVAVideoDecodeAccelerator::DismissStaleBuffers(bool force) {
+  RETURN_AND_NOTIFY_ON_FAILURE(make_context_current_.Run(),
+    "Failed to make context current", PLATFORM_FAILURE, );
+
   OutputBuffers::iterator index;
 
   for (index = output_picture_buffers_.begin();
@@ -2314,6 +2320,9 @@
 
 void DXVAVideoDecodeAccelerator::DeferredDismissStaleBuffer(
     int32_t picture_buffer_id) {
+  RETURN_AND_NOTIFY_ON_FAILURE(make_context_current_.Run(),
+    "Failed to make context current", PLATFORM_FAILURE, );
+
   OutputBuffers::iterator it = stale_output_picture_buffers_.find(
       picture_buffer_id);
   DCHECK(it != stale_output_picture_buffers_.end());
@@ -2832,6 +2841,7 @@
 void DXVAVideoDecodeAccelerator::ConfigChanged(
     const Config& config) {
   DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
+
   SetState(kConfigChange);
   DismissStaleBuffers(true);
   Invalidate();
diff --git a/content/common/gpu/media/gpu_video_decode_accelerator.cc b/content/common/gpu/media/gpu_video_decode_accelerator.cc
index df90c9e..b34092d 100644
--- a/content/common/gpu/media/gpu_video_decode_accelerator.cc
+++ b/content/common/gpu/media/gpu_video_decode_accelerator.cc
@@ -444,14 +444,17 @@
 #if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
 void GpuVideoDecodeAccelerator::BindImage(uint32_t client_texture_id,
                                           uint32_t texture_target,
-                                          scoped_refptr<gl::GLImage> image) {
+                                          scoped_refptr<gl::GLImage> image,
+                                          bool can_bind_to_sampler) {
   gpu::gles2::GLES2Decoder* command_decoder = stub_->decoder();
   gpu::gles2::TextureManager* texture_manager =
       command_decoder->GetContextGroup()->texture_manager();
   gpu::gles2::TextureRef* ref = texture_manager->GetTexture(client_texture_id);
   if (ref) {
     texture_manager->SetLevelImage(ref, texture_target, 0, image.get(),
-                                   gpu::gles2::Texture::BOUND);
+                                   can_bind_to_sampler
+                                       ? gpu::gles2::Texture::BOUND
+                                       : gpu::gles2::Texture::UNBOUND);
   }
 }
 #endif
diff --git a/content/common/gpu/media/gpu_video_decode_accelerator.h b/content/common/gpu/media/gpu_video_decode_accelerator.h
index ef1f28d..6212d6a 100644
--- a/content/common/gpu/media/gpu_video_decode_accelerator.h
+++ b/content/common/gpu/media/gpu_video_decode_accelerator.h
@@ -124,10 +124,13 @@
   void SetTextureCleared(const media::Picture& picture);
 
 #if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
-  // Helper to bind |image| to the texture specified by |client_texture_id|.
+  // Helper to bind |image| to the texture specified by |client_texture_id|. If
+  // |can_bind_to_sampler| is true, then the image may be used as a sampler
+  // directly, otherwise a copy to a staging buffer is required.
   void BindImage(uint32_t client_texture_id,
                  uint32_t texture_target,
-                 scoped_refptr<gl::GLImage> image);
+                 scoped_refptr<gl::GLImage> image,
+                 bool can_bind_to_sampler);
 #endif
 
   // Route ID to communicate with the host.
diff --git a/content/common/gpu/media/vaapi_video_decode_accelerator.cc b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
index bda467b5..3bcfe21 100644
--- a/content/common/gpu/media/vaapi_video_decode_accelerator.cc
+++ b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
@@ -292,9 +292,8 @@
 }
 
 VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
-    const base::Callback<bool(void)>& make_context_current,
-    const base::Callback<void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>&
-        bind_image)
+    const MakeContextCurrentCallback& make_context_current,
+    const BindImageCallback& bind_image)
     : make_context_current_(make_context_current),
       state_(kUninitialized),
       input_ready_(&lock_),
@@ -750,7 +749,7 @@
     if (image) {
       DCHECK_LE(1u, buffers[i].internal_texture_ids().size());
       bind_image_.Run(buffers[i].internal_texture_ids()[0],
-                      VaapiPicture::GetGLTextureTarget(), image);
+                      VaapiPicture::GetGLTextureTarget(), image, true);
     }
 
     RETURN_AND_NOTIFY_ON_FAILURE(
diff --git a/content/common/gpu/media/vaapi_video_decode_accelerator.h b/content/common/gpu/media/vaapi_video_decode_accelerator.h
index c38feeb..d14b06a 100644
--- a/content/common/gpu/media/vaapi_video_decode_accelerator.h
+++ b/content/common/gpu/media/vaapi_video_decode_accelerator.h
@@ -55,9 +55,8 @@
   class VaapiDecodeSurface;
 
   VaapiVideoDecodeAccelerator(
-      const base::Callback<bool(void)>& make_context_current,
-      const base::Callback<
-          void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>& bind_image);
+      const MakeContextCurrentCallback& make_context_current,
+      const BindImageCallback& bind_image);
   ~VaapiVideoDecodeAccelerator() override;
 
   // media::VideoDecodeAccelerator implementation.
@@ -182,7 +181,7 @@
 
 
   // Client-provided GL state.
-  base::Callback<bool(void)> make_context_current_;
+  MakeContextCurrentCallback make_context_current_;
 
   // VAVDA state.
   enum State {
@@ -306,8 +305,7 @@
 
   // Binds the provided GLImage to a givenr client texture ID & texture target
   // combination in GLES.
-  base::Callback<void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>
-      bind_image_;
+  BindImageCallback bind_image_;
 
   // The WeakPtrFactory for |weak_this_|.
   base::WeakPtrFactory<VaapiVideoDecodeAccelerator> weak_this_factory_;
diff --git a/content/common/gpu/media/video_decode_accelerator_unittest.cc b/content/common/gpu/media/video_decode_accelerator_unittest.cc
index ed67cae5..f74dd294 100644
--- a/content/common/gpu/media/video_decode_accelerator_unittest.cc
+++ b/content/common/gpu/media/video_decode_accelerator_unittest.cc
@@ -367,7 +367,8 @@
 
   void BindImage(uint32_t client_texture_id,
                  uint32_t texture_target,
-                 scoped_refptr<gl::GLImage> image);
+                 scoped_refptr<gl::GLImage> image,
+                 bool can_bind_as_sampler);
 
   void SetState(ClientState new_state);
   void FinishInitialization();
@@ -578,7 +579,8 @@
 
 void GLRenderingVDAClient::BindImage(uint32_t client_texture_id,
                                      uint32_t texture_target,
-                                     scoped_refptr<gl::GLImage> image) {}
+                                     scoped_refptr<gl::GLImage> image,
+                                     bool can_bind_to_sampler) {}
 
 void GLRenderingVDAClient::CreateAndStartDecoder() {
   LOG_ASSERT(decoder_deleted());
diff --git a/content/common/gpu/media/vt_video_decode_accelerator_mac.cc b/content/common/gpu/media/vt_video_decode_accelerator_mac.cc
index 3c192ec..4a88b28 100644
--- a/content/common/gpu/media/vt_video_decode_accelerator_mac.cc
+++ b/content/common/gpu/media/vt_video_decode_accelerator_mac.cc
@@ -288,9 +288,8 @@
 }
 
 VTVideoDecodeAccelerator::VTVideoDecodeAccelerator(
-    const base::Callback<bool(void)>& make_context_current,
-    const base::Callback<void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>&
-        bind_image)
+    const MakeContextCurrentCallback& make_context_current,
+    const BindImageCallback& bind_image)
     : make_context_current_(make_context_current),
       bind_image_(bind_image),
       client_(nullptr),
@@ -1060,7 +1059,7 @@
   }
 
   bind_image_.Run(picture_info->client_texture_id, GL_TEXTURE_RECTANGLE_ARB,
-                  gl_image);
+                  gl_image, true);
 
   // Assign the new image(s) to the the picture info.
   picture_info->gl_image = gl_image;
diff --git a/content/common/gpu/media/vt_video_decode_accelerator_mac.h b/content/common/gpu/media/vt_video_decode_accelerator_mac.h
index 2d222163..c3e75e9 100644
--- a/content/common/gpu/media/vt_video_decode_accelerator_mac.h
+++ b/content/common/gpu/media/vt_video_decode_accelerator_mac.h
@@ -35,9 +35,8 @@
 class VTVideoDecodeAccelerator : public media::VideoDecodeAccelerator {
  public:
   explicit VTVideoDecodeAccelerator(
-      const base::Callback<bool(void)>& make_context_current,
-      const base::Callback<
-          void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>& bind_image);
+      const MakeContextCurrentCallback& make_context_current,
+      const BindImageCallback& bind_image);
   ~VTVideoDecodeAccelerator() override;
 
   // VideoDecodeAccelerator implementation.
@@ -189,9 +188,8 @@
   //
   // GPU thread state.
   //
-  base::Callback<bool(void)> make_context_current_;
-  base::Callback<void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>)>
-      bind_image_;
+  MakeContextCurrentCallback make_context_current_;
+  BindImageCallback bind_image_;
   media::VideoDecodeAccelerator::Client* client_;
   State state_;
 
diff --git a/content/common/input/synthetic_pointer_action_params.h b/content/common/input/synthetic_pointer_action_params.h
index e5a9a9d..fe6c9f9 100644
--- a/content/common/input/synthetic_pointer_action_params.h
+++ b/content/common/input/synthetic_pointer_action_params.h
@@ -11,6 +11,11 @@
 #include "content/common/input/synthetic_gesture_params.h"
 #include "ui/gfx/geometry/point_f.h"
 
+namespace ipc_fuzzer {
+template <class T>
+struct FuzzTraits;
+}  // namespace ipc_fuzzer
+
 namespace content {
 
 struct CONTENT_EXPORT SyntheticPointerActionParams
@@ -67,6 +72,7 @@
 
  private:
   friend struct IPC::ParamTraits<content::SyntheticPointerActionParams>;
+  friend struct ipc_fuzzer::FuzzTraits<content::SyntheticPointerActionParams>;
 
   PointerActionType pointer_action_type_;
   // Pass a position value when sending a press or move action.
diff --git a/content/content.gyp b/content/content.gyp
index 5c7a490..9a70c9b 100644
--- a/content/content.gyp
+++ b/content/content.gyp
@@ -129,7 +129,6 @@
             'content_child',
             'content_common',
             'content_gpu',
-            'content_plugin',
             'content_ppapi_plugin',
             'content_renderer',
             'content_utility',
@@ -273,19 +272,6 @@
           ],
         },
         {
-          # GN version: //content/plugin and //content/public/plugin
-          'target_name': 'content_plugin',
-          'type': 'static_library',
-          'variables': { 'enable_wexit_time_destructors': 1, },
-          'includes': [
-            'content_plugin.gypi',
-          ],
-          'dependencies': [
-            'content_child',
-            'content_common',
-          ],
-        },
-        {
           # GN version: //content/ppapi_plugin
           'target_name': 'content_ppapi_plugin',
           'type': 'static_library',
@@ -364,7 +350,6 @@
             'content_child.gypi',
             'content_common.gypi',
             'content_gpu.gypi',
-            'content_plugin.gypi',
             'content_ppapi_plugin.gypi',
             'content_renderer.gypi',
             'content_utility.gypi',
@@ -432,12 +417,6 @@
           'dependencies': ['content'],
         },
         {
-          # GN version: //content/plugin
-          'target_name': 'content_plugin',
-          'type': 'none',
-          'dependencies': ['content'],
-        },
-        {
           # GN version: //content/ppapi_plugin
           'target_name': 'content_ppapi_plugin',
           'type': 'none',
diff --git a/content/content_child.gypi b/content/content_child.gypi
index e6ac472..54692b7 100644
--- a/content/content_child.gypi
+++ b/content/content_child.gypi
@@ -1,4 +1,3 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
@@ -149,36 +148,12 @@
       'child/notifications/pending_notification.h',
       'child/notifications/pending_notifications_tracker.cc',
       'child/notifications/pending_notifications_tracker.h',
-      'child/npapi/np_channel_base.cc',
-      'child/npapi/np_channel_base.h',
-      'child/npapi/plugin_host.cc',
-      'child/npapi/plugin_host.h',
-      'child/npapi/plugin_instance.cc',
-      'child/npapi/plugin_instance.h',
-      'child/npapi/plugin_instance_mac.mm',
-      'child/npapi/plugin_lib.cc',
-      'child/npapi/plugin_lib.h',
-      'child/npapi/plugin_web_event_converter_mac.h',
-      'child/npapi/plugin_web_event_converter_mac.mm',
-      'child/npapi/webplugin.h',
-      'child/npapi/webplugin_accelerated_surface_mac.h',
-      'child/npapi/webplugin_delegate.h',
-      'child/npapi/webplugin_delegate_impl.cc',
-      'child/npapi/webplugin_delegate_impl.h',
-      'child/npapi/webplugin_delegate_impl_android.cc',
-      'child/npapi/webplugin_delegate_impl_aura.cc',
-      'child/npapi/webplugin_delegate_impl_mac.mm',
-      'child/npapi/webplugin_delegate_impl_win.cc',
-      'child/npapi/webplugin_resource_client.h',
       'child/permissions/permission_dispatcher.cc',
       'child/permissions/permission_dispatcher.h',
       'child/permissions/permission_dispatcher_thread_proxy.cc',
       'child/permissions/permission_dispatcher_thread_proxy.h',
       'child/permissions/permission_observers_registry.cc',
       'child/permissions/permission_observers_registry.h',
-      'child/plugin_message_generator.cc',
-      'child/plugin_message_generator.h',
-      'child/plugin_messages.h',
       'child/power_monitor_broadcast_source.cc',
       'child/power_monitor_broadcast_source.h',
       'child/process_control_impl.cc',
@@ -295,20 +270,6 @@
       'sources!': [
         'child/browser_font_resource_trusted.cc',
       ],
-      'sources/': [
-        ['exclude', '^child/npapi/plugin_'],
-        ['exclude', '^child/npapi/webplugin_'],
-      ],
-    }],
-    ['use_aura==1', {
-      'sources!': [
-        'child/npapi/webplugin_delegate_impl_mac.mm',
-      ],
-    }],
-    ['OS=="win"', {
-      'sources!': [
-        'child/npapi/webplugin_delegate_impl_aura.cc',
-      ],
     }],
   ],
 }
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi
index a5d73ce..29580ea 100644
--- a/content/content_renderer.gypi
+++ b/content/content_renderer.gypi
@@ -496,12 +496,6 @@
     ],
     # Put WebRTC-related sources in the plugin+WebRTC section below.
     'private_renderer_plugin_sources': [
-      'renderer/npapi/plugin_channel_host.cc',
-      'renderer/npapi/plugin_channel_host.h',
-      'renderer/npapi/webplugin_delegate_proxy.cc',
-      'renderer/npapi/webplugin_delegate_proxy.h',
-      'renderer/npapi/webplugin_impl.cc',
-      'renderer/npapi/webplugin_impl.h',
       'renderer/pepper/audio_helper.cc',
       'renderer/pepper/audio_helper.h',
       'renderer/pepper/content_decryptor_delegate.cc',
diff --git a/content/content_shell.gypi b/content/content_shell.gypi
index f6382115..6d15a67 100644
--- a/content/content_shell.gypi
+++ b/content/content_shell.gypi
@@ -25,7 +25,6 @@
         'content.gyp:content_browser',
         'content.gyp:content_common',
         'content.gyp:content_gpu',
-        'content.gyp:content_plugin',
         'content.gyp:content_ppapi_plugin',
         'content.gyp:content_renderer',
         'content.gyp:content_resources',
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index c385b2341..4b597ccf 100644
--- a/content/content_tests.gypi
+++ b/content/content_tests.gypi
@@ -760,8 +760,6 @@
       'browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc',
       'browser/renderer_host/pepper/pepper_printing_host_unittest.cc',
       'browser/renderer_host/pepper/quota_reservation_unittest.cc',
-      'child/npapi/plugin_lib_unittest.cc',
-      'renderer/npapi/webplugin_impl_unittest.cc',
       'renderer/pepper/event_conversion_unittest.cc',
       'renderer/pepper/host_var_tracker_unittest.cc',
       'renderer/pepper/mock_resource.h',
@@ -895,7 +893,6 @@
         'content.gyp:content_child',
         'content.gyp:content_common',
         'content.gyp:content_gpu',
-        'content.gyp:content_plugin',
         'content.gyp:content_ppapi_plugin',
         'content.gyp:content_renderer',
         'content.gyp:content_utility',
@@ -1041,7 +1038,6 @@
         'content.gyp:content_child',
         'content.gyp:content_common',
         'content.gyp:content_gpu',
-        'content.gyp:content_plugin',
         'content.gyp:content_renderer',
         'content.gyp:content_resources',
         'content_common_mojo_bindings.gyp:content_common_mojo_bindings',
@@ -1380,7 +1376,6 @@
         'browser/background_sync/background_sync_proto.gyp:background_sync_proto',
         'content.gyp:content_common',
         'content.gyp:content_gpu',
-        'content.gyp:content_plugin',
         'content.gyp:content_renderer',
         'content.gyp:content_resources',
         'content_browser_test_base',
diff --git a/content/plugin/BUILD.gn b/content/plugin/BUILD.gn
deleted file mode 100644
index 94dc6d8..0000000
--- a/content/plugin/BUILD.gn
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//build/config/features.gni")
-
-# This is the NPAPI plugin process. It isn't used on Linux.
-if (enable_plugins && !is_linux) {
-  source_set("plugin") {
-    # Only the public target should depend on this. All other targets (even
-    # internal content ones) should depend on the public one.
-    visibility = [ "//content/public/plugin:plugin_sources" ]
-
-    sources = [
-      "plugin_channel.cc",
-      "plugin_channel.h",
-      "plugin_interpose_util_mac.h",
-      "plugin_interpose_util_mac.mm",
-      "plugin_main.cc",
-      "plugin_main_mac.mm",
-      "plugin_thread.cc",
-      "plugin_thread.h",
-      "webplugin_accelerated_surface_proxy_mac.cc",
-      "webplugin_accelerated_surface_proxy_mac.h",
-      "webplugin_delegate_stub.cc",
-      "webplugin_delegate_stub.h",
-      "webplugin_proxy.cc",
-      "webplugin_proxy.h",
-    ]
-
-    configs += [ "//content:content_implementation" ]
-
-    deps = [
-      "//content:export",
-      "//content/child",
-      "//content/public/common:common_sources",
-      "//mojo/shell/public/interfaces",
-      "//skia",
-      "//third_party/WebKit/public:blink",
-      "//third_party/npapi",
-      "//ui/gfx",
-      "//ui/surface",
-    ]
-
-    if (is_win) {
-      deps += [ "//sandbox" ]
-    }
-  }
-} else {
-  # This way it can be unconditionally depended on.
-  group("plugin") {
-  }
-}
diff --git a/content/plugin/DEPS b/content/plugin/DEPS
deleted file mode 100644
index 9fc12ed..0000000
--- a/content/plugin/DEPS
+++ /dev/null
@@ -1,9 +0,0 @@
-include_rules = [
-  "-chrome",
-  "+content/public/plugin",
-  "+content/child",
-  "+sandbox/win/src",
-  "+skia/ext",
-  "+third_party/npapi",
-]
-
diff --git a/content/plugin/OWNERS b/content/plugin/OWNERS
deleted file mode 100644
index 4e374020..0000000
--- a/content/plugin/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-ananta@chromium.org
-piman@chromium.org
diff --git a/content/plugin/plugin_channel.cc b/content/plugin/plugin_channel.cc
deleted file mode 100644
index 934c97d..0000000
--- a/content/plugin/plugin_channel.cc
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/plugin/plugin_channel.h"
-
-#include <stddef.h>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/process/process_handle.h"
-#include "base/strings/string_util.h"
-#include "base/synchronization/lock.h"
-#include "base/synchronization/waitable_event.h"
-#include "build/build_config.h"
-#include "content/child/child_process.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/webplugin_delegate_impl.h"
-#include "content/child/plugin_messages.h"
-#include "content/common/plugin_process_messages.h"
-#include "content/plugin/plugin_thread.h"
-#include "content/plugin/webplugin_delegate_stub.h"
-#include "content/plugin/webplugin_proxy.h"
-#include "content/public/common/content_switches.h"
-#include "ipc/message_filter.h"
-
-#if defined(OS_POSIX)
-#include "ipc/ipc_channel_posix.h"
-#endif
-
-namespace content {
-
-namespace {
-
-// How long we wait before releasing the plugin process.
-const int kPluginReleaseTimeMinutes = 5;
-
-}  // namespace
-
-// If a sync call to the renderer results in a modal dialog, we need to have a
-// way to know so that we can run a nested message loop to simulate what would
-// happen in a single process browser and avoid deadlock.
-class PluginChannel::MessageFilter : public IPC::MessageFilter {
- public:
-  MessageFilter() : sender_(NULL) { }
-
-  base::WaitableEvent* GetModalDialogEvent(int render_view_id) {
-    base::AutoLock auto_lock(modal_dialog_event_map_lock_);
-    if (!modal_dialog_event_map_.count(render_view_id)) {
-      NOTREACHED();
-      return NULL;
-    }
-
-    return modal_dialog_event_map_[render_view_id].event;
-  }
-
-  // Decrement the ref count associated with the modal dialog event for the
-  // given tab.
-  void ReleaseModalDialogEvent(int render_view_id) {
-    base::AutoLock auto_lock(modal_dialog_event_map_lock_);
-    if (!modal_dialog_event_map_.count(render_view_id)) {
-      NOTREACHED();
-      return;
-    }
-
-    if (--(modal_dialog_event_map_[render_view_id].refcount))
-      return;
-
-    // Delete the event when the stack unwinds as it could be in use now.
-    base::MessageLoop::current()->DeleteSoon(
-        FROM_HERE, modal_dialog_event_map_[render_view_id].event);
-    modal_dialog_event_map_.erase(render_view_id);
-  }
-
-  bool Send(IPC::Message* message) {
-    // Need this function for the IPC_MESSAGE_HANDLER_DELAY_REPLY macro.
-    return sender_->Send(message);
-  }
-
-  // IPC::MessageFilter:
-  void OnFilterAdded(IPC::Sender* sender) override { sender_ = sender; }
-
-  bool OnMessageReceived(const IPC::Message& message) override {
-    IPC_BEGIN_MESSAGE_MAP(PluginChannel::MessageFilter, message)
-      IPC_MESSAGE_HANDLER_DELAY_REPLY(PluginMsg_Init, OnInit)
-      IPC_MESSAGE_HANDLER(PluginMsg_SignalModalDialogEvent,
-                          OnSignalModalDialogEvent)
-      IPC_MESSAGE_HANDLER(PluginMsg_ResetModalDialogEvent,
-                          OnResetModalDialogEvent)
-    IPC_END_MESSAGE_MAP()
-    return message.type() == PluginMsg_SignalModalDialogEvent::ID ||
-           message.type() == PluginMsg_ResetModalDialogEvent::ID;
-  }
-
- protected:
-  ~MessageFilter() override {
-    // Clean up in case of renderer crash.
-    for (ModalDialogEventMap::iterator i = modal_dialog_event_map_.begin();
-        i != modal_dialog_event_map_.end(); ++i) {
-      delete i->second.event;
-    }
-  }
-
- private:
-  void OnInit(const PluginMsg_Init_Params& params, IPC::Message* reply_msg) {
-    base::AutoLock auto_lock(modal_dialog_event_map_lock_);
-    if (modal_dialog_event_map_.count(params.host_render_view_routing_id)) {
-      modal_dialog_event_map_[params.host_render_view_routing_id].refcount++;
-      return;
-    }
-
-    WaitableEventWrapper wrapper;
-    wrapper.event = new base::WaitableEvent(true, false);
-    wrapper.refcount = 1;
-    modal_dialog_event_map_[params.host_render_view_routing_id] = wrapper;
-  }
-
-  void OnSignalModalDialogEvent(int render_view_id) {
-    base::AutoLock auto_lock(modal_dialog_event_map_lock_);
-    if (modal_dialog_event_map_.count(render_view_id))
-      modal_dialog_event_map_[render_view_id].event->Signal();
-  }
-
-  void OnResetModalDialogEvent(int render_view_id) {
-    base::AutoLock auto_lock(modal_dialog_event_map_lock_);
-    if (modal_dialog_event_map_.count(render_view_id))
-      modal_dialog_event_map_[render_view_id].event->Reset();
-  }
-
-  struct WaitableEventWrapper {
-    base::WaitableEvent* event;
-    int refcount;  // There could be multiple plugin instances per tab.
-  };
-  typedef std::map<int, WaitableEventWrapper> ModalDialogEventMap;
-  ModalDialogEventMap modal_dialog_event_map_;
-  base::Lock modal_dialog_event_map_lock_;
-
-  IPC::Sender* sender_;
-};
-
-PluginChannel* PluginChannel::GetPluginChannel(
-    int renderer_id,
-    base::SingleThreadTaskRunner* ipc_task_runner) {
-  // Map renderer ID to a (single) channel to that process.
-  std::string channel_key = base::StringPrintf(
-      "%d.r%d", base::GetCurrentProcId(), renderer_id);
-
-  PluginChannel* channel =
-      static_cast<PluginChannel*>(NPChannelBase::GetChannel(
-          channel_key, IPC::Channel::MODE_SERVER, ClassFactory, ipc_task_runner,
-          false, ChildProcess::current()->GetShutDownEvent()));
-
-  if (channel)
-    channel->renderer_id_ = renderer_id;
-
-  return channel;
-}
-
-// static
-void PluginChannel::NotifyRenderersOfPendingShutdown() {
-  Broadcast(new PluginHostMsg_PluginShuttingDown());
-}
-
-bool PluginChannel::Send(IPC::Message* msg) {
-  in_send_++;
-  if (log_messages_) {
-    VLOG(1) << "sending message @" << msg << " on channel @" << this
-            << " with type " << msg->type();
-  }
-  bool result = NPChannelBase::Send(msg);
-  in_send_--;
-  return result;
-}
-
-bool PluginChannel::OnMessageReceived(const IPC::Message& msg) {
-  if (log_messages_) {
-    VLOG(1) << "received message @" << &msg << " on channel @" << this
-            << " with type " << msg.type();
-  }
-  return NPChannelBase::OnMessageReceived(msg);
-}
-
-void PluginChannel::OnChannelError() {
-  NPChannelBase::OnChannelError();
-  CleanUp();
-}
-
-int PluginChannel::GenerateRouteID() {
-  static int last_id = 0;
-  return ++last_id;
-}
-
-base::WaitableEvent* PluginChannel::GetModalDialogEvent(int render_view_id) {
-  return filter_->GetModalDialogEvent(render_view_id);
-}
-
-PluginChannel::~PluginChannel() {
-  PluginThread::current()->Send(new PluginProcessHostMsg_ChannelDestroyed(
-      renderer_id_));
-  process_ref_.ReleaseWithDelay(
-      base::TimeDelta::FromMinutes(kPluginReleaseTimeMinutes));
-}
-
-void PluginChannel::CleanUp() {
-  // We need to clean up the stubs so that they call NPPDestroy.  This will
-  // also lead to them releasing their reference on this object so that it can
-  // be deleted.
-  for (size_t i = 0; i < plugin_stubs_.size(); ++i)
-    RemoveRoute(plugin_stubs_[i]->instance_id());
-
-  // Need to addref this object temporarily because otherwise removing the last
-  // stub will cause the destructor of this object to be called, however at
-  // that point plugin_stubs_ will have one element and its destructor will be
-  // called twice.
-  scoped_refptr<PluginChannel> me(this);
-
-  while (!plugin_stubs_.empty()) {
-    // Separate vector::erase and ~WebPluginDelegateStub.
-    // See https://code.google.com/p/chromium/issues/detail?id=314088
-    scoped_refptr<WebPluginDelegateStub> stub = plugin_stubs_[0];
-    plugin_stubs_.erase(plugin_stubs_.begin());
-  }
-}
-
-bool PluginChannel::Init(base::SingleThreadTaskRunner* ipc_task_runner,
-                         bool create_pipe_now,
-                         base::WaitableEvent* shutdown_event) {
-  if (!NPChannelBase::Init(ipc_task_runner, create_pipe_now, shutdown_event))
-    return false;
-
-  channel_->AddFilter(filter_.get());
-  return true;
-}
-
-PluginChannel::PluginChannel()
-    : renderer_id_(-1),
-      in_send_(0),
-      incognito_(false),
-      filter_(new MessageFilter()) {
-  set_send_unblocking_only_during_unblock_dispatch();
-  const base::CommandLine* command_line =
-      base::CommandLine::ForCurrentProcess();
-  log_messages_ = command_line->HasSwitch(switches::kLogPluginMessages);
-}
-
-bool PluginChannel::OnControlMessageReceived(const IPC::Message& msg) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(PluginChannel, msg)
-    IPC_MESSAGE_HANDLER(PluginMsg_CreateInstance, OnCreateInstance)
-    IPC_MESSAGE_HANDLER_DELAY_REPLY(PluginMsg_DestroyInstance,
-                                    OnDestroyInstance)
-    IPC_MESSAGE_HANDLER(PluginMsg_GenerateRouteID, OnGenerateRouteID)
-    IPC_MESSAGE_HANDLER(PluginProcessMsg_ClearSiteData, OnClearSiteData)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  DCHECK(handled);
-  return handled;
-}
-
-void PluginChannel::OnCreateInstance(const std::string& mime_type,
-                                     int* instance_id) {
-  *instance_id = GenerateRouteID();
-  scoped_refptr<WebPluginDelegateStub> stub(new WebPluginDelegateStub(
-      mime_type, *instance_id, this));
-  AddRoute(*instance_id, stub.get());
-  plugin_stubs_.push_back(stub);
-}
-
-void PluginChannel::OnDestroyInstance(int instance_id,
-                                      IPC::Message* reply_msg) {
-  for (size_t i = 0; i < plugin_stubs_.size(); ++i) {
-    if (plugin_stubs_[i]->instance_id() == instance_id) {
-      scoped_refptr<MessageFilter> filter(filter_);
-      int render_view_id =
-          plugin_stubs_[i]->webplugin()->host_render_view_routing_id();
-      // Separate vector::erase and ~WebPluginDelegateStub.
-      // See https://code.google.com/p/chromium/issues/detail?id=314088
-      scoped_refptr<WebPluginDelegateStub> stub = plugin_stubs_[i];
-      plugin_stubs_.erase(plugin_stubs_.begin() + i);
-      stub = NULL;
-
-      Send(reply_msg);
-      RemoveRoute(instance_id);
-      // NOTE: *this* might be deleted as a result of calling RemoveRoute.
-      // Don't release the modal dialog event right away, but do it after the
-      // stack unwinds since the plugin can be destroyed later if it's in use
-      // right now.
-      base::MessageLoop::current()->PostNonNestableTask(
-          FROM_HERE,
-          base::Bind(&MessageFilter::ReleaseModalDialogEvent,
-                     filter.get(),
-                     render_view_id));
-      return;
-    }
-  }
-
-  NOTREACHED() << "Couldn't find WebPluginDelegateStub to destroy";
-}
-
-void PluginChannel::OnGenerateRouteID(int* route_id) {
-  *route_id = GenerateRouteID();
-}
-
-void PluginChannel::OnClearSiteData(const std::string& site,
-                                    uint64_t flags,
-                                    uint64_t max_age) {
-  bool success = false;
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  base::FilePath path = command_line->GetSwitchValuePath(switches::kPluginPath);
-  scoped_refptr<PluginLib> plugin_lib(PluginLib::CreatePluginLib(path));
-  if (plugin_lib.get()) {
-    NPError err = plugin_lib->NP_Initialize();
-    if (err == NPERR_NO_ERROR) {
-      const char* site_str = site.empty() ? NULL : site.c_str();
-      err = plugin_lib->NP_ClearSiteData(site_str, flags, max_age);
-      std::string site_name =
-          site.empty() ? "NULL"
-                       : base::StringPrintf("\"%s\"", site_str);
-      VLOG(1) << "NPP_ClearSiteData(" << site_name << ", " << flags << ", "
-              << max_age << ") returned " << err;
-      success = (err == NPERR_NO_ERROR);
-    }
-  }
-  Send(new PluginProcessHostMsg_ClearSiteDataResult(success));
-}
-
-}  // namespace content
diff --git a/content/plugin/plugin_channel.h b/content/plugin/plugin_channel.h
deleted file mode 100644
index c022f0d..0000000
--- a/content/plugin/plugin_channel.h
+++ /dev/null
@@ -1,107 +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 CONTENT_PLUGIN_PLUGIN_CHANNEL_H_
-#define CONTENT_PLUGIN_PLUGIN_CHANNEL_H_
-
-#include <stdint.h>
-
-#include <vector>
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/process/process.h"
-#include "build/build_config.h"
-#include "content/child/npapi/np_channel_base.h"
-#include "content/child/scoped_child_process_reference.h"
-#include "content/plugin/webplugin_delegate_stub.h"
-
-namespace base {
-class WaitableEvent;
-}
-
-namespace content {
-
-// Encapsulates an IPC channel between the plugin process and one renderer
-// process.  On the renderer side there's a corresponding PluginChannelHost.
-class PluginChannel : public NPChannelBase {
- public:
-  // Get a new PluginChannel object for the current process to talk to the
-  // given renderer process. The renderer ID is an opaque unique ID generated
-  // by the browser.
-  static PluginChannel* GetPluginChannel(
-      int renderer_id,
-      base::SingleThreadTaskRunner* ipc_task_runner);
-
-  // Send a message to all renderers that the process is going to shutdown.
-  static void NotifyRenderersOfPendingShutdown();
-
-  // IPC::Listener:
-  bool Send(IPC::Message* msg) override;
-  bool OnMessageReceived(const IPC::Message& message) override;
-  void OnChannelError() override;
-
-  int renderer_id() { return renderer_id_; }
-
-  int GenerateRouteID() override;
-
-  // Returns the event that's set when a call to the renderer causes a modal
-  // dialog to come up.
-  base::WaitableEvent* GetModalDialogEvent(int render_view_id) override;
-
-  bool in_send() { return in_send_ != 0; }
-
-  bool incognito() { return incognito_; }
-  void set_incognito(bool value) { incognito_ = value; }
-
-#if defined(OS_POSIX)
-  base::ScopedFD TakeRendererFileDescriptor() {
-    return channel_->TakeClientFileDescriptor();
-  }
-#endif
-
- protected:
-  ~PluginChannel() override;
-
-  // NPChannelBase::
-  void CleanUp() override;
-  bool Init(base::SingleThreadTaskRunner* ipc_task_runner,
-            bool create_pipe_now,
-            base::WaitableEvent* shutdown_event) override;
-
- private:
-  class MessageFilter;
-
-  // Called on the plugin thread
-  PluginChannel();
-
-  bool OnControlMessageReceived(const IPC::Message& msg) override;
-
-  static NPChannelBase* ClassFactory() { return new PluginChannel(); }
-
-  void OnCreateInstance(const std::string& mime_type, int* instance_id);
-  void OnDestroyInstance(int instance_id, IPC::Message* reply_msg);
-  void OnGenerateRouteID(int* route_id);
-  void OnClearSiteData(const std::string& site,
-                       uint64_t flags,
-                       uint64_t max_age);
-  void OnDidAbortLoading(int render_view_id);
-
-  std::vector<scoped_refptr<WebPluginDelegateStub> > plugin_stubs_;
-
-  ScopedChildProcessReference process_ref_;
-
-  // The id of the renderer who is on the other side of the channel.
-  int renderer_id_;
-
-  int in_send_;  // Tracks if we're in a Send call.
-  bool log_messages_;  // True if we should log sent and received messages.
-  bool incognito_; // True if the renderer is in incognito mode.
-  scoped_refptr<MessageFilter> filter_;  // Handles the modal dialog events.
-
-  DISALLOW_COPY_AND_ASSIGN(PluginChannel);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PLUGIN_PLUGIN_CHANNEL_H_
diff --git a/content/plugin/plugin_interpose_util_mac.h b/content/plugin/plugin_interpose_util_mac.h
deleted file mode 100644
index ce8effb3..0000000
--- a/content/plugin/plugin_interpose_util_mac.h
+++ /dev/null
@@ -1,16 +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 CONTENT_PLUGIN_PLUGIN_INTERPOSE_UTIL_MAC_H_
-#define CONTENT_PLUGIN_PLUGIN_INTERPOSE_UTIL_MAC_H_
-
-namespace mac_plugin_interposing {
-
-// Swizzles methods we need to watch in order to manage process and window
-// focus correctly.
-void SetUpCocoaInterposing();
-
-}  // namespace MacPluginInterpose
-
-#endif  // CONTENT_PLUGIN_PLUGIN_INTERPOSE_UTIL_MAC_H_
diff --git a/content/plugin/plugin_interpose_util_mac.mm b/content/plugin/plugin_interpose_util_mac.mm
deleted file mode 100644
index 678fea29..0000000
--- a/content/plugin/plugin_interpose_util_mac.mm
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/plugin/plugin_interpose_util_mac.h"
-
-#import <AppKit/AppKit.h>
-#import <objc/runtime.h>
-#include <stdint.h>
-
-#include "content/child/npapi/webplugin_delegate_impl.h"
-#include "content/common/plugin_process_messages.h"
-#include "content/plugin/plugin_thread.h"
-
-using content::PluginThread;
-
-namespace {
-
-// Brings the plugin process to the front so that the user can see its windows.
-void SwitchToPluginProcess() {
-  ProcessSerialNumber this_process, front_process;
-  if ((GetCurrentProcess(&this_process) != noErr) ||
-      (GetFrontProcess(&front_process) != noErr)) {
-    return;
-  }
-
-  Boolean matched = false;
-  if ((SameProcess(&this_process, &front_process, &matched) == noErr) &&
-      !matched) {
-    SetFrontProcess(&this_process);
-  }
-}
-
-// Sends a message to the browser process to inform it that the given window
-// has been shown.
-void NotifyBrowserOfPluginShowWindow(uint32_t window_id,
-                                     CGRect bounds,
-                                     bool modal) {
-  PluginThread* plugin_thread = PluginThread::current();
-  if (plugin_thread) {
-    gfx::Rect window_bounds(bounds);
-    plugin_thread->Send(
-        new PluginProcessHostMsg_PluginShowWindow(window_id, window_bounds,
-                                                  modal));
-  }
-}
-
-// Sends a message to the browser process to inform it that the given window
-// has been hidden, and switches focus back to the browser process if there are
-// no remaining plugin windows.
-void NotifyBrowserOfPluginHideWindow(uint32_t window_id, CGRect bounds) {
-  PluginThread* plugin_thread = PluginThread::current();
-  if (plugin_thread) {
-    gfx::Rect window_bounds(bounds);
-    plugin_thread->Send(
-        new PluginProcessHostMsg_PluginHideWindow(window_id, window_bounds));
-  }
-}
-
-// Informs the host that the plugin has changed the cursor visibility.
-void NotifyPluginOfSetCursorVisibility(bool visibility) {
-  PluginThread* plugin_thread = PluginThread::current();
-  if (plugin_thread) {
-    plugin_thread->Send(
-        new PluginProcessHostMsg_PluginSetCursorVisibility(visibility));
-  }
-}
-
-struct WindowInfo {
-  uint32_t window_id;
-  CGRect bounds;
-  WindowInfo(NSWindow* window) {
-    NSInteger window_num = [window windowNumber];
-    window_id = window_num > 0 ? window_num : 0;
-    bounds = NSRectToCGRect([window frame]);
-  }
-};
-
-void OnPluginWindowClosed(const WindowInfo& window_info) {
-  if (window_info.window_id == 0)
-    return;
-  NotifyBrowserOfPluginHideWindow(window_info.window_id, window_info.bounds);
-}
-
-BOOL g_waiting_for_window_number = NO;
-
-void OnPluginWindowShown(const WindowInfo& window_info, BOOL is_modal) {
-  // The window id is 0 if it has never been shown (including while it is the
-  // process of being shown for the first time); when that happens, we'll catch
-  // it in _setWindowNumber instead.
-  static BOOL s_pending_display_is_modal = NO;
-  if (window_info.window_id == 0) {
-    g_waiting_for_window_number = YES;
-    if (is_modal)
-      s_pending_display_is_modal = YES;
-    return;
-  }
-  g_waiting_for_window_number = NO;
-  if (s_pending_display_is_modal) {
-    is_modal = YES;
-    s_pending_display_is_modal = NO;
-  }
-  NotifyBrowserOfPluginShowWindow(window_info.window_id, window_info.bounds,
-                                  is_modal);
-}
-
-}  // namespace
-
-@interface NSWindow (ChromePluginUtilities)
-// Returns YES if the window is visible and actually on the screen.
-- (BOOL)chromePlugin_isWindowOnScreen;
-@end
-
-@implementation NSWindow (ChromePluginUtilities)
-
-- (BOOL)chromePlugin_isWindowOnScreen {
-  if (![self isVisible])
-    return NO;
-  NSRect window_frame = [self frame];
-  for (NSScreen* screen in [NSScreen screens]) {
-    if (NSIntersectsRect(window_frame, [screen frame]))
-      return YES;
-  }
-  return NO;
-}
-
-@end
-
-@interface NSWindow (ChromePluginInterposing)
-- (void)chromePlugin_orderOut:(id)sender;
-- (void)chromePlugin_orderFront:(id)sender;
-- (void)chromePlugin_makeKeyAndOrderFront:(id)sender;
-- (void)chromePlugin_setWindowNumber:(NSInteger)num;
-@end
-
-@implementation NSWindow (ChromePluginInterposing)
-
-- (void)chromePlugin_orderOut:(id)sender {
-  WindowInfo window_info(self);
-  [self chromePlugin_orderOut:sender];
-  OnPluginWindowClosed(window_info);
-}
-
-- (void)chromePlugin_orderFront:(id)sender {
-  [self chromePlugin_orderFront:sender];
-  if ([self chromePlugin_isWindowOnScreen])
-    SwitchToPluginProcess();
-  OnPluginWindowShown(WindowInfo(self), NO);
-}
-
-- (void)chromePlugin_makeKeyAndOrderFront:(id)sender {
-  [self chromePlugin_makeKeyAndOrderFront:sender];
-  if ([self chromePlugin_isWindowOnScreen])
-    SwitchToPluginProcess();
-  OnPluginWindowShown(WindowInfo(self), NO);
-}
-
-- (void)chromePlugin_setWindowNumber:(NSInteger)num {
-  if (!g_waiting_for_window_number || num <= 0) {
-    [self chromePlugin_setWindowNumber:num];
-    return;
-  }
-  SwitchToPluginProcess();
-  [self chromePlugin_setWindowNumber:num];
-  OnPluginWindowShown(WindowInfo(self), NO);
-}
-
-@end
-
-@interface NSApplication (ChromePluginInterposing)
-- (NSInteger)chromePlugin_runModalForWindow:(NSWindow*)window;
-@end
-
-@implementation NSApplication (ChromePluginInterposing)
-
-- (NSInteger)chromePlugin_runModalForWindow:(NSWindow*)window {
-  SwitchToPluginProcess();
-  // This is out-of-order relative to the other calls, but runModalForWindow:
-  // won't return until the window closes, and the order only matters for
-  // full-screen windows.
-  OnPluginWindowShown(WindowInfo(window), YES);
-  return [self chromePlugin_runModalForWindow:window];
-}
-
-@end
-
-@interface NSCursor (ChromePluginInterposing)
-- (void)chromePlugin_set;
-+ (void)chromePlugin_hide;
-+ (void)chromePlugin_unhide;
-@end
-
-@implementation NSCursor (ChromePluginInterposing)
-
-- (void)chromePlugin_set {
-  content::WebPluginDelegateImpl* delegate =
-      content::WebPluginDelegateImpl::GetActiveDelegate();
-  if (delegate) {
-    delegate->SetNSCursor(self);
-    return;
-  }
-  [self chromePlugin_set];
-}
-
-+ (void)chromePlugin_hide {
-  NotifyPluginOfSetCursorVisibility(false);
-}
-
-+ (void)chromePlugin_unhide {
-  NotifyPluginOfSetCursorVisibility(true);
-}
-
-@end
-
-#pragma mark -
-
-static void ExchangeMethods(Class target_class,
-                            BOOL class_method,
-                            SEL original,
-                            SEL replacement) {
-  Method m1;
-  Method m2;
-  if (class_method) {
-    m1 = class_getClassMethod(target_class, original);
-    m2 = class_getClassMethod(target_class, replacement);
-  } else {
-    m1 = class_getInstanceMethod(target_class, original);
-    m2 = class_getInstanceMethod(target_class, replacement);
-  }
-  if (m1 && m2)
-    method_exchangeImplementations(m1, m2);
-  else
-    NOTREACHED() << "Cocoa swizzling failed";
-}
-
-namespace mac_plugin_interposing {
-
-void SetUpCocoaInterposing() {
-  Class nswindow_class = [NSWindow class];
-  ExchangeMethods(nswindow_class, NO, @selector(orderOut:),
-                  @selector(chromePlugin_orderOut:));
-  ExchangeMethods(nswindow_class, NO, @selector(orderFront:),
-                  @selector(chromePlugin_orderFront:));
-  ExchangeMethods(nswindow_class, NO, @selector(makeKeyAndOrderFront:),
-                  @selector(chromePlugin_makeKeyAndOrderFront:));
-  ExchangeMethods(nswindow_class, NO, @selector(_setWindowNumber:),
-                  @selector(chromePlugin_setWindowNumber:));
-
-  ExchangeMethods([NSApplication class], NO, @selector(runModalForWindow:),
-                  @selector(chromePlugin_runModalForWindow:));
-
-  Class nscursor_class = [NSCursor class];
-  ExchangeMethods(nscursor_class, NO, @selector(set),
-                  @selector(chromePlugin_set));
-  ExchangeMethods(nscursor_class, YES, @selector(hide),
-                  @selector(chromePlugin_hide));
-  ExchangeMethods(nscursor_class, YES, @selector(unhide),
-                  @selector(chromePlugin_unhide));
-}
-
-}  // namespace mac_plugin_interposing
diff --git a/content/plugin/plugin_main.cc b/content/plugin/plugin_main.cc
deleted file mode 100644
index 2cef8973..0000000
--- a/content/plugin/plugin_main.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "build/build_config.h"
-
-#if defined(OS_WIN)
-#include <windows.h>
-#endif
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/message_loop/message_loop.h"
-#include "base/strings/string_util.h"
-#include "base/threading/platform_thread.h"
-#include "base/timer/hi_res_timer_manager.h"
-#include "content/child/child_process.h"
-#include "content/common/content_constants_internal.h"
-#include "content/plugin/plugin_thread.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/main_function_params.h"
-
-#if defined(OS_WIN)
-#include "base/win/scoped_com_initializer.h"
-#include "content/public/common/injection_test_win.h"
-#include "sandbox/win/src/sandbox.h"
-#elif defined(OS_POSIX) && !defined(OS_MACOSX)
-#include "base/posix/global_descriptors.h"
-#include "ipc/ipc_descriptors.h"
-#endif
-
-namespace content {
-
-#if defined(OS_MACOSX)
-// Initializes the global Cocoa application object.
-void InitializeChromeApplication();
-#endif
-
-// main() routine for running as the plugin process.
-int PluginMain(const MainFunctionParams& parameters) {
-  // The main thread of the plugin services UI.
-#if defined(OS_MACOSX)
-  InitializeChromeApplication();
-#endif
-  base::MessageLoopForUI main_message_loop;
-  base::PlatformThread::SetName("CrPluginMain");
-  base::trace_event::TraceLog::GetInstance()->SetProcessName("Plugin Process");
-  base::trace_event::TraceLog::GetInstance()->SetProcessSortIndex(
-      kTraceEventPluginProcessSortIndex);
-
-  const base::CommandLine& parsed_command_line = parameters.command_line;
-
-#if defined(OS_WIN)
-  base::win::ScopedCOMInitializer com_initializer;
-#endif
-
-  if (parsed_command_line.HasSwitch(switches::kPluginStartupDialog)) {
-    ChildProcess::WaitForDebugger("Plugin");
-  }
-
-  {
-    ChildProcess plugin_process;
-    plugin_process.set_main_thread(new PluginThread());
-    base::HighResolutionTimerManager hi_res_timer_manager;
-    base::MessageLoop::current()->Run();
-  }
-
-  return 0;
-}
-
-}  // namespace content
diff --git a/content/plugin/plugin_main_mac.mm b/content/plugin/plugin_main_mac.mm
deleted file mode 100644
index fddaa59..0000000
--- a/content/plugin/plugin_main_mac.mm
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import <AppKit/AppKit.h>
-
-#include "content/plugin/plugin_interpose_util_mac.h"
-
-namespace content {
-
-void InitializeChromeApplication() {
-  [NSApplication sharedApplication];
-  mac_plugin_interposing::SetUpCocoaInterposing();
-}
-
-}  // namespace content
diff --git a/content/plugin/plugin_thread.cc b/content/plugin/plugin_thread.cc
deleted file mode 100644
index 0560469..0000000
--- a/content/plugin/plugin_thread.cc
+++ /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.
-
-#include "content/plugin/plugin_thread.h"
-
-#include "build/build_config.h"
-
-#if defined(OS_MACOSX)
-#include <CoreFoundation/CoreFoundation.h>
-#endif
-
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/lazy_instance.h"
-#include "base/process/process.h"
-#include "base/threading/thread_local.h"
-#include "content/child/blink_platform_impl.h"
-#include "content/child/child_process.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/common/plugin_process_messages.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/plugin/content_plugin_client.h"
-#include "third_party/WebKit/public/web/WebKit.h"
-#include "ipc/ipc_channel_handle.h"
-#include "ipc/message_filter.h"
-
-namespace content {
-
-namespace {
-
-class EnsureTerminateMessageFilter : public IPC::MessageFilter {
- public:
-  EnsureTerminateMessageFilter() {}
-
- protected:
-  ~EnsureTerminateMessageFilter() override {}
-
-  // IPC::MessageFilter:
-  void OnChannelError() override {
-    // How long we wait before forcibly shutting down the process.
-    const base::TimeDelta kPluginProcessTerminateTimeout =
-        base::TimeDelta::FromSeconds(3);
-    // Ensure that we don't wait indefinitely for the plugin to shutdown.
-    // as the browser does not terminate plugin processes on shutdown.
-    // We achieve this by posting an exit process task on the IO thread.
-    base::MessageLoop::current()->PostDelayedTask(
-        FROM_HERE,
-        base::Bind(&EnsureTerminateMessageFilter::Terminate, this),
-        kPluginProcessTerminateTimeout);
-  }
-
- private:
-  void Terminate() {
-    base::Process::Current().Terminate(0, false);
-  }
-};
-
-}  // namespace
-
-static base::LazyInstance<base::ThreadLocalPointer<PluginThread> > lazy_tls =
-    LAZY_INSTANCE_INITIALIZER;
-
-PluginThread::PluginThread()
-    : preloaded_plugin_module_(NULL),
-      forcefully_terminate_plugin_process_(false) {
-  base::FilePath plugin_path =
-      base::CommandLine::ForCurrentProcess()->GetSwitchValuePath(
-          switches::kPluginPath);
-
-  lazy_tls.Pointer()->Set(this);
-
-  // Preload the library to avoid loading, unloading then reloading
-  preloaded_plugin_module_ = base::LoadNativeLibrary(plugin_path, NULL);
-
-  scoped_refptr<PluginLib> plugin(PluginLib::CreatePluginLib(plugin_path));
-  if (plugin.get()) {
-    plugin->NP_Initialize();
-    // For OOP plugins the plugin dll will be unloaded during process shutdown
-    // time.
-    plugin->set_defer_unload(true);
-  }
-
-  GetContentClient()->plugin()->PluginProcessStarted(
-      plugin.get() ? plugin->plugin_info().name : base::string16());
-
-  channel()->AddFilter(new EnsureTerminateMessageFilter());
-
-  // This is needed because we call some code which uses Blink strings.
-  blink_platform_impl_.reset(new BlinkPlatformImpl);
-  blink::initialize(blink_platform_impl_.get());
-}
-
-PluginThread::~PluginThread() {
-}
-
-void PluginThread::SetForcefullyTerminatePluginProcess() {
-  forcefully_terminate_plugin_process_ = true;
-}
-
-void PluginThread::Shutdown() {
-  ChildThreadImpl::Shutdown();
-
-  if (preloaded_plugin_module_) {
-    base::UnloadNativeLibrary(preloaded_plugin_module_);
-    preloaded_plugin_module_ = NULL;
-  }
-  NPChannelBase::CleanupChannels();
-  PluginLib::UnloadAllPlugins();
-
-  if (forcefully_terminate_plugin_process_)
-    base::Process::Current().Terminate(0, /* wait= */ false);
-
-  lazy_tls.Pointer()->Set(NULL);
-}
-
-PluginThread* PluginThread::current() {
-  return lazy_tls.Pointer()->Get();
-}
-
-bool PluginThread::OnControlMessageReceived(const IPC::Message& msg) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(PluginThread, msg)
-    IPC_MESSAGE_HANDLER(PluginProcessMsg_CreateChannel, OnCreateChannel)
-    IPC_MESSAGE_HANDLER(PluginProcessMsg_NotifyRenderersOfPendingShutdown,
-                        OnNotifyRenderersOfPendingShutdown)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  return handled;
-}
-
-void PluginThread::OnCreateChannel(int renderer_id,
-                                   bool incognito) {
-  scoped_refptr<PluginChannel> channel(PluginChannel::GetPluginChannel(
-      renderer_id, ChildProcess::current()->io_task_runner()));
-  IPC::ChannelHandle channel_handle;
-  if (channel.get()) {
-    channel_handle.name = channel->channel_handle().name;
-#if defined(OS_POSIX)
-    // On POSIX, pass the renderer-side FD.
-    channel_handle.socket =
-        base::FileDescriptor(channel->TakeRendererFileDescriptor());
-#endif
-    channel->set_incognito(incognito);
-  }
-
-  Send(new PluginProcessHostMsg_ChannelCreated(channel_handle));
-}
-
-void PluginThread::OnNotifyRenderersOfPendingShutdown() {
-  PluginChannel::NotifyRenderersOfPendingShutdown();
-}
-
-}  // namespace content
diff --git a/content/plugin/plugin_thread.h b/content/plugin/plugin_thread.h
deleted file mode 100644
index b4152d6..0000000
--- a/content/plugin/plugin_thread.h
+++ /dev/null
@@ -1,65 +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 CONTENT_PLUGIN_PLUGIN_THREAD_H_
-#define CONTENT_PLUGIN_PLUGIN_THREAD_H_
-
-#include <stdint.h>
-
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/native_library.h"
-#include "build/build_config.h"
-#include "content/child/child_thread_impl.h"
-#include "content/child/npapi/plugin_lib.h"
-#include "content/plugin/plugin_channel.h"
-
-#if defined(OS_POSIX)
-#include "base/file_descriptor_posix.h"
-#endif
-
-namespace content {
-class BlinkPlatformImpl;
-
-// The PluginThread class represents a background thread where plugin instances
-// live.  Communication occurs between WebPluginDelegateProxy in the renderer
-// process and WebPluginDelegateStub in this thread through IPC messages.
-class PluginThread : public ChildThreadImpl {
- public:
-  PluginThread();
-  ~PluginThread() override;
-  void Shutdown() override;
-
-  // Returns the one plugin thread.
-  static PluginThread* current();
-
-  // Tells the plugin thread to terminate the process forcefully instead of
-  // exiting cleanly.
-  void SetForcefullyTerminatePluginProcess();
-
- private:
-  bool OnControlMessageReceived(const IPC::Message& msg) override;
-
-  // Callback for when a channel has been created.
-  void OnCreateChannel(int renderer_id, bool incognito);
-  void OnPluginMessage(const std::vector<uint8_t>& data);
-  void OnNotifyRenderersOfPendingShutdown();
-#if defined(OS_MACOSX)
-  void OnAppActivated();
-  void OnPluginFocusNotify(uint32_t instance_id);
-#endif
-
-  // The plugin module which is preloaded in Init
-  base::NativeLibrary preloaded_plugin_module_;
-
-  bool forcefully_terminate_plugin_process_;
-
-  scoped_ptr<BlinkPlatformImpl> blink_platform_impl_;
-
-  DISALLOW_COPY_AND_ASSIGN(PluginThread);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PLUGIN_PLUGIN_THREAD_H_
diff --git a/content/plugin/webplugin_accelerated_surface_proxy_mac.cc b/content/plugin/webplugin_accelerated_surface_proxy_mac.cc
deleted file mode 100644
index a790f470..0000000
--- a/content/plugin/webplugin_accelerated_surface_proxy_mac.cc
+++ /dev/null
@@ -1,83 +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.
-
-#import <OpenGL/OpenGL.h>
-#include <stdint.h>
-
-#include "content/plugin/webplugin_accelerated_surface_proxy_mac.h"
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "content/plugin/webplugin_proxy.h"
-#include "content/public/common/content_switches.h"
-#include "ui/surface/accelerated_surface_mac.h"
-#include "ui/surface/transport_dib.h"
-
-namespace content {
-
-WebPluginAcceleratedSurfaceProxy* WebPluginAcceleratedSurfaceProxy::Create(
-    WebPluginProxy* plugin_proxy,
-    gfx::GpuPreference gpu_preference) {
-  // This code path shouldn't be taken if CA plugins are disabled
-  // because the CA drawing model shouldn't be advertised.
-  DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch(
-      switches::kDisableCoreAnimationPlugins));
-
-  AcceleratedSurface* surface = new AcceleratedSurface;
-  // It's possible for OpenGL to fail to initialize (e.g., if an incompatible
-  // mode is forced via flags), so handle that gracefully.
-  if (!surface->Initialize(NULL, true, gpu_preference)) {
-    delete surface;
-    return NULL;
-  }
-
-  return new WebPluginAcceleratedSurfaceProxy(plugin_proxy, surface);
-}
-
-WebPluginAcceleratedSurfaceProxy::WebPluginAcceleratedSurfaceProxy(
-    WebPluginProxy* plugin_proxy,
-    AcceleratedSurface* surface)
-        : plugin_proxy_(plugin_proxy),
-          surface_(surface) {
-}
-
-WebPluginAcceleratedSurfaceProxy::~WebPluginAcceleratedSurfaceProxy() {
-  if (surface_) {
-    surface_->Destroy();
-    delete surface_;
-    surface_ = NULL;
-  }
-}
-
-void WebPluginAcceleratedSurfaceProxy::SetSize(const gfx::Size& size) {
-  if (!surface_)
-    return;
-
-  uint32_t io_surface_id = surface_->SetSurfaceSize(size);
-  // If allocation fails for some reason, still inform the plugin proxy.
-  plugin_proxy_->AcceleratedPluginAllocatedIOSurface(
-      size.width(), size.height(), io_surface_id);
-}
-
-CGLContextObj WebPluginAcceleratedSurfaceProxy::context() {
-  return surface_ ? surface_->context() : NULL;
-}
-
-void WebPluginAcceleratedSurfaceProxy::StartDrawing() {
-  if (!surface_)
-    return;
-
-  surface_->MakeCurrent();
-  surface_->Clear(gfx::Rect(surface_->GetSize()));
-}
-
-void WebPluginAcceleratedSurfaceProxy::EndDrawing() {
-  if (!surface_)
-    return;
-
-  surface_->SwapBuffers();
-  plugin_proxy_->AcceleratedPluginSwappedIOSurface();
-}
-
-}  // namespace content
diff --git a/content/plugin/webplugin_accelerated_surface_proxy_mac.h b/content/plugin/webplugin_accelerated_surface_proxy_mac.h
deleted file mode 100644
index 6de53788..0000000
--- a/content/plugin/webplugin_accelerated_surface_proxy_mac.h
+++ /dev/null
@@ -1,49 +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 CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_
-#define CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "content/child/npapi/webplugin_accelerated_surface_mac.h"
-#include "ui/gl/gpu_preference.h"
-
-class AcceleratedSurface;
-
-namespace content {
-class WebPluginProxy;
-
-// Out-of-process implementation of WebPluginAcceleratedSurface that proxies
-// calls through a WebPluginProxy.
-class WebPluginAcceleratedSurfaceProxy : public WebPluginAcceleratedSurface {
- public:
-  // Creates a new WebPluginAcceleratedSurfaceProxy that uses plugin_proxy
-  // to proxy calls. plugin_proxy must outlive this object. Returns NULL if
-  // initialization fails.
-  static WebPluginAcceleratedSurfaceProxy* Create(
-      WebPluginProxy* plugin_proxy,
-      gfx::GpuPreference gpu_preference);
-
-  ~WebPluginAcceleratedSurfaceProxy() override;
-
-  // WebPluginAcceleratedSurface implementation.
-  void SetSize(const gfx::Size& size) override;
-  CGLContextObj context() override;
-  void StartDrawing() override;
-  void EndDrawing() override;
-
- private:
-  WebPluginAcceleratedSurfaceProxy(WebPluginProxy* plugin_proxy,
-                                   AcceleratedSurface* surface);
-
-  WebPluginProxy* plugin_proxy_;  // Weak ref.
-  AcceleratedSurface* surface_;
-
-  DISALLOW_COPY_AND_ASSIGN(WebPluginAcceleratedSurfaceProxy);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_
diff --git a/content/plugin/webplugin_delegate_stub.cc b/content/plugin/webplugin_delegate_stub.cc
deleted file mode 100644
index e6927bbd..0000000
--- a/content/plugin/webplugin_delegate_stub.cc
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/plugin/webplugin_delegate_stub.h"
-
-#include "build/build_config.h"
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/strings/string_number_conversions.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/webplugin_delegate_impl.h"
-#include "content/child/npapi/webplugin_resource_client.h"
-#include "content/child/plugin_messages.h"
-#include "content/common/cursors/webcursor.h"
-#include "content/plugin/plugin_channel.h"
-#include "content/plugin/plugin_thread.h"
-#include "content/plugin/webplugin_proxy.h"
-#include "content/public/common/content_client.h"
-#include "content/public/common/content_constants.h"
-#include "content/public/common/content_switches.h"
-#include "third_party/WebKit/public/platform/WebCursorInfo.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "third_party/npapi/bindings/npruntime.h"
-
-using blink::WebCursorInfo;
-
-namespace content {
-
-static void DestroyWebPluginAndDelegate(
-    WebPluginDelegateImpl* delegate,
-    WebPlugin* webplugin) {
-  if (delegate)
-    delegate->PluginDestroyed();
-
-  delete webplugin;
-}
-
-WebPluginDelegateStub::WebPluginDelegateStub(
-    const std::string& mime_type, int instance_id, PluginChannel* channel) :
-    mime_type_(mime_type),
-    instance_id_(instance_id),
-    channel_(channel),
-    delegate_(NULL),
-    webplugin_(NULL),
-    in_destructor_(false) {
-  DCHECK(channel);
-}
-
-WebPluginDelegateStub::~WebPluginDelegateStub() {
-  in_destructor_ = true;
-  GetContentClient()->SetActiveURL(page_url_);
-
-  if (channel_->in_send()) {
-    // The delegate or an npobject is in the callstack, so don't delete it
-    // right away.
-    base::MessageLoop::current()->PostNonNestableTask(
-        FROM_HERE,
-        base::Bind(&DestroyWebPluginAndDelegate,
-                   delegate_,
-                   webplugin_));
-  } else {
-    // Safe to delete right away.
-    DestroyWebPluginAndDelegate(delegate_, webplugin_);
-  }
-}
-
-bool WebPluginDelegateStub::OnMessageReceived(const IPC::Message& msg) {
-  GetContentClient()->SetActiveURL(page_url_);
-
-  // A plugin can execute a script to delete itself in any of its NPP methods.
-  // Hold an extra reference to ourself so that if this does occur and we're
-  // handling a sync message, we don't crash when attempting to send a reply.
-  // The exception to this is when we're already in the destructor.
-  if (!in_destructor_)
-    AddRef();
-
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(WebPluginDelegateStub, msg)
-    IPC_MESSAGE_HANDLER(PluginMsg_Init, OnInit)
-    IPC_MESSAGE_HANDLER(PluginMsg_SetFocus, OnSetFocus)
-    IPC_MESSAGE_HANDLER(PluginMsg_HandleInputEvent, OnHandleInputEvent)
-    IPC_MESSAGE_HANDLER(PluginMsg_Paint, OnPaint)
-    IPC_MESSAGE_HANDLER(PluginMsg_DidPaint, OnDidPaint)
-    IPC_MESSAGE_HANDLER(PluginMsg_UpdateGeometry, OnUpdateGeometry)
-    IPC_MESSAGE_HANDLER(PluginMsg_UpdateGeometrySync, OnUpdateGeometry)
-    IPC_MESSAGE_HANDLER(PluginMsg_SetContentAreaFocus, OnSetContentAreaFocus)
-#if defined(OS_MACOSX)
-    IPC_MESSAGE_HANDLER(PluginMsg_SetWindowFocus, OnSetWindowFocus)
-    IPC_MESSAGE_HANDLER(PluginMsg_ContainerHidden, OnContainerHidden)
-    IPC_MESSAGE_HANDLER(PluginMsg_ContainerShown, OnContainerShown)
-    IPC_MESSAGE_HANDLER(PluginMsg_WindowFrameChanged, OnWindowFrameChanged)
-    IPC_MESSAGE_HANDLER(PluginMsg_ImeCompositionCompleted,
-                        OnImeCompositionCompleted)
-#endif
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-
-  if (!in_destructor_)
-    Release();
-
-  DCHECK(handled);
-  return handled;
-}
-
-bool WebPluginDelegateStub::Send(IPC::Message* msg) {
-  return channel_->Send(msg);
-}
-
-void WebPluginDelegateStub::OnInit(const PluginMsg_Init_Params& params,
-                                   bool* transparent,
-                                   bool* result) {
-  page_url_ = params.page_url;
-  GetContentClient()->SetActiveURL(page_url_);
-
-  *transparent = false;
-  *result = false;
-  if (params.arg_names.size() != params.arg_values.size()) {
-    NOTREACHED();
-    return;
-  }
-
-  const base::CommandLine& command_line =
-      *base::CommandLine::ForCurrentProcess();
-  base::FilePath path =
-      command_line.GetSwitchValuePath(switches::kPluginPath);
-
-  webplugin_ = new WebPluginProxy(channel_.get(),
-                                  instance_id_,
-                                  page_url_,
-                                  params.host_render_view_routing_id);
-  delegate_ = WebPluginDelegateImpl::Create(webplugin_, path, mime_type_);
-  if (delegate_) {
-    if (delegate_->GetQuirks() &
-        WebPluginDelegateImpl::PLUGIN_QUIRK_DIE_AFTER_UNLOAD) {
-      PluginThread::current()->SetForcefullyTerminatePluginProcess();
-    }
-
-    webplugin_->set_delegate(delegate_);
-    std::vector<std::string> arg_names = params.arg_names;
-    std::vector<std::string> arg_values = params.arg_values;
-
-    *result = delegate_->Initialize(params.url,
-                                    arg_names,
-                                    arg_values,
-                                    params.load_manually);
-    *transparent = delegate_->instance()->transparent();
-  }
-}
-
-void WebPluginDelegateStub::OnSetFocus(bool focused) {
-  delegate_->SetFocus(focused);
-}
-
-void WebPluginDelegateStub::OnHandleInputEvent(
-    const blink::WebInputEvent *event,
-    bool* handled,
-    WebCursor* cursor) {
-  WebCursor::CursorInfo cursor_info;
-  *handled = delegate_->HandleInputEvent(*event, &cursor_info);
-  cursor->InitFromCursorInfo(cursor_info);
-}
-
-void WebPluginDelegateStub::OnPaint(const gfx::Rect& damaged_rect) {
-  webplugin_->Paint(damaged_rect);
-}
-
-void WebPluginDelegateStub::OnDidPaint() {
-  webplugin_->DidPaint();
-}
-
-void WebPluginDelegateStub::OnUpdateGeometry(
-    const PluginMsg_UpdateGeometry_Param& param) {
-  webplugin_->UpdateGeometry(
-      param.window_rect, param.clip_rect,
-      param.windowless_buffer0, param.windowless_buffer1,
-      param.windowless_buffer_index);
-}
-
-void WebPluginDelegateStub::OnSetContentAreaFocus(bool has_focus) {
-  if (delegate_)
-    delegate_->SetContentAreaHasFocus(has_focus);
-}
-
-#if defined(OS_MACOSX)
-void WebPluginDelegateStub::OnSetWindowFocus(bool has_focus) {
-  if (delegate_)
-    delegate_->SetWindowHasFocus(has_focus);
-}
-
-void WebPluginDelegateStub::OnContainerHidden() {
-  if (delegate_)
-    delegate_->SetContainerVisibility(false);
-}
-
-void WebPluginDelegateStub::OnContainerShown(gfx::Rect window_frame,
-                                             gfx::Rect view_frame,
-                                             bool has_focus) {
-  if (delegate_) {
-    delegate_->WindowFrameChanged(window_frame, view_frame);
-    delegate_->SetContainerVisibility(true);
-    delegate_->SetWindowHasFocus(has_focus);
-  }
-}
-
-void WebPluginDelegateStub::OnWindowFrameChanged(const gfx::Rect& window_frame,
-                                                 const gfx::Rect& view_frame) {
-  if (delegate_)
-    delegate_->WindowFrameChanged(window_frame, view_frame);
-}
-
-void WebPluginDelegateStub::OnImeCompositionCompleted(
-    const base::string16& text) {
-  if (delegate_)
-    delegate_->ImeCompositionCompleted(text);
-}
-#endif  // OS_MACOSX
-
-}  // namespace content
diff --git a/content/plugin/webplugin_delegate_stub.h b/content/plugin/webplugin_delegate_stub.h
deleted file mode 100644
index 69b62fa..0000000
--- a/content/plugin/webplugin_delegate_stub.h
+++ /dev/null
@@ -1,98 +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 CONTENT_PLUGIN_WEBPLUGIN_DELEGATE_STUB_H_
-#define CONTENT_PLUGIN_WEBPLUGIN_DELEGATE_STUB_H_
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "build/build_config.h"
-#include "ipc/ipc_listener.h"
-#include "ipc/ipc_sender.h"
-#include "third_party/npapi/bindings/npapi.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/native_widget_types.h"
-#include "url/gurl.h"
-
-struct PluginMsg_Init_Params;
-struct PluginMsg_UpdateGeometry_Param;
-
-namespace blink {
-class WebInputEvent;
-}
-
-namespace content {
-class PluginChannel;
-class WebCursor;
-class WebPluginDelegateImpl;
-class WebPluginProxy;
-
-// Converts the IPC messages from WebPluginDelegateProxy into calls to the
-// actual WebPluginDelegateImpl object.
-class WebPluginDelegateStub : public IPC::Listener,
-                              public IPC::Sender,
-                              public base::RefCounted<WebPluginDelegateStub> {
- public:
-  WebPluginDelegateStub(const std::string& mime_type, int instance_id,
-                        PluginChannel* channel);
-
-  // IPC::Listener implementation:
-  bool OnMessageReceived(const IPC::Message& msg) override;
-
-  // IPC::Sender implementation:
-  bool Send(IPC::Message* msg) override;
-
-  int instance_id() { return instance_id_; }
-  WebPluginDelegateImpl* delegate() { return delegate_; }
-  WebPluginProxy* webplugin() { return webplugin_; }
-
- private:
-  friend class base::RefCounted<WebPluginDelegateStub>;
-
-  ~WebPluginDelegateStub() override;
-
-  // Message handlers for the WebPluginDelegate calls that are proxied from the
-  // renderer over the IPC channel.
-  void OnInit(const PluginMsg_Init_Params& params,
-              bool* transparent,
-              bool* result);
-  void OnSetFocus(bool focused);
-  void OnHandleInputEvent(const blink::WebInputEvent* event,
-                          bool* handled, WebCursor* cursor);
-  void OnPaint(const gfx::Rect& damaged_rect);
-  void OnDidPaint();
-  void OnUpdateGeometry(const PluginMsg_UpdateGeometry_Param& param);
-
-  void OnSetContentAreaFocus(bool has_focus);
-#if defined(OS_MACOSX)
-  void OnSetWindowFocus(bool has_focus);
-  void OnContainerHidden();
-  void OnContainerShown(gfx::Rect window_frame, gfx::Rect view_frame,
-                        bool has_focus);
-  void OnWindowFrameChanged(const gfx::Rect& window_frame,
-                            const gfx::Rect& view_frame);
-  void OnImeCompositionCompleted(const base::string16& text);
-#endif
-
-  std::string mime_type_;
-  int instance_id_;
-
-  scoped_refptr<PluginChannel> channel_;
-
-  WebPluginDelegateImpl* delegate_;
-  WebPluginProxy* webplugin_;
-  bool in_destructor_;
-
-  // The url of the main frame hosting the plugin.
-  GURL page_url_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(WebPluginDelegateStub);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PLUGIN_WEBPLUGIN_DELEGATE_STUB_H_
diff --git a/content/plugin/webplugin_proxy.cc b/content/plugin/webplugin_proxy.cc
deleted file mode 100644
index ca3ddf2..0000000
--- a/content/plugin/webplugin_proxy.cc
+++ /dev/null
@@ -1,405 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/plugin/webplugin_proxy.h"
-
-#include "build/build_config.h"
-
-#include "base/bind.h"
-#include "base/lazy_instance.h"
-#include "content/child/npapi/webplugin_delegate_impl.h"
-#include "content/child/plugin_messages.h"
-#include "content/plugin/plugin_channel.h"
-#include "content/plugin/plugin_thread.h"
-#include "content/public/common/content_client.h"
-#include "skia/ext/platform_canvas.h"
-#include "ui/gfx/canvas.h"
-#include "url/url_constants.h"
-
-#if defined(OS_MACOSX)
-#include "base/mac/mac_util.h"
-#include "base/mac/scoped_cftyperef.h"
-#include "content/plugin/webplugin_accelerated_surface_proxy_mac.h"
-#endif
-
-#if defined(OS_WIN)
-#include "content/common/plugin_process_messages.h"
-#include "content/public/common/sandbox_init.h"
-#endif
-
-namespace content {
-
-WebPluginProxy::SharedTransportDIB::SharedTransportDIB(TransportDIB* dib)
-    : dib_(dib) {
-}
-
-WebPluginProxy::SharedTransportDIB::~SharedTransportDIB() {
-}
-
-WebPluginProxy::WebPluginProxy(
-    PluginChannel* channel,
-    int route_id,
-    const GURL& page_url,
-    int host_render_view_routing_id)
-    : channel_(channel),
-      route_id_(route_id),
-      delegate_(NULL),
-      waiting_for_paint_(false),
-      page_url_(page_url),
-      windowless_buffer_index_(0),
-      host_render_view_routing_id_(host_render_view_routing_id),
-      weak_factory_(this) {
-}
-
-WebPluginProxy::~WebPluginProxy() {
-#if defined(OS_MACOSX)
-  // Destroy the surface early, since it may send messages during cleanup.
-  if (accelerated_surface_)
-    accelerated_surface_.reset();
-#endif
-}
-
-bool WebPluginProxy::Send(IPC::Message* msg) {
-  return channel_->Send(msg);
-}
-
-void WebPluginProxy::Invalidate() {
-  gfx::Rect rect(0, 0,
-                 delegate_->GetRect().width(),
-                 delegate_->GetRect().height());
-  InvalidateRect(rect);
-}
-
-void WebPluginProxy::InvalidateRect(const gfx::Rect& rect) {
-#if defined(OS_MACOSX)
-  // If this is a Core Animation plugin, all we need to do is inform the
-  // delegate.
-  if (!windowless_context()) {
-    delegate_->PluginDidInvalidate();
-    return;
-  }
-
-  // Some plugins will send invalidates larger than their own rect when
-  // offscreen, so constrain invalidates to the plugin rect.
-  gfx::Rect plugin_rect = delegate_->GetRect();
-  plugin_rect.set_origin(gfx::Point(0, 0));
-  plugin_rect.Intersect(rect);
-  const gfx::Rect invalidate_rect(plugin_rect);
-#else
-  const gfx::Rect invalidate_rect(rect);
-#endif
-  damaged_rect_.Union(invalidate_rect);
-  // Ignore NPN_InvalidateRect calls with empty rects.  Also don't send an
-  // invalidate if it's outside the clipping region, since if we did it won't
-  // lead to a paint and we'll be stuck waiting forever for a DidPaint response.
-  //
-  // TODO(piman): There is a race condition here, because this test assumes
-  // that when the paint actually occurs, the clip rect will not have changed.
-  // This is not true because scrolling (or window resize) could occur and be
-  // handled by the renderer before it receives the InvalidateRect message,
-  // changing the clip rect and then not painting.
-  if (damaged_rect_.IsEmpty() ||
-      !delegate_->GetClipRect().Intersects(damaged_rect_))
-    return;
-
-  // Only send a single InvalidateRect message at a time.  From DidPaint we
-  // will dispatch an additional InvalidateRect message if necessary.
-  if (!waiting_for_paint_) {
-    waiting_for_paint_ = true;
-    // Invalidates caused by calls to NPN_InvalidateRect/NPN_InvalidateRgn
-    // need to be painted asynchronously as per the NPAPI spec.
-    base::MessageLoop::current()->PostTask(
-        FROM_HERE,
-        base::Bind(&WebPluginProxy::OnPaint,
-                   weak_factory_.GetWeakPtr(),
-                   damaged_rect_));
-    damaged_rect_ = gfx::Rect();
-  }
-}
-
-bool WebPluginProxy::FindProxyForUrl(const GURL& url, std::string* proxy_list) {
-  bool result = false;
-  Send(new PluginHostMsg_ResolveProxy(route_id_, url, &result, proxy_list));
-  return result;
-}
-
-void WebPluginProxy::SetCookie(const GURL& url,
-                               const GURL& first_party_for_cookies,
-                               const std::string& cookie) {
-  Send(new PluginHostMsg_SetCookie(route_id_, url,
-                                   first_party_for_cookies, cookie));
-}
-
-std::string WebPluginProxy::GetCookies(const GURL& url,
-                                       const GURL& first_party_for_cookies) {
-  std::string cookies;
-  Send(new PluginHostMsg_GetCookies(route_id_, url,
-                                    first_party_for_cookies, &cookies));
-
-  return cookies;
-}
-
-int WebPluginProxy::GetRendererId() {
-  if (channel_.get())
-    return channel_->renderer_id();
-  return -1;
-}
-
-void WebPluginProxy::DidPaint() {
-  // If we have an accumulated damaged rect, then check to see if we need to
-  // send out another InvalidateRect message.
-  waiting_for_paint_ = false;
-  if (!damaged_rect_.IsEmpty())
-    InvalidateRect(damaged_rect_);
-}
-
-void WebPluginProxy::Paint(const gfx::Rect& rect) {
-#if defined(OS_MACOSX)
-  if (!windowless_context())
-    return;
-#else
-  if (!windowless_canvas() || !windowless_canvas()->getDevice())
-    return;
-#endif
-
-  // Clear the damaged area so that if the plugin doesn't paint there we won't
-  // end up with the old values.
-  gfx::Rect offset_rect = rect;
-  offset_rect.Offset(delegate_->GetRect().OffsetFromOrigin());
-#if defined(OS_MACOSX)
-  CGContextSaveGState(windowless_context());
-  // It is possible for windowless_contexts_ to change during plugin painting
-  // (since the plugin can make a synchronous call during paint event handling),
-  // in which case we don't want to try to restore later. Not an owning ref
-  // since owning the ref without owning the shared backing memory doesn't make
-  // sense, so this should only be used for pointer comparisons.
-  CGContextRef saved_context_weak = windowless_context();
-  // We also save the buffer index for the comparison because if we flip buffers
-  // but haven't reallocated them then we do need to restore the context because
-  // it is going to continue to be used.
-  int saved_index = windowless_buffer_index_;
-
-  CGContextClipToRect(windowless_context(), rect.ToCGRect());
-  // TODO(caryclark): This is a temporary workaround to allow the Darwin / Skia
-  // port to share code with the Darwin / CG port. All ports will eventually use
-  // the common code below.
-  delegate_->CGPaint(windowless_context(), rect);
-  if (windowless_contexts_[saved_index].get() == saved_context_weak)
-    CGContextRestoreGState(windowless_contexts_[saved_index]);
-#else
-  // See above comment about windowless_context_ changing.
-  // http::/crbug.com/139462
-  skia::RefPtr<SkCanvas> saved_canvas = windowless_canvas();
-
-  saved_canvas->save();
-
-  // The given clip rect is relative to the plugin coordinate system.
-  SkRect sk_rect = { SkIntToScalar(rect.x()),
-                     SkIntToScalar(rect.y()),
-                     SkIntToScalar(rect.right()),
-                     SkIntToScalar(rect.bottom()) };
-  saved_canvas->clipRect(sk_rect);
-
-  // Fill a transparent value so that if the plugin supports transparency that
-  // will work.
-  saved_canvas->drawColor(SkColorSetARGB(0, 0, 0, 0), SkXfermode::kSrc_Mode);
-
-  // Bring the windowless canvas into the window coordinate system, which is
-  // how the plugin expects to draw (since the windowless API was originally
-  // designed just for scribbling over the web page).
-  saved_canvas->translate(SkIntToScalar(-delegate_->GetRect().x()),
-                          SkIntToScalar(-delegate_->GetRect().y()));
-
-  // Before we send the invalidate, paint so that renderer uses the updated
-  // bitmap.
-  delegate_->Paint(saved_canvas.get(), offset_rect);
-
-  saved_canvas->restore();
-#endif
-}
-
-void WebPluginProxy::UpdateGeometry(
-    const gfx::Rect& window_rect,
-    const gfx::Rect& clip_rect,
-    const TransportDIB::Handle& windowless_buffer0,
-    const TransportDIB::Handle& windowless_buffer1,
-    int windowless_buffer_index) {
-  gfx::Rect old = delegate_->GetRect();
-  gfx::Rect old_clip_rect = delegate_->GetClipRect();
-
-  // Update the buffers before doing anything that could call into plugin code,
-  // so that we don't process buffer changes out of order if plugins make
-  // synchronous calls that lead to nested UpdateGeometry calls.
-  if (TransportDIB::is_valid_handle(windowless_buffer0)) {
-    // The plugin's rect changed, so now we have new buffers to draw into.
-    SetWindowlessBuffers(windowless_buffer0,
-                         windowless_buffer1,
-                         window_rect);
-  }
-
-  DCHECK(0 <= windowless_buffer_index && windowless_buffer_index <= 1);
-  windowless_buffer_index_ = windowless_buffer_index;
-
-#if defined(OS_MACOSX)
-  delegate_->UpdateGeometryAndContext(
-      window_rect, clip_rect, windowless_context());
-#else
-  delegate_->UpdateGeometry(window_rect, clip_rect);
-#endif
-
-  // Send over any pending invalidates which occured when the plugin was
-  // off screen.
-  if (!clip_rect.IsEmpty() && !damaged_rect_.IsEmpty()) {
-    InvalidateRect(damaged_rect_);
-  }
-}
-
-#if defined(OS_WIN)
-
-void WebPluginProxy::CreateCanvasFromHandle(
-    const TransportDIB::Handle& dib_handle,
-    const gfx::Rect& window_rect,
-    skia::RefPtr<SkCanvas>* canvas) {
-  *canvas = skia::AdoptRef(skia::CreatePlatformCanvas(
-      window_rect.width(), window_rect.height(), true, dib_handle.GetHandle(),
-      skia::RETURN_NULL_ON_FAILURE));
-  // The canvas does not own the section so we need to close it now.
-  dib_handle.Close();
-}
-
-void WebPluginProxy::SetWindowlessBuffers(
-    const TransportDIB::Handle& windowless_buffer0,
-    const TransportDIB::Handle& windowless_buffer1,
-    const gfx::Rect& window_rect) {
-  CreateCanvasFromHandle(windowless_buffer0,
-                         window_rect,
-                         &windowless_canvases_[0]);
-  if (!windowless_canvases_[0]) {
-    windowless_canvases_[1].clear();
-    return;
-  }
-  CreateCanvasFromHandle(windowless_buffer1,
-                         window_rect,
-                         &windowless_canvases_[1]);
-  if (!windowless_canvases_[1]) {
-    windowless_canvases_[0].clear();
-    return;
-  }
-}
-
-#elif defined(OS_MACOSX)
-
-void WebPluginProxy::CreateDIBAndCGContextFromHandle(
-    const TransportDIB::Handle& dib_handle,
-    const gfx::Rect& window_rect,
-    scoped_ptr<TransportDIB>* dib_out,
-    base::ScopedCFTypeRef<CGContextRef>* cg_context_out) {
-  // Convert the shared memory handle to a handle that works in our process,
-  // and then use that to create a CGContextRef.
-  TransportDIB* dib = TransportDIB::Map(dib_handle);
-  CGContextRef cg_context = NULL;
-  if (dib) {
-    cg_context = CGBitmapContextCreate(
-        dib->memory(),
-        window_rect.width(),
-        window_rect.height(),
-        8,
-        4 * window_rect.width(),
-        base::mac::GetSystemColorSpace(),
-        kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
-    CGContextTranslateCTM(cg_context, 0, window_rect.height());
-    CGContextScaleCTM(cg_context, 1, -1);
-  }
-  dib_out->reset(dib);
-  cg_context_out->reset(cg_context);
-}
-
-void WebPluginProxy::SetWindowlessBuffers(
-    const TransportDIB::Handle& windowless_buffer0,
-    const TransportDIB::Handle& windowless_buffer1,
-    const gfx::Rect& window_rect) {
-  CreateDIBAndCGContextFromHandle(windowless_buffer0,
-                                  window_rect,
-                                  &windowless_dibs_[0],
-                                  &windowless_contexts_[0]);
-  CreateDIBAndCGContextFromHandle(windowless_buffer1,
-                                  window_rect,
-                                  &windowless_dibs_[1],
-                                  &windowless_contexts_[1]);
-}
-
-#else
-
-void WebPluginProxy::SetWindowlessBuffers(
-    const TransportDIB::Handle& windowless_buffer0,
-    const TransportDIB::Handle& windowless_buffer1,
-    const gfx::Rect& window_rect) {
-  NOTIMPLEMENTED();
-}
-
-#endif
-
-void WebPluginProxy::CancelDocumentLoad() {
-  Send(new PluginHostMsg_CancelDocumentLoad(route_id_));
-}
-
-void WebPluginProxy::DidStartLoading() {
-  Send(new PluginHostMsg_DidStartLoading(route_id_));
-}
-
-void WebPluginProxy::DidStopLoading() {
-  Send(new PluginHostMsg_DidStopLoading(route_id_));
-}
-
-#if defined(OS_MACOSX)
-void WebPluginProxy::FocusChanged(bool focused) {
-  IPC::Message* msg = new PluginHostMsg_FocusChanged(route_id_, focused);
-  Send(msg);
-}
-
-void WebPluginProxy::StartIme() {
-  IPC::Message* msg = new PluginHostMsg_StartIme(route_id_);
-  // This message can be sent during event-handling, and needs to be delivered
-  // within that context.
-  msg->set_unblock(true);
-  Send(msg);
-}
-
-WebPluginAcceleratedSurface* WebPluginProxy::GetAcceleratedSurface(
-    gfx::GpuPreference gpu_preference) {
-  if (!accelerated_surface_)
-    accelerated_surface_.reset(
-        WebPluginAcceleratedSurfaceProxy::Create(this, gpu_preference));
-  return accelerated_surface_.get();
-}
-
-void WebPluginProxy::AcceleratedPluginEnabledRendering() {
-  Send(new PluginHostMsg_AcceleratedPluginEnabledRendering(route_id_));
-}
-
-void WebPluginProxy::AcceleratedPluginAllocatedIOSurface(int32_t width,
-                                                         int32_t height,
-                                                         uint32_t surface_id) {
-  Send(new PluginHostMsg_AcceleratedPluginAllocatedIOSurface(
-      route_id_, width, height, surface_id));
-}
-
-void WebPluginProxy::AcceleratedPluginSwappedIOSurface() {
-  Send(new PluginHostMsg_AcceleratedPluginSwappedIOSurface(
-      route_id_));
-}
-#endif
-
-void WebPluginProxy::OnPaint(const gfx::Rect& damaged_rect) {
-  GetContentClient()->SetActiveURL(page_url_);
-
-  Paint(damaged_rect);
-  Send(new PluginHostMsg_InvalidateRect(route_id_, damaged_rect));
-}
-
-bool WebPluginProxy::IsOffTheRecord() {
-  return channel_->incognito();
-}
-
-}  // namespace content
diff --git a/content/plugin/webplugin_proxy.h b/content/plugin/webplugin_proxy.h
deleted file mode 100644
index 645bd94c..0000000
--- a/content/plugin/webplugin_proxy.h
+++ /dev/null
@@ -1,176 +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 CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_
-#define CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_
-
-#include <stdint.h>
-
-#include <string>
-
-#include "base/containers/hash_tables.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "build/build_config.h"
-#include "content/child/npapi/webplugin.h"
-#include "ipc/ipc_message.h"
-#include "ipc/ipc_sender.h"
-#include "skia/ext/refptr.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "ui/gl/gpu_preference.h"
-#include "ui/surface/transport_dib.h"
-#include "url/gurl.h"
-
-#if defined(OS_MACOSX)
-#include <ApplicationServices/ApplicationServices.h>
-
-#include "base/mac/scoped_cftyperef.h"
-#endif
-
-namespace content {
-class PluginChannel;
-class WebPluginDelegateImpl;
-
-#if defined(OS_MACOSX)
-class WebPluginAcceleratedSurfaceProxy;
-#endif
-
-// This is an implementation of WebPlugin that proxies all calls to the
-// renderer.
-class WebPluginProxy : public WebPlugin,
-                       public IPC::Sender {
- public:
-  // Creates a new proxy for WebPlugin, using the given sender to send the
-  // marshalled WebPlugin calls.
-  WebPluginProxy(PluginChannel* channel,
-                 int route_id,
-                 const GURL& page_url,
-                 int host_render_view_routing_id);
-  ~WebPluginProxy() override;
-
-  void set_delegate(WebPluginDelegateImpl* d) { delegate_ = d; }
-
-  // WebPlugin overrides
-  void Invalidate() override;
-  void InvalidateRect(const gfx::Rect& rect) override;
-  bool FindProxyForUrl(const GURL& url, std::string* proxy_list) override;
-  void SetCookie(const GURL& url,
-                 const GURL& first_party_for_cookies,
-                 const std::string& cookie) override;
-  std::string GetCookies(const GURL& url,
-                         const GURL& first_party_for_cookies) override;
-  void UpdateGeometry(const gfx::Rect& window_rect,
-                      const gfx::Rect& clip_rect,
-                      const TransportDIB::Handle& windowless_buffer0,
-                      const TransportDIB::Handle& windowless_buffer1,
-                      int windowless_buffer_index);
-  void CancelDocumentLoad() override;
-  void DidStartLoading() override;
-  void DidStopLoading() override;
-  bool IsOffTheRecord() override;
-#if defined(OS_MACOSX)
-  void FocusChanged(bool focused) override;
-  void StartIme() override;
-  WebPluginAcceleratedSurface* GetAcceleratedSurface(
-      gfx::GpuPreference gpu_preference) override;
-  void AcceleratedPluginEnabledRendering() override;
-  void AcceleratedPluginAllocatedIOSurface(int32_t width,
-                                           int32_t height,
-                                           uint32_t surface_id) override;
-  void AcceleratedPluginSwappedIOSurface() override;
-#endif
-
-  // IPC::Sender implementation.
-  bool Send(IPC::Message* msg) override;
-
-  // class-specific methods
-
-  // Returns the id of the renderer that contains this plugin.
-  int GetRendererId();
-
-  // Returns the id of the associated render view.
-  int host_render_view_routing_id() const {
-    return host_render_view_routing_id_;
-  }
-
-  // For windowless plugins, paints the given rectangle into the local buffer.
-  void Paint(const gfx::Rect& rect);
-
-  // Callback from the renderer to let us know that a paint occurred.
-  void DidPaint();
-
- private:
-  class SharedTransportDIB : public base::RefCounted<SharedTransportDIB> {
-   public:
-    explicit SharedTransportDIB(TransportDIB* dib);
-    TransportDIB* dib() { return dib_.get(); }
-   private:
-    friend class base::RefCounted<SharedTransportDIB>;
-    ~SharedTransportDIB();
-
-    scoped_ptr<TransportDIB> dib_;
-  };
-
-  // Handler for sending over the paint event to the plugin.
-  void OnPaint(const gfx::Rect& damaged_rect);
-
-#if defined(OS_WIN)
-  void CreateCanvasFromHandle(const TransportDIB::Handle& dib_handle,
-                              const gfx::Rect& window_rect,
-                              skia::RefPtr<SkCanvas>* canvas);
-#elif defined(OS_MACOSX)
-  static void CreateDIBAndCGContextFromHandle(
-      const TransportDIB::Handle& dib_handle,
-      const gfx::Rect& window_rect,
-      scoped_ptr<TransportDIB>* dib_out,
-      base::ScopedCFTypeRef<CGContextRef>* cg_context_out);
-#endif
-
-  // Updates the shared memory sections where windowless plugins paint.
-  void SetWindowlessBuffers(const TransportDIB::Handle& windowless_buffer0,
-                            const TransportDIB::Handle& windowless_buffer1,
-                            const gfx::Rect& window_rect);
-
-#if defined(OS_MACOSX)
-  CGContextRef windowless_context() const {
-    return windowless_contexts_[windowless_buffer_index_].get();
-  }
-#else
-  skia::RefPtr<SkCanvas> windowless_canvas() const {
-    return windowless_canvases_[windowless_buffer_index_];
-  }
-#endif
-
-  scoped_refptr<PluginChannel> channel_;
-  int route_id_;
-  WebPluginDelegateImpl* delegate_;
-  gfx::Rect damaged_rect_;
-  bool waiting_for_paint_;
-  // The url of the main frame hosting the plugin.
-  GURL page_url_;
-
-  // Variables used for desynchronized windowless plugin painting. See note in
-  // webplugin_delegate_proxy.h for how this works. The two sets of windowless_*
-  // fields are for the front-buffer and back-buffer of a buffer flipping system
-  // and windowless_buffer_index_ identifies which set we are using as the
-  // back-buffer at any given time.
-  int windowless_buffer_index_;
-#if defined(OS_MACOSX)
-  scoped_ptr<TransportDIB> windowless_dibs_[2];
-  base::ScopedCFTypeRef<CGContextRef> windowless_contexts_[2];
-  scoped_ptr<WebPluginAcceleratedSurfaceProxy> accelerated_surface_;
-#else
-  skia::RefPtr<SkCanvas> windowless_canvases_[2];
-#endif
-
-  // Contains the routing id of the host render view.
-  int host_render_view_routing_id_;
-
-  base::WeakPtrFactory<WebPluginProxy> weak_factory_;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_
diff --git a/content/ppapi_plugin/ppapi_plugin_main.cc b/content/ppapi_plugin/ppapi_plugin_main.cc
index fccb830..71ecf15 100644
--- a/content/ppapi_plugin/ppapi_plugin_main.cc
+++ b/content/ppapi_plugin/ppapi_plugin_main.cc
@@ -6,6 +6,7 @@
 #include "base/command_line.h"
 #include "base/debug/crash_logging.h"
 #include "base/debug/debugger.h"
+#include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/i18n/rtl.h"
 #include "base/message_loop/message_loop.h"
@@ -131,6 +132,12 @@
   LinuxSandbox::InitializeSandbox();
 #endif
 
+  scoped_ptr<base::FeatureList> feature_list(new base::FeatureList);
+  feature_list->InitializeFromCommandLine(
+      command_line.GetSwitchValueASCII(switches::kEnableFeatures),
+      command_line.GetSwitchValueASCII(switches::kDisableFeatures));
+  base::FeatureList::SetInstance(std::move(feature_list));
+
   ChildProcess ppapi_process;
   ppapi_process.set_main_thread(
       new PpapiThread(parameters.command_line, false));  // Not a broker.
diff --git a/content/public/android/java/src/org/chromium/content_public/common/MediaMetadata.java b/content/public/android/java/src/org/chromium/content_public/common/MediaMetadata.java
index fca2464e..a1e9828 100644
--- a/content/public/android/java/src/org/chromium/content_public/common/MediaMetadata.java
+++ b/content/public/android/java/src/org/chromium/content_public/common/MediaMetadata.java
@@ -90,6 +90,13 @@
         mAlbum = album;
     }
 
+    /**
+     * Copy constructor.
+     */
+    public MediaMetadata(MediaMetadata other) {
+        this(other.mTitle, other.mArtist, other.mAlbum);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (obj == this) return true;
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/OWNERS b/content/public/android/javatests/src/org/chromium/content/browser/OWNERS
index 6891f6b..37d3bc2 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/OWNERS
+++ b/content/public/android/javatests/src/org/chromium/content/browser/OWNERS
@@ -23,5 +23,5 @@
 per-file ServiceRegistryTest.java=ppi@chromium.org
 
 # Java Bridge
-per-file JavaBridge*=mnaganov@chromium.org
+per-file JavaBridge*=michaelbai@chromium.org
 per-file JavaBridge*=torne@chromium.org
diff --git a/content/public/common/common_param_traits_macros.h b/content/public/common/common_param_traits_macros.h
index ceba902..2050643 100644
--- a/content/public/common/common_param_traits_macros.h
+++ b/content/public/common/common_param_traits_macros.h
@@ -152,7 +152,6 @@
   IPC_STRUCT_TRAITS_MEMBER(flash_3d_enabled)
   IPC_STRUCT_TRAITS_MEMBER(flash_stage3d_enabled)
   IPC_STRUCT_TRAITS_MEMBER(flash_stage3d_baseline_enabled)
-  IPC_STRUCT_TRAITS_MEMBER(gl_multisampling_enabled)
   IPC_STRUCT_TRAITS_MEMBER(privileged_webgl_extensions_enabled)
   IPC_STRUCT_TRAITS_MEMBER(webgl_errors_to_console_enabled)
   IPC_STRUCT_TRAITS_MEMBER(mock_scrollbars_enabled)
diff --git a/content/public/common/web_preferences.cc b/content/public/common/web_preferences.cc
index e3653be0..761d994 100644
--- a/content/public/common/web_preferences.cc
+++ b/content/public/common/web_preferences.cc
@@ -89,7 +89,6 @@
       flash_3d_enabled(true),
       flash_stage3d_enabled(false),
       flash_stage3d_baseline_enabled(false),
-      gl_multisampling_enabled(true),
       privileged_webgl_extensions_enabled(false),
       webgl_errors_to_console_enabled(true),
       mock_scrollbars_enabled(false),
diff --git a/content/public/common/web_preferences.h b/content/public/common/web_preferences.h
index 69bed9f..0ea55b2 100644
--- a/content/public/common/web_preferences.h
+++ b/content/public/common/web_preferences.h
@@ -112,7 +112,6 @@
   bool flash_3d_enabled;
   bool flash_stage3d_enabled;
   bool flash_stage3d_baseline_enabled;
-  bool gl_multisampling_enabled;
   bool privileged_webgl_extensions_enabled;
   bool webgl_errors_to_console_enabled;
   bool mock_scrollbars_enabled;
diff --git a/content/public/plugin/BUILD.gn b/content/public/plugin/BUILD.gn
index 1693b4e4f..c935f87 100644
--- a/content/public/plugin/BUILD.gn
+++ b/content/public/plugin/BUILD.gn
@@ -25,13 +25,6 @@
 
   deps = [
     "//base",
-    "//content/plugin",  # Must not be a public dep.
     "//content/public/common:common_sources",
   ]
-
-  allow_circular_includes_from = [
-    # This target is a pair with content/plugin. They always go together and
-    # include headers from each other.
-    "//content/plugin",
-  ]
 }
diff --git a/content/renderer/media/render_media_log.cc b/content/renderer/media/render_media_log.cc
index 180d2b22..0c6b22d 100644
--- a/content/renderer/media/render_media_log.cc
+++ b/content/renderer/media/render_media_log.cc
@@ -35,43 +35,37 @@
 RenderMediaLog::RenderMediaLog()
     : task_runner_(base::ThreadTaskRunnerHandle::Get()),
       tick_clock_(new base::DefaultTickClock()),
-      last_ipc_send_time_(tick_clock_->NowTicks()) {
+      last_ipc_send_time_(tick_clock_->NowTicks()),
+      ipc_send_pending_(false) {
   DCHECK(RenderThread::Get())
       << "RenderMediaLog must be constructed on the render thread";
 }
 
 void RenderMediaLog::AddEvent(scoped_ptr<media::MediaLogEvent> event) {
-  // Always post to preserve the correct order of events.
-  // TODO(xhwang): Consider using sorted containers to keep the order and
-  // avoid extra posting.
-  task_runner_->PostTask(FROM_HERE,
-                         base::Bind(&RenderMediaLog::AddEventInternal, this,
-                                    base::Passed(&event)));
-}
-
-void RenderMediaLog::AddEventInternal(scoped_ptr<media::MediaLogEvent> event) {
-  DCHECK(task_runner_->BelongsToCurrentThread());
-
   Log(event.get());
 
-  // If there is an event waiting to be sent, there must be a send task pending.
-  const bool delayed_ipc_send_pending =
-      !queued_media_events_.empty() || last_buffered_extents_changed_event_;
+  // For enforcing delay until it's been a second since the last ipc message was
+  // sent.
+  base::TimeDelta delay_for_next_ipc_send;
 
-  // Keep track of the latest buffered extents properties to avoid sending
-  // thousands of events over IPC. See http://crbug.com/352585 for details.
-  if (event->type == media::MediaLogEvent::BUFFERED_EXTENTS_CHANGED)
-    last_buffered_extents_changed_event_.swap(event);
-  else
-    queued_media_events_.push_back(*event);
+  {
+    base::AutoLock auto_lock(lock_);
 
-  if (delayed_ipc_send_pending)
-    return;
+    // Keep track of the latest buffered extents properties to avoid sending
+    // thousands of events over IPC. See http://crbug.com/352585 for details.
+    if (event->type == media::MediaLogEvent::BUFFERED_EXTENTS_CHANGED)
+      last_buffered_extents_changed_event_.swap(event);
+    else
+      queued_media_events_.push_back(*event);
 
-  // Delay until it's been a second since the last ipc message was sent.
-  base::TimeDelta delay_for_next_ipc_send =
-      base::TimeDelta::FromSeconds(1) -
-      (tick_clock_->NowTicks() - last_ipc_send_time_);
+    if (ipc_send_pending_)
+      return;
+
+    ipc_send_pending_ = true;
+    delay_for_next_ipc_send = base::TimeDelta::FromSeconds(1) -
+                              (tick_clock_->NowTicks() - last_ipc_send_time_);
+  }
+
   if (delay_for_next_ipc_send > base::TimeDelta()) {
     task_runner_->PostDelayedTask(
         FROM_HERE, base::Bind(&RenderMediaLog::SendQueuedMediaEvents, this),
@@ -79,22 +73,35 @@
     return;
   }
 
-  // It's been more than a second so send now.
-  SendQueuedMediaEvents();
+  // It's been more than a second so send ASAP.
+  if (task_runner_->BelongsToCurrentThread()) {
+    SendQueuedMediaEvents();
+    return;
+  }
+  task_runner_->PostTask(
+      FROM_HERE, base::Bind(&RenderMediaLog::SendQueuedMediaEvents, this));
 }
 
 void RenderMediaLog::SendQueuedMediaEvents() {
   DCHECK(task_runner_->BelongsToCurrentThread());
 
-  if (last_buffered_extents_changed_event_) {
-    queued_media_events_.push_back(*last_buffered_extents_changed_event_);
-    last_buffered_extents_changed_event_.reset();
+  std::vector<media::MediaLogEvent> events_to_send;
+  {
+    base::AutoLock auto_lock(lock_);
+
+    DCHECK(ipc_send_pending_);
+    ipc_send_pending_ = false;
+
+    if (last_buffered_extents_changed_event_) {
+      queued_media_events_.push_back(*last_buffered_extents_changed_event_);
+      last_buffered_extents_changed_event_.reset();
+    }
+
+    queued_media_events_.swap(events_to_send);
+    last_ipc_send_time_ = tick_clock_->NowTicks();
   }
 
-  RenderThread::Get()->Send(
-      new ViewHostMsg_MediaLogEvents(queued_media_events_));
-  queued_media_events_.clear();
-  last_ipc_send_time_ = tick_clock_->NowTicks();
+  RenderThread::Get()->Send(new ViewHostMsg_MediaLogEvents(events_to_send));
 }
 
 RenderMediaLog::~RenderMediaLog() {
@@ -102,6 +109,7 @@
 
 void RenderMediaLog::SetTickClockForTesting(
     scoped_ptr<base::TickClock> tick_clock) {
+  base::AutoLock auto_lock(lock_);
   tick_clock_.swap(tick_clock);
   last_ipc_send_time_ = tick_clock_->NowTicks();
 }
diff --git a/content/renderer/media/render_media_log.h b/content/renderer/media/render_media_log.h
index a67927d..80316e6 100644
--- a/content/renderer/media/render_media_log.h
+++ b/content/renderer/media/render_media_log.h
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "base/synchronization/lock.h"
 #include "base/time/time.h"
 #include "content/common/content_export.h"
 #include "media/base/media_log.h"
@@ -40,17 +41,25 @@
  private:
   ~RenderMediaLog() override;
 
-  // Add event on the |task_runner_|.
-  void AddEventInternal(scoped_ptr<media::MediaLogEvent> event);
-
-  // Posted as a delayed task to throttle ipc message frequency.
+  // Posted as a delayed task on |task_runner_| to throttle ipc message
+  // frequency.
   void SendQueuedMediaEvents();
 
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+
+  // |lock_| serializes access to |tick_clock_|, |last_ipc_send_time_|,
+  // |queued_media_events_|, |ipc_send_pending_| and
+  // |last_buffered_extents_changed_event_|. It allows any render process thread
+  // to AddEvent(), while preserving their sequence for throttled send on
+  // |task_runner_|.
+  mutable base::Lock lock_;
   scoped_ptr<base::TickClock> tick_clock_;
   base::TimeTicks last_ipc_send_time_;
   std::vector<media::MediaLogEvent> queued_media_events_;
 
+  // For enforcing max 1 pending send.
+  bool ipc_send_pending_;
+
   // Limits the number buffered extents changed events we send over IPC to one.
   scoped_ptr<media::MediaLogEvent> last_buffered_extents_changed_event_;
 
diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc
index c5174b5..b5457cd 100644
--- a/content/renderer/media/webmediaplayer_ms.cc
+++ b/content/renderer/media/webmediaplayer_ms.cc
@@ -447,7 +447,7 @@
 
   scoped_refptr<media::VideoFrame> video_frame = compositor_->GetCurrentFrame();
 
-  if (!video_frame.get() || video_frame->HasTextures() ||
+  if (!video_frame.get() || !video_frame->HasTextures() ||
       media::VideoFrame::NumPlanes(video_frame->format()) != 1) {
     return false;
   }
diff --git a/content/renderer/npapi/plugin_channel_host.cc b/content/renderer/npapi/plugin_channel_host.cc
deleted file mode 100644
index 4e92f56..0000000
--- a/content/renderer/npapi/plugin_channel_host.cc
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/npapi/plugin_channel_host.h"
-
-#include <stddef.h>
-
-#include "base/metrics/histogram.h"
-#include "base/time/time.h"
-#include "build/build_config.h"
-#include "content/child/child_process.h"
-#include "content/child/plugin_messages.h"
-
-#if defined(OS_POSIX)
-#include "ipc/ipc_channel_posix.h"
-#endif
-
-// TODO(shess): Debugging for http://crbug.com/97285
-//
-// The hypothesis at #55 requires that RemoveRoute() be called between
-// sending ViewHostMsg_OpenChannelToPlugin to the browser, and calling
-// GetPluginChannelHost() on the result.  This code detects that case
-// and stores the backtrace of the RemoveRoute() in a breakpad key.
-// The specific RemoveRoute() is not tracked (there could be multiple,
-// and which is the one can't be known until the open completes), but
-// the backtrace from any such nested call should be sufficient to
-// drive a repro.
-#if defined(OS_MACOSX)
-#include "base/debug/crash_logging.h"
-#include "base/debug/stack_trace.h"
-#include "base/strings/sys_string_conversions.h"
-
-namespace {
-
-// Breakpad key for the RemoveRoute() backtrace.
-const char* kRemoveRouteTraceKey = "remove_route_bt";
-
-// Breakpad key for the OnChannelError() backtrace.
-const char* kChannelErrorTraceKey = "channel_error_bt";
-
-// GetRemoveTrackingFlag() exposes this so that
-// WebPluginDelegateProxy::Initialize() can do scoped set/reset.  When
-// true, RemoveRoute() knows WBDP::Initialize() is on the stack, and
-// records the backtrace.
-bool remove_tracking = false;
-
-}  // namespace
-#endif
-
-namespace content {
-
-#if defined(OS_MACOSX)
-// static
-bool* PluginChannelHost::GetRemoveTrackingFlag() {
-  return &remove_tracking;
-}
-#endif
-
-// static
-PluginChannelHost* PluginChannelHost::GetPluginChannelHost(
-    const IPC::ChannelHandle& channel_handle,
-    base::SingleThreadTaskRunner* ipc_task_runner) {
-  PluginChannelHost* result =
-      static_cast<PluginChannelHost*>(NPChannelBase::GetChannel(
-          channel_handle, IPC::Channel::MODE_CLIENT, ClassFactory,
-          ipc_task_runner, true, ChildProcess::current()->GetShutDownEvent()));
-  return result;
-}
-
-PluginChannelHost::PluginChannelHost() : expecting_shutdown_(false) {
-}
-
-PluginChannelHost::~PluginChannelHost() {
-}
-
-bool PluginChannelHost::Init(base::SingleThreadTaskRunner* ipc_task_runner,
-                             bool create_pipe_now,
-                             base::WaitableEvent* shutdown_event) {
-  return NPChannelBase::Init(ipc_task_runner, create_pipe_now, shutdown_event);
-}
-
-int PluginChannelHost::GenerateRouteID() {
-  int route_id = MSG_ROUTING_NONE;
-  Send(new PluginMsg_GenerateRouteID(&route_id));
-
-  return route_id;
-}
-
-void PluginChannelHost::AddRoute(int route_id, IPC::Listener* listener) {
-  NPChannelBase::AddRoute(route_id, listener);
-  proxies_[route_id] = listener;
-}
-
-void PluginChannelHost::RemoveRoute(int route_id) {
-#if defined(OS_MACOSX)
-  if (remove_tracking) {
-    base::debug::StackTrace trace;
-    size_t count = 0;
-    const void* const* addresses = trace.Addresses(&count);
-    base::debug::SetCrashKeyFromAddresses(
-        kRemoveRouteTraceKey, addresses, count);
-  }
-#endif
-
-  proxies_.erase(route_id);
-  NPChannelBase::RemoveRoute(route_id);
-}
-
-bool PluginChannelHost::OnControlMessageReceived(const IPC::Message& message) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(PluginChannelHost, message)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_PluginShuttingDown, OnPluginShuttingDown)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  DCHECK(handled);
-  return handled;
-}
-
-void PluginChannelHost::OnPluginShuttingDown() {
-  expecting_shutdown_ = true;
-}
-
-bool PluginChannelHost::Send(IPC::Message* msg) {
-  if (msg->is_sync()) {
-    base::TimeTicks start_time(base::TimeTicks::Now());
-    bool result = NPChannelBase::Send(msg);
-    UMA_HISTOGRAM_TIMES("Plugin.SyncMessageTime",
-                        base::TimeTicks::Now() - start_time);
-    return result;
-  }
-  return NPChannelBase::Send(msg);
-}
-
-void PluginChannelHost::OnChannelError() {
-#if defined(OS_MACOSX)
-  if (remove_tracking) {
-    base::debug::StackTrace trace;
-    size_t count = 0;
-    const void* const* addresses = trace.Addresses(&count);
-    base::debug::SetCrashKeyFromAddresses(
-        kChannelErrorTraceKey, addresses, count);
-  }
-#endif
-
-  NPChannelBase::OnChannelError();
-
-  for (ProxyMap::iterator iter = proxies_.begin();
-       iter != proxies_.end(); iter++) {
-    iter->second->OnChannelError();
-  }
-
-  proxies_.clear();
-}
-
-}  // namespace content
diff --git a/content/renderer/npapi/plugin_channel_host.h b/content/renderer/npapi/plugin_channel_host.h
deleted file mode 100644
index f577971..0000000
--- a/content/renderer/npapi/plugin_channel_host.h
+++ /dev/null
@@ -1,73 +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 CONTENT_RENDERER_NPAPI_PLUGIN_CHANNEL_HOST_H_
-#define CONTENT_RENDERER_NPAPI_PLUGIN_CHANNEL_HOST_H_
-
-#include "base/containers/hash_tables.h"
-#include "base/macros.h"
-#include "build/build_config.h"
-#include "content/child/npapi/np_channel_base.h"
-#include "ipc/ipc_channel_handle.h"
-
-namespace content {
-// Encapsulates an IPC channel between the renderer and one plugin process.
-// On the plugin side there's a corresponding PluginChannel.
-class PluginChannelHost : public NPChannelBase {
- public:
-#if defined(OS_MACOSX)
-  // TODO(shess): Debugging for http://crbug.com/97285 .  See comment
-  // in plugin_channel_host.cc.
-  static bool* GetRemoveTrackingFlag();
-#endif
-  static PluginChannelHost* GetPluginChannelHost(
-      const IPC::ChannelHandle& channel_handle,
-      base::SingleThreadTaskRunner* ipc_task_runner);
-
-  bool Init(base::SingleThreadTaskRunner* ipc_task_runner,
-            bool create_pipe_now,
-            base::WaitableEvent* shutdown_event) override;
-
-  int GenerateRouteID() override;
-
-  void AddRoute(int route_id, IPC::Listener* listener);
-  void RemoveRoute(int route_id);
-
-  // NPChannelBase override:
-  bool Send(IPC::Message* msg) override;
-
-  // IPC::Listener override
-  void OnChannelError() override;
-
-  static void Broadcast(IPC::Message* message) {
-    NPChannelBase::Broadcast(message);
-  }
-
-  bool expecting_shutdown() { return expecting_shutdown_; }
-
- private:
-  // Called on the render thread
-  PluginChannelHost();
-  ~PluginChannelHost() override;
-
-  static NPChannelBase* ClassFactory() { return new PluginChannelHost(); }
-
-  bool OnControlMessageReceived(const IPC::Message& message) override;
-  void OnPluginShuttingDown();
-
-  // Keep track of all the registered WebPluginDelegeProxies to
-  // inform about OnChannelError
-  typedef base::hash_map<int, IPC::Listener*> ProxyMap;
-  ProxyMap proxies_;
-
-  // True if we are expecting the plugin process to go away - in which case,
-  // don't treat it as a crash.
-  bool expecting_shutdown_;
-
-  DISALLOW_COPY_AND_ASSIGN(PluginChannelHost);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_RENDERER_NPAPI_PLUGIN_CHANNEL_HOST_H_
diff --git a/content/renderer/npapi/webplugin_delegate_proxy.cc b/content/renderer/npapi/webplugin_delegate_proxy.cc
deleted file mode 100644
index 05a021f..0000000
--- a/content/renderer/npapi/webplugin_delegate_proxy.cc
+++ /dev/null
@@ -1,768 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/npapi/webplugin_delegate_proxy.h"
-
-#include <stddef.h>
-
-#include <algorithm>
-#include <utility>
-
-#include "base/auto_reset.h"
-#include "base/command_line.h"
-#include "base/files/file_util.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/process/process.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/version.h"
-#include "build/build_config.h"
-#include "cc/resources/shared_bitmap.h"
-#include "content/child/child_process.h"
-#include "content/child/child_shared_bitmap_manager.h"
-#include "content/child/npapi/webplugin_resource_client.h"
-#include "content/child/plugin_messages.h"
-#include "content/common/content_constants_internal.h"
-#include "content/common/cursors/webcursor.h"
-#include "content/common/frame_messages.h"
-#include "content/common/view_messages.h"
-#include "content/public/renderer/content_renderer_client.h"
-#include "content/renderer/npapi/plugin_channel_host.h"
-#include "content/renderer/npapi/webplugin_impl.h"
-#include "content/renderer/render_thread_impl.h"
-#include "content/renderer/render_view_impl.h"
-#include "content/renderer/sad_plugin.h"
-#include "ipc/ipc_channel_handle.h"
-#include "net/base/mime_util.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/public/platform/WebDragData.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
-#include "third_party/WebKit/public/web/WebView.h"
-#include "ui/gfx/blit.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/geometry/size.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gfx/skia_util.h"
-
-#if defined(OS_POSIX)
-#include "ipc/ipc_channel_posix.h"
-#endif
-
-#if defined(OS_WIN)
-#include "base/win/scoped_handle.h"
-#include "content/public/common/sandbox_init.h"
-#endif
-
-using blink::WebCursorInfo;
-using blink::WebDragData;
-using blink::WebInputEvent;
-using blink::WebString;
-using blink::WebView;
-
-namespace content {
-
-namespace {
-
-class ScopedLogLevel {
- public:
-  explicit ScopedLogLevel(int level);
-  ~ScopedLogLevel();
-
- private:
-  int old_level_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScopedLogLevel);
-};
-
-ScopedLogLevel::ScopedLogLevel(int level)
-    : old_level_(logging::GetMinLogLevel()) {
-  logging::SetMinLogLevel(level);
-}
-
-ScopedLogLevel::~ScopedLogLevel() {
-  logging::SetMinLogLevel(old_level_);
-}
-
-}  // namespace
-
-WebPluginDelegateProxy::WebPluginDelegateProxy(
-    WebPluginImpl* plugin,
-    const std::string& mime_type,
-    const base::WeakPtr<RenderViewImpl>& render_view,
-    RenderFrameImpl* render_frame)
-    : render_view_(render_view),
-      render_frame_(render_frame),
-      plugin_(plugin),
-      uses_shared_bitmaps_(true),
-#if defined(OS_MACOSX)
-      uses_compositor_(false),
-#endif
-      mime_type_(mime_type),
-      instance_id_(MSG_ROUTING_NONE),
-      sad_plugin_(NULL),
-      invalidate_pending_(false),
-      transparent_(false),
-      front_buffer_index_(0),
-      page_url_(render_view_->webview()->mainFrame()->document().url()) {
-}
-
-WebPluginDelegateProxy::~WebPluginDelegateProxy() {
-}
-
-WebPluginDelegateProxy::SharedBitmap::SharedBitmap() {}
-
-WebPluginDelegateProxy::SharedBitmap::~SharedBitmap() {}
-
-void WebPluginDelegateProxy::PluginDestroyed() {
-#if defined(OS_MACOSX)
-  // Ensure that the renderer doesn't think the plugin still has focus.
-  if (render_view_)
-    render_view_->PluginFocusChanged(false, instance_id_);
-#endif
-
-  if (render_view_.get())
-    render_view_->UnregisterPluginDelegate(this);
-
-  if (channel_host_.get()) {
-    Send(new PluginMsg_DestroyInstance(instance_id_));
-
-    // Must remove the route after sending the destroy message, rather than
-    // before, since RemoveRoute can lead to all the outstanding NPObjects
-    // being told the channel went away if this was the last instance.
-    channel_host_->RemoveRoute(instance_id_);
-
-    // Release the channel host now. If we are is the last reference to the
-    // channel, this avoids a race where this renderer asks a new connection to
-    // the same plugin between now and the time 'this' is actually deleted.
-    // Destroying the channel host is what releases the channel name -> FD
-    // association on POSIX, and if we ask for a new connection before it is
-    // released, the plugin will give us a new FD, and we'll assert when trying
-    // to associate it with the channel name.
-    channel_host_ = NULL;
-  }
-
-  plugin_ = NULL;
-
-  base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
-}
-
-bool WebPluginDelegateProxy::Initialize(
-    const GURL& url,
-    const std::vector<std::string>& arg_names,
-    const std::vector<std::string>& arg_values,
-    bool load_manually) {
-  // TODO(shess): Attempt to work around http://crbug.com/97285 and
-  // http://crbug.com/141055 by retrying the connection.  Reports seem
-  // to indicate that the plugin hasn't crashed, and that the problem
-  // is not 100% persistent.
-  const size_t kAttempts = 2;
-
-  bool result = false;
-  scoped_refptr<PluginChannelHost> channel_host;
-  int instance_id = 0;
-
-  for (size_t attempt = 0; !result && attempt < kAttempts; attempt++) {
-#if defined(OS_MACOSX)
-    // TODO(shess): Debugging for http://crbug.com/97285 .  See comment
-    // in plugin_channel_host.cc.
-    scoped_ptr<base::AutoReset<bool> > track_nested_removes(
-        new base::AutoReset<bool>(PluginChannelHost::GetRemoveTrackingFlag(),
-                                  true));
-#endif
-
-    IPC::ChannelHandle channel_handle;
-    if (!RenderThreadImpl::current()->Send(new FrameHostMsg_OpenChannelToPlugin(
-            render_frame_->GetRoutingID(), url, page_url_, mime_type_,
-            &channel_handle, &info_))) {
-      continue;
-    }
-
-    if (channel_handle.name.empty()) {
-      // We got an invalid handle.  Either the plugin couldn't be found (which
-      // shouldn't happen, since if we got here the plugin should exist) or the
-      // plugin crashed on initialization.
-      if (!info_.path.empty()) {
-        render_view_->GetMainRenderFrame()->PluginCrashed(
-            info_.path, base::kNullProcessId);
-        LOG(ERROR) << "Plugin crashed on start";
-
-        // Return true so that the plugin widget is created and we can paint the
-        // crashed plugin there.
-        return true;
-      }
-      LOG(ERROR) << "Plugin couldn't be found";
-      return false;
-    }
-
-    channel_host = PluginChannelHost::GetPluginChannelHost(
-        channel_handle, ChildProcess::current()->io_task_runner());
-    if (!channel_host.get()) {
-      LOG(ERROR) << "Couldn't get PluginChannelHost";
-      continue;
-    }
-#if defined(OS_MACOSX)
-    track_nested_removes.reset();
-#endif
-
-    {
-      // TODO(bauerb): Debugging for http://crbug.com/141055.
-      ScopedLogLevel log_level(-2);  // Equivalent to --v=2
-      result = channel_host->Send(new PluginMsg_CreateInstance(
-          mime_type_, &instance_id));
-      if (!result) {
-        LOG(ERROR) << "Couldn't send PluginMsg_CreateInstance";
-        continue;
-      }
-    }
-  }
-
-  // Failed too often, give up.
-  if (!result)
-    return false;
-
-  channel_host_ = channel_host;
-  instance_id_ = instance_id;
-
-  channel_host_->AddRoute(instance_id_, this);
-
-  // Now tell the PluginInstance in the plugin process to initialize.
-  PluginMsg_Init_Params params;
-  params.url = url;
-  params.page_url = page_url_;
-  params.arg_names = arg_names;
-  params.arg_values = arg_values;
-  params.host_render_view_routing_id = render_view_->GetRoutingID();
-  params.load_manually = load_manually;
-
-  result = false;
-  Send(new PluginMsg_Init(instance_id_, params, &transparent_, &result));
-
-  if (!result)
-    LOG(WARNING) << "PluginMsg_Init returned false";
-
-  render_view_->RegisterPluginDelegate(this);
-
-  return result;
-}
-
-bool WebPluginDelegateProxy::Send(IPC::Message* msg) {
-  if (!channel_host_.get()) {
-    DLOG(WARNING) << "dropping message because channel host is null";
-    delete msg;
-    return false;
-  }
-
-  return channel_host_->Send(msg);
-}
-
-bool WebPluginDelegateProxy::OnMessageReceived(const IPC::Message& msg) {
-  GetContentClient()->SetActiveURL(page_url_);
-
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(WebPluginDelegateProxy, msg)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_InvalidateRect, OnInvalidateRect)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_ResolveProxy, OnResolveProxy)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_SetCookie, OnSetCookie)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_GetCookies, OnGetCookies)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_CancelDocumentLoad, OnCancelDocumentLoad)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_DidStartLoading, OnDidStartLoading)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_DidStopLoading, OnDidStopLoading)
-#if defined(OS_MACOSX)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_FocusChanged,
-                        OnFocusChanged);
-    IPC_MESSAGE_HANDLER(PluginHostMsg_StartIme,
-                        OnStartIme);
-    IPC_MESSAGE_HANDLER(PluginHostMsg_AcceleratedPluginEnabledRendering,
-                        OnAcceleratedPluginEnabledRendering)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_AcceleratedPluginAllocatedIOSurface,
-                        OnAcceleratedPluginAllocatedIOSurface)
-    IPC_MESSAGE_HANDLER(PluginHostMsg_AcceleratedPluginSwappedIOSurface,
-                        OnAcceleratedPluginSwappedIOSurface)
-#endif
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  DCHECK(handled);
-  return handled;
-}
-
-void WebPluginDelegateProxy::OnChannelError() {
-  if (plugin_) {
-    plugin_->Invalidate();
-  }
-  if (channel_host_.get() && !channel_host_->expecting_shutdown()) {
-    render_view_->GetMainRenderFrame()->PluginCrashed(
-        info_.path, channel_host_->peer_pid());
-  }
-
-#if defined(OS_MACOSX)
-  // Ensure that the renderer doesn't think the plugin still has focus.
-  if (render_view_)
-    render_view_->PluginFocusChanged(false, instance_id_);
-#endif
-}
-
-static void CopySharedMemoryHandleForMessage(
-    const base::SharedMemoryHandle& handle_in,
-    base::SharedMemoryHandle* handle_out,
-    base::ProcessId peer_pid) {
-#if defined(OS_POSIX) || defined(OS_WIN)
-  *handle_out = base::SharedMemory::DuplicateHandle(handle_in);
-#else
-#error Shared memory copy not implemented.
-#endif
-}
-
-void WebPluginDelegateProxy::SendUpdateGeometry(
-    bool bitmaps_changed) {
-  if (!channel_host_.get())
-    return;
-
-  PluginMsg_UpdateGeometry_Param param;
-  param.window_rect = plugin_rect_;
-  param.clip_rect = clip_rect_;
-  param.windowless_buffer0 = base::SharedMemory::NULLHandle();
-  param.windowless_buffer1 = base::SharedMemory::NULLHandle();
-  param.windowless_buffer_index = back_buffer_index();
-
-#if defined(OS_POSIX)
-  // If we're using POSIX mmap'd TransportDIBs, sending the handle across
-  // IPC establishes a new mapping rather than just sending a window ID,
-  // so only do so if we've actually changed the shared memory bitmaps.
-  if (bitmaps_changed)
-#endif
-  {
-    if (transport_stores_[0].bitmap)
-      CopySharedMemoryHandleForMessage(
-          transport_stores_[0].bitmap->shared_memory()->handle(),
-          &param.windowless_buffer0, channel_host_->peer_pid());
-
-    if (transport_stores_[1].bitmap)
-      CopySharedMemoryHandleForMessage(
-          transport_stores_[1].bitmap->shared_memory()->handle(),
-          &param.windowless_buffer1, channel_host_->peer_pid());
-  }
-
-  IPC::Message* msg;
-#if defined(OS_WIN)
-  if (UseSynchronousGeometryUpdates()) {
-    msg = new PluginMsg_UpdateGeometrySync(instance_id_, param);
-  } else  // NOLINT
-#endif
-  {
-    msg = new PluginMsg_UpdateGeometry(instance_id_, param);
-    msg->set_unblock(true);
-  }
-
-  Send(msg);
-}
-
-void WebPluginDelegateProxy::UpdateGeometry(const gfx::Rect& window_rect,
-                                            const gfx::Rect& clip_rect) {
-  // window_rect becomes either a window in native windowing system
-  // coords, or a backing buffer.  In either case things will go bad
-  // if the rectangle is very large.
-  if (window_rect.width() < 0 || window_rect.width() > kMaxPluginSideLength ||
-      window_rect.height() < 0 || window_rect.height() > kMaxPluginSideLength ||
-      // We know this won't overflow due to above checks.
-      static_cast<uint32_t>(window_rect.width()) *
-              static_cast<uint32_t>(window_rect.height()) >
-          kMaxPluginSize) {
-    return;
-  }
-
-  plugin_rect_ = window_rect;
-  clip_rect_ = clip_rect;
-
-  bool bitmaps_changed = false;
-
-  if (uses_shared_bitmaps_) {
-    if (!front_buffer_canvas() ||
-        (window_rect.width() !=
-             front_buffer_canvas()->getBaseLayerSize().width() ||
-         window_rect.height() !=
-             front_buffer_canvas()->getBaseLayerSize().height()))
-    {
-      bitmaps_changed = true;
-
-      // Create a shared memory section that the plugin paints into
-      // asynchronously.
-      ResetWindowlessBitmaps();
-      if (!window_rect.IsEmpty()) {
-        if (!CreateSharedBitmap(&transport_stores_[0].bitmap,
-                                &transport_stores_[0].canvas) ||
-            !CreateSharedBitmap(&transport_stores_[1].bitmap,
-                                &transport_stores_[1].canvas)) {
-          DCHECK(false);
-          ResetWindowlessBitmaps();
-          return;
-        }
-      }
-    }
-  }
-
-  SendUpdateGeometry(bitmaps_changed);
-}
-
-void WebPluginDelegateProxy::ResetWindowlessBitmaps() {
-  transport_stores_[0].bitmap.reset();
-  transport_stores_[1].bitmap.reset();
-
-  transport_stores_[0].canvas.clear();
-  transport_stores_[1].canvas.clear();
-  transport_store_painted_ = gfx::Rect();
-  front_buffer_diff_ = gfx::Rect();
-}
-
-#if !defined(OS_WIN)
-static size_t BitmapSizeForPluginRect(const gfx::Rect& plugin_rect) {
-  const size_t stride =
-      skia::PlatformCanvasStrideForWidth(plugin_rect.width());
-  return stride * plugin_rect.height();
-}
-
-bool WebPluginDelegateProxy::CreateLocalBitmap(
-    std::vector<uint8_t>* memory,
-    skia::RefPtr<SkCanvas>* canvas) {
-  const size_t size = BitmapSizeForPluginRect(plugin_rect_);
-  memory->resize(size);
-  if (memory->size() != size)
-    return false;
-  *canvas = skia::AdoptRef(skia::CreatePlatformCanvas(
-      plugin_rect_.width(), plugin_rect_.height(), true, &((*memory)[0]),
-      skia::CRASH_ON_FAILURE));
-  return true;
-}
-#endif
-
-bool WebPluginDelegateProxy::CreateSharedBitmap(
-    scoped_ptr<SharedMemoryBitmap>* memory,
-    skia::RefPtr<SkCanvas>* canvas) {
-  *memory = ChildThreadImpl::current()
-                ->shared_bitmap_manager()
-                ->AllocateSharedMemoryBitmap(plugin_rect_.size());
-  if (!memory->get())
-    return false;
-  DCHECK((*memory)->shared_memory());
-#if defined(OS_POSIX)
-  *canvas = skia::AdoptRef(skia::CreatePlatformCanvas(
-      plugin_rect_.width(), plugin_rect_.height(), true, (*memory)->pixels(),
-      skia::RETURN_NULL_ON_FAILURE));
-#else
-  *canvas = skia::AdoptRef(skia::CreatePlatformCanvas(
-      plugin_rect_.width(), plugin_rect_.height(), true,
-      (*memory)->shared_memory()->handle().GetHandle(),
-      skia::RETURN_NULL_ON_FAILURE));
-#endif
-  return !!canvas->get();
-}
-
-void WebPluginDelegateProxy::Paint(SkCanvas* canvas,
-                                   const gfx::Rect& damaged_rect) {
-  // Limit the damaged rectangle to whatever is contained inside the plugin
-  // rectangle, as that's the rectangle that we'll actually draw.
-  gfx::Rect rect = gfx::IntersectRects(damaged_rect, plugin_rect_);
-
-  // If the plugin is no longer connected (channel crashed) draw a crashed
-  // plugin bitmap
-  if (!channel_host_.get() || !channel_host_->channel_valid()) {
-    // Lazily load the sad plugin image.
-    if (!sad_plugin_)
-      sad_plugin_ = GetContentClient()->renderer()->GetSadPluginBitmap();
-    if (sad_plugin_)
-      PaintSadPlugin(canvas, plugin_rect_, *sad_plugin_);
-    return;
-  }
-
-  if (!uses_shared_bitmaps_)
-    return;
-
-  // We got a paint before the plugin's coordinates, so there's no buffer to
-  // copy from.
-  if (!front_buffer_canvas())
-    return;
-
-  gfx::Rect offset_rect = rect;
-  offset_rect.Offset(-plugin_rect_.x(), -plugin_rect_.y());
-
-  // transport_store_painted_ is really a bounding box, so in principle this
-  // check could falsely indicate that we don't need to paint offset_rect, but
-  // in practice it works fine.
-  if (!transport_store_painted_.Contains(offset_rect)) {
-    Send(new PluginMsg_Paint(instance_id_, offset_rect));
-    // Since the plugin is not blocked on the renderer in this context, there is
-    // a chance that it will begin repainting the back-buffer before we complete
-    // capturing the data. Buffer flipping would increase that risk because
-    // geometry update is asynchronous, so we don't want to use buffer flipping
-    // here.
-    UpdateFrontBuffer(offset_rect, false);
-  }
-
-  const SkBitmap bitmap = skia::ReadPixels(front_buffer_canvas());
-  SkPaint paint;
-  paint.setXfermodeMode(
-      transparent_ ? SkXfermode::kSrcATop_Mode : SkXfermode::kSrc_Mode);
-  SkRect src_rect = gfx::RectToSkRect(offset_rect);
-  canvas->drawBitmapRect(bitmap,
-                         src_rect,
-                         gfx::RectToSkRect(rect),
-                         &paint);
-
-  if (invalidate_pending_) {
-    // Only send the PaintAck message if this paint is in response to an
-    // invalidate from the plugin, since this message acts as an access token
-    // to ensure only one process is using the shared bitmap at a time.
-    invalidate_pending_ = false;
-    Send(new PluginMsg_DidPaint(instance_id_));
-  }
-}
-
-void WebPluginDelegateProxy::SetFocus(bool focused) {
-  Send(new PluginMsg_SetFocus(instance_id_, focused));
-}
-
-bool WebPluginDelegateProxy::HandleInputEvent(
-    const WebInputEvent& event,
-    WebCursor::CursorInfo* cursor_info) {
-  bool handled = false;
-  WebCursor cursor;
-  Send(new PluginMsg_HandleInputEvent(instance_id_, &event, &handled, &cursor));
-  return handled;
-}
-
-int WebPluginDelegateProxy::GetProcessId() {
-  return channel_host_->peer_pid();
-}
-
-void WebPluginDelegateProxy::SetContentAreaFocus(bool has_focus) {
-  IPC::Message* msg = new PluginMsg_SetContentAreaFocus(instance_id_,
-                                                        has_focus);
-  // Make sure focus events are delivered in the right order relative to
-  // sync messages they might interact with (Paint, HandleEvent, etc.).
-  msg->set_unblock(true);
-  Send(msg);
-}
-
-#if defined(OS_MACOSX)
-void WebPluginDelegateProxy::SetWindowFocus(bool window_has_focus) {
-  IPC::Message* msg = new PluginMsg_SetWindowFocus(instance_id_,
-                                                   window_has_focus);
-  // Make sure focus events are delivered in the right order relative to
-  // sync messages they might interact with (Paint, HandleEvent, etc.).
-  msg->set_unblock(true);
-  Send(msg);
-}
-
-void WebPluginDelegateProxy::SetContainerVisibility(bool is_visible) {
-  IPC::Message* msg;
-  if (is_visible) {
-    gfx::Rect window_frame = render_view_->GetWidget()->rootWindowRect();
-    gfx::Rect view_frame = render_view_->GetWidget()->windowRect();
-    blink::WebView* webview = render_view_->webview();
-    msg = new PluginMsg_ContainerShown(instance_id_, window_frame, view_frame,
-                                       webview && webview->isActive());
-  } else {
-    msg = new PluginMsg_ContainerHidden(instance_id_);
-  }
-  // Make sure visibility events are delivered in the right order relative to
-  // sync messages they might interact with (Paint, HandleEvent, etc.).
-  msg->set_unblock(true);
-  Send(msg);
-}
-
-void WebPluginDelegateProxy::WindowFrameChanged(gfx::Rect window_frame,
-                                                gfx::Rect view_frame) {
-  IPC::Message* msg = new PluginMsg_WindowFrameChanged(instance_id_,
-                                                       window_frame,
-                                                       view_frame);
-  // Make sure frame events are delivered in the right order relative to
-  // sync messages they might interact with (e.g., HandleEvent).
-  msg->set_unblock(true);
-  Send(msg);
-}
-void WebPluginDelegateProxy::ImeCompositionCompleted(const base::string16& text,
-                                                     int plugin_id) {
-  // If the message isn't intended for this plugin, there's nothing to do.
-  if (instance_id_ != plugin_id)
-    return;
-
-  IPC::Message* msg = new PluginMsg_ImeCompositionCompleted(instance_id_,
-                                                            text);
-  // Order relative to other key events is important.
-  msg->set_unblock(true);
-  Send(msg);
-}
-#endif  // OS_MACOSX
-
-void WebPluginDelegateProxy::OnInvalidateRect(const gfx::Rect& rect) {
-  if (!plugin_)
-    return;
-
-  // Clip the invalidation rect to the plugin bounds; the plugin may have been
-  // resized since the invalidate message was sent.
-  gfx::Rect clipped_rect =
-      gfx::IntersectRects(rect, gfx::Rect(plugin_rect_.size()));
-
-  invalidate_pending_ = true;
-  // The plugin is blocked on the renderer because the invalidate message it has
-  // sent us is synchronous, so we can use buffer flipping here if the caller
-  // allows it.
-  UpdateFrontBuffer(clipped_rect, true);
-  plugin_->InvalidateRect(clipped_rect);
-}
-
-void WebPluginDelegateProxy::OnResolveProxy(const GURL& url,
-                                            bool* result,
-                                            std::string* proxy_list) {
-  *result = RenderThreadImpl::current()->ResolveProxy(url, proxy_list);
-}
-
-void WebPluginDelegateProxy::OnSetCookie(const GURL& url,
-                                         const GURL& first_party_for_cookies,
-                                         const std::string& cookie) {
-  if (plugin_)
-    plugin_->SetCookie(url, first_party_for_cookies, cookie);
-}
-
-void WebPluginDelegateProxy::OnGetCookies(const GURL& url,
-                                          const GURL& first_party_for_cookies,
-                                          std::string* cookies) {
-  DCHECK(cookies);
-  if (plugin_)
-    *cookies = plugin_->GetCookies(url, first_party_for_cookies);
-}
-
-void WebPluginDelegateProxy::CopyFromBackBufferToFrontBuffer(
-    const gfx::Rect& rect) {
-  // Blitting the bits directly is much faster than going through CG, and since
-  // the goal is just to move the raw pixels between two bitmaps with the same
-  // pixel format (no compositing, color correction, etc.), it's safe.
-  const size_t stride =
-      skia::PlatformCanvasStrideForWidth(plugin_rect_.width());
-  const size_t chunk_size = 4 * rect.width();
-  DCHECK(back_buffer_bitmap() != NULL);
-  uint8_t* source_data =
-      back_buffer_bitmap()->pixels() + rect.y() * stride + 4 * rect.x();
-  DCHECK(front_buffer_bitmap() != NULL);
-  uint8_t* target_data =
-      front_buffer_bitmap()->pixels() + rect.y() * stride + 4 * rect.x();
-  for (int row = 0; row < rect.height(); ++row) {
-    memcpy(target_data, source_data, chunk_size);
-    source_data += stride;
-    target_data += stride;
-  }
-}
-
-void WebPluginDelegateProxy::UpdateFrontBuffer(
-    const gfx::Rect& rect,
-    bool allow_buffer_flipping) {
-  if (!front_buffer_canvas()) {
-    return;
-  }
-
-#if defined(OS_WIN)
-  // If SendUpdateGeometry() would block on the plugin process then we don't
-  // want to use buffer flipping at all since it would add extra locking.
-  // (Alternatively we could probably safely use async updates for buffer
-  // flipping all the time since the size is not changing.)
-  if (UseSynchronousGeometryUpdates()) {
-    allow_buffer_flipping = false;
-  }
-#endif
-
-  // Plugin has just painted "rect" into the back-buffer, so the front-buffer
-  // no longer holds the latest content for that rectangle.
-  front_buffer_diff_.Subtract(rect);
-  if (allow_buffer_flipping && front_buffer_diff_.IsEmpty()) {
-    // Back-buffer contains the latest content for all areas; simply flip
-    // the buffers.
-    front_buffer_index_ = back_buffer_index();
-    SendUpdateGeometry(false);
-    // The front-buffer now holds newer content for this region than the
-    // back-buffer.
-    front_buffer_diff_ = rect;
-  } else {
-    // Back-buffer contains the latest content for "rect" but the front-buffer
-    // contains the latest content for some other areas (or buffer flipping not
-    // allowed); fall back to copying the data.
-    CopyFromBackBufferToFrontBuffer(rect);
-  }
-  transport_store_painted_.Union(rect);
-}
-
-#if defined(OS_MACOSX)
-void WebPluginDelegateProxy::OnFocusChanged(bool focused) {
-  if (render_view_)
-    render_view_->PluginFocusChanged(focused, instance_id_);
-}
-
-void WebPluginDelegateProxy::OnStartIme() {
-  if (render_view_)
-    render_view_->StartPluginIme();
-}
-#endif
-
-void WebPluginDelegateProxy::OnCancelDocumentLoad() {
-  plugin_->CancelDocumentLoad();
-}
-
-void WebPluginDelegateProxy::OnDidStartLoading() {
-  plugin_->DidStartLoading();
-}
-
-void WebPluginDelegateProxy::OnDidStopLoading() {
-  plugin_->DidStopLoading();
-}
-
-#if defined(OS_MACOSX)
-void WebPluginDelegateProxy::OnAcceleratedPluginEnabledRendering() {
-  uses_compositor_ = true;
-  uses_shared_bitmaps_ = false;
-}
-
-void WebPluginDelegateProxy::OnAcceleratedPluginAllocatedIOSurface(
-    int32_t width,
-    int32_t height,
-    uint32_t surface_id) {
-  if (plugin_)
-    plugin_->AcceleratedPluginAllocatedIOSurface(width, height, surface_id);
-}
-
-void WebPluginDelegateProxy::OnAcceleratedPluginSwappedIOSurface() {
-  if (plugin_)
-    plugin_->AcceleratedPluginSwappedIOSurface();
-}
-#endif
-
-#if defined(OS_WIN)
-bool WebPluginDelegateProxy::UseSynchronousGeometryUpdates() {
-  // Need to update geometry synchronously with WMP, otherwise if a site
-  // scripts the plugin to start playing while it's in the middle of handling
-  // an update geometry message, videos don't play.  See urls in bug 20260.
-  if (info_.name.find(base::ASCIIToUTF16("Windows Media Player")) !=
-      base::string16::npos)
-    return true;
-
-  // The move networks plugin needs to be informed of geometry updates
-  // synchronously.
-  std::vector<WebPluginMimeType>::iterator index;
-  for (index = info_.mime_types.begin(); index != info_.mime_types.end();
-       index++) {
-    if (index->mime_type == "application/x-vnd.moveplayer.qm" ||
-        index->mime_type == "application/x-vnd.moveplay2.qm" ||
-        index->mime_type == "application/x-vnd.movenetworks.qm" ||
-        index->mime_type == "application/x-vnd.mnplayer.qm") {
-      return true;
-    }
-  }
-  return false;
-}
-#endif
-
-}  // namespace content
diff --git a/content/renderer/npapi/webplugin_delegate_proxy.h b/content/renderer/npapi/webplugin_delegate_proxy.h
deleted file mode 100644
index d23b517..0000000
--- a/content/renderer/npapi/webplugin_delegate_proxy.h
+++ /dev/null
@@ -1,243 +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 CONTENT_RENDERER_NPAPI_WEBPLUGIN_DELEGATE_PROXY_H_
-#define CONTENT_RENDERER_NPAPI_WEBPLUGIN_DELEGATE_PROXY_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/sequenced_task_runner_helpers.h"
-#include "build/build_config.h"
-#include "content/child/npapi/webplugin_delegate.h"
-#include "content/public/common/webplugininfo.h"
-#include "ipc/ipc_listener.h"
-#include "ipc/ipc_message.h"
-#include "ipc/ipc_sender.h"
-#include "skia/ext/refptr.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/native_widget_types.h"
-#include "url/gurl.h"
-
-#if defined(OS_MACOSX)
-#include "base/containers/hash_tables.h"
-#endif
-
-struct NPObject;
-struct PluginHostMsg_URLRequest_Params;
-class SkBitmap;
-
-namespace base {
-class WaitableEvent;
-}
-
-
-namespace content {
-class PluginChannelHost;
-class RenderFrameImpl;
-class RenderViewImpl;
-class SharedMemoryBitmap;
-class WebPluginImpl;
-
-// An implementation of WebPluginDelegate that proxies all calls to
-// the plugin process.
-class WebPluginDelegateProxy
-    : public WebPluginDelegate,
-      public IPC::Listener,
-      public IPC::Sender,
-      public base::SupportsWeakPtr<WebPluginDelegateProxy> {
- public:
-  WebPluginDelegateProxy(WebPluginImpl* plugin,
-                         const std::string& mime_type,
-                         const base::WeakPtr<RenderViewImpl>& render_view,
-                         RenderFrameImpl* render_frame);
-
-  // WebPluginDelegate implementation:
-  void PluginDestroyed() override;
-  bool Initialize(const GURL& url,
-                  const std::vector<std::string>& arg_names,
-                  const std::vector<std::string>& arg_values,
-                  bool load_manually) override;
-  void UpdateGeometry(const gfx::Rect& window_rect,
-                      const gfx::Rect& clip_rect) override;
-  void Paint(SkCanvas* canvas, const gfx::Rect& rect) override;
-  void SetFocus(bool focused) override;
-  bool HandleInputEvent(const blink::WebInputEvent& event,
-                        WebCursor::CursorInfo* cursor) override;
-  int GetProcessId() override;
-
-  // Informs the plugin that its containing content view has gained or lost
-  // first responder status.
-  virtual void SetContentAreaFocus(bool has_focus);
-#if defined(OS_MACOSX)
-  // Informs the plugin that its enclosing window has gained or lost focus.
-  virtual void SetWindowFocus(bool window_has_focus);
-  // Informs the plugin that its container (window/tab) has changed visibility.
-  virtual void SetContainerVisibility(bool is_visible);
-  // Informs the plugin that its enclosing window's frame has changed.
-  virtual void WindowFrameChanged(gfx::Rect window_frame, gfx::Rect view_frame);
-  // Informs the plugin that plugin IME has completed.
-  // If |text| is empty, composition was cancelled.
-  virtual void ImeCompositionCompleted(const base::string16& text,
-                                       int plugin_id);
-#endif
-
-  // IPC::Listener implementation:
-  bool OnMessageReceived(const IPC::Message& msg) override;
-  void OnChannelError() override;
-
-  // IPC::Sender implementation:
-  bool Send(IPC::Message* msg) override;
-
- protected:
-  friend class base::DeleteHelper<WebPluginDelegateProxy>;
-  ~WebPluginDelegateProxy() override;
-
- private:
-  struct SharedBitmap {
-    SharedBitmap();
-    ~SharedBitmap();
-
-    scoped_ptr<SharedMemoryBitmap> bitmap;
-    skia::RefPtr<SkCanvas> canvas;
-  };
-
-  // Message handlers for messages that proxy WebPlugin methods, which
-  // we translate into calls to the real WebPlugin.
-  void OnCompleteURL(const std::string& url_in, std::string* url_out,
-                     bool* result);
-  void OnHandleURLRequest(const PluginHostMsg_URLRequest_Params& params);
-  void OnInvalidateRect(const gfx::Rect& rect);
-  void OnResolveProxy(const GURL& url, bool* result, std::string* proxy_list);
-  void OnSetCookie(const GURL& url,
-                   const GURL& first_party_for_cookies,
-                   const std::string& cookie);
-  void OnGetCookies(const GURL& url, const GURL& first_party_for_cookies,
-                    std::string* cookies);
-  void OnCancelDocumentLoad();
-  void OnInitiateHTTPRangeRequest(const std::string& url,
-                                  const std::string& range_info,
-                                  int range_request_id);
-  void OnDidStartLoading();
-  void OnDidStopLoading();
-#if defined(OS_MACOSX)
-  void OnFocusChanged(bool focused);
-  void OnStartIme();
-  // Accelerated (Core Animation) plugin implementation.
-  void OnAcceleratedPluginEnabledRendering();
-  void OnAcceleratedPluginAllocatedIOSurface(int32_t width,
-                                             int32_t height,
-                                             uint32_t surface_id);
-  void OnAcceleratedPluginSwappedIOSurface();
-#endif
-  // Helper function that sends the UpdateGeometry message.
-  void SendUpdateGeometry(bool bitmaps_changed);
-
-  // Copies the given rectangle from the back-buffer transport_stores_ bitmap to
-  // the front-buffer transport_stores_ bitmap.
-  void CopyFromBackBufferToFrontBuffer(const gfx::Rect& rect);
-
-  // Updates the front-buffer with the given rectangle from the back-buffer,
-  // either by copying the rectangle or flipping the buffers.
-  void UpdateFrontBuffer(const gfx::Rect& rect, bool allow_buffer_flipping);
-
-  // Clears the shared memory section and canvases used for windowless plugins.
-  void ResetWindowlessBitmaps();
-
-  int front_buffer_index() const {
-    return front_buffer_index_;
-  }
-
-  int back_buffer_index() const {
-    return 1 - front_buffer_index_;
-  }
-
-  SkCanvas* front_buffer_canvas() const {
-    return transport_stores_[front_buffer_index()].canvas.get();
-  }
-
-  SkCanvas* back_buffer_canvas() const {
-    return transport_stores_[back_buffer_index()].canvas.get();
-  }
-
-  SharedMemoryBitmap* front_buffer_bitmap() const {
-    return transport_stores_[front_buffer_index()].bitmap.get();
-  }
-
-  SharedMemoryBitmap* back_buffer_bitmap() const {
-    return transport_stores_[back_buffer_index()].bitmap.get();
-  }
-
-#if !defined(OS_WIN)
-  // Creates a process-local memory section and canvas. PlatformCanvas on
-  // Windows only works with a DIB, not arbitrary memory.
-  bool CreateLocalBitmap(std::vector<uint8_t>* memory,
-                         skia::RefPtr<SkCanvas>* canvas);
-#endif
-
-  // Creates a shared memory section and canvas.
-  bool CreateSharedBitmap(scoped_ptr<SharedMemoryBitmap>* memory,
-                          skia::RefPtr<SkCanvas>* canvas);
-
-  // Called for cleanup during plugin destruction. Normally right before the
-  // plugin window gets destroyed, or when the plugin has crashed (at which
-  // point the window has already been destroyed).
-  void WillDestroyWindow();
-
-#if defined(OS_WIN)
-  // Returns true if we should update the plugin geometry synchronously.
-  bool UseSynchronousGeometryUpdates();
-#endif
-
-  base::WeakPtr<RenderViewImpl> render_view_;
-  RenderFrameImpl* render_frame_;
-  WebPluginImpl* plugin_;
-  bool uses_shared_bitmaps_;
-#if defined(OS_MACOSX)
-  bool uses_compositor_;
-#endif
-  scoped_refptr<PluginChannelHost> channel_host_;
-  std::string mime_type_;
-  int instance_id_;
-  WebPluginInfo info_;
-
-  gfx::Rect plugin_rect_;
-  gfx::Rect clip_rect_;
-
-  // Bitmap for crashed plugin
-  SkBitmap* sad_plugin_;
-
-  // True if we got an invalidate from the plugin and are waiting for a paint.
-  bool invalidate_pending_;
-
-  // If the plugin is transparent or not.
-  bool transparent_;
-
-  // The index in the transport_stores_ array of the current front buffer
-  // (i.e., the buffer to display).
-  int front_buffer_index_;
-  SharedBitmap transport_stores_[2];
-  // This lets us know the total portion of the transport store that has been
-  // painted since the buffers were created.
-  gfx::Rect transport_store_painted_;
-  // This is a bounding box on the portion of the front-buffer that was painted
-  // on the last buffer flip and which has not yet been re-painted in the
-  // back-buffer.
-  gfx::Rect front_buffer_diff_;
-
-  // The url of the main frame hosting the plugin.
-  GURL page_url_;
-
-  DISALLOW_COPY_AND_ASSIGN(WebPluginDelegateProxy);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_RENDERER_NPAPI_WEBPLUGIN_DELEGATE_PROXY_H_
diff --git a/content/renderer/npapi/webplugin_impl.cc b/content/renderer/npapi/webplugin_impl.cc
deleted file mode 100644
index 4b8c6b7..0000000
--- a/content/renderer/npapi/webplugin_impl.cc
+++ /dev/null
@@ -1,638 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/npapi/webplugin_impl.h"
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/debug/crash_logging.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/memory/linked_ptr.h"
-#include "base/metrics/user_metrics_action.h"
-#include "base/single_thread_task_runner.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "cc/blink/web_layer_impl.h"
-#include "cc/layers/io_surface_layer.h"
-#include "content/child/appcache/web_application_cache_host_impl.h"
-#include "content/child/npapi/plugin_host.h"
-#include "content/child/npapi/plugin_instance.h"
-#include "content/child/npapi/webplugin_delegate_impl.h"
-#include "content/child/npapi/webplugin_resource_client.h"
-#include "content/common/view_messages.h"
-#include "content/public/common/content_constants.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/renderer/content_renderer_client.h"
-#include "content/renderer/npapi/webplugin_delegate_proxy.h"
-#include "content/renderer/render_frame_impl.h"
-#include "content/renderer/render_process.h"
-#include "content/renderer/render_thread_impl.h"
-#include "content/renderer/render_view_impl.h"
-#include "net/base/escape.h"
-#include "net/base/net_errors.h"
-#include "net/http/http_response_headers.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/public/platform/WebCookieJar.h"
-#include "third_party/WebKit/public/platform/WebCursorInfo.h"
-#include "third_party/WebKit/public/platform/WebData.h"
-#include "third_party/WebKit/public/platform/WebHTTPBody.h"
-#include "third_party/WebKit/public/platform/WebHTTPHeaderVisitor.h"
-#include "third_party/WebKit/public/platform/WebURL.h"
-#include "third_party/WebKit/public/platform/WebURLError.h"
-#include "third_party/WebKit/public/platform/WebURLLoader.h"
-#include "third_party/WebKit/public/platform/WebURLResponse.h"
-#include "third_party/WebKit/public/web/WebConsoleMessage.h"
-#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-#include "third_party/WebKit/public/web/WebKit.h"
-#include "third_party/WebKit/public/web/WebPluginContainer.h"
-#include "third_party/WebKit/public/web/WebPluginParams.h"
-#include "third_party/WebKit/public/web/WebURLLoaderOptions.h"
-#include "third_party/WebKit/public/web/WebView.h"
-#include "ui/gfx/geometry/rect.h"
-#include "url/gurl.h"
-#include "url/url_util.h"
-
-using blink::WebCanvas;
-using blink::WebConsoleMessage;
-using blink::WebCookieJar;
-using blink::WebCursorInfo;
-using blink::WebData;
-using blink::WebDataSource;
-using blink::WebFrame;
-using blink::WebHTTPBody;
-using blink::WebHTTPHeaderVisitor;
-using blink::WebInputEvent;
-using blink::WebInputEventResult;
-using blink::WebKeyboardEvent;
-using blink::WebMouseEvent;
-using blink::WebPluginContainer;
-using blink::WebPluginParams;
-using blink::WebRect;
-using blink::WebString;
-using blink::WebURL;
-using blink::WebURLError;
-using blink::WebURLLoader;
-using blink::WebURLLoaderOptions;
-using blink::WebURLRequest;
-using blink::WebURLResponse;
-using blink::WebVector;
-using blink::WebView;
-
-namespace content {
-
-// blink::WebPlugin ----------------------------------------------------------
-
-bool WebPluginImpl::initialize(WebPluginContainer* container) {
-  if (!render_view_.get()) {
-    LOG(ERROR) << "No RenderView";
-    return false;
-  }
-
-  WebPluginDelegateProxy* plugin_delegate = new WebPluginDelegateProxy(
-      this, mime_type_, render_view_, render_frame_);
-
-  // Set the container before Initialize because the plugin may
-  // synchronously call NPN_GetValue to get its container, or make calls
-  // passing script objects that need to be tracked, during initialization.
-  SetContainer(container);
-
-  bool ok = plugin_delegate->Initialize(
-      plugin_url_, arg_names_, arg_values_, load_manually_);
-  if (!ok) {
-    plugin_delegate->PluginDestroyed();
-
-    blink::WebPlugin* replacement_plugin =
-        GetContentClient()->renderer()->CreatePluginReplacement(
-            render_frame_, file_path_);
-    if (!replacement_plugin) {
-      // Maintain invariant that container() returns null when initialize()
-      // returns false.
-      SetContainer(nullptr);
-      return false;
-    }
-
-    // The replacement plugin, if it exists, must never fail to initialize.
-    container->setPlugin(replacement_plugin);
-    CHECK(replacement_plugin->initialize(container));
-
-    DCHECK(container->plugin() == replacement_plugin);
-    DCHECK(replacement_plugin->container() == container);
-
-    // Since the container now owns the replacement plugin instead of this
-    // object, we must schedule ourselves for deletion. This also implicitly
-    // disables scripting while un-setting the container.
-    destroy();
-
-    return true;
-  }
-
-  delegate_ = plugin_delegate;
-
-  return true;
-}
-
-void WebPluginImpl::destroy() {
-  SetContainer(NULL);
-  base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
-}
-
-void WebPluginImpl::updateAllLifecyclePhases() {
-  if (!container_)
-    return;
-
-#if defined(OS_WIN)
-  // Force a geometry update if needed to allow plugins like media player
-  // which defer the initial geometry update to work. Do it now, rather
-  // than in paint, so that the paint rect invalidation is registered.
-  // Otherwise we may never get the paint call.
-  container_->reportGeometry();
-#endif  // OS_WIN
-}
-
-void WebPluginImpl::paint(WebCanvas* canvas, const WebRect& paint_rect) {
-  if (!delegate_ || !container_)
-    return;
-
-  // Note that |canvas| is only used when in windowless mode.
-  delegate_->Paint(canvas, paint_rect);
-}
-
-void WebPluginImpl::updateGeometry(const WebRect& window_rect,
-                                   const WebRect& clip_rect,
-                                   const WebRect& unobscured_rect,
-                                   const WebVector<WebRect>& cut_outs_rects,
-                                   bool is_visible) {
-  WebPluginGeometry new_geometry;
-  new_geometry.window_rect = window_rect;
-  new_geometry.clip_rect = clip_rect;
-  new_geometry.visible = is_visible;
-  new_geometry.rects_valid = true;
-  for (size_t i = 0; i < cut_outs_rects.size(); ++i)
-    new_geometry.cutout_rects.push_back(cut_outs_rects[i]);
-
-  // Only UpdateGeometry if either the window or clip rects have changed.
-  if (delegate_ && (first_geometry_update_ ||
-      new_geometry.window_rect != geometry_.window_rect ||
-      new_geometry.clip_rect != geometry_.clip_rect)) {
-    // Notify the plugin that its parameters have changed.
-    delegate_->UpdateGeometry(new_geometry.window_rect, new_geometry.clip_rect);
-  }
-
-#if defined(OS_WIN)
-  // Don't cache the geometry during the first geometry update. The first
-  // geometry update sequence is received when Widget::setParent is called.
-  // For plugins like media player which have a bug where they only honor
-  // the first geometry update, we have a quirk which ignores the first
-  // geometry update. To ensure that these plugins work correctly in cases
-  // where we receive only one geometry update from webkit, we also force
-  // a geometry update during paint which should go out correctly as the
-  // initial geometry update was not cached.
-  if (!first_geometry_update_)
-    geometry_ = new_geometry;
-#else  // OS_WIN
-  geometry_ = new_geometry;
-#endif  // OS_WIN
-  first_geometry_update_ = false;
-}
-
-void WebPluginImpl::updateFocus(bool focused, blink::WebFocusType focus_type) {
-  delegate_->SetFocus(focused);
-}
-
-void WebPluginImpl::updateVisibility(bool visible) {
-}
-
-bool WebPluginImpl::acceptsInputEvents() {
-  return true;
-}
-
-WebInputEventResult WebPluginImpl::handleInputEvent(
-    const WebInputEvent& event,
-    WebCursorInfo& cursor_info) {
-  // Swallow context menu events in order to suppress the default context menu.
-  if (event.type == WebInputEvent::ContextMenu)
-    return WebInputEventResult::HandledSuppressed;
-
-  WebCursor::CursorInfo web_cursor_info;
-  bool ret = delegate_->HandleInputEvent(event, &web_cursor_info);
-  cursor_info.type = web_cursor_info.type;
-  cursor_info.hotSpot = web_cursor_info.hotspot;
-  cursor_info.customImage = web_cursor_info.custom_image;
-  cursor_info.imageScaleFactor = web_cursor_info.image_scale_factor;
-#if defined(OS_WIN)
-  cursor_info.externalHandle = web_cursor_info.external_handle;
-#endif
-  return ret ? WebInputEventResult::HandledApplication
-             : WebInputEventResult::NotHandled;
-}
-
-bool WebPluginImpl::isPlaceholder() {
-  return false;
-}
-
-// -----------------------------------------------------------------------------
-
-WebPluginImpl::WebPluginImpl(
-    WebFrame* webframe,
-    const WebPluginParams& params,
-    const base::FilePath& file_path,
-    const base::WeakPtr<RenderViewImpl>& render_view,
-    RenderFrameImpl* render_frame)
-    : render_frame_(render_frame),
-      render_view_(render_view),
-      webframe_(webframe),
-      delegate_(NULL),
-      container_(NULL),
-      plugin_url_(params.url),
-      load_manually_(params.loadManually),
-      first_geometry_update_(true),
-      ignore_response_error_(false),
-      file_path_(file_path),
-      mime_type_(base::ToLowerASCII(base::UTF16ToASCII(
-          base::StringPiece16(params.mimeType)))) {
-  DCHECK_EQ(params.attributeNames.size(), params.attributeValues.size());
-
-  for (size_t i = 0; i < params.attributeNames.size(); ++i) {
-    arg_names_.push_back(params.attributeNames[i].utf8());
-    arg_values_.push_back(params.attributeValues[i].utf8());
-  }
-
-  // Set subresource URL for crash reporting.
-  base::debug::SetCrashKeyValue("subresource_url", plugin_url_.spec());
-}
-
-WebPluginImpl::~WebPluginImpl() {
-}
-
-GURL WebPluginImpl::CompleteURL(const char* url) {
-  if (!webframe_) {
-    NOTREACHED();
-    return GURL();
-  }
-  // TODO(darin): Is conversion from UTF8 correct here?
-  return webframe_->document().completeURL(WebString::fromUTF8(url));
-}
-
-bool WebPluginImpl::SetPostData(WebURLRequest* request,
-                                const char* buf,
-                                uint32_t length) {
-  std::vector<std::string> names;
-  std::vector<std::string> values;
-  std::vector<char> body;
-  bool rv = PluginHost::SetPostData(buf, length, &names, &values, &body);
-
-  for (size_t i = 0; i < names.size(); ++i) {
-    request->addHTTPHeaderField(WebString::fromUTF8(names[i]),
-                                WebString::fromUTF8(values[i]));
-  }
-
-  WebString content_type_header = WebString::fromUTF8("Content-Type");
-  const WebString& content_type =
-      request->httpHeaderField(content_type_header);
-  if (content_type.isEmpty()) {
-    request->setHTTPHeaderField(
-        content_type_header,
-        WebString::fromUTF8("application/x-www-form-urlencoded"));
-  }
-
-  WebHTTPBody http_body;
-  if (body.size()) {
-    http_body.initialize();
-    http_body.appendData(WebData(&body[0], body.size()));
-  }
-  request->setHTTPBody(http_body);
-
-  return rv;
-}
-
-bool WebPluginImpl::IsValidUrl(const GURL& url, ReferrerValue referrer_flag) {
-  if (referrer_flag == PLUGIN_SRC &&
-      mime_type_ == kFlashPluginSwfMimeType &&
-      url.GetOrigin() != plugin_url_.GetOrigin()) {
-    // Do url check to make sure that there are no @, ;, \ chars in between url
-    // scheme and url path.
-    const char* url_to_check(url.spec().data());
-    url::Parsed parsed;
-    url::ParseStandardURL(url_to_check, strlen(url_to_check), &parsed);
-    if (parsed.path.begin <= parsed.scheme.end())
-      return true;
-    std::string string_to_search;
-    string_to_search.assign(url_to_check + parsed.scheme.end(),
-        parsed.path.begin - parsed.scheme.end());
-    if (string_to_search.find("@") != std::string::npos ||
-        string_to_search.find(";") != std::string::npos ||
-        string_to_search.find("\\") != std::string::npos)
-      return false;
-  }
-
-  return true;
-}
-
-WebPluginImpl::RoutingStatus WebPluginImpl::RouteToFrame(
-    const char* url,
-    bool is_javascript_url,
-    bool popups_allowed,
-    const char* method,
-    const char* target,
-    const char* buf,
-    unsigned int len,
-    ReferrerValue referrer_flag) {
-  // If there is no target, there is nothing to do
-  if (!target)
-    return NOT_ROUTED;
-
-  // This could happen if the WebPluginContainer was already deleted.
-  if (!webframe_)
-    return NOT_ROUTED;
-
-  WebString target_str = WebString::fromUTF8(target);
-
-  // Take special action for JavaScript URLs
-  if (is_javascript_url) {
-    WebFrame* target_frame =
-        webframe_->view()->findFrameByName(target_str, webframe_);
-    // For security reasons, do not allow JavaScript on frames
-    // other than this frame.
-    if (target_frame != webframe_) {
-      // TODO(darin): Localize this message.
-      const char kMessage[] =
-          "Ignoring cross-frame javascript URL load requested by plugin.";
-      webframe_->addMessageToConsole(
-          WebConsoleMessage(WebConsoleMessage::LevelError,
-                            WebString::fromUTF8(kMessage)));
-      return ROUTED;
-    }
-
-    // Route javascript calls back to the plugin.
-    return NOT_ROUTED;
-  }
-
-  // If we got this far, we're routing content to a target frame.
-  // Go fetch the URL.
-
-  GURL complete_url = CompleteURL(url);
-  // Remove when flash bug is fixed. http://crbug.com/40016.
-  if (!WebPluginImpl::IsValidUrl(complete_url, referrer_flag))
-    return INVALID_URL;
-
-  if (strcmp(method, "GET") != 0) {
-    // We're only going to route HTTP/HTTPS requests
-    if (!complete_url.SchemeIsHTTPOrHTTPS())
-      return INVALID_URL;
-  }
-
-  WebURLRequest request(complete_url);
-  SetReferrer(&request, referrer_flag);
-
-  request.setHTTPMethod(WebString::fromUTF8(method));
-  request.setFirstPartyForCookies(
-      webframe_->document().firstPartyForCookies());
-  request.setHasUserGesture(popups_allowed);
-  // ServiceWorker is disabled for NPAPI.
-  request.setSkipServiceWorker(true);
-  if (len > 0) {
-    if (!SetPostData(&request, buf, len)) {
-      // Uhoh - we're in trouble.  There isn't a good way
-      // to recover at this point.  Break out.
-      NOTREACHED();
-      return ROUTED;
-    }
-  }
-
-  container_->loadFrameRequest(request, target_str);
-  return ROUTED;
-}
-
-bool WebPluginImpl::FindProxyForUrl(const GURL& url, std::string* proxy_list) {
-  // Proxy resolving doesn't work in single-process mode.
-  return false;
-}
-
-void WebPluginImpl::SetCookie(const GURL& url,
-                              const GURL& first_party_for_cookies,
-                              const std::string& cookie) {
-  if (!render_view_.get())
-    return;
-
-  WebCookieJar* cookie_jar = render_frame_->cookie_jar();
-  if (!cookie_jar) {
-    DLOG(WARNING) << "No cookie jar!";
-    return;
-  }
-
-  cookie_jar->setCookie(
-      url, first_party_for_cookies, WebString::fromUTF8(cookie));
-}
-
-std::string WebPluginImpl::GetCookies(const GURL& url,
-                                      const GURL& first_party_for_cookies) {
-  if (!render_view_.get())
-    return std::string();
-
-  WebCookieJar* cookie_jar = render_frame_->cookie_jar();
-  if (!cookie_jar) {
-    DLOG(WARNING) << "No cookie jar!";
-    return std::string();
-  }
-
-  return base::UTF16ToUTF8(base::StringPiece16(
-      cookie_jar->cookies(url, first_party_for_cookies)));
-}
-
-#if defined(OS_MACOSX)
-WebPluginAcceleratedSurface* WebPluginImpl::GetAcceleratedSurface(
-    gfx::GpuPreference gpu_preference) {
-  return NULL;
-}
-
-void WebPluginImpl::AcceleratedPluginEnabledRendering() {
-}
-
-void WebPluginImpl::AcceleratedPluginAllocatedIOSurface(int32_t width,
-                                                        int32_t height,
-                                                        uint32_t surface_id) {
-  next_io_surface_allocated_ = true;
-  next_io_surface_width_ = width;
-  next_io_surface_height_ = height;
-  next_io_surface_id_ = surface_id;
-}
-
-void WebPluginImpl::AcceleratedPluginSwappedIOSurface() {
-  if (!container_)
-    return;
-  // Deferring the call to setBackingIOSurfaceId is an attempt to
-  // work around garbage occasionally showing up in the plugin's
-  // area during live resizing of Core Animation plugins. The
-  // assumption was that by the time this was called, the plugin
-  // process would have populated the newly allocated IOSurface. It
-  // is not 100% clear at this point why any garbage is getting
-  // through. More investigation is needed. http://crbug.com/105346
-  if (next_io_surface_allocated_) {
-    if (next_io_surface_id_) {
-      if (!io_surface_layer_.get()) {
-        io_surface_layer_ = cc::IOSurfaceLayer::Create();
-        web_layer_.reset(new cc_blink::WebLayerImpl(io_surface_layer_));
-        container_->setWebLayer(web_layer_.get());
-      }
-      io_surface_layer_->SetIOSurfaceProperties(
-          next_io_surface_id_,
-          gfx::Size(next_io_surface_width_, next_io_surface_height_));
-    } else {
-      container_->setWebLayer(NULL);
-      web_layer_.reset();
-      io_surface_layer_ = NULL;
-    }
-    next_io_surface_allocated_ = false;
-  } else {
-    if (io_surface_layer_.get())
-      io_surface_layer_->SetNeedsDisplay();
-  }
-}
-#endif
-
-void WebPluginImpl::Invalidate() {
-  if (container_)
-    container_->invalidate();
-}
-
-void WebPluginImpl::InvalidateRect(const gfx::Rect& rect) {
-  if (container_)
-    container_->invalidateRect(rect);
-}
-
-void WebPluginImpl::SetContainer(WebPluginContainer* container) {
-  if (!container)
-    TearDownPluginInstance(NULL);
-  container_ = container;
-}
-
-unsigned long WebPluginImpl::GetNextResourceId() {
-  if (!webframe_)
-    return 0;
-  WebView* view = webframe_->view();
-  if (!view)
-    return 0;
-  return view->createUniqueIdentifierForRequest();
-}
-
-void WebPluginImpl::CancelDocumentLoad() {
-  if (webframe_) {
-    ignore_response_error_ = true;
-    webframe_->stopLoading();
-  }
-}
-
-void WebPluginImpl::DidStartLoading() {
-  if (render_view_.get()) {
-    // TODO(darin): Make is_loading_ be a counter!
-    render_view_->DidStartLoading();
-  }
-}
-
-void WebPluginImpl::DidStopLoading() {
-  if (render_view_.get()) {
-    // TODO(darin): Make is_loading_ be a counter!
-    render_view_->DidStopLoading();
-  }
-}
-
-bool WebPluginImpl::IsOffTheRecord() {
-  return false;
-}
-
-bool WebPluginImpl::ReinitializePluginForResponse(
-    WebURLLoader* loader) {
-  WebFrame* webframe = webframe_;
-  if (!webframe)
-    return false;
-
-  WebView* webview = webframe->view();
-  if (!webview)
-    return false;
-
-  WebPluginContainer* container_widget = container_;
-
-  // Destroy the current plugin instance.
-  TearDownPluginInstance(loader);
-
-  container_ = container_widget;
-  webframe_ = webframe;
-
-  WebPluginDelegateProxy* plugin_delegate = new WebPluginDelegateProxy(
-      this, mime_type_, render_view_, render_frame_);
-
-  bool ok = plugin_delegate && plugin_delegate->Initialize(
-      plugin_url_, arg_names_, arg_values_, load_manually_);
-
-  if (!ok) {
-    container_ = NULL;
-    // TODO(iyengar) Should we delete the current plugin instance here?
-    return false;
-  }
-
-  delegate_ = plugin_delegate;
-
-  // Force a geometry update to occur to ensure that the plugin becomes
-  // visible.
-  container_->reportGeometry();
-
-  // The plugin move sequences accumulated via DidMove are sent to the browser
-  // whenever the renderer paints. Force a paint here to ensure that changes
-  // to the plugin window are propagated to the browser.
-  container_->invalidate();
-  return true;
-}
-
-void WebPluginImpl::TearDownPluginInstance(
-    WebURLLoader* loader_to_ignore) {
-  // JavaScript garbage collection may cause plugin script object references to
-  // be retained long after the plugin is destroyed. Some plugins won't cope
-  // with their objects being released after they've been destroyed, and once
-  // we've actually unloaded the plugin the object's releaseobject() code may
-  // no longer be in memory. The container tracks the plugin's objects and lets
-  // us invalidate them, releasing the references to them held by the JavaScript
-  // runtime.
-  if (container_) {
-    container_->setWebLayer(NULL);
-  }
-
-  // Call PluginDestroyed() first to prevent the plugin from calling us back
-  // in the middle of tearing down the render tree.
-  if (delegate_) {
-    // The plugin may call into the browser and pass script objects even during
-    // teardown, so temporarily re-enable plugin script objects.
-    DCHECK(container_);
-
-    delegate_->PluginDestroyed();
-    delegate_ = NULL;
-  }
-
-  // This needs to be called now and not in the destructor since the
-  // webframe_ might not be valid anymore.
-  webframe_ = NULL;
-}
-
-void WebPluginImpl::SetReferrer(blink::WebURLRequest* request,
-                                ReferrerValue referrer_flag) {
-  switch (referrer_flag) {
-    case DOCUMENT_URL:
-      webframe_->setReferrerForRequest(*request, GURL());
-      break;
-
-    case PLUGIN_SRC:
-      webframe_->setReferrerForRequest(*request, plugin_url_);
-      break;
-
-    default:
-      break;
-  }
-}
-
-}  // namespace content
diff --git a/content/renderer/npapi/webplugin_impl.h b/content/renderer/npapi/webplugin_impl.h
deleted file mode 100644
index 15d2ca47..0000000
--- a/content/renderer/npapi/webplugin_impl.h
+++ /dev/null
@@ -1,222 +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 CONTENT_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
-#define CONTENT_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "build/build_config.h"
-#include "content/child/npapi/webplugin.h"
-#include "content/common/content_export.h"
-#include "content/common/webplugin_geometry.h"
-#include "third_party/WebKit/public/platform/WebRect.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/WebKit/public/platform/WebURLRequest.h"
-#include "third_party/WebKit/public/platform/WebVector.h"
-#include "third_party/WebKit/public/web/WebPlugin.h"
-#include "ui/gfx/native_widget_types.h"
-#include "url/gurl.h"
-
-namespace cc {
-class IOSurfaceLayer;
-}
-
-namespace blink {
-class WebFrame;
-class WebLayer;
-class WebPluginContainer;
-class WebURLResponse;
-class WebURLLoader;
-class WebURLRequest;
-struct WebPluginParams;
-}
-
-namespace content {
-class MultipartResponseDelegate;
-class RenderFrameImpl;
-class RenderViewImpl;
-class WebPluginDelegateProxy;
-
-// This is the WebKit side of the plugin implementation that forwards calls,
-// after changing out of WebCore types, to a delegate.  The delegate may
-// be in a different process.
-class WebPluginImpl : public WebPlugin,
-                      public blink::WebPlugin {
- public:
-  WebPluginImpl(
-      blink::WebFrame* frame,
-      const blink::WebPluginParams& params,
-      const base::FilePath& file_path,
-      const base::WeakPtr<RenderViewImpl>& render_view,
-      RenderFrameImpl* render_frame);
-  ~WebPluginImpl() override;
-
-  // Helper function for sorting post data.
-  CONTENT_EXPORT static bool SetPostData(blink::WebURLRequest* request,
-                                         const char* buf,
-                                         uint32_t length);
-
-  blink::WebFrame* webframe() { return webframe_; }
-
-  // blink::WebPlugin methods:
-  bool initialize(blink::WebPluginContainer* container) override;
-  void destroy() override;
-  void updateAllLifecyclePhases() override;
-  void paint(blink::WebCanvas* canvas,
-             const blink::WebRect& paint_rect) override;
-  void updateGeometry(const blink::WebRect& window_rect,
-                      const blink::WebRect& clip_rect,
-                      const blink::WebRect& unobscured_rect,
-                      const blink::WebVector<blink::WebRect>& cut_outs_rects,
-                      bool is_visible) override;
-  void updateFocus(bool focused, blink::WebFocusType focus_type) override;
-  void updateVisibility(bool visible) override;
-  bool acceptsInputEvents() override;
-  blink::WebInputEventResult handleInputEvent(
-      const blink::WebInputEvent& event,
-      blink::WebCursorInfo& cursor_info) override;
-  void didReceiveResponse(const blink::WebURLResponse& response) override {}
-  void didReceiveData(const char* data, int data_length) override {}
-  void didFinishLoading() override {}
-  void didFailLoading(const blink::WebURLError& error) override {}
-  bool isPlaceholder() override;
-
-  // WebPlugin implementation:
-  void Invalidate() override;
-  void InvalidateRect(const gfx::Rect& rect) override;
-  bool FindProxyForUrl(const GURL& url, std::string* proxy_list) override;
-  void SetCookie(const GURL& url,
-                 const GURL& first_party_for_cookies,
-                 const std::string& cookie) override;
-  std::string GetCookies(const GURL& url,
-                         const GURL& first_party_for_cookies) override;
-  void CancelDocumentLoad() override;
-  void DidStartLoading() override;
-  void DidStopLoading() override;
-  bool IsOffTheRecord() override;
-#if defined(OS_MACOSX)
-  WebPluginAcceleratedSurface* GetAcceleratedSurface(
-      gfx::GpuPreference gpu_preference) override;
-  void AcceleratedPluginEnabledRendering() override;
-  void AcceleratedPluginAllocatedIOSurface(int32_t width,
-                                           int32_t height,
-                                           uint32_t surface_id) override;
-  void AcceleratedPluginSwappedIOSurface() override;
-#endif
-
- private:
-  // Given a (maybe partial) url, completes using the base url.
-  GURL CompleteURL(const char* url);
-
-  enum RoutingStatus {
-    ROUTED,
-    NOT_ROUTED,
-    INVALID_URL,
-    GENERAL_FAILURE
-  };
-
-  // Determines the referrer value sent along with outgoing HTTP requests
-  // issued by plugins.
-  enum ReferrerValue {
-    PLUGIN_SRC,
-    DOCUMENT_URL,
-    NO_REFERRER
-  };
-
-  // Given a download request, check if we need to route the output to a frame.
-  // Returns ROUTED if the load is done and routed to a frame, NOT_ROUTED or
-  // corresponding error codes otherwise.
-  RoutingStatus RouteToFrame(const char* url,
-                             bool is_javascript_url,
-                             bool popups_allowed,
-                             const char* method,
-                             const char* target,
-                             const char* buf,
-                             unsigned int len,
-                             ReferrerValue referrer_flag);
-
-  // Returns the next avaiable resource id. Returns 0 if the operation fails.
-  // It may fail if the page has already been closed.
-  unsigned long GetNextResourceId();
-
-  gfx::Rect GetWindowClipRect(const gfx::Rect& rect);
-
-  // Sets the actual Widget for the plugin.
-  void SetContainer(blink::WebPluginContainer* container);
-
-  // Destroys the plugin instance.
-  // The response_handle_to_ignore parameter if not NULL indicates the
-  // resource handle to be left valid during plugin shutdown.
-  void TearDownPluginInstance(blink::WebURLLoader* loader_to_ignore);
-
-  // Tears down the existing plugin instance and creates a new plugin instance
-  // to handle the response identified by the loader parameter.
-  bool ReinitializePluginForResponse(blink::WebURLLoader* loader);
-
-
-  // Helper function to set the referrer on the request passed in.
-  void SetReferrer(blink::WebURLRequest* request, ReferrerValue referrer_flag);
-
-  // Check for invalid chars like @, ;, \ before the first / (in path).
-  bool IsValidUrl(const GURL& url, ReferrerValue referrer_flag);
-
-#if defined(OS_MACOSX)
-  bool next_io_surface_allocated_;
-  int32_t next_io_surface_width_;
-  int32_t next_io_surface_height_;
-  uint32_t next_io_surface_id_;
-  scoped_refptr<cc::IOSurfaceLayer> io_surface_layer_;
-  scoped_ptr<blink::WebLayer> web_layer_;
-#endif
-  RenderFrameImpl* render_frame_;
-  base::WeakPtr<RenderViewImpl> render_view_;
-  blink::WebFrame* webframe_;
-
-  WebPluginDelegateProxy* delegate_;
-
-  // This is just a weak reference.
-  blink::WebPluginContainer* container_;
-
-  // The plugin source URL.
-  GURL plugin_url_;
-
-  // Indicates if the download would be initiated by the plugin or us.
-  bool load_manually_;
-
-  // Indicates if this is the first geometry update received by the plugin.
-  bool first_geometry_update_;
-
-  // Set to true if the next response error should be ignored.
-  bool ignore_response_error_;
-
-  // The current plugin geometry and clip rectangle.
-  WebPluginGeometry geometry_;
-
-  // The location of the plugin on disk.
-  base::FilePath file_path_;
-
-  // The mime type of the plugin.
-  std::string mime_type_;
-
-  // Holds the list of argument names and values passed to the plugin.  We keep
-  // these so that we can re-initialize the plugin if we need to.
-  std::vector<std::string> arg_names_;
-  std::vector<std::string> arg_values_;
-
-  DISALLOW_COPY_AND_ASSIGN(WebPluginImpl);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
diff --git a/content/renderer/npapi/webplugin_impl_unittest.cc b/content/renderer/npapi/webplugin_impl_unittest.cc
deleted file mode 100644
index 5137b05..0000000
--- a/content/renderer/npapi/webplugin_impl_unittest.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright (c) 2010 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 <stddef.h>
-#include <stdint.h>
-
-#include "base/strings/string_util.h"
-#include "content/renderer/npapi/webplugin_impl.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/WebKit/public/platform/WebURLRequest.h"
-
-using blink::WebHTTPBody;
-using blink::WebString;
-using blink::WebURLRequest;
-
-namespace content {
-
-namespace {
-
-std::string GetHeader(const WebURLRequest& request, const char* name) {
-  std::string result;
-  base::TrimWhitespaceASCII(
-      request.httpHeaderField(WebString::fromUTF8(name)).utf8(),
-      base::TRIM_ALL,
-      &result);
-  return result;
-}
-
-std::string GetBodyText(const WebURLRequest& request) {
-  const WebHTTPBody& body = request.httpBody();
-  if (body.isNull())
-    return std::string();
-
-  std::string result;
-  size_t i = 0;
-  WebHTTPBody::Element element;
-  while (body.elementAt(i++, element)) {
-    if (element.type == WebHTTPBody::Element::TypeData) {
-      result.append(element.data.data(), element.data.size());
-    } else {
-      NOTREACHED() << "unexpected element type encountered!";
-    }
-  }
-  return result;
-}
-
-}  // namespace
-
-// The Host functions for NPN_PostURL and NPN_PostURLNotify
-// need to parse out some HTTP headers.  Make sure it works
-// with the following tests
-
-TEST(WebPluginImplTest, PostParserSimple) {
-  // Test a simple case with headers & data
-  const char *ex1 = "foo: bar\nContent-length: 10\n\nabcdefghij";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ(0U, GetHeader(request, "Content-length").length());
-  EXPECT_EQ("abcdefghij", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserLongHeader) {
-  // Test a simple case with long headers
-  const char *ex1 = "foo: 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n\nabcdefghij";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ(100U, GetHeader(request, "foo").length());
-}
-
-TEST(WebPluginImplTest, PostParserManyHeaders) {
-  // Test a simple case with long headers
-  const char *ex1 = "h1:h1\nh2:h2\nh3:h3\nh4:h4\nh5:h5\nh6:h6\nh7:h7\nh8:h8\nh9:h9\nh10:h10\n\nbody";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("h1", GetHeader(request, "h1"));
-  EXPECT_EQ("h2", GetHeader(request, "h2"));
-  EXPECT_EQ("h3", GetHeader(request, "h3"));
-  EXPECT_EQ("h4", GetHeader(request, "h4"));
-  EXPECT_EQ("h5", GetHeader(request, "h5"));
-  EXPECT_EQ("h6", GetHeader(request, "h6"));
-  EXPECT_EQ("h7", GetHeader(request, "h7"));
-  EXPECT_EQ("h8", GetHeader(request, "h8"));
-  EXPECT_EQ("h9", GetHeader(request, "h9"));
-  EXPECT_EQ("h10", GetHeader(request, "h10"));
-  EXPECT_EQ("body", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserDuplicateHeaders) {
-  // Test a simple case with long headers
-  // What value gets returned doesn't really matter.  It shouldn't error
-  // out.
-  const char *ex1 = "h1:h1\nh1:h2\n\nbody";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-}
-
-TEST(WebPluginImplTest, PostParserNoHeaders) {
-  // Test a simple case with no headers but with data
-  const char *ex1 = "\nabcdefghij";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ(0U, GetHeader(request, "foo").length());
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ(0U, GetHeader(request, "Content-length").length());
-  EXPECT_EQ("abcdefghij", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserNoBody) {
-  // Test a simple case with headers and no body
-  const char *ex1 = "Foo:bar\n\n";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ(0U, GetHeader(request, "Content-length").length());
-  EXPECT_EQ(0U, GetBodyText(request).length());
-}
-
-TEST(WebPluginImplTest, PostParserBodyWithNewLines) {
-  // Test a simple case with headers and no body
-  const char *ex1 = "Foo:bar\n\n\n\nabcdefg\n\nabcdefg";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ(GetBodyText(request), "\n\nabcdefg\n\nabcdefg");
-}
-
-TEST(WebPluginImplTest, PostParserErrorNoBody) {
-  // Test with headers and no body
-  const char *ex1 = "Foo:bar\n";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-}
-
-TEST(WebPluginImplTest, PostParserErrorEmpty) {
-  // Test with an empty string
-  const char *ex1 = "";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-}
-
-TEST(WebPluginImplTest, PostParserEmptyName) {
-  // Test an error case with an empty header name field
-  const char *ex1 = "foo:bar\n:blat\n\nbody";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ("body", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserEmptyValue) {
-  // Test an error case with an empty value field
-  const char *ex1 = "foo:bar\nbar:\n\nbody";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ("body", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserCRLF) {
-  // Test an error case with an empty value field
-  const char *ex1 = "foo: bar\r\nbar:\r\n\r\nbody\r\n\r\nbody2";
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                       static_cast<uint32_t>(strlen(ex1)));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ("body\r\n\r\nbody2", GetBodyText(request));
-}
-
-TEST(WebPluginImplTest, PostParserBodyWithBinaryData) {
-  // Test a simple case with headers and binary data.
-  char ex1[33] = "foo: bar\nContent-length: 10\n\n";
-  unsigned int binary_data = 0xFFFFFFF0;
-  memcpy(ex1 + strlen("foo: bar\nContent-length: 10\n\n"), &binary_data,
-        sizeof(binary_data));
-
-  WebURLRequest request;
-  request.initialize();
-  bool rv = WebPluginImpl::SetPostData(&request, ex1,
-                                      sizeof(ex1)/sizeof(ex1[0]));
-  EXPECT_TRUE(rv);
-  EXPECT_EQ("bar", GetHeader(request, "foo"));
-  EXPECT_EQ(0U, GetHeader(request, "bar").length());
-  EXPECT_EQ(0U, GetHeader(request, "Content-length").length());
-
-  std::string body = GetBodyText(request);
-
-  EXPECT_EQ(0xF0, (unsigned char)body[0]);
-  EXPECT_EQ(0xFF, (unsigned char)body[1]);
-  EXPECT_EQ(0xFF, (unsigned char)body[2]);
-  EXPECT_EQ(0xFF, (unsigned char)body[3]);
-}
-
-}  // namespace content
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 160a42b..c894509f 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -35,7 +35,6 @@
 #include "components/scheduler/renderer/renderer_scheduler.h"
 #include "content/child/appcache/appcache_dispatcher.h"
 #include "content/child/permissions/permission_dispatcher.h"
-#include "content/child/plugin_messages.h"
 #include "content/child/quota_dispatcher.h"
 #include "content/child/request_extra_data.h"
 #include "content/child/service_worker/service_worker_handle_reference.h"
@@ -108,7 +107,6 @@
 #include "content/renderer/mojo_bindings_controller.h"
 #include "content/renderer/navigation_state_impl.h"
 #include "content/renderer/notification_permission_dispatcher.h"
-#include "content/renderer/npapi/plugin_channel_host.h"
 #include "content/renderer/pepper/plugin_instance_throttler_impl.h"
 #include "content/renderer/presentation/presentation_dispatcher.h"
 #include "content/renderer/push_messaging/push_messaging_dispatcher.h"
@@ -187,7 +185,6 @@
 #include "url/url_util.h"
 
 #if defined(ENABLE_PLUGINS)
-#include "content/renderer/npapi/webplugin_impl.h"
 #include "content/renderer/pepper/pepper_browser_connection.h"
 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
 #include "content/renderer/pepper/pepper_webplugin_impl.h"
@@ -2263,11 +2260,6 @@
   }
 #if defined(OS_CHROMEOS)
   LOG(WARNING) << "Pepper module/plugin creation failed.";
-#else
-  if (info.type == WebPluginInfo::PLUGIN_TYPE_NPAPI) {
-    // TODO(jam): change to take RenderFrame.
-    return new WebPluginImpl(frame, params, info.path, render_view_, this);
-  }
 #endif
 #endif
   return NULL;
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index d3ee4b8..0b2b95e 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -59,7 +59,6 @@
 #include "content/child/db_message_filter.h"
 #include "content/child/indexed_db/indexed_db_dispatcher.h"
 #include "content/child/indexed_db/indexed_db_message_filter.h"
-#include "content/child/plugin_messages.h"
 #include "content/child/resource_dispatcher.h"
 #include "content/child/resource_scheduling_filter.h"
 #include "content/child/runtime_features.h"
@@ -185,13 +184,6 @@
 #if defined(OS_WIN)
 #include <windows.h>
 #include <objbase.h>
-#else
-// TODO(port)
-#include "content/child/npapi/np_channel_base.h"
-#endif
-
-#if defined(ENABLE_PLUGINS)
-#include "content/renderer/npapi/plugin_channel_host.h"
 #endif
 
 #if defined(ENABLE_WEBRTC)
@@ -948,12 +940,6 @@
   if (gpu_channel_.get())
     gpu_channel_->DestroyChannel();
 
-  // TODO(port)
-#if defined(OS_WIN)
-  // Clean up plugin channels before this thread goes away.
-  NPChannelBase::CleanupChannels();
-#endif
-
   ChildThreadImpl::Shutdown();
 
   // Shut down the message loop and the renderer scheduler before shutting down
@@ -1004,36 +990,16 @@
   bool notify_webkit_of_modal_loop = true;  // default value
   std::swap(notify_webkit_of_modal_loop, notify_webkit_of_modal_loop_);
 
-#if defined(ENABLE_PLUGINS)
-  int render_view_id = MSG_ROUTING_NONE;
-#endif
-
   if (pumping_events) {
     renderer_scheduler_->SuspendTimerQueue();
 
     if (notify_webkit_of_modal_loop)
       WebView::willEnterModalLoop();
-#if defined(ENABLE_PLUGINS)
-    RenderViewImpl* render_view =
-        RenderViewImpl::FromRoutingID(msg->routing_id());
-    if (render_view) {
-      render_view_id = msg->routing_id();
-      PluginChannelHost::Broadcast(
-          new PluginMsg_SignalModalDialogEvent(render_view_id));
-    }
-#endif
   }
 
   bool rv = ChildThreadImpl::Send(msg);
 
   if (pumping_events) {
-#if defined(ENABLE_PLUGINS)
-    if (render_view_id != MSG_ROUTING_NONE) {
-      PluginChannelHost::Broadcast(
-          new PluginMsg_ResetModalDialogEvent(render_view_id));
-    }
-#endif
-
     if (notify_webkit_of_modal_loop)
       WebView::didExitModalLoop();
 
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 164f77f1..75cc2fb5c 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -36,7 +36,6 @@
 #include "content/child/appcache/appcache_dispatcher.h"
 #include "content/child/appcache/web_application_cache_host_impl.h"
 #include "content/child/child_shared_bitmap_manager.h"
-#include "content/child/npapi/webplugin_delegate_impl.h"
 #include "content/child/request_extra_data.h"
 #include "content/child/v8_value_converter_impl.h"
 #include "content/child/webmessageportchannel_impl.h"
@@ -198,7 +197,6 @@
 #endif
 
 #if defined(ENABLE_PLUGINS)
-#include "content/renderer/npapi/webplugin_delegate_proxy.h"
 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
 #include "content/renderer/pepper/pepper_plugin_registry.h"
 #endif
@@ -944,9 +942,6 @@
   // and support is compiled in.
   settings->setExperimentalWebGLEnabled(prefs.experimental_webgl_enabled);
 
-  // Disable GL multisampling if requested on command line.
-  settings->setOpenGLMultisamplingEnabled(prefs.gl_multisampling_enabled);
-
   // Enable WebGL errors to the JS console if requested.
   settings->setWebGLErrorsToConsoleEnabled(
       prefs.webgl_errors_to_console_enabled);
@@ -1189,32 +1184,7 @@
   UpdateSelectionBounds();
 }
 
-void RenderViewImpl::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) {
-  plugin_delegates_.insert(delegate);
-  // If the renderer is visible, set initial visibility and focus state.
-  if (!is_hidden()) {
 #if defined(OS_MACOSX)
-    delegate->SetContainerVisibility(true);
-    if (webview() && webview()->isActive())
-      delegate->SetWindowFocus(true);
-#endif
-  }
-  // Plugins start assuming the content has focus (so that they work in
-  // environments where RenderView isn't hosting them), so we always have to
-  // set the initial state. See webplugin_delegate_impl.h for details.
-  delegate->SetContentAreaFocus(has_focus());
-}
-
-void RenderViewImpl::UnregisterPluginDelegate(
-    WebPluginDelegateProxy* delegate) {
-  plugin_delegates_.erase(delegate);
-}
-
-#if defined(OS_MACOSX)
-void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) {
-  Send(new ViewHostMsg_PluginFocusChanged(GetRoutingID(), focused, plugin_id));
-}
-
 void RenderViewImpl::OnGetRenderedText() {
   if (!webview())
     return;
@@ -1238,14 +1208,6 @@
 
   Send(new ViewMsg_GetRenderedTextCompleted(GetRoutingID(), text));
 }
-
-void RenderViewImpl::StartPluginIme() {
-  IPC::Message* msg = new ViewHostMsg_StartPluginIme(GetRoutingID());
-  // This message can be sent during event-handling, and needs to be delivered
-  // within that context.
-  msg->set_unblock(true);
-  Send(msg);
-}
 #endif  // defined(OS_MACOSX)
 
 #endif  // ENABLE_PLUGINS
@@ -1390,11 +1352,7 @@
 #elif defined(OS_MACOSX)
     IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedText,
                         OnGetRenderedText)
-    IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted,
-                        OnPluginImeCompositionCompleted)
     IPC_MESSAGE_HANDLER(ViewMsg_Close, OnClose)
-    IPC_MESSAGE_HANDLER(ViewMsg_SetWindowVisibility, OnSetWindowVisibility)
-    IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged)
 #endif
     // Adding a new message? Add platform independent ones first, then put the
     // platform specific ones at the end.
@@ -2738,52 +2696,8 @@
 void RenderViewImpl::OnSetActive(bool active) {
   if (webview())
     webview()->setIsActive(active);
-
-#if defined(ENABLE_PLUGINS) && defined(OS_MACOSX)
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->SetWindowFocus(active);
-  }
-#endif
 }
 
-#if defined(OS_MACOSX)
-void RenderViewImpl::OnSetWindowVisibility(bool visible) {
-#if defined(ENABLE_PLUGINS)
-  // Inform plugins that their container has changed visibility.
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->SetContainerVisibility(visible);
-  }
-#endif
-}
-
-void RenderViewImpl::OnWindowFrameChanged(const gfx::Rect& window_frame,
-                                          const gfx::Rect& view_frame) {
-#if defined(ENABLE_PLUGINS)
-  // Inform plugins that their window's frame has changed.
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->WindowFrameChanged(window_frame, view_frame);
-  }
-#endif
-}
-
-void RenderViewImpl::OnPluginImeCompositionCompleted(const base::string16& text,
-                                                     int plugin_id) {
-  // WebPluginDelegateProxy is responsible for figuring out if this event
-  // applies to it or not, so inform all the delegates.
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->ImeCompositionCompleted(text, plugin_id);
-  }
-}
-#endif  // OS_MACOSX
-
 void RenderViewImpl::CloseForFrame() {
   DCHECK(frame_widget_);
   frame_widget_->close();
@@ -2816,15 +2730,6 @@
   for (PepperPluginSet::iterator i = active_pepper_instances_.begin();
        i != active_pepper_instances_.end(); ++i)
     (*i)->PageVisibilityChanged(false);
-
-#if defined(OS_MACOSX)
-  // Inform NPAPI plugins that their container is no longer visible.
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->SetContainerVisibility(false);
-  }
-#endif  // OS_MACOSX
 #endif  // ENABLE_PLUGINS
 }
 
@@ -2844,15 +2749,6 @@
   for (PepperPluginSet::iterator i = active_pepper_instances_.begin();
        i != active_pepper_instances_.end(); ++i)
     (*i)->PageVisibilityChanged(true);
-
-#if defined(OS_MACOSX)
-  // Inform NPAPI plugins that their container is now visible.
-  std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-  for (plugin_it = plugin_delegates_.begin();
-       plugin_it != plugin_delegates_.end(); ++plugin_it) {
-    (*plugin_it)->SetContainerVisibility(true);
-  }
-#endif  // OS_MACOSX
 #endif  // ENABLE_PLUGINS
 }
 
@@ -2876,20 +2772,6 @@
   RenderWidget::OnSetFocus(enable);
 
 #if defined(ENABLE_PLUGINS)
-  if (webview() && webview()->isActive()) {
-    // Notify all NPAPI plugins.
-    std::set<WebPluginDelegateProxy*>::iterator plugin_it;
-    for (plugin_it = plugin_delegates_.begin();
-         plugin_it != plugin_delegates_.end(); ++plugin_it) {
-#if defined(OS_MACOSX)
-      // RenderWidget's call to setFocus can cause the underlying webview's
-      // activation state to change just like a call to setIsActive.
-      if (enable)
-        (*plugin_it)->SetWindowFocus(true);
-#endif
-      (*plugin_it)->SetContentAreaFocus(enable);
-    }
-  }
   // Notify all Pepper plugins.
   for (PepperPluginSet::iterator i = active_pepper_instances_.begin();
        i != active_pepper_instances_.end(); ++i)
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 8e5057e..c3688b56 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -258,14 +258,6 @@
     pepper_last_mouse_event_target_ = plugin;
   }
 
-#if defined(OS_MACOSX)
-  // Informs the render view that the given plugin has gained or lost focus.
-  void PluginFocusChanged(bool focused, int plugin_id);
-
-  // Starts plugin IME.
-  void StartPluginIme();
-#endif
-
   // Indicates that the given instance has been created.
   void PepperInstanceCreated(PepperPluginInstanceImpl* instance);
 
@@ -276,9 +268,6 @@
 
   // Notification that the given plugin is focused or unfocused.
   void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused);
-
-  void RegisterPluginDelegate(WebPluginDelegateProxy* delegate);
-  void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate);
 #endif  // ENABLE_PLUGINS
 
   void TransferActiveWheelFlingAnimation(
@@ -684,11 +673,6 @@
   void OnExtractSmartClipData(const gfx::Rect& rect);
 #elif defined(OS_MACOSX)
   void OnGetRenderedText();
-  void OnPluginImeCompositionCompleted(const base::string16& text,
-                                       int plugin_id);
-  void OnSetWindowVisibility(bool visible);
-  void OnWindowFrameChanged(const gfx::Rect& window_frame,
-                            const gfx::Rect& view_frame);
 #endif
 
   // Page message handlers -----------------------------------------------------
@@ -933,12 +917,6 @@
 #endif
 
   // Plugins -------------------------------------------------------------------
-
-  // All the currently active plugin delegates for this RenderView; kept so
-  // that we can enumerate them to send updates about things like window
-  // location or tab focus and visibily. These are non-owning references.
-  std::set<WebPluginDelegateProxy*> plugin_delegates_;
-
 #if defined(ENABLE_PLUGINS)
   typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet;
   PepperPluginSet active_pepper_instances_;
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 60efb8c..0f53306 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -29,7 +29,6 @@
 #include "cc/trees/layer_tree_host.h"
 #include "components/scheduler/renderer/render_widget_scheduling_state.h"
 #include "components/scheduler/renderer/renderer_scheduler.h"
-#include "content/child/npapi/webplugin.h"
 #include "content/common/content_switches_internal.h"
 #include "content/common/gpu/client/context_provider_command_buffer.h"
 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
diff --git a/content/shell/browser/layout_test/layout_test_android.cc b/content/shell/browser/layout_test/layout_test_android.cc
index 5b89e24..80e7944 100644
--- a/content/shell/browser/layout_test/layout_test_android.cc
+++ b/content/shell/browser/layout_test/layout_test_android.cc
@@ -10,6 +10,7 @@
 #include "base/android/jni_string.h"
 #include "base/command_line.h"
 #include "base/files/file_path.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "content/public/test/nested_message_pump_android.h"
 #include "content/shell/common/shell_switches.h"
diff --git a/content/test/content_test_suite.h b/content/test/content_test_suite.h
index 0785082..cb37033 100644
--- a/content/test/content_test_suite.h
+++ b/content/test/content_test_suite.h
@@ -7,6 +7,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
 #include "content/public/test/content_test_suite_base.h"
 
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
index 9aa36e71..5393589 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
@@ -167,7 +167,7 @@
                ['linux', 'nvidia'], bug=524144)
     self.Flaky('conformance/textures/image/' +
                'tex-image-and-sub-image-2d-with-image-' +
-               'rgb-rgb-unsigned-byte.html',
+               'rgb-rgb-unsigned_byte.html',
                ['linux', 'nvidia'], bug=596622)
     # AMD
     self.Flaky('conformance/more/functions/uniformi.html',
diff --git a/content/test/test_blink_web_unit_test_support.cc b/content/test/test_blink_web_unit_test_support.cc
index d4a55d1..83f1a28 100644
--- a/content/test/test_blink_web_unit_test_support.cc
+++ b/content/test/test_blink_web_unit_test_support.cc
@@ -4,6 +4,7 @@
 
 #include "content/test/test_blink_web_unit_test_support.h"
 
+#include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -117,6 +118,10 @@
       scheduler::LazySchedulerMessageLoopDelegateForTests::Create()));
   web_thread_ = renderer_scheduler_->CreateMainThread();
 
+  // Set up a FeatureList instance, so that code using that API will not hit a
+  // an error that it's not set. Cleared by ClearInstanceForTesting() below.
+  base::FeatureList::SetInstance(make_scoped_ptr(new base::FeatureList));
+
   blink::initialize(this);
   blink::setLayoutTestMode(true);
   blink::WebRuntimeFeatures::enableApplicationCache(true);
@@ -156,6 +161,9 @@
   if (renderer_scheduler_)
     renderer_scheduler_->Shutdown();
   blink::shutdown();
+
+  // Clear the FeatureList that was registered in the constructor.
+  base::FeatureList::ClearInstanceForTesting();
 }
 
 blink::WebBlobRegistry* TestBlinkWebUnitTestSupport::blobRegistry() {
diff --git a/content/utility/utility_main.cc b/content/utility/utility_main.cc
index f74958c..e5fefcf3 100644
--- a/content/utility/utility_main.cc
+++ b/content/utility/utility_main.cc
@@ -4,6 +4,7 @@
 
 #include "base/command_line.h"
 #include "base/debug/leak_annotations.h"
+#include "base/feature_list.h"
 #include "base/message_loop/message_loop.h"
 #include "base/threading/platform_thread.h"
 #include "base/timer/hi_res_timer_manager.h"
@@ -36,6 +37,12 @@
     LinuxSandbox::InitializeSandbox();
 #endif
 
+  scoped_ptr<base::FeatureList> feature_list(new base::FeatureList);
+  feature_list->InitializeFromCommandLine(
+      parameters.command_line.GetSwitchValueASCII(switches::kEnableFeatures),
+      parameters.command_line.GetSwitchValueASCII(switches::kDisableFeatures));
+  base::FeatureList::SetInstance(std::move(feature_list));
+
   ChildProcess utility_process;
   utility_process.set_main_thread(new UtilityThreadImpl());
 
diff --git a/content/zygote/zygote_linux.cc b/content/zygote/zygote_linux.cc
index 89fe021a..09828fb4 100644
--- a/content/zygote/zygote_linux.cc
+++ b/content/zygote/zygote_linux.cc
@@ -300,7 +300,6 @@
   return false;
 }
 
-// TODO(jln): remove callers to this broken API. See crbug.com/274855.
 void Zygote::HandleReapRequest(int fd, base::PickleIterator iter) {
   base::ProcessId child;
 
diff --git a/extensions/browser/api/declarative/declarative_rule.h b/extensions/browser/api/declarative/declarative_rule.h
index 58acded8..6e8e909 100644
--- a/extensions/browser/api/declarative/declarative_rule.h
+++ b/extensions/browser/api/declarative/declarative_rule.h
@@ -60,7 +60,7 @@
 template<typename ConditionT>
 class DeclarativeConditionSet {
  public:
-  typedef std::vector<linked_ptr<base::Value>> Values;
+  typedef std::vector<scoped_ptr<base::Value>> Values;
   typedef std::vector<linked_ptr<const ConditionT> > Conditions;
   typedef typename Conditions::const_iterator const_iterator;
 
@@ -143,7 +143,7 @@
 template<typename ActionT>
 class DeclarativeActionSet {
  public:
-  typedef std::vector<linked_ptr<base::Value>> Values;
+  typedef std::vector<scoped_ptr<base::Value>> Values;
   typedef std::vector<scoped_refptr<const ActionT> > Actions;
 
   explicit DeclarativeActionSet(const Actions& actions);
@@ -309,7 +309,7 @@
     std::string* error) {
   Conditions result;
 
-  for (const linked_ptr<base::Value>& value : condition_values) {
+  for (const scoped_ptr<base::Value>& value : condition_values) {
     CHECK(value.get());
     scoped_ptr<ConditionT> condition = ConditionT::Create(
         extension, url_matcher_condition_factory, *value, error);
@@ -367,7 +367,7 @@
   *bad_message = false;
   Actions result;
 
-  for (const linked_ptr<base::Value>& value : action_values) {
+  for (const scoped_ptr<base::Value>& value : action_values) {
     CHECK(value.get());
     scoped_refptr<const ActionT> action =
         ActionT::Create(browser_context, extension, *value, error, bad_message);
diff --git a/extensions/browser/api/declarative/declarative_rule_unittest.cc b/extensions/browser/api/declarative/declarative_rule_unittest.cc
index 6fa3d2f..93ec58b 100644
--- a/extensions/browser/api/declarative/declarative_rule_unittest.cc
+++ b/extensions/browser/api/declarative/declarative_rule_unittest.cc
@@ -22,11 +22,6 @@
 
 namespace {
 
-template<typename T>
-linked_ptr<T> ScopedToLinkedPtr(scoped_ptr<T> ptr) {
-  return linked_ptr<T>(ptr.release());
-}
-
 scoped_ptr<base::DictionaryValue> SimpleManifest() {
   return DictionaryBuilder()
       .Set("name", "extension")
@@ -70,8 +65,8 @@
 TEST(DeclarativeConditionTest, ErrorConditionSet) {
   URLMatcher matcher;
   RecordingConditionSet::Values conditions;
-  conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"key\": 1}")));
-  conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"bad_key\": 2}")));
+  conditions.push_back(ParseJson("{\"key\": 1}"));
+  conditions.push_back(ParseJson("{\"bad_key\": 2}"));
 
   std::string error;
   scoped_ptr<RecordingConditionSet> result = RecordingConditionSet::Create(
@@ -83,8 +78,8 @@
 TEST(DeclarativeConditionTest, CreateConditionSet) {
   URLMatcher matcher;
   RecordingConditionSet::Values conditions;
-  conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"key\": 1}")));
-  conditions.push_back(ScopedToLinkedPtr(ParseJson("[\"val1\", 2]")));
+  conditions.push_back(ParseJson("{\"key\": 1}"));
+  conditions.push_back(ParseJson("[\"val1\", 2]"));
 
   // Test insertion
   std::string error;
@@ -157,14 +152,10 @@
 TEST(DeclarativeConditionTest, FulfillConditionSet) {
   typedef DeclarativeConditionSet<FulfillableCondition> FulfillableConditionSet;
   FulfillableConditionSet::Values conditions;
-  conditions.push_back(ScopedToLinkedPtr(ParseJson(
-      "{\"url_id\": 1, \"max\": 3}")));
-  conditions.push_back(ScopedToLinkedPtr(ParseJson(
-      "{\"url_id\": 2, \"max\": 5}")));
-  conditions.push_back(ScopedToLinkedPtr(ParseJson(
-      "{\"url_id\": 3, \"max\": 1}")));
-  conditions.push_back(ScopedToLinkedPtr(ParseJson(
-      "{\"max\": -5}")));  // No url.
+  conditions.push_back(ParseJson("{\"url_id\": 1, \"max\": 3}"));
+  conditions.push_back(ParseJson("{\"url_id\": 2, \"max\": 5}"));
+  conditions.push_back(ParseJson("{\"url_id\": 3, \"max\": 1}"));
+  conditions.push_back(ParseJson("{\"max\": -5}"));  // No url.
 
   // Test insertion
   std::string error;
@@ -264,8 +255,8 @@
 
 TEST(DeclarativeActionTest, ErrorActionSet) {
   SummingActionSet::Values actions;
-  actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 1}")));
-  actions.push_back(ScopedToLinkedPtr(ParseJson("{\"error\": \"the error\"}")));
+  actions.push_back(ParseJson("{\"value\": 1}"));
+  actions.push_back(ParseJson("{\"error\": \"the error\"}"));
 
   std::string error;
   bool bad = false;
@@ -276,8 +267,8 @@
   EXPECT_FALSE(result);
 
   actions.clear();
-  actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 1}")));
-  actions.push_back(ScopedToLinkedPtr(ParseJson("{\"bad\": 3}")));
+  actions.push_back(ParseJson("{\"value\": 1}"));
+  actions.push_back(ParseJson("{\"bad\": 3}"));
   result = SummingActionSet::Create(NULL, NULL, actions, &error, &bad);
   EXPECT_EQ("", error);
   EXPECT_TRUE(bad);
@@ -286,10 +277,10 @@
 
 TEST(DeclarativeActionTest, ApplyActionSet) {
   SummingActionSet::Values actions;
-  actions.push_back(ScopedToLinkedPtr(ParseJson(
-      "{\"value\": 1,"
-      " \"priority\": 5}")));
-  actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 2}")));
+  actions.push_back(
+      ParseJson("{\"value\": 1,"
+                " \"priority\": 5}"));
+  actions.push_back(ParseJson("{\"value\": 2}"));
 
   // Test insertion
   std::string error;
diff --git a/extensions/browser/api/declarative/rules_registry.h b/extensions/browser/api/declarative/rules_registry.h
index 6c5b64e..91f34f1c 100644
--- a/extensions/browser/api/declarative/rules_registry.h
+++ b/extensions/browser/api/declarative/rules_registry.h
@@ -15,6 +15,7 @@
 #include "base/callback_forward.h"
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/linked_ptr.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "content/public/browser/browser_thread.h"
diff --git a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
index 18d7f2b..0de5031 100644
--- a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
+++ b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
@@ -254,15 +254,15 @@
   URLMatcher matcher;
 
   WebRequestConditionSet::Values conditions;
-  conditions.push_back(linked_ptr<base::Value>(base::test::ParseJson(
+  conditions.push_back(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
       "    \"hostSuffix\": \"example.com\", \n"
       "    \"schemes\": [\"http\"], \n"
       "  }, \n"
-      "}").release()));
-  conditions.push_back(linked_ptr<base::Value>(base::test::ParseJson(
+      "}"));
+  conditions.push_back(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
@@ -270,7 +270,7 @@
       "    \"hostPrefix\": \"www\", \n"
       "    \"schemes\": [\"https\"], \n"
       "  }, \n"
-      "}").release()));
+      "}"));
 
   // Test insertion
   std::string error;
@@ -323,14 +323,14 @@
   URLMatcher matcher;
 
   WebRequestConditionSet::Values conditions;
-  conditions.push_back(linked_ptr<base::Value>(base::test::ParseJson(
+  conditions.push_back(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
       "    \"ports\": [80, [1000, 1010]], \n"  // Allow 80;1000-1010.
       "    \"hostSuffix\": \"example.com\", \n"
       "  }, \n"
-      "}").release()));
+      "}"));
 
   // Test insertion
   std::string error;
diff --git a/extensions/browser/api/system_storage/system_storage_apitest.cc b/extensions/browser/api/system_storage/system_storage_apitest.cc
index 92af678..c57b311 100644
--- a/extensions/browser/api/system_storage/system_storage_apitest.cc
+++ b/extensions/browser/api/system_storage/system_storage_apitest.cc
@@ -7,6 +7,7 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "base/memory/linked_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/storage_monitor/storage_monitor.h"
diff --git a/extensions/browser/updater/update_data_provider.cc b/extensions/browser/updater/update_data_provider.cc
index 1adb8f9..b86eaa8 100644
--- a/extensions/browser/updater/update_data_provider.cc
+++ b/extensions/browser/updater/update_data_provider.cc
@@ -48,8 +48,8 @@
     crypto::SHA256HashString(pubkey_bytes, info->pk_hash.data(),
                              info->pk_hash.size());
     info->version = *extension->version();
-    info->allow_background_download = false;
-
+    info->allows_background_download = false;
+    info->requires_network_encryption = true;
     info->installer = new UpdateInstallShim(
         id, extension->path(),
         base::Bind(&UpdateDataProvider::RunInstallCallback, this));
diff --git a/extensions/common/api/declarative/declarative_manifest_data.cc b/extensions/common/api/declarative/declarative_manifest_data.cc
index 44f23bbf..77460f1 100644
--- a/extensions/common/api/declarative/declarative_manifest_data.cc
+++ b/extensions/common/api/declarative/declarative_manifest_data.cc
@@ -61,8 +61,8 @@
 bool ConvertManifestRule(const linked_ptr<DeclarativeManifestData::Rule>& rule,
                          ErrorBuilder* error_builder) {
   auto convert_list =
-      [error_builder](std::vector<linked_ptr<base::Value>>& list) {
-        for (const linked_ptr<base::Value>& value : list) {
+      [error_builder](std::vector<scoped_ptr<base::Value>>& list) {
+        for (const scoped_ptr<base::Value>& value : list) {
           base::DictionaryValue* dictionary = nullptr;
           if (!value->GetAsDictionary(&dictionary)) {
             error_builder->Append("expected dictionary, got %s",
diff --git a/extensions/common/cast/cast_cert_validator.cc b/extensions/common/cast/cast_cert_validator.cc
index 1d38853..10663950 100644
--- a/extensions/common/cast/cast_cert_validator.cc
+++ b/extensions/common/cast/cast_cert_validator.cc
@@ -10,6 +10,7 @@
 #include <openssl/x509.h>
 #include <stddef.h>
 #include <stdint.h>
+#include <algorithm>
 #include <utility>
 
 #include "base/logging.h"
@@ -19,8 +20,17 @@
 #include "crypto/openssl_util.h"
 #include "crypto/scoped_openssl_types.h"
 #include "extensions/browser/api/cast_channel/cast_auth_ica.h"
+#include "net/cert/internal/certificate_policies.h"
+#include "net/cert/internal/extended_key_usage.h"
+#include "net/cert/internal/parse_certificate.h"
+#include "net/cert/internal/parse_name.h"
+#include "net/cert/internal/signature_algorithm.h"
+#include "net/cert/internal/signature_policy.h"
+#include "net/cert/internal/verify_certificate_chain.h"
+#include "net/cert/internal/verify_signed_data.h"
 #include "net/cert/x509_certificate.h"
 #include "net/cert/x509_util_openssl.h"
+#include "net/der/input.h"
 #include "net/ssl/scoped_openssl_types.h"
 
 namespace extensions {
@@ -28,6 +38,314 @@
 namespace cast_crypto {
 namespace {
 
+// -------------------------------------------------------------------------
+// Cast trust anchors.
+// -------------------------------------------------------------------------
+
+// There are two trusted roots for Cast certificate chains:
+//
+//   (1) CN=Cast Root CA
+//   (2) CN=Eureka Root CA
+//
+// Note that only the subject/spki are saved here, not the full certificate.
+// See the TODO in CreateCastTrustStore().
+
+unsigned char kCastRootCaSubjectDer[119] = {
+    0x30, 0x75, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+    0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
+    0x0C, 0x0A, 0x43, 0x61, 0x6C, 0x69, 0x66, 0x6F, 0x72, 0x6E, 0x69, 0x61,
+    0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x0D, 0x4D,
+    0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x56, 0x69, 0x65, 0x77,
+    0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0A, 0x47,
+    0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x0D, 0x30,
+    0x0B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x04, 0x43, 0x61, 0x73, 0x74,
+    0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0C, 0x43,
+    0x61, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41,
+};
+
+unsigned char kCastRootCaSpkiDer[294] = {
+    0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
+    0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00,
+    0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xBA, 0xD9, 0x65,
+    0x9D, 0xDA, 0x39, 0xD3, 0xC1, 0x77, 0xF6, 0xD4, 0xD0, 0xAE, 0x8F, 0x58,
+    0x08, 0x68, 0x39, 0x4A, 0x95, 0xED, 0x70, 0xCF, 0xFD, 0x79, 0x08, 0xA9,
+    0xAA, 0xE5, 0xE9, 0xB8, 0xA7, 0x2D, 0xA0, 0x67, 0x47, 0x8A, 0x9E, 0xC9,
+    0xCF, 0x70, 0xB3, 0x05, 0x87, 0x69, 0x11, 0xEC, 0x70, 0x98, 0x97, 0xC3,
+    0xE6, 0xC3, 0xC3, 0xEB, 0xBD, 0xC6, 0xB0, 0x3D, 0xFC, 0x4F, 0xC1, 0x5E,
+    0x38, 0x9F, 0xDA, 0xCF, 0x73, 0x30, 0x06, 0x5B, 0x79, 0x37, 0xC1, 0x5E,
+    0x8C, 0x87, 0x47, 0x94, 0x9A, 0x41, 0x92, 0x2A, 0xD6, 0x95, 0xC4, 0x71,
+    0x5C, 0x27, 0x5D, 0x08, 0xB1, 0x80, 0xC6, 0x92, 0xBD, 0x1B, 0xE3, 0x41,
+    0x97, 0xA1, 0xEC, 0x75, 0x9F, 0x55, 0x9E, 0x3E, 0x9F, 0x8F, 0x1C, 0xC7,
+    0x65, 0x64, 0x07, 0xD3, 0xB3, 0x96, 0xA1, 0x04, 0x9F, 0x91, 0xC4, 0xDE,
+    0x0A, 0x7B, 0x6C, 0xD9, 0xC8, 0xC0, 0x78, 0x31, 0xA0, 0x19, 0x42, 0xA9,
+    0xE8, 0x83, 0xE3, 0xCE, 0xFC, 0xF1, 0xCE, 0xC2, 0x2E, 0x24, 0x46, 0x95,
+    0x09, 0x19, 0xCA, 0xC0, 0x46, 0xB2, 0xE5, 0x01, 0xBA, 0xD7, 0x4F, 0xF3,
+    0xBF, 0xF6, 0x69, 0xAD, 0x99, 0x04, 0xFA, 0xA0, 0x07, 0x39, 0x0E, 0xE6,
+    0xDF, 0x51, 0x47, 0x07, 0xC0, 0xE4, 0xA9, 0x5C, 0x4B, 0x94, 0xC5, 0x2F,
+    0xB3, 0xA0, 0x30, 0x7F, 0xE7, 0x95, 0x6B, 0xB2, 0xAF, 0x32, 0x0D, 0xF1,
+    0x8C, 0xD5, 0x6D, 0xCB, 0x7B, 0x47, 0xA7, 0x08, 0xAB, 0xCB, 0x27, 0xA3,
+    0x4D, 0xCF, 0x4A, 0x5A, 0xF1, 0x05, 0xD1, 0xF8, 0x62, 0xC5, 0x10, 0x2A,
+    0x74, 0x69, 0xAA, 0xE6, 0x4B, 0x96, 0xFB, 0x9B, 0xD8, 0x63, 0xE4, 0x58,
+    0x66, 0xD3, 0xAD, 0x8A, 0x6E, 0xFF, 0x7B, 0x5E, 0xF9, 0xA5, 0x56, 0x1E,
+    0x2D, 0x82, 0x31, 0x5B, 0xF0, 0xE2, 0x24, 0xE6, 0x41, 0x4A, 0x1F, 0xAE,
+    0x13, 0x02, 0x03, 0x01, 0x00, 0x01,
+};
+
+unsigned char kEurekaRootCaSubjectDer[126] = {
+    0x30, 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+    0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
+    0x0C, 0x0A, 0x43, 0x61, 0x6C, 0x69, 0x66, 0x6F, 0x72, 0x6E, 0x69, 0x61,
+    0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x0D, 0x4D,
+    0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x56, 0x69, 0x65, 0x77,
+    0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0A, 0x47,
+    0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x12, 0x30,
+    0x10, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x09, 0x47, 0x6F, 0x6F, 0x67,
+    0x6C, 0x65, 0x20, 0x54, 0x56, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,
+    0x04, 0x03, 0x0C, 0x0E, 0x45, 0x75, 0x72, 0x65, 0x6B, 0x61, 0x20, 0x52,
+    0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41,
+};
+
+unsigned char kEurekaRootCaSpkiDer[294] = {
+    0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
+    0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00,
+    0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xB9, 0x11, 0xD0,
+    0xEA, 0x12, 0xDC, 0x32, 0xE1, 0xDF, 0x5C, 0x33, 0x6B, 0x19, 0x73, 0x1D,
+    0x9D, 0x9E, 0xD0, 0x39, 0x76, 0xBF, 0xA5, 0x84, 0x09, 0xA6, 0xFD, 0x6E,
+    0x6D, 0xE9, 0xDC, 0x8F, 0x36, 0x4E, 0xE9, 0x88, 0x02, 0xBD, 0x9F, 0xF4,
+    0xE8, 0x44, 0xFD, 0x4C, 0xF5, 0x9A, 0x02, 0x56, 0x6A, 0x47, 0x2A, 0x63,
+    0x6C, 0x58, 0x45, 0xCC, 0x7C, 0x66, 0x24, 0xDC, 0x79, 0x79, 0xC3, 0x2A,
+    0xA4, 0xB2, 0x8B, 0xA0, 0xF7, 0xA2, 0xB5, 0xCD, 0x06, 0x7E, 0xDB, 0xBE,
+    0xEC, 0x0C, 0x86, 0xF2, 0x0D, 0x24, 0x60, 0x74, 0x84, 0xCA, 0x29, 0x23,
+    0x84, 0x02, 0xD8, 0xA7, 0xED, 0x3B, 0xF1, 0xEC, 0x26, 0x47, 0x54, 0xE3,
+    0xB1, 0x2D, 0xE6, 0x64, 0x0F, 0xF6, 0x72, 0xC5, 0xE9, 0x98, 0x52, 0x17,
+    0xC0, 0xFC, 0xF2, 0x2C, 0x20, 0xC8, 0x40, 0xF8, 0x47, 0xC9, 0x32, 0x9E,
+    0x3B, 0x97, 0xB1, 0x8B, 0xF5, 0x98, 0x24, 0x70, 0x63, 0x66, 0x19, 0xC1,
+    0x52, 0xE8, 0x04, 0x05, 0x3D, 0x5F, 0x8D, 0xBC, 0xD8, 0x4B, 0xAF, 0x77,
+    0x98, 0x6F, 0x1F, 0x78, 0xD1, 0xB6, 0x50, 0x27, 0x4D, 0xE4, 0xEC, 0x14,
+    0x69, 0x67, 0x1F, 0x58, 0xAF, 0xA9, 0xA0, 0x11, 0x26, 0x3C, 0x94, 0x32,
+    0x07, 0x7F, 0xD7, 0xE9, 0x69, 0x1F, 0xAE, 0x3F, 0x4F, 0x63, 0x8A, 0x8F,
+    0x89, 0xD6, 0xF2, 0x19, 0x78, 0x5C, 0x21, 0x8E, 0xB1, 0xB6, 0x57, 0xD8,
+    0xC0, 0xE1, 0xEE, 0x7D, 0x6E, 0xDD, 0xF1, 0x3A, 0x0A, 0x6A, 0xF1, 0xBA,
+    0xFF, 0xF9, 0x83, 0x2F, 0xDC, 0xB5, 0xA4, 0x20, 0x17, 0x63, 0x36, 0xEF,
+    0xC8, 0x62, 0x19, 0xCC, 0x56, 0xCE, 0xB2, 0xEA, 0x31, 0x89, 0x4B, 0x78,
+    0x58, 0xC1, 0xBF, 0x03, 0x13, 0x99, 0xE0, 0x12, 0xF2, 0x88, 0xAA, 0x9B,
+    0x94, 0xDA, 0xDD, 0x76, 0x79, 0x17, 0x1E, 0x34, 0xD1, 0x0A, 0xC4, 0x07,
+    0x45, 0x02, 0x03, 0x01, 0x00, 0x01,
+};
+
+// Helper function that creates and initializes a TrustAnchor struct given
+// arrays for the subject's DER and the SPKI's DER.
+template <size_t SubjectSize, size_t SpkiSize>
+net::TrustAnchor CreateTrustAnchor(const uint8_t (&subject)[SubjectSize],
+                                   const uint8_t (&spki)[SpkiSize]) {
+  net::TrustAnchor anchor;
+  anchor.name = std::string(subject, subject + SubjectSize);
+  anchor.spki = std::string(spki, spki + SpkiSize);
+  return anchor;
+}
+
+// Creates a trust store with the two Cast roots.
+//
+// TODO(eroman): The root certificates themselves are not included in the trust
+// store (just their subject/SPKI). The problem with this approach is any
+// restrictions encoded in their (like path length, or policy) are not known
+// when verifying, and hence not enforced.
+net::TrustStore CreateCastTrustStore() {
+  net::TrustStore store;
+  store.anchors.push_back(
+      CreateTrustAnchor(kEurekaRootCaSubjectDer, kEurekaRootCaSpkiDer));
+  store.anchors.push_back(
+      CreateTrustAnchor(kCastRootCaSubjectDer, kCastRootCaSpkiDer));
+  return store;
+}
+
+using ExtensionsMap = std::map<net::der::Input, net::ParsedExtension>;
+
+// Helper that looks up an extension by OID given a map of extensions.
+bool GetExtensionValue(const ExtensionsMap& extensions,
+                       const net::der::Input& oid,
+                       net::der::Input* value) {
+  auto it = extensions.find(oid);
+  if (it == extensions.end())
+    return false;
+  *value = it->second.value;
+  return true;
+}
+
+// Returns the OID for the Audio-Only Cast policy
+// (1.3.6.1.4.1.11129.2.5.2) in DER form.
+net::der::Input AudioOnlyPolicyOid() {
+  static const uint8_t kAudioOnlyPolicy[] = {0x2B, 0x06, 0x01, 0x04, 0x01,
+                                             0xD6, 0x79, 0x02, 0x05, 0x02};
+  return net::der::Input(kAudioOnlyPolicy);
+}
+
+// Cast certificates rely on RSASSA-PKCS#1 v1.5 with SHA-1 for signatures.
+//
+// The following signature policy specifies which signature algorithms (and key
+// sizes) are acceptable. It is used when verifying a chain of certificates, as
+// well as when verifying digital signature using the target certificate's
+// SPKI.
+//
+// This particular policy allows for:
+//   * ECDSA, RSA-SSA, and RSA-PSS
+//   * Supported EC curves: P-256, P-384, P-521.
+//   * Hashes: All SHA hashes including SHA-1 (despite being known weak).
+//   * RSA keys must have a modulus at least 2048-bits long.
+scoped_ptr<net::SignaturePolicy> CreateCastSignaturePolicy() {
+  return make_scoped_ptr(new net::SimpleSignaturePolicy(2048));
+}
+
+// TODO(eroman): Remove "2" from the name once the old approach is no longer
+// used.
+class CertVerificationContextImpl2 : public CertVerificationContext {
+ public:
+  // Save a copy of the passed in public key (DER) and common name (text).
+  CertVerificationContextImpl2(const net::der::Input& spki,
+                               const base::StringPiece& common_name)
+      : spki_(spki.AsString()), common_name_(common_name.as_string()) {}
+
+  VerificationResult VerifySignatureOverData(
+      const base::StringPiece& signature,
+      const base::StringPiece& data) const override {
+    // This code assumes the signature algorithm was RSASSA PKCS#1 v1.5 with
+    // SHA-1.
+    // TODO(eroman): Is it possible to use other hash algorithms?
+    auto signature_algorithm =
+        net::SignatureAlgorithm::CreateRsaPkcs1(net::DigestAlgorithm::Sha1);
+
+    // Use the same policy as was used for verifying signatures in
+    // certificates. This will ensure for instance that the key used is at
+    // least 2048-bits long.
+    auto signature_policy = CreateCastSignaturePolicy();
+
+    bool success = net::VerifySignedData(
+        *signature_algorithm, net::der::Input(data),
+        net::der::BitString(net::der::Input(signature), 0),
+        net::der::Input(&spki_), signature_policy.get());
+
+    if (success)
+      return VerificationResult();
+
+    // TODO(eroman): This error is ambiguous. Could have failed for a number of
+    // reasons, not just invalid signatures (i.e. SPKI parsing, signature
+    // policy, etc).
+    return VerificationResult("Signature verification failed.",
+                              VerificationResult::ERROR_SIGNATURE_INVALID);
+  }
+
+  std::string GetCommonName() const override { return common_name_; }
+
+ private:
+  std::string spki_;
+  std::string common_name_;
+};
+
+// Helper that extracts the Common Name from a certificate's subject field. On
+// success |common_name| contains the text for the attribute (unescaped, so
+// will depend on the encoding used, but for Cast device certs it should
+// be ASCII).
+bool GetCommonNameFromSubject(const net::der::Input& subject_tlv,
+                              std::string* common_name) {
+  net::RDNSequence rdn_sequence;
+  if (!net::ParseName(subject_tlv, &rdn_sequence))
+    return false;
+
+  for (const net::RelativeDistinguishedName& rdn : rdn_sequence) {
+    for (const auto& atv : rdn) {
+      if (atv.type == net::TypeCommonNameOid()) {
+        return atv.ValueAsStringUnsafe(common_name);
+      }
+    }
+  }
+  return false;
+}
+
+// Returns true if the extended key usage list |ekus| contains client auth.
+bool HasClientAuth(const std::vector<net::der::Input>& ekus) {
+  for (const auto& oid : ekus) {
+    if (oid == net::ClientAuth())
+      return true;
+  }
+  return false;
+}
+
+// Checks properties on the target certificate.
+//
+//   * The Key Usage must include Digital Signature
+//   * THe Extended Key Usage must includ TLS Client Auth
+//   * May have the policy 1.3.6.1.4.1.11129.2.5.2 to indicate it
+//     is an audio-only device.
+WARN_UNUSED_RESULT bool CheckTargetCertificate(
+    const net::der::Input& cert_der,
+    scoped_ptr<CertVerificationContext>* context,
+    CastDeviceCertPolicy* policy) {
+  // TODO(eroman): Simplify this. The certificate chain verification
+  // function already parses this stuff, awkward to re-do it here.
+
+  net::ParsedCertificate cert;
+  if (!net::ParseCertificate(cert_der, &cert))
+    return false;
+
+  net::ParsedTbsCertificate tbs;
+  if (!net::ParseTbsCertificate(cert.tbs_certificate_tlv, &tbs))
+    return false;
+
+  // Get the extensions.
+  if (!tbs.has_extensions)
+    return false;
+  ExtensionsMap extensions;
+  if (!net::ParseExtensions(tbs.extensions_tlv, &extensions))
+    return false;
+
+  net::der::Input extension_value;
+
+  // Get the Key Usage extension.
+  if (!GetExtensionValue(extensions, net::KeyUsageOid(), &extension_value))
+    return false;
+  net::der::BitString key_usage;
+  if (!net::ParseKeyUsage(extension_value, &key_usage))
+    return false;
+
+  // Ensure Key Usage contains digitalSignature.
+  if (!key_usage.AssertsBit(net::KEY_USAGE_BIT_DIGITAL_SIGNATURE))
+    return false;
+
+  // Get the Extended Key Usage extension.
+  if (!GetExtensionValue(extensions, net::ExtKeyUsageOid(), &extension_value))
+    return false;
+  std::vector<net::der::Input> ekus;
+  if (!net::ParseEKUExtension(extension_value, &ekus))
+    return false;
+
+  // Ensure Extended Key Usage contains client auth.
+  if (!HasClientAuth(ekus))
+    return false;
+
+  // Check for an optional audio-only policy extension.
+  *policy = CastDeviceCertPolicy::NONE;
+  if (GetExtensionValue(extensions, net::CertificatePoliciesOid(),
+                        &extension_value)) {
+    std::vector<net::der::Input> policies;
+    if (!net::ParseCertificatePoliciesExtension(extension_value, &policies))
+      return false;
+
+    // Look for an audio-only policy. Disregard any other policy found.
+    if (std::find(policies.begin(), policies.end(), AudioOnlyPolicyOid()) !=
+        policies.end()) {
+      *policy = CastDeviceCertPolicy::AUDIO_ONLY;
+    }
+  }
+
+  // Get the Common Name for the certificate.
+  std::string common_name;
+  if (!GetCommonNameFromSubject(tbs.subject_tlv, &common_name))
+    return false;
+
+  context->reset(new CertVerificationContextImpl2(tbs.spki_tlv, common_name));
+  return true;
+}
+
 class CertVerificationContextImpl : public CertVerificationContext {
  public:
   // Takes ownership of the passed-in x509 object
@@ -87,6 +405,19 @@
   net::ScopedX509 x509_;
 };
 
+// Converts a base::Time::Exploded to a net::der::GeneralizedTime.
+net::der::GeneralizedTime ConvertExplodedTime(
+    const base::Time::Exploded& exploded) {
+  net::der::GeneralizedTime result;
+  result.year = exploded.year;
+  result.month = exploded.month;
+  result.day = exploded.day_of_month;
+  result.hours = exploded.hour;
+  result.minutes = exploded.minute;
+  result.seconds = exploded.second;
+  return result;
+}
+
 }  // namespace
 
 VerificationResult::VerificationResult() : VerificationResult("", ERROR_NONE) {}
@@ -157,6 +488,48 @@
   return VerificationResult();
 }
 
+bool VerifyDeviceCert2(const std::vector<std::string>& certs,
+                       const base::Time::Exploded& time,
+                       scoped_ptr<CertVerificationContext>* context,
+                       CastDeviceCertPolicy* policy) {
+  // Initialize the trust store used for verifying Cast
+  // device certificates.
+  //
+  // Performance: This code is re-building a TrustStore object each
+  // time a chain needs to be verified rather than caching it, to
+  // avoid memory bloat.
+  auto trust_store = CreateCastTrustStore();
+
+  // The underlying verification function expects a sequence of
+  // der::Input, so wrap the data in it (cheap).
+  std::vector<net::der::Input> input_chain;
+  for (const auto& cert : certs)
+    input_chain.push_back(net::der::Input(&cert));
+
+  // Use a signature policy compatible with Cast's PKI.
+  auto signature_policy = CreateCastSignaturePolicy();
+
+  // Do RFC 5280 compatible certificate verification using the two Cast
+  // trust anchors and Cast signature policy.
+  if (!net::VerifyCertificateChain(input_chain, trust_store,
+                                   signature_policy.get(),
+                                   ConvertExplodedTime(time))) {
+    return false;
+  }
+
+  // Check properties of the leaf certificate (key usage, policy), and construct
+  // a CertVerificationContext that uses its public key.
+  return CheckTargetCertificate(input_chain[0], context, policy);
+}
+
+scoped_ptr<CertVerificationContext> CertVerificationContextImplForTest(
+    const base::StringPiece& spki) {
+  // Use a bogus CommonName, since this is just exposed for testing signature
+  // verification by unittests.
+  return make_scoped_ptr(
+      new CertVerificationContextImpl2(net::der::Input(spki), "CommonName"));
+}
+
 bool SetTrustedCertificateAuthoritiesForTest(const std::string& keys,
                                              const std::string& signature) {
   return extensions::api::cast_channel::SetTrustedCertificateAuthorities(
diff --git a/extensions/common/cast/cast_cert_validator.h b/extensions/common/cast/cast_cert_validator.h
index af5a055..f89a946 100644
--- a/extensions/common/cast/cast_cert_validator.h
+++ b/extensions/common/cast/cast_cert_validator.h
@@ -8,9 +8,11 @@
 #include <string>
 #include <vector>
 
+#include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/string_piece.h"
+#include "base/time/time.h"
 
 namespace extensions {
 namespace api {
@@ -49,6 +51,15 @@
   std::string error_message;
 };
 
+// Describes the policy for a Device certificate.
+enum class CastDeviceCertPolicy {
+  // The device certificate is unrestricted.
+  NONE,
+
+  // The device certificate is for an audio-only device.
+  AUDIO_ONLY,
+};
+
 // An object of this type is returned by the VerifyDeviceCert function, and can
 // be used for additional certificate-related operations, using the verified
 // certificate.
@@ -82,6 +93,44 @@
     const std::vector<std::string>& ica_certs,
     scoped_ptr<CertVerificationContext>* context);
 
+// Verifies a cast device certficate given a chain of DER-encoded certificates.
+//
+// Inputs:
+//
+// * |certs| is a chain of DER-encoded certificates:
+//   * |certs[0]| is the target certificate (i.e. the device certificate)
+//   * |certs[i]| is the certificate that issued certs[i-1]
+//   * |certs.back()| must be signed by a trust anchor
+//
+// * |time| is the UTC time to use for determining if the certificate
+//   is expired.
+//
+// Outputs:
+//
+// Returns true on success, false on failure. On success the output
+// parameters are filled with more details:
+//
+//   * |context| is filled with an object that can be used to verify signatures
+//     using the device certificate's public key, as well as to extract other
+//     properties from the device certificate (Common Name).
+//   * |policy| is filled with an indication of the device certificate's policy
+//     (i.e. is it for audio-only devices or is it unrestricted?)
+//
+// TODO(eroman): Remove "2" from the name once the old approach is no longer
+// used.
+bool VerifyDeviceCert2(const std::vector<std::string>& certs,
+                       const base::Time::Exploded& time,
+                       scoped_ptr<CertVerificationContext>* context,
+                       CastDeviceCertPolicy* policy) WARN_UNUSED_RESULT;
+
+// Exposed only for unit-tests, not for use in production code.
+// Production code would get a context from VerifyDeviceCert().
+//
+// Constructs a VerificationContext that uses the provided public key.
+// The common name will be hardcoded to some test value.
+scoped_ptr<CertVerificationContext> CertVerificationContextImplForTest(
+    const base::StringPiece& spki);
+
 // Sets trusted certificate authorities. Only exposed for tests.
 bool SetTrustedCertificateAuthoritiesForTest(const std::string& keys,
                                              const std::string& signature);
diff --git a/extensions/common/cast/cast_cert_validator_unittest.cc b/extensions/common/cast/cast_cert_validator_unittest.cc
new file mode 100644
index 0000000..1ff2bef
--- /dev/null
+++ b/extensions/common/cast/cast_cert_validator_unittest.cc
@@ -0,0 +1,531 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/common/cast/cast_cert_validator.h"
+
+#include "base/files/file_util.h"
+#include "base/path_service.h"
+#include "extensions/common/extension_paths.h"
+#include "net/cert/pem_tokenizer.h"
+#include "net/der/parse_values.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+
+namespace api {
+
+namespace cast_crypto {
+
+namespace {
+
+// Creates an std::string given a uint8_t array.
+template <size_t N>
+std::string CreateString(const uint8_t (&data)[N]) {
+  return std::string(reinterpret_cast<const char*>(data), N);
+}
+
+// Reads a file from the cast certificates test data directory:
+//     src/extensions/test/data/cast_certificates/
+std::string ReadTestFileToString(const std::string& file_name) {
+  base::FilePath filepath;
+  if (!PathService::Get(DIR_TEST_DATA, &filepath)) {
+    ADD_FAILURE() << "Couldn't retrieve test data root";
+    return std::string();
+  }
+  filepath = filepath.AppendASCII("cast_certificates/" + file_name);
+
+  // Read the full contents of the file.
+  std::string file_data;
+  if (!base::ReadFileToString(filepath, &file_data)) {
+    ADD_FAILURE() << "Couldn't read file: " << filepath.value();
+    return std::string();
+  }
+
+  return file_data;
+}
+
+// Indicates the expected result of test verification.
+enum TestResult {
+  RESULT_SUCCESS,
+  RESULT_FAIL,
+};
+
+// Reads a PEM file containing "CERTIFICATE" blocks to a vector of certificate
+// data.
+std::vector<std::string> ReadCertificateChainFromFile(
+    const std::string& file_name) {
+  std::string file_data = ReadTestFileToString(file_name);
+
+  // Read the certificate chain from the test file, which is comprised of PEM
+  // blocks titled "CERTIFICATE".
+  std::vector<std::string> pem_headers;
+  pem_headers.push_back("CERTIFICATE");
+
+  std::vector<std::string> certs;
+  net::PEMTokenizer pem_tokenizer(file_data, pem_headers);
+  while (pem_tokenizer.GetNext())
+    certs.push_back(pem_tokenizer.data());
+
+  return certs;
+}
+
+// Reads a test chain from |file_name|, and asserts that verifying it as a Cast
+// device certificate results in |expected_result|.
+//
+//  * |expected_policy| - The policy that should have been identified for the
+//                        device certificate.
+//  * |time| - The timestamp to use when verifying the certificate.
+void RunTest(TestResult expected_result,
+             const std::string& expected_common_name,
+             CastDeviceCertPolicy expected_policy,
+             const std::string& file_name,
+             const base::Time::Exploded& time) {
+  auto certs = ReadCertificateChainFromFile(file_name);
+
+  scoped_ptr<CertVerificationContext> context;
+  CastDeviceCertPolicy policy;
+  bool result = VerifyDeviceCert2(certs, time, &context, &policy);
+
+  if (expected_result == RESULT_SUCCESS) {
+    ASSERT_TRUE(result);
+    EXPECT_EQ(expected_policy, policy);
+    ASSERT_TRUE(context.get());
+
+    // Test that the context is good.
+    EXPECT_EQ(expected_common_name, context->GetCommonName());
+
+    // Test that an invalid signature fails.
+
+    EXPECT_FALSE(
+        context->VerifySignatureOverData("bogus signature", "bogus data")
+            .Success());
+
+    // Note that testing that a correct signature succeeds would be a natural
+    // test to follow with, but we don't have signed data for these device
+    // certificates to use. The success case is instead tested separately.
+  } else {
+    ASSERT_FALSE(result);
+  }
+}
+
+// Creates a time in UTC at midnight.
+base::Time::Exploded CreateDate(int year, int month, int day) {
+  base::Time::Exploded time = {0};
+  time.year = year;
+  time.month = month;
+  time.day_of_month = day;
+  return time;
+}
+
+// Returns 2016-04-01 00:00:00 UTC.
+//
+// This is a time when most of the test certificate paths are
+// valid.
+base::Time::Exploded AprilFirst2016() {
+  return CreateDate(2016, 4, 1);
+}
+
+// Returns 2015-01-01 00:00:00 UTC.
+base::Time::Exploded JanuaryFirst2015() {
+  return CreateDate(2015, 1, 1);
+}
+
+// Returns 2040-03-01 00:00:00 UTC.
+//
+// This is so far in the future that the test chains in this unit-test
+// should all be invalid.
+base::Time::Exploded MarchFirst2040() {
+  return CreateDate(2040, 3, 1);
+}
+
+// Tests verifying a valid certificate chain of length 2:
+//
+//   0: 2ZZBG9 FA8FCA3EF91A
+//   1: Eureka Gen1 ICA
+//
+// Chains to trust anchor:
+//   Eureka Root CA    (not included)
+TEST(VerifyCastDeviceCertTest, ChromecastGen1) {
+  RunTest(RESULT_SUCCESS, "2ZZBG9 FA8FCA3EF91A", CastDeviceCertPolicy::NONE,
+          "chromecast_gen1.pem", AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 2:
+//
+//  0: 2ZZBG9 FA8FCA3EF91A
+//  1: Eureka Gen1 ICA
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+TEST(VerifyCastDeviceCertTest, ChromecastGen1Reissue) {
+  RunTest(RESULT_SUCCESS, "2ZZBG9 FA8FCA3EF91A", CastDeviceCertPolicy::NONE,
+          "chromecast_gen1_reissue.pem", AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 2:
+//
+//   0: 3ZZAK6 FA8FCA3F0D35
+//   1: Chromecast ICA 3
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+TEST(VerifyCastDeviceCertTest, ChromecastGen2) {
+  RunTest(RESULT_SUCCESS, "3ZZAK6 FA8FCA3F0D35", CastDeviceCertPolicy::NONE,
+          "chromecast_gen2.pem", AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 3:
+//
+//   0: -6394818897508095075
+//   1: Asus fugu Cast ICA
+//   2: Widevine Cast Subroot
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+TEST(VerifyCastDeviceCertTest, Fugu) {
+  RunTest(RESULT_SUCCESS, "-6394818897508095075", CastDeviceCertPolicy::NONE,
+          "fugu.pem", AprilFirst2016());
+}
+
+// Tests verifying an invalid certificate chain of length 1:
+//
+//  0: Cast Test Untrusted Device
+//
+// Chains to:
+//   Cast Test Untrusted ICA    (not included)
+//
+// This is invalid because it does not chain to a trust anchor.
+TEST(VerifyCastDeviceCertTest, Unchained) {
+  RunTest(RESULT_FAIL, "", CastDeviceCertPolicy::NONE, "unchained.pem",
+          AprilFirst2016());
+}
+
+// Tests verifying one of the self-signed trust anchors (chain of length 1):
+//
+//  0: Cast Root CA
+//
+// Chains to trust anchor:
+//   Cast Root CA
+//
+// Although this is a valid and trusted certificate (it is one of the
+// trust anchors after all) it fails the test as it is not a *device
+// certificate*.
+TEST(VerifyCastDeviceCertTest, CastRootCa) {
+  RunTest(RESULT_FAIL, "", CastDeviceCertPolicy::NONE, "cast_root_ca.pem",
+          AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 2:
+//
+//  0: 4ZZDZJ FA8FCA7EFE3C
+//  1: Chromecast ICA 4 (Audio)
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+//
+// This device certificate has a policy that means it is valid only for audio
+// devices.
+TEST(VerifyCastDeviceCertTest, ChromecastAudio) {
+  RunTest(RESULT_SUCCESS, "4ZZDZJ FA8FCA7EFE3C",
+          CastDeviceCertPolicy::AUDIO_ONLY, "chromecast_audio.pem",
+          AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 3:
+//
+//  0: MediaTek Audio Dev Test
+//  1: MediaTek Audio Dev Model
+//  2: Cast Audio Dev Root CA
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+//
+// This device certificate has a policy that means it is valid only for audio
+// devices.
+TEST(VerifyCastDeviceCertTest, MtkAudioDev) {
+  RunTest(RESULT_SUCCESS, "MediaTek Audio Dev Test",
+          CastDeviceCertPolicy::AUDIO_ONLY, "mtk_audio_dev.pem",
+          JanuaryFirst2015());
+}
+
+// Tests verifying a valid certificate chain of length 2:
+//
+//  0: 9V0000VB FA8FCA784D01
+//  1: Cast TV ICA (Vizio)
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+TEST(VerifyCastDeviceCertTest, Vizio) {
+  RunTest(RESULT_SUCCESS, "9V0000VB FA8FCA784D01", CastDeviceCertPolicy::NONE,
+          "vizio.pem", AprilFirst2016());
+}
+
+// Tests verifying a valid certificate chain of length 2 using a date that
+// precedes its notBefore. Must fail.
+TEST(VerifyCastDeviceCertTest, ChromecastGen2NotValidBefore) {
+  RunTest(RESULT_FAIL, "", CastDeviceCertPolicy::NONE, "chromecast_gen2.pem",
+          JanuaryFirst2015());
+}
+
+// Tests verifying a valid certificate chain of length 2 using a date that
+// is after its notAfter. Must fail.
+TEST(VerifyCastDeviceCertTest, ChromecastGen2NotValidAfter) {
+  RunTest(RESULT_FAIL, "", CastDeviceCertPolicy::NONE, "chromecast_gen2.pem",
+          MarchFirst2040());
+}
+
+// Tests verifying a valid certificate chain of length 3:
+//
+//  0: Audio Reference Dev Test
+//  1: Audio Reference Dev Model
+//  2: Cast Audio Dev Root CA
+//
+// Chains to trust anchor:
+//   Cast Root CA     (not included)
+//
+// This device certificate has a policy that means it is valid only for audio
+// devices.
+TEST(VerifyCastDeviceCertTest, AudioRefDevTestChain3) {
+  RunTest(RESULT_SUCCESS, "Audio Reference Dev Test",
+          CastDeviceCertPolicy::AUDIO_ONLY, "audio_ref_dev_test_chain_3.pem",
+          AprilFirst2016());
+}
+
+// This duplicates the certificate verification from the test above, but then
+// additionally uses the context to verify some data.
+TEST(VerifyCastDeviceCertTest, AudioRefDevTestChain3VerifySignedData) {
+  auto certs = ReadCertificateChainFromFile("audio_ref_dev_test_chain_3.pem");
+
+  scoped_ptr<CertVerificationContext> context;
+  CastDeviceCertPolicy policy;
+  ASSERT_TRUE(VerifyDeviceCert2(certs, AprilFirst2016(), &context, &policy));
+
+  unsigned char kData[] = {
+      0x5f, 0x76, 0x0d, 0xc8, 0x4b, 0xe7, 0x6e, 0xcb, 0x31, 0x58, 0xca, 0xd3,
+      0x7d, 0x23, 0x55, 0xbe, 0x8d, 0x52, 0x87, 0x83, 0x27, 0x52, 0x78, 0xfa,
+      0xa6, 0xdd, 0xdf, 0x13, 0x00, 0x51, 0x57, 0x6a, 0x83, 0x15, 0xcc, 0xc5,
+      0xb2, 0x5c, 0xdf, 0xe6, 0x81, 0xdc, 0x13, 0x58, 0x7b, 0x94, 0x0f, 0x69,
+      0xcc, 0xdf, 0x68, 0x41, 0x8a, 0x95, 0xe2, 0xcd, 0xf8, 0xde, 0x0f, 0x2f,
+      0x30, 0xcf, 0x73, 0xbf, 0x37, 0x52, 0x87, 0x23, 0xd7, 0xbe, 0xba, 0x7c,
+      0xde, 0x50, 0xd3, 0x77, 0x9c, 0x06, 0x82, 0x28, 0x67, 0xc1, 0x1a, 0xf5,
+      0x8a, 0xa0, 0xf2, 0x32, 0x09, 0x95, 0x41, 0x41, 0x93, 0x8e, 0x62, 0xaa,
+      0xf3, 0xe3, 0x22, 0x17, 0x43, 0x94, 0x9b, 0x63, 0xfa, 0x68, 0x20, 0x69,
+      0x38, 0xf6, 0x75, 0x6c, 0xe0, 0x3b, 0xe0, 0x8d, 0x63, 0xac, 0x7f, 0xe3,
+      0x09, 0xd8, 0xde, 0x91, 0xc8, 0x1e, 0x07, 0x4a, 0xb2, 0x1e, 0xe1, 0xe3,
+      0xf4, 0x4d, 0x3e, 0x8a, 0xf4, 0xf8, 0x83, 0x39, 0x2b, 0x50, 0x98, 0x61,
+      0x91, 0x50, 0x00, 0x34, 0x57, 0xd2, 0x0d, 0xf7, 0xfa, 0xc9, 0xcc, 0xd9,
+      0x7a, 0x3d, 0x39, 0x7a, 0x1a, 0xbd, 0xf8, 0xbe, 0x65, 0xb6, 0xea, 0x4e,
+      0x86, 0x74, 0xdd, 0x51, 0x74, 0x6e, 0xa6, 0x7f, 0x14, 0x6c, 0x6a, 0x46,
+      0xb8, 0xaf, 0xcd, 0x6c, 0x78, 0x43, 0x76, 0x47, 0x5b, 0xdc, 0xb6, 0xf6,
+      0x4d, 0x1b, 0xe0, 0xb5, 0xf9, 0xa2, 0xb8, 0x26, 0x3f, 0x3f, 0xb8, 0x80,
+      0xed, 0xce, 0xfd, 0x0e, 0xcb, 0x48, 0x7a, 0x3b, 0xdf, 0x92, 0x44, 0x04,
+      0x81, 0xe4, 0xd3, 0x1e, 0x07, 0x9b, 0x02, 0xae, 0x05, 0x5a, 0x11, 0xf2,
+      0xc2, 0x75, 0x85, 0xd5, 0xf1, 0x53, 0x4c, 0x09, 0xd0, 0x99, 0xf8, 0x3e,
+      0xf6, 0x24, 0x46, 0xae, 0x83, 0x35, 0x3e, 0x6c, 0x8c, 0x2a, 0x9f, 0x1c,
+      0x5b, 0xfb, 0x89, 0x56};
+
+  unsigned char kSha1Signature[] = {
+      0x52, 0x56, 0xcd, 0x53, 0xfa, 0xd9, 0x44, 0x31, 0x00, 0x2e, 0x85, 0x18,
+      0x56, 0xae, 0xf9, 0xf2, 0x70, 0x16, 0xc9, 0x59, 0x53, 0xc0, 0x17, 0xd9,
+      0x09, 0x65, 0x75, 0xee, 0xba, 0xc8, 0x0d, 0x06, 0x2e, 0xb7, 0x1b, 0xd0,
+      0x6a, 0x4d, 0x58, 0xde, 0x8e, 0xbe, 0x92, 0x22, 0x53, 0x19, 0xbf, 0x74,
+      0x8f, 0xb8, 0xfc, 0x3c, 0x9b, 0x42, 0x14, 0x7d, 0xe1, 0xfc, 0xa3, 0x71,
+      0x91, 0x6c, 0x5d, 0x28, 0x69, 0x8d, 0xd2, 0xde, 0xd1, 0x8f, 0xac, 0x6d,
+      0xf6, 0x48, 0xd8, 0x6f, 0x0e, 0xc9, 0x0a, 0xfa, 0xde, 0x20, 0xe0, 0x9d,
+      0x7a, 0xf8, 0x30, 0xa8, 0xd4, 0x79, 0x15, 0x63, 0xfb, 0x97, 0xa9, 0xef,
+      0x9f, 0x9c, 0xac, 0x16, 0xba, 0x1b, 0x2c, 0x14, 0xb4, 0xa4, 0x54, 0x5e,
+      0xec, 0x04, 0x10, 0x84, 0xc2, 0xa0, 0xd9, 0x6f, 0x05, 0xd4, 0x09, 0x8c,
+      0x85, 0xe9, 0x7a, 0xd1, 0x5a, 0xa3, 0x70, 0x00, 0x30, 0x9b, 0x19, 0x44,
+      0x2a, 0x90, 0x7a, 0xcd, 0x91, 0x94, 0x90, 0x66, 0xf9, 0x2e, 0x5e, 0x43,
+      0x27, 0x33, 0x2c, 0x45, 0xa7, 0xe2, 0x3a, 0x6d, 0xc9, 0x44, 0x58, 0x39,
+      0x45, 0xcb, 0xbd, 0x2f, 0xc5, 0xb4, 0x08, 0x41, 0x4d, 0x45, 0x67, 0x55,
+      0x0d, 0x43, 0x3c, 0xb6, 0x81, 0xbb, 0xb4, 0x34, 0x07, 0x10, 0x28, 0x17,
+      0xc2, 0xad, 0x40, 0x3b, 0xaf, 0xcb, 0xc0, 0xf6, 0x9d, 0x0e, 0x9b, 0xca,
+      0x2b, 0x20, 0xdf, 0xd0, 0xa3, 0xbe, 0xea, 0x3e, 0xe0, 0x82, 0x7b, 0x93,
+      0xfd, 0x9c, 0xaf, 0x97, 0x00, 0x05, 0x44, 0x91, 0x73, 0x68, 0x92, 0x3a,
+      0x8b, 0xbc, 0x0e, 0x96, 0x5e, 0x92, 0x98, 0x70, 0xab, 0xaa, 0x6e, 0x9a,
+      0x8e, 0xb0, 0xf4, 0x92, 0xc5, 0xa0, 0xa0, 0x4b, 0xb3, 0xd5, 0x44, 0x99,
+      0x8e, 0xa1, 0xd1, 0x8f, 0xe3, 0xac, 0x71, 0x1e, 0x3f, 0xc2, 0xfd, 0x0a,
+      0x57, 0xed, 0xea, 0x04};
+
+  unsigned char kSha256Signature[] = {
+      0x8d, 0x4b, 0x45, 0xdc, 0x13, 0x0a, 0x79, 0xae, 0x4b, 0x83, 0x99, 0x39,
+      0x2e, 0x58, 0x04, 0x98, 0x7f, 0x0d, 0xc6, 0x57, 0x7f, 0x6c, 0xd7, 0xf8,
+      0x6f, 0x47, 0xd8, 0xb7, 0xaa, 0x07, 0x29, 0x69, 0x0e, 0x05, 0x3b, 0x8c,
+      0x94, 0x53, 0xb2, 0x76, 0x51, 0x23, 0xdc, 0x85, 0xd2, 0x13, 0x37, 0x5e,
+      0x43, 0x9a, 0x4f, 0x38, 0xdd, 0xfc, 0xbb, 0xdf, 0xf0, 0x74, 0xf5, 0x42,
+      0xa1, 0xaa, 0x60, 0x16, 0x24, 0xc3, 0xcd, 0xf3, 0xd2, 0x8e, 0xa9, 0x39,
+      0xc5, 0x85, 0x99, 0xa2, 0x1b, 0xf5, 0x6d, 0xbd, 0x29, 0x77, 0xad, 0xd4,
+      0x3e, 0xbd, 0xa8, 0x34, 0xb3, 0x0a, 0x4f, 0x61, 0xc0, 0x39, 0x9e, 0x50,
+      0x42, 0x22, 0x58, 0xce, 0xb7, 0x74, 0x15, 0x1e, 0xdf, 0x55, 0x8b, 0x9b,
+      0x64, 0x07, 0x4a, 0xc6, 0x71, 0x34, 0x57, 0x17, 0x9a, 0x96, 0xdc, 0x87,
+      0x38, 0x24, 0xb6, 0x48, 0xde, 0x20, 0xa3, 0xb9, 0xae, 0x5f, 0x4e, 0xb4,
+      0x69, 0xe8, 0x24, 0x0f, 0xca, 0xa4, 0x94, 0x14, 0x97, 0x7e, 0xba, 0x2c,
+      0x18, 0x59, 0x13, 0xca, 0x7e, 0x0f, 0x8f, 0x83, 0xbf, 0x29, 0x63, 0x15,
+      0x20, 0xd5, 0x9a, 0xf7, 0xb8, 0x3f, 0xbf, 0x1d, 0x5b, 0xad, 0x13, 0x88,
+      0x29, 0x8f, 0x5f, 0x31, 0x42, 0x5d, 0x8e, 0x69, 0xc0, 0xc7, 0x76, 0xe4,
+      0xee, 0x04, 0x22, 0x23, 0x73, 0xac, 0x14, 0xb4, 0xc1, 0x20, 0x44, 0x80,
+      0x43, 0x41, 0x58, 0x24, 0x1e, 0x2e, 0xcb, 0xa6, 0x97, 0x41, 0x94, 0xaa,
+      0x6a, 0xbe, 0x55, 0x28, 0x8b, 0xe1, 0x97, 0xd5, 0x1b, 0xb8, 0x9b, 0x4b,
+      0xd6, 0xfd, 0x2c, 0x59, 0xcd, 0x8b, 0x6c, 0xf2, 0x1e, 0x31, 0xef, 0xe8,
+      0xb2, 0xcb, 0xaf, 0x4c, 0xfe, 0xea, 0xec, 0x63, 0xb7, 0xf3, 0x3c, 0x2a,
+      0x15, 0x0e, 0xf0, 0x4e, 0x4a, 0x10, 0x99, 0x62, 0xdd, 0xf4, 0x32, 0x6b,
+      0xf6, 0x23, 0x12, 0x90};
+
+  EXPECT_TRUE(context
+                  ->VerifySignatureOverData(CreateString(kSha1Signature),
+                                            CreateString(kData))
+                  .Success());
+
+  // Verify using a VALID SHA-256 signature. This only fails because it is
+  // expecting a SHA-1 signature not a SHA-256 signature.
+  EXPECT_FALSE(context
+                   ->VerifySignatureOverData(CreateString(kSha256Signature),
+                                             CreateString(kData))
+                   .Success());
+}
+
+// ------------------------------------------------------
+// Valid signature using 1024-bit RSA key
+// ------------------------------------------------------
+
+// This test vector comes from the NIST test vectors (pkcs1v15sign-vectors.txt),
+// PKCS#1 v1.5 Signature Example 1.2.
+//
+// It is a valid signature using a 1024 bit key and SHA-1.
+
+const uint8_t kEx1Message[] = {
+    0x85, 0x13, 0x84, 0xcd, 0xfe, 0x81, 0x9c, 0x22, 0xed, 0x6c, 0x4c,
+    0xcb, 0x30, 0xda, 0xeb, 0x5c, 0xf0, 0x59, 0xbc, 0x8e, 0x11, 0x66,
+    0xb7, 0xe3, 0x53, 0x0c, 0x4c, 0x23, 0x3e, 0x2b, 0x5f, 0x8f, 0x71,
+    0xa1, 0xcc, 0xa5, 0x82, 0xd4, 0x3e, 0xcc, 0x72, 0xb1, 0xbc, 0xa1,
+    0x6d, 0xfc, 0x70, 0x13, 0x22, 0x6b, 0x9e,
+};
+
+const uint8_t kEx1Signature[] = {
+    0x84, 0xfd, 0x2c, 0xe7, 0x34, 0xec, 0x1d, 0xa8, 0x28, 0xd0, 0xf1, 0x5b,
+    0xf4, 0x9a, 0x87, 0x07, 0xc1, 0x5d, 0x05, 0x94, 0x81, 0x36, 0xde, 0x53,
+    0x7a, 0x3d, 0xb4, 0x21, 0x38, 0x41, 0x67, 0xc8, 0x6f, 0xae, 0x02, 0x25,
+    0x87, 0xee, 0x9e, 0x13, 0x7d, 0xae, 0xe7, 0x54, 0x73, 0x82, 0x62, 0x93,
+    0x2d, 0x27, 0x1c, 0x74, 0x4c, 0x6d, 0x3a, 0x18, 0x9a, 0xd4, 0x31, 0x1b,
+    0xdb, 0x02, 0x04, 0x92, 0xe3, 0x22, 0xfb, 0xdd, 0xc4, 0x04, 0x06, 0xea,
+    0x86, 0x0d, 0x4e, 0x8e, 0xa2, 0xa4, 0x08, 0x4a, 0xa9, 0x8b, 0x96, 0x22,
+    0xa4, 0x46, 0x75, 0x6f, 0xdb, 0x74, 0x0d, 0xdb, 0x3d, 0x91, 0xdb, 0x76,
+    0x70, 0xe2, 0x11, 0x66, 0x1b, 0xbf, 0x87, 0x09, 0xb1, 0x1c, 0x08, 0xa7,
+    0x07, 0x71, 0x42, 0x2d, 0x1a, 0x12, 0xde, 0xf2, 0x9f, 0x06, 0x88, 0xa1,
+    0x92, 0xae, 0xbd, 0x89, 0xe0, 0xf8, 0x96, 0xf8,
+};
+
+const uint8_t kEx1PublicKeySpki[] = {
+    0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+    0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
+    0x89, 0x02, 0x81, 0x81, 0x00, 0xa5, 0x6e, 0x4a, 0x0e, 0x70, 0x10, 0x17,
+    0x58, 0x9a, 0x51, 0x87, 0xdc, 0x7e, 0xa8, 0x41, 0xd1, 0x56, 0xf2, 0xec,
+    0x0e, 0x36, 0xad, 0x52, 0xa4, 0x4d, 0xfe, 0xb1, 0xe6, 0x1f, 0x7a, 0xd9,
+    0x91, 0xd8, 0xc5, 0x10, 0x56, 0xff, 0xed, 0xb1, 0x62, 0xb4, 0xc0, 0xf2,
+    0x83, 0xa1, 0x2a, 0x88, 0xa3, 0x94, 0xdf, 0xf5, 0x26, 0xab, 0x72, 0x91,
+    0xcb, 0xb3, 0x07, 0xce, 0xab, 0xfc, 0xe0, 0xb1, 0xdf, 0xd5, 0xcd, 0x95,
+    0x08, 0x09, 0x6d, 0x5b, 0x2b, 0x8b, 0x6d, 0xf5, 0xd6, 0x71, 0xef, 0x63,
+    0x77, 0xc0, 0x92, 0x1c, 0xb2, 0x3c, 0x27, 0x0a, 0x70, 0xe2, 0x59, 0x8e,
+    0x6f, 0xf8, 0x9d, 0x19, 0xf1, 0x05, 0xac, 0xc2, 0xd3, 0xf0, 0xcb, 0x35,
+    0xf2, 0x92, 0x80, 0xe1, 0x38, 0x6b, 0x6f, 0x64, 0xc4, 0xef, 0x22, 0xe1,
+    0xe1, 0xf2, 0x0d, 0x0c, 0xe8, 0xcf, 0xfb, 0x22, 0x49, 0xbd, 0x9a, 0x21,
+    0x37, 0x02, 0x03, 0x01, 0x00, 0x01,
+};
+
+// Tests that a valid signature fails, because it uses a 1024-bit RSA key (too
+// weak).
+TEST(VerifyCastDeviceCertTest, VerifySignature1024BitRsa) {
+  auto context =
+      CertVerificationContextImplForTest(CreateString(kEx1PublicKeySpki));
+
+  EXPECT_FALSE(context
+                   ->VerifySignatureOverData(CreateString(kEx1Signature),
+                                             CreateString(kEx1Message))
+                   .Success());
+}
+
+// ------------------------------------------------------
+// Valid signature using 2048-bit RSA key
+// ------------------------------------------------------
+
+// This test vector was generated (using WebCrypto). It is a valid signature
+// using a 2048-bit RSA key, RSASSA PKCS#1 v1.5 with SHA-1.
+
+const uint8_t kEx2Message[] = {
+    // "hello"
+    0x68, 0x65, 0x6c, 0x6c, 0x6f,
+};
+
+const uint8_t kEx2Signature[] = {
+    0xc1, 0x21, 0x84, 0xe1, 0x62, 0x0e, 0x59, 0x52, 0x5b, 0xa4, 0x10, 0x1e,
+    0x11, 0x80, 0x5b, 0x9e, 0xcb, 0xa0, 0x20, 0x78, 0x29, 0xfc, 0xc0, 0x9a,
+    0xd9, 0x48, 0x90, 0x81, 0x03, 0xa9, 0xc0, 0x2f, 0x0a, 0xc4, 0x20, 0x34,
+    0xb5, 0xdb, 0x19, 0x04, 0xec, 0x94, 0x9b, 0xba, 0x48, 0x43, 0xf3, 0x5a,
+    0x15, 0x56, 0xfc, 0x4a, 0x87, 0x79, 0xf8, 0x50, 0xff, 0x5d, 0x66, 0x25,
+    0xdc, 0xa5, 0xd8, 0xe8, 0x9f, 0x5a, 0x73, 0x79, 0x6f, 0x5d, 0x99, 0xe0,
+    0xd5, 0xa5, 0x84, 0x49, 0x20, 0x3c, 0xe2, 0xa3, 0xd0, 0x69, 0x31, 0x2c,
+    0x13, 0xaf, 0x15, 0xd9, 0x10, 0x0d, 0x6f, 0xdd, 0x9d, 0x62, 0x5d, 0x7b,
+    0xe1, 0x1a, 0x48, 0x59, 0xaf, 0xf7, 0xbe, 0x87, 0x92, 0x60, 0x5d, 0x1a,
+    0xb5, 0xfe, 0x27, 0x38, 0x02, 0x20, 0xe9, 0xaf, 0x04, 0x57, 0xd3, 0x3b,
+    0x70, 0x04, 0x63, 0x5b, 0xc6, 0x5d, 0x83, 0xe2, 0xaf, 0x02, 0xb4, 0xef,
+    0x1c, 0x33, 0x54, 0x38, 0xf8, 0xb5, 0x19, 0xa8, 0x88, 0xdd, 0x1d, 0x96,
+    0x1c, 0x5e, 0x54, 0x80, 0xde, 0x7b, 0xb6, 0x29, 0xb8, 0x6b, 0xea, 0x47,
+    0xe5, 0xf1, 0x7e, 0xed, 0xe1, 0x91, 0xc8, 0xb8, 0x54, 0xd9, 0x1e, 0xfd,
+    0x07, 0x10, 0xbd, 0xa9, 0xd4, 0x93, 0x5e, 0x65, 0x8b, 0x6b, 0x46, 0x93,
+    0x4b, 0x60, 0x2a, 0x26, 0xf0, 0x1b, 0x4e, 0xca, 0x04, 0x82, 0xc0, 0x8d,
+    0xb1, 0xa5, 0xa8, 0x70, 0xdd, 0x66, 0x68, 0x95, 0x09, 0xb4, 0x85, 0x62,
+    0xf5, 0x17, 0x04, 0x48, 0xb4, 0x9d, 0x66, 0x2b, 0x25, 0x82, 0x7e, 0x99,
+    0x3e, 0xa1, 0x11, 0x63, 0xc3, 0xdf, 0x10, 0x20, 0x52, 0x56, 0x32, 0x35,
+    0xa9, 0x36, 0xde, 0x2a, 0xac, 0x10, 0x0d, 0x75, 0x21, 0xed, 0x5b, 0x38,
+    0xb6, 0xb5, 0x1e, 0xb5, 0x5b, 0x9a, 0x72, 0xd5, 0xf8, 0x1a, 0xd3, 0x91,
+    0xb8, 0x29, 0x0e, 0x58,
+};
+
+const uint8_t kEx2PublicKeySpki[] = {
+    0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+    0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
+    0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xde, 0xa5,
+    0x2e, 0x9d, 0x38, 0x62, 0x72, 0x47, 0x84, 0x8f, 0x2e, 0xa5, 0xe3, 0xd6,
+    0x34, 0xb0, 0xf9, 0x79, 0xa9, 0x10, 0x63, 0xa9, 0x93, 0x5a, 0xa1, 0xb9,
+    0xa3, 0x03, 0xd3, 0xcd, 0x9d, 0x84, 0x7d, 0xb6, 0x92, 0x47, 0xb4, 0x7d,
+    0x4a, 0xe8, 0x3a, 0x4b, 0xc5, 0xf6, 0x35, 0x6f, 0x18, 0x72, 0xf3, 0xbc,
+    0xd2, 0x1c, 0x7a, 0xd2, 0xe5, 0xdf, 0xcf, 0xb9, 0xac, 0x28, 0xd3, 0x49,
+    0x2a, 0x4f, 0x08, 0x62, 0xb9, 0xf1, 0xaa, 0x3d, 0x76, 0xe3, 0xa9, 0x96,
+    0x32, 0x24, 0x94, 0x9e, 0x88, 0xf8, 0x5e, 0xc3, 0x3c, 0x14, 0x32, 0x86,
+    0x72, 0xa2, 0x34, 0x3d, 0x41, 0xd0, 0xb2, 0x01, 0x99, 0x01, 0xf3, 0x93,
+    0xa3, 0x76, 0x5a, 0xff, 0x42, 0x28, 0x54, 0xe0, 0xcc, 0x4c, 0xcd, 0x2d,
+    0x3b, 0x0b, 0x47, 0xcc, 0xc2, 0x75, 0x02, 0xc1, 0xb7, 0x0b, 0x37, 0x65,
+    0xe6, 0x0d, 0xe4, 0xc3, 0x85, 0x86, 0x29, 0x3c, 0x77, 0xce, 0xb0, 0x34,
+    0xa9, 0x03, 0xe9, 0x13, 0xbe, 0x97, 0x1e, 0xfd, 0xeb, 0x0d, 0x60, 0xc2,
+    0xb3, 0x19, 0xa1, 0x75, 0x72, 0x57, 0x3f, 0x5d, 0x0e, 0x75, 0xac, 0x10,
+    0x96, 0xad, 0x95, 0x67, 0x9f, 0xa2, 0x84, 0x15, 0x6a, 0x61, 0xb1, 0x47,
+    0xd1, 0x24, 0x78, 0xb4, 0x40, 0x2b, 0xc3, 0x5c, 0x73, 0xd4, 0xc1, 0x8d,
+    0x12, 0xf1, 0x3f, 0xb4, 0x93, 0x17, 0xfe, 0x5d, 0xbf, 0x39, 0xf2, 0x45,
+    0xf9, 0xcf, 0x38, 0x44, 0x40, 0x5b, 0x47, 0x2a, 0xbf, 0xb9, 0xac, 0xa6,
+    0x14, 0xb6, 0x1b, 0xe3, 0xa8, 0x14, 0xf8, 0xfe, 0x47, 0x67, 0xea, 0x90,
+    0x51, 0x12, 0xcf, 0x5e, 0x28, 0xec, 0x92, 0x83, 0x7c, 0xc6, 0x29, 0x9f,
+    0x12, 0x29, 0x88, 0x49, 0xf7, 0xb7, 0xed, 0x5e, 0x3a, 0x78, 0xd6, 0x8a,
+    0xba, 0x42, 0x6e, 0x0a, 0xf4, 0x0d, 0xc1, 0xc0, 0x8f, 0xdb, 0x26, 0x41,
+    0x57, 0x02, 0x03, 0x01, 0x00, 0x01,
+};
+
+// Tests that a valid signature using 2048-bit key succeeds.
+TEST(VerifyCastDeviceCertTest, VerifySignature2048BitRsa) {
+  auto context =
+      CertVerificationContextImplForTest(CreateString(kEx2PublicKeySpki));
+
+  EXPECT_TRUE(context
+                  ->VerifySignatureOverData(CreateString(kEx2Signature),
+                                            CreateString(kEx2Message))
+                  .Success());
+}
+
+}  // namespace
+
+}  // namespace cast_crypto
+
+}  // namespace api
+
+}  // namespace extensions
diff --git a/extensions/extensions_tests.gypi b/extensions/extensions_tests.gypi
index 845924d..422c2f5 100644
--- a/extensions/extensions_tests.gypi
+++ b/extensions/extensions_tests.gypi
@@ -111,6 +111,7 @@
       'common/api/declarative/declarative_manifest_unittest.cc',
       'common/api/printer_provider/usb_printer_manifest_unittest.cc',
       'common/api/sockets/sockets_manifest_permission_unittest.cc',
+      'common/cast/cast_cert_validator_unittest.cc',
       'common/csp_validator_unittest.cc',
       'common/event_filter_unittest.cc',
       'common/extension_l10n_util_unittest.cc',
diff --git a/extensions/test/data/cast_certificates/audio_ref_dev_test_chain_3.pem b/extensions/test/data/cast_certificates/audio_ref_dev_test_chain_3.pem
new file mode 100644
index 0000000..b2f3550a
--- /dev/null
+++ b/extensions/test/data/cast_certificates/audio_ref_dev_test_chain_3.pem
@@ -0,0 +1,264 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 109 (0x6d)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Audio Reference Dev Model
+        Validity
+            Not Before: Jan 22 06:12:57 2016 GMT
+            Not After : May  1 06:12:57 2016 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Audio Reference Dev Test
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a5:24:b3:ec:b7:71:b4:f7:33:1b:98:ac:3d:74:
+                    a4:47:c6:1d:52:9f:79:64:58:d5:ad:84:7f:a5:f2:
+                    bd:24:43:df:c7:11:ae:c0:cb:cd:6f:48:11:da:5b:
+                    d9:43:ac:bf:2b:ac:27:81:e9:a9:d4:04:b3:ac:5b:
+                    97:6c:2e:c2:ca:98:eb:78:14:a1:67:63:91:d5:a8:
+                    29:1a:33:e7:fb:ec:d1:27:e3:c1:e7:cd:ff:cc:2e:
+                    c6:cf:f0:ad:5f:d4:57:27:0d:a1:8b:ef:60:2c:1d:
+                    11:11:bb:4c:7a:c5:18:1f:20:20:db:ec:83:88:2f:
+                    87:69:4b:0c:7d:73:26:4f:46:63:24:de:20:05:83:
+                    a5:5d:3c:5a:8b:4d:28:de:57:53:18:a0:c8:54:4f:
+                    a7:29:b1:2d:5d:cf:5b:da:94:88:c2:27:91:74:23:
+                    24:01:2d:75:51:44:e6:a4:6a:02:21:a6:ee:fc:45:
+                    ef:6f:f4:53:2c:18:ce:8b:6b:06:46:b8:54:de:cc:
+                    52:c3:86:ce:53:7a:90:01:5d:14:c8:e8:af:ec:cd:
+                    9e:0b:1a:ee:96:e5:2b:fd:04:c3:8b:b2:e4:f8:73:
+                    18:64:0c:84:35:3b:d6:46:d3:f2:72:55:06:fc:32:
+                    99:df:14:c9:1a:40:45:ee:61:8c:82:ab:62:6b:7e:
+                    55:35
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                71:19:3F:70:2E:3C:35:18:E1:95:2A:6C:C4:EC:DF:41:99:E1:E4:FF
+            X509v3 Authority Key Identifier: 
+                keyid:60:2A:2F:AD:48:80:2C:77:FC:A7:44:15:7D:5B:E7:9B:63:AA:11:FE
+
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         4e:c8:d5:bd:d1:68:a6:db:41:d7:2e:2f:3b:05:64:de:21:21:
+         04:68:69:56:2f:da:6d:50:f9:3b:39:a1:34:e1:e4:65:2c:96:
+         14:7d:68:4d:31:86:5d:26:6f:20:72:4e:f3:96:b3:3f:96:f0:
+         e3:6b:f3:fe:18:3f:58:c7:2a:17:55:03:af:44:90:7d:59:34:
+         51:4c:63:dc:78:b5:c0:a8:0c:3e:02:9e:f0:f2:17:60:c3:a6:
+         c3:96:c5:04:8a:c0:40:81:7e:91:0a:8d:03:af:9e:f0:59:df:
+         6a:bb:cd:e7:50:24:0a:f0:c6:20:8d:5e:91:8c:75:91:de:b7:
+         3d:62:33:9d:96:1f:0a:21:be:a4:19:24:dc:81:b3:02:e5:6a:
+         5b:2d:52:d8:c4:e0:b2:50:74:a9:37:53:3f:7d:25:f1:19:81:
+         a0:40:9c:7f:6d:91:45:d0:b6:50:12:7f:bd:95:4d:70:00:cc:
+         d8:c1:be:a4:8e:54:73:a8:44:50:0d:e6:f0:ee:49:cf:92:19:
+         43:2f:d0:87:60:d1:dd:10:49:18:a1:03:aa:0f:40:c6:6b:14:
+         79:bd:aa:81:d9:06:09:88:de:41:fe:54:3c:4e:a9:af:4a:be:
+         a9:b2:c1:da:92:73:e1:fa:3b:e8:86:1b:55:31:e7:9e:f7:85:
+         46:96:ad:80
+-----BEGIN CERTIFICATE-----
+MIIECjCCAvKgAwIBAgIBbTANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCVVMx
+EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzAR
+BgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxIjAgBgNVBAMMGUF1ZGlv
+IFJlZmVyZW5jZSBEZXYgTW9kZWwwHhcNMTYwMTIyMDYxMjU3WhcNMTYwNTAxMDYx
+MjU3WjCBgTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsM
+BENhc3QxITAfBgNVBAMMGEF1ZGlvIFJlZmVyZW5jZSBEZXYgVGVzdDCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKUks+y3cbT3MxuYrD10pEfGHVKfeWRY
+1a2Ef6XyvSRD38cRrsDLzW9IEdpb2UOsvyusJ4HpqdQEs6xbl2wuwsqY63gUoWdj
+kdWoKRoz5/vs0SfjwefN/8wuxs/wrV/UVycNoYvvYCwdERG7THrFGB8gINvsg4gv
+h2lLDH1zJk9GYyTeIAWDpV08WotNKN5XUxigyFRPpymxLV3PW9qUiMInkXQjJAEt
+dVFE5qRqAiGm7vxF72/0UywYzotrBka4VN7MUsOGzlN6kAFdFMjor+zNngsa7pbl
+K/0Ew4uy5PhzGGQMhDU71kbT8nJVBvwymd8UyRpARe5hjIKrYmt+VTUCAwEAAaOB
+iTCBhjAJBgNVHRMEAjAAMB0GA1UdDgQWBBRxGT9wLjw1GOGVKmzE7N9BmeHk/zAf
+BgNVHSMEGDAWgBRgKi+tSIAsd/ynRBV9W+ebY6oR/jALBgNVHQ8EBAMCB4AwEwYD
+VR0lBAwwCgYIKwYBBQUHAwIwFwYDVR0gBBAwDjAMBgorBgEEAdZ5AgUCMA0GCSqG
+SIb3DQEBCwUAA4IBAQBOyNW90Wim20HXLi87BWTeISEEaGlWL9ptUPk7OaE04eRl
+LJYUfWhNMYZdJm8gck7zlrM/lvDja/P+GD9YxyoXVQOvRJB9WTRRTGPceLXAqAw+
+Ap7w8hdgw6bDlsUEisBAgX6RCo0Dr57wWd9qu83nUCQK8MYgjV6RjHWR3rc9YjOd
+lh8KIb6kGSTcgbMC5WpbLVLYxOCyUHSpN1M/fSXxGYGgQJx/bZFF0LZQEn+9lU1w
+AMzYwb6kjlRzqERQDebw7knPkhlDL9CHYNHdEEkYoQOqD0DGaxR5vaqB2QYJiN5B
+/lQ8TqmvSr6pssHaknPh+jvohhtVMeee94VGlq2A
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 108 (0x6c)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Audio Dev Root CA
+        Validity
+            Not Before: Jan 22 06:12:45 2016 GMT
+            Not After : May  1 06:12:45 2016 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Audio Reference Dev Model
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:e6:94:18:c6:48:31:b5:a9:a9:b7:28:b7:17:32:
+                    04:e5:0c:83:26:73:bc:97:f8:e8:e1:7c:2e:e4:23:
+                    57:e6:42:0f:0b:af:2f:96:b0:d9:a5:4b:db:89:59:
+                    94:9a:52:e3:10:b5:e9:4b:38:be:79:0a:4a:ec:4f:
+                    90:bd:eb:3b:af:e0:83:f7:98:37:1b:57:e0:91:72:
+                    9b:d8:da:82:09:3a:9c:f0:0a:c6:ef:fd:92:a3:b3:
+                    e4:92:2a:68:23:37:8a:d5:a6:9b:db:9a:bd:68:ce:
+                    2a:1e:83:0e:8d:4b:b0:52:f0:3c:1f:7e:dd:94:87:
+                    06:45:5b:bb:0c:52:50:ed:d3:71:9b:28:51:a7:ed:
+                    09:fc:2c:52:79:bb:98:a5:7e:17:48:c1:f2:33:90:
+                    4b:03:1b:28:17:11:40:e1:c4:93:3f:85:51:f1:c9:
+                    a1:e7:23:13:6d:81:a7:86:b9:c4:60:00:ad:51:2e:
+                    96:b3:41:ac:a9:1e:9b:93:18:11:f3:6b:e8:3a:ba:
+                    d3:c9:f9:7e:02:eb:c6:bf:95:dc:b6:24:fb:d7:5c:
+                    8f:16:5b:14:3d:9a:31:0f:0b:a4:3e:ec:99:3f:4d:
+                    bc:e4:7f:1f:66:d6:91:d7:5e:15:c9:60:b1:65:64:
+                    5c:ab:a1:09:32:3f:67:9a:76:e6:fa:aa:07:05:3a:
+                    0c:95
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                60:2A:2F:AD:48:80:2C:77:FC:A7:44:15:7D:5B:E7:9B:63:AA:11:FE
+            X509v3 Authority Key Identifier: 
+                keyid:4F:93:EA:B8:A6:60:AF:AB:A8:B3:5E:B7:A6:37:7E:66:BD:43:BC:06
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         26:69:33:c7:82:4d:fe:0e:a7:f5:5b:69:a6:1c:eb:2c:6a:48:
+         2b:db:e1:ae:40:bf:fb:c4:9d:53:71:2d:e6:74:40:7c:f6:f1:
+         c0:16:98:70:e2:15:94:38:66:9e:31:54:d7:99:33:e0:ca:66:
+         c5:1c:dd:2d:d2:ff:9e:76:c1:7f:69:ac:b0:89:f7:45:70:ff:
+         27:5f:fe:ec:10:a5:33:61:30:fc:1d:0d:4a:d2:74:69:15:7c:
+         80:df:ad:ea:19:0e:99:9c:fa:22:48:e7:75:86:9e:01:4b:d2:
+         d6:30:82:b2:44:82:10:4d:61:c1:01:37:68:9f:1d:01:d7:67:
+         83:85:7e:6d:98:88:3b:bd:8b:08:75:0c:6f:e0:72:c1:62:33:
+         12:a9:4b:79:39:d8:4e:1f:f6:db:8d:19:75:32:33:c1:8a:4b:
+         0f:e0:3a:f9:fb:7a:b8:91:49:4e:db:f5:13:4b:53:dc:42:79:
+         90:3c:eb:91:9a:10:4f:02:5b:59:1e:d8:80:ae:94:8d:a7:c7:
+         ff:d5:a6:86:1c:a6:3a:c9:95:9f:0e:37:c4:9d:1c:13:05:a8:
+         9e:2b:57:f3:1a:ba:c2:fd:d5:58:9b:e5:62:62:7a:8b:43:0c:
+         c2:4b:4d:4f:35:5e:75:a1:da:f6:73:7f:ce:07:c1:61:ed:26:
+         3f:3c:04:bd
+-----BEGIN CERTIFICATE-----
+MIID9jCCAt6gAwIBAgIBbDANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEG
+A1UECgwKR29vZ2xlIEluYzENMAsGA1UECwwEQ2FzdDEfMB0GA1UEAwwWQ2FzdCBB
+dWRpbyBEZXYgUm9vdCBDQTAeFw0xNjAxMjIwNjEyNDVaFw0xNjA1MDEwNjEyNDVa
+MIGCMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
+TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzENMAsGA1UECwwEQ2Fz
+dDEiMCAGA1UEAwwZQXVkaW8gUmVmZXJlbmNlIERldiBNb2RlbDCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAOaUGMZIMbWpqbcotxcyBOUMgyZzvJf46OF8
+LuQjV+ZCDwuvL5aw2aVL24lZlJpS4xC16Us4vnkKSuxPkL3rO6/gg/eYNxtX4JFy
+m9jaggk6nPAKxu/9kqOz5JIqaCM3itWmm9uavWjOKh6DDo1LsFLwPB9+3ZSHBkVb
+uwxSUO3TcZsoUaftCfwsUnm7mKV+F0jB8jOQSwMbKBcRQOHEkz+FUfHJoecjE22B
+p4a5xGAArVEulrNBrKkem5MYEfNr6Dq608n5fgLrxr+V3LYk+9dcjxZbFD2aMQ8L
+pD7smT9NvOR/H2bWkddeFclgsWVkXKuhCTI/Z5p25vqqBwU6DJUCAwEAAaN5MHcw
+DwYDVR0TBAgwBgEB/wIBADAdBgNVHQ4EFgQUYCovrUiALHf8p0QVfVvnm2OqEf4w
+HwYDVR0jBBgwFoAUT5PquKZgr6uos163pjd+Zr1DvAYwCwYDVR0PBAQDAgEGMBcG
+A1UdIAQQMA4wDAYKKwYBBAHWeQIFAjANBgkqhkiG9w0BAQsFAAOCAQEAJmkzx4JN
+/g6n9VtpphzrLGpIK9vhrkC/+8SdU3Et5nRAfPbxwBaYcOIVlDhmnjFU15kz4Mpm
+xRzdLdL/nnbBf2mssIn3RXD/J1/+7BClM2Ew/B0NStJ0aRV8gN+t6hkOmZz6Ikjn
+dYaeAUvS1jCCskSCEE1hwQE3aJ8dAddng4V+bZiIO72LCHUMb+BywWIzEqlLeTnY
+Th/2240ZdTIzwYpLD+A6+ft6uJFJTtv1E0tT3EJ5kDzrkZoQTwJbWR7YgK6UjafH
+/9WmhhymOsmVnw43xJ0cEwWonitX8xq6wv3VWJvlYmJ6i0MMwktNTzVedaHa9nN/
+zgfBYe0mPzwEvQ==
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 100 (0x64)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Jan 22 06:10:27 2016 GMT
+            Not After : May  1 06:10:27 2016 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Audio Dev Root CA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:b9:86:ee:81:9b:07:f1:c6:15:6a:30:1e:41:bd:
+                    3b:70:f4:96:88:7d:f7:d3:29:63:3d:b8:ca:a1:ec:
+                    3d:81:43:08:85:2b:30:5f:4b:6b:54:19:a9:92:46:
+                    98:9a:2e:2a:ff:9d:f3:48:b2:5d:d6:0a:9c:49:81:
+                    6a:63:1a:12:e7:8e:3c:39:74:67:67:c7:d5:d4:f3:
+                    7c:45:65:07:84:15:b1:df:0b:16:0d:21:de:71:24:
+                    b0:88:00:8a:69:cf:ae:70:24:82:64:60:48:c8:5a:
+                    52:86:50:73:36:e0:24:53:5c:e8:58:13:7a:29:b8:
+                    8a:a8:39:68:98:12:bf:9f:37:df:60:67:e0:3f:1f:
+                    fa:de:b7:d1:a4:17:c3:c2:c5:b5:be:d7:98:e1:3d:
+                    0d:59:66:e5:07:49:9a:bb:9e:4f:f3:37:38:37:df:
+                    0c:19:8b:cd:fd:2c:fc:f5:a9:09:6b:4a:d3:13:22:
+                    8f:fd:f9:64:e5:2c:5f:be:5a:a5:84:32:9c:e5:2a:
+                    73:f5:dc:aa:57:c2:7f:3e:d6:7c:9f:55:f0:28:9c:
+                    21:ba:e6:99:61:fc:39:0d:31:ac:14:9d:c1:97:b5:
+                    e8:ce:97:1b:19:b8:c0:ae:52:1a:2a:46:7a:2c:f8:
+                    c4:18:7d:6a:73:12:20:ec:39:47:e0:de:e3:d5:8d:
+                    82:0f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:1
+            X509v3 Subject Key Identifier: 
+                4F:93:EA:B8:A6:60:AF:AB:A8:B3:5E:B7:A6:37:7E:66:BD:43:BC:06
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         b8:4e:e3:75:e3:9a:5a:9c:65:d3:5a:de:c3:12:1c:bc:5b:97:
+         58:a9:c1:17:53:71:1c:da:47:b4:44:51:59:eb:d3:97:56:b9:
+         b6:4d:cb:ba:b7:87:b8:de:18:33:f4:78:c2:f9:7b:25:0b:cb:
+         6e:6a:6c:df:a0:e0:88:4f:08:25:ec:b1:f5:5f:24:d4:47:c6:
+         ca:4f:c7:86:b8:84:ea:e9:d3:f5:b2:6d:fa:b6:1e:a2:fe:af:
+         ac:61:91:f0:7b:1a:9a:52:c5:8a:d6:b9:9f:1b:4c:0a:e5:0c:
+         45:b9:db:d1:97:99:6f:cc:ee:a6:d6:41:ce:d4:cf:63:88:e4:
+         01:ee:05:a7:61:6c:e8:41:bd:29:59:54:ab:b4:94:f7:1c:30:
+         c2:ea:8b:98:9e:e7:ce:6a:02:28:a6:d6:61:e9:e9:58:23:2a:
+         d5:21:2c:01:62:f8:11:dd:6e:8e:2d:c5:c6:ae:fa:89:c6:fd:
+         d9:e0:62:be:f4:ff:7e:58:15:ca:db:d3:cb:da:92:45:69:d4:
+         46:c6:48:ba:96:a7:ef:be:9e:27:08:75:92:94:85:c8:8e:44:
+         4e:71:75:a1:e3:f6:5e:25:59:80:5d:9e:0f:01:7e:6d:41:72:
+         2d:ae:2d:56:b1:6d:d6:b2:93:fc:6c:05:22:df:28:0f:09:62:
+         61:65:46:2d
+-----BEGIN CERTIFICATE-----
+MIID6DCCAtCgAwIBAgIBZDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEG
+A1UECgwKR29vZ2xlIEluYzENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBS
+b290IENBMB4XDTE2MDEyMjA2MTAyN1oXDTE2MDUwMTA2MTAyN1owfzELMAkGA1UE
+BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZp
+ZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxHzAdBgNVBAMM
+FkNhc3QgQXVkaW8gRGV2IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC5hu6BmwfxxhVqMB5BvTtw9JaIfffTKWM9uMqh7D2BQwiFKzBfS2tU
+GamSRpiaLir/nfNIsl3WCpxJgWpjGhLnjjw5dGdnx9XU83xFZQeEFbHfCxYNId5x
+JLCIAIppz65wJIJkYEjIWlKGUHM24CRTXOhYE3opuIqoOWiYEr+fN99gZ+A/H/re
+t9GkF8PCxbW+15jhPQ1ZZuUHSZq7nk/zNzg33wwZi839LPz1qQlrStMTIo/9+WTl
+LF++WqWEMpzlKnP13KpXwn8+1nyfVfAonCG65plh/DkNMawUncGXtejOlxsZuMCu
+UhoqRnos+MQYfWpzEiDsOUfg3uPVjYIPAgMBAAGjeTB3MA8GA1UdEwQIMAYBAf8C
+AQEwHQYDVR0OBBYEFE+T6rimYK+rqLNet6Y3fma9Q7wGMB8GA1UdIwQYMBaAFHya
+Hn3feVS818xeypmGRXlldCgZMAsGA1UdDwQEAwIBBjAXBgNVHSAEEDAOMAwGCisG
+AQQB1nkCBQIwDQYJKoZIhvcNAQELBQADggEBALhO43XjmlqcZdNa3sMSHLxbl1ip
+wRdTcRzaR7REUVnr05dWubZNy7q3h7jeGDP0eML5eyULy25qbN+g4IhPCCXssfVf
+JNRHxspPx4a4hOrp0/Wybfq2HqL+r6xhkfB7GppSxYrWuZ8bTArlDEW529GXmW/M
+7qbWQc7Uz2OI5AHuBadhbOhBvSlZVKu0lPccMMLqi5ie585qAiim1mHp6VgjKtUh
+LAFi+BHdbo4txcau+onG/dngYr70/35YFcrb08vakkVp1EbGSLqWp+++nicIdZKU
+hciORE5xdaHj9l4lWYBdng8Bfm1Bci2uLVaxbdayk/xsBSLfKA8JYmFlRi0=
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/cast_root_ca.pem b/extensions/test/data/cast_certificates/cast_root_ca.pem
new file mode 100644
index 0000000..25af138
--- /dev/null
+++ b/extensions/test/data/cast_certificates/cast_root_ca.pem
@@ -0,0 +1,80 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 2 (0x2)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Apr  2 17:34:26 2014 GMT
+            Not After : Mar 28 17:34:26 2034 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ba:d9:65:9d:da:39:d3:c1:77:f6:d4:d0:ae:8f:
+                    58:08:68:39:4a:95:ed:70:cf:fd:79:08:a9:aa:e5:
+                    e9:b8:a7:2d:a0:67:47:8a:9e:c9:cf:70:b3:05:87:
+                    69:11:ec:70:98:97:c3:e6:c3:c3:eb:bd:c6:b0:3d:
+                    fc:4f:c1:5e:38:9f:da:cf:73:30:06:5b:79:37:c1:
+                    5e:8c:87:47:94:9a:41:92:2a:d6:95:c4:71:5c:27:
+                    5d:08:b1:80:c6:92:bd:1b:e3:41:97:a1:ec:75:9f:
+                    55:9e:3e:9f:8f:1c:c7:65:64:07:d3:b3:96:a1:04:
+                    9f:91:c4:de:0a:7b:6c:d9:c8:c0:78:31:a0:19:42:
+                    a9:e8:83:e3:ce:fc:f1:ce:c2:2e:24:46:95:09:19:
+                    ca:c0:46:b2:e5:01:ba:d7:4f:f3:bf:f6:69:ad:99:
+                    04:fa:a0:07:39:0e:e6:df:51:47:07:c0:e4:a9:5c:
+                    4b:94:c5:2f:b3:a0:30:7f:e7:95:6b:b2:af:32:0d:
+                    f1:8c:d5:6d:cb:7b:47:a7:08:ab:cb:27:a3:4d:cf:
+                    4a:5a:f1:05:d1:f8:62:c5:10:2a:74:69:aa:e6:4b:
+                    96:fb:9b:d8:63:e4:58:66:d3:ad:8a:6e:ff:7b:5e:
+                    f9:a5:56:1e:2d:82:31:5b:f0:e2:24:e6:41:4a:1f:
+                    ae:13
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:2
+            X509v3 Subject Key Identifier: 
+                7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+    Signature Algorithm: sha1WithRSAEncryption
+         80:f4:5a:fb:3d:28:19:51:20:d7:d4:fb:12:97:4a:65:f2:58:
+         35:92:77:30:6a:f1:d7:b6:51:1a:7f:9a:cd:c7:7b:03:42:ad:
+         55:6a:00:af:f0:e1:06:c2:bd:6b:78:75:db:fe:41:11:53:4a:
+         39:bb:9a:3a:c6:59:34:2f:2c:33:e3:b2:d6:5c:7f:dd:78:eb:
+         71:5b:39:da:83:90:c5:31:e2:3f:23:ef:da:eb:2b:2d:77:5e:
+         de:c3:43:d2:c9:6b:59:82:ca:d5:ed:fa:a1:64:5b:cb:f1:0d:
+         1a:62:e1:9c:e8:a7:18:70:f0:5f:17:96:f8:ed:86:db:ae:1d:
+         e0:cf:3e:5d:2e:ee:16:6d:95:2b:3c:fd:97:f3:05:5a:24:68:
+         4d:39:b6:f8:e4:58:ba:f5:e0:26:78:51:c5:5b:5d:4e:09:e5:
+         6c:47:8b:7a:5a:2e:89:53:e6:cc:36:5b:26:3c:f8:72:43:02:
+         82:d2:2b:cd:f0:d3:a3:ec:13:3e:52:d5:83:3d:07:dc:1d:43:
+         65:7a:33:02:01:a3:ce:b7:d6:60:51:3b:09:c2:23:8a:32:fe:
+         98:19:60:62:93:85:cd:34:46:db:d5:23:0f:79:da:77:00:2a:
+         02:6d:83:58:ce:03:77:35:e1:a3:20:93:c2:4a:a2:a4:46:1c:
+         75:2c:1f:4d
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIBAjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE0MDQwMjE3MzQyNloXD
+TM0MDMyODE3MzQyNlowdTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxFTA
+TBgNVBAMMDENhc3QgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALrZZZ
+3aOdPBd/bU0K6PWAhoOUqV7XDP/XkIqarl6binLaBnR4qeyc9wswWHaRHscJiXw+bDw+u9xrA9/
+E/BXjif2s9zMAZbeTfBXoyHR5SaQZIq1pXEcVwnXQixgMaSvRvjQZeh7HWfVZ4+n48cx2VkB9Oz
+lqEEn5HE3gp7bNnIwHgxoBlCqeiD48788c7CLiRGlQkZysBGsuUButdP87/2aa2ZBPqgBzkO5t9
+RRwfA5KlcS5TFL7OgMH/nlWuyrzIN8YzVbct7R6cIq8sno03PSlrxBdH4YsUQKnRpquZLlvub2G
+PkWGbTrYpu/3te+aVWHi2CMVvw4iTmQUofrhMCAwEAAaNgMF4wDwYDVR0TBAgwBgEB/wIBAjAdB
+gNVHQ4EFgQUfJoefd95VLzXzF7KmYZFeWV0KBkwHwYDVR0jBBgwFoAUfJoefd95VLzXzF7KmYZF
+eWV0KBkwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCA9Fr7PSgZUSDX1PsSl0pl8lg
+1kncwavHXtlEaf5rNx3sDQq1VagCv8OEGwr1reHXb/kERU0o5u5o6xlk0Lywz47LWXH/deOtxWz
+nag5DFMeI/I+/a6ystd17ew0PSyWtZgsrV7fqhZFvL8Q0aYuGc6KcYcPBfF5b47Ybbrh3gzz5dL
+u4WbZUrPP2X8wVaJGhNObb45Fi69eAmeFHFW11OCeVsR4t6Wi6JU+bMNlsmPPhyQwKC0ivN8NOj
+7BM+UtWDPQfcHUNlejMCAaPOt9ZgUTsJwiOKMv6YGWBik4XNNEbb1SMPedp3ACoCbYNYzgN3NeG
+jIJPCSqKkRhx1LB9N
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/chromecast_audio.pem b/extensions/test/data/cast_certificates/chromecast_audio.pem
new file mode 100644
index 0000000..cf40fb8
--- /dev/null
+++ b/extensions/test/data/cast_certificates/chromecast_audio.pem
@@ -0,0 +1,164 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1433968342 (0x55789ed6)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Chromecast ICA 4 (Audio)
+        Validity
+            Not Before: Jun 10 20:32:22 2015 GMT
+            Not After : Jun  5 20:32:22 2035 GMT
+        Subject: C=US, OU=Cast, O=Google Inc, ST=California, L=Mountain View, CN=4ZZDZJ FA8FCA7EFE3C
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c4:3e:ea:f8:56:0d:71:58:f2:c0:4e:06:59:dd:
+                    67:3a:14:2a:ac:f9:e9:30:5d:be:f7:e3:e0:55:c6:
+                    fb:d4:25:9e:9c:5d:d0:95:7d:cd:32:54:bf:df:e9:
+                    0c:f0:81:0e:bb:94:28:9d:4d:97:f7:2b:3c:2b:96:
+                    a6:fe:fc:22:f4:43:4a:c3:11:0e:91:6d:3a:7a:00:
+                    9c:c3:00:05:a7:05:04:7e:14:85:79:21:ef:32:e1:
+                    d1:d0:98:1e:92:32:73:1a:3c:77:a3:06:14:0a:44:
+                    3f:ac:f4:36:51:07:49:f4:e3:a4:5c:10:03:01:08:
+                    0b:b4:4a:1b:6e:bc:ef:2a:e1:44:73:d5:84:d7:8e:
+                    72:9c:e8:6a:fb:63:ee:53:fa:88:16:31:77:f9:55:
+                    1a:37:31:89:15:15:66:47:74:8a:ba:0c:a6:38:cd:
+                    74:00:88:fe:d5:08:f0:03:a6:e4:7a:17:4b:22:8e:
+                    e9:6c:78:2c:4c:1f:f8:11:c6:aa:24:b2:68:c3:ed:
+                    86:c8:bc:54:cd:cf:68:ed:48:f8:d3:64:c6:c2:4b:
+                    df:eb:70:dd:97:10:9f:cf:a6:cb:bd:70:9b:44:65:
+                    4f:b0:b3:78:cc:96:ac:6a:c9:f0:17:fe:d3:a5:90:
+                    fc:78:7f:1e:50:0f:ce:ac:1b:05:70:dc:e5:67:30:
+                    c3:bd
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha1WithRSAEncryption
+         7b:f4:9a:9a:5f:22:0b:6b:44:14:d1:a4:11:35:53:77:25:da:
+         f5:f3:bb:b8:b3:37:39:a4:30:56:ab:dc:2c:7c:ae:44:36:59:
+         37:86:cb:23:01:bb:d9:60:6d:9c:e2:f5:d2:ac:b6:f3:5a:93:
+         c5:3c:b1:8d:23:a9:7b:44:0d:e6:5f:cc:7b:37:29:86:20:c0:
+         f9:f4:55:3d:d4:51:4d:a1:79:9b:c5:94:3b:41:3d:7f:fa:5d:
+         15:8e:34:99:b4:4a:42:a1:64:7b:89:6c:f7:20:e8:af:0d:56:
+         15:86:87:b2:5a:c8:22:ca:03:39:1f:6e:57:ec:bf:ad:1c:9c:
+         53:24:5f:04:88:42:2e:6e:22:27:76:e8:21:b6:68:f2:ed:55:
+         e2:09:8b:d9:25:53:df:46:e4:f6:5d:44:e1:d2:80:2d:25:d1:
+         fd:28:0a:b4:ee:f7:af:cd:38:44:d1:d6:f4:1c:52:6c:3d:30:
+         ae:54:63:72:e3:d1:2a:41:c1:ab:a8:41:f7:bc:53:63:d0:07:
+         72:12:f1:5b:df:bf:7c:51:8f:d8:de:9c:bc:c5:3e:e4:31:a4:
+         8f:80:42:ec:55:32:55:aa:ab:e3:60:4e:41:35:af:fd:69:bf:
+         a4:f9:e4:b9:de:2a:16:bd:20:ca:84:89:26:d6:70:02:60:39:
+         39:11:3e:ae
+-----BEGIN CERTIFICATE-----
+MIIDxDCCAqygAwIBAgIEVXie1jANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UEBhMCVVMxEzARBgN
+VBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZS
+BJbmMxDTALBgNVBAsMBENhc3QxITAfBgNVBAMMGENocm9tZWNhc3QgSUNBIDQgKEF1ZGlvKTAeF
+w0xNTA2MTAyMDMyMjJaFw0zNTA2MDUyMDMyMjJaMHwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQLDARD
+YXN0MRMwEQYDVQQKDApHb29nbGUgSW5jMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1
+Nb3VudGFpbiBWaWV3MRwwGgYDVQQDDBM0WlpEWkogRkE4RkNBN0VGRTNDMIIBIjANBgkqhkiG9w
+0BAQEFAAOCAQ8AMIIBCgKCAQEAxD7q+FYNcVjywE4GWd1nOhQqrPnpMF2+9+PgVcb71CWenF3Ql
+X3NMlS/3+kM8IEOu5QonU2X9ys8K5am/vwi9ENKwxEOkW06egCcwwAFpwUEfhSFeSHvMuHR0Jge
+kjJzGjx3owYUCkQ/rPQ2UQdJ9OOkXBADAQgLtEobbrzvKuFEc9WE145ynOhq+2PuU/qIFjF3+VU
+aNzGJFRVmR3SKugymOM10AIj+1QjwA6bkehdLIo7pbHgsTB/4EcaqJLJow+2GyLxUzc9o7Uj402
+TGwkvf63DdlxCfz6bLvXCbRGVPsLN4zJasasnwF/7TpZD8eH8eUA/OrBsFcNzlZzDDvQIDAQABo
+0gwRjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAXBgNVHSAE
+EDAOMAwGCisGAQQB1nkCBQIwDQYJKoZIhvcNAQEFBQADggEBAHv0mppfIgtrRBTRpBE1U3cl2vX
+zu7izNzmkMFar3Cx8rkQ2WTeGyyMBu9lgbZzi9dKstvNak8U8sY0jqXtEDeZfzHs3KYYgwPn0VT
+3UUU2heZvFlDtBPX/6XRWONJm0SkKhZHuJbPcg6K8NVhWGh7JayCLKAzkfblfsv60cnFMkXwSIQ
+i5uIid26CG2aPLtVeIJi9klU99G5PZdROHSgC0l0f0oCrTu96/NOETR1vQcUmw9MK5UY3Lj0SpB
+wauoQfe8U2PQB3IS8Vvfv3xRj9jenLzFPuQxpI+AQuxVMlWqq+NgTkE1r/1pv6T55LneKha9IMq
+EiSbWcAJgOTkRPq4=
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 37 (0x25)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Mar 12 16:44:57 2015 GMT
+            Not After : Mar  9 16:44:57 2025 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Chromecast ICA 4 (Audio)
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ac:a9:bd:6d:00:4e:29:19:6a:c9:ae:3a:b4:14:
+                    89:4b:e2:49:4d:33:90:2c:fb:b7:2c:0c:89:c3:a0:
+                    c9:5b:40:63:e3:d1:b7:83:f9:24:dc:39:c4:6c:c4:
+                    a0:9f:37:b5:1c:8e:cd:c4:c9:bb:32:cd:b5:6b:28:
+                    b7:f2:18:d9:4c:b8:23:cc:a3:4d:4d:49:d6:f8:6d:
+                    fe:7d:a9:ea:91:9f:d9:ae:7b:8c:7d:6a:16:56:3b:
+                    ee:56:cc:0c:dd:d5:6e:42:d8:31:6d:a6:3f:99:a6:
+                    40:de:01:a1:63:56:58:3d:b7:3f:39:c4:58:87:7a:
+                    15:5f:2d:6d:2f:9e:e8:6a:e3:a2:7a:1b:07:f0:ab:
+                    29:d0:54:7d:ed:97:8c:75:33:22:99:b7:dd:63:3b:
+                    1f:d7:3e:d9:00:4a:f4:b2:03:f9:30:f4:cd:82:0b:
+                    00:97:33:6b:e7:9c:04:93:39:7e:76:15:f5:3d:6c:
+                    b9:81:75:b1:e6:c6:ae:80:ba:4e:dd:48:77:df:47:
+                    12:99:01:ed:fc:d7:c9:8b:cb:61:f8:90:07:7b:93:
+                    89:57:36:8f:bb:68:4a:1d:d7:d5:49:d6:e0:4d:c6:
+                    02:7a:ee:5c:0a:2c:8c:b7:6d:13:00:cb:7f:4a:3e:
+                    7c:26:1d:71:00:f5:27:a5:5b:c8:28:eb:27:51:0c:
+                    15:bd
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                13:E1:5D:44:05:FF:C8:1F:B1:53:30:2D:55:B0:85:FE:8B:2D:0D:9C
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         97:d5:df:b8:d0:47:fd:50:48:26:8b:7d:a5:16:72:d0:90:75:
+         6e:8c:67:a4:8b:6f:50:7e:1c:b7:21:3c:16:40:b5:4e:74:d9:
+         44:98:5c:5a:0b:ed:07:2e:f2:eb:32:05:6e:75:7f:bb:18:92:
+         58:38:ae:20:71:ad:9a:50:3a:df:ec:b5:8d:11:fb:62:b7:96:
+         6f:e0:32:b7:4b:66:8c:e2:ab:8c:48:d3:93:4a:be:81:4b:25:
+         4e:82:54:b1:a4:3c:54:9b:16:44:14:3e:5e:bc:0f:ff:1e:12:
+         2e:0c:ad:5f:40:6e:f1:92:69:57:48:00:e2:4a:23:8a:8c:06:
+         bc:6e:f0:c9:90:62:48:de:a9:43:2e:cf:5f:41:24:17:d9:1d:
+         4c:01:ff:42:4b:c4:a0:04:21:46:4b:c9:58:2c:03:53:69:34:
+         a5:07:78:46:d7:87:32:4c:18:96:d0:8c:80:90:0a:55:ec:db:
+         a5:7a:bd:88:2b:b4:2f:ce:53:a4:5f:8b:8d:b3:fb:30:0b:2d:
+         40:d0:76:4e:50:b0:3a:3f:b2:d6:fa:f1:d6:42:f0:b1:0d:a3:
+         db:a4:ce:4d:2a:04:24:c9:6e:f8:3a:9d:ed:f0:6a:6e:4d:de:
+         50:af:56:eb:a6:ea:2b:7f:74:87:9f:85:14:c7:a9:c0:dd:c1:
+         f3:25:b5:b3
+-----BEGIN CERTIFICATE-----
+MIID6zCCAtOgAwIBAgIBJTANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE1MDMxMjE2NDQ1N1oXD
+TI1MDMwOTE2NDQ1N1owgYExCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYD
+VQQHDA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKDApHb29nbGUgSW5jMQ0wCwYDVQQLDARDYXN0MSE
+wHwYDVQQDDBhDaHJvbWVjYXN0IElDQSA0IChBdWRpbykwggEiMA0GCSqGSIb3DQEBAQUAA4IBDw
+AwggEKAoIBAQCsqb1tAE4pGWrJrjq0FIlL4klNM5As+7csDInDoMlbQGPj0beD+STcOcRsxKCfN
+7Ucjs3EybsyzbVrKLfyGNlMuCPMo01NSdb4bf59qeqRn9mue4x9ahZWO+5WzAzd1W5C2DFtpj+Z
+pkDeAaFjVlg9tz85xFiHehVfLW0vnuhq46J6GwfwqynQVH3tl4x1MyKZt91jOx/XPtkASvSyA/k
+w9M2CCwCXM2vnnASTOX52FfU9bLmBdbHmxq6Auk7dSHffRxKZAe3818mLy2H4kAd7k4lXNo+7aE
+od19VJ1uBNxgJ67lwKLIy3bRMAy39KPnwmHXEA9SelW8go6ydRDBW9AgMBAAGjeTB3MA8GA1UdE
+wQIMAYBAf8CAQAwHQYDVR0OBBYEFBPhXUQF/8gfsVMwLVWwhf6LLQ2cMB8GA1UdIwQYMBaAFHya
+Hn3feVS818xeypmGRXlldCgZMAsGA1UdDwQEAwIBBjAXBgNVHSAEEDAOMAwGCisGAQQB1nkCBQI
+wDQYJKoZIhvcNAQELBQADggEBAJfV37jQR/1QSCaLfaUWctCQdW6MZ6SLb1B+HLchPBZAtU502U
+SYXFoL7Qcu8usyBW51f7sYklg4riBxrZpQOt/stY0R+2K3lm/gMrdLZoziq4xI05NKvoFLJU6CV
+LGkPFSbFkQUPl68D/8eEi4MrV9AbvGSaVdIAOJKI4qMBrxu8MmQYkjeqUMuz19BJBfZHUwB/0JL
+xKAEIUZLyVgsA1NpNKUHeEbXhzJMGJbQjICQClXs26V6vYgrtC/OU6Rfi42z+zALLUDQdk5QsDo
+/stb68dZC8LENo9ukzk0qBCTJbvg6ne3wam5N3lCvVuum6it/dIefhRTHqcDdwfMltbM=
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/chromecast_gen1.pem b/extensions/test/data/cast_certificates/chromecast_gen1.pem
new file mode 100644
index 0000000..cc85031
--- /dev/null
+++ b/extensions/test/data/cast_certificates/chromecast_gen1.pem
@@ -0,0 +1,149 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1405898540 (0x53cc4f2c)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Gen1 ICA
+        Validity
+            Not Before: Jul 20 23:22:20 2014 GMT
+            Not After : Jul 15 23:22:20 2034 GMT
+        Subject: C=US, ST=California, O=Google Inc, L=Mountain View, OU=Google TV, CN=2ZZBG9 FA8FCA3EF91A
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a5:79:e9:2a:de:73:67:8f:96:a0:cf:e9:ca:85:
+                    3e:ec:14:e0:c3:ac:ec:c3:9c:18:3a:ef:75:ae:aa:
+                    cb:ab:56:0b:b0:66:b2:a8:a9:30:0f:e1:9f:be:e2:
+                    52:20:59:b3:0d:d3:6d:44:27:55:f9:8c:e1:94:36:
+                    44:43:73:72:b0:09:eb:c7:26:73:e9:4f:c6:64:6b:
+                    f3:1d:57:bb:91:73:67:e9:1c:c9:4f:20:94:b2:ea:
+                    76:25:d8:10:a4:5b:a0:58:42:ec:13:34:e4:ed:57:
+                    38:bb:f3:0a:5b:38:ce:e6:6e:32:b1:8d:14:15:be:
+                    62:80:66:16:25:c5:61:60:61:6a:96:42:dd:18:61:
+                    95:21:19:16:e4:16:6d:bf:cc:51:20:f3:c2:bf:c2:
+                    45:b9:f8:b4:a1:cc:bf:81:64:c3:91:c0:9e:12:da:
+                    fb:25:df:80:21:b0:a8:e7:7d:19:e8:ea:50:ab:0e:
+                    fd:a6:a3:00:79:0c:ee:52:07:9a:f9:2d:84:8e:0c:
+                    56:4d:0a:a1:cf:88:87:8f:3b:a6:0b:0e:b7:5f:0b:
+                    aa:e6:d9:54:49:1b:8c:2a:a9:46:9c:75:08:66:c4:
+                    ad:69:f0:da:9b:4f:bc:c0:84:0b:a7:bb:9a:b6:07:
+                    71:88:26:bb:34:3b:9b:e7:94:96:1b:61:11:48:93:
+                    60:2d
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+    Signature Algorithm: sha1WithRSAEncryption
+         6b:8a:80:65:c7:25:74:35:33:b3:f8:b9:70:7c:c0:f3:ee:4f:
+         68:7a:83:6f:58:27:ad:ab:52:f6:7b:06:b9:56:4e:49:c9:4f:
+         43:b0:6b:0e:bc:cd:ea:4b:84:54:38:c9:d2:33:6d:55:77:84:
+         0d:88:9c:29:8f:dd:4d:b8:64:cc:4c:25:c0:3f:f6:a3:4f:02:
+         a3:eb:b4:4d:59:21:03:48:42:1e:ac:94:07:59:6b:4a:8c:e9:
+         4b:37:d3:fe:5f:a5:42:fa:96:00:1f:0f:54:48:27:10:38:45:
+         66:19:28:fe:fc:4a:32:73:d4:bc:9b:c7:76:5b:b7:42:62:b2:
+         df:46:b6:f6:89:19:98:d9:ad:d3:e7:72:72:4a:6b:21:9a:22:
+         59:fc:83:31:dd:e8:c5:44:19:9a:7b:68:84:19:da:1e:0d:0e:
+         59:eb:c3:28:4c:15:38:e0:d5:6b:e7:99:02:7a:dd:b1:2f:8d:
+         2c:a3:30:68:58:d0:93:94:68:3a:7f:50:cc:67:13:19:fe:d7:
+         e7:18:01:6f:4b:ae:8b:19:5e:d4:43:34:94:e5:d7:35:f8:6a:
+         e0:27:34:c1:e4:b7:cb:82:17:c2:61:cb:cd:17:db:05:34:7e:
+         3f:39:a1:86:d1:b2:6f:a3:04:cb:51:6b:2c:e7:63:54:d1:d1:
+         6a:0f:04:0a
+-----BEGIN CERTIFICATE-----
+MIIDrDCCApSgAwIBAgIEU8xPLDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJVUzETMBEGA1U
+ECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIE
+luYzESMBAGA1UECwwJR29vZ2xlIFRWMRgwFgYDVQQDDA9FdXJla2EgR2VuMSBJQ0EwHhcNMTQwN
+zIwMjMyMjIwWhcNMzQwNzE1MjMyMjIwWjCBgTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
+b3JuaWExEzARBgNVBAoTCkdvb2dsZSBJbmMxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxEjAQBgN
+VBAsTCUdvb2dsZSBUVjEcMBoGA1UEAxMTMlpaQkc5IEZBOEZDQTNFRjkxQTCCASIwDQYJKoZIhv
+cNAQEBBQADggEPADCCAQoCggEBAKV56Srec2ePlqDP6cqFPuwU4MOs7MOcGDrvda6qy6tWC7Bms
+qipMA/hn77iUiBZsw3TbUQnVfmM4ZQ2RENzcrAJ68cmc+lPxmRr8x1Xu5FzZ+kcyU8glLLqdiXY
+EKRboFhC7BM05O1XOLvzCls4zuZuMrGNFBW+YoBmFiXFYWBhapZC3RhhlSEZFuQWbb/MUSDzwr/
+CRbn4tKHMv4Fkw5HAnhLa+yXfgCGwqOd9GejqUKsO/aajAHkM7lIHmvkthI4MVk0Koc+Ih487pg
+sOt18LqubZVEkbjCqpRpx1CGbErWnw2ptPvMCEC6e7mrYHcYgmuzQ7m+eUlhthEUiTYC0CAwEAA
+aMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZI
+hvcNAQEFBQADggEBAGuKgGXHJXQ1M7P4uXB8wPPuT2h6g29YJ62rUvZ7BrlWTknJT0Owaw68zep
+LhFQ4ydIzbVV3hA2InCmP3U24ZMxMJcA/9qNPAqPrtE1ZIQNIQh6slAdZa0qM6Us30/5fpUL6lg
+AfD1RIJxA4RWYZKP78SjJz1Lybx3Zbt0Jist9GtvaJGZjZrdPncnJKayGaIln8gzHd6MVEGZp7a
+IQZ2h4NDlnrwyhMFTjg1WvnmQJ63bEvjSyjMGhY0JOUaDp/UMxnExn+1+cYAW9LrosZXtRDNJTl
+1zX4auAnNMHkt8uCF8Jhy80X2wU0fj85oYbRsm+jBMtRayznY1TR0WoPBAo=
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1 (0x1)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Root CA
+        Validity
+            Not Before: Dec 19 00:47:12 2012 GMT
+            Not After : Dec 14 00:47:12 2032 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Gen1 ICA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:bc:22:80:bd:80:f6:3a:21:00:3b:ae:76:5e:35:
+                    7f:3d:c3:64:5c:55:94:86:34:2f:05:87:28:cd:f7:
+                    69:8c:17:b3:50:a7:b8:82:fa:df:c7:43:2d:d6:7e:
+                    ab:a0:6f:b7:13:72:80:a4:47:15:c1:20:99:50:cd:
+                    ec:14:62:09:5b:a4:98:cd:d2:41:b6:36:4e:ff:e8:
+                    2e:32:30:4a:81:a8:42:a3:6c:9b:33:6e:ca:b2:f5:
+                    53:66:e0:27:53:86:1a:85:1e:a7:39:3f:4a:77:8e:
+                    fb:54:66:66:fb:58:54:c0:5e:39:c7:f5:50:06:0b:
+                    e0:8a:d4:ce:e1:6a:55:1f:8b:17:00:e6:69:a3:27:
+                    e6:08:25:69:3c:12:9d:8d:05:2c:d6:2e:a2:31:de:
+                    b4:52:50:d6:20:49:de:71:a0:f9:ad:20:40:12:f1:
+                    dd:25:eb:d5:e6:b8:36:f4:d6:8f:7f:ca:43:dc:d7:
+                    10:5b:e6:3f:51:8a:85:b3:f3:ff:f6:03:2d:cb:23:
+                    4f:9c:ad:18:e7:93:05:8c:ac:52:9a:f7:4c:e9:99:
+                    7a:be:6e:7e:4d:0a:e3:c6:1c:a9:93:fa:3a:a5:91:
+                    5d:1c:bd:66:eb:cc:60:dc:86:74:ca:cf:f8:92:1c:
+                    98:7d:57:fa:61:47:9e:ab:80:b7:e4:48:80:2a:92:
+                    c5:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:1
+    Signature Algorithm: sha1WithRSAEncryption
+         8b:d4:a1:b1:cf:5d:cd:7b:6c:48:4a:41:1f:53:2f:18:2d:32:
+         45:ff:9e:ab:d3:73:3e:1f:22:d7:ea:fa:01:e6:73:03:0f:2b:
+         c6:25:bb:a5:ee:c5:f5:45:cb:24:12:2a:ad:c2:5d:05:f4:7a:
+         f5:c2:9b:10:16:5a:d1:0a:73:c5:16:39:a0:10:ca:d1:68:85:
+         9e:fb:9e:26:83:8e:58:f3:77:a0:4e:e5:db:97:be:2d:00:5f:
+         f5:94:db:b1:9d:65:6b:fd:f0:d1:04:51:df:cc:92:a6:99:2d:
+         71:f5:4d:d5:23:fe:33:1c:a9:b4:ab:c5:bf:1a:b8:d1:80:ef:
+         89:c9:e2:1f:9c:4c:48:3b:a2:fa:02:0a:dc:84:01:8a:87:02:
+         fb:59:ee:a7:4c:04:7d:74:99:87:6a:25:44:ad:16:aa:ec:4e:
+         35:1b:7c:7b:84:c9:b1:3f:e1:82:70:e5:0d:e7:d9:6d:fa:95:
+         b6:c5:e4:1e:e8:11:9b:d8:b2:f3:a4:fd:13:f3:83:4f:f7:07:
+         14:20:bb:22:a5:a6:8f:d6:b5:db:a9:74:78:e2:93:0d:e5:23:
+         2f:05:17:e0:b2:97:67:34:4d:0f:9c:76:43:7b:a6:21:4a:56:
+         05:f6:2a:7c:f2:7f:12:94:82:26:29:07:f0:0b:6c:6c:79:14:
+         b0:74:d5:6c
+-----BEGIN CERTIFICATE-----
+MIIDhzCCAm+gAwIBAgIBATANBgkqhkiG9w0BAQUFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ESMBAGA1UECwwJR29vZ2xlIFRWMRcwFQYDVQQDDA5FdXJla2EgUm9vdCBDQTAeFw0xMjEyMTkwM
+DQ3MTJaFw0zMjEyMTQwMDQ3MTJaMH0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
+MRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKDApHb29nbGUgSW5jMRIwEAYDVQQLDAl
+Hb29nbGUgVFYxGDAWBgNVBAMMD0V1cmVrYSBHZW4xIElDQTCCASIwDQYJKoZIhvcNAQEBBQADgg
+EPADCCAQoCggEBALwigL2A9johADuudl41fz3DZFxVlIY0LwWHKM33aYwXs1CnuIL638dDLdZ+q
+6BvtxNygKRHFcEgmVDN7BRiCVukmM3SQbY2Tv/oLjIwSoGoQqNsmzNuyrL1U2bgJ1OGGoUepzk/
+SneO+1RmZvtYVMBeOcf1UAYL4IrUzuFqVR+LFwDmaaMn5gglaTwSnY0FLNYuojHetFJQ1iBJ3nG
+g+a0gQBLx3SXr1ea4NvTWj3/KQ9zXEFvmP1GKhbPz//YDLcsjT5ytGOeTBYysUpr3TOmZer5ufk
+0K48YcqZP6OqWRXRy9ZuvMYNyGdMrP+JIcmH1X+mFHnquAt+RIgCqSxRsCAwEAAaMTMBEwDwYDV
+R0TBAgwBgEB/wIBATANBgkqhkiG9w0BAQUFAAOCAQEAi9Shsc9dzXtsSEpBH1MvGC0yRf+eq9Nz
+Ph8i1+r6AeZzAw8rxiW7pe7F9UXLJBIqrcJdBfR69cKbEBZa0QpzxRY5oBDK0WiFnvueJoOOWPN
+3oE7l25e+LQBf9ZTbsZ1la/3w0QRR38ySppktcfVN1SP+MxyptKvFvxq40YDvicniH5xMSDui+g
+IK3IQBiocC+1nup0wEfXSZh2olRK0WquxONRt8e4TJsT/hgnDlDefZbfqVtsXkHugRm9iy86T9E
+/ODT/cHFCC7IqWmj9a126l0eOKTDeUjLwUX4LKXZzRND5x2Q3umIUpWBfYqfPJ/EpSCJikH8Ats
+bHkUsHTVbA==
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/chromecast_gen1_reissue.pem b/extensions/test/data/cast_certificates/chromecast_gen1_reissue.pem
new file mode 100644
index 0000000..4f9b623
--- /dev/null
+++ b/extensions/test/data/cast_certificates/chromecast_gen1_reissue.pem
@@ -0,0 +1,157 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1405898540 (0x53cc4f2c)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Gen1 ICA
+        Validity
+            Not Before: Jul 20 23:22:20 2014 GMT
+            Not After : Jul 15 23:22:20 2034 GMT
+        Subject: C=US, ST=California, O=Google Inc, L=Mountain View, OU=Google TV, CN=2ZZBG9 FA8FCA3EF91A
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a5:79:e9:2a:de:73:67:8f:96:a0:cf:e9:ca:85:
+                    3e:ec:14:e0:c3:ac:ec:c3:9c:18:3a:ef:75:ae:aa:
+                    cb:ab:56:0b:b0:66:b2:a8:a9:30:0f:e1:9f:be:e2:
+                    52:20:59:b3:0d:d3:6d:44:27:55:f9:8c:e1:94:36:
+                    44:43:73:72:b0:09:eb:c7:26:73:e9:4f:c6:64:6b:
+                    f3:1d:57:bb:91:73:67:e9:1c:c9:4f:20:94:b2:ea:
+                    76:25:d8:10:a4:5b:a0:58:42:ec:13:34:e4:ed:57:
+                    38:bb:f3:0a:5b:38:ce:e6:6e:32:b1:8d:14:15:be:
+                    62:80:66:16:25:c5:61:60:61:6a:96:42:dd:18:61:
+                    95:21:19:16:e4:16:6d:bf:cc:51:20:f3:c2:bf:c2:
+                    45:b9:f8:b4:a1:cc:bf:81:64:c3:91:c0:9e:12:da:
+                    fb:25:df:80:21:b0:a8:e7:7d:19:e8:ea:50:ab:0e:
+                    fd:a6:a3:00:79:0c:ee:52:07:9a:f9:2d:84:8e:0c:
+                    56:4d:0a:a1:cf:88:87:8f:3b:a6:0b:0e:b7:5f:0b:
+                    aa:e6:d9:54:49:1b:8c:2a:a9:46:9c:75:08:66:c4:
+                    ad:69:f0:da:9b:4f:bc:c0:84:0b:a7:bb:9a:b6:07:
+                    71:88:26:bb:34:3b:9b:e7:94:96:1b:61:11:48:93:
+                    60:2d
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+    Signature Algorithm: sha1WithRSAEncryption
+         6b:8a:80:65:c7:25:74:35:33:b3:f8:b9:70:7c:c0:f3:ee:4f:
+         68:7a:83:6f:58:27:ad:ab:52:f6:7b:06:b9:56:4e:49:c9:4f:
+         43:b0:6b:0e:bc:cd:ea:4b:84:54:38:c9:d2:33:6d:55:77:84:
+         0d:88:9c:29:8f:dd:4d:b8:64:cc:4c:25:c0:3f:f6:a3:4f:02:
+         a3:eb:b4:4d:59:21:03:48:42:1e:ac:94:07:59:6b:4a:8c:e9:
+         4b:37:d3:fe:5f:a5:42:fa:96:00:1f:0f:54:48:27:10:38:45:
+         66:19:28:fe:fc:4a:32:73:d4:bc:9b:c7:76:5b:b7:42:62:b2:
+         df:46:b6:f6:89:19:98:d9:ad:d3:e7:72:72:4a:6b:21:9a:22:
+         59:fc:83:31:dd:e8:c5:44:19:9a:7b:68:84:19:da:1e:0d:0e:
+         59:eb:c3:28:4c:15:38:e0:d5:6b:e7:99:02:7a:dd:b1:2f:8d:
+         2c:a3:30:68:58:d0:93:94:68:3a:7f:50:cc:67:13:19:fe:d7:
+         e7:18:01:6f:4b:ae:8b:19:5e:d4:43:34:94:e5:d7:35:f8:6a:
+         e0:27:34:c1:e4:b7:cb:82:17:c2:61:cb:cd:17:db:05:34:7e:
+         3f:39:a1:86:d1:b2:6f:a3:04:cb:51:6b:2c:e7:63:54:d1:d1:
+         6a:0f:04:0a
+-----BEGIN CERTIFICATE-----
+MIIDrDCCApSgAwIBAgIEU8xPLDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJVUzETMBEGA1U
+ECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIE
+luYzESMBAGA1UECwwJR29vZ2xlIFRWMRgwFgYDVQQDDA9FdXJla2EgR2VuMSBJQ0EwHhcNMTQwN
+zIwMjMyMjIwWhcNMzQwNzE1MjMyMjIwWjCBgTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
+b3JuaWExEzARBgNVBAoTCkdvb2dsZSBJbmMxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxEjAQBgN
+VBAsTCUdvb2dsZSBUVjEcMBoGA1UEAxMTMlpaQkc5IEZBOEZDQTNFRjkxQTCCASIwDQYJKoZIhv
+cNAQEBBQADggEPADCCAQoCggEBAKV56Srec2ePlqDP6cqFPuwU4MOs7MOcGDrvda6qy6tWC7Bms
+qipMA/hn77iUiBZsw3TbUQnVfmM4ZQ2RENzcrAJ68cmc+lPxmRr8x1Xu5FzZ+kcyU8glLLqdiXY
+EKRboFhC7BM05O1XOLvzCls4zuZuMrGNFBW+YoBmFiXFYWBhapZC3RhhlSEZFuQWbb/MUSDzwr/
+CRbn4tKHMv4Fkw5HAnhLa+yXfgCGwqOd9GejqUKsO/aajAHkM7lIHmvkthI4MVk0Koc+Ih487pg
+sOt18LqubZVEkbjCqpRpx1CGbErWnw2ptPvMCEC6e7mrYHcYgmuzQ7m+eUlhthEUiTYC0CAwEAA
+aMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZI
+hvcNAQEFBQADggEBAGuKgGXHJXQ1M7P4uXB8wPPuT2h6g29YJ62rUvZ7BrlWTknJT0Owaw68zep
+LhFQ4ydIzbVV3hA2InCmP3U24ZMxMJcA/9qNPAqPrtE1ZIQNIQh6slAdZa0qM6Us30/5fpUL6lg
+AfD1RIJxA4RWYZKP78SjJz1Lybx3Zbt0Jist9GtvaJGZjZrdPncnJKayGaIln8gzHd6MVEGZp7a
+IQZ2h4NDlnrwyhMFTjg1WvnmQJ63bEvjSyjMGhY0JOUaDp/UMxnExn+1+cYAW9LrosZXtRDNJTl
+1zX4auAnNMHkt8uCF8Jhy80X2wU0fj85oYbRsm+jBMtRayznY1TR0WoPBAo=
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 3 (0x3)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Apr  2 20:58:54 2014 GMT
+            Not After : Apr  2 20:58:54 2019 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Gen1 ICA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:bc:22:80:bd:80:f6:3a:21:00:3b:ae:76:5e:35:
+                    7f:3d:c3:64:5c:55:94:86:34:2f:05:87:28:cd:f7:
+                    69:8c:17:b3:50:a7:b8:82:fa:df:c7:43:2d:d6:7e:
+                    ab:a0:6f:b7:13:72:80:a4:47:15:c1:20:99:50:cd:
+                    ec:14:62:09:5b:a4:98:cd:d2:41:b6:36:4e:ff:e8:
+                    2e:32:30:4a:81:a8:42:a3:6c:9b:33:6e:ca:b2:f5:
+                    53:66:e0:27:53:86:1a:85:1e:a7:39:3f:4a:77:8e:
+                    fb:54:66:66:fb:58:54:c0:5e:39:c7:f5:50:06:0b:
+                    e0:8a:d4:ce:e1:6a:55:1f:8b:17:00:e6:69:a3:27:
+                    e6:08:25:69:3c:12:9d:8d:05:2c:d6:2e:a2:31:de:
+                    b4:52:50:d6:20:49:de:71:a0:f9:ad:20:40:12:f1:
+                    dd:25:eb:d5:e6:b8:36:f4:d6:8f:7f:ca:43:dc:d7:
+                    10:5b:e6:3f:51:8a:85:b3:f3:ff:f6:03:2d:cb:23:
+                    4f:9c:ad:18:e7:93:05:8c:ac:52:9a:f7:4c:e9:99:
+                    7a:be:6e:7e:4d:0a:e3:c6:1c:a9:93:fa:3a:a5:91:
+                    5d:1c:bd:66:eb:cc:60:dc:86:74:ca:cf:f8:92:1c:
+                    98:7d:57:fa:61:47:9e:ab:80:b7:e4:48:80:2a:92:
+                    c5:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                32:AF:7E:6C:A1:DD:28:42:E5:B3:E1:59:A7:5A:39:C9:FF:8A:62:9F
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+    Signature Algorithm: sha1WithRSAEncryption
+         13:c4:35:8f:62:1a:de:aa:b1:ce:72:ab:82:4e:3b:a1:04:a9:
+         86:ca:56:d9:12:7f:50:2a:5b:6c:89:73:83:38:11:9e:b9:78:
+         0e:9b:a6:3f:44:54:82:af:0f:16:2a:34:8e:ea:e3:47:fb:8c:
+         25:e2:4b:e6:3b:dc:e5:c5:68:2d:d7:b9:ef:3e:0d:5e:d6:56:
+         30:2f:7f:d4:18:cb:bf:68:86:76:ea:69:d0:38:53:f4:9b:ee:
+         fc:38:03:3c:13:28:23:25:1f:67:d4:27:93:c2:34:57:d3:8f:
+         a9:40:91:e6:4e:87:1b:5e:82:71:0c:4c:80:7c:ce:f5:c4:6f:
+         8d:87:d2:13:78:53:14:51:84:27:8a:4b:db:48:94:09:88:42:
+         5d:62:6f:48:d3:0c:33:7a:22:04:18:b2:5a:f1:d1:dc:99:cc:
+         10:2c:46:87:2a:fd:dd:f2:71:75:fb:d6:23:32:92:82:07:67:
+         ba:cd:27:66:c3:31:d7:51:74:59:36:0f:42:e3:8f:87:d9:8e:
+         b4:0d:c8:3e:26:a2:df:fd:9a:a4:ab:17:54:36:fc:07:56:40:
+         ed:e9:24:e3:5c:5d:15:91:ca:72:78:21:a9:f7:b1:67:6a:d8:
+         1e:43:ab:c2:33:92:aa:e3:33:b9:4e:ab:d6:04:43:e8:4c:45:
+         d9:8e:1c:fe
+-----BEGIN CERTIFICATE-----
+MIIDzTCCArWgAwIBAgIBAzANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE0MDQwMjIwNTg1NFoXD
+TE5MDQwMjIwNTg1NFowfTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxEjAQBgNVBAsMCUdvb2dsZSB
+UVjEYMBYGA1UEAwwPRXVyZWthIEdlbjEgSUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg
+KCAQEAvCKAvYD2OiEAO652XjV/PcNkXFWUhjQvBYcozfdpjBezUKe4gvrfx0Mt1n6roG+3E3KAp
+EcVwSCZUM3sFGIJW6SYzdJBtjZO/+guMjBKgahCo2ybM27KsvVTZuAnU4YahR6nOT9Kd477VGZm
++1hUwF45x/VQBgvgitTO4WpVH4sXAOZpoyfmCCVpPBKdjQUs1i6iMd60UlDWIEnecaD5rSBAEvH
+dJevV5rg29NaPf8pD3NcQW+Y/UYqFs/P/9gMtyyNPnK0Y55MFjKxSmvdM6Zl6vm5+TQrjxhypk/
+o6pZFdHL1m68xg3IZ0ys/4khyYfVf6YUeeq4C35EiAKpLFGwIDAQABo2AwXjAPBgNVHRMECDAGA
+QH/AgEAMB0GA1UdDgQWBBQyr35sod0oQuWz4VmnWjnJ/4pinzAfBgNVHSMEGDAWgBR8mh5933lU
+vNfMXsqZhkV5ZXQoGTALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBABPENY9iGt6qsc5
+yq4JOO6EEqYbKVtkSf1AqW2yJc4M4EZ65eA6bpj9EVIKvDxYqNI7q40f7jCXiS+Y73OXFaC3Xue
+8+DV7WVjAvf9QYy79ohnbqadA4U/Sb7vw4AzwTKCMlH2fUJ5PCNFfTj6lAkeZOhxtegnEMTIB8z
+vXEb42H0hN4UxRRhCeKS9tIlAmIQl1ib0jTDDN6IgQYslrx0dyZzBAsRocq/d3ycXX71iMykoIH
+Z7rNJ2bDMddRdFk2D0Ljj4fZjrQNyD4mot/9mqSrF1Q2/AdWQO3pJONcXRWRynJ4Ian3sWdq2B5
+Dq8IzkqrjM7lOq9YEQ+hMRdmOHP4=
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/chromecast_gen2.pem b/extensions/test/data/cast_certificates/chromecast_gen2.pem
new file mode 100644
index 0000000..8b46b4d
--- /dev/null
+++ b/extensions/test/data/cast_certificates/chromecast_gen2.pem
@@ -0,0 +1,157 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1426540495 (0x550747cf)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Chromecast ICA 3
+        Validity
+            Not Before: Mar 16 21:14:55 2015 GMT
+            Not After : Mar 11 21:14:55 2035 GMT
+        Subject: C=US, OU=Cast, O=Google Inc, ST=California, L=Mountain View, CN=3ZZAK6 FA8FCA3F0D35
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:e1:46:5f:71:bd:c6:2d:e4:02:a6:0d:21:cf:33:
+                    a0:e8:ea:fb:88:54:a1:b4:83:49:9e:9e:10:c4:dd:
+                    c3:5a:fe:9b:89:29:1c:ce:bc:3b:d2:67:0e:85:e1:
+                    c3:8a:1e:4b:fd:9b:ba:97:94:38:43:74:5b:0d:17:
+                    c7:bf:c0:9c:d9:01:11:f1:d5:cb:94:41:ac:81:0a:
+                    fb:78:39:ef:c3:48:e6:b5:97:be:8a:a1:56:f4:9f:
+                    d4:fb:21:b3:a7:a0:7f:30:83:1e:27:1a:4d:18:aa:
+                    2d:f1:45:03:32:aa:0c:36:84:0e:b7:1f:69:b4:ed:
+                    75:f4:d1:a1:97:70:2b:90:de:f9:b2:b3:0b:a3:b2:
+                    18:b6:35:f5:bb:04:4c:ee:84:52:58:6b:ca:96:0b:
+                    ba:cc:3e:31:5d:85:67:79:2e:05:05:ca:30:fa:2a:
+                    6a:23:02:02:d7:d9:41:ab:af:c5:d0:bb:a7:64:d7:
+                    04:dd:c8:0b:47:68:7e:12:81:a6:2f:5c:37:35:24:
+                    7a:7f:53:c4:45:1d:fa:09:a9:57:18:90:3e:1a:26:
+                    81:3c:9e:e8:08:a6:55:8c:de:1c:c2:b1:9b:24:6c:
+                    50:48:ef:b9:b9:9a:c8:4d:3b:b3:55:90:1c:13:3f:
+                    8d:19:26:5a:b7:d6:1f:30:8b:c5:ac:6b:a1:08:4a:
+                    ca:59
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+    Signature Algorithm: sha1WithRSAEncryption
+         63:5e:22:cf:b0:8f:88:b4:64:a2:77:85:29:52:86:13:e1:88:
+         ea:74:06:51:fe:21:45:3d:62:dd:7c:09:c9:c0:64:95:99:6d:
+         55:99:ea:34:23:d8:1f:aa:d9:bd:b6:91:19:7a:2d:0e:5c:ff:
+         63:d1:ff:a2:b9:f4:bd:b3:a6:34:83:79:c8:02:f3:67:22:ca:
+         a9:aa:aa:f5:ef:7b:ee:7d:0b:ef:f2:f7:e6:e9:ca:ec:c5:cd:
+         bc:18:ff:0c:44:ee:6e:e6:09:44:39:fa:6f:19:b0:be:5f:4b:
+         ae:68:37:83:02:b2:af:fe:6b:05:68:97:65:2e:79:15:cb:91:
+         81:58:b7:f6:4e:f2:ef:e1:b6:93:8b:a0:a2:9d:8d:e9:05:db:
+         dc:78:09:cb:05:b0:72:b3:50:d9:0d:ac:c2:11:94:7b:9a:16:
+         dc:41:34:4a:ae:b4:fa:fd:10:5f:4f:c8:46:33:79:33:6e:a8:
+         95:d6:92:7d:bb:04:6d:01:99:60:7b:b1:d9:14:bb:7e:8a:2f:
+         51:e4:59:02:3a:52:d4:d2:d2:93:d3:f3:3b:ae:1a:6c:50:9f:
+         99:50:28:a2:2e:e1:e1:60:17:1c:31:17:3f:bb:75:a7:bc:d6:
+         9d:0c:58:a9:fe:69:14:b9:4e:ea:d4:26:f2:5a:ae:26:ba:ff:
+         ef:43:ee:03
+-----BEGIN CERTIFICATE-----
+MIIDojCCAoqgAwIBAgIEVQdHzzANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJVUzETMBEGA1U
+ECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIE
+luYzENMAsGA1UECwwEQ2FzdDEZMBcGA1UEAwwQQ2hyb21lY2FzdCBJQ0EgMzAeFw0xNTAzMTYyM
+TE0NTVaFw0zNTAzMTEyMTE0NTVaMHwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQLDARDYXN0MRMwEQYD
+VQQKDApHb29nbGUgSW5jMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiB
+WaWV3MRwwGgYDVQQDDBMzWlpBSzYgRkE4RkNBM0YwRDM1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ
+8AMIIBCgKCAQEA4UZfcb3GLeQCpg0hzzOg6Or7iFShtINJnp4QxN3DWv6biSkczrw70mcOheHDi
+h5L/Zu6l5Q4Q3RbDRfHv8Cc2QER8dXLlEGsgQr7eDnvw0jmtZe+iqFW9J/U+yGzp6B/MIMeJxpN
+GKot8UUDMqoMNoQOtx9ptO119NGhl3ArkN75srMLo7IYtjX1uwRM7oRSWGvKlgu6zD4xXYVneS4
+FBcow+ipqIwIC19lBq6/F0LunZNcE3cgLR2h+EoGmL1w3NSR6f1PERR36CalXGJA+GiaBPJ7oCK
+ZVjN4cwrGbJGxQSO+5uZrITTuzVZAcEz+NGSZat9YfMIvFrGuhCErKWQIDAQABoy8wLTAJBgNVH
+RMEAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQUFAAOC
+AQEAY14iz7CPiLRkoneFKVKGE+GI6nQGUf4hRT1i3XwJycBklZltVZnqNCPYH6rZvbaRGXotDlz
+/Y9H/orn0vbOmNIN5yALzZyLKqaqq9e977n0L7/L35unK7MXNvBj/DETubuYJRDn6bxmwvl9Lrm
+g3gwKyr/5rBWiXZS55FcuRgVi39k7y7+G2k4ugop2N6QXb3HgJywWwcrNQ2Q2swhGUe5oW3EE0S
+q60+v0QX0/IRjN5M26oldaSfbsEbQGZYHux2RS7foovUeRZAjpS1NLSk9PzO64abFCfmVAooi7h
+4WAXHDEXP7t1p7zWnQxYqf5pFLlO6tQm8lquJrr/70PuAw==
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 36 (0x24)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Mar 12 16:44:39 2015 GMT
+            Not After : Mar  9 16:44:39 2025 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Chromecast ICA 3
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:d1:de:fb:ad:8b:43:07:28:ae:56:2d:f2:73:2a:
+                    1f:63:43:76:6d:8d:b8:d1:d4:90:29:1b:91:68:4a:
+                    55:41:a0:d5:61:b4:ec:dd:ae:e1:fa:a7:b6:38:c4:
+                    de:19:e1:33:4d:9a:29:f1:48:e2:6b:a7:2c:21:14:
+                    22:3f:87:81:f3:71:2c:e6:43:1c:b8:d4:ec:cf:67:
+                    2f:b2:a2:75:8b:10:bd:f9:e7:c9:5c:de:05:a9:b4:
+                    86:b7:68:7d:a7:76:85:e2:65:b8:76:51:4f:b9:60:
+                    5d:7e:2b:64:48:12:66:d9:a7:bb:7c:d7:48:88:8a:
+                    89:f9:18:14:8a:15:32:6a:1b:3f:40:64:3c:80:d3:
+                    e5:72:ee:3b:6f:88:bb:93:1a:17:3c:35:cb:d4:5b:
+                    d8:f4:50:06:08:88:0a:e5:c2:3c:b5:8d:9b:99:82:
+                    26:a3:9b:b9:e5:01:90:b7:c9:dd:ff:0f:f6:cf:b4:
+                    9b:f8:4a:70:40:03:ed:aa:38:35:92:49:4a:5a:20:
+                    67:92:5e:25:a8:6b:6c:49:28:45:41:b3:95:1d:a1:
+                    ad:ef:c3:5a:12:35:a6:2f:44:f4:fb:36:cc:f9:ff:
+                    d4:6c:a8:60:e6:09:17:a6:a0:13:23:09:96:6f:dd:
+                    3e:fd:fa:5a:e7:9a:06:13:e5:07:0e:7d:5c:0f:d1:
+                    46:85
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                42:D6:3C:83:4E:4E:83:36:F4:2D:80:12:18:B0:FA:64:ED:CB:91:DD
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+    Signature Algorithm: sha256WithRSAEncryption
+         4c:c7:77:4b:09:75:84:ab:84:0c:93:1a:a3:1f:0a:02:b2:28:
+         00:f3:eb:c1:e9:52:0c:7b:38:7b:02:d4:32:31:21:d1:85:b0:
+         23:42:e0:26:05:e0:11:21:fc:b4:b3:7e:3d:aa:4a:54:a9:08:
+         e6:79:27:fc:bd:fd:31:d8:d2:c2:de:96:0e:36:f9:f8:67:ca:
+         f3:59:7a:a8:ef:a2:bd:a6:73:ea:e8:ab:5d:25:05:9d:72:2d:
+         ff:0a:2c:7f:af:97:c6:c3:bf:b5:76:05:a0:00:11:1b:83:99:
+         4c:8b:c8:b8:4b:76:79:03:56:cb:ea:cc:f2:02:bc:23:8b:1a:
+         a6:7f:7f:4b:9d:7d:6a:69:cd:e3:50:78:b9:5c:ad:59:3e:dd:
+         d3:8c:2f:0a:fb:dd:03:c0:77:84:e6:a9:26:17:14:24:a2:7b:
+         3d:3c:b7:3c:d8:08:31:a4:4b:68:8b:0c:83:25:69:eb:68:42:
+         a2:87:a0:a1:dd:5a:1a:4a:1c:ed:28:01:3d:ad:51:d6:5c:ef:
+         4b:80:d2:7e:23:fc:bd:1a:02:30:d0:46:b8:b1:ab:0f:c7:28:
+         ee:da:ba:e7:d6:3e:a4:a9:26:ec:d4:73:41:c5:9b:68:8a:a8:
+         c6:15:39:33:4d:48:7e:6a:2f:4b:1c:6d:af:23:02:6d:e8:2f:
+         ce:16:b8:4b
+-----BEGIN CERTIFICATE-----
+MIIDyTCCArGgAwIBAgIBJDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE1MDMxMjE2NDQzOVoXD
+TI1MDMwOTE2NDQzOVoweTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxGTA
+XBgNVBAMMEENocm9tZWNhc3QgSUNBIDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQ
+DR3vuti0MHKK5WLfJzKh9jQ3ZtjbjR1JApG5FoSlVBoNVhtOzdruH6p7Y4xN4Z4TNNminxSOJrp
+ywhFCI/h4HzcSzmQxy41OzPZy+yonWLEL3558lc3gWptIa3aH2ndoXiZbh2UU+5YF1+K2RIEmbZ
+p7t810iIion5GBSKFTJqGz9AZDyA0+Vy7jtviLuTGhc8NcvUW9j0UAYIiArlwjy1jZuZgiajm7n
+lAZC3yd3/D/bPtJv4SnBAA+2qODWSSUpaIGeSXiWoa2xJKEVBs5Udoa3vw1oSNaYvRPT7Nsz5/9
+RsqGDmCRemoBMjCZZv3T79+lrnmgYT5QcOfVwP0UaFAgMBAAGjYDBeMA8GA1UdEwQIMAYBAf8CA
+QAwHQYDVR0OBBYEFELWPINOToM29C2AEhiw+mTty5HdMB8GA1UdIwQYMBaAFHyaHn3feVS818xe
+ypmGRXlldCgZMAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEATMd3Swl1hKuEDJMaox8
+KArIoAPPrwelSDHs4ewLUMjEh0YWwI0LgJgXgESH8tLN+PapKVKkI5nkn/L39MdjSwt6WDjb5+G
+fK81l6qO+ivaZz6uirXSUFnXIt/wosf6+XxsO/tXYFoAARG4OZTIvIuEt2eQNWy+rM8gK8I4sap
+n9/S519amnN41B4uVytWT7d04wvCvvdA8B3hOapJhcUJKJ7PTy3PNgIMaRLaIsMgyVp62hCooeg
+od1aGkoc7SgBPa1R1lzvS4DSfiP8vRoCMNBGuLGrD8co7tq659Y+pKkm7NRzQcWbaIqoxhU5M01
+IfmovSxxtryMCbegvzha4Sw==
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/eureka_ca.pem b/extensions/test/data/cast_certificates/eureka_ca.pem
new file mode 100644
index 0000000..1b9354a
--- /dev/null
+++ b/extensions/test/data/cast_certificates/eureka_ca.pem
@@ -0,0 +1,78 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1 (0x1)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Root CA
+        Validity
+            Not Before: Dec 17 22:39:33 2012 GMT
+            Not After : Dec 12 22:39:33 2032 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Google TV, CN=Eureka Root CA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:b9:11:d0:ea:12:dc:32:e1:df:5c:33:6b:19:73:
+                    1d:9d:9e:d0:39:76:bf:a5:84:09:a6:fd:6e:6d:e9:
+                    dc:8f:36:4e:e9:88:02:bd:9f:f4:e8:44:fd:4c:f5:
+                    9a:02:56:6a:47:2a:63:6c:58:45:cc:7c:66:24:dc:
+                    79:79:c3:2a:a4:b2:8b:a0:f7:a2:b5:cd:06:7e:db:
+                    be:ec:0c:86:f2:0d:24:60:74:84:ca:29:23:84:02:
+                    d8:a7:ed:3b:f1:ec:26:47:54:e3:b1:2d:e6:64:0f:
+                    f6:72:c5:e9:98:52:17:c0:fc:f2:2c:20:c8:40:f8:
+                    47:c9:32:9e:3b:97:b1:8b:f5:98:24:70:63:66:19:
+                    c1:52:e8:04:05:3d:5f:8d:bc:d8:4b:af:77:98:6f:
+                    1f:78:d1:b6:50:27:4d:e4:ec:14:69:67:1f:58:af:
+                    a9:a0:11:26:3c:94:32:07:7f:d7:e9:69:1f:ae:3f:
+                    4f:63:8a:8f:89:d6:f2:19:78:5c:21:8e:b1:b6:57:
+                    d8:c0:e1:ee:7d:6e:dd:f1:3a:0a:6a:f1:ba:ff:f9:
+                    83:2f:dc:b5:a4:20:17:63:36:ef:c8:62:19:cc:56:
+                    ce:b2:ea:31:89:4b:78:58:c1:bf:03:13:99:e0:12:
+                    f2:88:aa:9b:94:da:dd:76:79:17:1e:34:d1:0a:c4:
+                    07:45
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Key Identifier: 
+                44:4E:2A:47:58:D8:B9:48:91:F6:4F:CE:74:A9:1D:32:9A:8D:8D:E9
+            X509v3 Authority Key Identifier: 
+                keyid:44:4E:2A:47:58:D8:B9:48:91:F6:4F:CE:74:A9:1D:32:9A:8D:8D:E9
+
+            X509v3 Basic Constraints: 
+                CA:TRUE
+    Signature Algorithm: sha1WithRSAEncryption
+         3f:c8:26:a0:6e:5c:05:40:79:a1:98:a9:33:de:68:74:85:ee:
+         ae:b7:1c:33:59:b0:11:de:9f:f4:4f:d3:eb:51:09:7d:47:7e:
+         6e:51:85:f4:54:cd:83:98:25:b1:ba:b0:57:ec:93:db:12:e2:
+         ec:51:49:7a:96:73:9b:c8:96:6d:85:8c:d3:e1:3c:fa:32:e2:
+         58:0c:77:6d:87:0c:34:01:aa:30:a9:76:e0:c0:e7:db:5e:1b:
+         e9:10:30:a4:e0:09:49:26:b9:58:cd:5a:07:e5:50:75:de:9a:
+         3b:f6:53:7e:b1:53:5e:45:27:4f:17:e3:08:33:b2:50:0a:bb:
+         f4:fc:25:97:29:de:41:75:30:fa:77:38:aa:65:8a:73:4f:ea:
+         11:7b:eb:7c:17:60:27:0e:bc:3e:76:52:d8:8b:ed:1a:f8:eb:
+         37:bb:11:fd:ae:70:17:0a:fe:e0:ad:06:b3:1f:69:8a:72:04:
+         c2:c0:33:0b:d6:2f:63:4c:33:11:14:b8:62:36:88:c5:03:65:
+         01:19:a3:ef:00:bb:6f:0e:92:ff:34:1c:a1:d6:31:d0:5c:5e:
+         9f:99:7d:c7:ca:bd:7c:72:0b:f4:5c:a5:7e:6e:04:a8:d2:99:
+         2c:51:01:14:fe:a2:48:f0:7e:be:84:0d:b4:d3:e2:f3:0e:7d:
+         de:8b:f5:33
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQUFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ESMBAGA1UECwwJR29vZ2xlIFRWMRcwFQYDVQQDDA5FdXJla2EgUm9vdCBDQTAeFw0xMjEyMTcyM
+jM5MzNaFw0zMjEyMTIyMjM5MzNaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
+MRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKDApHb29nbGUgSW5jMRIwEAYDVQQLDAl
+Hb29nbGUgVFYxFzAVBgNVBAMMDkV1cmVrYSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ
+8AMIIBCgKCAQEAuRHQ6hLcMuHfXDNrGXMdnZ7QOXa/pYQJpv1ubencjzZO6YgCvZ/06ET9TPWaA
+lZqRypjbFhFzHxmJNx5ecMqpLKLoPeitc0Gftu+7AyG8g0kYHSEyikjhALYp+078ewmR1TjsS3m
+ZA/2csXpmFIXwPzyLCDIQPhHyTKeO5exi/WYJHBjZhnBUugEBT1fjbzYS693mG8feNG2UCdN5Ow
+UaWcfWK+poBEmPJQyB3/X6Wkfrj9PY4qPidbyGXhcIY6xtlfYwOHufW7d8ToKavG6//mDL9y1pC
+AXYzbvyGIZzFbOsuoxiUt4WMG/AxOZ4BLyiKqblNrddnkXHjTRCsQHRQIDAQABo1AwTjAdBgNVH
+Q4EFgQURE4qR1jYuUiR9k/OdKkdMpqNjekwHwYDVR0jBBgwFoAURE4qR1jYuUiR9k/OdKkdMpqN
+jekwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAP8gmoG5cBUB5oZipM95odIXurrc
+cM1mwEd6f9E/T61EJfUd+blGF9FTNg5glsbqwV+yT2xLi7FFJepZzm8iWbYWM0+E8+jLiWAx3bY
+cMNAGqMKl24MDn214b6RAwpOAJSSa5WM1aB+VQdd6aO/ZTfrFTXkUnTxfjCDOyUAq79PwllyneQ
+XUw+nc4qmWKc0/qEXvrfBdgJw68PnZS2IvtGvjrN7sR/a5wFwr+4K0Gsx9pinIEwsAzC9YvY0wz
+ERS4YjaIxQNlARmj7wC7bw6S/zQcodYx0Fxen5l9x8q9fHIL9Fylfm4EqNKZLFEBFP6iSPB+voQ
+NtNPi8w593ov1Mw==
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/fugu.pem b/extensions/test/data/cast_certificates/fugu.pem
new file mode 100644
index 0000000..3f58367b8
--- /dev/null
+++ b/extensions/test/data/cast_certificates/fugu.pem
@@ -0,0 +1,242 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 185805725 (0xb132b9d)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=Washington, L=Kirkland, O=Google Inc, OU=Widevine, CN=Asus fugu Cast ICA
+        Validity
+            Not Before: Mar 18 21:43:31 2016 GMT
+            Not After : Mar 18 21:43:31 2017 GMT
+        Subject: C=US, ST=Washington, L=Kirkland, O=Google Inc, OU=Widevine, CN=-6394818897508095075
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:dc:01:42:4d:40:19:cc:11:36:76:2f:d4:a3:bd:
+                    27:dd:54:23:05:b6:63:9c:ff:08:68:ad:32:2a:05:
+                    1c:df:0b:8b:2a:c5:c3:5f:2b:91:30:df:e1:cd:ce:
+                    76:1d:84:f6:3c:77:48:73:c6:f4:c4:f3:f8:e3:75:
+                    96:ab:6a:9d:a2:84:57:3f:a9:9d:60:02:e5:e5:df:
+                    78:ac:bb:79:1a:36:e9:5d:62:db:2b:85:ff:06:87:
+                    5b:b8:0f:4d:17:15:5d:0c:fc:10:75:b1:a0:5e:08:
+                    df:01:7d:01:5f:7a:1c:62:36:e0:49:31:8d:e9:e8:
+                    00:a1:0a:57:1d:d8:cd:e3:4a:aa:bb:0f:1d:e7:35:
+                    76:9f:2f:13:00:2b:be:df:2a:83:d5:39:7c:7c:3c:
+                    bc:8e:0b:0a:0a:09:f9:78:81:1d:c7:15:a2:ed:b8:
+                    67:d6:76:a0:00:b4:49:93:02:ec:8e:77:fa:de:ba:
+                    9a:74:43:97:4a:12:37:45:3c:db:81:87:62:22:8f:
+                    2a:ee:17:a3:ff:0a:c3:3e:2b:44:79:b0:b9:be:12:
+                    a3:86:1e:60:be:76:79:34:c2:12:55:89:51:b0:e7:
+                    b1:68:2a:a1:e7:ac:f6:88:2b:60:92:e1:02:b0:68:
+                    49:ba:cd:bb:97:23:f3:46:ee:ac:20:92:4c:fc:70:
+                    9c:c7
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: critical
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Subject Key Identifier: 
+                66:BD:7F:37:0A:9E:61:62:4F:B1:CC:04:18:97:E1:53:0A:B3:AF:94
+            X509v3 Authority Key Identifier: 
+                keyid:DD:CD:5D:84:BB:B5:3E:91:F6:1C:2D:D0:7B:40:2B:DB:B6:DC:9D:1F
+
+    Signature Algorithm: sha1WithRSAEncryption
+         9c:f2:99:d0:1b:11:2e:d8:71:08:8f:96:49:7f:3c:e1:fe:85:
+         be:3e:72:6d:54:f3:68:a0:8a:da:3e:3c:c4:f7:7d:fe:a0:9f:
+         53:70:81:a7:aa:98:62:1a:cc:c3:9d:a7:ef:a9:8f:e6:93:78:
+         db:f8:33:cd:c0:c1:d8:67:e6:a1:12:93:a8:34:95:3d:0f:39:
+         ef:50:0b:a4:2a:74:4e:00:6c:7d:52:f5:5e:5d:38:9c:5d:b1:
+         29:6e:e6:8a:21:c1:89:cb:ca:8d:32:35:5a:f2:0b:92:1f:6c:
+         09:98:45:6c:22:c8:5b:b6:53:2a:43:95:29:0d:88:a6:12:34:
+         ed:e2:b1:2a:81:71:e5:ca:8d:69:65:39:5e:9d:36:50:68:ef:
+         1d:b8:e4:39:5e:64:57:20:9b:d5:b6:45:ea:69:4d:5f:52:e9:
+         fd:ae:af:2b:1c:8e:b5:a9:47:61:4c:46:7c:33:14:15:6a:0c:
+         fd:b5:d0:f8:be:0e:d8:30:73:ef:3b:a5:54:85:35:c7:f2:12:
+         e3:27:8f:d1:e0:3a:1d:c7:53:75:ed:5c:f0:eb:02:25:01:07:
+         cb:81:4c:68:7b:5f:a4:b5:b2:58:48:4c:9e:47:22:10:b7:01:
+         78:7d:a4:6e:af:86:10:dc:21:eb:ee:47:c1:97:11:81:80:b1:
+         9d:66:42:42
+-----BEGIN CERTIFICATE-----
+MIID5jCCAs6gAwIBAgIECxMrnTANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJVUzETMBEGA1U
+ECAwKV2FzaGluZ3RvbjERMA8GA1UEBwwIS2lya2xhbmQxEzARBgNVBAoMCkdvb2dsZSBJbmMxET
+APBgNVBAsMCFdpZGV2aW5lMRswGQYDVQQDDBJBc3VzIGZ1Z3UgQ2FzdCBJQ0EwHhcNMTYwMzE4M
+jE0MzMxWhcNMTcwMzE4MjE0MzMxWjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv
+bjERMA8GA1UEBwwIS2lya2xhbmQxEzARBgNVBAoMCkdvb2dsZSBJbmMxETAPBgNVBAsMCFdpZGV
+2aW5lMR0wGwYDVQQDDBQtNjM5NDgxODg5NzUwODA5NTA3NTCCASIwDQYJKoZIhvcNAQEBBQADgg
+EPADCCAQoCggEBANwBQk1AGcwRNnYv1KO9J91UIwW2Y5z/CGitMioFHN8LiyrFw18rkTDf4c3Od
+h2E9jx3SHPG9MTz+ON1lqtqnaKEVz+pnWAC5eXfeKy7eRo26V1i2yuF/waHW7gPTRcVXQz8EHWx
+oF4I3wF9AV96HGI24EkxjenoAKEKVx3YzeNKqrsPHec1dp8vEwArvt8qg9U5fHw8vI4LCgoJ+Xi
+BHccVou24Z9Z2oAC0SZMC7I53+t66mnRDl0oSN0U824GHYiKPKu4Xo/8Kwz4rRHmwub4So4YeYL
+52eTTCElWJUbDnsWgqoees9ogrYJLhArBoSbrNu5cj80burCCSTPxwnMcCAwEAAaNyMHAwDAYDV
+R0TAQH/BAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwIwHQYDVR0OBBYEFGa9
+fzcKnmFiT7HMBBiX4VMKs6+UMB8GA1UdIwQYMBaAFN3NXYS7tT6R9hwt0HtAK9u23J0fMA0GCSq
+GSIb3DQEBBQUAA4IBAQCc8pnQGxEu2HEIj5ZJfzzh/oW+PnJtVPNooIraPjzE933+oJ9TcIGnqp
+hiGszDnafvqY/mk3jb+DPNwMHYZ+ahEpOoNJU9DznvUAukKnROAGx9UvVeXTicXbEpbuaKIcGJy
+8qNMjVa8guSH2wJmEVsIshbtlMqQ5UpDYimEjTt4rEqgXHlyo1pZTlenTZQaO8duOQ5XmRXIJvV
+tkXqaU1fUun9rq8rHI61qUdhTEZ8MxQVagz9tdD4vg7YMHPvO6VUhTXH8hLjJ4/R4Dodx1N17Vz
+w6wIlAQfLgUxoe1+ktbJYSEyeRyIQtwF4faRur4YQ3CHr7kfBlxGBgLGdZkJC
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 1 (0x1)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=Washington, L=Kirkland, O=Google Inc, OU=Widevine, CN=Widevine Cast Subroot
+        Validity
+            Not Before: Aug 20 19:14:44 2014 GMT
+            Not After : Aug 19 19:14:44 2019 GMT
+        Subject: C=US, ST=Washington, L=Kirkland, O=Google Inc, OU=Widevine, CN=Asus fugu Cast ICA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:c2:f6:d5:91:dc:37:b4:9a:73:4a:e7:74:6d:03:
+                    ae:27:24:41:99:96:1b:05:0e:c7:cf:09:cd:65:56:
+                    02:fc:98:59:b4:bb:95:71:d7:88:66:c8:08:cb:bf:
+                    5b:85:65:7e:de:c4:b5:e3:71:24:a2:fd:92:2c:77:
+                    c5:08:e0:f0:b1:8a:8a:54:ca:a6:af:87:b8:cb:7d:
+                    83:28:59:9c:01:f5:7b:10:d0:f3:52:09:3f:f5:7d:
+                    da:21:63:8f:ac:8b:60:67:22:ef:6b:66:91:fc:97:
+                    30:8d:cc:fe:de:5c:f9:19:bb:1c:25:29:2c:99:48:
+                    41:c2:fc:5b:66:d6:79:84:16:8d:0d:4f:75:01:40:
+                    c5:50:69:fa:a4:88:f1:d2:3b:d1:23:df:c5:ba:e3:
+                    e8:ba:cc:1e:93:17:f7:97:e2:71:42:75:5b:99:55:
+                    98:22:23:98:dc:10:89:f4:e8:26:bb:98:66:fd:bb:
+                    9a:21:62:a2:df:90:db:48:6f:db:2a:ef:de:53:59:
+                    31:5d:38:cd:80:a8:0c:6e:4e:37:65:eb:36:1c:13:
+                    ba:53:d3:8f:cc:43:86:02:70:d2:91:f6:96:25:6c:
+                    a4:e8:1f:d8:b3:74:20:eb:60:9d:3d:d3:3d:2e:36:
+                    0f:f1:94:10:f9:7a:03:52:7e:a4:ef:e3:40:9e:74:
+                    0e:df
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: critical
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                DD:CD:5D:84:BB:B5:3E:91:F6:1C:2D:D0:7B:40:2B:DB:B6:DC:9D:1F
+            X509v3 Authority Key Identifier: 
+                keyid:E6:57:D0:5A:CC:E5:B7:8D:83:01:A1:58:D8:45:76:CD:8D:D8:34:C2
+
+    Signature Algorithm: sha1WithRSAEncryption
+         4c:01:30:88:f2:f6:b0:5f:0a:7d:cb:8f:7a:53:58:88:a6:2f:
+         1c:e7:ae:d7:60:73:d8:d4:23:ac:17:31:6d:60:ac:b7:65:da:
+         25:de:d9:d4:ce:81:2d:2b:5a:be:44:17:a1:ef:71:fa:5e:69:
+         e2:e3:d8:a3:a0:69:2b:b4:7c:d9:91:c6:13:bb:87:2c:60:07:
+         a7:6d:66:c4:19:61:09:e2:42:c9:e5:e2:ce:fd:72:31:bf:e6:
+         79:75:d4:7f:e2:16:51:9a:2a:ce:d4:e8:b0:34:4c:2a:6e:b3:
+         ef:bb:61:03:1e:86:73:40:cd:4f:e4:05:45:94:7a:fd:a9:3a:
+         30:53:cc:a7:61:dc:e1:0a:b2:9d:13:51:08:b6:7d:f9:2a:09:
+         1e:9e:1d:7c:ca:0b:f3:ef:47:13:75:a3:95:e4:a9:f7:fa:fd:
+         91:c1:a7:40:a3:c8:32:07:f2:51:20:db:06:87:b3:30:88:eb:
+         c1:d1:8d:c9:25:90:ea:e8:76:01:98:cd:6a:0e:0d:f8:5c:56:
+         d5:84:5c:3e:94:0b:ff:b1:29:ee:7b:58:12:78:81:2d:98:26:
+         ef:9a:2f:61:23:57:fd:a4:f5:81:e4:a7:32:96:29:03:21:7c:
+         3e:2e:09:1b:5c:7f:07:d9:ca:db:89:df:64:aa:c6:bd:ff:ec:
+         8d:00:5d:8f
+-----BEGIN CERTIFICATE-----
+MIIDyDCCArCgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KV2FzaGluZ3RvbjERMA8GA1UEBwwIS2lya2xhbmQxEzARBgNVBAoMCkdvb2dsZSBJbmMxETAPBg
+NVBAsMCFdpZGV2aW5lMR4wHAYDVQQDDBVXaWRldmluZSBDYXN0IFN1YnJvb3QwHhcNMTQwODIwM
+TkxNDQ0WhcNMTkwODE5MTkxNDQ0WjB6MQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv
+bjERMA8GA1UEBwwIS2lya2xhbmQxEzARBgNVBAoMCkdvb2dsZSBJbmMxETAPBgNVBAsMCFdpZGV
+2aW5lMRswGQYDVQQDDBJBc3VzIGZ1Z3UgQ2FzdCBJQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDw
+AwggEKAoIBAQDC9tWR3De0mnNK53RtA64nJEGZlhsFDsfPCc1lVgL8mFm0u5Vx14hmyAjLv1uFZ
+X7exLXjcSSi/ZIsd8UI4PCxiopUyqavh7jLfYMoWZwB9XsQ0PNSCT/1fdohY4+si2BnIu9rZpH8
+lzCNzP7eXPkZuxwlKSyZSEHC/Ftm1nmEFo0NT3UBQMVQafqkiPHSO9Ej38W64+i6zB6TF/eX4nF
+CdVuZVZgiI5jcEIn06Ca7mGb9u5ohYqLfkNtIb9sq795TWTFdOM2AqAxuTjdl6zYcE7pT04/MQ4
+YCcNKR9pYlbKToH9izdCDrYJ090z0uNg/xlBD5egNSfqTv40CedA7fAgMBAAGjVjBUMBIGA1UdE
+wEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFN3NXYS7tT6R9hwt0HtAK9u23J0fMB8GA1UdIwQYMBaA
+FOZX0FrM5beNgwGhWNhFds2N2DTCMA0GCSqGSIb3DQEBBQUAA4IBAQBMATCI8vawXwp9y496U1i
+Ipi8c567XYHPY1COsFzFtYKy3Zdol3tnUzoEtK1q+RBeh73H6Xmni49ijoGkrtHzZkcYTu4csYA
+enbWbEGWEJ4kLJ5eLO/XIxv+Z5ddR/4hZRmirO1OiwNEwqbrPvu2EDHoZzQM1P5AVFlHr9qTowU
+8ynYdzhCrKdE1EItn35Kgkenh18ygvz70cTdaOV5Kn3+v2RwadAo8gyB/JRINsGh7MwiOvB0Y3J
+JZDq6HYBmM1qDg34XFbVhFw+lAv/sSnue1gSeIEtmCbvmi9hI1f9pPWB5KcylikDIXw+LgkbXH8
+H2crbid9kqsa9/+yNAF2P
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 5 (0x5)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Apr  9 05:12:21 2014 GMT
+            Not After : Apr  9 05:12:21 2019 GMT
+        Subject: C=US, ST=Washington, L=Kirkland, O=Google Inc, OU=Widevine, CN=Widevine Cast Subroot
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a7:8b:47:0f:b1:92:ad:50:cd:4d:c5:ad:0f:86:
+                    8f:37:7b:36:28:15:5b:09:03:81:04:df:14:22:4d:
+                    1f:13:56:4b:1c:33:82:36:17:8b:4e:49:1d:ff:ef:
+                    18:2d:b7:54:eb:3a:fb:dd:16:7a:4c:3c:e8:1b:94:
+                    08:f7:c0:d7:fd:2d:dc:39:58:bb:4a:7a:61:70:bd:
+                    e9:6d:9b:07:38:8f:0f:74:45:36:b4:17:8c:19:51:
+                    2f:ff:3a:09:05:b5:88:36:11:f6:c5:ec:8f:0f:1d:
+                    b3:5a:42:b0:8f:2c:b2:9e:ed:ba:71:9a:81:68:d9:
+                    14:8d:cb:ec:03:c9:12:a1:c1:4c:03:17:62:5f:e7:
+                    7b:4d:ff:2e:45:2a:99:de:87:96:de:bc:71:da:e3:
+                    e5:56:5e:d5:24:59:de:51:45:44:41:34:df:7b:6f:
+                    38:9a:03:72:c8:7e:e7:94:12:bd:9a:c0:37:38:85:
+                    38:93:3f:22:8c:53:43:84:3c:38:d3:b5:0a:f7:47:
+                    03:51:d2:89:4b:6d:7f:b2:47:08:5d:96:38:df:d0:
+                    87:d3:33:2a:53:52:c9:9b:99:d0:83:77:fe:0d:bd:
+                    9e:62:a3:21:9c:cb:ba:b5:f6:5c:fe:fc:52:f1:ff:
+                    f6:31:15:c8:ca:4e:ac:dc:8b:3e:84:01:cc:1e:f9:
+                    e3:4f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:1
+            X509v3 Subject Key Identifier: 
+                E6:57:D0:5A:CC:E5:B7:8D:83:01:A1:58:D8:45:76:CD:8D:D8:34:C2
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+    Signature Algorithm: sha1WithRSAEncryption
+         9c:bd:b9:62:6c:20:04:45:8a:22:da:a5:a4:8c:78:37:70:92:
+         9f:93:a8:34:0b:6a:b1:bf:cd:46:05:e9:52:e9:df:3c:f0:b5:
+         84:aa:ab:72:3d:80:4d:c3:8a:62:6d:26:5b:c6:19:af:06:79:
+         5b:5b:a8:da:06:0d:a1:80:bd:58:7b:83:80:a6:0a:6e:22:85:
+         85:3f:ca:6b:d2:f5:26:fc:5b:e3:67:ae:5c:16:0b:26:bf:b2:
+         c6:86:69:03:92:81:96:6d:22:b2:32:4a:e3:f7:ff:7e:ce:bf:
+         66:68:d7:fe:51:51:17:da:f9:8f:a7:dd:82:52:e7:ff:fc:96:
+         79:58:14:74:3a:af:08:40:73:a4:f1:a9:af:b8:e7:ee:55:c5:
+         2b:f2:2b:3d:9d:ef:b2:22:65:3c:b7:dc:84:7c:6f:2b:96:21:
+         d9:c8:4c:f4:72:d4:71:72:62:1f:4c:64:d8:08:e7:46:dc:1b:
+         a1:1a:e2:99:f0:13:03:eb:43:9b:80:c7:4b:11:d6:c2:21:19:
+         7d:b5:8c:dc:5f:be:48:93:e7:d0:6a:2b:d0:84:21:fb:02:e7:
+         03:92:72:1d:bb:aa:0a:d4:24:ad:ad:08:f0:14:6a:12:33:ca:
+         ed:30:7f:9d:11:50:aa:ed:72:32:12:1a:5b:cb:83:81:dd:d1:
+         ab:f3:94:61
+-----BEGIN CERTIFICATE-----
+MIIDzTCCArWgAwIBAgIBBTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE0MDQwOTA1MTIyMVoXD
+TE5MDQwOTA1MTIyMVowfTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xETAPBgNV
+BAcMCEtpcmtsYW5kMRMwEQYDVQQKDApHb29nbGUgSW5jMREwDwYDVQQLDAhXaWRldmluZTEeMBw
+GA1UEAwwVV2lkZXZpbmUgQ2FzdCBTdWJyb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg
+KCAQEAp4tHD7GSrVDNTcWtD4aPN3s2KBVbCQOBBN8UIk0fE1ZLHDOCNheLTkkd/+8YLbdU6zr73
+RZ6TDzoG5QI98DX/S3cOVi7SnphcL3pbZsHOI8PdEU2tBeMGVEv/zoJBbWINhH2xeyPDx2zWkKw
+jyyynu26cZqBaNkUjcvsA8kSocFMAxdiX+d7Tf8uRSqZ3oeW3rxx2uPlVl7VJFneUUVEQTTfe28
+4mgNyyH7nlBK9msA3OIU4kz8ijFNDhDw407UK90cDUdKJS21/skcIXZY439CH0zMqU1LJm5nQg3
+f+Db2eYqMhnMu6tfZc/vxS8f/2MRXIyk6s3Is+hAHMHvnjTwIDAQABo2AwXjAPBgNVHRMECDAGA
+QH/AgEBMB0GA1UdDgQWBBTmV9BazOW3jYMBoVjYRXbNjdg0wjAfBgNVHSMEGDAWgBR8mh5933lU
+vNfMXsqZhkV5ZXQoGTALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAJy9uWJsIARFiiL
+apaSMeDdwkp+TqDQLarG/zUYF6VLp3zzwtYSqq3I9gE3DimJtJlvGGa8GeVtbqNoGDaGAvVh7g4
+CmCm4ihYU/ymvS9Sb8W+NnrlwWCya/ssaGaQOSgZZtIrIySuP3/37Ov2Zo1/5RURfa+Y+n3YJS5
+//8lnlYFHQ6rwhAc6Txqa+45+5VxSvyKz2d77IiZTy33IR8byuWIdnITPRy1HFyYh9MZNgI50bc
+G6Ea4pnwEwPrQ5uAx0sR1sIhGX21jNxfvkiT59BqK9CEIfsC5wOSch27qgrUJK2tCPAUahIzyu0
+wf50RUKrtcjISGlvLg4Hd0avzlGE=
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/mtk_audio_dev.pem b/extensions/test/data/cast_certificates/mtk_audio_dev.pem
new file mode 100644
index 0000000..179ec463
--- /dev/null
+++ b/extensions/test/data/cast_certificates/mtk_audio_dev.pem
@@ -0,0 +1,255 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 20 (0x14)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=MediaTek Audio Dev Model
+        Validity
+            Not Before: Nov 17 18:22:26 2014 GMT
+            Not After : Mar 31 18:22:26 2015 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=MediaTek Audio Dev Test
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:ce:84:9f:04:38:5b:e8:93:71:45:04:32:29:80:
+                    f6:64:b4:04:9f:49:5a:c5:5b:31:e3:ca:84:fa:e8:
+                    14:45:a4:07:e0:c3:fa:ea:52:02:29:78:d7:75:dc:
+                    3f:dd:97:43:55:97:1f:34:2e:0e:63:8b:95:c5:c0:
+                    ba:ce:55:19:9d:5b:d9:c2:5f:24:49:3e:dc:cd:af:
+                    3e:77:7e:aa:ad:6a:56:b7:6e:43:1b:c6:32:6a:26:
+                    82:81:05:41:2e:38:65:b7:6f:22:2d:08:db:58:66:
+                    bd:f5:44:1c:db:7e:be:d2:86:3e:26:1f:9c:3d:62:
+                    0d:17:6d:ff:26:63:7f:04:69:56:1c:b7:64:d5:83:
+                    eb:db:66:19:e7:d9:96:36:a2:0c:a8:aa:4a:cf:fe:
+                    1e:3c:93:00:60:ba:0a:3c:71:a2:a8:be:46:6b:19:
+                    33:ae:09:b6:70:a0:00:f5:4a:61:3c:05:b9:40:80:
+                    aa:09:e9:d2:29:c1:87:69:fd:9e:59:06:70:df:f8:
+                    87:7a:8e:a2:8b:97:06:fc:41:09:13:db:23:61:00:
+                    aa:1f:85:d6:08:07:a9:e8:21:9c:00:ce:2c:a4:e8:
+                    23:13:df:7b:63:f3:b8:a3:80:38:97:4a:98:7b:8d:
+                    28:7b:4b:4b:3b:4d:89:cc:f1:43:c8:ed:73:74:54:
+                    9e:4d
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                75:8D:69:9E:FD:5F:21:11:21:DE:17:99:5C:5C:FD:A3:88:54:07:25
+            X509v3 Authority Key Identifier: 
+                keyid:06:45:8E:DD:60:B7:71:EF:DD:4C:71:83:F1:58:C8:3F:85:A5:F7:F5
+
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         69:dc:af:48:ce:e5:24:7b:46:a6:ac:08:d4:9e:4b:75:48:74:
+         d3:c1:22:4c:51:80:8b:68:24:5a:64:12:e4:60:12:88:86:e6:
+         36:85:37:9b:a7:c8:9a:92:aa:d4:75:9e:4f:29:16:12:e7:4f:
+         9c:2b:65:42:39:17:3b:4b:fe:a2:2b:95:43:0d:8e:5d:10:06:
+         a7:eb:a9:7b:17:aa:da:f7:12:17:b6:61:4d:03:e1:10:3c:03:
+         65:46:f3:c3:b7:0d:0c:9a:a6:c1:95:91:16:f0:8b:ef:2e:84:
+         6e:72:7e:32:43:94:9e:59:b6:bb:29:19:a3:14:e5:be:a2:d8:
+         2e:45:45:3a:14:0b:e9:c9:af:53:4e:be:34:38:f9:94:7a:a0:
+         fd:fe:49:66:a2:c3:d4:8d:ad:d4:43:e6:c2:f0:8e:e9:97:4c:
+         32:06:18:80:2a:8e:9e:b9:ca:c8:34:c4:f9:f7:b6:ad:4b:8c:
+         87:b6:c4:af:10:de:a8:15:64:eb:53:b7:54:88:ad:b1:92:ca:
+         43:88:9c:c2:6a:86:96:45:be:fd:de:74:a8:c8:62:c3:65:87:
+         a2:c2:27:9d:ea:1a:4b:1a:f7:4d:11:9b:1c:4c:d2:b9:88:1c:
+         27:28:0a:17:07:8b:77:92:18:32:3c:e1:33:9d:eb:a8:94:f1:
+         27:2e:9d:8b
+-----BEGIN CERTIFICATE-----
+MIIECDCCAvCgAwIBAgIBFDANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCVVMxEzARBgNVBAg
+MCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbm
+MxDTALBgNVBAsMBENhc3QxITAfBgNVBAMMGE1lZGlhVGVrIEF1ZGlvIERldiBNb2RlbDAeFw0xN
+DExMTcxODIyMjZaFw0xNTAzMzExODIyMjZaMIGAMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs
+aWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzENMAs
+GA1UECwwEQ2FzdDEgMB4GA1UEAwwXTWVkaWFUZWsgQXVkaW8gRGV2IFRlc3QwggEiMA0GCSqGSI
+b3DQEBAQUAA4IBDwAwggEKAoIBAQDOhJ8EOFvok3FFBDIpgPZktASfSVrFWzHjyoT66BRFpAfgw
+/rqUgIpeNd13D/dl0NVlx80Lg5ji5XFwLrOVRmdW9nCXyRJPtzNrz53fqqtala3bkMbxjJqJoKB
+BUEuOGW3byItCNtYZr31RBzbfr7Shj4mH5w9Yg0Xbf8mY38EaVYct2TVg+vbZhnn2ZY2ogyoqkr
+P/h48kwBgugo8caKovkZrGTOuCbZwoAD1SmE8BblAgKoJ6dIpwYdp/Z5ZBnDf+Id6jqKLlwb8QQ
+kT2yNhAKofhdYIB6noIZwAziyk6CMT33tj87ijgDiXSph7jSh7S0s7TYnM8UPI7XN0VJ5NAgMBA
+AGjgYkwgYYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUdY1pnv1fIREh3heZXFz9o4hUByUwHwYDVR0j
+BBgwFoAUBkWO3WC3ce/dTHGD8VjIP4Wl9/UwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQU
+FBwMCMBcGA1UdIAQQMA4wDAYKKwYBBAHWeQIFAjANBgkqhkiG9w0BAQsFAAOCAQEAadyvSM7lJH
+tGpqwI1J5LdUh008EiTFGAi2gkWmQS5GASiIbmNoU3m6fImpKq1HWeTykWEudPnCtlQjkXO0v+o
+iuVQw2OXRAGp+upexeq2vcSF7ZhTQPhEDwDZUbzw7cNDJqmwZWRFvCL7y6EbnJ+MkOUnlm2uykZ
+oxTlvqLYLkVFOhQL6cmvU06+NDj5lHqg/f5JZqLD1I2t1EPmwvCO6ZdMMgYYgCqOnrnKyDTE+fe
+2rUuMh7bErxDeqBVk61O3VIitsZLKQ4icwmqGlkW+/d50qMhiw2WHosInneoaSxr3TRGbHEzSuY
+gcJygKFweLd5IYMjzhM53rqJTxJy6diw==
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 19 (0x13)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Audio Dev Root CA
+        Validity
+            Not Before: Nov 17 18:21:14 2014 GMT
+            Not After : Mar 31 18:21:14 2015 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=MediaTek Audio Dev Model
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a0:0b:b3:e2:3b:5f:40:91:e7:1b:25:2d:2b:28:
+                    2a:57:6d:ef:cf:42:f8:73:de:38:fb:d3:cf:76:e4:
+                    a3:64:a7:82:3a:ae:9a:2f:7d:6c:d6:46:0b:69:35:
+                    6b:2c:ad:e0:a1:d9:52:93:83:04:1f:e4:ae:1a:dd:
+                    9c:77:f3:22:d5:30:d8:9f:f0:8a:a0:87:b1:7f:84:
+                    57:3b:60:33:8e:75:db:bf:c3:a4:74:f9:2d:df:99:
+                    6f:85:88:3c:c3:ad:77:53:ef:e2:d5:2f:80:db:20:
+                    9f:96:ae:5b:d7:7d:45:05:40:26:57:df:d2:3b:34:
+                    c2:cd:ac:0f:5c:be:fe:70:1c:4f:ef:33:03:55:b5:
+                    dc:41:bd:ef:c9:c0:e3:9c:5d:31:d7:25:01:95:d3:
+                    fe:c3:99:e7:af:b3:9d:ad:aa:bc:6d:63:a8:ca:62:
+                    36:f5:9c:a4:ac:da:a4:16:73:cf:e7:5e:11:27:ea:
+                    21:43:0d:15:8a:26:f2:ca:63:e0:04:e1:59:f0:34:
+                    3c:50:99:49:f6:fc:33:2d:ab:d2:a6:61:5d:b5:a6:
+                    e2:40:b9:e8:68:72:9f:69:2c:6b:32:75:d9:40:b3:
+                    71:d9:65:f9:ba:b7:d8:12:b2:cf:e7:ab:f6:cc:cc:
+                    ed:8a:22:c6:61:cd:7f:9b:83:b2:8c:52:fe:24:bb:
+                    9e:f7
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                06:45:8E:DD:60:B7:71:EF:DD:4C:71:83:F1:58:C8:3F:85:A5:F7:F5
+            X509v3 Authority Key Identifier: 
+                keyid:4F:93:EA:B8:A6:60:AF:AB:A8:B3:5E:B7:A6:37:7E:66:BD:43:BC:06
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         53:07:48:54:47:6b:e8:36:8a:28:65:90:76:53:f1:4f:a7:8c:
+         c1:64:59:73:5e:74:e7:f8:b6:78:8b:f3:c1:d7:34:86:bb:ab:
+         4c:58:df:e8:87:9d:29:b0:0f:5e:bd:b8:a0:7b:fe:14:77:a1:
+         cc:98:4a:82:36:48:5b:b6:ce:a0:ba:bb:84:b9:f1:2d:cd:ec:
+         fe:40:59:7c:5f:8e:bb:fa:1a:e2:4b:a7:3d:91:da:25:7b:ca:
+         3a:22:f1:7b:32:53:49:63:51:c3:ab:42:11:e7:23:d0:99:98:
+         8a:da:cc:9d:f1:1c:a9:06:68:7b:82:76:3e:a6:79:2a:2f:71:
+         ee:f9:2d:48:55:f3:34:8d:1d:be:78:54:e7:c0:3b:45:3e:59:
+         44:3d:b5:ba:6d:3a:14:c1:4d:fb:4f:a5:a9:e9:b0:c3:0c:b0:
+         7e:cd:54:f7:df:92:8e:a4:be:e8:33:f0:c7:cf:95:cc:4a:4f:
+         dd:84:7a:8c:ec:88:e3:4d:01:f6:29:1a:d8:c7:10:a6:60:f7:
+         5a:95:1c:80:b5:63:c0:3d:03:5d:fa:0a:c2:53:d3:52:4b:0c:
+         06:b6:bc:87:89:67:ee:39:2d:05:58:ad:d9:d5:e7:64:2b:f3:
+         3d:0b:73:5f:3c:9b:9b:9f:ff:51:7f:c5:b0:c6:07:42:48:8b:
+         67:e4:ac:b8
+-----BEGIN CERTIFICATE-----
+MIID9TCCAt2gAwIBAgIBEzANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEfMB0GA1UEAwwWQ2FzdCBBdWRpbyBEZXYgUm9vdCBDQTAeFw0xNDExM
+TcxODIxMTRaFw0xNTAzMzExODIxMTRaMIGBMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZv
+cm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzENMAsGA1U
+ECwwEQ2FzdDEhMB8GA1UEAwwYTWVkaWFUZWsgQXVkaW8gRGV2IE1vZGVsMIIBIjANBgkqhkiG9w
+0BAQEFAAOCAQ8AMIIBCgKCAQEAoAuz4jtfQJHnGyUtKygqV23vz0L4c944+9PPduSjZKeCOq6aL
+31s1kYLaTVrLK3godlSk4MEH+SuGt2cd/Mi1TDYn/CKoIexf4RXO2AzjnXbv8OkdPkt35lvhYg8
+w613U+/i1S+A2yCflq5b131FBUAmV9/SOzTCzawPXL7+cBxP7zMDVbXcQb3vycDjnF0x1yUBldP
++w5nnr7Odraq8bWOoymI29ZykrNqkFnPP514RJ+ohQw0ViibyymPgBOFZ8DQ8UJlJ9vwzLavSpm
+FdtabiQLnoaHKfaSxrMnXZQLNx2WX5urfYErLP56v2zMztiiLGYc1/m4OyjFL+JLue9wIDAQABo
+3kwdzAPBgNVHRMECDAGAQH/AgEAMB0GA1UdDgQWBBQGRY7dYLdx791McYPxWMg/haX39TAfBgNV
+HSMEGDAWgBRPk+q4pmCvq6izXremN35mvUO8BjALBgNVHQ8EBAMCAQYwFwYDVR0gBBAwDjAMBgo
+rBgEEAdZ5AgUCMA0GCSqGSIb3DQEBCwUAA4IBAQBTB0hUR2voNoooZZB2U/FPp4zBZFlzXnTn+L
+Z4i/PB1zSGu6tMWN/oh50psA9evbige/4Ud6HMmEqCNkhbts6guruEufEtzez+QFl8X467+hriS
+6c9kdole8o6IvF7MlNJY1HDq0IR5yPQmZiK2syd8RypBmh7gnY+pnkqL3Hu+S1IVfM0jR2+eFTn
+wDtFPllEPbW6bToUwU37T6Wp6bDDDLB+zVT335KOpL7oM/DHz5XMSk/dhHqM7IjjTQH2KRrYxxC
+mYPdalRyAtWPAPQNd+grCU9NSSwwGtryHiWfuOS0FWK3Z1edkK/M9C3NfPJubn/9Rf8WwxgdCSI
+tn5Ky4
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 18 (0x12)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Nov 17 18:19:26 2014 GMT
+            Not After : Mar 31 18:19:26 2015 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Audio Dev Root CA
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:b9:86:ee:81:9b:07:f1:c6:15:6a:30:1e:41:bd:
+                    3b:70:f4:96:88:7d:f7:d3:29:63:3d:b8:ca:a1:ec:
+                    3d:81:43:08:85:2b:30:5f:4b:6b:54:19:a9:92:46:
+                    98:9a:2e:2a:ff:9d:f3:48:b2:5d:d6:0a:9c:49:81:
+                    6a:63:1a:12:e7:8e:3c:39:74:67:67:c7:d5:d4:f3:
+                    7c:45:65:07:84:15:b1:df:0b:16:0d:21:de:71:24:
+                    b0:88:00:8a:69:cf:ae:70:24:82:64:60:48:c8:5a:
+                    52:86:50:73:36:e0:24:53:5c:e8:58:13:7a:29:b8:
+                    8a:a8:39:68:98:12:bf:9f:37:df:60:67:e0:3f:1f:
+                    fa:de:b7:d1:a4:17:c3:c2:c5:b5:be:d7:98:e1:3d:
+                    0d:59:66:e5:07:49:9a:bb:9e:4f:f3:37:38:37:df:
+                    0c:19:8b:cd:fd:2c:fc:f5:a9:09:6b:4a:d3:13:22:
+                    8f:fd:f9:64:e5:2c:5f:be:5a:a5:84:32:9c:e5:2a:
+                    73:f5:dc:aa:57:c2:7f:3e:d6:7c:9f:55:f0:28:9c:
+                    21:ba:e6:99:61:fc:39:0d:31:ac:14:9d:c1:97:b5:
+                    e8:ce:97:1b:19:b8:c0:ae:52:1a:2a:46:7a:2c:f8:
+                    c4:18:7d:6a:73:12:20:ec:39:47:e0:de:e3:d5:8d:
+                    82:0f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:1
+            X509v3 Subject Key Identifier: 
+                4F:93:EA:B8:A6:60:AF:AB:A8:B3:5E:B7:A6:37:7E:66:BD:43:BC:06
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+            X509v3 Certificate Policies: 
+                Policy: 1.3.6.1.4.1.11129.2.5.2
+
+    Signature Algorithm: sha256WithRSAEncryption
+         0d:8f:39:1a:7f:65:63:9a:16:d7:7f:e0:2f:64:79:7d:0e:3f:
+         cf:3a:85:fe:2b:8b:1e:54:47:c7:fe:ce:ad:ea:51:24:1d:a5:
+         ea:1e:5f:31:99:c3:3f:87:ac:8e:dc:d7:8c:5e:3d:aa:42:99:
+         58:07:bf:7c:87:51:7d:90:2f:e2:4d:14:03:a2:db:b9:92:51:
+         3c:34:7d:00:5e:e3:3e:c1:ab:56:a1:f8:5f:59:fb:64:8d:35:
+         e9:6c:de:27:c0:b4:70:82:7f:6e:20:e7:ed:d3:94:e3:c2:80:
+         d0:6f:47:fd:b1:64:d0:1e:39:1e:c7:7c:65:c9:51:99:ec:7e:
+         c2:ba:8a:ef:95:29:44:f1:31:33:05:fa:34:4a:50:3f:bf:69:
+         91:0a:8d:98:8d:f3:1e:99:1f:6c:ea:d1:81:ce:b5:52:c0:f6:
+         c6:5f:32:7c:59:88:dd:3c:45:f2:c8:1b:47:fc:f3:d4:0e:eb:
+         f5:57:22:91:f7:9f:3b:88:62:c9:7a:d5:cf:1d:98:fc:f2:78:
+         5a:8f:fc:e9:4d:7d:a4:9b:5c:94:07:94:8d:91:8b:c8:10:76:
+         6c:16:74:90:9c:a8:bf:18:38:9a:00:2d:d0:2d:a4:6b:98:d9:
+         9f:3b:68:43:c3:91:bf:93:0d:f1:12:56:9a:d5:e9:69:7b:7e:
+         e3:75:37:56
+-----BEGIN CERTIFICATE-----
+MIID6DCCAtCgAwIBAgIBEjANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE0MTExNzE4MTkyNloXD
+TE1MDMzMTE4MTkyNlowfzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxHzA
+dBgNVBAMMFkNhc3QgQXVkaW8gRGV2IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwgg
+EKAoIBAQC5hu6BmwfxxhVqMB5BvTtw9JaIfffTKWM9uMqh7D2BQwiFKzBfS2tUGamSRpiaLir/n
+fNIsl3WCpxJgWpjGhLnjjw5dGdnx9XU83xFZQeEFbHfCxYNId5xJLCIAIppz65wJIJkYEjIWlKG
+UHM24CRTXOhYE3opuIqoOWiYEr+fN99gZ+A/H/ret9GkF8PCxbW+15jhPQ1ZZuUHSZq7nk/zNzg
+33wwZi839LPz1qQlrStMTIo/9+WTlLF++WqWEMpzlKnP13KpXwn8+1nyfVfAonCG65plh/DkNMa
+wUncGXtejOlxsZuMCuUhoqRnos+MQYfWpzEiDsOUfg3uPVjYIPAgMBAAGjeTB3MA8GA1UdEwQIM
+AYBAf8CAQEwHQYDVR0OBBYEFE+T6rimYK+rqLNet6Y3fma9Q7wGMB8GA1UdIwQYMBaAFHyaHn3f
+eVS818xeypmGRXlldCgZMAsGA1UdDwQEAwIBBjAXBgNVHSAEEDAOMAwGCisGAQQB1nkCBQIwDQY
+JKoZIhvcNAQELBQADggEBAA2PORp/ZWOaFtd/4C9keX0OP886hf4rix5UR8f+zq3qUSQdpeoeXz
+GZwz+HrI7c14xePapCmVgHv3yHUX2QL+JNFAOi27mSUTw0fQBe4z7Bq1ah+F9Z+2SNNels3ifAt
+HCCf24g5+3TlOPCgNBvR/2xZNAeOR7HfGXJUZnsfsK6iu+VKUTxMTMF+jRKUD+/aZEKjZiN8x6Z
+H2zq0YHOtVLA9sZfMnxZiN08RfLIG0f889QO6/VXIpH3nzuIYsl61c8dmPzyeFqP/OlNfaSbXJQ
+HlI2Ri8gQdmwWdJCcqL8YOJoALdAtpGuY2Z87aEPDkb+TDfESVprV6Wl7fuN1N1Y=
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/unchained.pem b/extensions/test/data/cast_certificates/unchained.pem
new file mode 100644
index 0000000..f4012218
--- /dev/null
+++ b/extensions/test/data/cast_certificates/unchained.pem
@@ -0,0 +1,82 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 30 (0x1e)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Test Untrusted ICA
+        Validity
+            Not Before: Jan 22 00:02:35 2015 GMT
+            Not After : Jan 17 00:02:35 2035 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Test Untrusted Device
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:bb:68:cb:94:9a:ca:8b:41:40:8a:b7:50:6d:e4:
+                    c9:d1:d5:c7:81:f6:c6:44:7e:cc:b3:de:bc:77:68:
+                    97:88:f5:ce:40:cc:f5:8f:d2:d1:44:3b:a5:8b:54:
+                    d3:05:02:b3:dc:04:ee:b1:17:31:2c:6d:bf:bc:23:
+                    a6:f2:55:7d:c1:f3:94:7e:65:f2:b5:5f:fc:c3:91:
+                    fb:91:f2:d0:4f:88:33:1a:56:f9:de:f2:d3:8f:a9:
+                    58:1e:1f:e2:0e:99:ac:3b:6c:32:93:89:37:68:c3:
+                    7a:e6:28:12:8e:cf:3a:a2:10:64:d5:f8:6b:31:99:
+                    3d:88:56:04:1c:93:7e:5e:e3:9c:ed:a6:e3:3c:13:
+                    56:bc:0c:39:32:ff:4d:3e:2a:6e:b9:6e:4d:61:35:
+                    2d:e8:ac:ed:bd:7e:e8:66:21:7c:8c:29:17:b1:b7:
+                    d2:36:0b:bb:a1:a8:91:73:32:76:75:cc:87:6d:a8:
+                    b9:53:78:0b:9a:08:01:0c:09:b3:34:ac:42:1c:ec:
+                    d2:bb:50:09:9c:b7:63:41:aa:65:a9:47:0c:88:bd:
+                    f7:e4:94:c6:3e:47:69:ad:88:99:9b:8e:6f:d4:24:
+                    19:59:0a:22:a9:7d:be:f9:26:d1:75:68:07:e0:7f:
+                    8a:e6:72:f9:d4:5c:b3:66:21:a8:5e:2c:51:17:76:
+                    86:ab
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                74:4B:08:93:5E:9E:C0:19:7B:B9:0E:17:83:87:10:B8:97:B4:45:EB
+            X509v3 Authority Key Identifier: 
+                keyid:6B:7E:E5:CA:B2:CD:E5:F1:71:14:86:E2:E5:2D:66:A8:59:A8:54:88
+
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+    Signature Algorithm: sha256WithRSAEncryption
+         6c:7a:82:f8:1a:ec:e8:ed:45:3f:12:d4:d5:8f:2c:84:1b:99:
+         2a:d3:e5:6c:e2:b2:f5:cb:3e:8d:11:82:d0:3f:08:f5:fb:a8:
+         21:4a:04:c9:bd:5e:eb:3b:8a:4d:61:3f:3e:86:ff:ca:13:2e:
+         49:b1:1f:d7:0b:6f:58:9e:cc:02:96:95:01:81:ac:11:19:fa:
+         a5:0e:e8:8f:16:fd:60:6f:b2:c5:34:fa:a7:4f:4f:30:64:63:
+         9a:da:ef:81:73:fc:d0:fb:40:89:5e:b0:98:cb:0d:b2:e7:ac:
+         56:5b:ef:77:22:db:50:f9:d5:93:dd:a9:16:7e:c1:4e:24:20:
+         fe:7c:d5:a3:2e:63:86:18:f1:e2:61:96:d8:bd:e9:af:ef:a8:
+         9a:8f:3c:89:86:7e:60:ce:a2:7c:c4:e4:19:93:90:6e:64:92:
+         47:bd:b4:67:5a:8a:b4:a7:c8:eb:69:e6:3a:cb:ac:7e:87:a7:
+         57:17:cc:02:c5:a0:85:bc:42:6e:26:b8:ed:95:ef:41:f1:75:
+         95:f2:10:39:80:79:8b:2e:45:75:59:2d:36:3f:04:dc:11:0d:
+         b0:da:a0:0a:22:20:4d:be:b5:a0:aa:19:7d:7b:78:11:9a:9e:
+         e0:02:5c:20:0b:87:da:91:4b:e6:b2:a7:b8:d0:a3:07:16:3d:
+         bf:b7:31:e0
+-----BEGIN CERTIFICATE-----
+MIID7zCCAtegAwIBAgIBHjANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAg
+MCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbm
+MxDTALBgNVBAsMBENhc3QxIDAeBgNVBAMMF0Nhc3QgVGVzdCBVbnRydXN0ZWQgSUNBMB4XDTE1M
+DEyMjAwMDIzNVoXDTM1MDExNzAwMDIzNVowgYMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp
+Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKDApHb29nbGUgSW5jMQ0wCwY
+DVQQLDARDYXN0MSMwIQYDVQQDDBpDYXN0IFRlc3QgVW50cnVzdGVkIERldmljZTCCASIwDQYJKo
+ZIhvcNAQEBBQADggEPADCCAQoCggEBALtoy5SayotBQIq3UG3kydHVx4H2xkR+zLPevHdol4j1z
+kDM9Y/S0UQ7pYtU0wUCs9wE7rEXMSxtv7wjpvJVfcHzlH5l8rVf/MOR+5Hy0E+IMxpW+d7y04+p
+WB4f4g6ZrDtsMpOJN2jDeuYoEo7POqIQZNX4azGZPYhWBByTfl7jnO2m4zwTVrwMOTL/TT4qbrl
+uTWE1Leis7b1+6GYhfIwpF7G30jYLu6GokXMydnXMh22ouVN4C5oIAQwJszSsQhzs0rtQCZy3Y0
+GqZalHDIi99+SUxj5Haa2ImZuOb9QkGVkKIql9vvkm0XVoB+B/iuZy+dRcs2YhqF4sURd2hqsCA
+wEAAaNvMG0wCQYDVR0TBAIwADAdBgNVHQ4EFgQUdEsIk16ewBl7uQ4Xg4cQuJe0ReswHwYDVR0j
+BBgwFoAUa37lyrLN5fFxFIbi5S1mqFmoVIgwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQU
+FBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBseoL4Guzo7UU/EtTVjyyEG5kq0+Vs4rL1yz6NEYLQPw
+j1+6ghSgTJvV7rO4pNYT8+hv/KEy5JsR/XC29YnswClpUBgawRGfqlDuiPFv1gb7LFNPqnT08wZ
+GOa2u+Bc/zQ+0CJXrCYyw2y56xWW+93IttQ+dWT3akWfsFOJCD+fNWjLmOGGPHiYZbYvemv76ia
+jzyJhn5gzqJ8xOQZk5BuZJJHvbRnWoq0p8jraeY6y6x+h6dXF8wCxaCFvEJuJrjtle9B8XWV8hA
+5gHmLLkV1WS02PwTcEQ2w2qAKIiBNvrWgqhl9e3gRmp7gAlwgC4fakUvmsqe40KMHFj2/tzHg
+-----END CERTIFICATE-----
diff --git a/extensions/test/data/cast_certificates/vizio.pem b/extensions/test/data/cast_certificates/vizio.pem
new file mode 100644
index 0000000..8d55fcf
--- /dev/null
+++ b/extensions/test/data/cast_certificates/vizio.pem
@@ -0,0 +1,157 @@
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 997 (0x3e5)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast TV ICA (Vizio)
+        Validity
+            Not Before: Nov 11 02:06:19 2015 GMT
+            Not After : Nov 10 02:06:19 2016 GMT
+        Subject: ST=California, C=US, L=Mountain View, OU=Cast TV (Vizio), O=Google Inc, CN=9V0000VB FA8FCA784D01
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:a9:4b:a9:c9:1a:98:9e:71:b0:20:09:1d:bb:7c:
+                    7c:e9:dd:29:3d:b5:43:4e:d8:14:b3:3f:d1:0e:d1:
+                    ce:4c:fd:5e:b2:4b:5b:19:aa:f7:f5:b9:e7:f7:b3:
+                    b1:33:a7:6b:d2:62:67:b2:62:80:51:21:9e:db:5c:
+                    d2:16:e5:a4:b4:e7:83:e2:43:1d:ce:d5:6a:b2:4a:
+                    6d:ea:b8:7a:9d:1b:a8:1f:3f:19:b5:e0:a3:db:12:
+                    be:d2:19:e2:66:ce:d0:c9:03:6d:ab:92:db:6c:2c:
+                    24:64:3b:de:44:de:5a:bd:72:a6:78:94:c9:40:ca:
+                    d9:6f:5c:b0:b7:8b:f8:51:40:e8:59:cd:52:99:0c:
+                    be:56:8c:c6:05:ed:4c:bb:26:d8:da:04:e1:17:e9:
+                    a5:8d:3d:d1:bb:c4:55:b4:8f:98:77:53:12:9b:8d:
+                    ae:12:29:8f:05:bf:9a:90:d1:22:20:09:0f:4f:1c:
+                    9f:de:9a:98:b3:74:29:64:eb:fa:97:91:92:c0:b3:
+                    42:75:31:ad:a5:5b:8d:6f:df:27:db:d4:97:52:23:
+                    fa:8e:59:c0:21:63:0f:cb:13:d1:5a:7f:c0:e2:10:
+                    fb:05:91:d4:b1:c2:8b:f8:e4:26:bf:c8:98:55:00:
+                    03:51:e5:bc:dd:df:7e:74:e3:b5:c8:7b:10:6f:9c:
+                    08:85
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Key Usage: 
+                Digital Signature
+            X509v3 Extended Key Usage: 
+                TLS Web Client Authentication
+    Signature Algorithm: sha256WithRSAEncryption
+         61:4a:f2:50:20:68:8b:45:0d:81:6a:24:fb:bb:a1:9a:eb:36:
+         4c:db:61:fd:a6:9f:03:1b:c0:62:95:c8:fc:b6:76:fd:3d:43:
+         71:fd:7d:dd:b8:fa:68:02:8d:e8:76:75:f3:58:73:1a:77:89:
+         24:2f:91:d3:18:54:a0:75:80:91:a5:b8:59:1f:bc:5f:09:87:
+         be:0e:62:83:52:f0:45:56:08:bd:ff:e3:2e:96:f9:23:18:ef:
+         b8:3e:a9:27:b2:ee:1d:40:36:f9:ca:bb:d9:fa:4f:1f:d9:68:
+         41:48:57:cf:9a:6f:25:a1:6a:68:79:54:cb:94:68:5f:8c:c3:
+         7d:e7:14:18:27:5f:5f:65:a8:4d:49:49:bb:b8:bc:d6:43:13:
+         e9:ef:56:74:c9:a9:f0:68:a4:02:71:43:46:98:d1:ef:e1:64:
+         ef:9d:7f:8a:2b:de:19:e2:79:5f:a8:38:75:8e:0b:85:f8:14:
+         d8:84:ac:87:57:3d:52:fa:61:0a:f6:9d:d6:b2:9a:9a:73:47:
+         f8:99:49:60:4c:b1:7c:1e:e8:d3:f3:4f:0e:62:10:5f:a6:69:
+         94:13:08:78:9b:06:ed:57:52:da:b7:78:ac:da:08:26:2f:34:
+         4e:15:08:c0:03:96:bf:a6:ce:5c:63:22:be:d0:e8:99:94:ba:
+         42:f6:b9:57
+-----BEGIN CERTIFICATE-----
+MIIDsTCCApmgAwIBAgICA+UwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAg
+MCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbm
+MxDTALBgNVBAsMBENhc3QxHDAaBgNVBAMME0Nhc3QgVFYgSUNBIChWaXppbykwHhcNMTUxMTExM
+DIwNjE5WhcNMTYxMTEwMDIwNjE5WjCBiTETMBEGA1UECAwKQ2FsaWZvcm5pYTELMAkGA1UEBhMC
+VVMxFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxGDAWBgNVBAsMD0Nhc3QgVFYgKFZpemlvKTETMBE
+GA1UECgwKR29vZ2xlIEluYzEeMBwGA1UEAwwVOVYwMDAwVkIgRkE4RkNBNzg0RDAxMIIBIjANBg
+kqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqUupyRqYnnGwIAkdu3x86d0pPbVDTtgUsz/RDtHOT
+P1esktbGar39bnn97OxM6dr0mJnsmKAUSGe21zSFuWktOeD4kMdztVqskpt6rh6nRuoHz8ZteCj
+2xK+0hniZs7QyQNtq5LbbCwkZDveRN5avXKmeJTJQMrZb1ywt4v4UUDoWc1SmQy+VozGBe1Muyb
+Y2gThF+mljT3Ru8RVtI+Yd1MSm42uEimPBb+akNEiIAkPTxyf3pqYs3QpZOv6l5GSwLNCdTGtpV
+uNb98n29SXUiP6jlnAIWMPyxPRWn/A4hD7BZHUscKL+OQmv8iYVQADUeW83d9+dOO1yHsQb5wIh
+QIDAQABoy8wLTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAN
+BgkqhkiG9w0BAQsFAAOCAQEAYUryUCBoi0UNgWok+7uhmus2TNth/aafAxvAYpXI/LZ2/T1Dcf1
+93bj6aAKN6HZ181hzGneJJC+R0xhUoHWAkaW4WR+8XwmHvg5ig1LwRVYIvf/jLpb5IxjvuD6pJ7
+LuHUA2+cq72fpPH9loQUhXz5pvJaFqaHlUy5RoX4zDfecUGCdfX2WoTUlJu7i81kMT6e9WdMmp8
+GikAnFDRpjR7+Fk751/iiveGeJ5X6g4dY4LhfgU2ISsh1c9UvphCvad1rKamnNH+JlJYEyxfB7o
+0/NPDmIQX6ZplBMIeJsG7VdS2rd4rNoIJi80ThUIwAOWv6bOXGMivtDomZS6Qva5Vw==
+-----END CERTIFICATE-----
+
+$ openssl x509 -text -noout < [CERTIFICATE]
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 49 (0x31)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast Root CA
+        Validity
+            Not Before: Apr 20 21:03:38 2015 GMT
+            Not After : Apr 17 21:03:38 2025 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Google Inc, OU=Cast, CN=Cast TV ICA (Vizio)
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:d4:02:fc:36:d7:4f:16:db:e2:95:8e:29:9a:2b:
+                    5d:47:8e:cc:32:78:7a:b2:f2:46:ac:bf:35:ad:c2:
+                    ca:7a:3e:be:50:4b:50:01:77:90:a3:a2:31:51:31:
+                    d6:7a:32:2b:43:bd:4e:f9:b6:39:2b:05:f2:97:bd:
+                    de:bb:19:bc:5d:73:17:7d:94:1e:9b:4c:e8:68:37:
+                    7e:d6:36:e5:a0:fb:75:52:78:83:4c:26:84:88:48:
+                    54:d8:73:fc:f7:f7:4a:3f:68:a6:a3:7b:46:96:03:
+                    38:5e:f3:21:4d:59:91:48:66:0a:ea:ed:69:8d:b2:
+                    86:53:af:41:e8:ca:c0:55:63:7d:fc:72:98:bf:b2:
+                    f4:ab:bb:2c:f3:3c:92:09:c3:01:f6:68:8e:76:c1:
+                    7c:a0:3b:0d:f6:a4:d5:92:b1:e3:dd:9c:4f:e8:04:
+                    d2:9b:59:70:72:dd:a0:60:53:ee:c7:36:c6:48:45:
+                    b7:d9:1b:3b:eb:eb:7e:c5:07:b2:9d:7d:cf:f1:6b:
+                    ae:02:25:de:af:84:30:8c:98:d9:e1:6d:8d:ef:f6:
+                    0a:63:bf:be:cd:42:09:f5:af:eb:f1:cc:d9:a2:e7:
+                    86:32:0b:0a:53:66:23:2f:51:e6:84:64:c6:b7:0f:
+                    98:af:24:75:33:5d:e3:d8:96:61:d7:57:a6:63:88:
+                    a2:4f
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE, pathlen:0
+            X509v3 Subject Key Identifier: 
+                04:71:E0:14:1C:45:75:DB:C5:DF:3E:11:6A:57:79:9D:D0:37:12:18
+            X509v3 Authority Key Identifier: 
+                keyid:7C:9A:1E:7D:DF:79:54:BC:D7:CC:5E:CA:99:86:45:79:65:74:28:19
+
+            X509v3 Key Usage: 
+                Certificate Sign, CRL Sign
+    Signature Algorithm: sha256WithRSAEncryption
+         86:36:6f:de:ec:8f:4a:bc:b7:de:9c:bd:9e:03:3f:57:11:62:
+         88:46:ee:cf:6d:21:58:43:31:df:af:46:35:b8:89:36:28:3e:
+         f3:c4:95:8a:b2:91:66:fe:7f:3f:64:5a:82:63:81:89:4a:0f:
+         34:5c:b2:bc:0a:80:d2:26:74:b4:69:be:39:bd:61:ad:e8:e8:
+         3f:c0:5b:93:d0:91:59:4a:ec:f2:a6:36:ec:83:4c:ba:37:40:
+         ef:be:84:72:b9:13:78:aa:c4:d2:bc:2c:e5:1a:90:d9:07:db:
+         ca:aa:2d:f4:cc:ad:c3:47:4e:ff:44:6a:9f:25:d5:ba:20:e1:
+         ae:9b:df:24:8c:a5:85:7d:d3:1c:93:22:6d:49:89:eb:ad:ee:
+         86:a6:3b:68:34:8a:24:a5:1a:11:40:f4:a2:41:16:3f:11:1e:
+         56:26:ee:4e:30:5b:9d:71:7e:92:58:fc:d1:d3:8e:a7:e0:2b:
+         24:1f:c3:be:b8:64:6e:61:05:88:18:fa:ee:be:b1:e0:60:26:
+         bf:cb:68:60:d8:6a:c7:d7:20:b4:84:9f:c0:eb:0a:fa:5e:3b:
+         f0:52:27:13:39:14:e4:a8:12:ea:f8:4b:19:5e:52:e6:86:6a:
+         be:83:7c:3d:31:26:66:d7:fb:a1:41:3c:d8:fb:a5:28:49:f9:
+         3f:2b:05:ab
+-----BEGIN CERTIFICATE-----
+MIIDzDCCArSgAwIBAgIBMTANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJVUzETMBEGA1UECAw
+KQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYz
+ENMAsGA1UECwwEQ2FzdDEVMBMGA1UEAwwMQ2FzdCBSb290IENBMB4XDTE1MDQyMDIxMDMzOFoXD
+TI1MDQxNzIxMDMzOFowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
+BAcMDU1vdW50YWluIFZpZXcxEzARBgNVBAoMCkdvb2dsZSBJbmMxDTALBgNVBAsMBENhc3QxHDA
+aBgNVBAMME0Nhc3QgVFYgSUNBIChWaXppbykwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAo
+IBAQDUAvw2108W2+KVjimaK11HjswyeHqy8kasvzWtwsp6Pr5QS1ABd5CjojFRMdZ6MitDvU75t
+jkrBfKXvd67Gbxdcxd9lB6bTOhoN37WNuWg+3VSeINMJoSISFTYc/z390o/aKaje0aWAzhe8yFN
+WZFIZgrq7WmNsoZTr0HoysBVY338cpi/svSruyzzPJIJwwH2aI52wXygOw32pNWSsePdnE/oBNK
+bWXBy3aBgU+7HNsZIRbfZGzvr637FB7Kdfc/xa64CJd6vhDCMmNnhbY3v9gpjv77NQgn1r+vxzN
+mi54YyCwpTZiMvUeaEZMa3D5ivJHUzXePYlmHXV6ZjiKJPAgMBAAGjYDBeMA8GA1UdEwQIMAYBA
+f8CAQAwHQYDVR0OBBYEFARx4BQcRXXbxd8+EWpXeZ3QNxIYMB8GA1UdIwQYMBaAFHyaHn3feVS8
+18xeypmGRXlldCgZMAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAhjZv3uyPSry33py
+9ngM/VxFiiEbuz20hWEMx369GNbiJNig+88SVirKRZv5/P2RagmOBiUoPNFyyvAqA0iZ0tGm+Ob
+1hrejoP8Bbk9CRWUrs8qY27INMujdA776EcrkTeKrE0rws5RqQ2Qfbyqot9Mytw0dO/0RqnyXVu
+iDhrpvfJIylhX3THJMibUmJ663uhqY7aDSKJKUaEUD0okEWPxEeVibuTjBbnXF+klj80dOOp+Ar
+JB/DvrhkbmEFiBj67r6x4GAmv8toYNhqx9cgtISfwOsK+l478FInEzkU5KgS6vhLGV5S5oZqvoN
+8PTEmZtf7oUE82PulKEn5PysFqw==
+-----END CERTIFICATE-----
diff --git a/gin/shell/gin_main.cc b/gin/shell/gin_main.cc
index 1fff9f5..b45afefe 100644
--- a/gin/shell/gin_main.cc
+++ b/gin/shell/gin_main.cc
@@ -5,6 +5,7 @@
 #include "base/at_exit.h"
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/feature_list.h"
 #include "base/files/file_util.h"
 #include "base/i18n/icu_util.h"
 #include "base/macros.h"
@@ -68,6 +69,9 @@
 
   base::MessageLoop message_loop;
 
+  // Initialize the base::FeatureList since IsolateHolder can depend on it.
+  base::FeatureList::SetInstance(make_scoped_ptr(new base::FeatureList));
+
   gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode,
                                  gin::IsolateHolder::kStableV8Extras,
                                  gin::ArrayBufferAllocator::SharedInstance());
diff --git a/google_apis/gaia/fake_gaia.cc b/google_apis/gaia/fake_gaia.cc
index d2b0f28..2da0c53 100644
--- a/google_apis/gaia/fake_gaia.cc
+++ b/google_apis/gaia/fake_gaia.cc
@@ -268,6 +268,9 @@
   // Handles /SSO GAIA call (not GAIA, made up for SAML tests).
   REGISTER_PATH_RESPONSE_HANDLER("/SSO", HandleSSO);
 
+  // Handles the /samlredirect requests for tests.
+  REGISTER_PATH_RESPONSE_HANDLER("/samlredirect", HandleSAMLRedirect);
+
   REGISTER_RESPONSE_HANDLER(
       gaia_urls->gaia_url().Resolve(kDummySAMLContinuePath),
       HandleDummySAMLContinue);
@@ -325,6 +328,11 @@
   saml_account_idp_map_[account_id] = saml_idp;
 }
 
+void FakeGaia::RegisterSamlDomainRedirectUrl(const std::string& domain,
+                                             const GURL& saml_redirect_url) {
+  saml_domain_url_map_[domain] = saml_redirect_url;
+}
+
 // static
 bool FakeGaia::GetQueryParameter(const std::string& query,
                                  const std::string& key,
@@ -804,3 +812,30 @@
     http_response->set_code(net::HTTP_BAD_REQUEST);
   }
 }
+
+void FakeGaia::HandleSAMLRedirect(
+    const net::test_server::HttpRequest& request,
+    net::test_server::BasicHttpResponse* http_response) {
+  GURL request_url = GURL("http://localhost").Resolve(request.relative_url);
+  std::string domain;
+  GetQueryParameter(request_url.query(), "domain", &domain);
+
+  // Get the redirect url.
+  auto itr = saml_domain_url_map_.find(domain);
+  if (itr == saml_domain_url_map_.end()) {
+    http_response->set_code(net::HTTP_BAD_REQUEST);
+    return;
+  }
+
+  GURL url = itr->second;
+  url = net::AppendQueryParameter(url, "SAMLRequest", "fake_request");
+  url = net::AppendQueryParameter(url, "RelayState",
+                                  GaiaUrls::GetInstance()
+                                      ->gaia_url()
+                                      .Resolve(kDummySAMLContinuePath)
+                                      .spec());
+  std::string redirect_url = url.spec();
+  http_response->set_code(net::HTTP_TEMPORARY_REDIRECT);
+  http_response->AddCustomHeader("Google-Accounts-SAML", "Start");
+  http_response->AddCustomHeader("Location", redirect_url);
+}
diff --git a/google_apis/gaia/fake_gaia.h b/google_apis/gaia/fake_gaia.h
index 75109c5..304b9a2 100644
--- a/google_apis/gaia/fake_gaia.h
+++ b/google_apis/gaia/fake_gaia.h
@@ -121,6 +121,12 @@
   // to the associated redirect endpoint.
   void RegisterSamlUser(const std::string& account_id, const GURL& saml_idp);
 
+  // Associates an SAML |domain| with a SAML IdP redirect endpoint. When a
+  // /samlredirect request comes in for this domain, it will be redirected to
+  // this endpoint.
+  void RegisterSamlDomainRedirectUrl(const std::string& domain,
+                                     const GURL& saml_redirect_url);
+
   void set_issue_oauth_code_cookie(bool value) {
     issue_oauth_code_cookie_ = value;
   }
@@ -151,9 +157,10 @@
       net::test_server::BasicHttpResponse* http_response);
 
  private:
-  typedef std::multimap<std::string, AccessTokenInfo> AccessTokenInfoMap;
-  typedef std::map<std::string, std::string> EmailToGaiaIdMap;
-  typedef std::map<std::string, GURL> SamlAccountIdpMap;
+  using AccessTokenInfoMap = std::multimap<std::string, AccessTokenInfo>;
+  using EmailToGaiaIdMap = std::map<std::string, std::string>;
+  using SamlAccountIdpMap = std::map<std::string, GURL>;
+  using SamlDomainRedirectUrlMap = std::map<std::string, GURL>;
 
   std::string GetGaiaIdOfEmail(const std::string& email) const;
 
@@ -213,6 +220,8 @@
                          net::test_server::BasicHttpResponse* http_response);
   void HandleOAuthUserInfo(const net::test_server::HttpRequest& request,
                            net::test_server::BasicHttpResponse* http_response);
+  void HandleSAMLRedirect(const net::test_server::HttpRequest& request,
+                          net::test_server::BasicHttpResponse* http_response);
 
   // Returns the access token associated with |auth_token| that matches the
   // given |client_id| and |scope_string|. If |scope_string| is empty, the first
@@ -234,6 +243,7 @@
   std::string service_login_response_;
   std::string embedded_setup_chromeos_response_;
   SamlAccountIdpMap saml_account_idp_map_;
+  SamlDomainRedirectUrlMap saml_domain_url_map_;
   bool issue_oauth_code_cookie_;
   RefreshTokenToDeviceIdMap refresh_token_to_device_id_map_;
   std::string prefilled_email_;
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index 6f93dc7c..81f24ac 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -17,7 +17,7 @@
 <translation id="3414292259312108062">‏Chrome יאחסן את הסיסמה ב<ph name="BEGIN_LINK" />סיסמאות Google השמורות<ph name="END_LINK" /> ויזין אותה באופן אוטומטי כדי שלא תצטרך לזכור אותה.</translation>
 <translation id="3567664240939803299">‏האם אתה מעוניין ש-Google Smart Lock ישמור את הסיסמה לאתר זה?</translation>
 <translation id="3586931643579894722">הסתר פרטים</translation>
-<translation id="3736520371357197498">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
+<translation id="3736520371357197498">אם אתה מבין את הסיכונים בנוגע לאבטחה שלך, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
 <translation id="385051799172605136">חזור</translation>
 <translation id="4098354747657067197">זהירות, אתר מטעה</translation>
 <translation id="4121993058175073134">כדי לשלוח נתוני ייצוא ברשת, הגדר את חשבון האימייל שלך ביישום 'הגדרות'.</translation>
@@ -37,7 +37,7 @@
 <translation id="6344783595350022745">טקסט נקי</translation>
 <translation id="6456425917241817154">‏סיסמה שנוצרה על ידי Chrome</translation>
 <translation id="6535543971741225613">‏האתר שאליו אתה מנסה להיכנס מתנהג בצורה משונה, ו-‏Chrome אינו יכול לוודא כי כתובת האתר שלו נכונה. מטעמי אבטחה, מומלץ שלא תמשיך, ואולי כדאי שתנסה שוב מחר או שתעבור לאתר אחר.</translation>
-<translation id="6740369132746915122">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />לבקר באתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
+<translation id="6740369132746915122">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
 <translation id="7222245588540287464">האם מופעל חיפוש קולי לפי הקשר</translation>
 <translation id="724691107663265825">האתר שלפניך מכיל תוכנה זדונית</translation>
 <translation id="7456847797759667638">פתח מיקום...</translation>
@@ -46,8 +46,8 @@
 <translation id="7779249319235708104">התקפת דיוג לפניך</translation>
 <translation id="7961015016161918242">אף פעם</translation>
 <translation id="820854170120587500">‏'גלישה בטוחה של Google' זיהתה לאחרונה דיוג באתר <ph name="SITE" />‏. <ph name="BEGIN_LINK" />אתרי דיוג<ph name="END_LINK" /> מתחזים לאתרים אחרים כדי להטעות אותך.</translation>
-<translation id="834457929814110454">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />לבקר באתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
-<translation id="8543181531796978784">באפשרותך <ph name="BEGIN_ERROR_LINK" />לדווח על בעיית זיהוי<ph name="END_ERROR_LINK" /> או, אם אתה מבין את סיכוני האבטחה, <ph name="BEGIN_LINK" />לבקר באתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
+<translation id="834457929814110454">אם אתה מבין את סיכוני האבטחה, תוכל <ph name="BEGIN_LINK" />להיכנס לאתר לא בטוח זה<ph name="END_LINK" /> לפני הסרת התכניות המסוכנות.</translation>
+<translation id="8543181531796978784">באפשרותך <ph name="BEGIN_ERROR_LINK" />לדווח על בעיית זיהוי<ph name="END_ERROR_LINK" /> או, אם אתה מבין את סיכוני האבטחה, <ph name="BEGIN_LINK" />להיכנס לאתר הזה, שאינו מאובטח<ph name="END_LINK" />.</translation>
 <translation id="8761567432415473239">‏גלישה בטוחה של Google <ph name="BEGIN_LINK" />איתרה לאחרונה תוכניות מזיקות<ph name="END_LINK" /> באתר <ph name="SITE" />.</translation>
 <translation id="8996941253935762404">האתר שאתה עומד לעבור אליו מכיל תוכניות מזיקות</translation>
 <translation id="9035022520814077154">שגיאת אבטחה</translation>
diff --git a/ios/chrome/browser/component_updater/ios_component_updater_configurator.cc b/ios/chrome/browser/component_updater/ios_component_updater_configurator.cc
index 0ad785b5..c92046e 100644
--- a/ios/chrome/browser/component_updater/ios_component_updater_configurator.cc
+++ b/ios/chrome/browser/component_updater/ios_component_updater_configurator.cc
@@ -57,10 +57,13 @@
   ~IOSConfigurator() override {}
 };
 
+// Allows the component updater to use non-encrypted communication with the
+// update backend. The security of the update checks is enforced using
+// a custom message signing protocol and it does not depend on using HTTPS.
 IOSConfigurator::IOSConfigurator(
     const base::CommandLine* cmdline,
     net::URLRequestContextGetter* url_request_getter)
-    : configurator_impl_(cmdline, url_request_getter) {}
+    : configurator_impl_(cmdline, url_request_getter, false) {}
 
 int IOSConfigurator::InitialDelay() const {
   return configurator_impl_.InitialDelay();
diff --git a/ios/chrome/browser/find_in_page/find_in_page_controller.mm b/ios/chrome/browser/find_in_page/find_in_page_controller.mm
index 8152833..5a7b6cf8 100644
--- a/ios/chrome/browser/find_in_page/find_in_page_controller.mm
+++ b/ios/chrome/browser/find_in_page/find_in_page_controller.mm
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "base/mac/foundation_util.h"
 #include "base/mac/scoped_nsobject.h"
+#include "base/memory/scoped_ptr.h"
 #import "ios/chrome/browser/find_in_page/find_in_page_model.h"
 #import "ios/chrome/browser/find_in_page/js_findinpage_manager.h"
 #import "ios/chrome/browser/web/dom_altering_lock.h"
diff --git a/ios/chrome/browser/memory/memory_metrics.cc b/ios/chrome/browser/memory/memory_metrics.cc
index 23eed41..1de2e2a 100644
--- a/ios/chrome/browser/memory/memory_metrics.cc
+++ b/ios/chrome/browser/memory/memory_metrics.cc
@@ -10,6 +10,7 @@
 
 #include "base/logging.h"
 #include "base/mac/scoped_mach_port.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/process/process_handle.h"
 #include "base/process/process_metrics.h"
 #include "build/build_config.h"
diff --git a/ios/chrome/browser/net/crl_set_fetcher.cc b/ios/chrome/browser/net/crl_set_fetcher.cc
index 71d16a23..a7e78a23 100644
--- a/ios/chrome/browser/net/crl_set_fetcher.cc
+++ b/ios/chrome/browser/net/crl_set_fetcher.cc
@@ -136,7 +136,8 @@
   component.installer = this;
   component.name = "CRLSet";
   component.version = Version(base::UintToString(sequence_of_loaded_crl));
-  component.allow_background_download = false;
+  component.allows_background_download = false;
+  component.requires_network_encryption = false;
   if (!component.version.IsValid()) {
     NOTREACHED();
     component.version = Version("0");
diff --git a/ios/chrome/browser/ssl/ios_chrome_security_state_model_client.h b/ios/chrome/browser/ssl/ios_chrome_security_state_model_client.h
index e2bb2fd..63d032a 100644
--- a/ios/chrome/browser/ssl/ios_chrome_security_state_model_client.h
+++ b/ios/chrome/browser/ssl/ios_chrome_security_state_model_client.h
@@ -6,6 +6,7 @@
 #define IOS_CHROME_BROWSER_SSL_IOS_CHROME_SECURITY_STATE_MODEL_CLIENT_H_
 
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "components/security_state/security_state_model.h"
 #include "components/security_state/security_state_model_client.h"
 #include "ios/web/public/web_state/web_state_user_data.h"
diff --git a/ios/web/BUILD.gn b/ios/web/BUILD.gn
index e615c61..87c19878 100644
--- a/ios/web/BUILD.gn
+++ b/ios/web/BUILD.gn
@@ -76,11 +76,6 @@
     "net/clients/crw_js_injection_network_client.mm",
     "net/clients/crw_js_injection_network_client_factory.h",
     "net/clients/crw_js_injection_network_client_factory.mm",
-    "net/clients/crw_passkit_delegate.h",
-    "net/clients/crw_passkit_network_client.h",
-    "net/clients/crw_passkit_network_client.mm",
-    "net/clients/crw_passkit_network_client_factory.h",
-    "net/clients/crw_passkit_network_client_factory.mm",
     "net/clients/crw_redirect_network_client.h",
     "net/clients/crw_redirect_network_client.mm",
     "net/clients/crw_redirect_network_client_factory.h",
@@ -396,7 +391,6 @@
     "net/cert_verifier_block_adapter_unittest.cc",
     "net/clients/crw_csp_network_client_unittest.mm",
     "net/clients/crw_js_injection_network_client_unittest.mm",
-    "net/clients/crw_passkit_network_client_unittest.mm",
     "net/crw_cert_verification_controller_unittest.mm",
     "net/crw_ssl_status_updater_unittest.mm",
     "net/crw_url_verifying_protocol_handler_unittest.mm",
diff --git a/ios/web/ios_web.gyp b/ios/web/ios_web.gyp
index 1bf0d94..cca148c9 100644
--- a/ios/web/ios_web.gyp
+++ b/ios/web/ios_web.gyp
@@ -112,11 +112,6 @@
         'net/clients/crw_js_injection_network_client.mm',
         'net/clients/crw_js_injection_network_client_factory.h',
         'net/clients/crw_js_injection_network_client_factory.mm',
-        'net/clients/crw_passkit_delegate.h',
-        'net/clients/crw_passkit_network_client.h',
-        'net/clients/crw_passkit_network_client.mm',
-        'net/clients/crw_passkit_network_client_factory.h',
-        'net/clients/crw_passkit_network_client_factory.mm',
         'net/clients/crw_redirect_network_client.h',
         'net/clients/crw_redirect_network_client.mm',
         'net/clients/crw_redirect_network_client_factory.h',
diff --git a/ios/web/ios_web_unittests.gyp b/ios/web/ios_web_unittests.gyp
index 59f6799..3def2c2 100644
--- a/ios/web/ios_web_unittests.gyp
+++ b/ios/web/ios_web_unittests.gyp
@@ -40,7 +40,6 @@
         'net/cert_verifier_block_adapter_unittest.cc',
         'net/clients/crw_csp_network_client_unittest.mm',
         'net/clients/crw_js_injection_network_client_unittest.mm',
-        'net/clients/crw_passkit_network_client_unittest.mm',
         'net/crw_cert_verification_controller_unittest.mm',
         'net/crw_ssl_status_updater_unittest.mm',
         'net/crw_url_verifying_protocol_handler_unittest.mm',
diff --git a/ios/web/navigation/navigation_manager_impl.h b/ios/web/navigation/navigation_manager_impl.h
index 95035c3..f8d8709 100644
--- a/ios/web/navigation/navigation_manager_impl.h
+++ b/ios/web/navigation/navigation_manager_impl.h
@@ -11,6 +11,7 @@
 
 #include "base/mac/scoped_nsobject.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #import "ios/web/public/navigation_manager.h"
 #include "ui/base/page_transition_types.h"
diff --git a/ios/web/net/clients/crw_passkit_delegate.h b/ios/web/net/clients/crw_passkit_delegate.h
deleted file mode 100644
index ac0c661..0000000
--- a/ios/web/net/clients/crw_passkit_delegate.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_WEB_NET_CLIENTS_CRW_PASSKIT_DELEGATE_H_
-#define IOS_WEB_NET_CLIENTS_CRW_PASSKIT_DELEGATE_H_
-
-@protocol CRWPassKitDelegate<NSObject>
-
-// Called when a PassKit object has been collected from the network.
-- (void)handlePassKitObject:(NSData*)data;
-
-@end
-
-#endif  // IOS_WEB_NET_CLIENTS_CRW_PASSKIT_DELEGATE_H_
diff --git a/ios/web/net/clients/crw_passkit_network_client.h b/ios/web/net/clients/crw_passkit_network_client.h
deleted file mode 100644
index 3a6738a..0000000
--- a/ios/web/net/clients/crw_passkit_network_client.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 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 IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_H_
-#define IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_H_
-
-#import <Foundation/Foundation.h>
-
-#include "base/memory/weak_ptr.h"
-#import "ios/net/clients/crn_forwarding_network_client.h"
-
-namespace net {
-class RequestTracker;
-}
-
-@protocol CRWPassKitDelegate;
-
-// The CRWPassKitNetworkClient intercepts data from the network stack, caches it
-// as it is read from the network, and on completion asks the delegate to
-// handle the complete object.
-// The CRWPassKitNetworkClient is inserted into the HttpProtocolHandlerCore's
-// clients list when it detects that a PassKit object is being downloaded.
-@interface CRWPassKitNetworkClient : CRNForwardingNetworkClient
-
-// Designated initializer. This class assumes that |delegate| in not nil and
-// will remain alive for the duration of the request this client is handling.
-- (instancetype)initWithTracker:(base::WeakPtr<net::RequestTracker>)tracker
-                       delegate:(id<CRWPassKitDelegate>)delegate;
-
-@end
-
-#endif  // IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_H_
diff --git a/ios/web/net/clients/crw_passkit_network_client.mm b/ios/web/net/clients/crw_passkit_network_client.mm
deleted file mode 100644
index 83334941..0000000
--- a/ios/web/net/clients/crw_passkit_network_client.mm
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ios/web/net/clients/crw_passkit_network_client.h"
-
-#include "base/mac/bind_objc_block.h"
-#include "base/mac/scoped_nsobject.h"
-#include "ios/web/net/clients/crw_passkit_delegate.h"
-#include "ios/web/net/request_tracker_impl.h"
-#include "net/base/net_errors.h"
-
-@implementation CRWPassKitNetworkClient {
-  id<CRWPassKitDelegate> _delegate;
-  // Cache the PassKit object until data has been completely passed in.
-  base::scoped_nsobject<NSMutableData> _passKitData;
-  base::WeakPtr<net::RequestTracker> _tracker;
-}
-
-- (instancetype)initWithTracker:(base::WeakPtr<net::RequestTracker>)tracker
-                       delegate:(id<CRWPassKitDelegate>)delegate {
-  if ((self = [super init])) {
-    DCHECK(delegate);
-    _delegate = delegate;
-    _tracker = tracker;
-  }
-  return self;
-}
-
-#pragma mark - CRNNetworkClientProtocol
-
-- (void)didFailWithNSErrorCode:(NSInteger)nsErrorCode
-                  netErrorCode:(int)netErrorCode {
-  // If we fail, finish loading and return a nil PassKit object.
-  _passKitData.reset();
-  [self didFinishLoading];
-}
-
-- (void)didLoadData:(NSData*)data {
-  [_passKitData appendData:data];
-}
-
-- (void)didReceiveResponse:(NSURLResponse*)response {
-  _passKitData.reset([[NSMutableData alloc] init]);
-}
-
-- (void)wasRedirectedToRequest:(NSURLRequest*)request
-                 nativeRequest:(net::URLRequest*)nativeRequest
-              redirectResponse:(NSURLResponse*)redirectResponse {
-  NOTREACHED();
-}
-
-- (void)didFinishLoading {
-  // Tell |_delegate| that the PassKit object has loaded.
-  base::scoped_nsobject<NSData> passKitData([_passKitData copy]);
-  if (_tracker) {
-    web::RequestTrackerImpl::PostUITaskIfOpen(
-        _tracker,
-        base::BindBlock(^{ [_delegate handlePassKitObject:passKitData]; }));
-  }
-
-  [super didFailWithNSErrorCode:NSURLErrorCancelled
-                   netErrorCode:net::ERR_ABORTED];
-}
-
-- (void)setUserName:(NSString*)name password:(NSString*)password {
-  NOTREACHED();
-}
-
-- (void)cancelAuthentication {
-  NOTREACHED();
-}
-
-@end
diff --git a/ios/web/net/clients/crw_passkit_network_client_factory.h b/ios/web/net/clients/crw_passkit_network_client_factory.h
deleted file mode 100644
index 04a77bf9..0000000
--- a/ios/web/net/clients/crw_passkit_network_client_factory.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_FACTORY_H_
-#define IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_FACTORY_H_
-
-#import <Foundation/Foundation.h>
-
-#import "ios/net/clients/crn_forwarding_network_client_factory.h"
-
-namespace web {
-class RequestTrackerImpl;
-}
-
-@protocol CRWPassKitDelegate;
-
-// Factory that creates CRWPassKitDelegateNetworkClient instances
-@interface CRWPassKitNetworkClientFactory : CRNForwardingNetworkClientFactory
-
-// Designated initializer. A weak pointer to |delegate| will be set on each
-// client created.
-- (instancetype)initWithDelegate:(id<CRWPassKitDelegate>)delegate
-                         tracker:(web::RequestTrackerImpl*)tracker;
-
-@end
-
-#endif  // IOS_WEB_NET_CLIENTS_CRW_PASSKIT_NETWORK_CLIENT_FACTORY_H_
diff --git a/ios/web/net/clients/crw_passkit_network_client_factory.mm b/ios/web/net/clients/crw_passkit_network_client_factory.mm
deleted file mode 100644
index 74a46d5c..0000000
--- a/ios/web/net/clients/crw_passkit_network_client_factory.mm
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "ios/web/net/clients/crw_passkit_network_client_factory.h"
-
-#import "ios/web/net/clients/crw_passkit_network_client.h"
-#include "ios/web/net/request_tracker_impl.h"
-#include "ios/web/public/web_thread.h"
-#include "net/http/http_response_headers.h"
-#include "net/url_request/url_request.h"
-
-@implementation CRWPassKitNetworkClientFactory {
-  // Delegate that's passed on to any created clients.
-  id<CRWPassKitDelegate> _delegate;
-  web::RequestTrackerImpl* _tracker;
-}
-
-- (Class)clientClass {
-  return [CRWPassKitNetworkClient class];
-}
-
-- (CRNForwardingNetworkClient*)
-    clientHandlingResponse:(NSURLResponse*)response
-                   request:(const net::URLRequest&)request {
-  DCHECK_CURRENTLY_ON(web::WebThread::IO);
-
-  // Some requests (e.g., for chrome:// urls) will not have response headers.
-  net::HttpResponseHeaders* responseHeaders = request.response_headers();
-  if (!responseHeaders)
-    return nil;
-
-  std::string mimeType;
-  BOOL hasMimeType = responseHeaders->GetMimeType(&mimeType);
-  if (hasMimeType && mimeType == "application/vnd.apple.pkpass") {
-    return [[[CRWPassKitNetworkClient alloc]
-        initWithTracker:_tracker->GetWeakPtr()
-               delegate:_delegate] autorelease];
-  }
-
-  return nil;
-}
-
-- (instancetype)initWithDelegate:(id<CRWPassKitDelegate>)delegate
-                         tracker:(web::RequestTrackerImpl*)tracker {
-  if ((self = [super init])) {
-    DCHECK(delegate);
-    _delegate = delegate;
-    _tracker = tracker;
-  }
-  return self;
-}
-
-@end
diff --git a/ios/web/net/clients/crw_passkit_network_client_unittest.mm b/ios/web/net/clients/crw_passkit_network_client_unittest.mm
deleted file mode 100644
index 0160b82..0000000
--- a/ios/web/net/clients/crw_passkit_network_client_unittest.mm
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 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.
-
-#import <Foundation/Foundation.h>
-
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/path_service.h"
-#include "base/strings/sys_string_conversions.h"
-#import "ios/net/clients/crn_network_client_protocol.h"
-#import "ios/web/net/clients/crw_passkit_delegate.h"
-#import "ios/web/net/clients/crw_passkit_network_client.h"
-#include "ios/web/net/request_tracker_impl.h"
-#include "ios/web/public/test/test_browser_state.h"
-#include "ios/web/public/test/test_web_thread_bundle.h"
-#include "net/base/net_errors.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#import "third_party/ocmock/OCMock/OCMock.h"
-#import "third_party/ocmock/gtest_support.h"
-
-namespace {
-
-class CRWPassKitNetworkClientTest : public testing::Test {
- public:
-  CRWPassKitNetworkClientTest() {}
-
-  void SetUp() override {
-    // The mock passkit delegate will be called when the Pass is loaded.
-    mockCRWPassKitDelegate_.reset([[OCMockObject
-        niceMockForProtocol:@protocol(CRWPassKitDelegate)] retain]);
-
-    // The request tracker needs to be set up with a unique tab id.
-
-    static int gcount = 0;
-    request_group_id_.reset(
-        [[NSString stringWithFormat:@"passkittest%d", gcount++] retain]);
-    request_tracker_ = web::RequestTrackerImpl::CreateTrackerForRequestGroupID(
-        request_group_id_,
-        &browser_state_,
-        browser_state_.GetRequestContext(),
-        nil /* CRWRequestTrackerDelegate */);
-
-    // Set up mock original UIWebView proxy.
-    OCMockObject* mockProxy_ = [[OCMockObject
-        niceMockForProtocol:@protocol(CRNNetworkClientProtocol)] retain];
-    mockWebProxy_.reset(mockProxy_);
-
-    // Link all the mock objects into the PassKit network client.
-    passkit_client_.reset([[CRWPassKitNetworkClient alloc]
-        initWithTracker:request_tracker_->GetWeakPtr()
-               delegate:static_cast<id<CRWPassKitDelegate> >(
-                            mockCRWPassKitDelegate_.get())]);
-    [passkit_client_
-        setUnderlyingClient:(id<CRNNetworkClientProtocol>)mockWebProxy_];
-  }
-
-  void TearDown() override { request_tracker_->Close(); }
-
- protected:
-  web::TestWebThreadBundle thread_bundle_;
-  base::scoped_nsobject<CRWPassKitNetworkClient> passkit_client_;
-  scoped_refptr<web::RequestTrackerImpl> request_tracker_;
-  // Holds a mock CRNNetworkClientProtocol object.
-  base::scoped_nsobject<OCMockObject> mockWebProxy_;
-  // Holds a mock CRWPassKitDelegate object.
-  base::scoped_nsobject<OCMockObject> mockCRWPassKitDelegate_;
-  base::scoped_nsobject<NSString> request_group_id_;
-  web::TestBrowserState browser_state_;
-};
-
-}  // namespace
-
-TEST_F(CRWPassKitNetworkClientTest, GoodPassKitObjectHandled) {
-  // This error is expected to be passed to the web proxy at the end of the
-  // PassKit loading sequence, successful or not.
-  [[mockWebProxy_ expect] didFailWithNSErrorCode:NSURLErrorCancelled
-                                    netErrorCode:net::ERR_ABORTED];
-
-  // Set the data in PassKitProtocolHandler to point to a good PassKit object.
-  base::FilePath pass_path;
-  ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &pass_path));
-  pass_path = pass_path.AppendASCII("ios/web/test/data/testpass.pkpass");
-  NSData* passKitObject = [NSData dataWithContentsOfFile:
-      base::SysUTF8ToNSString(pass_path.value())];
-  EXPECT_TRUE(passKitObject);
-
-  // Load the PassKit object and trigger loading finished methods.
-  [passkit_client_ didLoadData:passKitObject];
-  [passkit_client_ didFinishLoading];
-
-  EXPECT_OCMOCK_VERIFY(mockWebProxy_);
-}
-
-TEST_F(CRWPassKitNetworkClientTest, BadPassKitObjectHandled) {
-  // This error is expected to be passed to the web proxy at the end of the
-  // PassKit loading sequence, successful or not.
-  [[mockWebProxy_ expect] didFailWithNSErrorCode:NSURLErrorCancelled
-                                    netErrorCode:net::ERR_ABORTED];
-
-  // Set the data in PassKitProtocolHandler to point to a bad PassKit object.
-  base::FilePath pass_path;
-  ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &pass_path));
-  pass_path = pass_path.AppendASCII("ios/web/test/data/testbadpass.pkpass");
-  NSData* passKitObject = [NSData dataWithContentsOfFile:
-      base::SysUTF8ToNSString(pass_path.value())];
-  EXPECT_TRUE(passKitObject);
-
-  // Load the PassKit object and trigger error method.
-  [passkit_client_ didLoadData:passKitObject];
-  [passkit_client_ didFailWithNSErrorCode:NSURLErrorCancelled
-                             netErrorCode:net::ERR_ABORTED];
-
-  EXPECT_OCMOCK_VERIFY(mockWebProxy_);
-}
diff --git a/ios/web/net/request_tracker_impl_unittest.mm b/ios/web/net/request_tracker_impl_unittest.mm
index 2deaec1..2cc83a7 100644
--- a/ios/web/net/request_tracker_impl_unittest.mm
+++ b/ios/web/net/request_tracker_impl_unittest.mm
@@ -113,10 +113,6 @@
   // Nothing, yet.
 }
 
-- (void)handlePassKitObject:(NSData*)data {
-  // Nothing yet.
-}
-
 @end
 
 namespace {
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm
index a98110c..d787e390 100644
--- a/ios/web/web_state/web_state_impl.mm
+++ b/ios/web/web_state/web_state_impl.mm
@@ -515,9 +515,7 @@
 }
 
 GURL WebStateImpl::GetCurrentURL(URLVerificationTrustLevel* trust_level) const {
-  GURL URL = [web_controller_ currentURLWithTrustLevel:trust_level];
-  DCHECK(URL == GetLastCommittedURL());
-  return URL;
+  return [web_controller_ currentURLWithTrustLevel:trust_level];
 }
 
 void WebStateImpl::AddScriptCommandCallback(
diff --git a/ios/web/webui/url_data_manager_ios_backend.h b/ios/web/webui/url_data_manager_ios_backend.h
index 3b6ea17..1135881 100644
--- a/ios/web/webui/url_data_manager_ios_backend.h
+++ b/ios/web/webui/url_data_manager_ios_backend.h
@@ -11,6 +11,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/supports_user_data.h"
 #include "ios/web/public/url_data_source_ios.h"
 #include "ios/web/webui/url_data_manager_ios.h"
diff --git a/ios/web/webui/web_ui_ios_impl.h b/ios/web/webui/web_ui_ios_impl.h
index d307b08..2d7a72e 100644
--- a/ios/web/webui/web_ui_ios_impl.h
+++ b/ios/web/webui/web_ui_ios_impl.h
@@ -9,6 +9,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "base/memory/weak_ptr.h"
 #include "ios/public/provider/web/web_ui_ios.h"
diff --git a/ipc/ipc_message_start.h b/ipc/ipc_message_start.h
index 2fe7643..4dc2a9f 100644
--- a/ipc/ipc_message_start.h
+++ b/ipc/ipc_message_start.h
@@ -14,7 +14,6 @@
   PageMsgStart,
   ViewMsgStart,
   InputMsgStart,
-  PluginMsgStart,
   PluginProcessMsgStart,
   ProfileImportMsgStart,
   TestMsgStart,
diff --git a/media/base/android/media_player_android.h b/media/base/android/media_player_android.h
index d33bb146..68e3978c 100644
--- a/media/base/android/media_player_android.h
+++ b/media/base/android/media_player_android.h
@@ -10,6 +10,7 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "media/base/android/media_player_listener.h"
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 0176405..d6fb74b5 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -101,7 +101,7 @@
   sink->SwitchOutputDevice(device_id, security_origin, callback);
 }
 
-bool IsSuspendUponHiddenEnabled() {
+bool IsBackgroundedSuspendEnabled() {
 #if !defined(OS_ANDROID)
   // Suspend/Resume is only enabled by default on Android.
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
@@ -112,6 +112,14 @@
 #endif
 }
 
+bool IsNetworkStateError(blink::WebMediaPlayer::NetworkState state) {
+  bool result = state == blink::WebMediaPlayer::NetworkStateFormatError ||
+                state == blink::WebMediaPlayer::NetworkStateNetworkError ||
+                state == blink::WebMediaPlayer::NetworkStateDecodeError;
+  DCHECK_EQ(state > blink::WebMediaPlayer::NetworkStateLoaded, result);
+  return result;
+}
+
 }  // namespace
 
 class BufferedDataSourceHostImpl;
@@ -139,8 +147,12 @@
     linked_ptr<UrlIndex> url_index,
     const WebMediaPlayerParams& params)
     : frame_(frame),
+      delegate_state_(DelegateState::GONE),
+      is_idle_(false),
+      must_suspend_(false),
       network_state_(WebMediaPlayer::NetworkStateEmpty),
       ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
+      highest_ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
       preload_(BufferedDataSource::AUTO),
       buffering_strategy_(
           BufferedDataSourceInterface::BUFFERING_STRATEGY_NORMAL),
@@ -155,7 +167,6 @@
                      base::Unretained(this)),
           base::Bind(&WebMediaPlayerImpl::OnPipelineSeeked, AsWeakPtr()),
           base::Bind(&WebMediaPlayerImpl::OnPipelineSuspended, AsWeakPtr()),
-          base::Bind(&WebMediaPlayerImpl::OnPipelineResumed, AsWeakPtr()),
           base::Bind(&WebMediaPlayerImpl::OnPipelineError, AsWeakPtr())),
       load_type_(LoadTypeURL),
       opaque_(false),
@@ -346,31 +357,24 @@
   }
 #endif
 
-  const bool was_paused = paused_;
   paused_ = false;
+  is_idle_ = false;
   pipeline_.SetPlaybackRate(playback_rate_);
 
   if (data_source_)
     data_source_->MediaIsPlaying();
 
   media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PLAY));
-
-  if (playback_rate_ > 0 && was_paused) {
-    NotifyPlaybackStarted();
-
-    // Resume the player if allowed. We always call Resume() in case there is a
-    // pending suspend that should be aborted. If the pipeline is not suspended,
-    // Resume() will have no effect.
-    if (IsAutomaticResumeAllowed())
-      pipeline_controller_.Resume();
-  }
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::pause() {
   DVLOG(1) << __FUNCTION__;
   DCHECK(main_task_runner_->BelongsToCurrentThread());
 
-  const bool was_already_paused = paused_ || playback_rate_ == 0;
+  // We update the paused state even when casting, since we expect pause() to be
+  // called when casting begins, and when we exit casting we should end up in a
+  // paused state.
   paused_ = true;
 
 #if defined(OS_ANDROID)  // WMPI_CAST
@@ -390,9 +394,7 @@
       ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime();
 
   media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PAUSE));
-
-  if (!was_already_paused)
-    NotifyPlaybackPaused();
+  UpdatePlayState();
 }
 
 bool WebMediaPlayerImpl::supportsSave() const {
@@ -409,8 +411,6 @@
 void WebMediaPlayerImpl::DoSeek(base::TimeDelta time, bool time_updated) {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
 
-  ended_ = false;
-
 #if defined(OS_ANDROID)  // WMPI_CAST
   if (isRemote()) {
     cast_impl_.seek(time);
@@ -444,17 +444,20 @@
     return;
   }
 
+  // TODO(sandersd): Ideally we would not clear the idle state if
+  // |pipeline_controller_| can elide the seek.
+  is_idle_ = false;
+  ended_ = false;
+
   seeking_ = true;
   seek_time_ = time;
   if (paused_)
     paused_time_ = time;
   pipeline_controller_.Seek(time, time_updated);
 
-  // Resume the pipeline if allowed so that the correct frame is displayed. We
-  // always call Resume() in case there is a pending suspend that should be
-  // aborted. If the pipeline is not suspended, Resume() will have no effect.
-  if (IsAutomaticResumeAllowed())
-    pipeline_controller_.Resume();
+  // This needs to be called after Seek() so that if a resume is triggered, it
+  // is to the correct time.
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::setRate(double rate) {
@@ -472,10 +475,6 @@
       rate = kMinRate;
     else if (rate > kMaxRate)
       rate = kMaxRate;
-    if (playback_rate_ == 0 && !paused_)
-      NotifyPlaybackStarted();
-  } else if (playback_rate_ != 0 && !paused_) {
-    NotifyPlaybackPaused();
   }
 
   playback_rate_ = rate;
@@ -573,6 +572,7 @@
   if (isRemote())
     return cast_impl_.paused();
 #endif
+
   return pipeline_.GetPlaybackRate() == 0.0f;
 }
 
@@ -896,18 +896,12 @@
 void WebMediaPlayerImpl::OnPipelineSuspended() {
 #if defined(OS_ANDROID)
   if (isRemote()) {
-    if (delegate_)
-      delegate_->PlayerGone(delegate_id_);
     scoped_refptr<VideoFrame> frame = cast_impl_.GetCastingBanner();
-    if (frame) {
+    if (frame)
       compositor_->PaintFrameUsingOldRenderingPath(frame);
-    }
   }
 #endif
 
-  memory_usage_reporting_timer_.Stop();
-  ReportMemoryUsage();
-
   // If we're not in an aggressive buffering state, tell the data source we have
   // enough data so that it may release the connection.
   if (buffering_strategy_ !=
@@ -916,20 +910,11 @@
       data_source_->OnBufferingHaveEnough(true);
   }
 
+  ReportMemoryUsage();
+
   if (pending_suspend_resume_cycle_) {
     pending_suspend_resume_cycle_ = false;
-    pipeline_controller_.Resume();
-    return;
-  }
-}
-
-void WebMediaPlayerImpl::OnPipelineResumed() {
-  if (playback_rate_ > 0 && !paused_) {
-    NotifyPlaybackStarted();
-  } else if (!playback_rate_ || paused_ || ended_) {
-    // Resend our paused notification so the pipeline is considered for idle
-    // resource reclamation; duplicate pause notifications are ignored.
-    NotifyPlaybackPaused();
+    UpdatePlayState();
   }
 }
 
@@ -943,6 +928,11 @@
 
   ended_ = true;
   client_->timeChanged();
+
+  // We don't actually want this to run until |client_| calls seek() or pause(),
+  // but that should have already happened in timeChanged() and so this is
+  // expected to be a no-op.
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnPipelineError(PipelineStatus error) {
@@ -953,11 +943,6 @@
   if (suppress_destruction_errors_)
     return;
 
-  // Release the delegate for player errors; this drops the media session and
-  // avoids idle suspension from ticking.
-  if (delegate_)
-    delegate_->PlayerGone(delegate_id_);
-
 #if defined(OS_ANDROID)
   // For 10% of pipeline decode failures log the playback URL. The URL is set
   // as the crash-key 'subresource_url' during DoLoad().
@@ -974,10 +959,11 @@
     // Any error that occurs before reaching ReadyStateHaveMetadata should
     // be considered a format error.
     SetNetworkState(WebMediaPlayer::NetworkStateFormatError);
-    return;
+  } else {
+    SetNetworkState(PipelineErrorToNetworkState(error));
   }
 
-  SetNetworkState(PipelineErrorToNetworkState(error));
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnPipelineMetadata(
@@ -1007,14 +993,7 @@
     client_->setWebLayer(video_weblayer_.get());
   }
 
-  // Tell the delegate we can now be safely suspended due to inactivity if a
-  // subsequent play event does not occur.
-  if (paused_)
-    NotifyPlaybackPaused();
-
-  // If the frame is hidden, it may be time to suspend playback.
-  if (delegate_ && delegate_->IsHidden())
-    OnHidden();
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnPipelineBufferingStateChanged(
@@ -1043,6 +1022,8 @@
   // Once we have enough, start reporting the total memory usage. We'll also
   // report once playback starts.
   ReportMemoryUsage();
+
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnDemuxerOpened() {
@@ -1076,86 +1057,32 @@
 
 void WebMediaPlayerImpl::OnHidden() {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
-  if (!IsSuspendUponHiddenEnabled())
-    return;
-
-#if defined(OS_ANDROID)  // WMPI_CAST
-  // If we're remote, the pipeline should already be suspended.
-  if (isRemote())
-    return;
-#endif
-
-  // Don't suspend before metadata is available, as we don't know if there is a
-  // video track yet.
-  if (ready_state_ < WebMediaPlayer::ReadyStateHaveMetadata)
-    return;
-
-  // Don't suspend players which only have audio and have not completed
-  // playback. The user can still control these players via the MediaSession UI.
-  // If the player has never started playback, OnSuspendRequested() will handle
-  // release of any idle resources.
-  if (!hasVideo() && !paused_ && !ended_)
-    return;
-
-  // Always reset the buffering strategy to normal when suspending for hidden to
-  // prevent an idle network connection from lingering.
-  setBufferingStrategy(WebMediaPlayer::BufferingStrategy::Normal);
-  pipeline_controller_.Suspend();
-  // If we're in the middle of a suspend/resume cycle we no longer want to
-  // resume when the suspend completes.
-  pending_suspend_resume_cycle_ = false;
-  if (delegate_)
-    delegate_->PlayerGone(delegate_id_);
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnShown() {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
-  if (!IsSuspendUponHiddenEnabled())
-    return;
-
-#if defined(OS_ANDROID)  // WMPI_CAST
-  // If we're remote, the pipeline should stay suspended.
-  if (isRemote())
-    return;
-#endif
-
-  // If we do not yet have metadata, the only way we could have been suspended
-  // is by a OnSuspendRequested() with |must_suspend| set. In that case we need
-  // to resume, otherwise playback will be broken.
-  //
-  // Otherwise, resume if we should be playing.
-  if (ready_state_ < WebMediaPlayer::ReadyStateHaveMetadata ||
-      (!ended_ && !paused_)) {
-    pipeline_controller_.Resume();
-  }
+  must_suspend_ = false;
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnSuspendRequested(bool must_suspend) {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
 
-#if defined(OS_ANDROID)  // WMPI_CAST
-  // If we're remote, the pipeline should already be suspended.
-  if (isRemote())
-    return;
-#endif
-
 #if defined(OS_MACOSX)
   // TODO(sandersd): Idle suspend is disabled on OSX since hardware decoded
   // frames are owned by the video decoder in the GPU process. A mechanism for
   // detaching ownership from the decoder is needed. http://crbug.com/595716.
   return;
-#else
-  // Suspend should never be requested unless required or we're already in an
-  // idle state (paused or ended).
-  DCHECK(must_suspend || paused_ || ended_);
-
-  // Always suspend, but only notify the delegate if we must; this allows any
-  // exposed UI for player controls to continue to function even though the
-  // player has now been suspended.
-  pipeline_controller_.Suspend();
-  if (must_suspend && delegate_)
-    delegate_->PlayerGone(delegate_id_);
 #endif
+
+  if (must_suspend) {
+    must_suspend_ = true;
+  } else {
+    is_idle_ = true;
+  }
+
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::OnPlay() {
@@ -1174,9 +1101,10 @@
 }
 
 void WebMediaPlayerImpl::ScheduleRestart() {
-  if (!pipeline_controller_.IsSuspended()) {
+  // TODO(watk): All restart logic should be moved into PipelineController.
+  if (pipeline_.IsRunning() && !pipeline_controller_.IsPipelineSuspended()) {
     pending_suspend_resume_cycle_ = true;
-    pipeline_controller_.Suspend();
+    UpdatePlayState();
   }
 }
 
@@ -1208,25 +1136,22 @@
 
 void WebMediaPlayerImpl::OnDisconnectedFromRemoteDevice(double t) {
   DoSeek(base::TimeDelta::FromSecondsD(t), false);
-  if (delegate_ && !delegate_->IsHidden())
-    pipeline_controller_.Resume();
 
   // We already told the delegate we're paused when remoting started.
   client_->playbackStateChanged();
   client_->disconnectedFromRemoteDevice();
+
+  UpdatePlayState();
 }
 
 void WebMediaPlayerImpl::SuspendForRemote() {
-  if (!pipeline_controller_.IsSuspended()) {
-    pipeline_controller_.Suspend();
-  } else {
-    // TODO(sandersd): If PipelineController::Suspend() called |suspended_cb|
-    // when already suspended, we wouldn't need this case.
+  if (pipeline_controller_.IsPipelineSuspended()) {
     scoped_refptr<VideoFrame> frame = cast_impl_.GetCastingBanner();
-    if (frame) {
+    if (frame)
       compositor_->PaintFrameUsingOldRenderingPath(frame);
-    }
   }
+
+  UpdatePlayState();
 }
 
 gfx::Size WebMediaPlayerImpl::GetCanvasSize() const {
@@ -1247,6 +1172,11 @@
 
   if (!success) {
     SetNetworkState(WebMediaPlayer::NetworkStateFormatError);
+
+    // Not really necessary, since the pipeline was never started, but it at
+    // least this makes sure that the error handling code is in sync.
+    UpdatePlayState();
+
     return;
   }
 
@@ -1374,6 +1304,8 @@
     SetNetworkState(WebMediaPlayer::NetworkStateLoaded);
 
   ready_state_ = state;
+  highest_ready_state_ = std::max(highest_ready_state_, ready_state_);
+
   // Always notify to ensure client has the latest value.
   client_->readyStateChanged();
 }
@@ -1394,6 +1326,8 @@
 }
 
 void WebMediaPlayerImpl::OnDurationChanged() {
+  // TODO(sandersd): We should call delegate_->DidPlay() with the new duration,
+  // especially if it changed from  <5s to >5s.
   if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing)
     return;
 
@@ -1456,50 +1390,149 @@
   return video_frame;
 }
 
-void WebMediaPlayerImpl::NotifyPlaybackStarted() {
+void WebMediaPlayerImpl::UpdatePlayState() {
 #if defined(OS_ANDROID)  // WMPI_CAST
-  // We do not tell our delegates about remote playback, because that would
-  // keep the device awake, which is not what we want.
-  if (isRemote())
-    return;
+  bool is_remote = isRemote();
+#else
+  bool is_remote = false;
 #endif
+  bool is_backgrounded =
+      IsBackgroundedSuspendEnabled() && delegate_ && delegate_->IsHidden();
+  PlayState state =
+      UpdatePlayState_ComputePlayState(is_remote, is_backgrounded);
+  SetDelegateState(state.delegate_state);
+  SetMemoryReportingState(state.is_memory_reporting_enabled);
+  SetSuspendState(state.is_suspended || pending_suspend_resume_cycle_);
+}
 
-  // NotifyPlaybackStarted() may be called by interactions while suspended,
-  // (play/pause in particular). Those actions won't have any effect until the
-  // pipeline is resumed.
-  // TODO(dalecurtis): Should these be dropped at the call sites instead?
-  // Alternatively, rename this method to include Maybe or Changed, and handle
-  // multiple calls safely.
-  if (pipeline_controller_.IsSuspended())
+void WebMediaPlayerImpl::SetDelegateState(DelegateState new_state) {
+  if (!delegate_ || delegate_state_ == new_state)
     return;
 
-  if (delegate_) {
-    delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(), false,
-                       pipeline_.GetMediaDuration());
-  }
-  if (!memory_usage_reporting_timer_.IsRunning()) {
-    memory_usage_reporting_timer_.Start(FROM_HERE,
-                                        base::TimeDelta::FromSeconds(2), this,
-                                        &WebMediaPlayerImpl::ReportMemoryUsage);
+  delegate_state_ = new_state;
+
+  switch (delegate_state_) {
+    case DelegateState::GONE:
+      delegate_->PlayerGone(delegate_id_);
+      break;
+    case DelegateState::PLAYING:
+      delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(), false,
+                         pipeline_.GetMediaDuration());
+      break;
+    case DelegateState::PAUSED:
+      delegate_->DidPause(delegate_id_, false);
+      break;
+    case DelegateState::ENDED:
+      delegate_->DidPause(delegate_id_, true);
+      break;
   }
 }
 
-void WebMediaPlayerImpl::NotifyPlaybackPaused() {
-#if defined(OS_ANDROID)  // WMPI_CAST
-  if (isRemote())
+void WebMediaPlayerImpl::SetMemoryReportingState(
+    bool is_memory_reporting_enabled) {
+  if (memory_usage_reporting_timer_.IsRunning() ==
+      is_memory_reporting_enabled) {
     return;
-#endif
+  }
 
-  // Same as above, NotifyPlaybackPaused() may be called by interactions while
-  // suspended, but those actions won't have any effect until the pipeline is
-  // resumed.
-  if (pipeline_controller_.IsSuspended())
+  if (is_memory_reporting_enabled) {
+    memory_usage_reporting_timer_.Start(FROM_HERE,
+                                        base::TimeDelta::FromSeconds(2), this,
+                                        &WebMediaPlayerImpl::ReportMemoryUsage);
+  } else {
+    memory_usage_reporting_timer_.Stop();
+    ReportMemoryUsage();
+  }
+}
+
+void WebMediaPlayerImpl::SetSuspendState(bool is_suspended) {
+  // Do not change the state after an error has occurred.
+  // TODO(sandersd): Update PipelineController to remove the need for this.
+  if (IsNetworkStateError(network_state_))
     return;
 
-  if (delegate_)
-    delegate_->DidPause(delegate_id_, ended_);
-  memory_usage_reporting_timer_.Stop();
-  ReportMemoryUsage();
+  if (is_suspended) {
+    pipeline_controller_.Suspend();
+  } else {
+    pipeline_controller_.Resume();
+  }
+}
+
+WebMediaPlayerImpl::PlayState
+WebMediaPlayerImpl::UpdatePlayState_ComputePlayState(bool is_remote,
+                                                     bool is_backgrounded) {
+  PlayState result;
+
+  // This includes both data source (before pipeline startup) and pipeline
+  // errors.
+  bool has_error = IsNetworkStateError(network_state_);
+
+  // After HaveMetadata, we know which tracks are present and the duration.
+  bool have_metadata = ready_state_ >= WebMediaPlayer::ReadyStateHaveMetadata;
+
+  // After HaveFutureData, Blink will call play() if the state is not paused.
+  bool have_future_data =
+      highest_ready_state_ >= WebMediaPlayer::ReadyStateHaveFutureData;
+
+  // Background suspend is not enabled for audio-only players.
+  bool background_suspended = is_backgrounded && have_metadata && hasVideo();
+
+  // Idle suspend is enabled once there is future data. We don't want to idle
+  // suspend before that because play() may never be triggered to leave the idle
+  // state. There could be other theoretical problems if the page is waiting for
+  // other events before actually calling play(), but at least we don't break
+  // Blink.
+  //
+  // TODO(sandersd): Make the delegate suspend idle players immediately when
+  // hidden.
+  // TODO(sandersd): If Blink told us the paused state sooner, we could
+  // idle suspend sooner.
+  bool idle_suspended = is_idle_ && have_future_data;
+
+  // Combined suspend state.
+  result.is_suspended =
+      is_remote || must_suspend_ || idle_suspended || background_suspended;
+
+  // We do not treat |playback_rate_| == 0 as paused. For the media session,
+  // being paused implies displaying a play button, which is incorrect in this
+  // case. For memory usage reporting, we just use the same definition (but we
+  // don't have to).
+  //
+  // Similarly, we don't consider |ended_| to be paused. Blink will immediately
+  // call pause() or seek(), so |ended_| should not affect the computation.
+  // Despite that, |ended_| does result in a separate paused state, to simplfy
+  // the contract for SetDelegateState().
+  //
+  // |has_session| is used to decide when to create a media session. Idle
+  // suspension does not destroy the media session, because we expect that the
+  // notification controls (and audio focus) remain. We also require:
+  //   - |have_metadata|, since the tracks and duration are passed to DidPlay().
+  //   - |have_future_data|, since we need to know whether we are paused to
+  //     correctly configure the session.
+  //
+  // TODO(sandersd): If Blink told us the paused state sooner, we could create
+  // the media session sooner.
+  bool can_play = !has_error && !is_remote && have_future_data;
+  bool has_session = can_play && !must_suspend_ && !background_suspended;
+
+  if (!has_session) {
+    result.delegate_state = DelegateState::GONE;
+  } else if (paused_) {
+    // TODO(sandersd): There should be a paused+seeking state, during which
+    // the idle timer is disabled. Without that, idle suspending before or
+    // during seeking will have bad results.
+    result.delegate_state =
+        ended_ ? DelegateState::ENDED : DelegateState::PAUSED;
+  } else {
+    result.delegate_state = DelegateState::PLAYING;
+  }
+
+  // It's not  critical if some cases where memory usage can change are missed,
+  // since media memory changes are usually gradual.
+  result.is_memory_reporting_enabled =
+      can_play && !result.is_suspended && !paused_;
+
+  return result;
 }
 
 void WebMediaPlayerImpl::ReportMemoryUsage() {
@@ -1542,13 +1575,4 @@
   adjust_allocated_memory_cb_.Run(delta);
 }
 
-bool WebMediaPlayerImpl::IsAutomaticResumeAllowed() {
-#if defined(OS_ANDROID)
-  return !hasVideo() || (delegate_ && !delegate_->IsHidden());
-#else
-  // On non-Android platforms Resume() is always allowed.
-  return true;
-#endif
-}
-
 }  // namespace media
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
index eb8d2572..06bd1d2 100644
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -199,9 +199,28 @@
   // TODO(hubbe): WMPI_CAST make private.
   void OnPipelineSeeked(bool time_updated);
 
+  // Distinct states that |delegate_| can be in.
+  // TODO(sandersd): This should move into WebMediaPlayerDelegate.
+  // (Public for testing.)
+  enum class DelegateState {
+    GONE,
+    PLAYING,
+    PAUSED,
+    ENDED,
+  };
+
+  // Playback state variables computed together in UpdatePlayState().
+  // (Public for testing.)
+  struct PlayState {
+    DelegateState delegate_state;
+    bool is_memory_reporting_enabled;
+    bool is_suspended;
+  };
+
  private:
+  friend class WebMediaPlayerImplTest;
+
   void OnPipelineSuspended();
-  void OnPipelineResumed();
   void OnPipelineEnded();
   void OnPipelineError(PipelineStatus error);
   void OnPipelineMetadata(PipelineMetadata metadata);
@@ -278,10 +297,28 @@
   // Called when a CDM has been attached to the |pipeline_|.
   void OnCdmAttached(bool success);
 
-  // Notifies |delegate_| that playback has started or was paused; also starts
-  // or stops the memory usage reporting timer respectively.
-  void NotifyPlaybackStarted();
-  void NotifyPlaybackPaused();
+  // Inspects the current playback state and:
+  //   - notifies |delegate_|,
+  //   - toggles the memory usage reporting timer, and
+  //   - toggles suspend/resume as necessary.
+  //
+  // This method should be called any time its dependent values change. These
+  // are:
+  //   - isRemote(),
+  //   - hasVideo(),
+  //   - delegate_->IsHidden(),
+  //   - network_state_, ready_state_,
+  //   - is_idle_, must_suspend_,
+  //   - paused_, ended_,
+  //   - pending_suspend_resume_cycle_.
+  void UpdatePlayState();
+
+  // Methods internal to UpdatePlayState().
+  PlayState UpdatePlayState_ComputePlayState(bool is_remote,
+                                             bool is_backgrounded);
+  void SetDelegateState(DelegateState new_state);
+  void SetMemoryReportingState(bool is_memory_reporting_enabled);
+  void SetSuspendState(bool is_suspended);
 
   // Called at low frequency to tell external observers how much memory we're
   // using for video playback.  Called by |memory_usage_reporting_timer_|.
@@ -290,14 +327,21 @@
   void ReportMemoryUsage();
   void FinishMemoryUsageReport(int64_t demuxer_memory_usage);
 
-  // Indicates if automatic resumption of a suspended playback is allowed.
-  bool IsAutomaticResumeAllowed();
-
   blink::WebLocalFrame* frame_;
 
-  // TODO(hclam): get rid of these members and read from the pipeline directly.
+  // The playback state last reported to |delegate_|, to avoid setting duplicate
+  // states. (Which can have undesired effects like resetting the idle timer.)
+  DelegateState delegate_state_;
+
+  // Set when OnSuspendRequested() is called with |must_suspend| unset.
+  bool is_idle_;
+
+  // Set when OnSuspendRequested() is called with |must_suspend| set.
+  bool must_suspend_;
+
   blink::WebMediaPlayer::NetworkState network_state_;
   blink::WebMediaPlayer::ReadyState ready_state_;
+  blink::WebMediaPlayer::ReadyState highest_ready_state_;
 
   // Preload state for when |data_source_| is created after setPreload().
   BufferedDataSource::Preload preload_;
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
index 10c74c86..d661824 100644
--- a/media/blink/webmediaplayer_impl_unittest.cc
+++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -125,6 +125,45 @@
   }
 
  protected:
+  void SetReadyState(blink::WebMediaPlayer::ReadyState state) {
+    wmpi_->SetReadyState(state);
+  }
+
+  void SetPaused(bool is_paused) { wmpi_->paused_ = is_paused; }
+
+  void SetEnded(bool is_ended) { wmpi_->ended_ = is_ended; }
+
+  void SetMetadata(bool has_audio, bool has_video) {
+    wmpi_->SetNetworkState(blink::WebMediaPlayer::NetworkStateLoaded);
+    wmpi_->SetReadyState(blink::WebMediaPlayer::ReadyStateHaveMetadata);
+    wmpi_->pipeline_metadata_.has_audio = has_audio;
+    wmpi_->pipeline_metadata_.has_video = has_video;
+  }
+
+  WebMediaPlayerImpl::PlayState ComputePlayState() {
+    wmpi_->is_idle_ = false;
+    wmpi_->must_suspend_ = false;
+    return wmpi_->UpdatePlayState_ComputePlayState(false, false);
+  }
+
+  WebMediaPlayerImpl::PlayState ComputeBackgroundedPlayState() {
+    wmpi_->is_idle_ = false;
+    wmpi_->must_suspend_ = false;
+    return wmpi_->UpdatePlayState_ComputePlayState(false, true);
+  }
+
+  WebMediaPlayerImpl::PlayState ComputeIdlePlayState() {
+    wmpi_->is_idle_ = true;
+    wmpi_->must_suspend_ = false;
+    return wmpi_->UpdatePlayState_ComputePlayState(false, false);
+  }
+
+  WebMediaPlayerImpl::PlayState ComputeMustSuspendPlayState() {
+    wmpi_->is_idle_ = false;
+    wmpi_->must_suspend_ = true;
+    return wmpi_->UpdatePlayState_ComputePlayState(false, false);
+  }
+
   // "Renderer" thread.
   base::MessageLoop message_loop_;
 
@@ -157,4 +196,154 @@
 
 TEST_F(WebMediaPlayerImplTest, ConstructAndDestroy) {}
 
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterConstruction) {
+  WebMediaPlayerImpl::PlayState state;
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, true);
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata_AudioOnly) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, false);
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  // Background suspend is not enabled for audio-only.
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterFutureData) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, true);
+  SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PAUSED, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+
+  // Idle suspension is possible after HaveFutureData.
+  state = ComputeIdlePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PAUSED, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, true);
+  SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
+  SetPaused(false);
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PLAYING, state.delegate_state);
+  EXPECT_TRUE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing_AudioOnly) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, false);
+  SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
+  SetPaused(false);
+
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PLAYING, state.delegate_state);
+  EXPECT_TRUE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  // Audio-only stays playing in the background.
+  state = ComputeBackgroundedPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PLAYING, state.delegate_state);
+  EXPECT_TRUE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeMustSuspendPlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
+TEST_F(WebMediaPlayerImplTest, ComputePlayState_Ended) {
+  WebMediaPlayerImpl::PlayState state;
+  SetMetadata(true, true);
+  SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
+  SetEnded(true);
+
+  // The pipeline is not suspended immediately on ended.
+  state = ComputePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_FALSE(state.is_suspended);
+
+  state = ComputeIdlePlayState();
+  EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state);
+  EXPECT_FALSE(state.is_memory_reporting_enabled);
+  EXPECT_TRUE(state.is_suspended);
+}
+
 }  // namespace media
diff --git a/media/cast/BUILD.gn b/media/cast/BUILD.gn
index ff33b9e..27a480e 100644
--- a/media/cast/BUILD.gn
+++ b/media/cast/BUILD.gn
@@ -70,12 +70,12 @@
 
 source_set("net") {
   sources = [
+    "net/cast_transport.h",
     "net/cast_transport_config.cc",
     "net/cast_transport_config.h",
     "net/cast_transport_defines.h",
-    "net/cast_transport_sender.h",
-    "net/cast_transport_sender_impl.cc",
-    "net/cast_transport_sender_impl.h",
+    "net/cast_transport_impl.cc",
+    "net/cast_transport_impl.h",
     "net/pacing/paced_sender.cc",
     "net/pacing/paced_sender.h",
     "net/rtcp/receiver_rtcp_event_subscriber.cc",
@@ -307,10 +307,10 @@
     "logging/serialize_deserialize_test.cc",
     "logging/simple_event_subscriber_unittest.cc",
     "logging/stats_event_subscriber_unittest.cc",
-    "net/cast_transport_sender_impl_unittest.cc",
+    "net/cast_transport_impl_unittest.cc",
     "net/frame_id_wrap_helper_test.cc",
-    "net/mock_cast_transport_sender.cc",
-    "net/mock_cast_transport_sender.h",
+    "net/mock_cast_transport.cc",
+    "net/mock_cast_transport.h",
     "net/pacing/mock_paced_packet_sender.cc",
     "net/pacing/mock_paced_packet_sender.h",
     "net/pacing/paced_sender_unittest.cc",
diff --git a/media/cast/cast.gyp b/media/cast/cast.gyp
index b571c68..1f9518e 100644
--- a/media/cast/cast.gyp
+++ b/media/cast/cast.gyp
@@ -180,8 +180,8 @@
         'sender/video_sender.h',
         'sender/vp8_encoder.cc',
         'sender/vp8_encoder.h',
-        'sender/vp8_quantizer_parser.h',
         'sender/vp8_quantizer_parser.cc',
+        'sender/vp8_quantizer_parser.h',
       ], # sources
       'conditions': [
         # use a restricted subset of media and no software codecs on iOS
@@ -200,7 +200,7 @@
             'sender/vp8_encoder.cc',
             'sender/vp8_encoder.h',
             'sender/vp8_quantizer_parser.cc',
-	    'sender/vp8_quantizer_parser.h',
+            'sender/vp8_quantizer_parser.h',
           ],
         }], # OS=="ios"
         # iOS and OS X encoders
@@ -231,17 +231,15 @@
         '<(DEPTH)/net/net.gyp:net',
       ],
       'sources': [
+        'net/cast_transport.h',
         'net/cast_transport_config.cc',
         'net/cast_transport_config.h',
         'net/cast_transport_defines.h',
-        'net/cast_transport_sender.h',
-        'net/cast_transport_sender_impl.cc',
-        'net/cast_transport_sender_impl.h',
+        'net/cast_transport_impl.cc',
+        'net/cast_transport_impl.h',
         'net/pacing/paced_sender.cc',
         'net/pacing/paced_sender.h',
         'net/rtcp/receiver_rtcp_event_subscriber.cc',
-        'net/rtcp/sender_rtcp_session.cc',
-        'net/rtcp/sender_rtcp_session.h',
         'net/rtcp/receiver_rtcp_session.cc',
         'net/rtcp/receiver_rtcp_session.h',
         'net/rtcp/rtcp_builder.cc',
@@ -250,6 +248,8 @@
         'net/rtcp/rtcp_defines.h',
         'net/rtcp/rtcp_utility.cc',
         'net/rtcp/rtcp_utility.h',
+        'net/rtcp/sender_rtcp_session.cc',
+        'net/rtcp/sender_rtcp_session.h',
         'net/rtp/packet_storage.cc',
         'net/rtp/packet_storage.h',
         'net/rtp/rtp_defines.cc',
diff --git a/media/cast/cast_receiver.h b/media/cast/cast_receiver.h
index 2b827d7..b82456a0 100644
--- a/media/cast/cast_receiver.h
+++ b/media/cast/cast_receiver.h
@@ -15,15 +15,13 @@
 #include "media/base/audio_bus.h"
 #include "media/cast/cast_config.h"
 #include "media/cast/cast_environment.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 
 namespace media {
 class VideoFrame;
 
 namespace cast {
 
-class PacketSender;
-
 // The following callbacks are used to deliver decoded audio/video frame data,
 // the frame's corresponding play-out time, and a continuity flag.
 // |is_continuous| will be false to indicate the loss of data due to a loss of
@@ -51,7 +49,7 @@
       scoped_refptr<CastEnvironment> cast_environment,
       const FrameReceiverConfig& audio_config,
       const FrameReceiverConfig& video_config,
-      CastTransportSender* const transport);
+      CastTransport* const transport);
 
   // All received RTP and RTCP packets for the call should be sent to this
   // PacketReceiver.  Can be called from any thread.
diff --git a/media/cast/cast_sender.h b/media/cast/cast_sender.h
index c35664e..a2c5069 100644
--- a/media/cast/cast_sender.h
+++ b/media/cast/cast_sender.h
@@ -19,7 +19,7 @@
 #include "media/cast/cast_config.h"
 #include "media/cast/cast_environment.h"
 #include "media/cast/constants.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 
 namespace gfx {
 class Size;
@@ -85,12 +85,12 @@
 using StatusChangeCallback = base::Callback<void(OperationalStatus)>;
 
 // All methods of CastSender must be called on the main thread.
-// Provided CastTransportSender will also be called on the main thread.
+// Provided CastTransport will also be called on the main thread.
 class CastSender {
  public:
   static scoped_ptr<CastSender> Create(
       scoped_refptr<CastEnvironment> cast_environment,
-      CastTransportSender* const transport_sender);
+      CastTransport* const transport_sender);
 
   virtual ~CastSender() {}
 
diff --git a/media/cast/cast_sender_impl.cc b/media/cast/cast_sender_impl.cc
index b81fecf..1377fc1 100644
--- a/media/cast/cast_sender_impl.cc
+++ b/media/cast/cast_sender_impl.cc
@@ -93,15 +93,14 @@
 
 scoped_ptr<CastSender> CastSender::Create(
     scoped_refptr<CastEnvironment> cast_environment,
-    CastTransportSender* const transport_sender) {
+    CastTransport* const transport_sender) {
   CHECK(cast_environment.get());
   return scoped_ptr<CastSender>(
       new CastSenderImpl(cast_environment, transport_sender));
 }
 
-CastSenderImpl::CastSenderImpl(
-    scoped_refptr<CastEnvironment> cast_environment,
-    CastTransportSender* const transport_sender)
+CastSenderImpl::CastSenderImpl(scoped_refptr<CastEnvironment> cast_environment,
+                               CastTransport* const transport_sender)
     : cast_environment_(cast_environment),
       transport_sender_(transport_sender),
       weak_factory_(this) {
diff --git a/media/cast/cast_sender_impl.h b/media/cast/cast_sender_impl.h
index f43bcd6..23ad0460 100644
--- a/media/cast/cast_sender_impl.h
+++ b/media/cast/cast_sender_impl.h
@@ -24,7 +24,7 @@
 class CastSenderImpl : public CastSender {
  public:
   CastSenderImpl(scoped_refptr<CastEnvironment> cast_environment,
-                 CastTransportSender* const transport_sender);
+                 CastTransport* const transport_sender);
 
   void InitializeAudio(const AudioSenderConfig& audio_config,
                        const StatusChangeCallback& status_change_cb) final;
@@ -56,7 +56,7 @@
   scoped_refptr<CastEnvironment> cast_environment_;
   // The transport sender is owned by the owner of the CastSender, and should be
   // valid throughout the lifetime of the CastSender.
-  CastTransportSender* const transport_sender_;
+  CastTransport* const transport_sender_;
 
   // NOTE: Weak pointers must be invalidated before all other member variables.
   base::WeakPtrFactory<CastSenderImpl> weak_factory_;
diff --git a/media/cast/cast_testing.gypi b/media/cast/cast_testing.gypi
index 404717a..4c27276 100644
--- a/media/cast/cast_testing.gypi
+++ b/media/cast/cast_testing.gypi
@@ -94,10 +94,10 @@
         'logging/serialize_deserialize_test.cc',
         'logging/simple_event_subscriber_unittest.cc',
         'logging/stats_event_subscriber_unittest.cc',
-        'net/cast_transport_sender_impl_unittest.cc',
+        'net/cast_transport_impl_unittest.cc',
         'net/frame_id_wrap_helper_test.cc',
-        'net/mock_cast_transport_sender.cc',
-        'net/mock_cast_transport_sender.h',
+        'net/mock_cast_transport.cc',
+        'net/mock_cast_transport.h',
         'net/pacing/mock_paced_packet_sender.cc',
         'net/pacing/mock_paced_packet_sender.h',
         'net/pacing/paced_sender_unittest.cc',
diff --git a/media/cast/net/cast_transport_sender.h b/media/cast/net/cast_transport.h
similarity index 88%
rename from media/cast/net/cast_transport_sender.h
rename to media/cast/net/cast_transport.h
index cad68d4..953d61cd 100644
--- a/media/cast/net/cast_transport_sender.h
+++ b/media/cast/net/cast_transport.h
@@ -6,17 +6,17 @@
 // frames (both audio and video), encrypts their encoded data, packetizes them
 // and feeds them into a transport (e.g., UDP).
 
-// Construction of the Cast Sender and the Cast Transport Sender should be done
+// Construction of the Cast Sender and the Cast Transport should be done
 // in the following order:
-// 1. Create CastTransportSender.
-// 2. Create CastSender (accepts CastTransportSender as an input).
+// 1. Create CastTransport.
+// 2. Create CastSender (accepts CastTransport as an input).
 
-// Destruction: The CastTransportSender is assumed to be valid as long as the
+// Destruction: The CastTransport is assumed to be valid as long as the
 // CastSender is alive. Therefore the CastSender should be destructed before the
-// CastTransportSender.
+// CastTransport.
 
-#ifndef MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_H_
-#define MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_H_
+#ifndef MEDIA_CAST_NET_CAST_TRANSPORT_H_
+#define MEDIA_CAST_NET_CAST_TRANSPORT_H_
 
 #include <stdint.h>
 
@@ -56,13 +56,11 @@
                             scoped_ptr<std::vector<PacketEvent>>)>
     BulkRawEventsCallback;
 
-// TODO(xjz): Rename CastTransportSender as it also deals with receiving
-// packets. http://crbug.com/589157.
 // The application should only trigger this class from the transport thread.
-class CastTransportSender : public base::NonThreadSafe {
+class CastTransport : public base::NonThreadSafe {
  public:
   // Interface used for receiving status updates, raw events, and RTP packets
-  // from CastTransportSender.
+  // from CastTransport.
   class Client {
    public:
     virtual ~Client(){};
@@ -72,7 +70,7 @@
 
     // Raw events will be invoked on this callback periodically, according to
     // the configured logging flush interval passed to
-    // CastTransportSender::Create().
+    // CastTransport::Create().
     virtual void OnLoggingEventsReceived(
         scoped_ptr<std::vector<FrameEvent>> frame_events,
         scoped_ptr<std::vector<PacketEvent>> packet_events) = 0;
@@ -81,14 +79,14 @@
     virtual void ProcessRtpPacket(scoped_ptr<Packet> packet) = 0;
   };
 
-  static scoped_ptr<CastTransportSender> Create(
+  static scoped_ptr<CastTransport> Create(
       base::TickClock* clock,  // Owned by the caller.
       base::TimeDelta logging_flush_interval,
       scoped_ptr<Client> client,
-      scoped_ptr<PacketSender> transport,
+      scoped_ptr<PacketTransport> transport,
       const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner);
 
-  virtual ~CastTransportSender() {}
+  virtual ~CastTransport() {}
 
   // Audio/Video initialization.
   // Encoded frames cannot be transmitted until the relevant initialize method
@@ -163,4 +161,4 @@
 }  // namespace cast
 }  // namespace media
 
-#endif  // MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_H_
+#endif  // MEDIA_CAST_NET_CAST_TRANSPORT_H_
diff --git a/media/cast/net/cast_transport_config.h b/media/cast/net/cast_transport_config.h
index a1a5323..0401851 100644
--- a/media/cast/net/cast_transport_config.h
+++ b/media/cast/net/cast_transport_config.h
@@ -127,9 +127,7 @@
 typedef base::Callback<bool(scoped_ptr<Packet> packet)>
     PacketReceiverCallbackWithStatus;
 
-// TODO(xjz): Rename PacketSender as it also deals with receiving packets.
-// http://crbug.com/589157.
-class PacketSender {
+class PacketTransport {
  public:
   // Send a packet to the network. Returns false if the network is blocked
   // and we should wait for |cb| to be called. It is not allowed to called
@@ -148,7 +146,7 @@
   // Stop receiving packets.
   virtual void StopReceiving() = 0;
 
-  virtual ~PacketSender() {}
+  virtual ~PacketTransport() {}
 };
 
 struct RtcpSenderInfo {
diff --git a/media/cast/net/cast_transport_sender_impl.cc b/media/cast/net/cast_transport_impl.cc
similarity index 80%
rename from media/cast/net/cast_transport_sender_impl.cc
rename to media/cast/net/cast_transport_impl.cc
index 40e97b0..739dc3f 100644
--- a/media/cast/net/cast_transport_sender_impl.cc
+++ b/media/cast/net/cast_transport_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 
 #include <stddef.h>
 #include <algorithm>
@@ -41,26 +41,26 @@
 
 }  // namespace
 
-scoped_ptr<CastTransportSender> CastTransportSender::Create(
+scoped_ptr<CastTransport> CastTransport::Create(
     base::TickClock* clock,  // Owned by the caller.
     base::TimeDelta logging_flush_interval,
     scoped_ptr<Client> client,
-    scoped_ptr<PacketSender> transport,
+    scoped_ptr<PacketTransport> transport,
     const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
-  return scoped_ptr<CastTransportSender>(new CastTransportSenderImpl(
-      clock, logging_flush_interval, std::move(client), std::move(transport),
-      transport_task_runner.get()));
+  return scoped_ptr<CastTransport>(
+      new CastTransportImpl(clock, logging_flush_interval, std::move(client),
+                            std::move(transport), transport_task_runner.get()));
 }
 
-PacketReceiverCallback CastTransportSender::PacketReceiverForTesting() {
+PacketReceiverCallback CastTransport::PacketReceiverForTesting() {
   return PacketReceiverCallback();
 }
 
-CastTransportSenderImpl::CastTransportSenderImpl(
+CastTransportImpl::CastTransportImpl(
     base::TickClock* clock,
     base::TimeDelta logging_flush_interval,
     scoped_ptr<Client> client,
-    scoped_ptr<PacketSender> transport,
+    scoped_ptr<PacketTransport> transport,
     const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner)
     : clock_(clock),
       logging_flush_interval_(logging_flush_interval),
@@ -82,19 +82,19 @@
   DCHECK(transport_task_runner_);
   if (logging_flush_interval_ > base::TimeDelta()) {
     transport_task_runner_->PostDelayedTask(
-        FROM_HERE, base::Bind(&CastTransportSenderImpl::SendRawEvents,
+        FROM_HERE, base::Bind(&CastTransportImpl::SendRawEvents,
                               weak_factory_.GetWeakPtr()),
         logging_flush_interval_);
   }
-  transport_->StartReceiving(base::Bind(
-      &CastTransportSenderImpl::OnReceivedPacket, base::Unretained(this)));
+  transport_->StartReceiving(
+      base::Bind(&CastTransportImpl::OnReceivedPacket, base::Unretained(this)));
 }
 
-CastTransportSenderImpl::~CastTransportSenderImpl() {
+CastTransportImpl::~CastTransportImpl() {
   transport_->StopReceiving();
 }
 
-void CastTransportSenderImpl::InitializeAudio(
+void CastTransportImpl::InitializeAudio(
     const CastTransportRtpConfig& config,
     const RtcpCastMessageCallback& cast_message_cb,
     const RtcpRttCallback& rtt_cb,
@@ -119,9 +119,9 @@
   }
 
   audio_rtcp_session_.reset(new SenderRtcpSession(
-      base::Bind(&CastTransportSenderImpl::OnReceivedCastMessage,
+      base::Bind(&CastTransportImpl::OnReceivedCastMessage,
                  weak_factory_.GetWeakPtr(), config.ssrc, cast_message_cb),
-      rtt_cb, base::Bind(&CastTransportSenderImpl::OnReceivedLogMessage,
+      rtt_cb, base::Bind(&CastTransportImpl::OnReceivedLogMessage,
                          weak_factory_.GetWeakPtr(), AUDIO_EVENT),
       pli_cb, clock_, &pacer_, config.ssrc, config.feedback_ssrc));
   pacer_.RegisterAudioSsrc(config.ssrc);
@@ -129,7 +129,7 @@
   transport_client_->OnStatusChanged(TRANSPORT_AUDIO_INITIALIZED);
 }
 
-void CastTransportSenderImpl::InitializeVideo(
+void CastTransportImpl::InitializeVideo(
     const CastTransportRtpConfig& config,
     const RtcpCastMessageCallback& cast_message_cb,
     const RtcpRttCallback& rtt_cb,
@@ -149,9 +149,9 @@
   }
 
   video_rtcp_session_.reset(new SenderRtcpSession(
-      base::Bind(&CastTransportSenderImpl::OnReceivedCastMessage,
+      base::Bind(&CastTransportImpl::OnReceivedCastMessage,
                  weak_factory_.GetWeakPtr(), config.ssrc, cast_message_cb),
-      rtt_cb, base::Bind(&CastTransportSenderImpl::OnReceivedLogMessage,
+      rtt_cb, base::Bind(&CastTransportImpl::OnReceivedLogMessage,
                          weak_factory_.GetWeakPtr(), VIDEO_EVENT),
       pli_cb, clock_, &pacer_, config.ssrc, config.feedback_ssrc));
   pacer_.RegisterVideoSsrc(config.ssrc);
@@ -180,8 +180,7 @@
 }
 }  // namespace
 
-void CastTransportSenderImpl::InsertFrame(uint32_t ssrc,
-                                          const EncodedFrame& frame) {
+void CastTransportImpl::InsertFrame(uint32_t ssrc, const EncodedFrame& frame) {
   if (audio_sender_ && ssrc == audio_sender_->ssrc()) {
     EncryptAndSendFrame(frame, &audio_encryptor_, audio_sender_.get());
   } else if (video_sender_ && ssrc == video_sender_->ssrc()) {
@@ -191,7 +190,7 @@
   }
 }
 
-void CastTransportSenderImpl::SendSenderReport(
+void CastTransportImpl::SendSenderReport(
     uint32_t ssrc,
     base::TimeTicks current_time,
     RtpTimeTicks current_time_as_rtp_timestamp) {
@@ -208,7 +207,7 @@
   }
 }
 
-void CastTransportSenderImpl::CancelSendingFrames(
+void CastTransportImpl::CancelSendingFrames(
     uint32_t ssrc,
     const std::vector<uint32_t>& frame_ids) {
   if (audio_sender_ && ssrc == audio_sender_->ssrc()) {
@@ -220,48 +219,43 @@
   }
 }
 
-void CastTransportSenderImpl::ResendFrameForKickstart(uint32_t ssrc,
-                                                      uint32_t frame_id) {
+void CastTransportImpl::ResendFrameForKickstart(uint32_t ssrc,
+                                                uint32_t frame_id) {
   if (audio_sender_ && ssrc == audio_sender_->ssrc()) {
     DCHECK(audio_rtcp_session_);
     audio_sender_->ResendFrameForKickstart(
-        frame_id,
-        audio_rtcp_session_->current_round_trip_time());
+        frame_id, audio_rtcp_session_->current_round_trip_time());
   } else if (video_sender_ && ssrc == video_sender_->ssrc()) {
     DCHECK(video_rtcp_session_);
     video_sender_->ResendFrameForKickstart(
-        frame_id,
-        video_rtcp_session_->current_round_trip_time());
+        frame_id, video_rtcp_session_->current_round_trip_time());
   } else {
     NOTREACHED() << "Invalid request for kickstart.";
   }
 }
 
-void CastTransportSenderImpl::ResendPackets(
+void CastTransportImpl::ResendPackets(
     uint32_t ssrc,
     const MissingFramesAndPacketsMap& missing_packets,
     bool cancel_rtx_if_not_in_list,
     const DedupInfo& dedup_info) {
   if (audio_sender_ && ssrc == audio_sender_->ssrc()) {
-    audio_sender_->ResendPackets(missing_packets,
-                                 cancel_rtx_if_not_in_list,
+    audio_sender_->ResendPackets(missing_packets, cancel_rtx_if_not_in_list,
                                  dedup_info);
   } else if (video_sender_ && ssrc == video_sender_->ssrc()) {
-    video_sender_->ResendPackets(missing_packets,
-                                 cancel_rtx_if_not_in_list,
+    video_sender_->ResendPackets(missing_packets, cancel_rtx_if_not_in_list,
                                  dedup_info);
   } else {
     NOTREACHED() << "Invalid request for retransmission.";
   }
 }
 
-PacketReceiverCallback CastTransportSenderImpl::PacketReceiverForTesting() {
-  return base::Bind(
-      base::IgnoreResult(&CastTransportSenderImpl::OnReceivedPacket),
-      weak_factory_.GetWeakPtr());
+PacketReceiverCallback CastTransportImpl::PacketReceiverForTesting() {
+  return base::Bind(base::IgnoreResult(&CastTransportImpl::OnReceivedPacket),
+                    weak_factory_.GetWeakPtr());
 }
 
-void CastTransportSenderImpl::SendRawEvents() {
+void CastTransportImpl::SendRawEvents() {
   DCHECK(logging_flush_interval_ > base::TimeDelta());
 
   if (!recent_frame_events_.empty() || !recent_packet_events_.empty()) {
@@ -276,12 +270,12 @@
   }
 
   transport_task_runner_->PostDelayedTask(
-      FROM_HERE, base::Bind(&CastTransportSenderImpl::SendRawEvents,
-                            weak_factory_.GetWeakPtr()),
+      FROM_HERE,
+      base::Bind(&CastTransportImpl::SendRawEvents, weak_factory_.GetWeakPtr()),
       logging_flush_interval_);
 }
 
-bool CastTransportSenderImpl::OnReceivedPacket(scoped_ptr<Packet> packet) {
+bool CastTransportImpl::OnReceivedPacket(scoped_ptr<Packet> packet) {
   const uint8_t* const data = &packet->front();
   const size_t length = packet->size();
   uint32_t ssrc;
@@ -308,7 +302,7 @@
   return true;
 }
 
-void CastTransportSenderImpl::OnReceivedLogMessage(
+void CastTransportImpl::OnReceivedLogMessage(
     EventMediaType media_type,
     const RtcpReceiverLogMessage& log) {
   if (logging_flush_interval_ <= base::TimeDelta())
@@ -351,7 +345,7 @@
   }
 }
 
-void CastTransportSenderImpl::OnReceivedCastMessage(
+void CastTransportImpl::OnReceivedCastMessage(
     uint32_t ssrc,
     const RtcpCastMessageCallback& cast_message_cb,
     const RtcpCastMessage& cast_message) {
@@ -391,13 +385,13 @@
   }
 }
 
-void CastTransportSenderImpl::AddValidRtpReceiver(uint32_t rtp_sender_ssrc,
-                                                  uint32_t rtp_receiver_ssrc) {
+void CastTransportImpl::AddValidRtpReceiver(uint32_t rtp_sender_ssrc,
+                                            uint32_t rtp_receiver_ssrc) {
   valid_sender_ssrcs_.insert(rtp_sender_ssrc);
   valid_rtp_receiver_ssrcs_.insert(rtp_receiver_ssrc);
 }
 
-void CastTransportSenderImpl::SetOptions(const base::DictionaryValue& options) {
+void CastTransportImpl::SetOptions(const base::DictionaryValue& options) {
   // Set PacedSender options.
   int burst_size = LookupOptionWithDefault(options, kOptionPacerTargetBurstSize,
                                            media::cast::kTargetBurstSize);
@@ -420,18 +414,18 @@
     wifi_options_autoreset_ = net::SetWifiOptions(wifi_options);
 }
 
-void CastTransportSenderImpl::InitializeRtpReceiverRtcpBuilder(
+void CastTransportImpl::InitializeRtpReceiverRtcpBuilder(
     uint32_t rtp_receiver_ssrc,
     const RtcpTimeData& time_data) {
   if (valid_rtp_receiver_ssrcs_.find(rtp_receiver_ssrc) ==
       valid_rtp_receiver_ssrcs_.end()) {
     VLOG(1) << "Invalid RTP receiver ssrc in "
-            << "CastTransportSenderImpl::InitializeRtpReceiverRtcpBuilder.";
+            << "CastTransportImpl::InitializeRtpReceiverRtcpBuilder.";
     return;
   }
   if (rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "Re-initialize rtcp_builder_at_rtp_receiver_ in "
-               "CastTransportSenderImpl.";
+               "CastTransportImpl.";
     return;
   }
   rtcp_builder_at_rtp_receiver_.reset(new RtcpBuilder(rtp_receiver_ssrc));
@@ -442,50 +436,49 @@
   rtcp_builder_at_rtp_receiver_->AddRrtr(rrtr);
 }
 
-void CastTransportSenderImpl::AddCastFeedback(
-    const RtcpCastMessage& cast_message,
-    base::TimeDelta target_delay) {
+void CastTransportImpl::AddCastFeedback(const RtcpCastMessage& cast_message,
+                                        base::TimeDelta target_delay) {
   if (!rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "rtcp_builder_at_rtp_receiver_ is not initialized before "
-               "calling CastTransportSenderImpl::AddCastFeedback.";
+               "calling CastTransportImpl::AddCastFeedback.";
     return;
   }
   rtcp_builder_at_rtp_receiver_->AddCast(cast_message, target_delay);
 }
 
-void CastTransportSenderImpl::AddPli(const RtcpPliMessage& pli_message) {
+void CastTransportImpl::AddPli(const RtcpPliMessage& pli_message) {
   if (!rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "rtcp_builder_at_rtp_receiver_ is not initialized before "
-               "calling CastTransportSenderImpl::AddPli.";
+               "calling CastTransportImpl::AddPli.";
     return;
   }
   rtcp_builder_at_rtp_receiver_->AddPli(pli_message);
 }
 
-void CastTransportSenderImpl::AddRtcpEvents(
+void CastTransportImpl::AddRtcpEvents(
     const ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events) {
   if (!rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "rtcp_builder_at_rtp_receiver_ is not initialized before "
-               "calling CastTransportSenderImpl::AddRtcpEvents.";
+               "calling CastTransportImpl::AddRtcpEvents.";
     return;
   }
   rtcp_builder_at_rtp_receiver_->AddReceiverLog(rtcp_events);
 }
 
-void CastTransportSenderImpl::AddRtpReceiverReport(
+void CastTransportImpl::AddRtpReceiverReport(
     const RtcpReportBlock& rtp_receiver_report_block) {
   if (!rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "rtcp_builder_at_rtp_receiver_ is not initialized before "
-               "calling CastTransportSenderImpl::AddRtpReceiverReport.";
+               "calling CastTransportImpl::AddRtpReceiverReport.";
     return;
   }
   rtcp_builder_at_rtp_receiver_->AddRR(&rtp_receiver_report_block);
 }
 
-void CastTransportSenderImpl::SendRtcpFromRtpReceiver() {
+void CastTransportImpl::SendRtcpFromRtpReceiver() {
   if (!rtcp_builder_at_rtp_receiver_) {
     VLOG(1) << "rtcp_builder_at_rtp_receiver_ is not initialized before "
-               "calling CastTransportSenderImpl::SendRtcpFromRtpReceiver.";
+               "calling CastTransportImpl::SendRtcpFromRtpReceiver.";
     return;
   }
   pacer_.SendRtcpPacket(rtcp_builder_at_rtp_receiver_->local_ssrc(),
diff --git a/media/cast/net/cast_transport_sender_impl.h b/media/cast/net/cast_transport_impl.h
similarity index 86%
rename from media/cast/net/cast_transport_sender_impl.h
rename to media/cast/net/cast_transport_impl.h
index 93a85d1..fdf9b94 100644
--- a/media/cast/net/cast_transport_sender_impl.h
+++ b/media/cast/net/cast_transport_impl.h
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// This class maintains a send transport for audio and video in a Cast
-// Streaming session.
+// This class maintains a transport for audio and video in a Cast Streaming
+// session.
 // Audio, video frames and RTCP messages are submitted to this object
 // and then packetized and paced to the underlying UDP socket.
 //
 // The hierarchy of send transport in a Cast Streaming session:
 //
-// CastTransportSender              RTP                      RTCP
+// CastTransport              RTP                      RTCP
 // ------------------------------------------------------------------
 //                      TransportEncryptionHandler (A/V)
 //                      RtpSender (A/V)                   Rtcp (A/V)
@@ -21,8 +21,8 @@
 // PacedSender and UdpTransport are shared between all RTP and RTCP
 // streams.
 
-#ifndef MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_IMPL_H_
-#define MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_IMPL_H_
+#ifndef MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
+#define MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
 
 #include <stdint.h>
 
@@ -39,8 +39,8 @@
 #include "base/time/time.h"
 #include "media/cast/common/transport_encryption_handler.h"
 #include "media/cast/logging/logging_defines.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender.h"
 #include "media/cast/net/pacing/paced_sender.h"
 #include "media/cast/net/rtcp/rtcp_builder.h"
 #include "media/cast/net/rtcp/sender_rtcp_session.h"
@@ -53,18 +53,18 @@
 
 class UdpTransport;
 
-class CastTransportSenderImpl final : public CastTransportSender {
+class CastTransportImpl final : public CastTransport {
  public:
-  CastTransportSenderImpl(
+  CastTransportImpl(
       base::TickClock* clock,  // Owned by the caller.
       base::TimeDelta logging_flush_interval,
       scoped_ptr<Client> client,
-      scoped_ptr<PacketSender> transport,
+      scoped_ptr<PacketTransport> transport,
       const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner);
 
-  ~CastTransportSenderImpl() final;
+  ~CastTransportImpl() final;
 
-  // CastTransportSender implementation.
+  // CastTransport implementation for sending.
   void InitializeAudio(const CastTransportRtpConfig& config,
                        const RtcpCastMessageCallback& cast_message_cb,
                        const RtcpRttCallback& rtt_cb,
@@ -100,7 +100,7 @@
   // Note, these options may be ignored on some platforms.
   void SetOptions(const base::DictionaryValue& options) final;
 
-  // CastTransportReceiver implementation.
+  // CastTransport implementation for receiving.
   void AddValidRtpReceiver(uint32_t rtp_sender_ssrc,
                            uint32_t rtp_receiver_ssrc) final;
 
@@ -117,11 +117,10 @@
   void SendRtcpFromRtpReceiver() final;
 
  private:
-  FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, NacksCancelRetransmits);
-  FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, CancelRetransmits);
-  FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, Kickstart);
-  FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest,
-                           DedupRetransmissionWithAudio);
+  FRIEND_TEST_ALL_PREFIXES(CastTransportImplTest, NacksCancelRetransmits);
+  FRIEND_TEST_ALL_PREFIXES(CastTransportImplTest, CancelRetransmits);
+  FRIEND_TEST_ALL_PREFIXES(CastTransportImplTest, Kickstart);
+  FRIEND_TEST_ALL_PREFIXES(CastTransportImplTest, DedupRetransmissionWithAudio);
 
   // Resend packets for the stream identified by |ssrc|.
   // If |cancel_rtx_if_not_in_list| is true then transmission of packets for the
@@ -151,7 +150,7 @@
   base::TickClock* const clock_;  // Not owned by this class.
   const base::TimeDelta logging_flush_interval_;
   const scoped_ptr<Client> transport_client_;
-  const scoped_ptr<PacketSender> transport_;
+  const scoped_ptr<PacketTransport> transport_;
   const scoped_refptr<base::SingleThreadTaskRunner> transport_task_runner_;
 
   // FrameEvents and PacketEvents pending delivery via raw events callback.
@@ -198,12 +197,12 @@
 
   scoped_ptr<RtcpBuilder> rtcp_builder_at_rtp_receiver_;
 
-  base::WeakPtrFactory<CastTransportSenderImpl> weak_factory_;
+  base::WeakPtrFactory<CastTransportImpl> weak_factory_;
 
-  DISALLOW_COPY_AND_ASSIGN(CastTransportSenderImpl);
+  DISALLOW_COPY_AND_ASSIGN(CastTransportImpl);
 };
 
 }  // namespace cast
 }  // namespace media
 
-#endif  // MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_IMPL_H_
+#endif  // MEDIA_CAST_NET_CAST_TRANSPORT_IMPL_H_
diff --git a/media/cast/net/cast_transport_sender_impl_unittest.cc b/media/cast/net/cast_transport_impl_unittest.cc
similarity index 79%
rename from media/cast/net/cast_transport_sender_impl_unittest.cc
rename to media/cast/net/cast_transport_impl_unittest.cc
index 18310b4..39b4f45 100644
--- a/media/cast/net/cast_transport_sender_impl_unittest.cc
+++ b/media/cast/net/cast_transport_impl_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 
 #include <gtest/gtest.h>
 #include <stdint.h>
@@ -30,10 +30,9 @@
 
 }  // namespace
 
-class FakePacketSender : public PacketSender {
+class FakePacketSender : public PacketTransport {
  public:
-  FakePacketSender()
-      : paused_(false), packets_sent_(0), bytes_sent_(0) {}
+  FakePacketSender() : paused_(false), packets_sent_(0), bytes_sent_(0) {}
 
   bool SendPacket(PacketRef packet, const base::Closure& cb) final {
     if (paused_) {
@@ -73,18 +72,18 @@
   DISALLOW_COPY_AND_ASSIGN(FakePacketSender);
 };
 
-class CastTransportSenderImplTest : public ::testing::Test {
+class CastTransportImplTest : public ::testing::Test {
  public:
   void ReceivedLoggingEvents() { num_times_logging_callback_called_++; }
 
  protected:
-  CastTransportSenderImplTest() : num_times_logging_callback_called_(0) {
+  CastTransportImplTest() : num_times_logging_callback_called_(0) {
     testing_clock_.Advance(
         base::TimeDelta::FromMilliseconds(kStartMillisecond));
     task_runner_ = new FakeSingleThreadTaskRunner(&testing_clock_);
   }
 
-  ~CastTransportSenderImplTest() override {}
+  ~CastTransportImplTest() override {}
 
   void InitWithoutLogging();
   void InitWithOptions();
@@ -110,17 +109,17 @@
 
   base::SimpleTestTickClock testing_clock_;
   scoped_refptr<FakeSingleThreadTaskRunner> task_runner_;
-  scoped_ptr<CastTransportSenderImpl> transport_sender_;
-  FakePacketSender* transport_;  // Owned by CastTransportSender.
+  scoped_ptr<CastTransportImpl> transport_sender_;
+  FakePacketSender* transport_;  // Owned by CastTransport.
   int num_times_logging_callback_called_;
 };
 
 namespace {
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   explicit TransportClient(
-      CastTransportSenderImplTest* cast_transport_sender_impl_test)
+      CastTransportImplTest* cast_transport_sender_impl_test)
       : cast_transport_sender_impl_test_(cast_transport_sender_impl_test) {}
 
   void OnStatusChanged(CastTransportStatus status) final{};
@@ -133,23 +132,23 @@
   void ProcessRtpPacket(scoped_ptr<Packet> packet) final{};
 
  private:
-  CastTransportSenderImplTest* const cast_transport_sender_impl_test_;
+  CastTransportImplTest* const cast_transport_sender_impl_test_;
 
   DISALLOW_COPY_AND_ASSIGN(TransportClient);
 };
 
 }  // namespace
 
-void CastTransportSenderImplTest::InitWithoutLogging() {
+void CastTransportImplTest::InitWithoutLogging() {
   transport_ = new FakePacketSender();
   transport_sender_.reset(
-      new CastTransportSenderImpl(&testing_clock_, base::TimeDelta(),
-                                  make_scoped_ptr(new TransportClient(nullptr)),
-                                  make_scoped_ptr(transport_), task_runner_));
+      new CastTransportImpl(&testing_clock_, base::TimeDelta(),
+                            make_scoped_ptr(new TransportClient(nullptr)),
+                            make_scoped_ptr(transport_), task_runner_));
   task_runner_->RunTasks();
 }
 
-void CastTransportSenderImplTest::InitWithOptions() {
+void CastTransportImplTest::InitWithOptions() {
   scoped_ptr<base::DictionaryValue> options(new base::DictionaryValue);
   options->SetBoolean("disable_wifi_scan", true);
   options->SetBoolean("media_streaming_mode", true);
@@ -157,35 +156,35 @@
   options->SetInteger("pacer_max_burst_size", 100);
   transport_ = new FakePacketSender();
   transport_sender_.reset(
-      new CastTransportSenderImpl(&testing_clock_, base::TimeDelta(),
-                                  make_scoped_ptr(new TransportClient(nullptr)),
-                                  make_scoped_ptr(transport_), task_runner_));
+      new CastTransportImpl(&testing_clock_, base::TimeDelta(),
+                            make_scoped_ptr(new TransportClient(nullptr)),
+                            make_scoped_ptr(transport_), task_runner_));
   transport_sender_->SetOptions(*options);
   task_runner_->RunTasks();
 }
 
-void CastTransportSenderImplTest::InitWithLogging() {
+void CastTransportImplTest::InitWithLogging() {
   transport_ = new FakePacketSender();
-  transport_sender_.reset(new CastTransportSenderImpl(
+  transport_sender_.reset(new CastTransportImpl(
       &testing_clock_, base::TimeDelta::FromMilliseconds(10),
       make_scoped_ptr(new TransportClient(this)), make_scoped_ptr(transport_),
       task_runner_));
   task_runner_->RunTasks();
 }
 
-TEST_F(CastTransportSenderImplTest, InitWithoutLogging) {
+TEST_F(CastTransportImplTest, InitWithoutLogging) {
   InitWithoutLogging();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
   EXPECT_EQ(0, num_times_logging_callback_called_);
 }
 
-TEST_F(CastTransportSenderImplTest, InitWithOptions) {
+TEST_F(CastTransportImplTest, InitWithOptions) {
   InitWithOptions();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
   EXPECT_EQ(0, num_times_logging_callback_called_);
 }
 
-TEST_F(CastTransportSenderImplTest, NacksCancelRetransmits) {
+TEST_F(CastTransportImplTest, NacksCancelRetransmits) {
   InitWithLogging();
   InitializeVideo();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
@@ -212,8 +211,8 @@
   transport_->SetPaused(true);
   DedupInfo dedup_info;
   dedup_info.resend_interval = base::TimeDelta::FromMilliseconds(10);
-  transport_sender_->ResendPackets(
-      kVideoSsrc, missing_packets, true, dedup_info);
+  transport_sender_->ResendPackets(kVideoSsrc, missing_packets, true,
+                                   dedup_info);
 
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
   EXPECT_EQ(2, num_times_logging_callback_called_);
@@ -222,9 +221,8 @@
   cast_message.remote_ssrc = kVideoSsrc;
   cast_message.ack_frame_id = 1;
   cast_message.missing_frames_and_packets[1].insert(3);
-  transport_sender_->OnReceivedCastMessage(kVideoSsrc,
-                                           RtcpCastMessageCallback(),
-                                           cast_message);
+  transport_sender_->OnReceivedCastMessage(
+      kVideoSsrc, RtcpCastMessageCallback(), cast_message);
   transport_->SetPaused(false);
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
   EXPECT_EQ(3, num_times_logging_callback_called_);
@@ -234,7 +232,7 @@
   EXPECT_EQ(6, transport_->packets_sent());
 }
 
-TEST_F(CastTransportSenderImplTest, CancelRetransmits) {
+TEST_F(CastTransportImplTest, CancelRetransmits) {
   InitWithLogging();
   InitializeVideo();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
@@ -259,16 +257,15 @@
   transport_->SetPaused(true);
   DedupInfo dedup_info;
   dedup_info.resend_interval = base::TimeDelta::FromMilliseconds(10);
-  transport_sender_->ResendPackets(
-      kVideoSsrc, missing_packets, true, dedup_info);
+  transport_sender_->ResendPackets(kVideoSsrc, missing_packets, true,
+                                   dedup_info);
 
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
   EXPECT_EQ(2, num_times_logging_callback_called_);
 
   std::vector<uint32_t> cancel_sending_frames;
   cancel_sending_frames.push_back(1);
-  transport_sender_->CancelSendingFrames(kVideoSsrc,
-                                         cancel_sending_frames);
+  transport_sender_->CancelSendingFrames(kVideoSsrc, cancel_sending_frames);
   transport_->SetPaused(false);
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
   EXPECT_EQ(2, num_times_logging_callback_called_);
@@ -277,7 +274,7 @@
   EXPECT_EQ(5, transport_->packets_sent());
 }
 
-TEST_F(CastTransportSenderImplTest, Kickstart) {
+TEST_F(CastTransportImplTest, Kickstart) {
   InitWithLogging();
   InitializeVideo();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
@@ -306,8 +303,8 @@
   transport_->SetPaused(true);
   DedupInfo dedup_info;
   dedup_info.resend_interval = base::TimeDelta::FromMilliseconds(10);
-  transport_sender_->ResendPackets(
-      kVideoSsrc, missing_packets, true, dedup_info);
+  transport_sender_->ResendPackets(kVideoSsrc, missing_packets, true,
+                                   dedup_info);
   transport_sender_->ResendFrameForKickstart(kVideoSsrc, 1);
   transport_->SetPaused(false);
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
@@ -318,7 +315,7 @@
   EXPECT_EQ(7, transport_->packets_sent());
 }
 
-TEST_F(CastTransportSenderImplTest, DedupRetransmissionWithAudio) {
+TEST_F(CastTransportImplTest, DedupRetransmissionWithAudio) {
   InitWithLogging();
   InitializeAudio();
   InitializeVideo();
@@ -343,9 +340,8 @@
   RtcpCastMessage cast_message;
   cast_message.remote_ssrc = kAudioSsrc;
   cast_message.ack_frame_id = 1;
-  transport_sender_->OnReceivedCastMessage(kAudioSsrc,
-                                           RtcpCastMessageCallback(),
-                                           cast_message);
+  transport_sender_->OnReceivedCastMessage(
+      kAudioSsrc, RtcpCastMessageCallback(), cast_message);
   task_runner_->RunTasks();
   EXPECT_EQ(2, transport_->packets_sent());
   EXPECT_EQ(0, num_times_logging_callback_called_);  // Only 4 ms since last.
@@ -365,9 +361,8 @@
   cast_message.ack_frame_id = 0;
   cast_message.missing_frames_and_packets[1].insert(3);
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(10));
-  transport_sender_->OnReceivedCastMessage(kVideoSsrc,
-                                           RtcpCastMessageCallback(),
-                                           cast_message);
+  transport_sender_->OnReceivedCastMessage(
+      kVideoSsrc, RtcpCastMessageCallback(), cast_message);
   task_runner_->RunTasks();
   EXPECT_EQ(6, transport_->packets_sent());
   EXPECT_EQ(1, num_times_logging_callback_called_);
@@ -377,9 +372,8 @@
   cast_message.ack_frame_id = 2;
   cast_message.missing_frames_and_packets.clear();
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(2));
-  transport_sender_->OnReceivedCastMessage(kAudioSsrc,
-                                           RtcpCastMessageCallback(),
-                                           cast_message);
+  transport_sender_->OnReceivedCastMessage(
+      kAudioSsrc, RtcpCastMessageCallback(), cast_message);
   task_runner_->RunTasks();
   EXPECT_EQ(6, transport_->packets_sent());
   EXPECT_EQ(1, num_times_logging_callback_called_);  // Only 6 ms since last.
@@ -389,9 +383,8 @@
   cast_message.ack_frame_id = 1;
   cast_message.missing_frames_and_packets[1].insert(3);
   task_runner_->Sleep(base::TimeDelta::FromMilliseconds(2));
-  transport_sender_->OnReceivedCastMessage(kVideoSsrc,
-                                           RtcpCastMessageCallback(),
-                                           cast_message);
+  transport_sender_->OnReceivedCastMessage(
+      kVideoSsrc, RtcpCastMessageCallback(), cast_message);
   task_runner_->RunTasks();
   EXPECT_EQ(7, transport_->packets_sent());
   EXPECT_EQ(1, num_times_logging_callback_called_);  // Only 8 ms since last.
diff --git a/media/cast/net/mock_cast_transport_sender.cc b/media/cast/net/mock_cast_transport.cc
similarity index 60%
rename from media/cast/net/mock_cast_transport_sender.cc
rename to media/cast/net/mock_cast_transport.cc
index 752698b..70314c3 100644
--- a/media/cast/net/mock_cast_transport_sender.cc
+++ b/media/cast/net/mock_cast_transport.cc
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "media/cast/net/mock_cast_transport_sender.h"
+#include "media/cast/net/mock_cast_transport.h"
 
 namespace media {
 namespace cast {
 
-MockCastTransportSender::MockCastTransportSender() {}
+MockCastTransport::MockCastTransport() {}
 
-MockCastTransportSender::~MockCastTransportSender() {}
+MockCastTransport::~MockCastTransport() {}
 
 }  // namespace cast
 }  // namespace media
diff --git a/media/cast/net/mock_cast_transport_sender.h b/media/cast/net/mock_cast_transport.h
similarity index 81%
rename from media/cast/net/mock_cast_transport_sender.h
rename to media/cast/net/mock_cast_transport.h
index 83417e5b..63b4a4a 100644
--- a/media/cast/net/mock_cast_transport_sender.h
+++ b/media/cast/net/mock_cast_transport.h
@@ -2,21 +2,21 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_SENDER_H_
-#define MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_SENDER_H_
+#ifndef MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_
+#define MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_
 
 #include <stdint.h>
 
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace media {
 namespace cast {
 
-class MockCastTransportSender : public CastTransportSender {
+class MockCastTransport : public CastTransport {
  public:
-  MockCastTransportSender();
-  virtual ~MockCastTransportSender();
+  MockCastTransport();
+  virtual ~MockCastTransport();
 
   MOCK_METHOD4(InitializeAudio,
                void(const CastTransportRtpConfig& config,
@@ -33,9 +33,8 @@
                void(uint32_t ssrc,
                     base::TimeTicks current_time,
                     RtpTimeTicks current_time_as_rtp_timestamp));
-  MOCK_METHOD2(CancelSendingFrames, void(
-      uint32_t ssrc,
-      const std::vector<uint32_t>& frame_ids));
+  MOCK_METHOD2(CancelSendingFrames,
+               void(uint32_t ssrc, const std::vector<uint32_t>& frame_ids));
   MOCK_METHOD2(ResendFrameForKickstart, void(uint32_t ssrc, uint32_t frame_id));
   MOCK_METHOD0(PacketReceiverForTesting, PacketReceiverCallback());
   MOCK_METHOD2(AddValidRtpReceiver,
@@ -58,4 +57,4 @@
 }  // namespace cast
 }  // namespace media
 
-#endif  // MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_SENDER_H_
+#endif  // MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_
diff --git a/media/cast/net/pacing/paced_sender.cc b/media/cast/net/pacing/paced_sender.cc
index 59ed0b1..54ef0dd 100644
--- a/media/cast/net/pacing/paced_sender.cc
+++ b/media/cast/net/pacing/paced_sender.cc
@@ -48,7 +48,7 @@
     size_t max_burst_size,
     base::TickClock* clock,
     std::vector<PacketEvent>* recent_packet_events,
-    PacketSender* transport,
+    PacketTransport* transport,
     const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner)
     : clock_(clock),
       recent_packet_events_(recent_packet_events),
diff --git a/media/cast/net/pacing/paced_sender.h b/media/cast/net/pacing/paced_sender.h
index b76d883..0f200e9 100644
--- a/media/cast/net/pacing/paced_sender.h
+++ b/media/cast/net/pacing/paced_sender.h
@@ -105,7 +105,7 @@
       size_t max_burst_size,     // Should normally be kMaxBurstSize.
       base::TickClock* clock,
       std::vector<PacketEvent>* recent_packet_events,
-      PacketSender* external_transport,
+      PacketTransport* external_transport,
       const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner);
 
   ~PacedSender() final;
@@ -198,7 +198,7 @@
   // These are externally-owned objects injected via the constructor.
   base::TickClock* const clock_;
   std::vector<PacketEvent>* const recent_packet_events_;
-  PacketSender* const transport_;
+  PacketTransport* const transport_;
 
   scoped_refptr<base::SingleThreadTaskRunner> transport_task_runner_;
   uint32_t audio_ssrc_;
diff --git a/media/cast/net/pacing/paced_sender_unittest.cc b/media/cast/net/pacing/paced_sender_unittest.cc
index 56f3cf05..dda0e135d 100644
--- a/media/cast/net/pacing/paced_sender_unittest.cc
+++ b/media/cast/net/pacing/paced_sender_unittest.cc
@@ -38,7 +38,7 @@
 // check that.
 const uint16_t kRtcpPacketIdMagic = UINT16_C(31611);
 
-class TestPacketSender : public PacketSender {
+class TestPacketSender : public PacketTransport {
  public:
   TestPacketSender() : bytes_sent_(0) {}
 
diff --git a/media/cast/net/rtcp/rtcp_utility.cc b/media/cast/net/rtcp/rtcp_utility.cc
index 667026e0..99717c5 100644
--- a/media/cast/net/rtcp/rtcp_utility.cc
+++ b/media/cast/net/rtcp/rtcp_utility.cc
@@ -322,6 +322,8 @@
   // Please note, this frame_id is still only 8-bit!
   cast_message_.ack_frame_id = last_frame_id;
 
+  cast_message_.missing_frames_and_packets.clear();
+  cast_message_.received_later_frames.clear();
   for (size_t i = 0; i < number_of_lost_fields; i++) {
     uint8_t frame_id;
     uint16_t packet_id;
diff --git a/media/cast/net/rtp/rtp_packetizer_unittest.cc b/media/cast/net/rtp/rtp_packetizer_unittest.cc
index ff7675f..d4ee96a9 100644
--- a/media/cast/net/rtp/rtp_packetizer_unittest.cc
+++ b/media/cast/net/rtp/rtp_packetizer_unittest.cc
@@ -28,7 +28,7 @@
 static const unsigned int kFrameSize = 5000;
 }
 
-class TestRtpPacketTransport : public PacketSender {
+class TestRtpPacketTransport : public PacketTransport {
  public:
   explicit TestRtpPacketTransport(RtpPacketizerConfig config)
       : config_(config),
diff --git a/media/cast/net/rtp/rtp_sender.h b/media/cast/net/rtp/rtp_sender.h
index ac59c2f..7835e2f 100644
--- a/media/cast/net/rtp/rtp_sender.h
+++ b/media/cast/net/rtp/rtp_sender.h
@@ -18,8 +18,8 @@
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "media/cast/cast_environment.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
 #include "media/cast/net/pacing/paced_sender.h"
 #include "media/cast/net/rtp/packet_storage.h"
 #include "media/cast/net/rtp/rtp_packetizer.h"
diff --git a/media/cast/net/udp_transport.h b/media/cast/net/udp_transport.h
index c098a58..6618bdd8 100644
--- a/media/cast/net/udp_transport.h
+++ b/media/cast/net/udp_transport.h
@@ -14,8 +14,8 @@
 #include "base/values.h"
 #include "build/build_config.h"
 #include "media/cast/cast_environment.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender.h"
 #include "media/cast/net/pacing/paced_sender.h"
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
@@ -30,7 +30,7 @@
 namespace cast {
 
 // This class implements UDP transport mechanism for Cast.
-class UdpTransport : public PacketSender {
+class UdpTransport : public PacketTransport {
  public:
   // Construct a UDP transport.
   // All methods must be called on |io_thread_proxy|.
@@ -80,7 +80,7 @@
   void UseNonBlockingIO();
 #endif
 
-  // PacketSender implementations.
+  // PacketTransport implementations.
   bool SendPacket(PacketRef packet, const base::Closure& cb) final;
   int64_t GetBytesSent() final;
 
diff --git a/media/cast/receiver/cast_receiver_impl.cc b/media/cast/receiver/cast_receiver_impl.cc
index 347b4fd8..69aa7c54 100644
--- a/media/cast/receiver/cast_receiver_impl.cc
+++ b/media/cast/receiver/cast_receiver_impl.cc
@@ -24,7 +24,7 @@
     scoped_refptr<CastEnvironment> cast_environment,
     const FrameReceiverConfig& audio_config,
     const FrameReceiverConfig& video_config,
-    CastTransportSender* const transport) {
+    CastTransport* const transport) {
   return scoped_ptr<CastReceiver>(new CastReceiverImpl(
       cast_environment, audio_config, video_config, transport));
 }
@@ -33,7 +33,7 @@
     scoped_refptr<CastEnvironment> cast_environment,
     const FrameReceiverConfig& audio_config,
     const FrameReceiverConfig& video_config,
-    CastTransportSender* const transport)
+    CastTransport* const transport)
     : cast_environment_(cast_environment),
       audio_receiver_(cast_environment, audio_config, AUDIO_EVENT, transport),
       video_receiver_(cast_environment, video_config, VIDEO_EVENT, transport),
diff --git a/media/cast/receiver/cast_receiver_impl.h b/media/cast/receiver/cast_receiver_impl.h
index 4554bd0..91e01e7 100644
--- a/media/cast/receiver/cast_receiver_impl.h
+++ b/media/cast/receiver/cast_receiver_impl.h
@@ -30,7 +30,7 @@
   CastReceiverImpl(scoped_refptr<CastEnvironment> cast_environment,
                    const FrameReceiverConfig& audio_config,
                    const FrameReceiverConfig& video_config,
-                   CastTransportSender* const transport);
+                   CastTransport* const transport);
 
   ~CastReceiverImpl() final;
 
diff --git a/media/cast/receiver/frame_receiver.cc b/media/cast/receiver/frame_receiver.cc
index 62aad7a..b3ad1b9 100644
--- a/media/cast/receiver/frame_receiver.cc
+++ b/media/cast/receiver/frame_receiver.cc
@@ -38,7 +38,7 @@
     const scoped_refptr<CastEnvironment>& cast_environment,
     const FrameReceiverConfig& config,
     EventMediaType event_media_type,
-    CastTransportSender* const transport)
+    CastTransport* const transport)
     : cast_environment_(cast_environment),
       transport_(transport),
       packet_parser_(config.sender_ssrc, config.rtp_payload_type),
diff --git a/media/cast/receiver/frame_receiver.h b/media/cast/receiver/frame_receiver.h
index dc0b1b3..8191ee0 100644
--- a/media/cast/receiver/frame_receiver.h
+++ b/media/cast/receiver/frame_receiver.h
@@ -56,7 +56,7 @@
   FrameReceiver(const scoped_refptr<CastEnvironment>& cast_environment,
                 const FrameReceiverConfig& config,
                 EventMediaType event_media_type,
-                CastTransportSender* const transport);
+                CastTransport* const transport);
 
   ~FrameReceiver() final;
 
@@ -134,7 +134,7 @@
   const scoped_refptr<CastEnvironment> cast_environment_;
 
   // Transport used to send data back.
-  CastTransportSender* const transport_;
+  CastTransport* const transport_;
 
   // Deserializes a packet into a RtpHeader + payload bytes.
   RtpParser packet_parser_;
diff --git a/media/cast/receiver/frame_receiver_unittest.cc b/media/cast/receiver/frame_receiver_unittest.cc
index ccc9c3f..164ee5ef 100644
--- a/media/cast/receiver/frame_receiver_unittest.cc
+++ b/media/cast/receiver/frame_receiver_unittest.cc
@@ -17,8 +17,8 @@
 #include "media/base/fake_single_thread_task_runner.h"
 #include "media/cast/cast_environment.h"
 #include "media/cast/logging/simple_event_subscriber.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
-#include "media/cast/net/mock_cast_transport_sender.h"
+#include "media/cast/net/cast_transport_impl.h"
+#include "media/cast/net/mock_cast_transport.h"
 #include "media/cast/net/rtcp/rtcp_utility.h"
 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h"
 #include "media/cast/test/utility/default_config.h"
@@ -138,7 +138,7 @@
   RtpCastHeader rtp_header_;
   base::SimpleTestTickClock* testing_clock_;  // Owned by CastEnvironment.
   base::TimeTicks start_time_;
-  MockCastTransportSender mock_transport_;
+  MockCastTransport mock_transport_;
   scoped_refptr<FakeSingleThreadTaskRunner> task_runner_;
   scoped_refptr<CastEnvironment> cast_environment_;
   FakeFrameClient frame_client_;
diff --git a/media/cast/sender/audio_sender.cc b/media/cast/sender/audio_sender.cc
index e1102546..808b5ea 100644
--- a/media/cast/sender/audio_sender.cc
+++ b/media/cast/sender/audio_sender.cc
@@ -19,7 +19,7 @@
 AudioSender::AudioSender(scoped_refptr<CastEnvironment> cast_environment,
                          const AudioSenderConfig& audio_config,
                          const StatusChangeCallback& status_change_cb,
-                         CastTransportSender* const transport_sender)
+                         CastTransport* const transport_sender)
     : FrameSender(cast_environment,
                   true,
                   transport_sender,
diff --git a/media/cast/sender/audio_sender.h b/media/cast/sender/audio_sender.h
index 34aeda3..b35dc3b 100644
--- a/media/cast/sender/audio_sender.h
+++ b/media/cast/sender/audio_sender.h
@@ -37,7 +37,7 @@
   AudioSender(scoped_refptr<CastEnvironment> cast_environment,
               const AudioSenderConfig& audio_config,
               const StatusChangeCallback& status_change_cb,
-              CastTransportSender* const transport_sender);
+              CastTransport* const transport_sender);
 
   ~AudioSender() final;
 
diff --git a/media/cast/sender/audio_sender_unittest.cc b/media/cast/sender/audio_sender_unittest.cc
index 0c5a35a..9675ee6 100644
--- a/media/cast/sender/audio_sender_unittest.cc
+++ b/media/cast/sender/audio_sender_unittest.cc
@@ -19,7 +19,7 @@
 #include "media/cast/cast_environment.h"
 #include "media/cast/constants.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 #include "media/cast/test/utility/audio_utility.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -35,7 +35,7 @@
   *out_status = in_status;
 }
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   TransportClient() {}
 
@@ -52,7 +52,7 @@
 
 }  // namespace
 
-class TestPacketSender : public PacketSender {
+class TestPacketSender : public PacketTransport {
  public:
   TestPacketSender() : number_of_rtp_packets_(0), number_of_rtcp_packets_(0) {}
 
@@ -108,9 +108,9 @@
 
     transport_ = new TestPacketSender();
     transport_sender_.reset(
-        new CastTransportSenderImpl(testing_clock_, base::TimeDelta(),
-                                    make_scoped_ptr(new TransportClient()),
-                                    make_scoped_ptr(transport_), task_runner_));
+        new CastTransportImpl(testing_clock_, base::TimeDelta(),
+                              make_scoped_ptr(new TransportClient()),
+                              make_scoped_ptr(transport_), task_runner_));
     OperationalStatus operational_status = STATUS_UNINITIALIZED;
     audio_sender_.reset(new AudioSender(
         cast_environment_,
@@ -124,8 +124,8 @@
   ~AudioSenderTest() override {}
 
   base::SimpleTestTickClock* testing_clock_;  // Owned by CastEnvironment.
-  TestPacketSender* transport_;               // Owned by CastTransportSender.
-  scoped_ptr<CastTransportSenderImpl> transport_sender_;
+  TestPacketSender* transport_;               // Owned by CastTransport.
+  scoped_ptr<CastTransportImpl> transport_sender_;
   scoped_refptr<FakeSingleThreadTaskRunner> task_runner_;
   scoped_ptr<AudioSender> audio_sender_;
   scoped_refptr<CastEnvironment> cast_environment_;
diff --git a/media/cast/sender/frame_sender.cc b/media/cast/sender/frame_sender.cc
index 26063589..48d5d3c 100644
--- a/media/cast/sender/frame_sender.cc
+++ b/media/cast/sender/frame_sender.cc
@@ -34,7 +34,7 @@
 
 FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment,
                          bool is_audio,
-                         CastTransportSender* const transport_sender,
+                         CastTransport* const transport_sender,
                          int rtp_timebase,
                          uint32_t ssrc,
                          double max_frame_rate,
diff --git a/media/cast/sender/frame_sender.h b/media/cast/sender/frame_sender.h
index 18db307..7a58aba 100644
--- a/media/cast/sender/frame_sender.h
+++ b/media/cast/sender/frame_sender.h
@@ -16,7 +16,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "media/cast/cast_environment.h"
-#include "media/cast/net/cast_transport_sender.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/rtcp/rtcp_defines.h"
 #include "media/cast/sender/congestion_control.h"
 
@@ -29,7 +29,7 @@
  public:
   FrameSender(scoped_refptr<CastEnvironment> cast_environment,
               bool is_audio,
-              CastTransportSender* const transport_sender,
+              CastTransport* const transport_sender,
               int rtp_timebase,
               uint32_t ssrc,
               double max_frame_rate,
@@ -75,7 +75,7 @@
   // process to the browser process over IPC, with the browser process being
   // responsible for "packetizing" the frames and pushing packets into the
   // network layer.
-  CastTransportSender* const transport_sender_;
+  CastTransport* const transport_sender_;
 
   const uint32_t ssrc_;
 
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc
index 56b2296..498b716 100644
--- a/media/cast/sender/video_sender.cc
+++ b/media/cast/sender/video_sender.cc
@@ -93,7 +93,7 @@
     const StatusChangeCallback& status_change_cb,
     const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
     const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
-    CastTransportSender* const transport_sender,
+    CastTransport* const transport_sender,
     const PlayoutDelayChangeCB& playout_delay_change_cb)
     : FrameSender(
           cast_environment,
diff --git a/media/cast/sender/video_sender.h b/media/cast/sender/video_sender.h
index c6a2ed6..b7bd4ef 100644
--- a/media/cast/sender/video_sender.h
+++ b/media/cast/sender/video_sender.h
@@ -25,7 +25,7 @@
 
 namespace cast {
 
-class CastTransportSender;
+class CastTransport;
 class VideoEncoder;
 class VideoFrameFactory;
 
@@ -46,7 +46,7 @@
               const StatusChangeCallback& status_change_cb,
               const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
               const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
-              CastTransportSender* const transport_sender,
+              CastTransport* const transport_sender,
               const PlayoutDelayChangeCB& playout_delay_change_cb);
 
   ~VideoSender() override;
diff --git a/media/cast/sender/video_sender_unittest.cc b/media/cast/sender/video_sender_unittest.cc
index 483cd479..2ba9320 100644
--- a/media/cast/sender/video_sender_unittest.cc
+++ b/media/cast/sender/video_sender_unittest.cc
@@ -17,7 +17,7 @@
 #include "media/cast/constants.h"
 #include "media/cast/logging/simple_event_subscriber.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 #include "media/cast/net/pacing/paced_sender.h"
 #include "media/cast/sender/fake_video_encode_accelerator_factory.h"
 #include "media/cast/sender/video_frame_factory.h"
@@ -47,7 +47,7 @@
   *out_status = in_status;
 }
 
-class TestPacketSender : public PacketSender {
+class TestPacketSender : public PacketTransport {
  public:
   TestPacketSender()
       : number_of_rtp_packets_(0),
@@ -115,7 +115,7 @@
       const StatusChangeCallback& status_change_cb,
       const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
       const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
-      CastTransportSender* const transport_sender)
+      CastTransport* const transport_sender)
       : VideoSender(cast_environment,
                     video_config,
                     status_change_cb,
@@ -127,7 +127,7 @@
   using VideoSender::OnReceivedPli;
 };
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   TransportClient() {}
 
@@ -161,9 +161,9 @@
     last_pixel_value_ = kPixelValue;
     transport_ = new TestPacketSender();
     transport_sender_.reset(
-        new CastTransportSenderImpl(testing_clock_, base::TimeDelta(),
-                                    make_scoped_ptr(new TransportClient()),
-                                    make_scoped_ptr(transport_), task_runner_));
+        new CastTransportImpl(testing_clock_, base::TimeDelta(),
+                              make_scoped_ptr(new TransportClient()),
+                              make_scoped_ptr(transport_), task_runner_));
   }
 
   ~VideoSenderTest() override {}
@@ -238,8 +238,8 @@
   const scoped_refptr<CastEnvironment> cast_environment_;
   OperationalStatus operational_status_;
   FakeVideoEncodeAcceleratorFactory vea_factory_;
-  TestPacketSender* transport_;  // Owned by CastTransportSender.
-  scoped_ptr<CastTransportSenderImpl> transport_sender_;
+  TestPacketSender* transport_;  // Owned by CastTransport.
+  scoped_ptr<CastTransportImpl> transport_sender_;
   scoped_ptr<PeerVideoSender> video_sender_;
   int last_pixel_value_;
   base::TimeTicks first_frame_timestamp_;
diff --git a/media/cast/test/cast_benchmarks.cc b/media/cast/test/cast_benchmarks.cc
index eed4c88..a578788 100644
--- a/media/cast/test/cast_benchmarks.cc
+++ b/media/cast/test/cast_benchmarks.cc
@@ -49,10 +49,10 @@
 #include "media/cast/cast_receiver.h"
 #include "media/cast/cast_sender.h"
 #include "media/cast/logging/simple_event_subscriber.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
 #include "media/cast/net/cast_transport_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 #include "media/cast/test/loopback_transport.h"
 #include "media/cast/test/skewed_single_thread_task_runner.h"
 #include "media/cast/test/skewed_tick_clock.h"
@@ -81,12 +81,12 @@
 
 }  // namespace
 
-// Wraps a CastTransportSender and records some statistics about
+// Wraps a CastTransport and records some statistics about
 // the data that goes through it.
-class CastTransportSenderWrapper : public CastTransportSender {
+class CastTransportWrapper : public CastTransport {
  public:
   // Takes ownership of |transport|.
-  void Init(CastTransportSender* transport,
+  void Init(CastTransport* transport,
             uint64_t* encoded_video_bytes,
             uint64_t* encoded_audio_bytes) {
     transport_.reset(transport);
@@ -175,7 +175,7 @@
   void SetOptions(const base::DictionaryValue& options) final {}
 
  private:
-  scoped_ptr<CastTransportSender> transport_;
+  scoped_ptr<CastTransport> transport_;
   uint32_t audio_ssrc_, video_ssrc_;
   uint64_t* encoded_video_bytes_;
   uint64_t* encoded_audio_bytes_;
@@ -431,10 +431,10 @@
   scoped_refptr<CastEnvironment> cast_environment_sender_;
   scoped_refptr<CastEnvironment> cast_environment_receiver_;
 
-  LoopBackTransport* receiver_to_sender_;  // Owned by CastTransportSenderImpl.
-  LoopBackTransport* sender_to_receiver_;  // Owned by CastTransportSenderImpl.
-  CastTransportSenderWrapper transport_sender_;
-  scoped_ptr<CastTransportSender> transport_receiver_;
+  LoopBackTransport* receiver_to_sender_;  // Owned by CastTransportImpl.
+  LoopBackTransport* sender_to_receiver_;  // Owned by CastTransportImpl.
+  CastTransportWrapper transport_sender_;
+  scoped_ptr<CastTransport> transport_receiver_;
   uint64_t video_bytes_encoded_;
   uint64_t audio_bytes_encoded_;
 
@@ -450,7 +450,7 @@
 
 namespace {
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   explicit TransportClient(RunOneBenchmark* run_one_benchmark)
       : run_one_benchmark_(run_one_benchmark) {}
@@ -479,14 +479,14 @@
 void RunOneBenchmark::Create(const MeasuringPoint& p) {
   sender_to_receiver_ = new LoopBackTransport(cast_environment_sender_);
   transport_sender_.Init(
-      new CastTransportSenderImpl(
+      new CastTransportImpl(
           testing_clock_sender_, base::TimeDelta::FromSeconds(1),
           make_scoped_ptr(new TransportClient(nullptr)),
           make_scoped_ptr(sender_to_receiver_), task_runner_sender_),
       &video_bytes_encoded_, &audio_bytes_encoded_);
 
   receiver_to_sender_ = new LoopBackTransport(cast_environment_receiver_);
-  transport_receiver_.reset(new CastTransportSenderImpl(
+  transport_receiver_.reset(new CastTransportImpl(
       testing_clock_receiver_, base::TimeDelta::FromSeconds(1),
       make_scoped_ptr(new TransportClient(this)),
       make_scoped_ptr(receiver_to_sender_), task_runner_receiver_));
diff --git a/media/cast/test/end2end_unittest.cc b/media/cast/test/end2end_unittest.cc
index 0882402..3d72943 100644
--- a/media/cast/test/end2end_unittest.cc
+++ b/media/cast/test/end2end_unittest.cc
@@ -33,10 +33,10 @@
 #include "media/cast/cast_receiver.h"
 #include "media/cast/cast_sender.h"
 #include "media/cast/logging/simple_event_subscriber.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
 #include "media/cast/net/cast_transport_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 #include "media/cast/test/skewed_single_thread_task_runner.h"
 #include "media/cast/test/skewed_tick_clock.h"
 #include "media/cast/test/utility/audio_utility.h"
@@ -166,7 +166,7 @@
 // media/cast/test/loopback_transport.*.  It's roughly the same class and has
 // exactly the same name (and when it was outside of the anonymous namespace bad
 // things happened when linking on Android!).
-class LoopBackTransport : public PacketSender {
+class LoopBackTransport : public PacketTransport {
  public:
   explicit LoopBackTransport(scoped_refptr<CastEnvironment> cast_environment)
       : send_packets_(true),
@@ -859,11 +859,11 @@
   scoped_refptr<CastEnvironment> cast_environment_sender_;
   scoped_refptr<CastEnvironment> cast_environment_receiver_;
 
-  LoopBackTransport* receiver_to_sender_;  // Owned by CastTransportSender.
-  LoopBackTransport* sender_to_receiver_;  // Owned by CastTransportSender.
+  LoopBackTransport* receiver_to_sender_;  // Owned by CastTransport.
+  LoopBackTransport* sender_to_receiver_;  // Owned by CastTransport.
 
-  scoped_ptr<CastTransportSenderImpl> transport_sender_;
-  scoped_ptr<CastTransportSenderImpl> transport_receiver_;
+  scoped_ptr<CastTransportImpl> transport_sender_;
+  scoped_ptr<CastTransportImpl> transport_receiver_;
 
   scoped_ptr<CastReceiver> cast_receiver_;
   scoped_ptr<CastSender> cast_sender_;
@@ -886,7 +886,7 @@
 
 namespace {
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   TransportClient(LogEventDispatcher* log_event_dispatcher,
                   End2EndTest* e2e_test)
@@ -918,13 +918,13 @@
 }  // namespace
 
 void End2EndTest::Create() {
-  transport_sender_.reset(new CastTransportSenderImpl(
+  transport_sender_.reset(new CastTransportImpl(
       testing_clock_sender_, base::TimeDelta::FromMilliseconds(1),
       make_scoped_ptr(
           new TransportClient(cast_environment_sender_->logger(), nullptr)),
       make_scoped_ptr(sender_to_receiver_), task_runner_sender_));
 
-  transport_receiver_.reset(new CastTransportSenderImpl(
+  transport_receiver_.reset(new CastTransportImpl(
       testing_clock_sender_, base::TimeDelta::FromMilliseconds(1),
       make_scoped_ptr(
           new TransportClient(cast_environment_receiver_->logger(), this)),
diff --git a/media/cast/test/loopback_transport.h b/media/cast/test/loopback_transport.h
index 7f32c6f..60851a6 100644
--- a/media/cast/test/loopback_transport.h
+++ b/media/cast/test/loopback_transport.h
@@ -26,7 +26,7 @@
 }  // namespace test
 
 // Class that sends the packet to a receiver through a stack of PacketPipes.
-class LoopBackTransport : public PacketSender {
+class LoopBackTransport : public PacketTransport {
  public:
   explicit LoopBackTransport(
       scoped_refptr<CastEnvironment> cast_environment);
diff --git a/media/cast/test/sender.cc b/media/cast/test/sender.cc
index 5a834bb5..8750634c 100644
--- a/media/cast/test/sender.cc
+++ b/media/cast/test/sender.cc
@@ -32,8 +32,8 @@
 #include "media/cast/logging/proto/raw_events.pb.h"
 #include "media/cast/logging/receiver_time_offset_estimator_impl.h"
 #include "media/cast/logging/stats_event_subscriber.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
 #include "media/cast/net/udp_transport.h"
 #include "media/cast/test/fake_media_source.h"
 #include "media/cast/test/utility/default_config.h"
@@ -160,7 +160,7 @@
   VLOG(0) << "Audio stats: " << json;
 }
 
-class TransportClient : public media::cast::CastTransportSender::Client {
+class TransportClient : public media::cast::CastTransport::Client {
  public:
   explicit TransportClient(
       media::cast::LogEventDispatcher* log_event_dispatcher)
@@ -257,9 +257,9 @@
   if (cmd->HasSwitch(kSwitchVaryFrameSizes))
     fake_media_source->SetVariableFrameSizeMode(true);
 
-  // CastTransportSender initialization.
-  scoped_ptr<media::cast::CastTransportSender> transport_sender =
-      media::cast::CastTransportSender::Create(
+  // CastTransport initialization.
+  scoped_ptr<media::cast::CastTransport> transport_sender =
+      media::cast::CastTransport::Create(
           cast_environment->Clock(), base::TimeDelta::FromSeconds(1),
           make_scoped_ptr(new TransportClient(cast_environment->logger())),
           make_scoped_ptr(new media::cast::UdpTransport(
diff --git a/media/cast/test/simulator.cc b/media/cast/test/simulator.cc
index 9b5b911f..e68e0e8 100644
--- a/media/cast/test/simulator.cc
+++ b/media/cast/test/simulator.cc
@@ -69,10 +69,10 @@
 #include "media/cast/logging/proto/raw_events.pb.h"
 #include "media/cast/logging/raw_event_subscriber_bundle.h"
 #include "media/cast/logging/simple_event_subscriber.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
 #include "media/cast/net/cast_transport_defines.h"
-#include "media/cast/net/cast_transport_sender.h"
-#include "media/cast/net/cast_transport_sender_impl.h"
+#include "media/cast/net/cast_transport_impl.h"
 #include "media/cast/test/fake_media_source.h"
 #include "media/cast/test/loopback_transport.h"
 #include "media/cast/test/proto/network_simulation_model.pb.h"
@@ -131,7 +131,7 @@
   CastReceiver* receiver;
 };
 
-class TransportClient : public CastTransportSender::Client {
+class TransportClient : public CastTransport::Client {
  public:
   TransportClient(LogEventDispatcher* log_event_dispatcher,
                   PacketProxy* packet_proxy)
@@ -379,19 +379,18 @@
   video_receiver_config.rtp_max_delay_ms =
       video_sender_config.max_playout_delay.InMilliseconds();
 
-  // Loopback transport. Owned by CastTransportSender.
+  // Loopback transport. Owned by CastTransport.
   LoopBackTransport* receiver_to_sender = new LoopBackTransport(receiver_env);
   LoopBackTransport* sender_to_receiver = new LoopBackTransport(sender_env);
 
   PacketProxy packet_proxy;
 
   // Cast receiver.
-  scoped_ptr<CastTransportSender> transport_receiver(
-      new CastTransportSenderImpl(
-          &testing_clock, base::TimeDelta::FromSeconds(1),
-          make_scoped_ptr(
-              new TransportClient(receiver_env->logger(), &packet_proxy)),
-          make_scoped_ptr(receiver_to_sender), task_runner));
+  scoped_ptr<CastTransport> transport_receiver(
+      new CastTransportImpl(&testing_clock, base::TimeDelta::FromSeconds(1),
+                            make_scoped_ptr(new TransportClient(
+                                receiver_env->logger(), &packet_proxy)),
+                            make_scoped_ptr(receiver_to_sender), task_runner));
   scoped_ptr<CastReceiver> cast_receiver(
       CastReceiver::Create(receiver_env,
                            audio_receiver_config,
@@ -401,7 +400,7 @@
   packet_proxy.receiver = cast_receiver.get();
 
   // Cast sender and transport sender.
-  scoped_ptr<CastTransportSender> transport_sender(new CastTransportSenderImpl(
+  scoped_ptr<CastTransport> transport_sender(new CastTransportImpl(
       &testing_clock, base::TimeDelta::FromSeconds(1),
       make_scoped_ptr(new TransportClient(sender_env->logger(), nullptr)),
       make_scoped_ptr(sender_to_receiver), task_runner));
diff --git a/media/cast/test/utility/in_process_receiver.cc b/media/cast/test/utility/in_process_receiver.cc
index b4da3a8..86bce03 100644
--- a/media/cast/test/utility/in_process_receiver.cc
+++ b/media/cast/test/utility/in_process_receiver.cc
@@ -93,7 +93,7 @@
 
   DCHECK(!transport_ && !cast_receiver_);
 
-  transport_ = CastTransportSender::Create(
+  transport_ = CastTransport::Create(
       cast_environment_->Clock(), base::TimeDelta(),
       make_scoped_ptr(new InProcessReceiver::TransportClient(this)),
       make_scoped_ptr(new UdpTransport(
diff --git a/media/cast/test/utility/in_process_receiver.h b/media/cast/test/utility/in_process_receiver.h
index 8248ceb..f6ea167 100644
--- a/media/cast/test/utility/in_process_receiver.h
+++ b/media/cast/test/utility/in_process_receiver.h
@@ -11,8 +11,8 @@
 #include "base/memory/weak_ptr.h"
 #include "media/base/audio_bus.h"
 #include "media/cast/cast_config.h"
+#include "media/cast/net/cast_transport.h"
 #include "media/cast/net/cast_transport_config.h"
-#include "media/cast/net/cast_transport_sender.h"
 #include "net/base/ip_endpoint.h"
 
 namespace base {
@@ -41,7 +41,7 @@
 // rather than on the boilerplate "glue" code.
 class InProcessReceiver {
  public:
-  class TransportClient : public CastTransportSender::Client {
+  class TransportClient : public CastTransport::Client {
    public:
     explicit TransportClient(InProcessReceiver* in_process_receiver)
         : in_process_receiver_(in_process_receiver) {}
@@ -128,7 +128,7 @@
   const FrameReceiverConfig audio_config_;
   const FrameReceiverConfig video_config_;
 
-  scoped_ptr<CastTransportSender> transport_;
+  scoped_ptr<CastTransport> transport_;
   scoped_ptr<CastReceiver> cast_receiver_;
 
   // NOTE: Weak pointers must be invalidated before all other member variables.
diff --git a/media/filters/pipeline_controller.cc b/media/filters/pipeline_controller.cc
index 1d5e951..4c7a896 100644
--- a/media/filters/pipeline_controller.cc
+++ b/media/filters/pipeline_controller.cc
@@ -16,20 +16,17 @@
     const RendererFactoryCB& renderer_factory_cb,
     const SeekedCB& seeked_cb,
     const SuspendedCB& suspended_cb,
-    const ResumedCB& resumed_cb,
     const PipelineStatusCB& error_cb)
     : pipeline_(pipeline),
       renderer_factory_cb_(renderer_factory_cb),
       seeked_cb_(seeked_cb),
       suspended_cb_(suspended_cb),
-      resumed_cb_(resumed_cb),
       error_cb_(error_cb),
       weak_factory_(this) {
   DCHECK(pipeline_);
   DCHECK(!renderer_factory_cb_.is_null());
   DCHECK(!seeked_cb_.is_null());
   DCHECK(!suspended_cb_.is_null());
-  DCHECK(!resumed_cb_.is_null());
   DCHECK(!error_cb_.is_null());
 }
 
@@ -114,12 +111,17 @@
 
 bool PipelineController::IsStable() {
   DCHECK(thread_checker_.CalledOnValidThread());
-  return (state_ == State::PLAYING);
+  return state_ == State::PLAYING;
 }
 
 bool PipelineController::IsSuspended() {
   DCHECK(thread_checker_.CalledOnValidThread());
-  return (state_ == State::SUSPENDED);
+  return (pending_suspend_ || state_ == State::SUSPENDED) && !pending_resume_;
+}
+
+bool PipelineController::IsPipelineSuspended() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  return state_ == State::SUSPENDED;
 }
 
 void PipelineController::OnPipelineStatus(State state,
@@ -137,16 +139,7 @@
     // Start(), Seek(), or Resume() completed; we can be sure that
     // |demuxer_| got the seek it was waiting for.
     waiting_for_seek_ = false;
-    if (pending_resumed_cb_) {
-      pending_resumed_cb_ = false;
-
-      // Warning: possibly reentrant. The state may change inside this callback.
-      // It must be safe to call Dispatch() twice in a row here.
-      resumed_cb_.Run();
-    }
   } else if (state == State::SUSPENDED) {
-    pending_resumed_cb_ = true;
-
     // Warning: possibly reentrant. The state may change inside this callback.
     // It must be safe to call Dispatch() twice in a row here.
     suspended_cb_.Run();
diff --git a/media/filters/pipeline_controller.h b/media/filters/pipeline_controller.h
index 5d67c17..f5cb6a1 100644
--- a/media/filters/pipeline_controller.h
+++ b/media/filters/pipeline_controller.h
@@ -41,7 +41,6 @@
   using RendererFactoryCB = base::Callback<scoped_ptr<Renderer>(void)>;
   using SeekedCB = base::Callback<void(bool time_updated)>;
   using SuspendedCB = base::Callback<void()>;
-  using ResumedCB = base::Callback<void()>;
 
   // Construct a PipelineController wrapping |pipeline_|. |pipeline_| must
   // outlive the resulting PipelineController. The callbacks are:
@@ -49,14 +48,12 @@
   //     renderers when starting and resuming.
   //   - |seeked_cb| is called upon reaching a stable state if a seek occured.
   //   - |suspended_cb| is called immediately after suspendeding.
-  //   - |resumed_cb| is called immediately after resuming.
   //   - |error_cb| is called if any operation on |pipeline_| does not result
   //     in PIPELINE_OK or its error callback is called.
   PipelineController(Pipeline* pipeline,
                      const RendererFactoryCB& renderer_factory_cb,
                      const SeekedCB& seeked_cb,
                      const SuspendedCB& suspended_cb,
-                     const ResumedCB& resumed_cb,
                      const PipelineStatusCB& error_cb);
   ~PipelineController();
 
@@ -104,9 +101,12 @@
   //   - Resume() is processed immediately while in the SUSPENDED state.
   bool IsStable();
 
-  // Returns true if |pipeline_| is suspended.
+  // Returns true if the current target state is suspended.
   bool IsSuspended();
 
+  // Returns true if |pipeline_| is suspended.
+  bool IsPipelineSuspended();
+
  private:
   // Attempts to make progress from the current state to the target state.
   void Dispatch();
@@ -128,9 +128,6 @@
   // Called immediately when |pipeline_| completes a suspend operation.
   SuspendedCB suspended_cb_;
 
-  // Called immediately when |pipeline_| completes a resume operation.
-  ResumedCB resumed_cb_;
-
   // Called immediately when any operation on |pipeline_| results in an error.
   PipelineStatusCB error_cb_;
 
@@ -156,10 +153,6 @@
   // the next seeked callback.
   bool pending_time_updated_ = false;
 
-  // Indicates that the |pipeline_| was suspended, and therefore that a resumed
-  // callback should be issued the next time we enter State::PLAYING.
-  bool pending_resumed_cb_ = false;
-
   // The target time of the active seek; valid while SEEKING or RESUMING.
   base::TimeDelta seek_time_;
 
diff --git a/media/filters/pipeline_controller_unittest.cc b/media/filters/pipeline_controller_unittest.cc
index bd9fad1..eec11d8 100644
--- a/media/filters/pipeline_controller_unittest.cc
+++ b/media/filters/pipeline_controller_unittest.cc
@@ -36,8 +36,6 @@
                                         base::Unretained(this)),
                              base::Bind(&PipelineControllerTest::OnSuspended,
                                         base::Unretained(this)),
-                             base::Bind(&PipelineControllerTest::OnResumed,
-                                        base::Unretained(this)),
                              base::Bind(&PipelineControllerTest::OnError,
                                         base::Unretained(this))) {}
 
@@ -84,12 +82,12 @@
     pipeline_controller_.Suspend();
     Mock::VerifyAndClear(&pipeline_);
     EXPECT_FALSE(pipeline_controller_.IsStable());
-    EXPECT_FALSE(pipeline_controller_.IsSuspended());
+    EXPECT_FALSE(pipeline_controller_.IsPipelineSuspended());
     return suspend_cb;
   }
 
   PipelineStatusCB ResumePipeline() {
-    EXPECT_TRUE(pipeline_controller_.IsSuspended());
+    EXPECT_TRUE(pipeline_controller_.IsPipelineSuspended());
     PipelineStatusCB resume_cb;
     EXPECT_CALL(pipeline_, Resume(_, _, _))
         .WillOnce(
@@ -99,7 +97,7 @@
     pipeline_controller_.Resume();
     Mock::VerifyAndClear(&pipeline_);
     EXPECT_FALSE(pipeline_controller_.IsStable());
-    EXPECT_FALSE(pipeline_controller_.IsSuspended());
+    EXPECT_FALSE(pipeline_controller_.IsPipelineSuspended());
     return resume_cb;
   }
 
@@ -118,8 +116,6 @@
 
   void OnSuspended() { was_suspended_ = true; }
 
-  void OnResumed() { was_resumed_ = true; }
-
   void OnError(PipelineStatus status) { NOTREACHED(); }
 
   base::MessageLoop message_loop_;
@@ -131,7 +127,6 @@
   bool was_seeked_ = false;
   bool last_seeked_time_updated_ = false;
   bool was_suspended_ = false;
-  bool was_resumed_ = false;
   base::TimeDelta last_resume_time_;
 
   DISALLOW_COPY_AND_ASSIGN(PipelineControllerTest);
@@ -145,7 +140,6 @@
   EXPECT_TRUE(was_seeked_);
   EXPECT_FALSE(last_seeked_time_updated_);
   EXPECT_FALSE(was_suspended_);
-  EXPECT_FALSE(was_resumed_);
   EXPECT_TRUE(pipeline_controller_.IsStable());
 }
 
@@ -156,11 +150,9 @@
 
   Complete(SuspendPipeline());
   EXPECT_TRUE(was_suspended_);
-  EXPECT_FALSE(was_resumed_);
   EXPECT_FALSE(pipeline_controller_.IsStable());
 
   Complete(ResumePipeline());
-  EXPECT_TRUE(was_resumed_);
   EXPECT_TRUE(pipeline_controller_.IsStable());
 
   // |was_seeked_| should not be affected by Suspend()/Resume() at all.
@@ -194,7 +186,6 @@
   message_loop_.RunUntilIdle();
 
   Complete(ResumePipeline());
-  EXPECT_TRUE(was_resumed_);
   EXPECT_EQ(seek_time, last_resume_time_);
 }
 
@@ -207,7 +198,6 @@
   message_loop_.RunUntilIdle();
 
   Complete(ResumePipeline());
-  EXPECT_TRUE(was_resumed_);
   EXPECT_EQ(base::TimeDelta(), last_resume_time_);
 }
 
diff --git a/media/mojo/common/media_type_converters.cc b/media/mojo/common/media_type_converters.cc
index 709389f..37966ab 100644
--- a/media/mojo/common/media_type_converters.cc
+++ b/media/mojo/common/media_type_converters.cc
@@ -7,6 +7,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "base/memory/ptr_util.h"
 #include "base/numerics/safe_conversions.h"
 #include "media/base/audio_buffer.h"
 #include "media/base/audio_decoder_config.h"
@@ -398,11 +399,11 @@
 }
 
 // static
-scoped_ptr<media::DecryptConfig>
-TypeConverter<scoped_ptr<media::DecryptConfig>,
+std::unique_ptr<media::DecryptConfig>
+TypeConverter<std::unique_ptr<media::DecryptConfig>,
               media::interfaces::DecryptConfigPtr>::
     Convert(const media::interfaces::DecryptConfigPtr& input) {
-  return make_scoped_ptr(new media::DecryptConfig(
+  return base::WrapUnique(new media::DecryptConfig(
       input->key_id, input->iv,
       input->subsamples.To<std::vector<media::SubsampleEntry>>()));
 }
@@ -471,7 +472,7 @@
 
   if (input->decrypt_config) {
     buffer->set_decrypt_config(
-        input->decrypt_config.To<scoped_ptr<media::DecryptConfig>>());
+        input->decrypt_config.To<std::unique_ptr<media::DecryptConfig>>());
   }
 
   media::DecoderBuffer::DiscardPadding discard_padding(
@@ -582,11 +583,11 @@
 }
 
 // static
-scoped_ptr<media::CdmKeyInformation>
-TypeConverter<scoped_ptr<media::CdmKeyInformation>,
+std::unique_ptr<media::CdmKeyInformation>
+TypeConverter<std::unique_ptr<media::CdmKeyInformation>,
               media::interfaces::CdmKeyInformationPtr>::
     Convert(const media::interfaces::CdmKeyInformationPtr& input) {
-  return make_scoped_ptr(new media::CdmKeyInformation(
+  return base::WrapUnique(new media::CdmKeyInformation(
       input->key_id.storage(),
       static_cast<media::CdmKeyInformation::KeyStatus>(input->status),
       input->system_code));
diff --git a/media/mojo/common/media_type_converters.h b/media/mojo/common/media_type_converters.h
index 6b5664b..10b4d3e 100644
--- a/media/mojo/common/media_type_converters.h
+++ b/media/mojo/common/media_type_converters.h
@@ -5,8 +5,9 @@
 #ifndef MEDIA_MOJO_COMMON_MEDIA_TYPE_CONVERTERS_H_
 #define MEDIA_MOJO_COMMON_MEDIA_TYPE_CONVERTERS_H_
 
+#include <memory>
+
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "media/mojo/interfaces/content_decryption_module.mojom.h"
 #include "media/mojo/interfaces/media_types.mojom.h"
 #include "mojo/public/cpp/bindings/type_converter.h"
@@ -61,9 +62,9 @@
       const media::DecryptConfig& input);
 };
 template <>
-struct TypeConverter<scoped_ptr<media::DecryptConfig>,
+struct TypeConverter<std::unique_ptr<media::DecryptConfig>,
                      media::interfaces::DecryptConfigPtr> {
-  static scoped_ptr<media::DecryptConfig> Convert(
+  static std::unique_ptr<media::DecryptConfig> Convert(
       const media::interfaces::DecryptConfigPtr& input);
 };
 
@@ -113,9 +114,9 @@
       const media::CdmKeyInformation& input);
 };
 template <>
-struct TypeConverter<scoped_ptr<media::CdmKeyInformation>,
+struct TypeConverter<std::unique_ptr<media::CdmKeyInformation>,
                      media::interfaces::CdmKeyInformationPtr> {
-  static scoped_ptr<media::CdmKeyInformation> Convert(
+  static std::unique_ptr<media::CdmKeyInformation> Convert(
       const media::interfaces::CdmKeyInformationPtr& input);
 };
 
diff --git a/media/mojo/common/media_type_converters_unittest.cc b/media/mojo/common/media_type_converters_unittest.cc
index 5a2237f..0da9991 100644
--- a/media/mojo/common/media_type_converters_unittest.cc
+++ b/media/mojo/common/media_type_converters_unittest.cc
@@ -9,6 +9,7 @@
 #include <string.h>
 
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "media/base/audio_buffer.h"
 #include "media/base/audio_decoder_config.h"
 #include "media/base/cdm_config.h"
@@ -258,7 +259,7 @@
   scoped_refptr<DecoderBuffer> buffer(DecoderBuffer::CopyFrom(
       reinterpret_cast<const uint8_t*>(&kData), kDataSize));
   buffer->set_decrypt_config(
-      make_scoped_ptr(new DecryptConfig(kKeyId, kIv, subsamples)));
+      base::WrapUnique(new DecryptConfig(kKeyId, kIv, subsamples)));
 
   // Convert from and back.
   interfaces::DecoderBufferPtr ptr(interfaces::DecoderBuffer::From(buffer));
@@ -271,7 +272,7 @@
   EXPECT_TRUE(buffer->decrypt_config()->Matches(*result->decrypt_config()));
 
   // Test empty IV. This is used for clear buffer in an encrypted stream.
-  buffer->set_decrypt_config(make_scoped_ptr(
+  buffer->set_decrypt_config(base::WrapUnique(
       new DecryptConfig(kKeyId, "", std::vector<SubsampleEntry>())));
   result = interfaces::DecoderBuffer::From(buffer)
                .To<scoped_refptr<DecoderBuffer>>();
diff --git a/media/mojo/services/android_mojo_media_client.cc b/media/mojo/services/android_mojo_media_client.cc
index bea01fe..08cf47a 100644
--- a/media/mojo/services/android_mojo_media_client.cc
+++ b/media/mojo/services/android_mojo_media_client.cc
@@ -4,6 +4,7 @@
 
 #include "media/mojo/services/android_mojo_media_client.h"
 
+#include "base/memory/ptr_util.h"
 #include "media/base/android/android_cdm_factory.h"
 #include "media/filters/android/media_codec_audio_decoder.h"
 #include "media/mojo/interfaces/provision_fetcher.mojom.h"
@@ -14,11 +15,11 @@
 
 namespace {
 
-scoped_ptr<ProvisionFetcher> CreateProvisionFetcher(
+std::unique_ptr<ProvisionFetcher> CreateProvisionFetcher(
     mojo::shell::mojom::InterfaceProvider* interface_provider) {
   interfaces::ProvisionFetcherPtr provision_fetcher_ptr;
   mojo::GetInterface(interface_provider, &provision_fetcher_ptr);
-  return make_scoped_ptr(
+  return base::WrapUnique(
       new MojoProvisionFetcher(std::move(provision_fetcher_ptr)));
 }
 
@@ -30,14 +31,14 @@
 
 // MojoMediaClient overrides.
 
-scoped_ptr<AudioDecoder> AndroidMojoMediaClient::CreateAudioDecoder(
+std::unique_ptr<AudioDecoder> AndroidMojoMediaClient::CreateAudioDecoder(
     scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
-  return make_scoped_ptr(new MediaCodecAudioDecoder(task_runner));
+  return base::WrapUnique(new MediaCodecAudioDecoder(task_runner));
 }
 
-scoped_ptr<CdmFactory> AndroidMojoMediaClient::CreateCdmFactory(
+std::unique_ptr<CdmFactory> AndroidMojoMediaClient::CreateCdmFactory(
     mojo::shell::mojom::InterfaceProvider* interface_provider) {
-  return make_scoped_ptr(new AndroidCdmFactory(
+  return base::WrapUnique(new AndroidCdmFactory(
       base::Bind(&CreateProvisionFetcher, interface_provider)));
 }
 
diff --git a/media/mojo/services/android_mojo_media_client.h b/media/mojo/services/android_mojo_media_client.h
index 709a5d22..a158912 100644
--- a/media/mojo/services/android_mojo_media_client.h
+++ b/media/mojo/services/android_mojo_media_client.h
@@ -5,6 +5,8 @@
 #ifndef MEDIA_MOJO_SERVICES_ANDROID_MOJO_MEDIA_CLIENT_H_
 #define MEDIA_MOJO_SERVICES_ANDROID_MOJO_MEDIA_CLIENT_H_
 
+#include <memory>
+
 #include "base/macros.h"
 #include "media/mojo/services/mojo_media_client.h"
 
@@ -16,10 +18,10 @@
   ~AndroidMojoMediaClient() final;
 
   // MojoMediaClient implementation.
-  scoped_ptr<AudioDecoder> CreateAudioDecoder(
+  std::unique_ptr<AudioDecoder> CreateAudioDecoder(
       scoped_refptr<base::SingleThreadTaskRunner> task_runner) final;
 
-  scoped_ptr<CdmFactory> CreateCdmFactory(
+  std::unique_ptr<CdmFactory> CreateCdmFactory(
       mojo::shell::mojom::InterfaceProvider* interface_provider) final;
 
  private:
diff --git a/media/mojo/services/default_mojo_media_client.cc b/media/mojo/services/default_mojo_media_client.cc
index 6716e56..8891e6d69 100644
--- a/media/mojo/services/default_mojo_media_client.cc
+++ b/media/mojo/services/default_mojo_media_client.cc
@@ -14,7 +14,7 @@
   // TODO(jrummell): Do one-time initialization work here.
 }
 
-scoped_ptr<CdmFactory> DefaultMojoMediaClient::CreateCdmFactory(
+std::unique_ptr<CdmFactory> DefaultMojoMediaClient::CreateCdmFactory(
     mojo::shell::mojom::InterfaceProvider* /* interface_provider */) {
   DVLOG(1) << __FUNCTION__;
   // TODO(jrummell): Return a CdmFactory that can create CdmAdapter here.
diff --git a/media/mojo/services/default_mojo_media_client.h b/media/mojo/services/default_mojo_media_client.h
index fc73d63c..bbb232096 100644
--- a/media/mojo/services/default_mojo_media_client.h
+++ b/media/mojo/services/default_mojo_media_client.h
@@ -5,6 +5,8 @@
 #ifndef MEDIA_MOJO_SERVICES_DEFAULT_MOJO_MEDIA_CLIENT_H_
 #define MEDIA_MOJO_SERVICES_DEFAULT_MOJO_MEDIA_CLIENT_H_
 
+#include <memory>
+
 #include "base/macros.h"
 #include "media/mojo/services/mojo_media_client.h"
 
@@ -18,7 +20,7 @@
 
   // MojoMediaClient implementation.
   void Initialize() final;
-  scoped_ptr<CdmFactory> CreateCdmFactory(
+  std::unique_ptr<CdmFactory> CreateCdmFactory(
       mojo::shell::mojom::InterfaceProvider* /* interface_provider */) final;
 
  private:
diff --git a/media/mojo/services/main.cc b/media/mojo/services/main.cc
index 5f2d6a4..c5496b6 100644
--- a/media/mojo/services/main.cc
+++ b/media/mojo/services/main.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/at_exit.h"
+#include "base/memory/ptr_util.h"
 #include "media/mojo/services/mojo_media_application.h"
 #include "media/mojo/services/test_mojo_media_client.h"
 #include "mojo/logging/init_logging.h"
@@ -16,6 +17,6 @@
   mojo::InitLogging();
 
   mojo::ApplicationRunner runner(new media::MojoMediaApplication(
-      make_scoped_ptr(new media::TestMojoMediaClient())));
+      base::WrapUnique(new media::TestMojoMediaClient())));
   return runner.Run(mojo_handle, false /* init_base */);
 }
diff --git a/media/mojo/services/media_apptest.cc b/media/mojo/services/media_apptest.cc
index b9764510f..a0986c7c 100644
--- a/media/mojo/services/media_apptest.cc
+++ b/media/mojo/services/media_apptest.cc
@@ -3,12 +3,13 @@
 // found in the LICENSE file.
 
 #include <stdint.h>
+
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/run_loop.h"
 #include "media/base/cdm_config.h"
 #include "media/base/mock_filters.h"
@@ -115,7 +116,7 @@
   MOCK_METHOD0(ConnectionClosed, void());
 
  protected:
-  scoped_ptr<base::RunLoop> run_loop_;
+  std::unique_ptr<base::RunLoop> run_loop_;
 
   interfaces::ServiceFactoryPtr service_factory_;
   interfaces::ContentDecryptionModulePtr cdm_;
@@ -127,7 +128,7 @@
   StrictMock<MockDemuxerStream> video_demuxer_stream_;
 
  private:
-  scoped_ptr<mojo::Connection> connection_;
+  std::unique_ptr<mojo::Connection> connection_;
 
   DISALLOW_COPY_AND_ASSIGN(MediaAppTest);
 };
diff --git a/media/mojo/services/mojo_audio_decoder_service.cc b/media/mojo/services/mojo_audio_decoder_service.cc
index 16ab502..d0135f50 100644
--- a/media/mojo/services/mojo_audio_decoder_service.cc
+++ b/media/mojo/services/mojo_audio_decoder_service.cc
@@ -16,7 +16,7 @@
 
 MojoAudioDecoderService::MojoAudioDecoderService(
     base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
-    scoped_ptr<media::AudioDecoder> decoder,
+    std::unique_ptr<media::AudioDecoder> decoder,
     mojo::InterfaceRequest<interfaces::AudioDecoder> request)
     : binding_(this, std::move(request)),
       mojo_cdm_service_context_(mojo_cdm_service_context),
diff --git a/media/mojo/services/mojo_audio_decoder_service.h b/media/mojo/services/mojo_audio_decoder_service.h
index 888fb586..aa061f8 100644
--- a/media/mojo/services/mojo_audio_decoder_service.h
+++ b/media/mojo/services/mojo_audio_decoder_service.h
@@ -5,8 +5,11 @@
 #ifndef MEDIA_MOJO_SERVICES_MOJO_AUDIO_DECODER_SERVICE_H_
 #define MEDIA_MOJO_SERVICES_MOJO_AUDIO_DECODER_SERVICE_H_
 
+#include <stdint.h>
+
+#include <memory>
+
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "media/base/audio_decoder.h"
 #include "media/mojo/interfaces/audio_decoder.mojom.h"
@@ -22,7 +25,7 @@
  public:
   MojoAudioDecoderService(
       base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
-      scoped_ptr<media::AudioDecoder> decoder,
+      std::unique_ptr<media::AudioDecoder> decoder,
       mojo::InterfaceRequest<interfaces::AudioDecoder> request);
 
   ~MojoAudioDecoderService() final;
@@ -71,7 +74,7 @@
   base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context_;
 
   // The AudioDecoder that does actual decoding work.
-  scoped_ptr<media::AudioDecoder> decoder_;
+  std::unique_ptr<media::AudioDecoder> decoder_;
 
   // The destination for the decoded buffers.
   interfaces::AudioDecoderClientPtr client_;
diff --git a/media/mojo/services/mojo_cdm.cc b/media/mojo/services/mojo_cdm.cc
index a060232..d2eaca92 100644
--- a/media/mojo/services/mojo_cdm.cc
+++ b/media/mojo/services/mojo_cdm.cc
@@ -26,7 +26,7 @@
 namespace media {
 
 template <typename PromiseType>
-static void RejectPromise(scoped_ptr<PromiseType> promise,
+static void RejectPromise(std::unique_ptr<PromiseType> promise,
                           interfaces::CdmPromiseResultPtr result) {
   promise->reject(static_cast<MediaKeys::Exception>(result->exception),
                   result->system_code, result->error_message);
@@ -50,7 +50,7 @@
                   session_expiration_update_cb));
 
   // |mojo_cdm| ownership is passed to the promise.
-  scoped_ptr<CdmInitializedPromise> promise(
+  std::unique_ptr<CdmInitializedPromise> promise(
       new CdmInitializedPromise(cdm_created_cb, mojo_cdm));
 
   mojo_cdm->InitializeCdm(key_system, security_origin, cdm_config,
@@ -104,7 +104,7 @@
 void MojoCdm::InitializeCdm(const std::string& key_system,
                             const GURL& security_origin,
                             const media::CdmConfig& cdm_config,
-                            scoped_ptr<CdmInitializedPromise> promise) {
+                            std::unique_ptr<CdmInitializedPromise> promise) {
   DVLOG(1) << __FUNCTION__ << ": " << key_system;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -141,7 +141,7 @@
 }
 
 void MojoCdm::SetServerCertificate(const std::vector<uint8_t>& certificate,
-                                   scoped_ptr<SimpleCdmPromise> promise) {
+                                   std::unique_ptr<SimpleCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -155,7 +155,7 @@
     SessionType session_type,
     EmeInitDataType init_data_type,
     const std::vector<uint8_t>& init_data,
-    scoped_ptr<NewSessionCdmPromise> promise) {
+    std::unique_ptr<NewSessionCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -171,7 +171,7 @@
 
 void MojoCdm::LoadSession(SessionType session_type,
                           const std::string& session_id,
-                          scoped_ptr<NewSessionCdmPromise> promise) {
+                          std::unique_ptr<NewSessionCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -184,7 +184,7 @@
 
 void MojoCdm::UpdateSession(const std::string& session_id,
                             const std::vector<uint8_t>& response,
-                            scoped_ptr<SimpleCdmPromise> promise) {
+                            std::unique_ptr<SimpleCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -195,7 +195,7 @@
 }
 
 void MojoCdm::CloseSession(const std::string& session_id,
-                           scoped_ptr<SimpleCdmPromise> promise) {
+                           std::unique_ptr<SimpleCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -205,7 +205,7 @@
 }
 
 void MojoCdm::RemoveSession(const std::string& session_id,
-                            scoped_ptr<SimpleCdmPromise> promise) {
+                            std::unique_ptr<SimpleCdmPromise> promise) {
   DVLOG(2) << __FUNCTION__;
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -304,7 +304,7 @@
   key_data.reserve(keys_info.size());
   for (size_t i = 0; i < keys_info.size(); ++i) {
     key_data.push_back(
-        keys_info[i].To<scoped_ptr<media::CdmKeyInformation>>().release());
+        keys_info[i].To<std::unique_ptr<media::CdmKeyInformation>>().release());
   }
   session_keys_change_cb_.Run(session_id, has_additional_usable_key,
                               std::move(key_data));
diff --git a/media/mojo/services/mojo_cdm.h b/media/mojo/services/mojo_cdm.h
index ccea01a..e220e6db 100644
--- a/media/mojo/services/mojo_cdm.h
+++ b/media/mojo/services/mojo_cdm.h
@@ -6,11 +6,12 @@
 #define MEDIA_MOJO_SERVICES_MOJO_CDM_H_
 
 #include <stdint.h>
+
+#include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/synchronization/lock.h"
 #include "base/threading/thread_checker.h"
@@ -50,22 +51,22 @@
 
   // MediaKeys implementation.
   void SetServerCertificate(const std::vector<uint8_t>& certificate,
-                            scoped_ptr<SimpleCdmPromise> promise) final;
+                            std::unique_ptr<SimpleCdmPromise> promise) final;
   void CreateSessionAndGenerateRequest(
       SessionType session_type,
       EmeInitDataType init_data_type,
       const std::vector<uint8_t>& init_data,
-      scoped_ptr<NewSessionCdmPromise> promise) final;
+      std::unique_ptr<NewSessionCdmPromise> promise) final;
   void LoadSession(SessionType session_type,
                    const std::string& session_id,
-                   scoped_ptr<NewSessionCdmPromise> promise) final;
+                   std::unique_ptr<NewSessionCdmPromise> promise) final;
   void UpdateSession(const std::string& session_id,
                      const std::vector<uint8_t>& response,
-                     scoped_ptr<SimpleCdmPromise> promise) final;
+                     std::unique_ptr<SimpleCdmPromise> promise) final;
   void CloseSession(const std::string& session_id,
-                    scoped_ptr<SimpleCdmPromise> promise) final;
+                    std::unique_ptr<SimpleCdmPromise> promise) final;
   void RemoveSession(const std::string& session_id,
-                     scoped_ptr<SimpleCdmPromise> promise) final;
+                     std::unique_ptr<SimpleCdmPromise> promise) final;
   CdmContext* GetCdmContext() final;
 
   // CdmContext implementation. Can be called on a different thread.
@@ -86,7 +87,7 @@
   void InitializeCdm(const std::string& key_system,
                      const GURL& security_origin,
                      const media::CdmConfig& cdm_config,
-                     scoped_ptr<CdmInitializedPromise> promise);
+                     std::unique_ptr<CdmInitializedPromise> promise);
 
   void OnConnectionError();
 
@@ -123,7 +124,7 @@
   // it when this method is not inlined. It fails with error C2244
   // "unable to match function definition to an existing declaration".
   template <typename... T>
-  void OnPromiseResult(scoped_ptr<CdmPromiseTemplate<T...>> promise,
+  void OnPromiseResult(std::unique_ptr<CdmPromiseTemplate<T...>> promise,
                        interfaces::CdmPromiseResultPtr result,
                        typename MojoTypeTrait<T>::MojoType... args) {
     if (result->success)
@@ -154,7 +155,7 @@
   // Decryptor based on |decryptor_ptr_|, lazily created in GetDecryptor().
   // Since GetDecryptor() can be called on a different thread, use
   // |decryptor_task_runner_| to bind |decryptor_| to that thread.
-  scoped_ptr<MojoDecryptor> decryptor_;
+  std::unique_ptr<MojoDecryptor> decryptor_;
   scoped_refptr<base::SingleThreadTaskRunner> decryptor_task_runner_;
 
   // Callbacks for firing session events.
@@ -165,7 +166,7 @@
   SessionExpirationUpdateCB session_expiration_update_cb_;
 
   // Pending promise for InitializeCdm().
-  scoped_ptr<CdmInitializedPromise> pending_init_promise_;
+  std::unique_ptr<CdmInitializedPromise> pending_init_promise_;
 
   // This must be the last member.
   base::WeakPtrFactory<MojoCdm> weak_factory_;
diff --git a/media/mojo/services/mojo_cdm_allocator.cc b/media/mojo/services/mojo_cdm_allocator.cc
index e3720ce..2040772 100644
--- a/media/mojo/services/mojo_cdm_allocator.cc
+++ b/media/mojo/services/mojo_cdm_allocator.cc
@@ -8,6 +8,7 @@
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/memory/ptr_util.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/numerics/safe_math.h"
 #include "media/cdm/api/content_decryption_module.h"
@@ -203,9 +204,9 @@
 }
 
 // Creates a new SimpleCdmVideoFrame on every request.
-scoped_ptr<VideoFrameImpl> MojoCdmAllocator::CreateCdmVideoFrame() {
+std::unique_ptr<VideoFrameImpl> MojoCdmAllocator::CreateCdmVideoFrame() {
   DCHECK(thread_checker_.CalledOnValidThread());
-  return make_scoped_ptr(new MojoCdmVideoFrame(
+  return base::WrapUnique(new MojoCdmVideoFrame(
       base::Bind(&MojoCdmAllocator::AddBufferToAvailableMap,
                  weak_ptr_factory_.GetWeakPtr())));
 }
diff --git a/media/mojo/services/mojo_cdm_allocator.h b/media/mojo/services/mojo_cdm_allocator.h
index eab430a3..c2e3549 100644
--- a/media/mojo/services/mojo_cdm_allocator.h
+++ b/media/mojo/services/mojo_cdm_allocator.h
@@ -9,6 +9,7 @@
 #include <stdint.h>
 
 #include <map>
+#include <memory>
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -27,7 +28,7 @@
 
   // CdmAllocator implementation.
   cdm::Buffer* CreateCdmBuffer(size_t capacity) final;
-  scoped_ptr<VideoFrameImpl> CreateCdmVideoFrame() final;
+  std::unique_ptr<VideoFrameImpl> CreateCdmVideoFrame() final;
 
  private:
   friend class MojoCdmAllocatorTest;
diff --git a/media/mojo/services/mojo_cdm_allocator_unittest.cc b/media/mojo/services/mojo_cdm_allocator_unittest.cc
index 47fa1114..82e8a004 100644
--- a/media/mojo/services/mojo_cdm_allocator_unittest.cc
+++ b/media/mojo/services/mojo_cdm_allocator_unittest.cc
@@ -27,7 +27,7 @@
     return allocator_.CreateCdmBuffer(capacity);
   }
 
-  scoped_ptr<VideoFrameImpl> CreateCdmVideoFrame() {
+  std::unique_ptr<VideoFrameImpl> CreateCdmVideoFrame() {
     return allocator_.CreateCdmVideoFrame();
   }
 
@@ -92,7 +92,7 @@
   const size_t kBufferSize = VideoFrame::AllocationSize(kFormat, kSize);
 
   // Create a VideoFrameImpl and initialize it.
-  scoped_ptr<VideoFrameImpl> video_frame = CreateCdmVideoFrame();
+  std::unique_ptr<VideoFrameImpl> video_frame = CreateCdmVideoFrame();
   video_frame->SetFormat(cdm::kI420);
   video_frame->SetSize(cdm::Size(kHeight, kWidth));
   video_frame->SetStride(
diff --git a/media/mojo/services/mojo_cdm_service.cc b/media/mojo/services/mojo_cdm_service.cc
index 8d89640..714e564 100644
--- a/media/mojo/services/mojo_cdm_service.cc
+++ b/media/mojo/services/mojo_cdm_service.cc
@@ -10,6 +10,7 @@
 #include "base/bind.h"
 #include "base/lazy_instance.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/synchronization/lock.h"
 #include "media/base/cdm_config.h"
 #include "media/base/cdm_context.h"
@@ -129,7 +130,7 @@
   DVLOG(2) << __FUNCTION__;
   cdm_->SetServerCertificate(
       certificate_data.storage(),
-      make_scoped_ptr(new SimpleMojoCdmPromise(callback)));
+      base::WrapUnique(new SimpleMojoCdmPromise(callback)));
 }
 
 void MojoCdmService::CreateSessionAndGenerateRequest(
@@ -142,7 +143,7 @@
   cdm_->CreateSessionAndGenerateRequest(
       static_cast<MediaKeys::SessionType>(session_type),
       static_cast<EmeInitDataType>(init_data_type), init_data.storage(),
-      make_scoped_ptr(new NewSessionMojoCdmPromise(callback)));
+      base::WrapUnique(new NewSessionMojoCdmPromise(callback)));
 }
 
 void MojoCdmService::LoadSession(
@@ -153,7 +154,7 @@
   DVLOG(2) << __FUNCTION__;
   cdm_->LoadSession(static_cast<MediaKeys::SessionType>(session_type),
                     session_id.To<std::string>(),
-                    make_scoped_ptr(new NewSessionMojoCdmPromise(callback)));
+                    base::WrapUnique(new NewSessionMojoCdmPromise(callback)));
 }
 
 void MojoCdmService::UpdateSession(
@@ -163,7 +164,7 @@
   DVLOG(2) << __FUNCTION__;
   cdm_->UpdateSession(
       session_id.To<std::string>(), response.storage(),
-      scoped_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback)));
+      std::unique_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback)));
 }
 
 void MojoCdmService::CloseSession(
@@ -171,7 +172,7 @@
     const mojo::Callback<void(interfaces::CdmPromiseResultPtr)>& callback) {
   DVLOG(2) << __FUNCTION__;
   cdm_->CloseSession(session_id.To<std::string>(),
-                     make_scoped_ptr(new SimpleMojoCdmPromise(callback)));
+                     base::WrapUnique(new SimpleMojoCdmPromise(callback)));
 }
 
 void MojoCdmService::RemoveSession(
@@ -179,7 +180,7 @@
     const mojo::Callback<void(interfaces::CdmPromiseResultPtr)>& callback) {
   DVLOG(2) << __FUNCTION__;
   cdm_->RemoveSession(session_id.To<std::string>(),
-                      make_scoped_ptr(new SimpleMojoCdmPromise(callback)));
+                      base::WrapUnique(new SimpleMojoCdmPromise(callback)));
 }
 
 scoped_refptr<MediaKeys> MojoCdmService::GetCdm() {
diff --git a/media/mojo/services/mojo_cdm_service.h b/media/mojo/services/mojo_cdm_service.h
index f14a366..a9859a6e 100644
--- a/media/mojo/services/mojo_cdm_service.h
+++ b/media/mojo/services/mojo_cdm_service.h
@@ -7,10 +7,11 @@
 
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "media/base/media_keys.h"
 #include "media/mojo/interfaces/content_decryption_module.mojom.h"
@@ -118,7 +119,7 @@
   CdmFactory* cdm_factory_;
   scoped_refptr<MediaKeys> cdm_;
 
-  scoped_ptr<MojoDecryptorService> decryptor_;
+  std::unique_ptr<MojoDecryptorService> decryptor_;
 
   // Set to a valid CDM ID if the |cdm_| is successfully created.
   int cdm_id_;
diff --git a/media/mojo/services/mojo_media_application.cc b/media/mojo/services/mojo_media_application.cc
index 8925e99..56a0ba5 100644
--- a/media/mojo/services/mojo_media_application.cc
+++ b/media/mojo/services/mojo_media_application.cc
@@ -16,7 +16,7 @@
 
 // TODO(xhwang): Hook up MediaLog when possible.
 MojoMediaApplication::MojoMediaApplication(
-    scoped_ptr<MojoMediaClient> mojo_media_client)
+    std::unique_ptr<MojoMediaClient> mojo_media_client)
     : mojo_media_client_(std::move(mojo_media_client)),
       connector_(nullptr),
       media_log_(new MediaLog()) {
diff --git a/media/mojo/services/mojo_media_application.h b/media/mojo/services/mojo_media_application.h
index c004e83..5e030b9 100644
--- a/media/mojo/services/mojo_media_application.h
+++ b/media/mojo/services/mojo_media_application.h
@@ -5,6 +5,10 @@
 #ifndef MEDIA_MOJO_SERVICES_MOJO_MEDIA_APPLICATION_H_
 #define MEDIA_MOJO_SERVICES_MOJO_MEDIA_APPLICATION_H_
 
+#include <stdint.h>
+
+#include <memory>
+
 #include "base/callback.h"
 #include "base/memory/ref_counted.h"
 #include "media/mojo/interfaces/service_factory.mojom.h"
@@ -22,7 +26,8 @@
     : public mojo::ShellClient,
       public mojo::InterfaceFactory<interfaces::ServiceFactory> {
  public:
-  explicit MojoMediaApplication(scoped_ptr<MojoMediaClient> mojo_media_client);
+  explicit MojoMediaApplication(
+      std::unique_ptr<MojoMediaClient> mojo_media_client);
   ~MojoMediaApplication() final;
 
  private:
@@ -38,8 +43,8 @@
 
   // Note: Since each instance runs on a different thread, do not share a common
   // MojoMediaClient with other instances to avoid threading issues. Hence using
-  // a scoped_ptr here.
-  scoped_ptr<MojoMediaClient> mojo_media_client_;
+  // a unique_ptr here.
+  std::unique_ptr<MojoMediaClient> mojo_media_client_;
 
   mojo::Connector* connector_;
   scoped_refptr<MediaLog> media_log_;
diff --git a/media/mojo/services/mojo_media_application_factory.cc b/media/mojo/services/mojo_media_application_factory.cc
index 5ffaa5ad..0261982 100644
--- a/media/mojo/services/mojo_media_application_factory.cc
+++ b/media/mojo/services/mojo_media_application_factory.cc
@@ -4,6 +4,7 @@
 
 #include "media/mojo/services/mojo_media_application_factory.h"
 
+#include "base/memory/ptr_util.h"
 #include "media/mojo/services/mojo_media_application.h"
 
 #if defined(ENABLE_TEST_MOJO_MEDIA_CLIENT)
@@ -20,9 +21,9 @@
 namespace media {
 
 // static
-scoped_ptr<mojo::ShellClient> CreateMojoMediaApplication() {
-  return scoped_ptr<mojo::ShellClient>(
-      new MojoMediaApplication(make_scoped_ptr(new DefaultClient())));
+std::unique_ptr<mojo::ShellClient> CreateMojoMediaApplication() {
+  return std::unique_ptr<mojo::ShellClient>(
+      new MojoMediaApplication(base::WrapUnique(new DefaultClient())));
 }
 
 }  // namespace media
diff --git a/media/mojo/services/mojo_media_application_factory.h b/media/mojo/services/mojo_media_application_factory.h
index 9ecbdf9..24a301a 100644
--- a/media/mojo/services/mojo_media_application_factory.h
+++ b/media/mojo/services/mojo_media_application_factory.h
@@ -5,13 +5,14 @@
 #ifndef MEDIA_MOJO_SERVICES_MOJO_MEDIA_APPLICATION_FACTORY_H_
 #define MEDIA_MOJO_SERVICES_MOJO_MEDIA_APPLICATION_FACTORY_H_
 
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
 #include "mojo/shell/public/cpp/shell_client.h"
 
 namespace media {
 
 // Creates a MojoMediaApplication instance using the default MojoMediaClient.
-scoped_ptr<mojo::ShellClient> CreateMojoMediaApplication();
+std::unique_ptr<mojo::ShellClient> CreateMojoMediaApplication();
 
 }  // namespace media
 
diff --git a/media/mojo/services/mojo_media_client.cc b/media/mojo/services/mojo_media_client.cc
index 36aef7cb..8f30ec0f 100644
--- a/media/mojo/services/mojo_media_client.cc
+++ b/media/mojo/services/mojo_media_client.cc
@@ -12,12 +12,12 @@
 
 void MojoMediaClient::Initialize() {}
 
-scoped_ptr<AudioDecoder> MojoMediaClient::CreateAudioDecoder(
+std::unique_ptr<AudioDecoder> MojoMediaClient::CreateAudioDecoder(
     scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
   return nullptr;
 }
 
-scoped_ptr<RendererFactory> MojoMediaClient::CreateRendererFactory(
+std::unique_ptr<RendererFactory> MojoMediaClient::CreateRendererFactory(
     const scoped_refptr<MediaLog>& media_log) {
   return nullptr;
 }
@@ -31,7 +31,7 @@
   return nullptr;
 }
 
-scoped_ptr<CdmFactory> MojoMediaClient::CreateCdmFactory(
+std::unique_ptr<CdmFactory> MojoMediaClient::CreateCdmFactory(
     mojo::shell::mojom::InterfaceProvider* interface_provider) {
   return nullptr;
 }
diff --git a/media/mojo/services/mojo_media_client.h b/media/mojo/services/mojo_media_client.h
index ab14c50..4b55c9f 100644
--- a/media/mojo/services/mojo_media_client.h
+++ b/media/mojo/services/mojo_media_client.h
@@ -5,6 +5,8 @@
 #ifndef MEDIA_MOJO_SERVICES_MOJO_MEDIA_CLIENT_H_
 #define MEDIA_MOJO_SERVICES_MOJO_MEDIA_CLIENT_H_
 
+#include <memory>
+
 #include "media/base/audio_decoder.h"
 #include "media/base/audio_renderer_sink.h"
 #include "media/base/cdm_factory.h"
@@ -33,14 +35,14 @@
   // Called exactly once before any other method.
   virtual void Initialize();
 
-  virtual scoped_ptr<AudioDecoder> CreateAudioDecoder(
+  virtual std::unique_ptr<AudioDecoder> CreateAudioDecoder(
       scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
   // TODO(xhwang): Consider creating Renderer and CDM directly in the client
   // instead of creating factories. See http://crbug.com/586211
 
   // Returns the RendererFactory to be used by MojoRendererService.
-  virtual scoped_ptr<RendererFactory> CreateRendererFactory(
+  virtual std::unique_ptr<RendererFactory> CreateRendererFactory(
       const scoped_refptr<MediaLog>& media_log);
 
   // The output sink used for rendering audio or video respectively. They will
@@ -52,7 +54,7 @@
       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
 
   // Returns the CdmFactory to be used by MojoCdmService.
-  virtual scoped_ptr<CdmFactory> CreateCdmFactory(
+  virtual std::unique_ptr<CdmFactory> CreateCdmFactory(
       mojo::shell::mojom::InterfaceProvider* interface_provider);
 
  protected:
diff --git a/media/mojo/services/mojo_renderer_factory.cc b/media/mojo/services/mojo_renderer_factory.cc
index b0ce42d..dcb1633 100644
--- a/media/mojo/services/mojo_renderer_factory.cc
+++ b/media/mojo/services/mojo_renderer_factory.cc
@@ -20,7 +20,7 @@
 MojoRendererFactory::~MojoRendererFactory() {
 }
 
-scoped_ptr<Renderer> MojoRendererFactory::CreateRenderer(
+std::unique_ptr<Renderer> MojoRendererFactory::CreateRenderer(
     const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
     const scoped_refptr<base::TaskRunner>& /* worker_task_runner */,
     AudioRendererSink* /* audio_renderer_sink */,
@@ -29,7 +29,7 @@
   interfaces::RendererPtr renderer_ptr;
   mojo::GetInterface<interfaces::Renderer>(interface_provider_, &renderer_ptr);
 
-  return scoped_ptr<Renderer>(
+  return std::unique_ptr<Renderer>(
       new MojoRendererImpl(media_task_runner, std::move(renderer_ptr)));
 }
 
diff --git a/media/mojo/services/mojo_renderer_factory.h b/media/mojo/services/mojo_renderer_factory.h
index 52574b0..597fc99 100644
--- a/media/mojo/services/mojo_renderer_factory.h
+++ b/media/mojo/services/mojo_renderer_factory.h
@@ -5,6 +5,8 @@
 #ifndef MEDIA_MOJO_SERVICES_MOJO_RENDERER_FACTORY_H_
 #define MEDIA_MOJO_SERVICES_MOJO_RENDERER_FACTORY_H_
 
+#include <memory>
+
 #include "base/macros.h"
 #include "media/base/renderer_factory.h"
 #include "media/mojo/interfaces/renderer.mojom.h"
@@ -26,7 +28,7 @@
       mojo::shell::mojom::InterfaceProvider* interface_provider);
   ~MojoRendererFactory() final;
 
-  scoped_ptr<Renderer> CreateRenderer(
+  std::unique_ptr<Renderer> CreateRenderer(
       const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
       const scoped_refptr<base::TaskRunner>& worker_task_runner,
       AudioRendererSink* audio_renderer_sink,
diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc
index f5e0cfa..ce94a77a5 100644
--- a/media/mojo/services/mojo_renderer_service.cc
+++ b/media/mojo/services/mojo_renderer_service.cc
@@ -19,7 +19,7 @@
 
 MojoRendererService::MojoRendererService(
     base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
-    scoped_ptr<media::Renderer> renderer,
+    std::unique_ptr<media::Renderer> renderer,
     mojo::InterfaceRequest<interfaces::Renderer> request)
     : binding_(this, std::move(request)),
       mojo_cdm_service_context_(mojo_cdm_service_context),
diff --git a/media/mojo/services/mojo_renderer_service.h b/media/mojo/services/mojo_renderer_service.h
index d434d5f..89c63ad 100644
--- a/media/mojo/services/mojo_renderer_service.h
+++ b/media/mojo/services/mojo_renderer_service.h
@@ -7,9 +7,10 @@
 
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
 #include "media/base/buffering_state.h"
@@ -32,7 +33,7 @@
   // encrypted media. If null, encrypted media is not supported.
   MojoRendererService(
       base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
-      scoped_ptr<media::Renderer> renderer,
+      std::unique_ptr<media::Renderer> renderer,
       mojo::InterfaceRequest<interfaces::Renderer> request);
   ~MojoRendererService() final;
 
@@ -98,7 +99,7 @@
 
   State state_;
 
-  scoped_ptr<DemuxerStreamProviderShim> stream_provider_;
+  std::unique_ptr<DemuxerStreamProviderShim> stream_provider_;
 
   base::RepeatingTimer time_update_timer_;
   uint64_t last_media_time_usec_;
@@ -112,7 +113,7 @@
   // Note: Destroy |renderer_| first to avoid access violation into other
   // members, e.g. |stream_provider_| and |cdm_|.
   // Must use "media::" because "Renderer" is ambiguous.
-  scoped_ptr<media::Renderer> renderer_;
+  std::unique_ptr<media::Renderer> renderer_;
 
   base::WeakPtr<MojoRendererService> weak_this_;
   base::WeakPtrFactory<MojoRendererService> weak_factory_;
diff --git a/media/mojo/services/service_factory_impl.cc b/media/mojo/services/service_factory_impl.cc
index 5a2cc34..1381604 100644
--- a/media/mojo/services/service_factory_impl.cc
+++ b/media/mojo/services/service_factory_impl.cc
@@ -29,7 +29,7 @@
     mojo::InterfaceRequest<interfaces::ServiceFactory> request,
     mojo::shell::mojom::InterfaceProvider* interfaces,
     scoped_refptr<MediaLog> media_log,
-    scoped_ptr<mojo::MessageLoopRef> parent_app_refcount,
+    std::unique_ptr<mojo::MessageLoopRef> parent_app_refcount,
     MojoMediaClient* mojo_media_client)
     : binding_(this, std::move(request)),
       interfaces_(interfaces),
@@ -51,7 +51,7 @@
   scoped_refptr<base::SingleThreadTaskRunner> task_runner(
       base::MessageLoop::current()->task_runner());
 
-  scoped_ptr<AudioDecoder> audio_decoder =
+  std::unique_ptr<AudioDecoder> audio_decoder =
       mojo_media_client_->CreateAudioDecoder(task_runner);
   if (!audio_decoder) {
     LOG(ERROR) << "AudioDecoder creation failed.";
@@ -79,7 +79,7 @@
   if (!renderer_factory)
     return;
 
-  scoped_ptr<Renderer> renderer = renderer_factory->CreateRenderer(
+  std::unique_ptr<Renderer> renderer = renderer_factory->CreateRenderer(
       task_runner, task_runner, audio_renderer_sink, video_renderer_sink,
       RequestSurfaceCB());
   if (!renderer) {
diff --git a/media/mojo/services/service_factory_impl.h b/media/mojo/services/service_factory_impl.h
index 0b54e009..08faad86 100644
--- a/media/mojo/services/service_factory_impl.h
+++ b/media/mojo/services/service_factory_impl.h
@@ -5,8 +5,9 @@
 #ifndef MEDIA_MOJO_SERVICES_SERVICE_FACTORY_IMPL_H_
 #define MEDIA_MOJO_SERVICES_SERVICE_FACTORY_IMPL_H_
 
+#include <memory>
+
 #include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
 #include "media/mojo/interfaces/service_factory.mojom.h"
 #include "media/mojo/services/mojo_cdm_service_context.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
@@ -34,7 +35,7 @@
   ServiceFactoryImpl(mojo::InterfaceRequest<interfaces::ServiceFactory> request,
                      mojo::shell::mojom::InterfaceProvider* interfaces,
                      scoped_refptr<MediaLog> media_log,
-                     scoped_ptr<mojo::MessageLoopRef> parent_app_refcount,
+                     std::unique_ptr<mojo::MessageLoopRef> parent_app_refcount,
                      MojoMediaClient* mojo_media_client);
   ~ServiceFactoryImpl() final;
 
@@ -50,20 +51,20 @@
 #if defined(ENABLE_MOJO_RENDERER)
   RendererFactory* GetRendererFactory();
 
-  scoped_ptr<RendererFactory> renderer_factory_;
+  std::unique_ptr<RendererFactory> renderer_factory_;
 #endif  // defined(ENABLE_MOJO_RENDERER)
 
 #if defined(ENABLE_MOJO_CDM)
   CdmFactory* GetCdmFactory();
 
-  scoped_ptr<CdmFactory> cdm_factory_;
+  std::unique_ptr<CdmFactory> cdm_factory_;
 #endif  // defined(ENABLE_MOJO_CDM)
 
   MojoCdmServiceContext cdm_service_context_;
   mojo::StrongBinding<interfaces::ServiceFactory> binding_;
   mojo::shell::mojom::InterfaceProvider* interfaces_;
   scoped_refptr<MediaLog> media_log_;
-  scoped_ptr<mojo::MessageLoopRef> parent_app_refcount_;
+  std::unique_ptr<mojo::MessageLoopRef> parent_app_refcount_;
   MojoMediaClient* mojo_media_client_;
 
   DISALLOW_COPY_AND_ASSIGN(ServiceFactoryImpl);
diff --git a/media/mojo/services/test_mojo_media_client.cc b/media/mojo/services/test_mojo_media_client.cc
index 283f248..162a4b0 100644
--- a/media/mojo/services/test_mojo_media_client.cc
+++ b/media/mojo/services/test_mojo_media_client.cc
@@ -4,6 +4,7 @@
 
 #include "media/mojo/services/test_mojo_media_client.h"
 
+#include "base/memory/ptr_util.h"
 #include "media/audio/audio_manager_base.h"
 #include "media/audio/audio_output_stream_sink.h"
 #include "media/base/audio_hardware_config.h"
@@ -37,10 +38,10 @@
       audio_manager->GetDefaultOutputStreamParameters()));
 }
 
-scoped_ptr<RendererFactory> TestMojoMediaClient::CreateRendererFactory(
+std::unique_ptr<RendererFactory> TestMojoMediaClient::CreateRendererFactory(
     const scoped_refptr<MediaLog>& media_log) {
   DVLOG(1) << __FUNCTION__;
-  return make_scoped_ptr(new DefaultRendererFactory(
+  return base::WrapUnique(new DefaultRendererFactory(
       media_log, nullptr, DefaultRendererFactory::GetGpuFactoriesCB(),
       *audio_hardware_config_));
 }
@@ -55,7 +56,7 @@
 VideoRendererSink* TestMojoMediaClient::CreateVideoRendererSink(
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
   if (!video_renderer_sink_) {
-    video_renderer_sink_ = make_scoped_ptr(
+    video_renderer_sink_ = base::WrapUnique(
         new NullVideoSink(false, base::TimeDelta::FromSecondsD(1.0 / 60),
                           NullVideoSink::NewFrameCB(), task_runner));
   }
@@ -63,10 +64,10 @@
   return video_renderer_sink_.get();
 }
 
-scoped_ptr<CdmFactory> TestMojoMediaClient::CreateCdmFactory(
+std::unique_ptr<CdmFactory> TestMojoMediaClient::CreateCdmFactory(
     mojo::shell::mojom::InterfaceProvider* /* interface_provider */) {
   DVLOG(1) << __FUNCTION__;
-  return make_scoped_ptr(new DefaultCdmFactory());
+  return base::WrapUnique(new DefaultCdmFactory());
 }
 
 }  // namespace media
diff --git a/media/mojo/services/test_mojo_media_client.h b/media/mojo/services/test_mojo_media_client.h
index fe41c36..5542dfb 100644
--- a/media/mojo/services/test_mojo_media_client.h
+++ b/media/mojo/services/test_mojo_media_client.h
@@ -5,9 +5,10 @@
 #ifndef MEDIA_MOJO_SERVICES_TEST_MOJO_MEDIA_CLIENT_H_
 #define MEDIA_MOJO_SERVICES_TEST_MOJO_MEDIA_CLIENT_H_
 
+#include <memory>
+
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
 #include "media/audio/fake_audio_log_factory.h"
 #include "media/mojo/services/mojo_media_client.h"
 
@@ -25,19 +26,19 @@
 
   // MojoMediaClient implementation.
   void Initialize() final;
-  scoped_ptr<RendererFactory> CreateRendererFactory(
+  std::unique_ptr<RendererFactory> CreateRendererFactory(
       const scoped_refptr<MediaLog>& media_log) final;
   AudioRendererSink* CreateAudioRendererSink() final;
   VideoRendererSink* CreateVideoRendererSink(
       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) final;
-  scoped_ptr<CdmFactory> CreateCdmFactory(
+  std::unique_ptr<CdmFactory> CreateCdmFactory(
       mojo::shell::mojom::InterfaceProvider* /* interface_provider */) final;
 
  private:
   FakeAudioLogFactory fake_audio_log_factory_;
-  scoped_ptr<AudioHardwareConfig> audio_hardware_config_;
+  std::unique_ptr<AudioHardwareConfig> audio_hardware_config_;
   scoped_refptr<AudioRendererSink> audio_renderer_sink_;
-  scoped_ptr<VideoRendererSink> video_renderer_sink_;
+  std::unique_ptr<VideoRendererSink> video_renderer_sink_;
 
   DISALLOW_COPY_AND_ASSIGN(TestMojoMediaClient);
 };
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h
index 88cd86a..9a988d6 100644
--- a/media/video/video_decode_accelerator.h
+++ b/media/video/video_decode_accelerator.h
@@ -15,6 +15,7 @@
 #include "media/base/video_decoder_config.h"
 #include "media/video/picture.h"
 #include "ui/gfx/geometry/size.h"
+#include "ui/gl/gl_image.h"
 
 typedef unsigned int GLenum;
 
@@ -37,6 +38,10 @@
   };
   using SupportedProfiles = std::vector<SupportedProfile>;
 
+  using MakeContextCurrentCallback = base::Callback<bool(void)>;
+  using BindImageCallback = base::Callback<
+      void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>, bool)>;
+
   struct MEDIA_EXPORT Capabilities {
     Capabilities();
     Capabilities(const Capabilities& other);
diff --git a/net/base/address_list.cc b/net/base/address_list.cc
index f065b35..2a0cbfc4 100644
--- a/net/base/address_list.cc
+++ b/net/base/address_list.cc
@@ -41,12 +41,6 @@
 }
 
 // static
-AddressList AddressList::CreateFromIPAddress(const IPAddressNumber& address,
-                                             uint16_t port) {
-  return AddressList(IPEndPoint(address, port));
-}
-
-// static
 AddressList AddressList::CreateFromIPAddress(const IPAddress& address,
                                              uint16_t port) {
   return AddressList(IPEndPoint(address, port));
diff --git a/net/base/address_list.h b/net/base/address_list.h
index 72e0a43..93255e7 100644
--- a/net/base/address_list.h
+++ b/net/base/address_list.h
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/compiler_specific.h"
-#include "net/base/ip_address_number.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_export.h"
 #include "net/log/net_log.h"
@@ -31,10 +30,6 @@
   // Creates an address list for a single IP literal.
   explicit AddressList(const IPEndPoint& endpoint);
 
-  // DEPRECATED(crbug.com/496258): Use the method below that takes IPAddress.
-  static AddressList CreateFromIPAddress(const IPAddressNumber& address,
-                                         uint16_t port);
-
   static AddressList CreateFromIPAddress(const IPAddress& address,
                                          uint16_t port);
 
diff --git a/net/base/network_interfaces.cc b/net/base/network_interfaces.cc
index c4e4b276..ccbd66a 100644
--- a/net/base/network_interfaces.cc
+++ b/net/base/network_interfaces.cc
@@ -25,21 +25,6 @@
                                    const std::string& friendly_name,
                                    uint32_t interface_index,
                                    NetworkChangeNotifier::ConnectionType type,
-                                   const IPAddressNumber& address,
-                                   uint32_t prefix_length,
-                                   int ip_address_attributes)
-    : NetworkInterface(name,
-                       friendly_name,
-                       interface_index,
-                       type,
-                       IPAddress(address),
-                       prefix_length,
-                       ip_address_attributes) {}
-
-NetworkInterface::NetworkInterface(const std::string& name,
-                                   const std::string& friendly_name,
-                                   uint32_t interface_index,
-                                   NetworkChangeNotifier::ConnectionType type,
                                    const IPAddress& address,
                                    uint32_t prefix_length,
                                    int ip_address_attributes)
diff --git a/net/base/network_interfaces.h b/net/base/network_interfaces.h
index 96ea5d5..84edcfb 100644
--- a/net/base/network_interfaces.h
+++ b/net/base/network_interfaces.h
@@ -13,7 +13,6 @@
 #include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "net/base/ip_address.h"
-#include "net/base/ip_address_number.h"
 #include "net/base/net_export.h"
 #include "net/base/network_change_notifier.h"
 
@@ -41,15 +40,6 @@
 // interface.
 struct NET_EXPORT NetworkInterface {
   NetworkInterface();
-  // Deprecated. Use the IPAddress constructor instead.
-  // https://crbug.com/496258.
-  NetworkInterface(const std::string& name,
-                   const std::string& friendly_name,
-                   uint32_t interface_index,
-                   NetworkChangeNotifier::ConnectionType type,
-                   const IPAddressNumber& address,
-                   uint32_t prefix_length,
-                   int ip_address_attributes);
   NetworkInterface(const std::string& name,
                    const std::string& friendly_name,
                    uint32_t interface_index,
diff --git a/net/base/network_interfaces_linux.cc b/net/base/network_interfaces_linux.cc
index 4601487b..121e0e0 100644
--- a/net/base/network_interfaces_linux.cc
+++ b/net/base/network_interfaces_linux.cc
@@ -67,10 +67,6 @@
 
 namespace internal {
 
-inline const unsigned char* GetIPAddressData(const IPAddressNumber& ip) {
-  return ip.data();
-}
-
 // Gets the connection type for interface |ifname| by checking for wireless
 // or ethtool extensions.
 NetworkChangeNotifier::ConnectionType GetInterfaceConnectionType(
diff --git a/net/base/network_interfaces_mac.cc b/net/base/network_interfaces_mac.cc
index 66385acc..2fa66fb 100644
--- a/net/base/network_interfaces_mac.cc
+++ b/net/base/network_interfaces_mac.cc
@@ -204,12 +204,12 @@
         }
         IPEndPoint netmask;
         if (netmask.FromSockAddr(interface->ifa_netmask, addr_size)) {
-          prefix_length = MaskPrefixLength(netmask.address().bytes());
+          prefix_length = MaskPrefixLength(netmask.address());
         }
       }
       networks->push_back(NetworkInterface(
           name, name, if_nametoindex(name.c_str()), connection_type,
-          address.address().bytes(), prefix_length, ip_attributes));
+          address.address(), prefix_length, ip_attributes));
     }
   }
 
diff --git a/net/base/network_interfaces_win.cc b/net/base/network_interfaces_win.cc
index 3255702b..e00606c 100644
--- a/net/base/network_interfaces_win.cc
+++ b/net/base/network_interfaces_win.cc
@@ -180,9 +180,9 @@
                   network_endpoint.FromSockAddr(
                       prefix->Address.lpSockaddr,
                       prefix->Address.iSockaddrLength) &&
-                  IPNumberMatchesPrefix(endpoint.address().bytes(),
-                                        network_endpoint.address().bytes(),
-                                        prefix->PrefixLength)) {
+                  IPAddressMatchesPrefix(endpoint.address(),
+                                         network_endpoint.address(),
+                                         prefix->PrefixLength)) {
                 prefix_length =
                     std::max<size_t>(prefix_length, prefix->PrefixLength);
               }
@@ -212,12 +212,11 @@
               ip_address_attributes |= IP_ADDRESS_ATTRIBUTE_DEPRECATED;
             }
           }
-          networks->push_back(
-              NetworkInterface(adapter->AdapterName,
-                               base::SysWideToNativeMB(adapter->FriendlyName),
-                               index, GetNetworkInterfaceType(adapter->IfType),
-                               endpoint.address().bytes(), prefix_length,
-                               ip_address_attributes));
+          networks->push_back(NetworkInterface(
+              adapter->AdapterName,
+              base::SysWideToNativeMB(adapter->FriendlyName), index,
+              GetNetworkInterfaceType(adapter->IfType), endpoint.address(),
+              prefix_length, ip_address_attributes));
         }
       }
     }
diff --git a/net/base/registry_controlled_domains/effective_tld_names.dat b/net/base/registry_controlled_domains/effective_tld_names.dat
index 7c2120f..257e750 100644
--- a/net/base/registry_controlled_domains/effective_tld_names.dat
+++ b/net/base/registry_controlled_domains/effective_tld_names.dat
@@ -6730,6 +6730,9 @@
 // http://www.dotmasr.eg/
 مصر
 
+// xn--e1a4c ("eu", Cyrillic) : EU
+ею
+
 // xn--node ("ge", Georgian Mkhedruli) : GE
 გე
 
@@ -6936,7 +6939,7 @@
 *.zw
 
 
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-03-01T00:46:32Z
+// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-04-04T20:12:16Z
 
 // aaa : 2015-02-26 American Automobile Association, Inc.
 aaa
@@ -7121,6 +7124,9 @@
 // army : 2014-03-06 United TLD Holdco Ltd.
 army
 
+// art : 2016-03-24 UK Creative Ideas Limited
+art
+
 // arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
 arte
 
@@ -9659,6 +9665,9 @@
 // shoes : 2013-10-02 Binky Galley, LLC
 shoes
 
+// shopping : 2016-03-31 Uniregistry, Corp.
+shopping
+
 // shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
 shouji
 
@@ -10694,10 +10703,6 @@
 // Submitted by Gavin Brown <gavin.brown@centralnic.com>
 africa.com
 
-// Citrix : https://citrix.com
-// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
-xenapponazure.com
-
 // iDOT Services Limited : http://www.domain.gr.com
 // Submitted by Gavin Brown <gavin.brown@centralnic.com>
 gr.com
@@ -10717,6 +10722,10 @@
 // c.la : http://www.c.la/
 c.la
 
+// Citrix : https://citrix.com
+// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
+xenapponazure.com
+
 // cloudControl : https://www.cloudcontrol.com/
 // Submitted by Tobias Wilken <tw@cloudcontrol.com>
 cloudcontrolled.com
@@ -10750,6 +10759,19 @@
 // Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
 cupcake.is
 
+// cyon GmbH : https://www.cyon.ch/
+// Submitted by Dominic Luechinger <dol@cyon.ch>
+cyon.link
+cyon.site
+
+// Dansk.net : http://www.dansk.net/
+// Submitted by Anani Voule <digital@digital.co.dk>
+biz.dk
+co.dk
+firm.dk
+reg.dk
+store.dk
+
 // DreamHost : http://www.dreamhost.com/
 // Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
 dreamhosters.com
@@ -11286,6 +11308,10 @@
 // Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
 outsystemscloud.com
 
+// oy.lc
+// Submitted by Charly Coste <changaco@changaco.oy.lc>
+oy.lc
+
 // Pagefront : https://www.pagefronthq.com/
 // Submitted by Jason Kriss <jason@pagefronthq.com>
 pagefrontapp.com
@@ -11300,9 +11326,13 @@
 
 // Pantheon Systems, Inc. : https://pantheon.io/
 // Submitted by Gary Dylina <gary@pantheon.io>
-pantheon.io
+pantheonsite.io
 gotpantheon.com
 
+// Peplink | Pepwave : http://peplink.com/
+// Submitted by Steve Leung <steveleung@peplink.com>
+mypep.link
+
 // prgmr.com : https://prgmr.com/
 // Submitted by Sarah Newman <owner@prgmr.com>
 xen.prgmr.com
diff --git a/net/base/registry_controlled_domains/effective_tld_names.gperf b/net/base/registry_controlled_domains/effective_tld_names.gperf
index ecf8b2aa..7a60e300 100644
--- a/net/base/registry_controlled_domains/effective_tld_names.gperf
+++ b/net/base/registry_controlled_domains/effective_tld_names.gperf
@@ -331,6 +331,7 @@
 arna.no, 0
 arpa, 0
 arq.br, 0
+art, 0
 art.br, 0
 art.do, 0
 art.dz, 0
@@ -615,6 +616,7 @@
 biz.az, 0
 biz.bb, 0
 biz.cy, 0
+biz.dk, 4
 biz.et, 0
 biz.id, 0
 biz.ki, 0
@@ -1132,6 +1134,7 @@
 co.com, 4
 co.cr, 0
 co.cz, 4
+co.dk, 4
 co.gg, 0
 co.gl, 0
 co.gy, 0
@@ -1420,6 +1423,8 @@
 cyber.museum, 0
 cymru, 0
 cymru.museum, 0
+cyon.link, 4
+cyon.site, 4
 cyou, 0
 cz, 0
 cz.eu.org, 4
@@ -1933,6 +1938,7 @@
 firenze.it, 0
 firestone, 0
 firm.co, 0
+firm.dk, 4
 firm.ht, 0
 firm.in, 0
 firm.nf, 0
@@ -4500,6 +4506,7 @@
 myds.me, 4
 mykolaiv.ua, 0
 myoko.niigata.jp, 0
+mypep.link, 4
 mypets.ws, 4
 myphotos.cc, 4
 mytis.ru, 0
@@ -5360,6 +5367,7 @@
 owani.aomori.jp, 0
 owariasahi.aichi.jp, 0
 oxford.museum, 0
+oy.lc, 4
 oyabe.toyama.jp, 0
 oyama.tochigi.jp, 0
 oyamazaki.kyoto.jp, 0
@@ -5393,7 +5401,7 @@
 panama.museum, 0
 panasonic, 0
 panerai, 0
-pantheon.io, 4
+pantheonsite.io, 4
 parachuting.aero, 0
 paragliding.aero, 0
 paris, 0
@@ -5689,6 +5697,7 @@
 red.sv, 0
 redstone, 0
 redumbrella, 0
+reg.dk, 4
 reggio-calabria.it, 0
 reggio-emilia.it, 0
 reggiocalabria.it, 0
@@ -6179,6 +6188,7 @@
 shop.ht, 0
 shop.hu, 0
 shop.pl, 0
+shopping, 0
 shouji, 0
 show, 0
 show.aero, 0
@@ -6373,6 +6383,7 @@
 stordal.no, 0
 store, 0
 store.bb, 0
+store.dk, 4
 store.nf, 0
 store.ro, 0
 store.st, 0
@@ -7397,6 +7408,7 @@
 xn--dnna-gra.no, 0
 xn--drbak-wua.no, 0
 xn--dyry-ira.no, 0
+xn--e1a4c, 0
 xn--eckvdtc9d, 0
 xn--efvn9s.jp, 0
 xn--efvy88h, 0
diff --git a/net/cert/internal/signature_policy.h b/net/cert/internal/signature_policy.h
index 3acf17b9..7498623 100644
--- a/net/cert/internal/signature_policy.h
+++ b/net/cert/internal/signature_policy.h
@@ -47,9 +47,6 @@
 
 // SimpleSignaturePolicy modifies the base SignaturePolicy by allowing the
 // minimum RSA key length to be specified (rather than hard coded to 2048).
-//
-// TODO(eroman): This is currently just used by a test. If it ends up being
-// only useful for the unit-test then move it directly to that test file.
 class NET_EXPORT SimpleSignaturePolicy : public SignaturePolicy {
  public:
   explicit SimpleSignaturePolicy(size_t min_rsa_modulus_length_bits);
diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc
index 7f2259d..0c57a5b 100644
--- a/net/disk_cache/backend_unittest.cc
+++ b/net/disk_cache/backend_unittest.cc
@@ -4,6 +4,7 @@
 
 #include <stdint.h>
 
+#include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/metrics/field_trial.h"
 #include "base/run_loop.h"
@@ -31,6 +32,7 @@
 #include "net/disk_cache/memory/mem_backend_impl.h"
 #include "net/disk_cache/simple/simple_backend_impl.h"
 #include "net/disk_cache/simple/simple_entry_format.h"
+#include "net/disk_cache/simple/simple_index.h"
 #include "net/disk_cache/simple/simple_test_util.h"
 #include "net/disk_cache/simple/simple_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -3748,3 +3750,35 @@
     EXPECT_TRUE(CleanupCacheDir());
   }
 }
+
+TEST_F(DiskCacheBackendTest, SimpleCacheLateDoom) {
+  SetSimpleCacheMode();
+  InitCache();
+
+  disk_cache::Entry *entry1, *entry2;
+  ASSERT_EQ(net::OK, CreateEntry("first", &entry1));
+  ASSERT_EQ(net::OK, CreateEntry("second", &entry2));
+  entry1->Close();
+
+  // Ensure that the directory mtime is flushed to disk before serializing the
+  // index.
+  disk_cache::SimpleBackendImpl::FlushWorkerPoolForTesting();
+  base::RunLoop().RunUntilIdle();
+#if defined(OS_POSIX)
+  base::File cache_dir(cache_path_,
+                       base::File::FLAG_OPEN | base::File::FLAG_READ);
+  EXPECT_TRUE(cache_dir.Flush());
+#endif  // defined(OS_POSIX)
+  cache_.reset();
+
+  // The index is now written. Dooming the last entry can't delete a file,
+  // because that would advance the cache directory mtime and invalidate the
+  // index.
+  entry2->Doom();
+  entry2->Close();
+
+  DisableFirstCleanup();
+  InitCache();
+  EXPECT_EQ(disk_cache::SimpleIndex::INITIALIZE_METHOD_LOADED,
+            simple_cache_impl_->index()->init_method());
+}
diff --git a/net/disk_cache/simple/simple_entry_impl.cc b/net/disk_cache/simple/simple_entry_impl.cc
index 643b13c..68f1b9e 100644
--- a/net/disk_cache/simple/simple_entry_impl.cc
+++ b/net/disk_cache/simple/simple_entry_impl.cc
@@ -1088,6 +1088,25 @@
 }
 
 void SimpleEntryImpl::DoomEntryInternal(const CompletionCallback& callback) {
+  if (!backend_) {
+    // If there's no backend, we want to truncate the files rather than delete
+    // them. Removing files will update the entry directory's mtime, which will
+    // likely force a full index rebuild on the next startup; this is clearly an
+    // undesirable cost. Instead, the lesser evil is to set the entry files to
+    // length zero, leaving the invalid entry in the index. On the next attempt
+    // to open the entry, it will fail asynchronously (since the magic numbers
+    // will not be found), and the files will actually be removed.
+    PostTaskAndReplyWithResult(
+        worker_pool_.get(), FROM_HERE,
+        base::Bind(&SimpleSynchronousEntry::TruncateEntryFiles, path_,
+                   entry_hash_),
+        base::Bind(&SimpleEntryImpl::DoomOperationComplete, this, callback,
+                   // Return to STATE_FAILURE after dooming, since no operation
+                   // can succeed on the truncated entry files.
+                   STATE_FAILURE));
+    state_ = STATE_IO_PENDING;
+    return;
+  }
   PostTaskAndReplyWithResult(
       worker_pool_.get(),
       FROM_HERE,
diff --git a/net/disk_cache/simple/simple_index.cc b/net/disk_cache/simple/simple_index.cc
index 7df258a..f6ccd3e 100644
--- a/net/disk_cache/simple/simple_index.cc
+++ b/net/disk_cache/simple/simple_index.cc
@@ -153,6 +153,7 @@
       low_watermark_(0),
       eviction_in_progress_(false),
       initialized_(false),
+      init_method_(INITIALIZE_METHOD_MAX),
       index_file_(std::move(index_file)),
       io_thread_(io_thread),
       // Creating the callback once so it is reused every time
@@ -425,6 +426,7 @@
   entries_set_.swap(*index_file_entries);
   cache_size_ = merged_cache_size;
   initialized_ = true;
+  init_method_ = load_result->init_method;
 
   // The actual IO is asynchronous, so calling WriteToDisk() shouldn't slow the
   // merge down much.
diff --git a/net/disk_cache/simple/simple_index.h b/net/disk_cache/simple/simple_index.h
index 0946e5b..ed37bd07 100644
--- a/net/disk_cache/simple/simple_index.h
+++ b/net/disk_cache/simple/simple_index.h
@@ -78,6 +78,14 @@
 class NET_EXPORT_PRIVATE SimpleIndex
     : public base::SupportsWeakPtr<SimpleIndex> {
  public:
+  // Used in histograms. Please only add entries at the end.
+  enum IndexInitMethod {
+    INITIALIZE_METHOD_RECOVERED = 0,
+    INITIALIZE_METHOD_LOADED = 1,
+    INITIALIZE_METHOD_NEWCACHE = 2,
+    INITIALIZE_METHOD_MAX = 3,
+  };
+
   typedef std::vector<uint64_t> HashList;
 
   SimpleIndex(const scoped_refptr<base::SingleThreadTaskRunner>& io_thread,
@@ -138,6 +146,8 @@
   // Returns whether the index has been initialized yet.
   bool initialized() const { return initialized_; }
 
+  IndexInitMethod init_method() const { return init_method_; }
+
  private:
   friend class SimpleIndexTest;
   FRIEND_TEST_ALL_PREFIXES(SimpleIndexTest, IndexSizeCorrectOnMerge);
@@ -178,6 +188,7 @@
   // initialization.
   base::hash_set<uint64_t> removed_entries_;
   bool initialized_;
+  IndexInitMethod init_method_;
 
   scoped_ptr<SimpleIndexFile> index_file_;
 
diff --git a/net/disk_cache/simple/simple_index_file.cc b/net/disk_cache/simple/simple_index_file.cc
index 025ffe98..c23d64e6 100644
--- a/net/disk_cache/simple/simple_index_file.cc
+++ b/net/disk_cache/simple/simple_index_file.cc
@@ -55,19 +55,10 @@
                    "IndexFileStateOnLoad", cache_type, state, INDEX_STATE_MAX);
 }
 
-// Used in histograms. Please only add new values at the end.
-enum IndexInitMethod {
-  INITIALIZE_METHOD_RECOVERED = 0,
-  INITIALIZE_METHOD_LOADED = 1,
-  INITIALIZE_METHOD_NEWCACHE = 2,
-  INITIALIZE_METHOD_MAX = 3,
-};
-
-void UmaRecordIndexInitMethod(IndexInitMethod method,
+void UmaRecordIndexInitMethod(SimpleIndex::IndexInitMethod method,
                               net::CacheType cache_type) {
-  SIMPLE_CACHE_UMA(ENUMERATION,
-                   "IndexInitializeMethod", cache_type,
-                   method, INITIALIZE_METHOD_MAX);
+  SIMPLE_CACHE_UMA(ENUMERATION, "IndexInitializeMethod", cache_type, method,
+                   SimpleIndex::INITIALIZE_METHOD_MAX);
 }
 
 bool WritePickleFile(base::Pickle* pickle, const base::FilePath& file_name) {
@@ -320,7 +311,8 @@
       } else {
         UmaRecordIndexFileState(INDEX_STATE_FRESH, cache_type);
       }
-      UmaRecordIndexInitMethod(INITIALIZE_METHOD_LOADED, cache_type);
+      out_result->init_method = SimpleIndex::INITIALIZE_METHOD_LOADED;
+      UmaRecordIndexInitMethod(out_result->init_method, cache_type);
       return;
     }
     UmaRecordIndexFileState(INDEX_STATE_STALE, cache_type);
@@ -334,13 +326,15 @@
   SIMPLE_CACHE_UMA(COUNTS, "IndexEntriesRestored", cache_type,
                    out_result->entries.size());
   if (index_file_existed) {
-    UmaRecordIndexInitMethod(INITIALIZE_METHOD_RECOVERED, cache_type);
+    out_result->init_method = SimpleIndex::INITIALIZE_METHOD_RECOVERED;
+
   } else {
-    UmaRecordIndexInitMethod(INITIALIZE_METHOD_NEWCACHE, cache_type);
+    out_result->init_method = SimpleIndex::INITIALIZE_METHOD_NEWCACHE;
     SIMPLE_CACHE_UMA(COUNTS,
                      "IndexCreatedEntryCount", cache_type,
                      out_result->entries.size());
   }
+  UmaRecordIndexInitMethod(out_result->init_method, cache_type);
 }
 
 // static
diff --git a/net/disk_cache/simple/simple_index_file.h b/net/disk_cache/simple/simple_index_file.h
index eb133011..a5db59af 100644
--- a/net/disk_cache/simple/simple_index_file.h
+++ b/net/disk_cache/simple/simple_index_file.h
@@ -37,6 +37,7 @@
 
   bool did_load;
   SimpleIndex::EntrySet entries;
+  SimpleIndex::IndexInitMethod init_method;
   bool flush_required;
 };
 
diff --git a/net/disk_cache/simple/simple_synchronous_entry.cc b/net/disk_cache/simple/simple_synchronous_entry.cc
index 3fdb3cc..220f6a8 100644
--- a/net/disk_cache/simple/simple_synchronous_entry.cc
+++ b/net/disk_cache/simple/simple_synchronous_entry.cc
@@ -111,6 +111,18 @@
   return file_index == disk_cache::simple_util::GetFileIndexFromStreamIndex(2);
 }
 
+bool TruncatePath(const FilePath& filename_to_truncate) {
+  File file_to_truncate;
+  int flags = File::FLAG_OPEN | File::FLAG_READ | File::FLAG_WRITE |
+              File::FLAG_SHARE_DELETE;
+  file_to_truncate.Initialize(filename_to_truncate, flags);
+  if (!file_to_truncate.IsValid())
+    return false;
+  if (!file_to_truncate.SetLength(0))
+    return false;
+  return true;
+}
+
 }  // namespace
 
 namespace disk_cache {
@@ -264,6 +276,13 @@
 }
 
 // static
+int SimpleSynchronousEntry::TruncateEntryFiles(const base::FilePath& path,
+                                               uint64_t entry_hash) {
+  const bool deleted_well = TruncateFilesForEntryHash(path, entry_hash);
+  return deleted_well ? net::OK : net::ERR_FAILED;
+}
+
+// static
 int SimpleSynchronousEntry::DoomEntrySet(
     const std::vector<uint64_t>* key_hashes,
     const FilePath& path) {
@@ -1160,6 +1179,23 @@
   return result;
 }
 
+// static
+bool SimpleSynchronousEntry::TruncateFilesForEntryHash(
+    const FilePath& path,
+    const uint64_t entry_hash) {
+  bool result = true;
+  for (int i = 0; i < kSimpleEntryFileCount; ++i) {
+    FilePath filename_to_truncate =
+        path.AppendASCII(GetFilenameFromEntryHashAndFileIndex(entry_hash, i));
+    if (!TruncatePath(filename_to_truncate))
+      result = false;
+  }
+  FilePath to_delete =
+      path.AppendASCII(GetSparseFilenameFromEntryHash(entry_hash));
+  TruncatePath(to_delete);
+  return result;
+}
+
 void SimpleSynchronousEntry::RecordSyncCreateResult(CreateEntryResult result,
                                                     bool had_index) {
   DCHECK_LT(result, CREATE_ENTRY_MAX);
diff --git a/net/disk_cache/simple/simple_synchronous_entry.h b/net/disk_cache/simple/simple_synchronous_entry.h
index 6386a45..963f665b 100644
--- a/net/disk_cache/simple/simple_synchronous_entry.h
+++ b/net/disk_cache/simple/simple_synchronous_entry.h
@@ -132,6 +132,13 @@
   // executed through that instance). Returns a net error code.
   static int DoomEntry(const base::FilePath& path, uint64_t entry_hash);
 
+  // Like |DoomEntry()| above, except that it truncates the entry files rather
+  // than deleting them. Used when dooming entries after the backend has
+  // shutdown. See implementation of |SimpleEntryImpl::DoomEntryInternal()| for
+  // more.
+  static int TruncateEntryFiles(const base::FilePath& path,
+                                uint64_t entry_hash);
+
   // Like |DoomEntry()| above. Deletes all entries corresponding to the
   // |key_hashes|. Succeeds only when all entries are deleted. Returns a net
   // error code.
@@ -299,6 +306,8 @@
                                      int file_index);
   static bool DeleteFilesForEntryHash(const base::FilePath& path,
                                       uint64_t entry_hash);
+  static bool TruncateFilesForEntryHash(const base::FilePath& path,
+                                        uint64_t entry_hash);
 
   void RecordSyncCreateResult(CreateEntryResult result, bool had_index);
 
diff --git a/net/quic/crypto/crypto_server_test.cc b/net/quic/crypto/crypto_server_test.cc
index 8fc3689f..430aa7cf 100644
--- a/net/quic/crypto/crypto_server_test.cc
+++ b/net/quic/crypto/crypto_server_test.cc
@@ -874,7 +874,7 @@
   CryptoUtils::HashHandshakeMessage(msg, &chlo_hash);
   EXPECT_EQ(QUIC_SUCCESS,
             proof_verifier->VerifyProof(
-                "test.example.com", scfg_str.as_string(), client_version_,
+                "test.example.com", 443, scfg_str.as_string(), client_version_,
                 chlo_hash, certs, "", proof.as_string(), verify_context.get(),
                 &error_details, &details, &callback));
 }
diff --git a/net/quic/crypto/proof_test.cc b/net/quic/crypto/proof_test.cc
index 6f8f797..cdca324e 100644
--- a/net/quic/crypto/proof_test.cc
+++ b/net/quic/crypto/proof_test.cc
@@ -56,6 +56,7 @@
 // matches |expected_ok|.
 void RunVerification(ProofVerifier* verifier,
                      const string& hostname,
+                     const uint16_t port,
                      const string& server_config,
                      QuicVersion quic_version,
                      StringPiece chlo_hash,
@@ -72,7 +73,7 @@
       new TestProofVerifierCallback(&comp_callback, &ok, &error_details);
 
   QuicAsyncStatus status = verifier->VerifyProof(
-      hostname, server_config, quic_version, chlo_hash, certs, "", proof,
+      hostname, port, server_config, quic_version, chlo_hash, certs, "", proof,
       verify_context.get(), &error_details, &details, callback);
 
   switch (status) {
@@ -122,9 +123,11 @@
 
   const string server_config = "server config bytes";
   const string hostname = "test.example.com";
+  const uint16_t port = 8443;
   const string first_chlo_hash = "first chlo hash bytes";
   const string second_chlo_hash = "first chlo hash bytes";
   const QuicVersion quic_version = GetParam();
+
   scoped_refptr<ProofSource::Chain> chain;
   scoped_refptr<ProofSource::Chain> first_chain;
   string error_details, signature, first_signature, first_cert_sct, cert_sct;
@@ -147,25 +150,26 @@
   }
   ASSERT_EQ(first_cert_sct, cert_sct);
 
-  RunVerification(verifier.get(), hostname, server_config, quic_version,
+  RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                   first_chlo_hash, chain->certs, signature, true);
 
-  RunVerification(verifier.get(), "foo.com", server_config, quic_version,
+  RunVerification(verifier.get(), "foo.com", port, server_config, quic_version,
                   first_chlo_hash, chain->certs, signature, false);
 
-  RunVerification(verifier.get(), server_config.substr(1, string::npos),
+  RunVerification(verifier.get(), server_config.substr(1, string::npos), port,
                   server_config, quic_version, first_chlo_hash, chain->certs,
                   signature, false);
 
   const string corrupt_signature = "1" + signature;
-  RunVerification(verifier.get(), hostname, server_config, quic_version,
+  RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                   first_chlo_hash, chain->certs, corrupt_signature, false);
 
   vector<string> wrong_certs;
   for (size_t i = 1; i < chain->certs.size(); i++) {
     wrong_certs.push_back(chain->certs[i]);
   }
-  RunVerification(verifier.get(), "foo.com", server_config, quic_version,
+
+  RunVerification(verifier.get(), "foo.com", port, server_config, quic_version,
                   first_chlo_hash, wrong_certs, corrupt_signature, false);
 }
 
@@ -280,6 +284,7 @@
 
   const string server_config = "server config bytes";
   const string hostname = "test.example.com";
+  const uint16_t port = 8443;
   const string chlo_hash = "proof nonce bytes";
   const QuicVersion quic_version = GetParam();
 
@@ -300,23 +305,23 @@
   for (size_t i = 0; i < signatures.size(); i++) {
     const string& signature = signatures[i];
 
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, certs, signature, true);
-    RunVerification(verifier.get(), "foo.com", server_config, quic_version,
-                    chlo_hash, certs, signature, false);
-    RunVerification(verifier.get(), hostname,
+    RunVerification(verifier.get(), "foo.com", port, server_config,
+                    quic_version, chlo_hash, certs, signature, false);
+    RunVerification(verifier.get(), hostname, port,
                     server_config.substr(1, string::npos), quic_version,
                     chlo_hash, certs, signature, false);
 
     const string corrupt_signature = "1" + signature;
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, certs, corrupt_signature, false);
 
     vector<string> wrong_certs;
     for (size_t i = 1; i < certs.size(); i++) {
       wrong_certs.push_back(certs[i]);
     }
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, wrong_certs, signature, false);
   }
 }
@@ -370,6 +375,7 @@
 
   const string server_config = "server config bytes";
   const string hostname = "test.example.com";
+  const uint16_t port = 8443;
   const string chlo_hash = "chlo_hash nonce bytes";
   const QuicVersion quic_version = GetParam();
 
@@ -392,13 +398,13 @@
     const string& signature = signatures[i];
 
     LOG(ERROR) << "=================== expect ok =====================";
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, certs, signature, true);
     LOG(ERROR) << "=================== hose_name = foo.com =============";
-    RunVerification(verifier.get(), "foo.com", server_config, quic_version,
-                    chlo_hash, certs, signature, false);
+    RunVerification(verifier.get(), "foo.com", port, server_config,
+                    quic_version, chlo_hash, certs, signature, false);
     LOG(ERROR) << "================== server_config ====================";
-    RunVerification(verifier.get(), hostname,
+    RunVerification(verifier.get(), hostname, port,
                     server_config.substr(1, string::npos), quic_version,
                     chlo_hash, certs, signature, false);
 
@@ -407,13 +413,13 @@
     string corrupt_signature = signature;
     corrupt_signature[corrupt_signature.size() - 1] += 1;
     LOG(ERROR) << "================= corrupt signature =======================";
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, certs, corrupt_signature, false);
 
     // Prepending a "1" makes the DER invalid.
     const string bad_der_signature1 = "1" + signature;
     LOG(ERROR) << "=========================bad der signature ===============";
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, certs, bad_der_signature1, false);
 
     vector<string> wrong_certs;
@@ -421,7 +427,7 @@
       wrong_certs.push_back(certs[i]);
     }
     LOG(ERROR) << "==================== wrong certs =========================";
-    RunVerification(verifier.get(), hostname, server_config, quic_version,
+    RunVerification(verifier.get(), hostname, port, server_config, quic_version,
                     chlo_hash, wrong_certs, signature, false);
   }
 }
diff --git a/net/quic/crypto/proof_verifier.h b/net/quic/crypto/proof_verifier.h
index 306c9cd..be6f9e7 100644
--- a/net/quic/crypto/proof_verifier.h
+++ b/net/quic/crypto/proof_verifier.h
@@ -75,6 +75,7 @@
   // The signature uses SHA-256 as the hash function and PSS padding in the
   // case of RSA.
   virtual QuicAsyncStatus VerifyProof(const std::string& hostname,
+                                      const uint16_t port,
                                       const std::string& server_config,
                                       QuicVersion quic_version,
                                       base::StringPiece chlo_hash,
diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc
index 813315b..044c694b 100644
--- a/net/quic/crypto/proof_verifier_chromium.cc
+++ b/net/quic/crypto/proof_verifier_chromium.cc
@@ -63,6 +63,7 @@
   // Starts the proof verification.  If |QUIC_PENDING| is returned, then
   // |callback| will be invoked asynchronously when the verification completes.
   QuicAsyncStatus VerifyProof(const std::string& hostname,
+                              const uint16_t port,
                               const std::string& server_config,
                               QuicVersion quic_version,
                               base::StringPiece chlo_hash,
@@ -106,6 +107,8 @@
 
   // |hostname| specifies the hostname for which |certs| is a valid chain.
   std::string hostname_;
+  // |port| specifies the target port for the connection.
+  uint16_t port_;
 
   scoped_ptr<ProofVerifierCallback> callback_;
   scoped_ptr<ProofVerifyDetailsChromium> verify_details_;
@@ -158,6 +161,7 @@
 
 QuicAsyncStatus ProofVerifierChromium::Job::VerifyProof(
     const string& hostname,
+    const uint16_t port,
     const string& server_config,
     QuicVersion quic_version,
     StringPiece chlo_hash,
@@ -224,6 +228,7 @@
   }
 
   hostname_ = hostname;
+  port_ = port;
 
   next_state_ = STATE_VERIFY_CERT;
   switch (DoLoop(OK)) {
@@ -323,12 +328,11 @@
             verify_details_->ct_verify_result.verified_scts, net_log_);
   }
 
-  // TODO(estark): replace 0 below with the port of the connection.
   if (transport_security_state_ &&
       (result == OK ||
        (IsCertificateError(result) && IsCertStatusMinorError(cert_status))) &&
       !transport_security_state_->CheckPublicKeyPins(
-          HostPortPair(hostname_, 0),
+          HostPortPair(hostname_, port_),
           cert_verify_result.is_issued_by_known_root,
           cert_verify_result.public_key_hashes, cert_.get(),
           cert_verify_result.verified_cert.get(),
@@ -435,6 +439,7 @@
 
 QuicAsyncStatus ProofVerifierChromium::VerifyProof(
     const std::string& hostname,
+    const uint16_t port,
     const std::string& server_config,
     QuicVersion quic_version,
     base::StringPiece chlo_hash,
@@ -456,7 +461,7 @@
               transport_security_state_, cert_transparency_verifier_,
               chromium_context->cert_verify_flags, chromium_context->net_log));
   QuicAsyncStatus status = job->VerifyProof(
-      hostname, server_config, quic_version, chlo_hash, certs, cert_sct,
+      hostname, port, server_config, quic_version, chlo_hash, certs, cert_sct,
       signature, error_details, verify_details, callback);
   if (status == QUIC_PENDING) {
     active_jobs_.insert(job.release());
diff --git a/net/quic/crypto/proof_verifier_chromium.h b/net/quic/crypto/proof_verifier_chromium.h
index 7ba3494c..eef604d2f 100644
--- a/net/quic/crypto/proof_verifier_chromium.h
+++ b/net/quic/crypto/proof_verifier_chromium.h
@@ -66,6 +66,7 @@
 
   // ProofVerifier interface
   QuicAsyncStatus VerifyProof(const std::string& hostname,
+                              const uint16_t port,
                               const std::string& server_config,
                               QuicVersion quic_version,
                               base::StringPiece chlo_hash,
diff --git a/net/quic/crypto/proof_verifier_chromium_test.cc b/net/quic/crypto/proof_verifier_chromium_test.cc
index b2fbba9..bc2d27f 100644
--- a/net/quic/crypto/proof_verifier_chromium_test.cc
+++ b/net/quic/crypto/proof_verifier_chromium_test.cc
@@ -101,6 +101,7 @@
 };
 
 const char kTestHostname[] = "test.example.com";
+const uint16_t kTestPort = 8443;
 const char kTestConfig[] = "server config bytes";
 const char kLogDescription[] = "somelog";
 
@@ -222,7 +223,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
       GetTestSignature(), verify_context_.get(), &error_details_, &details_,
       callback.get());
   ASSERT_EQ(QUIC_FAILURE, status);
@@ -240,7 +241,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_,
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_,
       ct::GetSCTListForTesting(), "", verify_context_.get(), &error_details_,
       &details_, callback.get());
   ASSERT_EQ(QUIC_FAILURE, status);
@@ -259,7 +260,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_,
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_,
       ct::GetSCTListWithInvalidSCT(), "", verify_context_.get(),
       &error_details_, &details_, callback.get());
   ASSERT_EQ(QUIC_FAILURE, status);
@@ -276,8 +277,9 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "", kTestConfig,
-      verify_context_.get(), &error_details_, &details_, callback.get());
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestConfig, verify_context_.get(), &error_details_, &details_,
+      callback.get());
   ASSERT_EQ(QUIC_FAILURE, status);
 }
 
@@ -300,7 +302,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
       GetTestSignature(), verify_context_.get(), &error_details_, &details_,
       callback.get());
   ASSERT_EQ(QUIC_SUCCESS, status);
@@ -333,7 +335,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
       GetTestSignature(), verify_context_.get(), &error_details_, &details_,
       callback.get());
   ASSERT_EQ(QUIC_SUCCESS, status);
@@ -366,7 +368,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
       GetTestSignature(), verify_context_.get(), &error_details_, &details_,
       callback.get());
   ASSERT_EQ(QUIC_SUCCESS, status);
@@ -400,7 +402,7 @@
   scoped_ptr<DummyProofVerifierCallback> callback(
       new DummyProofVerifierCallback);
   QuicAsyncStatus status = proof_verifier.VerifyProof(
-      kTestHostname, kTestConfig, QUIC_VERSION_25, "", certs_, "",
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_25, "", certs_, "",
       GetTestSignature(), verify_context_.get(), &error_details_, &details_,
       callback.get());
   ASSERT_EQ(QUIC_SUCCESS, status);
diff --git a/net/quic/quic_crypto_client_stream.cc b/net/quic/quic_crypto_client_stream.cc
index e494c3b..88e0d68f 100644
--- a/net/quic/quic_crypto_client_stream.cc
+++ b/net/quic/quic_crypto_client_stream.cc
@@ -477,7 +477,7 @@
   verify_ok_ = false;
 
   QuicAsyncStatus status = verifier->VerifyProof(
-      server_id_.host(), cached->server_config(),
+      server_id_.host(), server_id_.port(), cached->server_config(),
       session()->connection()->version(), chlo_hash_, cached->certs(),
       cached->cert_sct(), cached->signature(), verify_context_.get(),
       &verify_error_details_, &verify_details_, proof_verify_callback);
diff --git a/net/quic/test_tools/crypto_test_utils_chromium.cc b/net/quic/test_tools/crypto_test_utils_chromium.cc
index e9784cd..3932f31 100644
--- a/net/quic/test_tools/crypto_test_utils_chromium.cc
+++ b/net/quic/test_tools/crypto_test_utils_chromium.cc
@@ -150,6 +150,7 @@
 
   // ProofVerifier interface
   QuicAsyncStatus VerifyProof(const std::string& hostname,
+                              const uint16_t port,
                               const std::string& server_config,
                               QuicVersion quic_version,
                               StringPiece chlo_hash,
diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc
index 76cf9b5..dd68b056 100644
--- a/net/socket/ssl_client_socket_openssl.cc
+++ b/net/socket/ssl_client_socket_openssl.cc
@@ -91,7 +91,7 @@
 
 // Token Binding ProtocolVersions supported.
 const uint8_t kTbProtocolVersionMajor = 0;
-const uint8_t kTbProtocolVersionMinor = 4;
+const uint8_t kTbProtocolVersionMinor = 5;
 const uint8_t kTbMinProtocolVersionMajor = 0;
 const uint8_t kTbMinProtocolVersionMinor = 3;
 
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 3ab0112..9676748 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -657,11 +657,7 @@
   std::string pinning_failure_log;
   // DISABLE_PIN_REPORTS is set here because this check can fail in
   // normal operation without being indicative of a misconfiguration or
-  // attack.
-  //
-  // TODO(estark): replace 0 below with the port of the connection
-  // (though it won't actually be used since reports aren't getting
-  // sent).
+  // attack. Port is left at 0 as it is never used.
   if (!transport_security_state->CheckPublicKeyPins(
           HostPortPair(new_hostname, 0), ssl_info.is_issued_by_known_root,
           ssl_info.public_key_hashes, ssl_info.unverified_cert.get(),
diff --git a/net/tools/quic/test_tools/quic_test_client.cc b/net/tools/quic/test_tools/quic_test_client.cc
index 97625d85..db9a9b9 100644
--- a/net/tools/quic/test_tools/quic_test_client.cc
+++ b/net/tools/quic/test_tools/quic_test_client.cc
@@ -43,6 +43,7 @@
  public:
   // ProofVerifier interface.
   QuicAsyncStatus VerifyProof(const string& hostname,
+                              const uint16_t port,
                               const string& server_config,
                               QuicVersion quic_version,
                               StringPiece chlo_hash,
diff --git a/printing/pdf_metafile_cg_mac.cc b/printing/pdf_metafile_cg_mac.cc
index c8fe2fd8..188b1a1 100644
--- a/printing/pdf_metafile_cg_mac.cc
+++ b/printing/pdf_metafile_cg_mac.cc
@@ -8,13 +8,10 @@
 
 #include <algorithm>
 
-#include "base/files/file_path.h"
-#include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/strings/sys_string_conversions.h"
-#include "base/threading/thread_local.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
 
@@ -22,26 +19,6 @@
 
 namespace {
 
-// What is up with this ugly hack? <http://crbug.com/64641>, that's what.
-// The bug: Printing certain PDFs crashes. The cause: When printing, the
-// renderer process assembles pages one at a time, in PDF format, to send to the
-// browser process. When printing a PDF, the PDF plugin returns output in PDF
-// format. There is a bug in 10.5 and 10.6 (<rdar://9018916>,
-// <http://www.openradar.me/9018916>) where reference counting is broken when
-// drawing certain PDFs into PDF contexts. So at the high-level, a PdfMetafileCg
-// is used to hold the destination context, and then about five layers down on
-// the callstack, a PdfMetafileCg is used to hold the source PDF. If the source
-// PDF is drawn into the destination PDF context and then released, accessing
-// the destination PDF context will crash. So the outermost instantiation of
-// PdfMetafileCg creates a pool for deeper instantiations to dump their used
-// PDFs into rather than releasing them. When the top-level PDF is closed, then
-// it's safe to clear the pool. A thread local is used to allow this to work in
-// single-process mode. TODO(avi): This Apple bug appears fixed in 10.7; when
-// 10.7 is the minimum required version for Chromium, remove this hack.
-
-base::LazyInstance<base::ThreadLocalPointer<struct __CFSet> >::Leaky
-    thread_pdf_docs = LAZY_INSTANCE_INITIALIZER;
-
 // Rotate a page by |num_rotations| * 90 degrees, counter-clockwise.
 void RotatePage(CGContextRef context, const CGRect rect, int num_rotations) {
   switch (num_rotations) {
@@ -79,21 +56,9 @@
 
 namespace printing {
 
-PdfMetafileCg::PdfMetafileCg()
-    : page_is_open_(false), thread_pdf_docs_owned_(false) {}
+PdfMetafileCg::PdfMetafileCg() : page_is_open_(false) {}
 
-PdfMetafileCg::~PdfMetafileCg() {
-  DCHECK(thread_checker_.CalledOnValidThread());
-  if (pdf_doc_ && thread_pdf_docs.Pointer()->Get()) {
-    // Transfer ownership to the pool.
-    CFSetAddValue(thread_pdf_docs.Pointer()->Get(), pdf_doc_);
-  }
-
-  if (thread_pdf_docs_owned_) {
-    CFRelease(thread_pdf_docs.Pointer()->Get());
-    thread_pdf_docs.Pointer()->Set(NULL);
-  }
-}
+PdfMetafileCg::~PdfMetafileCg() {}
 
 bool PdfMetafileCg::Init() {
   // Ensure that Init hasn't already been called.
@@ -109,13 +74,13 @@
       CGDataConsumerCreateWithCFData(pdf_data_));
   if (!pdf_consumer.get()) {
     LOG(ERROR) << "Failed to create data consumer for metafile";
-    pdf_data_.reset(NULL);
+    pdf_data_.reset();
     return false;
   }
-  context_.reset(CGPDFContextCreate(pdf_consumer, NULL, NULL));
+  context_.reset(CGPDFContextCreate(pdf_consumer, nullptr, nullptr));
   if (!context_.get()) {
     LOG(ERROR) << "Failed to create pdf context for metafile";
-    pdf_data_.reset(NULL);
+    pdf_data_.reset();
   }
 
   return true;
@@ -158,7 +123,7 @@
   CGContextTranslateCTM(context_, 0, height);
   CGContextScaleCTM(context_, scale_factor, -scale_factor);
 
-  return context_.get() != NULL;
+  return context_.get();
 }
 
 bool PdfMetafileCg::FinishPage() {
@@ -187,7 +152,7 @@
   }
 #endif
   CGPDFContextClose(context_.get());
-  context_.reset(NULL);
+  context_.reset();
   return true;
 }
 
diff --git a/printing/pdf_metafile_cg_mac.h b/printing/pdf_metafile_cg_mac.h
index db6487f7..19871bd 100644
--- a/printing/pdf_metafile_cg_mac.h
+++ b/printing/pdf_metafile_cg_mac.h
@@ -11,13 +11,8 @@
 
 #include "base/mac/scoped_cftyperef.h"
 #include "base/macros.h"
-#include "base/threading/thread_checker.h"
 #include "printing/metafile.h"
 
-namespace base {
-class FilePath;
-}
-
 namespace gfx {
 class Rect;
 class Size;
@@ -61,8 +56,6 @@
   // Returns a CGPDFDocumentRef version of pdf_data_.
   CGPDFDocumentRef GetPDFDocument() const;
 
-  base::ThreadChecker thread_checker_;
-
   // Context for rendering to the pdf.
   base::ScopedCFTypeRef<CGContextRef> context_;
 
@@ -75,9 +68,6 @@
   // Whether or not a page is currently open.
   bool page_is_open_;
 
-  // Whether this instantiation of the PdfMetafileCg owns the thread_pdf_docs.
-  bool thread_pdf_docs_owned_;
-
   DISALLOW_COPY_AND_ASSIGN(PdfMetafileCg);
 };
 
diff --git a/printing/pdf_transform.cc b/printing/pdf_transform.cc
index 35dd1df..f691168 100644
--- a/printing/pdf_transform.cc
+++ b/printing/pdf_transform.cc
@@ -11,6 +11,19 @@
 
 namespace printing {
 
+namespace {
+
+// When a ClipBox has top < bottom, or right < left, the values should be
+// swapped.
+void SwapClipBoxValuesIfNeeded(ClipBox* clip_box) {
+  if (clip_box->top < clip_box->bottom)
+    std::swap(clip_box->top, clip_box->bottom);
+  if (clip_box->right < clip_box->left)
+    std::swap(clip_box->right, clip_box->left);
+}
+
+}  // namespace
+
 double CalculateScaleFactor(const gfx::Rect& content_rect,
                             double src_width,
                             double src_height,
@@ -42,6 +55,11 @@
                                  bool has_crop_box,
                                  printing::ClipBox* media_box,
                                  printing::ClipBox* crop_box) {
+  if (has_media_box)
+    SwapClipBoxValuesIfNeeded(media_box);
+  if (has_crop_box)
+    SwapClipBoxValuesIfNeeded(crop_box);
+
   if (!has_media_box && !has_crop_box) {
     SetDefaultClipBox(rotated, crop_box);
     SetDefaultClipBox(rotated, media_box);
diff --git a/printing/pdf_transform_unittest.cc b/printing/pdf_transform_unittest.cc
index 3c91c788..e026ac4 100644
--- a/printing/pdf_transform_unittest.cc
+++ b/printing/pdf_transform_unittest.cc
@@ -191,7 +191,7 @@
 }
 
 TEST(PdfTransformTest, CalculateScaledClipBoxOffset) {
-  gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+  const gfx::Rect rect(kDefaultWidth, kDefaultHeight);
   ClipBox clip_box;
   double offset_x;
   double offset_y;
@@ -213,7 +213,7 @@
 TEST(PdfTransformTest, CalculateNonScaledClipBoxOffset) {
   int page_width = kDefaultWidth;
   int page_height = kDefaultHeight;
-  gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+  const gfx::Rect rect(kDefaultWidth, kDefaultHeight);
   ClipBox clip_box;
   double offset_x;
   double offset_y;
@@ -279,4 +279,60 @@
   EXPECT_DOUBLE_EQ(-170, offset_y);
 }
 
+// https://crbug.com/491160 and https://crbug.com/588757
+TEST(PdfTransformTest, ReversedMediaBox) {
+  int page_width = kDefaultWidth;
+  int page_height = kDefaultHeight;
+  const gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+  ClipBox clip_box;
+  double offset_x;
+  double offset_y;
+
+  const ClipBox expected_media_box_b491160 = {0, 612, 0, -792};
+  ClipBox media_box_b491160 = {0, 612, -792, 0};
+  CalculateMediaBoxAndCropBox(false, true, false, &media_box_b491160,
+                              &clip_box);
+  ExpectBoxesAreEqual(expected_media_box_b491160, media_box_b491160);
+  ExpectBoxesAreEqual(expected_media_box_b491160, clip_box);
+
+  CalculateScaledClipBoxOffset(rect, media_box_b491160, &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(792, offset_y);
+
+  CalculateNonScaledClipBoxOffset(rect, 0, page_width, page_height,
+                                  media_box_b491160, &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(792, offset_y);
+
+  ClipBox media_box_b588757 = {0, 612, 0, 792};
+  CalculateMediaBoxAndCropBox(false, true, false, &media_box_b588757,
+                              &clip_box);
+  ExpectDefaultPortraitBox(media_box_b588757);
+  ExpectDefaultPortraitBox(clip_box);
+
+  CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(0, offset_y);
+
+  CalculateNonScaledClipBoxOffset(rect, 0, page_width, page_height, clip_box,
+                                  &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(0, offset_y);
+
+  ClipBox media_box_left_right_flipped = {612, 0, 0, 792};
+  CalculateMediaBoxAndCropBox(false, true, false, &media_box_left_right_flipped,
+                              &clip_box);
+  ExpectDefaultPortraitBox(media_box_left_right_flipped);
+  ExpectDefaultPortraitBox(clip_box);
+
+  CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(0, offset_y);
+
+  CalculateNonScaledClipBoxOffset(rect, 0, page_width, page_height, clip_box,
+                                  &offset_x, &offset_y);
+  EXPECT_DOUBLE_EQ(0, offset_x);
+  EXPECT_DOUBLE_EQ(0, offset_y);
+}
+
 }  // namespace printing
diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
index 3fd8603..5cb581b 100644
--- a/remoting/android/client_java_tmpl.gni
+++ b/remoting/android/client_java_tmpl.gni
@@ -7,65 +7,68 @@
 
 template("remoting_android_client_java_tmpl") {
   android_library(target_name) {
-    java_files = [
-      "//remoting/android/java/src/org/chromium/chromoting/AccountsAdapter.java",
-      "//remoting/android/java/src/org/chromium/chromoting/accountswitcher/AccountSwitcherBase.java",
-      "//remoting/android/java/src/org/chromium/chromoting/accountswitcher/AccountSwitcherBasic.java",
-      "//remoting/android/java/src/org/chromium/chromoting/accountswitcher/AccountSwitcherFactory.java",
-      "//remoting/android/java/src/org/chromium/chromoting/accountswitcher/AccountSwitcher.java",
-      "//remoting/android/java/src/org/chromium/chromoting/ActivityLifecycleListener.java",
-      "//remoting/android/java/src/org/chromium/chromoting/AnimationJob.java",
-      "//remoting/android/java/src/org/chromium/chromoting/Capabilities.java",
-      "//remoting/android/java/src/org/chromium/chromoting/CapabilityManager.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/CardboardRenderer.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/CardboardUtil.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/Cursor.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/DesktopActivity.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/Desktop.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/MenuBar.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/MenuItem.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/Photosphere.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/ShaderHelper.java",
-      "//remoting/android/java/src/org/chromium/chromoting/cardboard/TextureHelper.java",
-      "//remoting/android/java/src/org/chromium/chromoting/ChromotingDownloadManager.java",
-      "//remoting/android/java/src/org/chromium/chromoting/Chromoting.java",
-      "//remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java",
-      "//remoting/android/java/src/org/chromium/chromoting/ClientExtension.java",
-      "//remoting/android/java/src/org/chromium/chromoting/DesktopCanvas.java",
-      "//remoting/android/java/src/org/chromium/chromoting/Desktop.java",
-      "//remoting/android/java/src/org/chromium/chromoting/DesktopViewInterface.java",
-      "//remoting/android/java/src/org/chromium/chromoting/DesktopView.java",
-      "//remoting/android/java/src/org/chromium/chromoting/DummyActivityLifecycleListener.java",
-      "//remoting/android/java/src/org/chromium/chromoting/DummyClientExtension.java",
-      "//remoting/android/java/src/org/chromium/chromoting/FlingAnimationJob.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/CreditsActivity.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/HelpAndFeedbackBasic.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/HelpAndFeedback.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/HelpContext.java",
-      "//remoting/android/java/src/org/chromium/chromoting/help/HelpSingleton.java",
-      "//remoting/android/java/src/org/chromium/chromoting/HostInfo.java",
-      "//remoting/android/java/src/org/chromium/chromoting/HostListAdapter.java",
-      "//remoting/android/java/src/org/chromium/chromoting/HostListLoader.java",
-      "//remoting/android/java/src/org/chromium/chromoting/InputStrategyInterface.java",
-      "//remoting/android/java/src/org/chromium/chromoting/jni/Client.java",
-      "//remoting/android/java/src/org/chromium/chromoting/jni/ConnectionListener.java",
-      "//remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java",
-      "//remoting/android/java/src/org/chromium/chromoting/jni/TouchEventData.java",
-      "//remoting/android/java/src/org/chromium/chromoting/OAuthTokenFetcher.java",
-      "//remoting/android/java/src/org/chromium/chromoting/RenderData.java",
-      "//remoting/android/java/src/org/chromium/chromoting/SessionAuthenticator.java",
-      "//remoting/android/java/src/org/chromium/chromoting/SessionConnector.java",
-      "//remoting/android/java/src/org/chromium/chromoting/SimulatedTouchInputStrategy.java",
-      "//remoting/android/java/src/org/chromium/chromoting/SwipePinchDetector.java",
-      "//remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java",
-      "//remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java",
-      "//remoting/android/java/src/org/chromium/chromoting/TouchInputHandlerInterface.java",
-      "//remoting/android/java/src/org/chromium/chromoting/TouchInputHandler.java",
-      "//remoting/android/java/src/org/chromium/chromoting/TouchInputStrategy.java",
-      "//remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java",
+    _java_file_prefix = "//remoting/android/java/src/org/chromium/chromoting"
+    _java_files = [
+      "AccountsAdapter.java",
+      "ActivityLifecycleListener.java",
+      "AnimationJob.java",
+      "Capabilities.java",
+      "CapabilityManager.java",
+      "Chromoting.java",
+      "ChromotingDownloadManager.java",
+      "ChromotingUtil.java",
+      "ClientExtension.java",
+      "Desktop.java",
+      "DesktopCanvas.java",
+      "DesktopView.java",
+      "DesktopViewInterface.java",
+      "DummyActivityLifecycleListener.java",
+      "DummyClientExtension.java",
+      "FlingAnimationJob.java",
+      "HostInfo.java",
+      "HostListAdapter.java",
+      "HostListLoader.java",
+      "InputStrategyInterface.java",
+      "OAuthTokenFetcher.java",
+      "RenderData.java",
+      "SessionAuthenticator.java",
+      "SessionConnector.java",
+      "SimulatedTouchInputStrategy.java",
+      "SwipePinchDetector.java",
+      "TapGestureDetector.java",
+      "ThirdPartyTokenFetcher.java",
+      "TouchInputHandler.java",
+      "TouchInputHandlerInterface.java",
+      "TouchInputStrategy.java",
+      "TrackpadInputStrategy.java",
+      "accountswitcher/AccountSwitcher.java",
+      "accountswitcher/AccountSwitcherBase.java",
+      "accountswitcher/AccountSwitcherBasic.java",
+      "accountswitcher/AccountSwitcherFactory.java",
+      "cardboard/CardboardRenderer.java",
+      "cardboard/CardboardUtil.java",
+      "cardboard/Cursor.java",
+      "cardboard/Desktop.java",
+      "cardboard/DesktopActivity.java",
+      "cardboard/MenuBar.java",
+      "cardboard/MenuItem.java",
+      "cardboard/Photosphere.java",
+      "cardboard/ShaderHelper.java",
+      "cardboard/TextureHelper.java",
+      "help/CreditsActivity.java",
+      "help/HelpActivity.java",
+      "help/HelpAndFeedback.java",
+      "help/HelpAndFeedbackBasic.java",
+      "help/HelpContext.java",
+      "help/HelpSingleton.java",
+      "jni/Client.java",
+      "jni/ConnectionListener.java",
+      "jni/JniInterface.java",
+      "jni/TouchEventData.java",
     ]
 
+    java_files = rebase_path(_java_files, ".", _java_file_prefix)
+
     deps = [
       "//base:base_java",
       "//remoting/android:remoting_android_client_java_resources",
diff --git a/remoting/resources/remoting_strings_am.xtb b/remoting/resources/remoting_strings_am.xtb
index 227bf2a..2290418 100644
--- a/remoting/resources/remoting_strings_am.xtb
+++ b/remoting/resources/remoting_strings_am.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">ያልተጠበቀ ስህተት ተከስቷል። እባክዎ ይህንን ችግር ለገንቢዎች ሪፖርት ያድርጉት።</translation>
 <translation id="1619813076098775562">ወደ Cast መሣሪያ ዝግ ግንኙነቶች።</translation>
 <translation id="1643640058022401035">ከዚህ ገጽ መውጣት የChromoting ክፍለ-ጊዜዎን ያጠናቅቀዋል።</translation>
-<translation id="1646994964686260497">ምንም የሚገናኙት ነገር የለም።</translation>
 <translation id="1654128982815600832">ለዚህ ኮምፒውተር የርቀት ግንኙነቶችን በማንቃት ላይ…</translation>
 <translation id="170207782578677537">ይህንን ኮምፒውተር መመዝገብ አልተሳካም።</translation>
 <translation id="1704090719919187045">Chromoting የአስተናጋጅ ምርጫዎች</translation>
-<translation id="1738759452976856405">መቅዳት አቁም</translation>
 <translation id="174018511426417793">ምንም የተመዘገቡ ኮምፒውተሮች የለዎትም። ከአንድ ኮምፒውተር ጋር የርቀት ግንኙነቶችን ለማንቃት Chrome የርቀት ዴስክቶፕን እዚያው ይጫኑና «<ph name="BUTTON_NAME" />»ን ይጫኑ።</translation>
 <translation id="1742469581923031760">በመገናኘት ላይ...</translation>
 <translation id="1770394049404108959">መተግበሪያውን መክፈት አልችልም።</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">ይግቡ</translation>
 <translation id="3989511127559254552">ለመቀጠል በመጀመሪያ ለኮሚውተርዎ ተጨማሪ የመዳረሻ ፍቃዶችን መስጠት አለብዎት። ይህንን አንድ ጊዜ ብቻ ነው ማድረግ የሚኖርብዎት።</translation>
 <translation id="4006787130661126000">Chrome የርቀት ዴስክቶፕን ተጠቅመው ይህንን ኮምፒውተር መድረስ ከፈለጉ የርቀት ግንኙነቶችን ማንቃት አለብዎት።</translation>
-<translation id="401121182145179743">በመጀመሪያ ኮምፒውተርዎን ለርቀት መዳረሻ ማዋቀር አለብዎት።</translation>
 <translation id="4028465833180158312">• የቁሳዊ ንድፍ በይነገጽ ዝማኔዎች።
 • የሶስተኛ ወገን ፍቃድ እውቅናዎች።
 • ከመስመር ውጪ የሆኑ የርቀት ኮምፒውተሮች መረጃ</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ይሁን</translation>
 <translation id="6985691951107243942">እርግጠኛ ነዎት ከ<ph name="HOSTNAME" /> ጋር ያሉትን የርቀት ግንኙነቶች ማሰናከል ይፈልጋሉ? ሐሳብዎን ከቀየሩ ግንኙነቶችን ዳግም ለማንቃት ያንን ኮምፒውተር መጎብኘት ይኖርብዎታል።</translation>
 <translation id="6998989275928107238">ለ</translation>
-<translation id="7017806586333792422">መቅዳት ጀምር</translation>
 <translation id="7019153418965365059">ያልታወቀ የአስተናጋጅ ስህተት፦ <ph name="HOST_OFFLINE_REASON" />።</translation>
 <translation id="701976023053394610">የርቀት እርዳታ</translation>
 <translation id="7038683108611689168">የአጠቃቀም ስታትስቲክስ እና የብልሽት ሪፖርቶችን እንድንሰበስብ በመፍቀድ Chromoting እንድናሻሽል ያግዙን።</translation>
diff --git a/remoting/resources/remoting_strings_ar.xtb b/remoting/resources/remoting_strings_ar.xtb
index afcd636..5219a5e 100644
--- a/remoting/resources/remoting_strings_ar.xtb
+++ b/remoting/resources/remoting_strings_ar.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">حدث خطأ غير متوقع. الرجاء الإبلاغ عن هذه المشكلة إلى مطوري البرامج.</translation>
 <translation id="1619813076098775562">تم إغلاق الاتصال بجهاز البث.</translation>
 <translation id="1643640058022401035">‏ستؤدي مغادرة هذه الصفحة إلى إنهاء جلسة التوافق مع نظام التشغيل Chrome.</translation>
-<translation id="1646994964686260497">لا يوجد شيء للاتصال به.</translation>
 <translation id="1654128982815600832">جارٍ تمكين الاتصالات عن بُعد لهذا الكمبيوتر...</translation>
 <translation id="170207782578677537">أخفق تسجيل هذا الكمبيوتر.</translation>
 <translation id="1704090719919187045">‏تفضيلات مضيف التوافق مع نظام التشغيل Chrome</translation>
-<translation id="1738759452976856405">إيقاف التسجيل</translation>
 <translation id="174018511426417793">‏ليست هناك أجهزة كمبيوتر مسجلة. لتمكين الاتصالات عن بُعد بجهاز كمبيوتر، ثبِّت برنامج سطح المكتب البعيد من Chrome وانقر على “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">جارٍ الاتصال...</translation>
 <translation id="1770394049404108959">لا أستطيع فتح التطبيق.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">تسجيل الدخول</translation>
 <translation id="3989511127559254552">للاستمرار، يجب أولاً منح أذونات موسّعة بالدخول إلى جهاز الكمبيوتر. لن يُطلب منك إجراء ذلك سوى مرة واحدة.</translation>
 <translation id="4006787130661126000">‏يجب تمكين الاتصالات عن بُعد إذا كنت تريد استخدام سطح المكتب البعيد من Chrome للدخول إلى هذا الكمبيوتر.</translation>
-<translation id="401121182145179743">تحتاج أولاً إلى إعداد جهاز الكمبيوتر لإتاحة الدخول عن بُعد.</translation>
 <translation id="4028465833180158312">• تحديثات واجهة المستخدم للتصميم متعدد الأبعاد.
 • أرصدة ترخيص الجهات الخارجية.
 • المعلومات المعروضة لأجهزة الكمبيوتر المتاح دخولها عن بُعد والتي تكون في وضع عدم الاتصال.</translation>
@@ -238,7 +235,6 @@
 <translation id="6965382102122355670">موافق</translation>
 <translation id="6985691951107243942">هل تريد بالتأكيد تعطيل الاتصالات عن بُعد بـ <ph name="HOSTNAME" />؟ إذا عدلت عن هذا القرار، فسيلزمك الانتقال إلى جهاز الكمبيوتر لإعادة تمكين الاتصالات.</translation>
 <translation id="6998989275928107238">إلى</translation>
-<translation id="7017806586333792422">بدء التسجيل</translation>
 <translation id="7019153418965365059">خطأ بالمضيف غير معروف: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">المساعدة عن بُعد</translation>
 <translation id="7038683108611689168">‏ساعدنا في تحسين تطبيق التوافق مع نظام التشغيل Chrome من خلال السماح لنا بتجميع إحصاءات الاستخدام وتقارير الأعطال.</translation>
diff --git a/remoting/resources/remoting_strings_bg.xtb b/remoting/resources/remoting_strings_bg.xtb
index 69ce896f..71779917 100644
--- a/remoting/resources/remoting_strings_bg.xtb
+++ b/remoting/resources/remoting_strings_bg.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Възникна неочаквана грешка. Моля, подайте сигнал за този проблем до програмистите.</translation>
 <translation id="1619813076098775562">Връзката с устройството Cast е прекъсната.</translation>
 <translation id="1643640058022401035">Ако излезете от тази страница, сесията ви в Chromoting ще приключи.</translation>
-<translation id="1646994964686260497">Няма компютри, с които да се свържете.</translation>
 <translation id="1654128982815600832">Отдалечените връзки за този компютър се активират…</translation>
 <translation id="170207782578677537">Регистрирането на този компютър не бе успешно.</translation>
 <translation id="1704090719919187045">Предпочитания за хоста на Chromoting</translation>
-<translation id="1738759452976856405">Спиране на записването</translation>
 <translation id="174018511426417793">Нямате регистрирани компютри. За да активирате отдалечените връзки към някой, инсталирайте на него отдалечения работен плот на Chrome и кликнете върху „<ph name="BUTTON_NAME" />“.</translation>
 <translation id="1742469581923031760">Установява се връзка…</translation>
 <translation id="1770394049404108959">Не мога да отворя приложението.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Вход</translation>
 <translation id="3989511127559254552">За да продължите, първо трябва да предоставите на компютъра си разширени разрешения за достъп. Необходимо е да направите това само веднъж.</translation>
 <translation id="4006787130661126000">Трябва да активирате отдалечените връзки, ако искате да използвате отдалечения работен плот на Chrome, за да осъществявате достъп до този компютър.</translation>
-<translation id="401121182145179743">Трябва първо да настроите компютъра си за отдалечен достъп.</translation>
 <translation id="4028465833180158312">• Основани на material design актуализации на потребителския интерфейс.
 • Признания за лицензи на трети страни.
 • Показване на информация за отдалечени компютри, които са офлайн.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Наистина ли искате да деактивирате отдалечените връзки с/ъс <ph name="HOSTNAME" />? Ако промените решението си, ще трябва да посетите този компютър, за да ги активирате отново.</translation>
 <translation id="6998989275928107238">До</translation>
-<translation id="7017806586333792422">Стартиране на записването</translation>
 <translation id="7019153418965365059">Неразпозната грешка в хоста: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Отдалечено съдействие</translation>
 <translation id="7038683108611689168">Помогнете ни да подобрим Chromoting, като ни разрешите да събираме статистически данни за употребата и сигнали за сривове.</translation>
diff --git a/remoting/resources/remoting_strings_bn.xtb b/remoting/resources/remoting_strings_bn.xtb
index 45cf7611..da67c584 100644
--- a/remoting/resources/remoting_strings_bn.xtb
+++ b/remoting/resources/remoting_strings_bn.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">একটি অপ্রত্যাশিত ত্রুটি ঘটেছে৷ দয়া করে বিকাশকারীদের কাছে এই সমস্যাটির বিষয়ে জানান৷</translation>
 <translation id="1619813076098775562">কাস্ট করা ডিভাইসে সংযোগ বন্ধ।</translation>
 <translation id="1643640058022401035">এই পৃষ্ঠাটি ছেড়ে গেলেও সেটা আপনার Chromoting অধিবেশনটিকে শেষ করবে৷</translation>
-<translation id="1646994964686260497">এমন কিছু নেই যাতে সংযোগ করা যায়।</translation>
 <translation id="1654128982815600832">এই কম্পিউটারটিতে দূরবর্তী সংযোগ সক্ষম করা হচ্ছে...</translation>
 <translation id="170207782578677537">এই কম্পিউটারটিতে নথিভুক্ত করতে ব্যর্থ হয়েছে৷</translation>
 <translation id="1704090719919187045">Chromoting হোস্ট পছন্দগুলি</translation>
-<translation id="1738759452976856405">রেকর্ডিং বন্ধ করুন</translation>
 <translation id="174018511426417793">আপনার কাছ নথিভুক্ত করা কোনো কম্পিউটার নেই৷ একটি কম্পিউটারে দূরবর্তী সংযোগগুলি সক্ষম করতে সেখানে Chrome দূরবর্তী ডেস্কটপ ইনস্টল করুন এবং “<ph name="BUTTON_NAME" />” এ ক্লিক করুন৷</translation>
 <translation id="1742469581923031760">সংযুক্ত হচ্ছে...</translation>
 <translation id="1770394049404108959">আমি অ্যাপ্লিকেশানটি খুলতে পারছি না।</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">সাইন ইন</translation>
 <translation id="3989511127559254552">অবিরত করার জন্য আপনাকে আবশ্যই প্রথমে আপনার কম্পিউটারে প্রসারিত অ্যাক্সেস অনুমতিগুলি মঞ্জুর করতে হবে৷ আপনাকে কেবল একবার এটি করতে হবে৷</translation>
 <translation id="4006787130661126000">আপনি যদি এই কম্পিউটার অ্যাক্সেসের জন্য Chrome দূরবর্তী ডেস্কটপ ব্যবহার করতে চান তাহলে আপনাকে অবশ্যই দূরবর্তী সংযোগগুলি সক্ষম করতে হবে৷</translation>
-<translation id="401121182145179743">দূরবর্তী অ্যাক্সেসের জন্য প্রথমে আপনার কম্পিউটার সেট আপ করা প্রয়োজন।</translation>
 <translation id="4028465833180158312">• মেটারিয়াল ডিজাইন UI আপডেটগুলি।
 • তৃতীয় পক্ষ লাইসেন্সিং কৃতিত্ব।
 • অফলাইনে থাকা দূরবর্তী কম্পিউটারের জন্য দেখানো তথ্য।</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ওকে</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" />এ দূরবর্তী সংযোগগুলি অক্ষম করার ব্যাপারে আপনি কি নিশ্চিত? আপনি যদি মন বদলান, তাহলে সংযোগগুলি পুনঃসক্ষম করতে আপনাকে এই কম্পিউটারে যেতে হবে৷</translation>
 <translation id="6998989275928107238">প্রতি</translation>
-<translation id="7017806586333792422">রেকর্ডিং শুরু করুন</translation>
 <translation id="7019153418965365059">অস্বীকৃত হোস্ট ত্রুটি: <ph name="HOST_OFFLINE_REASON" />।</translation>
 <translation id="701976023053394610">রিমোট সহায়তা</translation>
 <translation id="7038683108611689168">আমাদের ব্যবহার পরিসংখ্যান এবং ক্র্যাশ প্রতিবেদনগুলি সংগ্রহের অনুমতি দিয়ে, Chromoting এর উন্নতিতে আমাদের সাহায্য করুন৷</translation>
diff --git a/remoting/resources/remoting_strings_ca.xtb b/remoting/resources/remoting_strings_ca.xtb
index b153117..b8ab70d 100644
--- a/remoting/resources/remoting_strings_ca.xtb
+++ b/remoting/resources/remoting_strings_ca.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">S'ha produït un error inesperat. Informeu d'aquest problema als desenvolupadors.</translation>
 <translation id="1619813076098775562">La connexió amb el dispositiu d'emissió s'ha tancat</translation>
 <translation id="1643640058022401035">Si sortiu d'aquesta pàgina, la sessió de Chromoting finalitzarà.</translation>
-<translation id="1646994964686260497">No hi ha cap ordinador per connectar-s'hi.</translation>
 <translation id="1654128982815600832">S'estan activant les connexions remotes en aquest ordinador...</translation>
 <translation id="170207782578677537">No s'ha pogut registrar aquest ordinador.</translation>
 <translation id="1704090719919187045">Preferències de Chromoting Host</translation>
-<translation id="1738759452976856405">Atura l'enregistrament</translation>
 <translation id="174018511426417793">No teniu cap ordinador registrat. Per activar les connexions remotes a un ordinador, instal·leu-hi l'escriptori remot de Chrome i feu clic a <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">S'està connectant...</translation>
 <translation id="1770394049404108959">No puc obrir l'aplicació.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Inici de sessió</translation>
 <translation id="3989511127559254552">Per continuar heu de concedir permisos d'accés ampliat a l'ordinador. Només ho heu de fer una vegada.</translation>
 <translation id="4006787130661126000">Heu d'activar les connexions remotes si voleu utilitzar l'escriptori remot de Chrome per accedir a aquest ordinador.</translation>
-<translation id="401121182145179743">Primer heu de configurar l'accés remot al vostre ordinador.</translation>
 <translation id="4028465833180158312">• Actualitzacions a la interfície de material design.
 • Atribució de llicències de tercers.
 • Es mostra informació per als ordinadors remots que no tenen connexió.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">D'acord</translation>
 <translation id="6985691951107243942">Esteu segur que voleu desactivar les connexions remotes a <ph name="HOSTNAME" />? Si canvieu de parer, haureu de visitar aquest ordinador per tornar-les a activar.</translation>
 <translation id="6998989275928107238">Per a</translation>
-<translation id="7017806586333792422">Inicia l'enregistrament</translation>
 <translation id="7019153418965365059">Error d'amfitrió no reconegut: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Assistència remota</translation>
 <translation id="7038683108611689168">Ajudeu-nos a millorar Chromoting: permeteu-nos recollir estadístiques d'ús i informes d'error.</translation>
diff --git a/remoting/resources/remoting_strings_cs.xtb b/remoting/resources/remoting_strings_cs.xtb
index 92d8ec7888e..0d903974 100644
--- a/remoting/resources/remoting_strings_cs.xtb
+++ b/remoting/resources/remoting_strings_cs.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Došlo k neočekávané chybě. Nahlaste prosím tento problém vývojářům.</translation>
 <translation id="1619813076098775562">Připojení k zařízení Cast bylo ukončeno.</translation>
 <translation id="1643640058022401035">Pokud opustíte tuto stránku, relace funkce Chromoting bude ukončena.</translation>
-<translation id="1646994964686260497">Není k dispozici žádné zařízení, ke kterému by bylo možné se připojit.</translation>
 <translation id="1654128982815600832">Povolování vzdálených připojení k tomuto počítači…</translation>
 <translation id="170207782578677537">Registrace tohoto počítače se nezdařila.</translation>
 <translation id="1704090719919187045">Nastavení hostitele funkce Chromoting</translation>
-<translation id="1738759452976856405">Ukončit záznam</translation>
 <translation id="174018511426417793">Nemáte zaregistrované žádné počítače. Chcete-li umožnit vzdálené připojení k jinému počítači, nainstalujte do něj Vzdálenou plochu Chrome a klikněte na tlačítko <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Připojování...</translation>
 <translation id="1770394049404108959">Aplikaci nelze otevřít.</translation>
@@ -125,7 +123,6 @@
 <translation id="3950820424414687140">Přihlaste se</translation>
 <translation id="3989511127559254552">Aby bylo možné pokračovat, je nutné udělit dodatečná oprávnění k přístupu do vašeho počítače. Tuto akci stačí provést jednou.</translation>
 <translation id="4006787130661126000">Chcete-li se k tomuto počítači připojit prostřednictvím Vzdálené plochy Chrome, je třeba povolit vzdálená připojení.</translation>
-<translation id="401121182145179743">Nejdříve je potřeba v počítači nastavit vzdálený přístup.</translation>
 <translation id="4028465833180158312">• Byly provedeny aktualizace uživatelského rozhraní se vzhledem Material Design.
 • Jsou uvedeny licence třetích stran.
 • Zobrazují se informace o vzdálených počítačích, které jsou offline.</translation>
@@ -238,7 +235,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Opravdu chcete zakázat vzdálená připojení k počítači <ph name="HOSTNAME" />? Pokud později své rozhodnutí změníte, bude nutné připojení povolit přímo z uvedeného počítače.</translation>
 <translation id="6998989275928107238">Hostitel</translation>
-<translation id="7017806586333792422">Zahájit nahrávání</translation>
 <translation id="7019153418965365059">Neznámá chyba hostitele: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Vzdálená pomoc</translation>
 <translation id="7038683108611689168">Pomozte nám funkci Chromoting vylepšit tím, že nám povolíte shromažďovat statistiky využití a zprávy o selhání.</translation>
diff --git a/remoting/resources/remoting_strings_da.xtb b/remoting/resources/remoting_strings_da.xtb
index 195014a8..33b33137 100644
--- a/remoting/resources/remoting_strings_da.xtb
+++ b/remoting/resources/remoting_strings_da.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Der opstod en uventet fejl. Rapportér dette problem til udviklerne.</translation>
 <translation id="1619813076098775562">Lukket forbindelse til Cast-enheden.</translation>
 <translation id="1643640058022401035">Hvis du forlader denne side, afsluttes din session med Chromoting.</translation>
-<translation id="1646994964686260497">Der er intet at oprette forbindelse til.</translation>
 <translation id="1654128982815600832">Aktiverer fjernforbindelserne for denne computer…</translation>
 <translation id="170207782578677537">Denne computer kunne ikke registreres.</translation>
 <translation id="1704090719919187045">Præferencer for Chromoting-host</translation>
-<translation id="1738759452976856405">Stop optagelse</translation>
 <translation id="174018511426417793">Du har ingen registrerede computere. Hvis du vil aktivere fjernforbindelser til en computer, skal du installere Chrome Fjernskrivebord på den pågældende computer og klikke på "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Opretter forbindelse...</translation>
 <translation id="1770394049404108959">Jeg kan ikke åbne applikationen.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Log ind</translation>
 <translation id="3989511127559254552">For at fortsætte skal du give udvidet adgangstilladelse til din computer. Du skal kun gøre dette én gang.</translation>
 <translation id="4006787130661126000">Du skal aktivere fjernforbindelserne, hvis du vil bruge Chrome Fjernskrivebord til at få adgang til denne computer.</translation>
-<translation id="401121182145179743">Du skal først konfigurere din computer til fjernadgang.</translation>
 <translation id="4028465833180158312">• Opdateringer af Material Design-grænsefladen.
 • Angivelser af tredjepartslicensering.
 • Der vises oplysninger for fjerncomputere, som er offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Er du sikker på, at du vil deaktivere fjernforbindelserne til <ph name="HOSTNAME" />? Hvis du ombestemmer dig, skal du genaktivere forbindelserne på den computer.</translation>
 <translation id="6998989275928107238">Til</translation>
-<translation id="7017806586333792422">Start optagelse</translation>
 <translation id="7019153418965365059">Fejl – hosten genkendes ikke: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Fjernsupport</translation>
 <translation id="7038683108611689168">Hjælp os med at forbedre Chromoting ved at lade os indsamle brugsstatistikker og rapporter om nedbrud.</translation>
diff --git a/remoting/resources/remoting_strings_de.xtb b/remoting/resources/remoting_strings_de.xtb
index 42c1f6f..b4b1fa63 100644
--- a/remoting/resources/remoting_strings_de.xtb
+++ b/remoting/resources/remoting_strings_de.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ein unerwarteter Fehler ist aufgetreten. Bitte melden Sie dieses Problem den Entwicklern.</translation>
 <translation id="1619813076098775562">Die Verbindung zum Übertragungsgerät wurde beendet.</translation>
 <translation id="1643640058022401035">Wenn Sie diese Seite verlassen, wird Ihre Chromoting-Sitzung beendet.</translation>
-<translation id="1646994964686260497">Es gibt keine Verbindungsziele.</translation>
 <translation id="1654128982815600832">Remote-Verbindungen für diesen Computer werden aktiviert…</translation>
 <translation id="170207782578677537">Fehler beim Registrieren dieses Computers</translation>
 <translation id="1704090719919187045">Chromoting Host-Einstellungen</translation>
-<translation id="1738759452976856405">Aufnahme beenden</translation>
 <translation id="174018511426417793">Sie haben noch keine Computer registriert. Um Remote-Verbindungen zu einem Computer zu ermöglichen, installieren Sie Chrome Remote Desktop auf dem betreffenden Computer und klicken Sie auf "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Verbindung wird hergestellt…</translation>
 <translation id="1770394049404108959">Ich kann die Anwendung nicht öffnen.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Anmelden</translation>
 <translation id="3989511127559254552">Um fortfahren zu können, müssen Sie zunächst erweiterte Zugriffsberechtigungen auf Ihren Computer gewähren. Dieser Schritt ist nur einmal erforderlich.</translation>
 <translation id="4006787130661126000">Aktivieren Sie die Remote-Verbindungen, wenn Sie mit Chrome Remote Desktop auf diesen Computer zugreifen möchten.</translation>
-<translation id="401121182145179743">Richten Sie zuerst Ihren Computer für den Remotezugriff ein.</translation>
 <translation id="4028465833180158312">• Aktualisierungen an der Material Design-Benutzeroberfläche
 • Angaben zu Drittanbieter-Lizenzen
 • Anzeige von Informationen für Remotecomputer, die offline sind</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Möchten Sie die Remote-Verbindung zu <ph name="HOSTNAME" /> wirklich deaktivieren? Wenn Sie die Verbindung später erneut aktivieren möchten, müssen Sie dies von dem betreffenden Computer aus tun.</translation>
 <translation id="6998989275928107238">Zu</translation>
-<translation id="7017806586333792422">Aufnahme starten</translation>
 <translation id="7019153418965365059">Nicht erkannter Hostfehler: <ph name="HOST_OFFLINE_REASON" /></translation>
 <translation id="701976023053394610">Remote-Unterstützung</translation>
 <translation id="7038683108611689168">Helfen Sie uns bei der Verbesserung von Chromoting, indem Sie zulassen, dass wir Nutzungsstatistiken und Absturzberichte erfassen.</translation>
diff --git a/remoting/resources/remoting_strings_el.xtb b/remoting/resources/remoting_strings_el.xtb
index f1c2f88..f66e787 100644
--- a/remoting/resources/remoting_strings_el.xtb
+++ b/remoting/resources/remoting_strings_el.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Παρουσιάστηκε μη αναμενόμενο σφάλμα. Αναφέρετε αυτό το πρόβλημα στους προγραμματιστές.</translation>
 <translation id="1619813076098775562">Έκλεισε η σύνδεση με τη συσκευή μετάδοσης.</translation>
 <translation id="1643640058022401035">Εάν απομακρυνθείτε από αυτήν τη σελίδα, η περίοδος σύνδεσης του Chromoting θα τερματιστεί.</translation>
-<translation id="1646994964686260497">Δεν υπάρχουν συσκευές για σύνδεση.</translation>
 <translation id="1654128982815600832">Ενεργοποίηση απομακρυσμένων συνδέσεων για αυτόν τον υπολογιστή…</translation>
 <translation id="170207782578677537">Αποτυχία εγγραφής αυτού του υπολογιστή.</translation>
 <translation id="1704090719919187045">Προτιμήσεις κεντρικού υπολογιστή Chromoting</translation>
-<translation id="1738759452976856405">Διακοπή εγγραφής</translation>
 <translation id="174018511426417793">Δεν έχει γίνει εγγραφή υπολογιστών. Για να ενεργοποιήσετε τις απομακρυσμένες συνδέσεις σε έναν υπολογιστή, εγκαταστήστε την Απομακρυσμένη επιφάνεια εργασίας Chrome σε αυτόν και κάντε κλικ στο κουμπί "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Γίνεται σύνδεση…</translation>
 <translation id="1770394049404108959">Δεν μπορώ να ανοίξω την εφαρμογή.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Σύνδεση</translation>
 <translation id="3989511127559254552">Για να συνεχίσετε θα πρέπει πρώτα να παραχωρήσετε εκτεταμένα δικαιώματα πρόσβασης στον υπολογιστή σας. Αυτό πρέπει να γίνει μόνο μία φορά.</translation>
 <translation id="4006787130661126000">Θα πρέπει να ενεργοποιήσετε τις απομακρυσμένες συνδέσεις εάν επιθυμείτε να χρησιμοποιήσετε την Απομακρυσμένη επιφάνεια εργασίας Chrome για πρόσβαση σε αυτόν τον υπολογιστή.</translation>
-<translation id="401121182145179743">Πρώτα θα πρέπει να ρυθμίσετε τον υπολογιστή σας για απομακρυσμένη πρόσβαση.</translation>
 <translation id="4028465833180158312">• Ενημερώσεις Material Design διεπαφής χρήστη.
 • Διαπιστευτήρια αδειοδότησης τρίτων μερών.
 • Πληροφορίες που εμφανίζονται σε απομακρυσμένους υπολογιστές που βρίσκονται εκτός σύνδεσης.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τις απομακρυσμένες συνδέσεις στον κεντρικό υπολογιστή <ph name="HOSTNAME" />; Εάν αλλάξετε γνώμη, θα πρέπει να επισκεφτείτε ξανά αυτόν τον υπολογιστή για να ενεργοποιήσετε εκ νέου τις συνδέσεις.</translation>
 <translation id="6998989275928107238">Προς</translation>
-<translation id="7017806586333792422">Έναρξη εγγραφής</translation>
 <translation id="7019153418965365059">Άγνωστο σφάλμα κεντρικού υπολογιστή: <ph name="HOST_OFFLINE_REASON" /> .</translation>
 <translation id="701976023053394610">Απομακρυσμένη βοήθεια</translation>
 <translation id="7038683108611689168">Βοηθήστε μας να βελτιώσουμε το Chromoting επιτρέποντάς μας να συγκεντρώσουμε στατιστικά στοιχεία χρήσης και αναφορές σφαλμάτων.</translation>
diff --git a/remoting/resources/remoting_strings_en-GB.xtb b/remoting/resources/remoting_strings_en-GB.xtb
index fe7116e..d81ee20f 100644
--- a/remoting/resources/remoting_strings_en-GB.xtb
+++ b/remoting/resources/remoting_strings_en-GB.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">An unexpected error occurred. Please report this problem to the developers.</translation>
 <translation id="1619813076098775562">Closed connection to Cast device.</translation>
 <translation id="1643640058022401035">Leaving this page will end your Chromoting session.</translation>
-<translation id="1646994964686260497">There's nothing to connect to.</translation>
 <translation id="1654128982815600832">Enabling remote connections for this computer…</translation>
 <translation id="170207782578677537">Failed to register this computer.</translation>
 <translation id="1704090719919187045">Chromoting Host Preferences</translation>
-<translation id="1738759452976856405">Stop Recording</translation>
 <translation id="174018511426417793">You have no computers registered. To enable remote connections to a computer, install Chrome Remote Desktop there and click “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Connecting…</translation>
 <translation id="1770394049404108959">I can't open the application.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Sign in</translation>
 <translation id="3989511127559254552">To continue, you must first grant extended access permissions to your computer. You only have to do this once.</translation>
 <translation id="4006787130661126000">You must enable remote connections if you want to use Chrome Remote Desktop to access this computer.</translation>
-<translation id="401121182145179743">You need first to set up your computer for remote access.</translation>
 <translation id="4028465833180158312">• Material Design UI updates.
 • Third-party licensing credits.
 • Information shown for remote computers that are offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Are you sure you want to disable remote connections to <ph name="HOSTNAME" />? If you change your mind, you'll need to visit that computer to re-enable connections.</translation>
 <translation id="6998989275928107238">To</translation>
-<translation id="7017806586333792422">Start Recording</translation>
 <translation id="7019153418965365059">Unrecognised host error: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Remote Assistance</translation>
 <translation id="7038683108611689168">Help us improve Chromoting by allowing us to collect usage statistics and crash reports.</translation>
diff --git a/remoting/resources/remoting_strings_es-419.xtb b/remoting/resources/remoting_strings_es-419.xtb
index 913e3d0..3226910 100644
--- a/remoting/resources/remoting_strings_es-419.xtb
+++ b/remoting/resources/remoting_strings_es-419.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Se produjo un error inesperado. Informa este problema a los programadores.</translation>
 <translation id="1619813076098775562">Se cerró la conexión con el dispositivo de transmisión.</translation>
 <translation id="1643640058022401035">Al abandonar esta página, se cerrará tu sesión en Chromoting.</translation>
-<translation id="1646994964686260497">No hay ninguna computadora con la cual conectarse.</translation>
 <translation id="1654128982815600832">Habilitando conexiones remotas para esta computadora…</translation>
 <translation id="170207782578677537">No se pudo registrar esta computadora.</translation>
 <translation id="1704090719919187045">Preferencias del host de Chromoting</translation>
-<translation id="1738759452976856405">Detener grabación</translation>
 <translation id="174018511426417793">No tienes ninguna computadora registrada. Para habilitar conexiones remotas con una computadora, instala allí Escritorio remoto de Chrome y haz clic en "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Conectando…</translation>
 <translation id="1770394049404108959">No puedo abrir la aplicación.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Acceder</translation>
 <translation id="3989511127559254552">Para continuar, primero debes extender los permisos de acceso a tu computadora. Solo tienes que hacerlo una vez.</translation>
 <translation id="4006787130661126000">Debes habilitar las conexiones remotas si deseas usar Escritorio remoto de Chrome para acceder a esta computadora.</translation>
-<translation id="401121182145179743">Primero debes configurar la computadora para tener acceso remoto.</translation>
 <translation id="4028465833180158312">• Actualizaciones en la interfaz de usuario de material design.
 • Crédito de las licencias de terceros.
 • Se muestra información de computadoras remotas que están sin conexión.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Aceptar</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">Para</translation>
-<translation id="7017806586333792422">Iniciar grabación</translation>
 <translation id="7019153418965365059">Error de host no reconocido: <ph name="HOST_OFFLINE_REASON" /></translation>
 <translation id="701976023053394610">Asistencia remota</translation>
 <translation id="7038683108611689168">Ayúdanos a mejorar la aplicación Chromoting permitiéndonos recopilar estadísticas de uso e informes sobre fallos.</translation>
diff --git a/remoting/resources/remoting_strings_es.xtb b/remoting/resources/remoting_strings_es.xtb
index fe6f3cf..f6df3cf 100644
--- a/remoting/resources/remoting_strings_es.xtb
+++ b/remoting/resources/remoting_strings_es.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Se ha producido un error inesperado. Comunícaselo a los desarrolladores.</translation>
 <translation id="1619813076098775562">Se ha cerrado la conexión al dispositivo de transmisión.</translation>
 <translation id="1643640058022401035">Si abandonas esta página, finalizará tu sesión en Chromoting.</translation>
-<translation id="1646994964686260497">No hay ningún ordenador al que conectarse.</translation>
 <translation id="1654128982815600832">Habilitando conexiones remotas con este ordenador...</translation>
 <translation id="170207782578677537">No se ha podido registrar este ordenador.</translation>
 <translation id="1704090719919187045">Preferencias de host de Chromoting</translation>
-<translation id="1738759452976856405">Detener grabación</translation>
 <translation id="174018511426417793">No tienes ningún ordenador registrado. Para habilitar conexiones remotas con un ordenador, instala Escritorio remoto de Chrome en él y haz clic en <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Conectando...</translation>
 <translation id="1770394049404108959">No puedo abrir la aplicación.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Iniciar sesión</translation>
 <translation id="3989511127559254552">Para continuar, primero debes conceder permisos de acceso ampliados a tu ordenador. Solo debes realizar esta acción una vez.</translation>
 <translation id="4006787130661126000">Si quieres utilizar Escritorio remoto de Chrome para acceder a este ordenador, debes habilitar las conexiones remotas.</translation>
-<translation id="401121182145179743">En primer lugar, necesitas configurar el acceso remoto en tu ordenador.</translation>
 <translation id="4028465833180158312">• Actualizaciones de Material Design en la interfaz de usuario.
 • Créditos de licencias de terceros.
 • Ahora se muestra información para los ordenadores remotos que no están conectados.</translation>
@@ -176,7 +173,7 @@
 <translation id="518094545883702183">Esta información solo se utiliza para diagnosticar el problema del que has informado, solo está disponible para la persona que examine tu informe y se conserva durante un período de hasta 30 días.</translation>
 <translation id="5222676887888702881">Cerrar sesión</translation>
 <translation id="5254120496627797685">Si abandonas esta página, finalizará tu sesión en Escritorio remoto de Chrome.</translation>
-<translation id="5308380583665731573">Conexiones</translation>
+<translation id="5308380583665731573">Conectar</translation>
 <translation id="5363265567587775042">Pregunta al usuario el ordenador al que se quiere acceder para hacer clic en <ph name="SHARE" /> y proporcionar el código de acceso.</translation>
 <translation id="5379087427956679853">Escritorio remoto de Chrome permite compartir de forma segura tu ordenador a través de Internet. Ambos usuarios deben estar ejecutando la aplicación Escritorio remoto de Chrome, que está disponible en la página <ph name="URL" />.</translation>
 <translation id="5394895745784982830">Para Mac (OS X 10.6 y versiones superiores)</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="6985691951107243942">¿Seguro que quieres inhabilitar las conexiones remotas con <ph name="HOSTNAME" />? Si cambias de opinión, tendrás que volver a habilitar las conexiones desde ese ordenador.</translation>
 <translation id="6998989275928107238">Para</translation>
-<translation id="7017806586333792422">Iniciar grabación</translation>
 <translation id="7019153418965365059">Error de host no reconocido: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Asistencia remota</translation>
 <translation id="7038683108611689168">Ayúdanos a mejorar la aplicación Chromoting autorizando la recopilación de estadísticas de uso e informes sobre fallos.</translation>
diff --git a/remoting/resources/remoting_strings_et.xtb b/remoting/resources/remoting_strings_et.xtb
index cce095d..605a7fb 100644
--- a/remoting/resources/remoting_strings_et.xtb
+++ b/remoting/resources/remoting_strings_et.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ilmnes ootamatu viga. Teatage sellest probleemist arendajatele.</translation>
 <translation id="1619813076098775562">Ühendus ülekandeseadmesse suleti.</translation>
 <translation id="1643640058022401035">Lehelt lahkudes katkeb teie rakenduse Chromoting seanss.</translation>
-<translation id="1646994964686260497">Ühegi seadmega ei saa ühendust luua.</translation>
 <translation id="1654128982815600832">Arvuti kaugühenduste lubamine …</translation>
 <translation id="170207782578677537">Arvuti registreerimine ebaõnnestus.</translation>
 <translation id="1704090719919187045">Chromootimise hosti eelistused</translation>
-<translation id="1738759452976856405">Peata salvestamine</translation>
 <translation id="174018511426417793">Ühtki arvutit ei ole registreeritud. Arvutis kaugühenduste lubamiseks installige Chrome Remote Desktop ja klõpsake nupul „<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Ühendamine ...</translation>
 <translation id="1770394049404108959">Ma ei saa seda rakendust avada.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Sisselogimine</translation>
 <translation id="3989511127559254552">Jätkamiseks peate esmalt oma arvutile andma laiendatud juurdepääsuload. Peate seda tegema vaid ühe korra.</translation>
 <translation id="4006787130661126000">Kui soovite Chrome Remote Desktopiga arvuti juurde pääseda, peate lubama kaugühendused.</translation>
-<translation id="401121182145179743">Esmalt tuleb arvutis seadistada kaugjuurdepääs.</translation>
 <translation id="4028465833180158312">• Materiaalsel disainil põhineva kasutajaliidese värskendused.
 • Kolmanda osapoole litsentside omistused.
 • Võrguühenduseta kaugarvutite teabe kuvamine.</translation>
@@ -237,7 +234,6 @@
 <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">Host</translation>
-<translation id="7017806586333792422">Alusta salvestamist</translation>
 <translation id="7019153418965365059">Tundmatu hostiviga: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Kaugabi</translation>
 <translation id="7038683108611689168">Aidake meil rakendust Chromoting täiustada, lubades kasutusstatistika ja krahhiaruannete kogumise.</translation>
diff --git a/remoting/resources/remoting_strings_fa.xtb b/remoting/resources/remoting_strings_fa.xtb
index 48c7023..ae00410 100644
--- a/remoting/resources/remoting_strings_fa.xtb
+++ b/remoting/resources/remoting_strings_fa.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">یک خطای غیرمنتظره روی داد. لطفاً این مشکل را به برنامه‌نویسان گزارش دهید.</translation>
 <translation id="1619813076098775562">‏ارتباط با دستگاه Cast را قطع کرد.</translation>
 <translation id="1643640058022401035">‏خروج از این صفحه، جلسه کار با Chrome را پایان می‌دهد.</translation>
-<translation id="1646994964686260497">دستگاهی برای برقراری ارتباط با آن موجود نیست.</translation>
 <translation id="1654128982815600832">در حال فعال کردن اتصالات راه دور برای این رایانه…</translation>
 <translation id="170207782578677537">این رایانه ثبت نشد.</translation>
 <translation id="1704090719919187045">‏ترجیحات برنامه میزبان کار با Chrome</translation>
-<translation id="1738759452976856405">توقف ضبط</translation>
 <translation id="174018511426417793">‏رایانه ثبت‌شده‌ای وجود ندارد. برای فعال کردن اتصالات راه‌دور به رایانه، کنترل دسک‌تاپ از راه دور Chrome را نصب کنید و روی «<ph name="BUTTON_NAME" />» کلیک کنید.</translation>
 <translation id="1742469581923031760">در حال اتصال...</translation>
 <translation id="1770394049404108959">نمی‌توانم برنامه را باز کنم.</translation>
@@ -123,7 +121,6 @@
 <translation id="3950820424414687140">ورود به سیستم</translation>
 <translation id="3989511127559254552">برای ادامه باید مجوزهای دسترسی گسترش یافته به رایانه‌تان را بدهید. این کار فقط یک بار لازم است انجام شود.</translation>
 <translation id="4006787130661126000">‏اگر می‌خواهید از کنترل دسک‌تاپ از راه‌ دور Chrome برای دسترسی به این رایانه استفاده کنید٬ باید اتصالات راه دور را فعال کنید.</translation>
-<translation id="401121182145179743">ابتدا باید رایانه‌تان را برای دسترسی راه دور تنظیم کنید.</translation>
 <translation id="4028465833180158312">• به‌روزرسانی‌های واسط کاربر طراحی سه‌بعدی.
 • اعتبار صدور گواهی سوم‌شخص.
 • اطلاعات برای رایانه‌های راه دوری که آفلاین هستند نشان داده می‌شود.</translation>
@@ -236,7 +233,6 @@
 <translation id="6965382102122355670">تأیید</translation>
 <translation id="6985691951107243942">آیا مطمئنید که می‌خواهید اتصالات راه دور به <ph name="HOSTNAME" /> را غیرفعال کنید؟ اگر نظرتان عوض شود، باید از همان رایانه اتصالات را مجدداً فعال کنید.</translation>
 <translation id="6998989275928107238">به</translation>
-<translation id="7017806586333792422">شروع ضبط</translation>
 <translation id="7019153418965365059">خطای نامشخص میزبان: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">راهنمایی از راه دور</translation>
 <translation id="7038683108611689168">‏با در اختیار قرار دادن آمار استفاده و گزارش‌های خرابی، به ما کمک کنید کار با Chrome را بهبود بخشیم.</translation>
diff --git a/remoting/resources/remoting_strings_fi.xtb b/remoting/resources/remoting_strings_fi.xtb
index 7f223fe..c3340e1 100644
--- a/remoting/resources/remoting_strings_fi.xtb
+++ b/remoting/resources/remoting_strings_fi.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Odottamaton virhe. Ilmoita tästä ongelmasta kehittäjille.</translation>
 <translation id="1619813076098775562">Yhteys Cast-laitteeseen katkaistiin.</translation>
 <translation id="1643640058022401035">Vaihtamalla sivua päätät Chromoting-käyttökerran.</translation>
-<translation id="1646994964686260497">Et ole määrittänyt etätietokoneita.</translation>
 <translation id="1654128982815600832">Otetaan tietokoneen etäyhteyksiä käyttöön…</translation>
 <translation id="170207782578677537">Tietokoneen rekisteröinti epäonnistui.</translation>
 <translation id="1704090719919187045">Chromoting-isäntäasetukset</translation>
-<translation id="1738759452976856405">Lopeta tallennus</translation>
 <translation id="174018511426417793">Käyttöösi ei ole rekisteröity tietokoneita. Ota käyttöön etäyhteys asentamalla toiselle tietokoneelle Chrome-etäkäyttö ja klikkaamalla painiketta <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Yhdistetään…</translation>
 <translation id="1770394049404108959">Sovellus ei aukea.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Kirjaudu sisään</translation>
 <translation id="3989511127559254552">Jotta voit jatkaa, sinun on annettava laajennetut käyttöoikeudet tietokoneeseesi. Tämä täytyy tehdä vain kerran.</translation>
 <translation id="4006787130661126000">Etäyhteydet on otettava käyttöön, jotta tietokonetta voidaan käyttää Chrome-etäkäytön avulla.</translation>
-<translation id="401121182145179743">Määritä ensin tietokone, johon haluat muodostaa etäyhteyden.</translation>
 <translation id="4028465833180158312">• Material Design -käyttöliittymäpäivityksiä
 • Tiedot kolmannen osapuolen käyttöluvista
 • Näytetään offline-tilassa olevat etätietokoneet</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Haluatko varmasti poistaa käytöstä etäyhteydet kohteeseen <ph name="HOSTNAME" />? Jos muutat mieltäsi, yhteydet täytyy palauttaa käyttöön kyseisellä tietokoneella.</translation>
 <translation id="6998989275928107238">Kohde</translation>
-<translation id="7017806586333792422">Aloita tallennus</translation>
 <translation id="7019153418965365059">Tuntematon isäntävirhe: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Etätuki</translation>
 <translation id="7038683108611689168">Auta meitä parantamaan Chromotingia antamalla meidän kerätä käyttötilastoja ja virheraportteja.</translation>
diff --git a/remoting/resources/remoting_strings_fil.xtb b/remoting/resources/remoting_strings_fil.xtb
index 5800154e..8f4430d1 100644
--- a/remoting/resources/remoting_strings_fil.xtb
+++ b/remoting/resources/remoting_strings_fil.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">May naganap na hindi inaasahang error. Paki-ulat ang problemang ito sa mga developer.</translation>
 <translation id="1619813076098775562">Isinara ang koneksyon sa Cast device.</translation>
 <translation id="1643640058022401035">Tatapusin ng pag-alis sa pahinang ito ang iyong session ng Chromoting.</translation>
-<translation id="1646994964686260497">Walang mapagkokonektahan.</translation>
 <translation id="1654128982815600832">Pinapagana ang mga malayuang koneksyon para sa computer na ito…</translation>
 <translation id="170207782578677537">Nabigong irehistro ang computer na ito.</translation>
 <translation id="1704090719919187045">Mga Kagustuhan sa Chromoting Host</translation>
-<translation id="1738759452976856405">Itigil ang Pagre-record</translation>
 <translation id="174018511426417793">Wala kang mga nakarehistrong computer. Upang paganahin ang mga malayuang koneksyon sa isang computer, i-install ang Remote na Desktop ng Chrome doon at i-click ang “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Kumokonekta…</translation>
 <translation id="1770394049404108959">Hindi ko mabuksan ang application.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Mag-sign in</translation>
 <translation id="3989511127559254552">Upang magpatuloy, dapat ka munang magbigay ng mga pahintulot sa pinalawak na access sa iyong computer. Isang beses mo lang ito kailangang gawin.</translation>
 <translation id="4006787130661126000">Dapat mong paganahin ang mga malayuang koneksyon kung nais mong gamitin ang Remote na Desktop ng Chrome upang i-access ang computer na ito.</translation>
-<translation id="401121182145179743">Kailangan mo munang i-setup ang iyong computer para sa remote na access.</translation>
 <translation id="4028465833180158312">• Mga update sa UI ng Material Design.
 • Mga third-party na credit sa paglilisensya.
 • Ang ipinapakitang impormasyon ay para sa mga naka-offline na remote na computer.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Sigurado ka bang nais mong hindi paganahin ang mga malayuang koneksyon sa <ph name="HOSTNAME" />? Kung magbago ang iyong isip, kakailanganin mong bisitahin ang computer na iyon upang muling paganahin ang mga koneksyon.</translation>
 <translation id="6998989275928107238">Para kay</translation>
-<translation id="7017806586333792422">Simulan ang Pagre-record</translation>
 <translation id="7019153418965365059">Hindi alam na error sa host: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Malayuang Tulong</translation>
 <translation id="7038683108611689168">Tumulong sa amin na pahusayin ang Chromoting sa pamamagitan ng pagbibigay-daan sa amin na mangolekta ng mga statistics sa paggamit at mga ulat ng pag-crash.</translation>
diff --git a/remoting/resources/remoting_strings_fr.xtb b/remoting/resources/remoting_strings_fr.xtb
index 0624b3a9..44e3c32 100644
--- a/remoting/resources/remoting_strings_fr.xtb
+++ b/remoting/resources/remoting_strings_fr.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Une erreur inattendue s'est produite. Veuillez signaler le problème aux développeurs.</translation>
 <translation id="1619813076098775562">Connexion avec l'appareil Cast interrompue</translation>
 <translation id="1643640058022401035">En quittant cette page, vous mettrez fin à la session Google Chromoting.</translation>
-<translation id="1646994964686260497">Aucun appareil auquel se connecter.</translation>
 <translation id="1654128982815600832">Activation des connexions à distance pour cet ordinateur en cours…</translation>
 <translation id="170207782578677537">Échec de l'enregistrement de cet ordinateur.</translation>
 <translation id="1704090719919187045">Préférences relatives à l'hôte Chromoting</translation>
-<translation id="1738759452976856405">Arrêter l'enregistrement</translation>
 <translation id="174018511426417793">Aucun ordinateur n'est enregistré. Pour activer les connexions à distance à un ordinateur, installez l'application Bureau à distance Google Chrome sur celui-ci, puis cliquez sur "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Connexion en cours…</translation>
 <translation id="1770394049404108959">Je n'arrive pas à ouvrir l'application.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Ouvrir une session</translation>
 <translation id="3989511127559254552">Pour continuer, vous devez autoriser l'accès étendu à votre ordinateur. Vous n'aurez à effectuer cette opération qu'une seule fois.</translation>
 <translation id="4006787130661126000">Si vous souhaitez utiliser le bureau à distance Google Chrome pour accéder à cet ordinateur, vous devez activer les connexions à distance.</translation>
-<translation id="401121182145179743">Vous devez tout d'abord configurer votre ordinateur pour l'accès à distance.</translation>
 <translation id="4028465833180158312">• Mises à jour de l'interface utilisateur de Material Design
 • Crédits de licence tiers
 • Affichage d'informations pour les ordinateurs à distance qui sont hors connexion</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Voulez-vous vraiment désactiver les connexions à distance à <ph name="HOSTNAME" /> ? Si vous changez d'avis, vous devrez réactiver les connexions depuis cet ordinateur.</translation>
 <translation id="6998989275928107238">À</translation>
-<translation id="7017806586333792422">Démarrer l'enregistrement</translation>
 <translation id="7019153418965365059">Erreur d'hôte non reconnue : <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Assistance à distance</translation>
 <translation id="7038683108611689168">Aidez-nous à améliorer Google Chromoting en nous autorisant à recueillir des statistiques d'utilisation et des rapports d'erreur.</translation>
diff --git a/remoting/resources/remoting_strings_gu.xtb b/remoting/resources/remoting_strings_gu.xtb
index 220076d7..c0c07cb2 100644
--- a/remoting/resources/remoting_strings_gu.xtb
+++ b/remoting/resources/remoting_strings_gu.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">અનપેક્ષિત ભૂલ આવી. કૃપા કરીને વિકાસકર્તાઓને આ સમસ્યાની જાણ કરો.</translation>
 <translation id="1619813076098775562">Cast ઉપકરણ પર બંધ કનેક્શન છે.</translation>
 <translation id="1643640058022401035">આ પૃષ્ઠ છોડવું તમારા Chromoting સત્રને સમાપ્ત કરશે.</translation>
-<translation id="1646994964686260497">કનેક્ટ કરવા માટે કંઈ નથી.</translation>
 <translation id="1654128982815600832">આ કમ્પ્યુટર માટે રીમોટ કનેક્શન્સ સક્ષમ કરવામાં આવી રહ્યાં છે...</translation>
 <translation id="170207782578677537">આ કમ્પ્યુટરની નોંધણી કરવામાં નિષ્ફળ.</translation>
 <translation id="1704090719919187045">Chromoting હોસ્ટ પસંદગીઓ</translation>
-<translation id="1738759452976856405">રેકોર્ડિંગ રોકો</translation>
 <translation id="174018511426417793">તમે કોઈ કમ્પ્યુટરની નોંધણી કરી નથી.કમ્પ્યુટર પર રીમોટ કનેક્શન્સ સક્રિય કરવા માટે, ત્યાં Chrome રીમોટ ડેસ્કટૉપને ઇન્સ્ટોલ કરો અને "<ph name="BUTTON_NAME" />” પર ક્લિક કરો.</translation>
 <translation id="1742469581923031760">કનેક્ટ કરી રહ્યું છે...</translation>
 <translation id="1770394049404108959">મારાથી એપ્લિકેશન ખોલી શકાતી નથી.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">સાઇન ઇન</translation>
 <translation id="3989511127559254552">ચાલુ રાખવા માટે, તમારે સૌ પ્રથમ તમારા કમ્પ્યુટરને વિસ્તૃત ઍક્સેસ પરવાનગીઓ આપવી પડશે. તમારે આ ફક્ત એકજ વાર કરવું પડશે.</translation>
 <translation id="4006787130661126000">જો તમે Chrome રીમોટ ડેસ્કટોપનો ઉપયોગ કરીને આ કમ્પ્યુટરને ઍક્સેસ કરવા માગો છો તો તમારે રીમોટ કનેક્શન્સ સક્ષમ કરવું પડશે.</translation>
-<translation id="401121182145179743">તમારે પહેલા તમારા કમ્પ્યુટરને રીમોટ ઍક્સેસ માટે સેટ કરવાની જરૂર છે.</translation>
 <translation id="4028465833180158312">• સામગ્રી ડીઝાઇન UI અપડેટ્સ.
 • તૃતીય-પક્ષ લાયસન્સીંગ ક્રેડીટ્સ.
 • ઓફલાઇન હોય તેવા રીમોટ કમ્પ્યુટર્સ માટે બતાવાયેલ માહિતી.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ઓકે</translation>
 <translation id="6985691951107243942">શું તમે ખરેખર <ph name="HOSTNAME" /> પર રીમોટ કનેક્શન્સ અક્ષમ કરવા માંગો છો? જો તમે તમારો વિચાર બદલો, તો તમને કનેક્શન્સને ફરીથી સક્ષમ કરવા માટે તે કમ્પ્યુટરની મુલાકાત લેવાની જરૂર પડશે.</translation>
 <translation id="6998989275928107238">થી</translation>
-<translation id="7017806586333792422">રેકોર્ડિંગ પ્રારંભ કરો</translation>
 <translation id="7019153418965365059">ન ઓળખાયેલ હોસ્ટ ભૂલ: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">રીમોટ સહાય</translation>
 <translation id="7038683108611689168">અમને ઉપયોગનાં આંકડા અને ક્રેશ રિપોર્ટ્સ એકત્રિત કરવાની મંજૂરી આપીને Chromoting માં સુધારો કરવામાં અમને સહાય કરો.</translation>
diff --git a/remoting/resources/remoting_strings_hi.xtb b/remoting/resources/remoting_strings_hi.xtb
index 9c7c70dc..882dd2f34 100644
--- a/remoting/resources/remoting_strings_hi.xtb
+++ b/remoting/resources/remoting_strings_hi.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">एक अनपेक्षित त्रुटि आई. कृपया इस समस्या की रिपोर्ट डेवलपर से करें.</translation>
 <translation id="1619813076098775562">कास्‍ट डिवाइस से कनेक्‍शन बंद किया गया.</translation>
 <translation id="1643640058022401035">यह पृष्ठ छोड़ देने से आपका Chromoting सत्र समाप्त हो जाएगा.</translation>
-<translation id="1646994964686260497">कनेक्‍ट करने के लिए कुछ भी नहीं है.</translation>
 <translation id="1654128982815600832">इस कंप्‍यूटर के लिए दूरस्‍थ कनेक्‍शन सक्षम किए जा रहे हैं…</translation>
 <translation id="170207782578677537">इस कंप्‍यूटर को पंजीकृत करने में विफल.</translation>
 <translation id="1704090719919187045">Chromoting होस्ट प्राथमिकताएं</translation>
-<translation id="1738759452976856405">रिकॉर्ड करना बंद करें</translation>
 <translation id="174018511426417793">आपके पास कोई पंजीकृत कंप्यूटर नहीं हैं. किसी कंप्यूटर पर दूरस्थ कनेक्शन सक्षम करने के लिए, Chrome दूरस्थ डेस्कटॉप इंस्टॉल करें और “<ph name="BUTTON_NAME" />” क्लिक करें.</translation>
 <translation id="1742469581923031760">कनेक्ट हो रहा है...</translation>
 <translation id="1770394049404108959">मैं ऐप्लिकेशन को खोल नहीं सकता/सकती.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">प्रवेश करें</translation>
 <translation id="3989511127559254552">जारी रखने के लिए सबसे पहले आपको अपने कंप्‍यूटर को विस्तृत एक्‍सेस अनुमतियां देनी होंगी. आपको ऐसा केवल एक बार करना है.</translation>
 <translation id="4006787130661126000">यदि आप इस कंप्यूटर को एक्सेस करने के लिए Chrome दूरस्थ डेस्कटॉप का उपयोग करना चाहते हैं, तो आपको दूरस्थ कनेक्शन सक्षम करने होंगे.</translation>
-<translation id="401121182145179743">आपको सबसे पहले अपने कंप्‍यूटर को दूरस्‍थ एक्‍सेस के लिए सेट करना होगा.</translation>
 <translation id="4028465833180158312">• मटीरियल डिज़ाइन UI अपडेट.
 • तृतीय-पक्ष लाइसेंस देने की क्रेडिट.
 • ऐसे दूरस्‍थ कंप्‍यूटरों के लिए दिखाई गई जानकारी, जो ऑफ़लाइन हैं.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ठीक</translation>
 <translation id="6985691951107243942">क्‍या आप वाकई <ph name="HOSTNAME" /> से दूरस्थ कनेक्‍शन अक्षम करना चाहते हैं? यदि आप अपना विचार बदलते हैं, तो आपको कनेक्‍शन को पुन: सक्षम करने के लिए उस कंप्‍यूटर पर जाना होगा.</translation>
 <translation id="6998989275928107238">प्रति</translation>
-<translation id="7017806586333792422">रिकॉर्ड करना प्रारंभ करें</translation>
 <translation id="7019153418965365059">अपरिचित होस्‍ट त्रुटि: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">दूरस्थ सहायता</translation>
 <translation id="7038683108611689168">हमें उपयोग के आंकड़े और क्रैश रिपोर्ट एकत्रित करने की अनुमति देकर Chromoting को सुधारने में हमारी सहायता करें.</translation>
diff --git a/remoting/resources/remoting_strings_hr.xtb b/remoting/resources/remoting_strings_hr.xtb
index 673c21b..d2cc8af 100644
--- a/remoting/resources/remoting_strings_hr.xtb
+++ b/remoting/resources/remoting_strings_hr.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Pojavila se neočekivana pogreška. Prijavite taj problem razvojnim programerima.</translation>
 <translation id="1619813076098775562">Zatvorena je veza s uređajem za emitiranje.</translation>
 <translation id="1643640058022401035">Napuštanjem ove stranice završit ćete svoju sesiju aplikacije Chromoting.</translation>
-<translation id="1646994964686260497">Nema dostupnih računala za povezivanje.</translation>
 <translation id="1654128982815600832">Omogućavanje daljinskih veza za ovo računalo…</translation>
 <translation id="170207782578677537">Nisam uspio registrirati ovo računalo.</translation>
 <translation id="1704090719919187045">Postavke hosta usluge Chromoting</translation>
-<translation id="1738759452976856405">Zaustavi snimanje</translation>
 <translation id="174018511426417793">Nije registrirano nijedno računalo. Da biste omogućili daljinske veze s računalom, instalirajte Udaljenu radnu površinu Chrome pa kliknite "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Povezivanje…</translation>
 <translation id="1770394049404108959">Ne mogu otvoriti aplikaciju.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Prijava</translation>
 <translation id="3989511127559254552">Da biste nastavili, morate odobriti dopuštenja za prošireni pristup svojem računalu. To morate učiniti samo jednom.</translation>
 <translation id="4006787130661126000">Morate omogućiti daljinske veze ako želite pristupati računalu pomoću Udaljene radne površine Chrome.</translation>
-<translation id="401121182145179743">Prvo morate postaviti računalo za daljinski pristup.</translation>
 <translation id="4028465833180158312">• ažuriranja materijalnog dizajna korisničkog sučelja
 • bonusi za licenciranje trećih strana
 • prikazane informacije za udaljena računala koja su izvan mreže.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">U redu</translation>
 <translation id="6985691951107243942">Jeste li sigurni da želite onemogućiti daljinske veze s hostom <ph name="HOSTNAME" />? Ako se predomislite, morat ćete se spojiti na to računalo da biste ponovo omogućili veze.</translation>
 <translation id="6998989275928107238">Prima</translation>
-<translation id="7017806586333792422">Počni snimati</translation>
 <translation id="7019153418965365059">Nepoznata pogreška hosta: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Daljinska pomoć</translation>
 <translation id="7038683108611689168">Pomognite nam da poboljšamo Chromoting tako da nam dopustite prikupljanje statistika o upotrebi i izvješća o padovima.</translation>
diff --git a/remoting/resources/remoting_strings_hu.xtb b/remoting/resources/remoting_strings_hu.xtb
index a3abac41..70b5e58 100644
--- a/remoting/resources/remoting_strings_hu.xtb
+++ b/remoting/resources/remoting_strings_hu.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Váratlan hiba történt. Kérjük, jelentse a problémát a fejlesztőknek.</translation>
 <translation id="1619813076098775562">Lezárult a kapcsolat a Cast-eszközzel.</translation>
 <translation id="1643640058022401035">Ha elhagyja ezt az oldalt, akkor befejeződik a Chromoting munkamenete.</translation>
-<translation id="1646994964686260497">Nincs mihez csatlakozni.</translation>
 <translation id="1654128982815600832">Távoli kapcsolatok engedélyezése ezen a számítógépen...</translation>
 <translation id="170207782578677537">Nem sikerült regisztrálni a számítógépet.</translation>
 <translation id="1704090719919187045">Chromoting gazdagép-beállítások</translation>
-<translation id="1738759452976856405">Felvétel leállítása</translation>
 <translation id="174018511426417793">Önnek nincs regisztrált számítógépe. Ahhoz, hogy engedélyezhesse a távoli kapcsolatokat egy számítógépen, telepítse a gépre a Chrome távoliasztal-szolgáltatást, majd kattintson a következő gombra: „<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Csatlakozás…</translation>
 <translation id="1770394049404108959">Nem tudom megnyitni az alkalmazást.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Bejelentkezés</translation>
 <translation id="3989511127559254552">A folytatáshoz előbb kiterjesztett hozzáférési jogosultságokat kell adnia a számítógépének. Ezt csak egyszer kell elvégezni.</translation>
 <translation id="4006787130661126000">Engedélyeznie kell a távoli kapcsolatokat, ha a Chrome távoliasztal-szolgáltatást szeretné használni ennek a számítógépnek az eléréséhez.</translation>
-<translation id="401121182145179743">Előbb be kell állítania számítógépén a távoli hozzáférést.</translation>
 <translation id="4028465833180158312">• Frissítések az anyagszerű megjelenés kezelőfelülethez.
 • Harmadik felek licenceinek feltüntetése.
 • Offline távoli számítógépekkel kapcsolatos információk megjelenítése.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Biztosan le szeretné tiltani a távoli kapcsolatokat a(z) <ph name="HOSTNAME" /> gazdagéppel? Ha meggondolja magát, akkor azon a számítógépen kell majd újból engedélyeznie a kapcsolatokat.</translation>
 <translation id="6998989275928107238">Ide:</translation>
-<translation id="7017806586333792422">Felvétel indítása</translation>
 <translation id="7019153418965365059">Ismeretlen gazdagéphiba: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Távsegítség</translation>
 <translation id="7038683108611689168">Segítsen fejleszteni a Chromoting alkalmazást azáltal, hogy rendelkezésünkre bocsátja a használati statisztikát és a hibajelentéseket.</translation>
diff --git a/remoting/resources/remoting_strings_id.xtb b/remoting/resources/remoting_strings_id.xtb
index 935212e..df4453f 100644
--- a/remoting/resources/remoting_strings_id.xtb
+++ b/remoting/resources/remoting_strings_id.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Terjadi kesalahan yang tidak terduga. Laporkan masalah ini kepada pengembang.</translation>
 <translation id="1619813076098775562">Menutup koneksi ke perangkat Cast.</translation>
 <translation id="1643640058022401035">Dengan meninggalkan laman ini, Anda akan mengakhiri sesi Chromoting.</translation>
-<translation id="1646994964686260497">Perangkat sambungan belum disiapkan.</translation>
 <translation id="1654128982815600832">Mengaktifkan sambungan jarak jauh untuk komputer ini...</translation>
 <translation id="170207782578677537">Gagal mendaftarkan komputer ini.</translation>
 <translation id="1704090719919187045">Preferensi Host Chromoting</translation>
-<translation id="1738759452976856405">Berhenti Merekam</translation>
 <translation id="174018511426417793">Anda tidak memiliki komputer yang terdaftar. Untuk mengaktifkan sambungan jarak jauh ke komputer, pasang Chrome Desktop Jarak Jauh di komputer tersebut, lalu klik “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Menyambungkan...</translation>
 <translation id="1770394049404108959">Saya tidak dapat membuka aplikasi ini.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Masuk</translation>
 <translation id="3989511127559254552">Untuk melanjutkan, Anda harus memberikan izin akses yang diperpanjang ke komputer. Anda hanya perlu melakukan ini satu kali.</translation>
 <translation id="4006787130661126000">Anda harus mengaktifkan sambungan jarak jauh jika ingin menggunakan Chrome Desktop Jarak Jauh untuk mengakses komputer ini.</translation>
-<translation id="401121182145179743">Pertama, Anda perlu menyiapkan komputer untuk akses jarak jauh.</translation>
 <translation id="4028465833180158312">• Pembaruan Antarmuka Desain Material.
 • Kredit pemberian lisensi pihak ketiga.
 • Tampilan informasi untuk komputer jarak jauh yang sedang offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Oke</translation>
 <translation id="6985691951107243942">Yakin ingin menonaktifkan sambungan jarak jauh dengan <ph name="HOSTNAME" />? Jika Anda berubah pikiran, Anda harus mengunjungi komputer tersebut untuk mengaktifkan kembali sambungan.</translation>
 <translation id="6998989275928107238">Ke</translation>
-<translation id="7017806586333792422">Mulai Merekam</translation>
 <translation id="7019153418965365059">Kesalahan host tidak dikenal: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Bantuan Jarak Jauh</translation>
 <translation id="7038683108611689168">Bantu kami meningkatkan Chromoting dengan mengizinkan kami mengumpulkan statistik penggunaan dan laporan kerusakan.</translation>
diff --git a/remoting/resources/remoting_strings_it.xtb b/remoting/resources/remoting_strings_it.xtb
index 10707e9..fefeed1e8 100644
--- a/remoting/resources/remoting_strings_it.xtb
+++ b/remoting/resources/remoting_strings_it.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Si è verificato un errore imprevisto. Segnala il problema agli sviluppatori.</translation>
 <translation id="1619813076098775562">Connessione al dispositivo di trasmissione interrotta.</translation>
 <translation id="1643640058022401035">Se esci da questa pagina, la sessione Chromoting verrà terminata.</translation>
-<translation id="1646994964686260497">Non ci sono dispositivi a cui connettersi.</translation>
 <translation id="1654128982815600832">Attivazione connessioni remote per questo computer in corso…</translation>
 <translation id="170207782578677537">Impossibile registrare il computer.</translation>
 <translation id="1704090719919187045">Preferenze host Chromoting</translation>
-<translation id="1738759452976856405">Interrompi registrazione</translation>
 <translation id="174018511426417793">Non sono presenti computer registrati. Per attivare le connessioni remote su un computer, installa Chrome Remote Desktop sul computer e fai clic su "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Connessione in corso...</translation>
 <translation id="1770394049404108959">Non riesco ad aprire l'applicazione.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Accedi</translation>
 <translation id="3989511127559254552">Per continuare devi concedere autorizzazioni di accesso esteso per il tuo computer. È necessario eseguire questa operazione solo una volta.</translation>
 <translation id="4006787130661126000">Per accedere a questo computer utilizzando Chrome Remote Desktop devi attivare le connessioni remote.</translation>
-<translation id="401121182145179743">Devi eseguire prima la configurazione del computer per poter effettuare l'accesso remoto.</translation>
 <translation id="4028465833180158312">• Aggiornamenti all'interfaccia utente di material design.
 • Crediti per le licenze di terze parti.
 • Informazioni visualizzate per computer remoti offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Vuoi disattivare le connessioni remote a <ph name="HOSTNAME" />? Se cambi idea, dovrai utilizzare il computer in questione per riattivare le connessioni.</translation>
 <translation id="6998989275928107238">A</translation>
-<translation id="7017806586333792422">Avvia registrazione</translation>
 <translation id="7019153418965365059">Errore host non riconosciuto: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Assistenza remota</translation>
 <translation id="7038683108611689168">Aiutaci a migliorare Chromoting consentendo l'acquisizione di dati per statistiche di utilizzo e rapporti sugli arresti anomali.</translation>
diff --git a/remoting/resources/remoting_strings_iw.xtb b/remoting/resources/remoting_strings_iw.xtb
index 927cc6f..d9909716 100644
--- a/remoting/resources/remoting_strings_iw.xtb
+++ b/remoting/resources/remoting_strings_iw.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">אירעה שגיאה לא צפויה. דווח על בעיה זו למפתחים.</translation>
 <translation id="1619813076098775562">נסגר החיבור למכשיר העברה.</translation>
 <translation id="1643640058022401035">‏יציאה מדף זה תגרום לסיום ההפעלה של Chromoting.</translation>
-<translation id="1646994964686260497">אין מחשבים שניתן להתחבר אליהם.</translation>
 <translation id="1654128982815600832">מפעיל חיבורים מרוחקים למחשב זה...</translation>
 <translation id="170207782578677537">הרישום של מחשב זה נכשל.</translation>
 <translation id="1704090719919187045">‏העדפות מארח Chromoting</translation>
-<translation id="1738759452976856405">הפסק הקלטה</translation>
 <translation id="174018511426417793">‏אין לך מחשבים רשומים. כדי להפעיל חיבורים מרוחקים למחשב, התקן את 'שולחן עבודה מרוחק של Chrome' במחשב היעד ולחץ על '<ph name="BUTTON_NAME" />'.</translation>
 <translation id="1742469581923031760">מתחבר…</translation>
 <translation id="1770394049404108959">איני יכול לפתוח את היישום.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">כניסה</translation>
 <translation id="3989511127559254552">כדי להמשיך, ראשית עליך להעניק הרשאות גישה מורחבות למחשב שלך. עליך לעשות זאת פעם אחת בלבד.</translation>
 <translation id="4006787130661126000">‏אם ברצונך להשתמש ב'שולחן עבודה מרוחק של Chrome' כדי לגשת למחשב זה, עליך להפעיל חיבורים מרוחקים.</translation>
-<translation id="401121182145179743">תחילה עליך להגדיר את המחשב שלך לגישה מרחוק.</translation>
 <translation id="4028465833180158312">• עדכוני עיצוב חדשני תלת-ממדי לממשק המשתמש.
 • קרדיטים לרישוי של צד שלישי.
 • מידע המוצג למחשבים מרוחקים שנמצאים במצב לא מקוון.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">אישור</translation>
 <translation id="6985691951107243942">האם אתה בטוח שברצונך להשבית את החיבורים המרוחקים אל <ph name="HOSTNAME" />? אם תשנה את דעתך, יהיה עליך להיכנס למחשב זה כדי להפעיל מחדש את החיבורים.</translation>
 <translation id="6998989275928107238">אל</translation>
-<translation id="7017806586333792422">התחל הקלטה</translation>
 <translation id="7019153418965365059">שגיאת מארח לא מזוהה: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">סיוע מרחוק</translation>
 <translation id="7038683108611689168">‏עזור לנו לשפר את Chromoting בכך שתאפשר לנו לאסוף סטטיסטיקות שימוש ודוחות קריסה.</translation>
diff --git a/remoting/resources/remoting_strings_ja.xtb b/remoting/resources/remoting_strings_ja.xtb
index 09270b8..7d020f7 100644
--- a/remoting/resources/remoting_strings_ja.xtb
+++ b/remoting/resources/remoting_strings_ja.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">予期しないエラーが発生しました。この問題をデベロッパーに報告してください。</translation>
 <translation id="1619813076098775562">キャスト デバイスへの接続を終了しました。</translation>
 <translation id="1643640058022401035">このページを閉じると、Chromoting セッションが終了します。</translation>
-<translation id="1646994964686260497">接続先がありません。</translation>
 <translation id="1654128982815600832">このパソコンのリモート接続を有効にしています...</translation>
 <translation id="170207782578677537">このパソコンを登録できませんでした。</translation>
 <translation id="1704090719919187045">Chromoting ホスト設定</translation>
-<translation id="1738759452976856405">記録を停止</translation>
 <translation id="174018511426417793">パソコンが登録されていません。パソコンへのリモート接続を有効にするには、対象となるパソコンに Chrome リモート デスクトップをインストールし、[<ph name="BUTTON_NAME" />] をクリックしてください。</translation>
 <translation id="1742469581923031760">接続しています...</translation>
 <translation id="1770394049404108959">アプリケーションを開けない。</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">ログイン</translation>
 <translation id="3989511127559254552">続行するには、このパソコンに拡張アクセス許可を付与する必要があります。この作業は 1 回だけ必要です。</translation>
 <translation id="4006787130661126000">Chrome リモート デスクトップを使用してこのパソコンにアクセスするには、リモート接続を有効にする必要があります。</translation>
-<translation id="401121182145179743">リモート接続に使用するパソコンを最初に設定しておく必要があります。</translation>
 <translation id="4028465833180158312">• マテリアル デザインのユーザー インターフェースの更新。
 • サードパーティ ライセンスのクレジット。
 • オフラインのリモート パソコンに関する情報の表示。</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" /> へのリモート接続を無効にしてもよろしいですか?元に戻す場合は、該当のパソコンにアクセスして接続を再び有効にする必要があります。</translation>
 <translation id="6998989275928107238">接続先</translation>
-<translation id="7017806586333792422">記録を開始</translation>
 <translation id="7019153418965365059">不明なホストエラー: <ph name="HOST_OFFLINE_REASON" />。</translation>
 <translation id="701976023053394610">リモート サポート</translation>
 <translation id="7038683108611689168">Chromoting の改善のため、使用統計情報とクラッシュ レポートの収集に協力する</translation>
diff --git a/remoting/resources/remoting_strings_kn.xtb b/remoting/resources/remoting_strings_kn.xtb
index 5ca0f25..8ee5607 100644
--- a/remoting/resources/remoting_strings_kn.xtb
+++ b/remoting/resources/remoting_strings_kn.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">ಅನಿರೀಕ್ಷಿತ ದೋಷವೊಂದು ಸಂಭವಿಸಿದೆ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಡೆವಲಪರ್‌ಗಳಿಗೆ ವರದಿ ಮಾಡಿ.</translation>
 <translation id="1619813076098775562">ಬಿತ್ತರಿಸಲು ಸಾಧನವನ್ನು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="1643640058022401035">ಈ ಪುಟವನ್ನು ತೊರೆಯುವುದರಿಂದ ನಿಮ್ಮ ಕ್ರೊಮೊಟಿಂಗ್ ಸೆಶನ್ ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ.</translation>
-<translation id="1646994964686260497">ಸಂಪರ್ಕಿಸಲು ಏನೂ ಇಲ್ಲ.</translation>
 <translation id="1654128982815600832">ಈ ಕಂಪ್ಯೂಟರ್‌ಗಾಗಿ ರಿಮೋಟ್ ಸಂಪರ್ಕಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="170207782578677537">ಈ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನೋಂದಾಯಿಸುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="1704090719919187045">ಕ್ರೊಮೋಟಿಂಗ್ ಹೋಸ್ಟ್ ಪ್ರಾಶಸ್ತ್ಯಗಳು</translation>
-<translation id="1738759452976856405">ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಿ</translation>
 <translation id="174018511426417793">ನೀವು ಯಾವುದೇ ಕಂಪ್ಯೂಟರ್‌ ಅನ್ನು ನೋಂದಾಯಿಸಿಲ್ಲ. ಕಂಪ್ಯೂಟರ್‌ಗೆ ರಿಮೋಟ್‌ ಸಂಪರ್ಕಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ಅಲ್ಲಿ Chrome ರಿಮೋಟ್‌ ಡೆಸ್ಕ್‌ಟಾಪ್‌‌ ಸ್ಥಾಪಿಸಿ ಹಾಗೂ “<ph name="BUTTON_NAME" />” ಕ್ಲಿಕ್‌ ಮಾಡಿ.</translation>
 <translation id="1742469581923031760">ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1770394049404108959">ನನಗೆ ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">ಸೈನ್ ಇನ್</translation>
 <translation id="3989511127559254552">ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ಗೆ ನೀವು ಮೊದಲು ವಿಸ್ತೃತ ಪ್ರವೇಶ ಅನುಮತಿಗಳನ್ನು ನೀಡಬೇಕಾಗುತ್ತದೆ. ನೀವು ಇದನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ಮಾಡಬೇಕಾಗಿರುತ್ತದೆ.</translation>
 <translation id="4006787130661126000">ಈ ಕಂಪ್ಯೂಟರ್ ಪ್ರವೇಶಿಸಲು ನೀವು Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್‌ಟಾಪ್ ಬಳಸುವುದಾದರೆ ರಿಮೋಟ್ ಸಂಪರ್ಕಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿರುವುದು ಅತ್ಯವಶ್ಯಕ.</translation>
-<translation id="401121182145179743">ರಿಮೋಟ್ ಪ್ರವೇಶಕ್ಕಾಗಿ ನೀವು ಮೊದಲು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="4028465833180158312">• ವಸ್ತು ವಿನ್ಯಾಸ UI ಅಪ್‌ಡೇಟ್‌ಗಳು.
 • ಮೂರನೇ-ವ್ಯಕ್ತಿಯ ಪರವಾನಗಿ ನೀಡುವಿಕೆ ಕ್ರೆಡಿಟ್‌ಗಳು.
 • ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿರುವ ರಿಮೋಟ್ ಕಂಪ್ಯೂಟರ್‌ಗಳಿಗೆ ತೋರಿಸಲಾಗಿರುವ ಮಾಹಿತಿ.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ಸರಿ</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" /> ಗೆ ರಿಮೋಟ್ ಸಂಪರ್ಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ನಿಮ್ಮ ಆಲೋಚನೆಯನ್ನು ನೀವು ಬದಲಾಯಿಸಿಕೊಂಡಲ್ಲಿ, ಸಂಪರ್ಕಗಳನ್ನು ಮತ್ತೆ ಸಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಆ ಕಂಪ್ಯೂಟರ್‌ಗೆ ಭೇಟಿ ನೀಡುವ ಅವಶ್ಯಕತೆ ಇದೆ.</translation>
 <translation id="6998989275928107238">ಗೆ</translation>
-<translation id="7017806586333792422">ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="7019153418965365059">ಗುರುತಿಸಲಾಗದ ಹೋಸ್ಟ್ ದೋಷ: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">ರಿಮೋಟ್ ಸಹಾಯಕ</translation>
 <translation id="7038683108611689168">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಹಾಗೂ ಕ್ರ್ಯಾಶ್ ವರದಿಗಳನ್ನು ನಮಗೆ ಸಂಗ್ರಹಿಸಲು ಅನುಮತಿಸುವುದರ ಮೂಲಕ ಕ್ರೊಮೊಟಿಂಗ್‌ ಅನ್ನು ಸುಧಾರಿಸಲು ನಮಗೆ ಸಹಾಯ ಮಾಡಿ.</translation>
diff --git a/remoting/resources/remoting_strings_ko.xtb b/remoting/resources/remoting_strings_ko.xtb
index 6b692b6..f1f5f5e0a 100644
--- a/remoting/resources/remoting_strings_ko.xtb
+++ b/remoting/resources/remoting_strings_ko.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">예기치 않은 오류가 발생했습니다. 개발자에게 문제를 신고해 주세요.</translation>
 <translation id="1619813076098775562">Cast 기기에 대한 연결이 종료되었습니다.</translation>
 <translation id="1643640058022401035">이 페이지를 닫으면 Chromoting 세션이 종료됩니다.</translation>
-<translation id="1646994964686260497">연결 대상이 없습니다.</translation>
 <translation id="1654128982815600832">컴퓨터의 원격 연결을 사용하도록 설정 중...</translation>
 <translation id="170207782578677537">컴퓨터를 등록하는 데 실패했습니다.</translation>
 <translation id="1704090719919187045">Chromoting 호스트 환경설정</translation>
-<translation id="1738759452976856405">녹화 중지</translation>
 <translation id="174018511426417793">등록된 컴퓨터가 없습니다. 컴퓨터에 원격 연결을 사용하려면 Chrome 원격 데스크톱을 설치하고 '<ph name="BUTTON_NAME" />' 버튼을 클릭하세요.</translation>
 <translation id="1742469581923031760">연결 중...</translation>
 <translation id="1770394049404108959">애플리케이션이 열리지 않음</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">로그인</translation>
 <translation id="3989511127559254552">계속하려면 내 컴퓨터에 확장 액세스 권한을 부여해야 합니다. 이 작업은 한번만 수행하면 됩니다.</translation>
 <translation id="4006787130661126000">Chrome 원격 데스크톱을 사용하여 컴퓨터에 액세스하려면 원격 연결을 사용하도록 설정해야 합니다.</translation>
-<translation id="401121182145179743">먼저 컴퓨터를 원격으로 액세스할 수 있도록 설정해야 합니다.</translation>
 <translation id="4028465833180158312">• 머티리얼 디자인 UI 업데이트
 • 제3자 라이선스 크레딧
 • 오프라인 상태인 원격 컴퓨터 관련 정보 표시</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">확인</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" />와(과)의 원격 연결을 사용중지하시겠습니까? 생각이 바뀌면 해당 컴퓨터에서 연결을 다시 사용하도록 설정해야 합니다.</translation>
 <translation id="6998989275928107238">호스트</translation>
-<translation id="7017806586333792422">녹화 시작</translation>
 <translation id="7019153418965365059">알 수 없는 호스트 오류입니다. <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">원격 지원</translation>
 <translation id="7038683108611689168">사용 통계 및 오류 보고서 수집을 허용하여 Chromoting 개선에 참여하겠습니다.</translation>
diff --git a/remoting/resources/remoting_strings_lt.xtb b/remoting/resources/remoting_strings_lt.xtb
index 09be2ef..4637c6f 100644
--- a/remoting/resources/remoting_strings_lt.xtb
+++ b/remoting/resources/remoting_strings_lt.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Įvyko netikėta klaida. Praneškite apie problemą kūrėjams.</translation>
 <translation id="1619813076098775562">Nutrauktas ryšys su perdavimo įrenginiu.</translation>
 <translation id="1643640058022401035">Išėjus iš šio puslapio, baigsis „Chrome“ nuotolinio ryšio sesija.</translation>
-<translation id="1646994964686260497">Nėra prie ko prisijungti.</translation>
 <translation id="1654128982815600832">Įgalinamas nuotolinis ryšys šiame kompiuteryje…</translation>
 <translation id="170207782578677537">Mėginant užregistruoti šį kompiuterį įvyko klaida.</translation>
 <translation id="1704090719919187045">„Chrome“ nuotolinio ryšio prieglobos nuostatos</translation>
-<translation id="1738759452976856405">Stabdyti įrašymą</translation>
 <translation id="174018511426417793">Neturite jokių registruotų kompiuterių. Jei norite įgalinti nuotolinį ryšį su kompiuteriu, jame įdiekite „Chrome“ nuotolinį kompiuterio valdymą ir spustelėkite „<ph name="BUTTON_NAME" />“.</translation>
 <translation id="1742469581923031760">Jungiamasi…</translation>
 <translation id="1770394049404108959">Nepavyksta atidaryti programos.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Prisijungti</translation>
 <translation id="3989511127559254552">Jei norite tęsti, pirmiausia turite suteikti išplėstinės prieigos prie kompiuterio leidimus. Tai reikės atlikti tik vieną kartą.</translation>
 <translation id="4006787130661126000">Jei norite naudoti „Chrome“ nuotolinį kompiuterio valdymą šiam kompiuteriui pasiekti, turite įgalinti nuotolinį ryšį.</translation>
-<translation id="401121182145179743">Pirmiausia turite nustatyti kompiuterio nuotolinę prieigą.</translation>
 <translation id="4028465833180158312">• Trimačių objektų dizaino NS naujiniai.
 • Trečiosios šalies licencijavimo kreditai.
 • Rodoma nuotolinių kompiuterių, kurie neprijungti prie interneto, informacija.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Gerai</translation>
 <translation id="6985691951107243942">Ar tikrai norite neleisti nuotolinio ryšio su „<ph name="HOSTNAME" />“? Jei apsigalvosite, turėsite iš naujo įgalinti ryšį tame kompiuteryje.</translation>
 <translation id="6998989275928107238">Ryšys užmezgamas su</translation>
-<translation id="7017806586333792422">Pradėti įrašymą</translation>
 <translation id="7019153418965365059">Neatpažinta prieglobos klaida: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Nuotolinė pagalba</translation>
 <translation id="7038683108611689168">Leidę mums kaupti naudojimo statistiką ir strigčių ataskaitas, padėsite tobulinti „Chrome“ nuotolinį ryšį.</translation>
diff --git a/remoting/resources/remoting_strings_lv.xtb b/remoting/resources/remoting_strings_lv.xtb
index e3f52cb6..67f6936 100644
--- a/remoting/resources/remoting_strings_lv.xtb
+++ b/remoting/resources/remoting_strings_lv.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Radās neparedzēta kļūda. Lūdzu, ziņojiet par šo problēmu izstrādātājiem.</translation>
 <translation id="1619813076098775562">Savienojums ar Cast ierīci tika pārtraukts.</translation>
 <translation id="1643640058022401035">Aizverot šo lapu, Chrome saites sesija tiks pārtraukta.</translation>
-<translation id="1646994964686260497">Nav neviena datora, ar kuru izveidot savienojumu.</translation>
 <translation id="1654128982815600832">Notiek attālo savienojumu iespējošana šim datoram…</translation>
 <translation id="170207782578677537">Neizdevās reģistrēt šo datoru.</translation>
 <translation id="1704090719919187045">Chrome saites saimniekdatora preferences</translation>
-<translation id="1738759452976856405">Pārtraukt ierakstīšanu</translation>
 <translation id="174018511426417793">Jums nav neviena reģistrēta datora. Lai iespējotu attālus savienojumus ar kādu datoru, instalējiet Chrome attālo darbvirsmu attiecīgajā datorā un noklikšķiniet uz <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Notiek savienojuma izveide…</translation>
 <translation id="1770394049404108959">Nevaru atvērt lietojumprogrammu.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Pierakstīties</translation>
 <translation id="3989511127559254552">Lai turpinātu, jums vispirms ir jāpiešķir paplašinātas piekļuves atļaujas savam datoram. Tas ir jādara tikai vienreiz.</translation>
 <translation id="4006787130661126000">Ja vēlaties piekļūt šim datoram, izmantojot Chrome attālo darbvirsmu, ir jāiespējo attālie savienojumi.</translation>
-<translation id="401121182145179743">Vispirms datorā ir jāiestata attālā piekļuve.</translation>
 <translation id="4028465833180158312">• Lietotāja saskarnes atjauninājumi atbilstoši materiāla dizaina vadlīnijām.
 • Trešās puses licenču attiecinājums.
 • Informācija par attāliem datoriem, kas ir bezsaistē.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Labi</translation>
 <translation id="6985691951107243942">Vai tiešām vēlaties atspējot attālos savienojumus ar saimniekdatoru <ph name="HOSTNAME" />? Ja pārdomāsiet, savienojumus ar šo datoru varēsiet iespējot tikai klātienē.</translation>
 <translation id="6998989275928107238">Ar</translation>
-<translation id="7017806586333792422">Sākt ierakstīšanu</translation>
 <translation id="7019153418965365059">Neatpazīta saimniekdatora kļūda: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Attālā palīdzība</translation>
 <translation id="7038683108611689168">Palīdziet mums uzlabot Chrome saiti, ļaujot mums apkopot lietojuma statistiku un avāriju pārskatus.</translation>
diff --git a/remoting/resources/remoting_strings_ml.xtb b/remoting/resources/remoting_strings_ml.xtb
index f36b9dc..e0fdfc5 100644
--- a/remoting/resources/remoting_strings_ml.xtb
+++ b/remoting/resources/remoting_strings_ml.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">അപ്രതീക്ഷിതമായ ഒരു പിശക് സംഭവിച്ചു. ഈ പ്രശ്‌നം ഡവലപ്പർമാർക്ക് റിപ്പോർട്ടുചെയ്യുക.</translation>
 <translation id="1619813076098775562">Cast ഉപകരണത്തിലേക്കുള്ള കണക്ഷൻ അടച്ചു.</translation>
 <translation id="1643640058022401035">ഈ പേജ് വിടുന്നത് നിങ്ങളുടെ ക്രോമോട്ടിംഗ് സെഷൻ അവസാനിപ്പിക്കും.</translation>
-<translation id="1646994964686260497">ഇതിലേക്ക് കണക്‌റ്റുചെയ്യാൻ ഒന്നുമില്ല.</translation>
 <translation id="1654128982815600832">ഈ കമ്പ്യൂട്ടറിനായി വിദൂര കണക്ഷനുകൾ പ്രാപ്‌തമാക്കുന്നു…</translation>
 <translation id="170207782578677537">ഈ കമ്പ്യൂട്ടർ രജിസ്റ്റർ ചെയ്യുന്നത് പരാജയപ്പെട്ടു.</translation>
 <translation id="1704090719919187045">ക്രോമോട്ടിംഗ് ഹോസ്റ്റ് മുൻഗണനകൾ</translation>
-<translation id="1738759452976856405">റെക്കോർഡുചെയ്യുന്നത് നിർത്തുക</translation>
 <translation id="174018511426417793">നിങ്ങൾക്ക് രജിസ്റ്റർ ചെയ്‌ത കമ്പ്യൂട്ടറുകളൊന്നുമില്ല. ഒരു കമ്പ്യൂട്ടറിലേക്ക് വിദൂര കണക്ഷനുകൾ പ്രാപ്‌തമാക്കുന്നതിന് അതിൽ Chrome വിദൂര ഡെസ്‌ക്‌ടോപ്പ് ഇൻസ്റ്റാൾ ചെയ്‌ത് “<ph name="BUTTON_NAME" />” ക്ലിക്കുചെയ്യുക.</translation>
 <translation id="1742469581923031760">കണക്റ്റുചെയ്യുന്നു...</translation>
 <translation id="1770394049404108959">എനിക്ക് അപ്ലിക്കേഷൻ തുറക്കാനാകുന്നില്ല.</translation>
@@ -123,7 +121,6 @@
 <translation id="3950820424414687140">സൈൻ ഇൻ</translation>
 <translation id="3989511127559254552">തുടരാൻ നിങ്ങളാദ്യം കമ്പ്യൂട്ടറിലേക്ക് വിപുലീകരിച്ച ആക്‌സസ്സ് അനുമതികൾ അനുവദിക്കണം. നിങ്ങളിത് ഒരുതവണ മാത്രം ചെയ്‌താൽ മതി.</translation>
 <translation id="4006787130661126000">ഈ കമ്പ്യൂട്ടർ ആക്‌സസ്സുചെയ്യുന്നതിനായി Chrome വിദൂര ഡെസ്‌ക്‌ടോപ്പ് ഉപയോഗിക്കാൻ താൽപ്പര്യപ്പെടുന്നുവെങ്കിൽ നിങ്ങൾ വിദൂര കണക്ഷനുകൾ പ്രാപ്‌തമാക്കേണ്ടതുണ്ട്.</translation>
-<translation id="401121182145179743">റിമോട്ട് ആക്‌സസ്സിനായി നിങ്ങൾ ആദ്യം കമ്പ്യൂട്ടറിനെ സജ്ജീകരിക്കേണ്ടതുണ്ട്.</translation>
 <translation id="4028465833180158312">• മെറ്റീരിയൽ രൂപകൽപ്പന UI അപ്‌ഡേറ്റുകൾ.
 • മൂന്നാം കക്ഷി ലൈസൻസിംഗ് ക്രെഡിറ്റുകൾ.
 • ഓഫ്‌ലൈനിലുള്ള റിമോട്ട് കമ്പ്യൂട്ടറുകൾക്കായി കാണിച്ചിരിക്കുന്ന വിവരം.</translation>
@@ -236,7 +233,6 @@
 <translation id="6965382102122355670">ശരി</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" /> എന്നതിലേക്കുള്ള വിദൂര കണക്ഷനുകൾ അപ്രാപ്‌തമാക്കാൻ നിങ്ങൾ താൽപ്പര്യപ്പെടുന്നുവെന്ന് തീർച്ചയാണോ? നിങ്ങൾ മനസ്സ് മാറ്റുകയാണെങ്കിൽ, കണക്ഷനുകൾ പുനഃപ്രാപ്‌തമാക്കുന്നതിന് ആ കമ്പ്യൂട്ടർ സന്ദർശിക്കേണ്ടതുണ്ട്.</translation>
 <translation id="6998989275928107238">സ്വീകർത്താവ്</translation>
-<translation id="7017806586333792422">റെക്കോർഡുചെയ്യാൻ ആരംഭിക്കുക</translation>
 <translation id="7019153418965365059">തിരിച്ചറിയപ്പെടാത്ത ഹോസ്റ്റ് പിശക്: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">വിദൂര സഹായം</translation>
 <translation id="7038683108611689168">ഉപയോഗ സ്ഥിതിവിവരക്കണക്കുകളും ക്രാഷ് റിപ്പോർട്ടുകളും ശേഖരിക്കുന്നതിന് അനുവദിക്കുന്നതിലൂടെ ക്രോമോട്ടിംഗ് മെച്ചപ്പെടുത്തുന്നതിന് ഞങ്ങളെ സഹായിക്കുക.</translation>
diff --git a/remoting/resources/remoting_strings_mr.xtb b/remoting/resources/remoting_strings_mr.xtb
index 0b851fa..829dacc7 100644
--- a/remoting/resources/remoting_strings_mr.xtb
+++ b/remoting/resources/remoting_strings_mr.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">एक अनपेक्षित त्रुटी आली. कृपया विकसकांकडे या समस्येचा अहवाल द्या.</translation>
 <translation id="1619813076098775562">कास्ट डिव्हाइससाठी कनेक्शन बंद केले.</translation>
 <translation id="1643640058022401035">हे पृष्‍ठ सोडण्यामुळे आपले Chromoting सत्र समाप्त होईल.</translation>
-<translation id="1646994964686260497">कनेक्ट करण्‍यासाठी काहीही नाही.</translation>
 <translation id="1654128982815600832">या संगणकासाठी दूरस्थ कनेक्‍शन सक्षम करीत आहे...</translation>
 <translation id="170207782578677537">या संगणकावर नोंदणी करण्‍यात अयशस्वी.</translation>
 <translation id="1704090719919187045">Chromoting होस्ट प्राधान्ये</translation>
-<translation id="1738759452976856405">रेकॉर्डिंग थांबवा</translation>
 <translation id="174018511426417793">आपल्याकडे नोंदणी केलेले कोणतेही संगणक नाहीत. संगणकावर दूरस्थ कनेक्शन सक्षम करण्यासाठी, Chrome दूरस्थ डेस्कटॉप तेथे स्थापित करा आणि “<ph name="BUTTON_NAME" />” क्लिक करा.</translation>
 <translation id="1742469581923031760">कनेक्ट करीत आहे...</translation>
 <translation id="1770394049404108959">मी अनुप्रयोग उघडू शकत नाही.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">साइन इन करा</translation>
 <translation id="3989511127559254552">सुरु ठेवण्यासाठी आपण सर्वप्रथम आपल्या संगणकावर विस्तारित प्रवेश परवानग्या मंजूर करणे आवश्यक आहे. आपल्याला हे केवळ एकदाच करावे लागते.</translation>
 <translation id="4006787130661126000">या संगणकावर प्रवेश करण्यासाठी आपण Chrome दूरस्थ डेस्कटॉप वापरू इच्छित असल्यास आपण दूरस्थ कनेक्शन सक्षम करणे आवश्यक आहे.</translation>
-<translation id="401121182145179743">दूरस्थ प्रवेश करण्यासाठी आपल्‍याला प्रथम आपला संगणक सेट करणे आवश्‍यक आहे.</translation>
 <translation id="4028465833180158312">• वस्तू डिझाइन UI अद्यतने.
 • तृतीय-पक्ष परवाना देणे क्रेडिट.
 • ऑफलाइन असलेल्या दूरस्थ संगणकांसाठी माहिती दर्शविली.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ठीक आहे</translation>
 <translation id="6985691951107243942">आपल्याला खात्री आहे की <ph name="HOSTNAME" /> ची दूरस्थ कनेक्शन आपण अक्षम करू इच्छिता? आपण आपला विचार बदलल्यास, आपल्याला कनेक्शन पुन्हा-सक्षम करण्‍यासाठी त्या संगणकाला भेट देणे आवश्यक असेल.</translation>
 <translation id="6998989275928107238">प्रति</translation>
-<translation id="7017806586333792422">रेकॉर्डिंग प्रारंभ करा</translation>
 <translation id="7019153418965365059">न ओळखलेली होस्ट त्रुटी: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">दूरस्‍थ सहाय्य</translation>
 <translation id="7038683108611689168">आम्हाला वापर आकडेवारी आणि क्रॅश अहवाल संकलित करण्याची अनुमती देऊन Chromoting सुधारण्यात आम्हाला मदत करा.</translation>
diff --git a/remoting/resources/remoting_strings_ms.xtb b/remoting/resources/remoting_strings_ms.xtb
index c673e9c..76ece0d 100644
--- a/remoting/resources/remoting_strings_ms.xtb
+++ b/remoting/resources/remoting_strings_ms.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ralat yang tidak dijangka telah berlaku. Sila laporkan masalah ini kepada pembangun.</translation>
 <translation id="1619813076098775562">Sambungan ke peranti Cast ditutup.</translation>
 <translation id="1643640058022401035">Tindakan meninggalkan halaman ini akan menamatkan sesi Chromoting anda.</translation>
-<translation id="1646994964686260497">Tiada peranti untuk disambungkan.</translation>
 <translation id="1654128982815600832">Mendayakan sambungan jauh untuk komputer ini…</translation>
 <translation id="170207782578677537">Gagal mendaftarkan komputer ini.</translation>
 <translation id="1704090719919187045">Pilihan Hos Chromoting</translation>
-<translation id="1738759452976856405">Hentikan Rakaman</translation>
 <translation id="174018511426417793">Anda tidak mempunyai komputer yang berdaftar. Untuk mendayakan sambungan jauh pada komputer, pasang Desktop Jauh Chrome pada komputer tersebut dan klik “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Menyambung…</translation>
 <translation id="1770394049404108959">Saya tidak boleh membuka aplikasi ini.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Log masuk</translation>
 <translation id="3989511127559254552">Untuk meneruskan, anda mesti memberikan kebenaran akses lanjutan terlebih dahulu kepada komputer anda. Anda hanya perlu melakukannya sekali.</translation>
 <translation id="4006787130661126000">Anda mesti mendayakan sambungan jauh jika anda mahu menggunakan Desktop Jauh Chrome untuk mengakses komputer ini.</translation>
-<translation id="401121182145179743">Mula-mula anda perlu menyediakan komputer anda untuk akses jauh.</translation>
 <translation id="4028465833180158312">• Kemas kini UI Reka Bentuk Bahan.
 • Kredit pelesenan pihak ketiga.
 • Maklumat yang ditunjukkan bagi komputer jauh yang berada di luar talian.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Adakah anda pasti mahu melumpuhkan sambungan jauh ke <ph name="HOSTNAME" />? Jika anda berubah fikiran, anda perlu pergi ke komputer tersebut untuk mendayakan semula sambungan.</translation>
 <translation id="6998989275928107238">Kepada</translation>
-<translation id="7017806586333792422">Mulakan Rakaman</translation>
 <translation id="7019153418965365059">Ralat hos tak dikenali: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Bantuan Jauh</translation>
 <translation id="7038683108611689168">Bantu kami mempertingkatkan Chromoting dengan membenarkan kami mengumpulkan perangkaan penggunaan dan laporan keranapan.</translation>
diff --git a/remoting/resources/remoting_strings_nl.xtb b/remoting/resources/remoting_strings_nl.xtb
index dc9c186..19db0cd 100644
--- a/remoting/resources/remoting_strings_nl.xtb
+++ b/remoting/resources/remoting_strings_nl.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Er is een onverwachte fout opgetreden. Meld dit probleem aan de ontwikkelaars.</translation>
 <translation id="1619813076098775562">De verbinding met het Cast-apparaat is verbroken.</translation>
 <translation id="1643640058022401035">Als je deze pagina verlaat, wordt je Chromoting-sessie beëindigd.</translation>
-<translation id="1646994964686260497">Er is geen apparaat om verbinding mee te maken.</translation>
 <translation id="1654128982815600832">Externe verbindingen voor deze computer inschakelen…</translation>
 <translation id="170207782578677537">Kan deze computer niet registreren.</translation>
 <translation id="1704090719919187045">Voorkeuren voor Chromoting-host</translation>
-<translation id="1738759452976856405">Opnemen stoppen</translation>
 <translation id="174018511426417793">Je hebt geen geregistreerde computers. Als je externe verbindingen met een computer mogelijk wilt maken, installeer je Chrome Remote Desktop op die computer en klik je op '<ph name="BUTTON_NAME" />'.</translation>
 <translation id="1742469581923031760">Verbinding maken…</translation>
 <translation id="1770394049404108959">Ik kan de app niet openen.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Inloggen</translation>
 <translation id="3989511127559254552">Als je wilt doorgaan, moet je eerst uitgebreide toegangsrechten voor je computer verlenen. Je hoeft dit slechts één keer te doen.</translation>
 <translation id="4006787130661126000">Je moet externe verbindingen inschakelen als je Chrome Remote Desktop wilt gebruiken voor toegang tot deze computer.</translation>
-<translation id="401121182145179743">Je moet eerst je computer instellen voor toegang op afstand.</translation>
 <translation id="4028465833180158312">• Updates voor gebruikersinterface in Material design.
 • Kennisgeving voor licenties van derden.
 • Weergave van informatie voor externe computers die offline zijn.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Weet je zeker dat je externe verbindingen met <ph name="HOSTNAME" /> wilt uitschakelen? Als je van gedachten verandert, moet je naar die computer gaan om de verbindingen weer in te schakelen.</translation>
 <translation id="6998989275928107238">Aan</translation>
-<translation id="7017806586333792422">Opnemen starten</translation>
 <translation id="7019153418965365059">Onbekende hostfout: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Externe ondersteuning</translation>
 <translation id="7038683108611689168">Help ons Chromoting te verbeteren door ons toestemming te geven gebruiksstatistieken en crashrapporten te verzamelen.</translation>
diff --git a/remoting/resources/remoting_strings_no.xtb b/remoting/resources/remoting_strings_no.xtb
index 97748e6b..0944485 100644
--- a/remoting/resources/remoting_strings_no.xtb
+++ b/remoting/resources/remoting_strings_no.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Det oppsto en uventet feil. Rapportér dette problemet til utviklerne.</translation>
 <translation id="1619813076098775562">Lukket tilkobling til Cast-enhet.</translation>
 <translation id="1643640058022401035">Hvis du forlater denne siden, avsluttes Chromoting-økten din.</translation>
-<translation id="1646994964686260497">Det finnes ingenting å koble til.</translation>
 <translation id="1654128982815600832">Slår på eksterne tilkoblinger for denne datamaskinen …</translation>
 <translation id="170207782578677537">Kunne ikke registrere denne datamaskinen.</translation>
 <translation id="1704090719919187045">Alternativer for Chromoting-vert</translation>
-<translation id="1738759452976856405">Stopp innspilling</translation>
 <translation id="174018511426417793">Du har ikke registrert noen datamaskiner. For å aktivere ekstern tilkobling til en datamaskin må du installere Chrome Eksternt skrivebord på maskinen, og klikke på «<ph name="BUTTON_NAME" />».</translation>
 <translation id="1742469581923031760">Kobler til …</translation>
 <translation id="1770394049404108959">Jeg kan ikke åpne appen.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Logg på</translation>
 <translation id="3989511127559254552">Før du kan fortsette, må du gi datamaskinen utvidede tilgangstillatelser. Det er bare nødvendig å gjøre dette én gang.</translation>
 <translation id="4006787130661126000">Du må aktivere eksterne tilkoblinger hvis du vil ha tilgang til denne datamaskinen gjennom Chrome Eksternt skrivebord.</translation>
-<translation id="401121182145179743">Du må først konfigurere datamaskinen for ekstern tilgang.</translation>
 <translation id="4028465833180158312">• Oppdateringer av «Material Design»-grensesnittet.
 • Kildereferanser for tredjepartslisenser.
 • Informasjon blir vist for eksterne datamaskiner som ikke er på nettet.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Er du sikker på at du vil deaktivere eksterne tilkoblinger til <ph name="HOSTNAME" />? Hvis du ombestemmer deg, må du tilbake til datamaskinen for å gjenopprette tilkoblingene.</translation>
 <translation id="6998989275928107238">Til</translation>
-<translation id="7017806586333792422">Start innspilling</translation>
 <translation id="7019153418965365059">Ukjent vertsfeil: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Fjernhjelp</translation>
 <translation id="7038683108611689168">Hjelp oss med å gjøre Chromoting bedre ved å samle inn bruksstatistikk og programstopprapporter.</translation>
diff --git a/remoting/resources/remoting_strings_pl.xtb b/remoting/resources/remoting_strings_pl.xtb
index e7170440..fa644ba 100644
--- a/remoting/resources/remoting_strings_pl.xtb
+++ b/remoting/resources/remoting_strings_pl.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Wystąpił nieoczekiwany błąd. Zgłoś ten problem programistom.</translation>
 <translation id="1619813076098775562">Połączenie z urządzeniem Cast zostało zakończone.</translation>
 <translation id="1643640058022401035">Jeśli opuścisz tę stronę, sesja Chromoting zostanie zakończona.</translation>
-<translation id="1646994964686260497">Brak komputera zdalnego.</translation>
 <translation id="1654128982815600832">Włączam połączenia zdalne z tym komputerem…</translation>
 <translation id="170207782578677537">Nie udało się zarejestrować tego komputera.</translation>
 <translation id="1704090719919187045">Ustawienia hosta funkcji Chromoting</translation>
-<translation id="1738759452976856405">Zatrzymaj nagrywanie</translation>
 <translation id="174018511426417793">Nie masz zarejestrowanych komputerów. Aby umożliwić zdalne połączenia z komputerem, zainstaluj na nim Pulpit zdalny Chrome i kliknij „<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Łączę…</translation>
 <translation id="1770394049404108959">Nie mogę otworzyć aplikacji.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Zaloguj się</translation>
 <translation id="3989511127559254552">Aby przejść dalej, musisz najpierw przyznać rozszerzone uprawnienia dostępu do swojego komputera. Trzeba to zrobić tylko raz.</translation>
 <translation id="4006787130661126000">Jeśli chcesz korzystać z tego komputera przez Pulpit zdalny Chrome, musisz włączyć połączenia zdalne.</translation>
-<translation id="401121182145179743">Najpierw musisz skonfigurować funkcję dostępu zdalnego na komputerze.</translation>
 <translation id="4028465833180158312">• Zaktualizowano interfejs Material Design.
 • Dodano informacje o licencjach firm zewnętrznych.
 • Dodano wyświetlanie informacji o komputerach zdalnych, które są offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Na pewno chcesz wyłączyć połączenia zdalne z: <ph name="HOSTNAME" />? Jeśli zmienisz zdanie, połączenia będzie trzeba włączyć na tamtym komputerze.</translation>
 <translation id="6998989275928107238">Do</translation>
-<translation id="7017806586333792422">Rozpocznij nagrywanie</translation>
 <translation id="7019153418965365059">Nieznany błąd hosta: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Pomoc zdalna</translation>
 <translation id="7038683108611689168">Pomóż nam udoskonalić Chromoting, zezwalając na gromadzenie przez nas statystyk użytkowania i raportów o awariach.</translation>
diff --git a/remoting/resources/remoting_strings_pt-BR.xtb b/remoting/resources/remoting_strings_pt-BR.xtb
index 26ae96ce..63a20ef 100644
--- a/remoting/resources/remoting_strings_pt-BR.xtb
+++ b/remoting/resources/remoting_strings_pt-BR.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ocorreu um erro inesperado. Informe este problema aos desenvolvedores.</translation>
 <translation id="1619813076098775562">A conexão com o dispositivo de transmissão foi encerrada.</translation>
 <translation id="1643640058022401035">Abandonar esta página encerrará sua sessão de Chromoting.</translation>
-<translation id="1646994964686260497">Não há nada para se conectar.</translation>
 <translation id="1654128982815600832">Permitindo conexões remotas a este computador...</translation>
 <translation id="170207782578677537">Falha ao registrar este computador.</translation>
 <translation id="1704090719919187045">Preferências do host do Chromoting</translation>
-<translation id="1738759452976856405">Parar gravação</translation>
 <translation id="174018511426417793">Você não tem computadores cadastrados. Para ativar conexões remotas a um computador, instale a Área de trabalho remota do Google Chrome no computador desejado e clique em "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Conectando...</translation>
 <translation id="1770394049404108959">Não consigo abrir o aplicativo.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Fazer login</translation>
 <translation id="3989511127559254552">Para continuar, é necessário conceder permissões de acesso estendidas ao seu computador. Você só precisará fazer isso uma vez.</translation>
 <translation id="4006787130661126000">Ative conexões remotas se desejar usar a Área de trabalho remota do Google Chrome para acessar este computador.</translation>
-<translation id="401121182145179743">Primeiro, é necessário configurar seu computador para acesso remoto.</translation>
 <translation id="4028465833180158312">• Atualizações da IU material de design.
 • Créditos de licenciamento de terceiros.
 • Informações exibidas para computadores remotos que estão off-line.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Tem certeza de que deseja desativar conexões remotas para <ph name="HOSTNAME" />? Se mudar de idéia, precisará visitar este computador para reativar as conexões.</translation>
 <translation id="6998989275928107238">Para</translation>
-<translation id="7017806586333792422">Começar a gravar</translation>
 <translation id="7019153418965365059">Erro de host não reconhecido: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Assistência remota</translation>
 <translation id="7038683108611689168">Ajude-nos a melhorar o Chromoting por meio da coleta de estatísticas de uso e de relatórios de falhas.</translation>
diff --git a/remoting/resources/remoting_strings_pt-PT.xtb b/remoting/resources/remoting_strings_pt-PT.xtb
index 3524bcd..0b4ea43 100644
--- a/remoting/resources/remoting_strings_pt-PT.xtb
+++ b/remoting/resources/remoting_strings_pt-PT.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ocorreu um erro inesperado. Comunique este problema aos programadores.</translation>
 <translation id="1619813076098775562">Terminou a ligação ao Dispositivo de transmissão.</translation>
 <translation id="1643640058022401035">Se sair desta página, terminará a sessão do Chromoting.</translation>
-<translation id="1646994964686260497">Não há computadores aos quais estabelecer ligação.</translation>
 <translation id="1654128982815600832">A ativar as ligações remotas neste computador…</translation>
 <translation id="170207782578677537">Falha ao registar o computador.</translation>
 <translation id="1704090719919187045">Preferências do Anfitrião do Chromoting</translation>
-<translation id="1738759452976856405">Parar gravação</translation>
 <translation id="174018511426417793">Não existem computadores registados. Para ativar as ligações remotas a um computador, instale o Ambiente de Trabalho Remoto do Chrome aí e clique em “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">A ligar...</translation>
 <translation id="1770394049404108959">Não consigo abrir a aplicação.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Iniciar sessão</translation>
 <translation id="3989511127559254552">Para continuar, precisa primeiro de conceder autorizações de acesso alargadas ao computador. Apenas tem de efetuar esta operação uma vez.</translation>
 <translation id="4006787130661126000">Se pretende utilizar o Ambiente de Trabalho Remoto do Chrome para aceder ao computador, é necessário ativar as ligações remotas.</translation>
-<translation id="401121182145179743">Primeiro, tem de configurar o computador para acesso remoto.</translation>
 <translation id="4028465833180158312">• Atualizações de material design da IU.
 • Créditos de licenciamento de terceiros.
 • Apresentação de informações para computadores remotos offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Tem a certeza de que pretende desativar as ligações remotas a <ph name="HOSTNAME" />? Se mudar de ideias, será necessário aceder a esse computador e voltar a ativar as ligações.</translation>
 <translation id="6998989275928107238">Para</translation>
-<translation id="7017806586333792422">Iniciar gravação</translation>
 <translation id="7019153418965365059">Erro de anfitrião não reconhecido: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Assistência Remota</translation>
 <translation id="7038683108611689168">Ajude-nos a melhorar o Chromoting, permitindo-nos recolher estatísticas de utilização e relatórios de falhas.</translation>
diff --git a/remoting/resources/remoting_strings_ro.xtb b/remoting/resources/remoting_strings_ro.xtb
index 360ad305..414fd23 100644
--- a/remoting/resources/remoting_strings_ro.xtb
+++ b/remoting/resources/remoting_strings_ro.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">A apărut o eroare neașteptată. Raportați această problemă dezvoltatorilor.</translation>
 <translation id="1619813076098775562">Conexiunea la dispozitivul de proiecție a fost închisă.</translation>
 <translation id="1643640058022401035">Părăsind această pagină, veți încheia sesiunea Chromoting.</translation>
-<translation id="1646994964686260497">Niciun dispozitiv la care te poți conecta.</translation>
 <translation id="1654128982815600832">Se activează conexiunile la distanță pentru acest computer…</translation>
 <translation id="170207782578677537">Înregistrarea acestui computer nu a reușit.</translation>
 <translation id="1704090719919187045">Preferințe gazdă Chromoting</translation>
-<translation id="1738759452976856405">Oprește înregistrarea</translation>
 <translation id="174018511426417793">Nu aveți niciun computer înregistrat. Pentru a activa conexiunile la distanță pentru un alt computer, instalați Desktop la distanță Chrome pe acesta și dați clic pe „<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Se conectează…</translation>
 <translation id="1770394049404108959">Nu pot deschide aplicația.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Conectează-te</translation>
 <translation id="3989511127559254552">Pentru a continua, trebuie să acorzi permisiuni extinse de acces la computer. Acest lucru este necesar o singură dată.</translation>
 <translation id="4006787130661126000">Trebuie să activați conexiunile la distanță dacă doriți să utilizați Desktop la distanță Chrome pentru a accesa acest computer.</translation>
-<translation id="401121182145179743">Mai întâi, trebuie să configurezi computerul pentru accesul la distanță.</translation>
 <translation id="4028465833180158312">• Actualizări ale interfeței de utilizare care folosește designul material.
 • Credite de licențiere terță parte.
 • Informații afișate pentru computerele la distanță care sunt offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Sigur doriți să dezactivați conexiunile la distanță la <ph name="HOSTNAME" />? Dacă vă răzgândiți, va trebui să accesați computerul respectiv pentru a reactiva conexiunile.</translation>
 <translation id="6998989275928107238">La</translation>
-<translation id="7017806586333792422">Pornește înregistrarea</translation>
 <translation id="7019153418965365059">Eroare nerecunoscută a gazdei: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Asistență la distanță</translation>
 <translation id="7038683108611689168">Ajutați-ne să îmbunătățim Chromoting, permițându-ne să colectăm statistici de utilizare și rapoarte de blocare.</translation>
diff --git a/remoting/resources/remoting_strings_ru.xtb b/remoting/resources/remoting_strings_ru.xtb
index 2bbb364..10a52ef 100644
--- a/remoting/resources/remoting_strings_ru.xtb
+++ b/remoting/resources/remoting_strings_ru.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Непредвиденная ошибка. Сообщите об этой проблеме разработчикам.</translation>
 <translation id="1619813076098775562">Приложение больше не подключено к Cast-устройству</translation>
 <translation id="1643640058022401035">Если вы покинете эту страницу, сеанс Пульта Chrome будет завершен.</translation>
-<translation id="1646994964686260497">Устройств для подключения нет.</translation>
 <translation id="1654128982815600832">Разрешение удаленных подключений…</translation>
 <translation id="170207782578677537">Не удалось зарегистрировать этот компьютер.</translation>
 <translation id="1704090719919187045">Настройки хоста Пульта Chrome</translation>
-<translation id="1738759452976856405">Остановить запись</translation>
 <translation id="174018511426417793">Для вашего аккаунта не зарегистрировано ни одного компьютера. Чтобы разрешить удаленные подключения на компьютере, установите на него Удаленный рабочий стол Chrome и нажмите кнопку "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">Подключение…</translation>
 <translation id="1770394049404108959">Не удается открыть приложение.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Вход</translation>
 <translation id="3989511127559254552">Чтобы продолжить, предоставьте своему компьютеру расширенные права доступа. Это нужно сделать всего один раз.</translation>
 <translation id="4006787130661126000">Если вам требуется доступ к этому компьютеру через Удаленный рабочий стол Chrome, необходимо разрешить удаленные подключения.</translation>
-<translation id="401121182145179743">Сначала настройте удаленный доступ на компьютере.</translation>
 <translation id="4028465833180158312">• Обновленный интерфейс в стиле Material Design.
 • Просмотр сведений о сторонних лицензиях.
 • Удаленный просмотр данных на компьютере, отключенном от Интернета.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ОК</translation>
 <translation id="6985691951107243942">Заблокировать подключения к <ph name="HOSTNAME" />? Восстановить их можно будет только на соответствующем компьютере.</translation>
 <translation id="6998989275928107238">Хост</translation>
-<translation id="7017806586333792422">Начать запись</translation>
 <translation id="7019153418965365059">Неизвестная ошибка хоста: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Удаленная поддержка</translation>
 <translation id="7038683108611689168">Разрешить Google собирать данные статистики использования и отчеты о сбоях для улучшения работы Пульта Chrome</translation>
diff --git a/remoting/resources/remoting_strings_sk.xtb b/remoting/resources/remoting_strings_sk.xtb
index c3e71c01..8def6a5 100644
--- a/remoting/resources/remoting_strings_sk.xtb
+++ b/remoting/resources/remoting_strings_sk.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Vyskytla sa neočakávaná chyba. Nahláste tento problém vývojárom.</translation>
 <translation id="1619813076098775562">Pripojenie k zariadeniu Cast bolo zavreté.</translation>
 <translation id="1643640058022401035">Ak opustíte túto stránku, relácia aplikácie Chromoting sa ukončí.</translation>
-<translation id="1646994964686260497">Na pripojenie nie sú k dispozícii žiadne zariadenia.</translation>
 <translation id="1654128982815600832">Prebieha povoľovanie vzdialených pripojení pre tento počítač...</translation>
 <translation id="170207782578677537">Registrácia tohto počítača zlyhala.</translation>
 <translation id="1704090719919187045">Predvoľby hostiteľa funkcie Chromoting</translation>
-<translation id="1738759452976856405">Zastaviť zaznamenávanie</translation>
 <translation id="174018511426417793">Nie sú zaregistrované žiadne počítače. Ak chcete povoliť vzdialené pripojenie k inému počítaču, nainštalujte na ňom Vzdialenú plochu Chrome a potom kliknite na tlačidlo <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Prebieha pripájanie...</translation>
 <translation id="1770394049404108959">Aplikáciu nemôžem spustiť.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Prihlásiť sa</translation>
 <translation id="3989511127559254552">Ak chcete pokračovať, musíte najprv udeliť rozšírené povolenia na prístup k vášmu počítaču. Stačí to urobiť len raz.</translation>
 <translation id="4006787130661126000">Ak chcete na prístup k tomuto počítaču použiť Vzdialenú plochu Chrome, musíte povoliť vzdialené pripojenia.</translation>
-<translation id="401121182145179743">Najprv musíte v počítači nastaviť vzdialený prístup.</translation>
 <translation id="4028465833180158312">• Aktualizácie používateľského rozhrania Material Design.
 • Uvedenie licencií tretích strán.
 • Zobrazenie informácií o vzdialených počítačoch, ktoré sú offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Naozaj chcete zakázať vzdialené pripojenia k počítaču <ph name="HOSTNAME" />? Ak zmeníte názor, pripojenie budete musieť znova povoliť priamo z uvedeného počítača.</translation>
 <translation id="6998989275928107238">Komu</translation>
-<translation id="7017806586333792422">Spustiť zaznamenávanie</translation>
 <translation id="7019153418965365059">Nerozpoznaná chyba hostiteľa: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Pomoc na diaľku</translation>
 <translation id="7038683108611689168">Pomôžte nám zlepšiť aplikáciu Chromoting tým, že nám umožníte zhromažďovať štatistiky používania a správy o zlyhaní.</translation>
diff --git a/remoting/resources/remoting_strings_sl.xtb b/remoting/resources/remoting_strings_sl.xtb
index ebbeb954..bc6d426e 100644
--- a/remoting/resources/remoting_strings_sl.xtb
+++ b/remoting/resources/remoting_strings_sl.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Nepričakovana napaka. O tem obvestite razvijalce.</translation>
 <translation id="1619813076098775562">Povezava z napravo za predvajanje je prekinjena.</translation>
 <translation id="1643640058022401035">Če zapustite to stran, se bo seja Oddaljenega povezovanja s Chromom končala.</translation>
-<translation id="1646994964686260497">Ni naprav za povezovanje.</translation>
 <translation id="1654128982815600832">Omogočanje oddaljenih povezav za ta računalnik ...</translation>
 <translation id="170207782578677537">Računalnika ni bilo mogoče registrirati.</translation>
 <translation id="1704090719919187045">Nastavitve gostitelja za Oddaljeno povezovanje s Chromom</translation>
-<translation id="1738759452976856405">Ustavi snemanje</translation>
 <translation id="174018511426417793">Nimate registriranih računalnikov. Če želite omogočiti oddaljene povezave z računalnikom, vanj namestite Oddaljeno namizje za Chrome in kliknite »<ph name="BUTTON_NAME" />«.</translation>
 <translation id="1742469581923031760">Vzpostavljanje povezave ...</translation>
 <translation id="1770394049404108959">Ne morem odpreti aplikacije.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Prijava</translation>
 <translation id="3989511127559254552">Če želite nadaljevati, morate računalniku najprej odobriti dovoljenja za razširjen dostop. To je treba narediti samo enkrat.</translation>
 <translation id="4006787130661126000">Če želite do računalnika dostopati z Oddaljenim namizjem za Chrome, omogočite oddaljene povezave.</translation>
-<translation id="401121182145179743">Najprej morate nastaviti računalnik za oddaljeni dostop.</translation>
 <translation id="4028465833180158312">• Posodobitve uporabniškega vmesnika z materialnim oblikovanjem.
 • Navedbe licenc tretjih oseb.
 • Podatki, prikazani za oddaljene računalnike, ki so brez povezave.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">V redu</translation>
 <translation id="6985691951107243942">Ali ste prepričani, da želite onemogočiti oddaljene povezave z gostiteljem <ph name="HOSTNAME" />? Če si premislite, boste morali v tistem računalniku znova omogočiti povezave.</translation>
 <translation id="6998989275928107238">Za</translation>
-<translation id="7017806586333792422">Začni snemanje</translation>
 <translation id="7019153418965365059">Neprepoznana napaka gostitelja: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Oddaljena pomoč</translation>
 <translation id="7038683108611689168">Pomagajte nam izboljšati Oddaljeno povezovanje s Chromom, tako da nam dovolite zbiranje statističnih podatkov o uporabi in poročil o zrušitvah.</translation>
diff --git a/remoting/resources/remoting_strings_sr.xtb b/remoting/resources/remoting_strings_sr.xtb
index c517329..8ed27f7e 100644
--- a/remoting/resources/remoting_strings_sr.xtb
+++ b/remoting/resources/remoting_strings_sr.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Дошло је до неочекиване грешке. Пријавите овај проблем програмерима.</translation>
 <translation id="1619813076098775562">Веза са уређајем за пребацивање је затворена.</translation>
 <translation id="1643640058022401035">Напуштањем ове странице завршићете сесију Chromoting-а.</translation>
-<translation id="1646994964686260497">Нема рачунара за повезивање.</translation>
 <translation id="1654128982815600832">Омогућавање даљинског повезивања за овај рачунар…</translation>
 <translation id="170207782578677537">Регистровање овог рачунара није успело.</translation>
 <translation id="1704090719919187045">Подешавања хоста за Chromoting</translation>
-<translation id="1738759452976856405">Заустави снимање</translation>
 <translation id="174018511426417793">Немате регистрованих рачунара. Да бисте омогућили даљинско повезивање са рачунаром, инсталирајте Chrome удаљени рачунар на њега и кликните на „<ph name="BUTTON_NAME" />“.</translation>
 <translation id="1742469581923031760">Повезивање…</translation>
 <translation id="1770394049404108959">Не могу да отворим апликацију.</translation>
@@ -123,7 +121,6 @@
 <translation id="3950820424414687140">Пријави ме</translation>
 <translation id="3989511127559254552">Да бисте наставили, морате да одобрите дозволе за шири приступ рачунару. То треба да урадите само једанпут.</translation>
 <translation id="4006787130661126000">Морате да омогућите даљинско повезивање ако желите да користите Chrome удаљени рачунар да бисте приступали овом рачунару.</translation>
-<translation id="401121182145179743">Прво треба да подесите рачунар за даљински приступ.</translation>
 <translation id="4028465833180158312">• Ажурирања корисничког интерфејса материјалног дизајна.
 • Заслуге за лиценце треће стране.
 • Приказују се информације за даљинске рачунаре који су офлајн.</translation>
@@ -235,7 +232,6 @@
 <translation id="6965382102122355670">Потврди</translation>
 <translation id="6985691951107243942">Желите ли стварно да онемогућите даљинско повезивање са хостом <ph name="HOSTNAME" />? Ако се предомислите, треба да посетите тај рачунар да бисте поново омогућили везе.</translation>
 <translation id="6998989275928107238">Коме</translation>
-<translation id="7017806586333792422">Почни снимање</translation>
 <translation id="7019153418965365059">Непозната грешка у вези са хостом: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Даљинска помоћ</translation>
 <translation id="7038683108611689168">Помозите нам да побољшамо Chromoting тако што ћете нам дозволити да прикупљамо статистику коришћења и извештаје о отказивању.</translation>
diff --git a/remoting/resources/remoting_strings_sv.xtb b/remoting/resources/remoting_strings_sv.xtb
index ebf8230..2ba5572 100644
--- a/remoting/resources/remoting_strings_sv.xtb
+++ b/remoting/resources/remoting_strings_sv.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Ett oväntat fel uppstod. Rapportera problemet till utvecklarna.</translation>
 <translation id="1619813076098775562">Stängd anslutning till överföringsenheten.</translation>
 <translation id="1643640058022401035">Om du lämnar sidan avslutas sessionen i Chromoting.</translation>
-<translation id="1646994964686260497">Det finns inget att ansluta till.</translation>
 <translation id="1654128982815600832">Fjärranslutningar aktiveras för den här datorn ...</translation>
 <translation id="170207782578677537">Det gick inte att registrera datorn.</translation>
 <translation id="1704090719919187045">Chromoting Host Preferences</translation>
-<translation id="1738759452976856405">Stoppa inspelning</translation>
 <translation id="174018511426417793">Du har inte registrerat några datorer. Om du vill aktivera fjärranslutningar till en dator installerar du Chrome Remote Desktop på datorn och klickar på <ph name="BUTTON_NAME" />.</translation>
 <translation id="1742469581923031760">Anslutningen upprättas …</translation>
 <translation id="1770394049404108959">Jag kan inte öppna appen.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Logga in</translation>
 <translation id="3989511127559254552">Innan du kan fortsätta måste du bevilja utökad åtkomstbehörighet till datorn. Du behöver bara göra det en gång.</translation>
 <translation id="4006787130661126000">Du måste aktivera fjärranslutningar om du vill använda Chrome Remote Desktop för att få åtkomst till den här datorn.</translation>
-<translation id="401121182145179743">Du måste först konfigurera datorn för fjärråtkomst.</translation>
 <translation id="4028465833180158312">• Användargränssnittet för Material Design uppdateras.
 • Licensieringar från tredje part.
 • Information visas för fjärrdatorer som är offline.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Är du säker på att du vill inaktivera fjärranslutningar till <ph name="HOSTNAME" />? Om du ångrar dig måste du besöka datorn för att kunna aktivera anslutningar igen.</translation>
 <translation id="6998989275928107238">Till</translation>
-<translation id="7017806586333792422">Starta inspelning</translation>
 <translation id="7019153418965365059">Okänt värdfel: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Fjärrhjälp</translation>
 <translation id="7038683108611689168">Hjälp oss att förbättra Chromoting genom att tillåta att vi samlar in användningsstatistik och felrapporter.</translation>
diff --git a/remoting/resources/remoting_strings_sw.xtb b/remoting/resources/remoting_strings_sw.xtb
index 590084d..1761fda 100644
--- a/remoting/resources/remoting_strings_sw.xtb
+++ b/remoting/resources/remoting_strings_sw.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Hitilafu isiyotarajiwa imetokea. Tafadhali ripoti tatizo hili kwa wasanidi programu.</translation>
 <translation id="1619813076098775562">Imefunga muunganisho kwenye kifaa Kinachoruhusu midia.</translation>
 <translation id="1643640058022401035">Kuondoka kwenye ukurasa huu kutakamilisha kipindi chako cha Chromoting.</translation>
-<translation id="1646994964686260497">Hakuna kitu cha kuunganisha kwacho.</translation>
 <translation id="1654128982815600832">Inawasha miunganisho ya mbali kwa kompyuta hii...</translation>
 <translation id="170207782578677537">Ilishindwa kusajili kompyuta hii.</translation>
 <translation id="1704090719919187045">Mapendeleo ya Seva Pangishi ya Chromoting</translation>
-<translation id="1738759452976856405">Acha Kurekodi</translation>
 <translation id="174018511426417793">Huna kompyuta zilizosajiliwa. Ili uwashe miunganisho ya mbali, sakinisha Eneo-kazi la Mbali la Chrome hapo na ubofye “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Inaunganisha...</translation>
 <translation id="1770394049404108959">Siwezi kuifungua programu.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Ingia</translation>
 <translation id="3989511127559254552">Ili kuendelea lazima uipe kompyuta yako ruhusa za ufikiaji zilizoongezwa kwanza. Unahitaji kufanya hili mara moja pekee.</translation>
 <translation id="4006787130661126000">Lazima uwashe miunganisho ya mbali ukitaka kutumia Eneo-kazi la Mbali la Chrome kufikia kompyuta hii.</translation>
-<translation id="401121182145179743">Kwanza unahitaji kuiweka kompyuta yako ili ifikiwe kutoka mbali.</translation>
 <translation id="4028465833180158312">• Sasisho za Kiolesura cha Usanifu Bora.
 • Vitambulisho vya utoaji leseni kwa mtu mwingine.
 • Maelezo yanayoonyeshwa kwa kompyuta za mbali ambazo ziko nje ya mtandao.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Sawa</translation>
 <translation id="6985691951107243942">Una uhakika kuwa unataka kufunga miunganisho ya mbali kwa <ph name="HOSTNAME" />? Ukibadilisha nia, utahitajika kutembelea kompyuta hiyo ili uwashe miunganisho upya.</translation>
 <translation id="6998989275928107238">Kwa</translation>
-<translation id="7017806586333792422">Anza Kurekodi</translation>
 <translation id="7019153418965365059">Hitilafu ya seva pangishi isiyotambulika: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Usaidizi wa Mbali</translation>
 <translation id="7038683108611689168">Tusaidie kuboresha Chromoting kwa kuturuhusu tukusanye takwimu za matumizi na ripoti za hitilafu.</translation>
diff --git a/remoting/resources/remoting_strings_ta.xtb b/remoting/resources/remoting_strings_ta.xtb
index 1e16463..3e1ac3a 100644
--- a/remoting/resources/remoting_strings_ta.xtb
+++ b/remoting/resources/remoting_strings_ta.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">எதிர்பாராத பிழை. இந்தச் சிக்கலை டெவலப்பர்களுக்குத் தெரிவிக்கவும்.</translation>
 <translation id="1619813076098775562">Cast சாதனத்திற்கான இணைப்பு மூடப்பட்டது.</translation>
 <translation id="1643640058022401035">இந்தப் பக்கத்திலிருந்து வெளியேறுவது உங்கள் குரோமோட்டிங் அமர்வை முடிக்கும்.</translation>
-<translation id="1646994964686260497">இணைப்பதற்கு எதுவுமில்லை.</translation>
 <translation id="1654128982815600832">இந்தக் கணினிக்கான தொலைநிலை இணைப்புகளை இயக்குகிறது...</translation>
 <translation id="170207782578677537">இந்தக் கணினியை பதிவுசெய்வது தோல்வியடைந்தது.</translation>
 <translation id="1704090719919187045">குரோமோட்டிங் புரவன் விருப்பத்தேர்வுகள்</translation>
-<translation id="1738759452976856405">பதிவுசெய்வதை நிறுத்து</translation>
 <translation id="174018511426417793">கணினிகளைப் பதிவுசெய்யவில்லை. கணினிக்கான தொலைநிலை இணைப்புகளைச் செயலாக்க, Chrome தொலைநிலை டெஸ்க்டாப்பை நிறுவி “<ph name="BUTTON_NAME" />” ஐக் கிளிக் செய்க.</translation>
 <translation id="1742469581923031760">இணைக்கிறது...</translation>
 <translation id="1770394049404108959">பயன்பாட்டைத் திறக்க முடியவில்லை.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">உள்நுழைக</translation>
 <translation id="3989511127559254552">தொடர்வதற்கு, உங்கள் கணினிக்கு நீட்டிக்கப்பட்ட அணுகல் அனுமதிகளை முதலில் வழங்க வேண்டும். இதை நீங்கள் ஒரு முறை மட்டுமே செய்ய வேண்டியிருக்கும்.</translation>
 <translation id="4006787130661126000">இந்தக் கணினியை அணுகுவதற்கு, Chrome தொலைநிலை டெஸ்க்டாப்பைப் பயன்படுத்த விரும்பினால், தொலைநிலை இணைப்புகளை இயக்க வேண்டும்.</translation>
-<translation id="401121182145179743">தொலைநிலை அணுகலுக்கு உங்கள் கணினியை முதலில் அமைக்க வேண்டும்.</translation>
 <translation id="4028465833180158312">• மெட்டீரியல் வடிவத்தின் UI புதுப்பிப்புகள்.
 • மூன்றாம் தரப்பு உரிமப் பங்களிப்புகள்.
 • ஆஃப்லைனில் உள்ள தொலைநிலைக் கணினிகளுக்குக் காட்டப்படும் தகவல்.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">சரி</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" /> க்கான தொலைநிலை இணைப்புகளை நிச்சயமாக முடக்க வேண்டுமா? மனம் மாறிவிட்டால், இணைப்புகளை மீண்டும் செயலாக்க, நீங்கள் அந்தக் கணினியை மீண்டும் பார்வையிட வேண்டியிருக்கும்.</translation>
 <translation id="6998989275928107238">பெறுநர்</translation>
-<translation id="7017806586333792422">பதிவுசெய்வதைத் தொடங்கு</translation>
 <translation id="7019153418965365059">அறியப்படாத ஹோஸ்ட் பிழை: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">தொலைநிலை உதவி</translation>
 <translation id="7038683108611689168">பயன்பாட்டு  புள்ளிவிவரங்களையும் சிதைவு அறிக்கைகளையும் சேகரிக்க எங்களை அனுமதிப்பதன் மூலம் குரோமோட்டிங்கை மேம்படுத்த உதவவும்.</translation>
diff --git a/remoting/resources/remoting_strings_te.xtb b/remoting/resources/remoting_strings_te.xtb
index 4a490e3..89ad0d5 100644
--- a/remoting/resources/remoting_strings_te.xtb
+++ b/remoting/resources/remoting_strings_te.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">ఊహించని లోపం సంభవించింది. దయచేసి డెవలపర్‌లకు ఈ సమస్యను నివేదించండి.</translation>
 <translation id="1619813076098775562">Cast పరికరానికి కనెక్షన్ మూసివేయబడింది.</translation>
 <translation id="1643640058022401035">ఈ పేజీ నుండి నిష్క్రమించడం వలన మీ Chromoting సెషన్ ముగుస్తుంది.</translation>
-<translation id="1646994964686260497">కనెక్ట్ చేయడానికి ఏదీ లేదు.</translation>
 <translation id="1654128982815600832">ఈ కంప్యూటర్ కోసం రిమోట్ కనెక్షన్‌లను ప్రారంభిస్తోంది…</translation>
 <translation id="170207782578677537">ఈ కంప్యూటర్‌ను నమోదు చేయడంలో విఫలమైంది.</translation>
 <translation id="1704090719919187045">Chromoting హోస్ట్ ప్రాధాన్యతలు</translation>
-<translation id="1738759452976856405">రికార్డింగ్‌ను ఆపివేయి</translation>
 <translation id="174018511426417793">మీరు నమోదు అయిన కంప్యూటర్‌లను కలిగి ఉండలేదు. కంప్యూటర్‌కు రిమోట్ కనెక్షన్‌లను ప్రారంభించడానికి, అక్కడ Chrome రిమోట్ డెస్క్‌టాప్‌ను ఇన్‌స్టాల్ చేసి “<ph name="BUTTON_NAME" />”ను క్లిక్ చేయండి.</translation>
 <translation id="1742469581923031760">కనెక్ట్ చేస్తోంది…</translation>
 <translation id="1770394049404108959">నేను అనువర్తనాన్ని తెరవలేకపోతున్నాను.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">సైన్ ఇన్</translation>
 <translation id="3989511127559254552">కొనసాగించడానికి ముందుగా మీరు తప్పనిసరిగా మీ కంప్యూటర్‌కి అదనపు ప్రాప్యత అనుమతులను మంజూరు చేయాలి. మీరు ఒకసారి మంజూరు చేస్తే సరిపోతుంది.</translation>
 <translation id="4006787130661126000">మీరు ఈ కంప్యూటర్‌ను ప్రాప్యత చేయడానికి Chrome రిమోట్ డెస్క్‌టాప్‌ను ఉపయోగించాలనుకుంటే మీరు రిమోట్ కనెక్షన్‌లను తప్పనిసరిగా ప్రారంభించాలి.</translation>
-<translation id="401121182145179743">మీరు రిమోట్ ప్రాప్యత కోసం ముందుగా మీ కంప్యూటర్‌ను సెటప్ చేయాలి.</translation>
 <translation id="4028465833180158312">• విశిష్ట రూపకల్పన UI నవీకరణలు.
 • మూడవ పక్షం లైసెన్సింగ్ క్రెడిట్‌లు.
 • ఆఫ్‌లైన్‌లో ఉన్న రిమోట్ కంప్యూటర్‌ల కోసం సమాచారం చూపబడే సౌలభ్యం.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">సరే</translation>
 <translation id="6985691951107243942">మీరు <ph name="HOSTNAME" />కు రిమోట్ కనెక్షన్‌లను ఖచ్చితంగా నిలిపివేయాలనుకుంటున్నారా? మీరు మీ మనస్సు మార్చుకుంటే, కనెక్షన్‌లను పునఃప్రారంభించడానికి మీరు ఆ కంప్యూటర్‌ను సందర్శించాలి.</translation>
 <translation id="6998989275928107238">స్వీకర్త</translation>
-<translation id="7017806586333792422">రికార్డింగ్‌ను ప్రారంభించు</translation>
 <translation id="7019153418965365059">గుర్తుపట్టని హోస్ట్ లోపం: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">రిమోట్ సహాయం</translation>
 <translation id="7038683108611689168">వినియోగ గణాంకాలను మరియు క్రాష్ నివేదికలను సేకరించడానికి మమ్మల్ని అనుమతించడం ద్వారా Chromotingను మెరుగుపరచడంలో మాకు సహాయపడండి.</translation>
diff --git a/remoting/resources/remoting_strings_th.xtb b/remoting/resources/remoting_strings_th.xtb
index d0c9c89..316df9d 100644
--- a/remoting/resources/remoting_strings_th.xtb
+++ b/remoting/resources/remoting_strings_th.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">เกิดข้อผิดพลาดที่ไม่คาดคิด โปรดรายงานปัญหานี้ให้นักพัฒนาซอฟต์แวร์ทราบ</translation>
 <translation id="1619813076098775562">ปิดการเชื่อมต่อกับเครื่องส่งแล้ว</translation>
 <translation id="1643640058022401035">การออกจากหน้าเว็บนี้จะเป็นการสิ้นสุดเซสชัน Chromoting ของคุณ</translation>
-<translation id="1646994964686260497">ไม่มีปลายทางให้เชื่อมต่อ</translation>
 <translation id="1654128982815600832">กำลังเปิดใช้งานการเชื่อมต่อระยะไกลสำหรับคอมพิวเตอร์เครื่องนี้…</translation>
 <translation id="170207782578677537">ไม่สามารถลงทะเบียนคอมพิวเตอร์เครื่องนี้</translation>
 <translation id="1704090719919187045">Chromoting Host Preferences</translation>
-<translation id="1738759452976856405">หยุดบันทึก</translation>
 <translation id="174018511426417793">คุณไม่มีคอมพิวเตอร์ที่ได้ลงทะเบียนไว้ หากต้องการเปิดใช้งานการเชื่อมต่อระยะไกลกับคอมพิวเตอร์ ให้ติดตั้ง Chrome Remote Desktop ที่คอมพิวเตอร์ที่ต้องการใช้งานและคลิก "<ph name="BUTTON_NAME" />"</translation>
 <translation id="1742469581923031760">กำลังเชื่อมต่อ…</translation>
 <translation id="1770394049404108959">ฉันไม่สามารถเปิดแอปพลิเคชันนี้</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">ลงชื่อเข้าใช้</translation>
 <translation id="3989511127559254552">หากต้องการดำเนินการต่อ คุณจะต้องให้สิทธิ์เพิ่มเติมในการเข้าถึงคอมพิวเตอร์ของคุณก่อน โดยต้องทำเพียงครั้งเดียว</translation>
 <translation id="4006787130661126000">คุณต้องเปิดใช้งานการเชื่อมต่อระยะไกลหากคุณต้องการใช้ Chrome Remote Desktop ในการเข้าถึงคอมพิวเตอร์เครื่องนี้</translation>
-<translation id="401121182145179743">คุณต้องตั้งค่าคอมพิวเตอร์สำหรับการเข้าถึงระยะไกลก่อน</translation>
 <translation id="4028465833180158312">• การอัปเดต UI ตามดีไซน์ Material
 • เครดิตการให้สัญญาอนุญาตบุคคลที่สาม
 • แสดงข้อมูลสำหรับคอมพิวเตอร์ระยะไกลที่ออฟไลน์</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ตกลง</translation>
 <translation id="6985691951107243942">คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานการเชื่อมต่อระยะไกลกับ <ph name="HOSTNAME" /> หากคุณเปลี่ยนใจภายหลัง คุณจะต้องไปที่คอมพิวเตอร์เครื่องนั้นเพื่อเปิดใช้งานการเชื่อมต่ออีกครั้ง</translation>
 <translation id="6998989275928107238">ถึง</translation>
-<translation id="7017806586333792422">เริ่มบันทึก</translation>
 <translation id="7019153418965365059">ข้อผิดพลาดของโฮสต์ที่ไม่รู้จัก: <ph name="HOST_OFFLINE_REASON" /></translation>
 <translation id="701976023053394610">ความช่วยเหลือจากระยะไกล</translation>
 <translation id="7038683108611689168">ช่วยเราปรับปรุง Chromoting ให้ดีขึ้นด้วยการอนุญาตให้เรารวบรวมสถิติการใช้งานและรายงานข้อขัดข้อง</translation>
diff --git a/remoting/resources/remoting_strings_tr.xtb b/remoting/resources/remoting_strings_tr.xtb
index 7cb1615..238812aa 100644
--- a/remoting/resources/remoting_strings_tr.xtb
+++ b/remoting/resources/remoting_strings_tr.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Beklenmeyen bir hata oluştu. Lütfen bu sorunu geliştiricilere bildirin.</translation>
 <translation id="1619813076098775562">Cast cihazına bağlantı kapatıldı.</translation>
 <translation id="1643640058022401035">Bu sayfadan ayrılırsanız Chromoting oturumunuz sonlandırılır.</translation>
-<translation id="1646994964686260497">Bağlanacak bir bilgisayar yok.</translation>
 <translation id="1654128982815600832">Bu bilgisayara uzaktan bağlantılar etkinleştiriliyor…</translation>
 <translation id="170207782578677537">Bu bilgisayar kaydettirilemedi.</translation>
 <translation id="1704090719919187045">Chromoting Ana Makine Tercihleri</translation>
-<translation id="1738759452976856405">Kaydı Durdur</translation>
 <translation id="174018511426417793">Kayıtlı bilgisayarınız yok. Bir bilgisayara uzaktan bağlantıları etkinleştirmek için Chrome Uzaktan Masaüstü uygulamasını o bilgisayara yükleyin ve “<ph name="BUTTON_NAME" />” düğmesini tıklayın.</translation>
 <translation id="1742469581923031760">Bağlanıyor...</translation>
 <translation id="1770394049404108959">Uygulamayı açamıyorum.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Oturum açın</translation>
 <translation id="3989511127559254552">Devam etmek için öncelikle bilgisayarınıza genişletilmiş erişim izinleri vermelisiniz. Bunu yalnızca bir kez yapmanız yeterlidir.</translation>
 <translation id="4006787130661126000">Bu bilgisayara erişmek için Chrome Uzaktan Masaüstü uygulamasını kullanmak istiyorsanız uzaktan bağlantıları etkinleştirmelisiniz.</translation>
-<translation id="401121182145179743">İlk olarak bilgisayarınızı uzaktan erişim için ayarlamanız gerekir.</translation>
 <translation id="4028465833180158312">• Materyal Tasarım kullanıcı arayüzü güncellemeleri.
 • Üçüncü taraf lisanslama kredileri.
 • Çevrimdışı uzak bilgisayarlar için gösterilen bilgiler.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">Tamam</translation>
 <translation id="6985691951107243942"><ph name="HOSTNAME" /> adlı ana bilgisayara uzaktan bağlantıları devre dışı bırakmak istediğinizden emin misiniz? Daha sonra fikrinizi değiştirirseniz, bağlantıları yeniden etkinleştirmek için söz konusu bilgisayarı ziyaret etmeniz gerekecektir.</translation>
 <translation id="6998989275928107238">Kime</translation>
-<translation id="7017806586333792422">Kaydı Başlat</translation>
 <translation id="7019153418965365059">Tanınmayan ana makine hatası: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Uzaktan Yardım</translation>
 <translation id="7038683108611689168">Kullanım istatistiklerini ve kilitlenme raporlarını toplamamıza izin vererek Chromoting'i daha iyi hale getirmemize yardımcı olun.</translation>
diff --git a/remoting/resources/remoting_strings_uk.xtb b/remoting/resources/remoting_strings_uk.xtb
index f4baea3..0d0c258 100644
--- a/remoting/resources/remoting_strings_uk.xtb
+++ b/remoting/resources/remoting_strings_uk.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Сталася неочікувана помилка. Повідомте розробникам про цю проблему.</translation>
 <translation id="1619813076098775562">Під’єднання до пристрою Cast припинено.</translation>
 <translation id="1643640058022401035">Якщо залишити цю сторінку, сеанс програми Віддалений доступ ОС Chrome закінчиться.</translation>
-<translation id="1646994964686260497">Немає доступних комп’ютерів.</translation>
 <translation id="1654128982815600832">Увімкнення віддалених з’єднань для цього комп’ютера…</translation>
 <translation id="170207782578677537">Не вдалося зареєструвати цей комп’ютер.</translation>
 <translation id="1704090719919187045">Налаштування хосту Віддаленого доступу ОС Chrome</translation>
-<translation id="1738759452976856405">Зупинити запис</translation>
 <translation id="174018511426417793">У вас немає зареєстрованих комп’ютерів. Щоб увімкнути віддалені з’єднання з комп’ютером, установіть на ньому програму Віддалене керування Chrome і натисніть кнопку "<ph name="BUTTON_NAME" />".</translation>
 <translation id="1742469581923031760">З’єднання…</translation>
 <translation id="1770394049404108959">Додаток не відкривається.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Увійти</translation>
 <translation id="3989511127559254552">Щоб продовжити, спершу надайте розширений доступ до свого комп’ютера. Це треба зробити лише один раз.</translation>
 <translation id="4006787130661126000">Щоб отримати доступ до цього комп’ютера за допомогою програми Віддалене керування Chrome, потрібно ввімкнути віддалені з’єднання.</translation>
-<translation id="401121182145179743">Спершу налаштуйте комп’ютер для віддаленого доступу.</translation>
 <translation id="4028465833180158312">• Оновлено інтерфейс матеріального дизайну.
 • Указується інформація про ліцензування сторонньою компанією.
 • Відображаються дані про віддалені комп’ютери, які не під’єднано до Інтернету.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">ОК</translation>
 <translation id="6985691951107243942">Дійсно вимкнути віддалені з’єднання з хостом <ph name="HOSTNAME" />? Якщо ви передумаєте, потрібно буде знову ввімкнути з’єднання на відповідному комп’ютері.</translation>
 <translation id="6998989275928107238">Кому</translation>
-<translation id="7017806586333792422">Почати запис</translation>
 <translation id="7019153418965365059">Невідома помилка хосту: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Віддалена допомога</translation>
 <translation id="7038683108611689168">Допоможіть нам покращити програму Віддалений доступ ОС Chrome, дозволивши збирати статистику використання та звіти про аварійне завершення роботи.</translation>
diff --git a/remoting/resources/remoting_strings_vi.xtb b/remoting/resources/remoting_strings_vi.xtb
index 6484ead..9a7d3271 100644
--- a/remoting/resources/remoting_strings_vi.xtb
+++ b/remoting/resources/remoting_strings_vi.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">Đã xảy ra lỗi không mong muốn. Vui lòng báo cáo vấn đề này cho nhà phát triển.</translation>
 <translation id="1619813076098775562">Đã đóng kết nối tới Thiết bị truyền.</translation>
 <translation id="1643640058022401035">Thoát khỏi trang này sẽ kết thúc phiên Kết nối từ xa trên Chrome của bạn.</translation>
-<translation id="1646994964686260497">Không có máy tính nào để kết nối.</translation>
 <translation id="1654128982815600832">Đang bật kết nối từ xa cho máy tính này…</translation>
 <translation id="170207782578677537">Không thể đăng ký máy tính này.</translation>
 <translation id="1704090719919187045">Tùy chọn máy chủ kết nối từ xa trên Chrome</translation>
-<translation id="1738759452976856405">Dừng quay</translation>
 <translation id="174018511426417793">Bạn chưa đăng ký máy tính nào. Để bật kết nối từ xa với một máy tính, hãy cài đặt Chrome Remote Desktop trên máy tính đó và nhấp “<ph name="BUTTON_NAME" />”.</translation>
 <translation id="1742469581923031760">Đang kết nối...</translation>
 <translation id="1770394049404108959">Tôi không thể mở ứng dụng.</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">Đăng nhập</translation>
 <translation id="3989511127559254552">Để tiếp tục, trước tiên, bạn phải cấp các quyền truy cập mở rộng cho máy tính của mình. Bạn chỉ phải thực hiện việc này một lần.</translation>
 <translation id="4006787130661126000">Bạn phải bật kết nối từ xa nếu bạn muốn sử dụng Chrome Remote Desktop để truy cập vào máy tính này.</translation>
-<translation id="401121182145179743">Trước tiên, bạn cần thiết lập máy tính để truy cập từ xa.</translation>
 <translation id="4028465833180158312">• Bản cập nhật giao diện người dùng thiết kế material design.
 • Tín dụng cấp phép bên thứ ba.
 • Thông tin được hiển thị cho các máy tính từ xa đang ngoại tuyến.</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">OK</translation>
 <translation id="6985691951107243942">Bạn có chắc chắn muốn tắt kết nối từ xa với <ph name="HOSTNAME" /> không? Nếu bạn thay đổi ý định, bạn cần truy cập vào máy tính đó để bật lại kết nối.</translation>
 <translation id="6998989275928107238">Đến</translation>
-<translation id="7017806586333792422">Bắt đầu quay</translation>
 <translation id="7019153418965365059">Lỗi máy chủ không xác định: <ph name="HOST_OFFLINE_REASON" />.</translation>
 <translation id="701976023053394610">Hỗ trợ từ xa</translation>
 <translation id="7038683108611689168">Giúp chúng tôi cải thiện Kết nối từ xa trên Chrome bằng cách cho phép chúng tôi thu thập số liệu thống kê sử dụng và báo cáo sự cố.</translation>
diff --git a/remoting/resources/remoting_strings_zh-CN.xtb b/remoting/resources/remoting_strings_zh-CN.xtb
index 7848fc6..4f04f0a 100644
--- a/remoting/resources/remoting_strings_zh-CN.xtb
+++ b/remoting/resources/remoting_strings_zh-CN.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">发生意外错误。请将此问题报告给开发者。</translation>
 <translation id="1619813076098775562">已断开与投射设备的连接。</translation>
 <translation id="1643640058022401035">如果您离开此页,那么您的 Chrome 远程访问会话就会结束。</translation>
-<translation id="1646994964686260497">没有可供连接的计算机。</translation>
 <translation id="1654128982815600832">正在对此计算机启用远程连接…</translation>
 <translation id="170207782578677537">无法注册此计算机。</translation>
 <translation id="1704090719919187045">Chrome 远程访问主机偏好设置</translation>
-<translation id="1738759452976856405">停止录制</translation>
 <translation id="174018511426417793">您未注册任何计算机。要启用到某台计算机的远程连接,请在该计算机上安装 Chrome 远程桌面并点击“<ph name="BUTTON_NAME" />”。</translation>
 <translation id="1742469581923031760">正在连接…</translation>
 <translation id="1770394049404108959">我无法打开此应用。</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">登录</translation>
 <translation id="3989511127559254552">要继续,您必须先为该应用授予对您的计算机的扩展访问权限(该操作只需执行一次)。</translation>
 <translation id="4006787130661126000">如果您想使用 Chrome 远程桌面来访问此计算机,就必须启用远程连接。</translation>
-<translation id="401121182145179743">您需要先为您的计算机设置远程访问。</translation>
 <translation id="4028465833180158312">• Material Design 界面更新。
 • 加入了第三方许可信息。
 • 针对离线的远程计算机显示相关信息。</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">确定</translation>
 <translation id="6985691951107243942">您确定要停用与“<ph name="HOSTNAME" />”的远程连接吗?如果您日后想要重新启用连接,需要访问该计算机。</translation>
 <translation id="6998989275928107238">指向</translation>
-<translation id="7017806586333792422">开始录制</translation>
 <translation id="7019153418965365059">无法识别的主机错误:<ph name="HOST_OFFLINE_REASON" />。</translation>
 <translation id="701976023053394610">远程协助</translation>
 <translation id="7038683108611689168">允许我们收集使用情况统计信息和崩溃报告,以帮助改进 Chrome 远程访问。</translation>
diff --git a/remoting/resources/remoting_strings_zh-TW.xtb b/remoting/resources/remoting_strings_zh-TW.xtb
index c2d9097..58a55a1 100644
--- a/remoting/resources/remoting_strings_zh-TW.xtb
+++ b/remoting/resources/remoting_strings_zh-TW.xtb
@@ -24,11 +24,9 @@
 <translation id="1546934824884762070">發生未預期的錯誤,請向開發人員回報這個問題。</translation>
 <translation id="1619813076098775562">已中斷與 Cast 裝置之間的連線。</translation>
 <translation id="1643640058022401035">如果離開這個頁面,您的 Chromoting 工作階段也會結束。</translation>
-<translation id="1646994964686260497">沒有可供連線的電腦。</translation>
 <translation id="1654128982815600832">正在啟用這台電腦的遠端連線...</translation>
 <translation id="170207782578677537">無法註冊這台電腦。</translation>
 <translation id="1704090719919187045">Chromoting 主機偏好設定</translation>
-<translation id="1738759452976856405">停止錄影</translation>
 <translation id="174018511426417793">您尚未註冊任何電腦。如要為電腦啟用遠端連線,請在電腦上安裝 Chrome 遠端桌面,然後按一下 [<ph name="BUTTON_NAME" />]。</translation>
 <translation id="1742469581923031760">連線中...</translation>
 <translation id="1770394049404108959">我無法開啟應用程式。</translation>
@@ -124,7 +122,6 @@
 <translation id="3950820424414687140">登入</translation>
 <translation id="3989511127559254552">您必須先授予電腦的延伸存取權限,才能繼續操作 (只需執行一次)。</translation>
 <translation id="4006787130661126000">您必須啟用遠端連線,才能透過 Chrome 遠端桌面存取這台電腦。</translation>
-<translation id="401121182145179743">您必須先設定電腦,才能執行遠端存取作業。</translation>
 <translation id="4028465833180158312">• Material Design 使用者介面更新。
 • 第三方授權額度。
 • 顯示離線的遠端電腦資訊。</translation>
@@ -237,7 +234,6 @@
 <translation id="6965382102122355670">確定</translation>
 <translation id="6985691951107243942">您是否確定要停用與 <ph name="HOSTNAME" /> 之間的遠端連線?如果之後改變心意的話,您必須親身前往該電腦所在位置並修改設定後,才能重新啟用連線。</translation>
 <translation id="6998989275928107238">目標電腦</translation>
-<translation id="7017806586333792422">開始錄影</translation>
 <translation id="7019153418965365059">不明主機錯誤:<ph name="HOST_OFFLINE_REASON" />。</translation>
 <translation id="701976023053394610">遠端協助</translation>
 <translation id="7038683108611689168">允許我們收集使用統計資料和當機報告,協助我們改善 Chromoting。</translation>
diff --git a/sandbox/win/BUILD.gn b/sandbox/win/BUILD.gn
index e1c296f..13e3cae5 100644
--- a/sandbox/win/BUILD.gn
+++ b/sandbox/win/BUILD.gn
@@ -239,6 +239,8 @@
     "//base/test:test_support",
     "//testing/gtest",
   ]
+
+  libs = [ "shlwapi.lib" ]
 }
 
 test("sbox_unittests") {
diff --git a/sandbox/win/sandbox_win.gypi b/sandbox/win/sandbox_win.gypi
index 62edaae..6c2770e 100644
--- a/sandbox/win/sandbox_win.gypi
+++ b/sandbox/win/sandbox_win.gypi
@@ -251,6 +251,11 @@
         'tests/validation_tests/commands.h',
         'tests/validation_tests/suite.cc',
       ],
+      'link_settings': {
+        'libraries': [
+          '-lshlwapi.lib',
+        ],
+      },
     },
     {
       'target_name': 'sbox_unittests',
diff --git a/sandbox/win/tests/validation_tests/suite.cc b/sandbox/win/tests/validation_tests/suite.cc
index 14fba74..8453021 100644
--- a/sandbox/win/tests/validation_tests/suite.cc
+++ b/sandbox/win/tests/validation_tests/suite.cc
@@ -13,8 +13,6 @@
 #include "sandbox/win/tests/common/controller.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#pragma comment(lib, "shlwapi.lib")
-
 namespace {
 
 void TestProcessAccess(sandbox::TestRunner* runner, DWORD target) {
diff --git a/sync/BUILD.gn b/sync/BUILD.gn
index a05dacf0..2946c66 100644
--- a/sync/BUILD.gn
+++ b/sync/BUILD.gn
@@ -26,6 +26,8 @@
     "api/attachments/attachment_store.h",
     "api/attachments/attachment_store_backend.cc",
     "api/attachments/attachment_store_backend.h",
+    "api/conflict_resolution.cc",
+    "api/conflict_resolution.h",
     "api/data_batch.h",
     "api/entity_change.cc",
     "api/entity_change.h",
diff --git a/sync/api/conflict_resolution.cc b/sync/api/conflict_resolution.cc
new file mode 100644
index 0000000..5ace438
--- /dev/null
+++ b/sync/api/conflict_resolution.cc
@@ -0,0 +1,39 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sync/api/conflict_resolution.h"
+
+namespace syncer_v2 {
+
+// static
+ConflictResolution ConflictResolution::UseLocal() {
+  return ConflictResolution(USE_LOCAL, nullptr);
+}
+
+// static
+ConflictResolution ConflictResolution::UseRemote() {
+  return ConflictResolution(USE_REMOTE, nullptr);
+}
+
+// static
+ConflictResolution ConflictResolution::UseNew(scoped_ptr<EntityData> data) {
+  DCHECK(data);
+  return ConflictResolution(USE_NEW, std::move(data));
+}
+
+ConflictResolution::ConflictResolution(ConflictResolution&& other)
+    : ConflictResolution(other.type(), other.ExtractData()) {}
+
+ConflictResolution::~ConflictResolution() {}
+
+scoped_ptr<EntityData> ConflictResolution::ExtractData() {
+  // Has data if and only if type is USE_NEW.
+  DCHECK((type_ == USE_NEW) == !!data_);
+  return std::move(data_);
+};
+
+ConflictResolution::ConflictResolution(Type type, scoped_ptr<EntityData> data)
+    : type_(type), data_(std::move(data)) {}
+
+}  // namespace syncer_v2
diff --git a/sync/api/conflict_resolution.h b/sync/api/conflict_resolution.h
new file mode 100644
index 0000000..929d3e6
--- /dev/null
+++ b/sync/api/conflict_resolution.h
@@ -0,0 +1,54 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYNC_API_CONFLICT_RESOLUTION_H_
+#define SYNC_API_CONFLICT_RESOLUTION_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "sync/api/entity_data.h"
+
+namespace syncer_v2 {
+
+// A simple class to represent the resolution of a data conflict. We either:
+// 1) Use the local client data and update the server.
+// 2) Use the remote server data and update the client.
+// 3) Use newly created data and update both.
+class SYNC_EXPORT ConflictResolution {
+ public:
+  // This enum is used in histograms.xml and entries shouldn't be renumbered or
+  // removed. New entries must be added at the end, before TYPE_SIZE.
+  enum Type {
+    CHANGES_MATCH,  // Exists for logging purposes.
+    USE_LOCAL,
+    USE_REMOTE,
+    USE_NEW,
+    TYPE_SIZE,
+  };
+
+  // Convenience functions for brevity.
+  static ConflictResolution UseLocal();
+  static ConflictResolution UseRemote();
+  static ConflictResolution UseNew(scoped_ptr<EntityData> data);
+
+  // Move constructor since we can't copy a scoped_ptr.
+  ConflictResolution(ConflictResolution&& other);
+  ~ConflictResolution();
+
+  Type type() const { return type_; }
+
+  // Get the data for USE_NEW, or nullptr. Can only be called once.
+  scoped_ptr<EntityData> ExtractData();
+
+ private:
+  ConflictResolution(Type type, scoped_ptr<EntityData> data);
+
+  const Type type_;
+  scoped_ptr<EntityData> data_;
+
+  DISALLOW_COPY_AND_ASSIGN(ConflictResolution);
+};
+
+}  // namespace syncer_v2
+
+#endif  // SYNC_API_CONFLICT_RESOLUTION_H_
diff --git a/sync/api/model_type_service.cc b/sync/api/model_type_service.cc
index eeb458cd8..e2d25f0 100644
--- a/sync/api/model_type_service.cc
+++ b/sync/api/model_type_service.cc
@@ -15,6 +15,17 @@
 
 ModelTypeService::~ModelTypeService() {}
 
+ConflictResolution ModelTypeService::ResolveConflict(
+    const EntityData& local_data,
+    const EntityData& remote_data) const {
+  // TODO(maxbogue): Add tests once a file exists for them (crbug.com/543407).
+  if (remote_data.is_deleted()) {
+    DCHECK(!local_data.is_deleted());
+    return ConflictResolution::UseLocal();
+  }
+  return ConflictResolution::UseRemote();
+}
+
 ModelTypeChangeProcessor* ModelTypeService::change_processor() const {
   return change_processor_.get();
 }
diff --git a/sync/api/model_type_service.h b/sync/api/model_type_service.h
index 6cd39583..9873f629 100644
--- a/sync/api/model_type_service.h
+++ b/sync/api/model_type_service.h
@@ -10,6 +10,7 @@
 
 #include "base/callback.h"
 #include "base/memory/scoped_ptr.h"
+#include "sync/api/conflict_resolution.h"
 #include "sync/api/entity_change.h"
 #include "sync/api/entity_data.h"
 #include "sync/api/model_type_change_processor.h"
@@ -84,6 +85,13 @@
   // it to the processor.
   virtual void OnChangeProcessorSet() = 0;
 
+  // Resolve a conflict between the client and server versions of data. They are
+  // guaranteed not to match (both be deleted or have identical specifics). A
+  // default implementation chooses the server data unless it is a deletion.
+  virtual ConflictResolution ResolveConflict(
+      const EntityData& local_data,
+      const EntityData& remote_data) const;
+
   void clear_change_processor();
 
   void OnSyncStarting(const ModelTypeChangeProcessor::StartCallback& callback);
diff --git a/sync/internal_api/processor_entity_tracker.cc b/sync/internal_api/processor_entity_tracker.cc
index faa3d46..56b3562 100644
--- a/sync/internal_api/processor_entity_tracker.cc
+++ b/sync/internal_api/processor_entity_tracker.cc
@@ -64,6 +64,7 @@
 
 void ProcessorEntityTracker::CacheCommitData(EntityData* data) {
   DCHECK(RequiresCommitRequest());
+  DCHECK(data);
   if (data->client_tag_hash.empty()) {
     data->client_tag_hash = metadata_.client_tag_hash();
   }
@@ -83,6 +84,11 @@
   return hash == metadata_.specifics_hash();
 }
 
+bool ProcessorEntityTracker::MatchesData(const EntityData& data) const {
+  return (data.is_deleted() && metadata_.is_deleted()) ||
+         MatchesSpecificsHash(data.specifics);
+}
+
 bool ProcessorEntityTracker::IsUnsynced() const {
   return metadata_.sequence_number() > metadata_.acked_sequence_number();
 }
@@ -103,37 +109,43 @@
   return metadata_.server_version() >= update_version;
 }
 
-bool ProcessorEntityTracker::UpdateIsInConflict(int64_t update_version) const {
-  return IsUnsynced() && !UpdateIsReflection(update_version);
+void ProcessorEntityTracker::RecordIgnoredUpdate(
+    const UpdateResponseData& update) {
+  metadata_.set_server_version(update.response_version);
+  // TODO(maxbogue): Understand and fix encryption (crbug.com/561814).
+  encryption_key_name_ = update.encryption_key_name;
+  // Either these already matched, acked was just bumped to squash a pending
+  // commit and this should follow, or the pending commit needs to be requeued.
+  commit_requested_sequence_number_ = metadata_.acked_sequence_number();
 }
 
-void ProcessorEntityTracker::ApplyUpdateFromServer(
-    const UpdateResponseData& response_data) {
-  DCHECK(metadata_.has_client_tag_hash());
-  DCHECK(!metadata_.client_tag_hash().empty());
-  DCHECK(metadata_.has_sequence_number());
-
-  // TODO(stanisc): crbug/521867: Understand and verify the conflict resolution
-  // logic here.
-  // There was a conflict and the server just won it.
-  // This implicitly acks all outstanding commits because a received update
-  // will clobber any pending commits on the sync thread.
-  metadata_.set_acked_sequence_number(metadata_.sequence_number());
-  commit_requested_sequence_number_ = metadata_.sequence_number();
-
-  metadata_.set_is_deleted(response_data.entity->is_deleted());
-  metadata_.set_server_version(response_data.response_version);
+void ProcessorEntityTracker::RecordAcceptedUpdate(
+    const UpdateResponseData& update) {
+  DCHECK(!IsUnsynced());
+  RecordIgnoredUpdate(update);
+  metadata_.set_is_deleted(update.entity->is_deleted());
   metadata_.set_modification_time(
-      syncer::TimeToProtoTime(response_data.entity->modification_time));
-  UpdateSpecificsHash(response_data.entity->specifics);
+      syncer::TimeToProtoTime(update.entity->modification_time));
+  UpdateSpecificsHash(update.entity->specifics);
+}
 
-  encryption_key_name_ = response_data.encryption_key_name;
+void ProcessorEntityTracker::RecordForcedUpdate(
+    const UpdateResponseData& update) {
+  DCHECK(IsUnsynced());
+  // There was a conflict and the server just won it. Explicitly ack all
+  // pending commits so they are never enqueued again.
+  metadata_.set_acked_sequence_number(metadata_.sequence_number());
+  commit_data_.reset();
+  RecordAcceptedUpdate(update);
 }
 
 void ProcessorEntityTracker::MakeLocalChange(scoped_ptr<EntityData> data) {
   DCHECK(!metadata_.client_tag_hash().empty());
   DCHECK_EQ(metadata_.client_tag_hash(), data->client_tag_hash);
-  DCHECK(!data->modification_time.is_null());
+
+  if (data->modification_time.is_null()) {
+    data->modification_time = base::Time::Now();
+  }
 
   metadata_.set_modification_time(
       syncer::TimeToProtoTime(data->modification_time));
@@ -200,6 +212,11 @@
   metadata_.set_acked_sequence_number(sequence_number);
   metadata_.set_server_version(response_version);
   encryption_key_name_ = encryption_key_name;
+  if (!IsUnsynced()) {
+    // Clear pending commit data if there hasn't been another commit request
+    // since the one that is currently getting acked.
+    commit_data_.reset();
+  }
 }
 
 void ProcessorEntityTracker::ClearTransientSyncState() {
diff --git a/sync/internal_api/processor_entity_tracker_unittest.cc b/sync/internal_api/processor_entity_tracker_unittest.cc
index 0ccbea6..e2df8d4 100644
--- a/sync/internal_api/processor_entity_tracker_unittest.cc
+++ b/sync/internal_api/processor_entity_tracker_unittest.cc
@@ -76,20 +76,20 @@
       int64_t version,
       const sync_pb::EntitySpecifics& specifics) {
     scoped_ptr<ProcessorEntityTracker> entity(NewServerItem());
-    ApplyUpdateFromServer(entity.get(), version, specifics);
+    RecordAcceptedUpdate(entity.get(), version, specifics);
     return entity;
   }
 
-  void ApplyUpdateFromServer(ProcessorEntityTracker* entity,
-                             int64_t version,
-                             const sync_pb::EntitySpecifics& specifics) {
-    ApplyUpdateFromServer(entity, version, specifics, kMtime);
+  void RecordAcceptedUpdate(ProcessorEntityTracker* entity,
+                            int64_t version,
+                            const sync_pb::EntitySpecifics& specifics) {
+    RecordAcceptedUpdate(entity, version, specifics, kMtime);
   }
 
-  void ApplyUpdateFromServer(ProcessorEntityTracker* entity,
-                             int64_t version,
-                             const sync_pb::EntitySpecifics& specifics,
-                             base::Time mtime) {
+  void RecordAcceptedUpdate(ProcessorEntityTracker* entity,
+                            int64_t version,
+                            const sync_pb::EntitySpecifics& specifics,
+                            base::Time mtime) {
     EntityData data;
     data.id = entity->metadata().server_id();
     data.client_tag_hash = entity->metadata().client_tag_hash();
@@ -100,7 +100,7 @@
     response_data.response_version = version;
     response_data.entity = data.PassToPtr();
 
-    entity->ApplyUpdateFromServer(response_data);
+    entity->RecordAcceptedUpdate(response_data);
   }
 
   bool HasSpecificsHash(
@@ -127,17 +127,23 @@
 
   EXPECT_FALSE(entity->IsUnsynced());
   EXPECT_FALSE(entity->UpdateIsReflection(1));
-  EXPECT_FALSE(entity->UpdateIsInConflict(1));
 }
 
 TEST_F(ProcessorEntityTrackerTest, NewLocalItem) {
   scoped_ptr<ProcessorEntityTracker> entity(NewLocalItem("asdf", specifics));
 
+  EXPECT_EQ(1, entity->metadata().sequence_number());
   EXPECT_TRUE(entity->HasCommitData());
   EXPECT_TRUE(HasSpecificsHash(entity));
   EXPECT_TRUE(entity->IsUnsynced());
   EXPECT_FALSE(entity->UpdateIsReflection(1));
-  EXPECT_TRUE(entity->UpdateIsInConflict(1));
+
+  entity->ReceiveCommitResponse("id", 1, 1, "");
+
+  EXPECT_FALSE(entity->HasCommitData());
+  EXPECT_TRUE(HasSpecificsHash(entity));
+  EXPECT_FALSE(entity->IsUnsynced());
+  EXPECT_TRUE(entity->UpdateIsReflection(1));
 }
 
 TEST_F(ProcessorEntityTrackerTest, FromServerUpdate) {
@@ -147,17 +153,15 @@
   EXPECT_EQ(entity->metadata().client_tag_hash(), kClientTagHash);
   EXPECT_FALSE(HasSpecificsHash(entity));
 
-  ApplyUpdateFromServer(entity.get(), 10, specifics);
+  RecordAcceptedUpdate(entity.get(), 10, specifics);
 
   // No data cached but the specifics hash should be updated.
   EXPECT_FALSE(entity->HasCommitData());
   EXPECT_TRUE(HasSpecificsHash(entity));
-
   EXPECT_FALSE(entity->IsUnsynced());
   EXPECT_TRUE(entity->UpdateIsReflection(9));
   EXPECT_TRUE(entity->UpdateIsReflection(10));
   EXPECT_FALSE(entity->UpdateIsReflection(11));
-  EXPECT_FALSE(entity->UpdateIsInConflict(11));
 }
 
 // Tombstones should behave just like regular updates.  Mostly.  The strangest
@@ -172,12 +176,10 @@
   EXPECT_EQ(kClientTagHash, entity->metadata().client_tag_hash());
   EXPECT_FALSE(entity->HasCommitData());
   EXPECT_FALSE(HasSpecificsHash(entity));
-
   EXPECT_FALSE(entity->IsUnsynced());
   EXPECT_TRUE(entity->UpdateIsReflection(9));
   EXPECT_TRUE(entity->UpdateIsReflection(10));
   EXPECT_FALSE(entity->UpdateIsReflection(11));
-  EXPECT_FALSE(entity->UpdateIsInConflict(11));
 }
 
 // Apply a deletion update.
@@ -188,11 +190,10 @@
   EXPECT_TRUE(HasSpecificsHash(entity));
 
   // A deletion update one version later.
-  ApplyUpdateFromServer(entity.get(), 11, sync_pb::EntitySpecifics(),
-                        kMtime + base::TimeDelta::FromSeconds(10));
+  RecordAcceptedUpdate(entity.get(), 11, sync_pb::EntitySpecifics(),
+                       kMtime + base::TimeDelta::FromSeconds(10));
 
   EXPECT_FALSE(HasSpecificsHash(entity));
-
   EXPECT_FALSE(entity->IsUnsynced());
   EXPECT_TRUE(entity->UpdateIsReflection(11));
   EXPECT_FALSE(entity->UpdateIsReflection(12));
@@ -208,18 +209,13 @@
   sync_pb::EntitySpecifics specifics2;
   specifics2.CopyFrom(specifics);
   specifics2.mutable_preference()->set_value("new.pref.value");
-
   MakeLocalChange(entity.get(), specifics2);
-  EXPECT_NE(entity->metadata().specifics_hash(), specifics_hash);
 
+  EXPECT_NE(entity->metadata().specifics_hash(), specifics_hash);
   EXPECT_TRUE(entity->HasCommitData());
   EXPECT_TRUE(entity->IsUnsynced());
-
   EXPECT_TRUE(entity->UpdateIsReflection(10));
-  EXPECT_FALSE(entity->UpdateIsInConflict(10));
-
   EXPECT_FALSE(entity->UpdateIsReflection(11));
-  EXPECT_TRUE(entity->UpdateIsInConflict(11));
 }
 
 TEST_F(ProcessorEntityTrackerTest, LocalDeletion) {
@@ -229,17 +225,13 @@
 
   // Make a local delete.
   entity->Delete();
-  EXPECT_FALSE(HasSpecificsHash(entity));
 
+  EXPECT_FALSE(HasSpecificsHash(entity));
   EXPECT_FALSE(entity->HasCommitData());
   EXPECT_FALSE(entity->RequiresCommitData());
   EXPECT_TRUE(entity->IsUnsynced());
-
   EXPECT_TRUE(entity->UpdateIsReflection(10));
-  EXPECT_FALSE(entity->UpdateIsInConflict(10));
-
   EXPECT_FALSE(entity->UpdateIsReflection(11));
-  EXPECT_TRUE(entity->UpdateIsInConflict(11));
 }
 
 // Verify generation of CommitRequestData from ProcessorEntityTracker.
diff --git a/sync/internal_api/public/processor_entity_tracker.h b/sync/internal_api/public/processor_entity_tracker.h
index 4920ac9..de3e2c2 100644
--- a/sync/internal_api/public/processor_entity_tracker.h
+++ b/sync/internal_api/public/processor_entity_tracker.h
@@ -40,11 +40,9 @@
 
   ~ProcessorEntityTracker();
 
-  // Returns entity's client tag.
   const std::string& client_tag() const { return client_tag_; }
-
-  // Returns entity's metadata.
   const sync_pb::EntityMetadata& metadata() const { return metadata_; }
+  const EntityDataPtr& commit_data() const { return commit_data_; }
 
   // Returns true if this data is out of sync with the server.
   // A commit may or may not be in progress at this time.
@@ -69,14 +67,15 @@
   // Returns true if the specified update version does not contain new data.
   bool UpdateIsReflection(int64_t update_version) const;
 
-  // Returns true if the specified update version conflicts with local changes.
-  bool UpdateIsInConflict(int64_t update_version) const;
+  // Records that an update from the server was received but ignores its data.
+  void RecordIgnoredUpdate(const UpdateResponseData& response_data);
 
-  // Applies an update from the sync server.
-  //
-  // Overrides any local changes.  Check UpdateIsInConflict() before calling
-  // this function if you want to handle conflicts differently.
-  void ApplyUpdateFromServer(const UpdateResponseData& response_data);
+  // Records an update from the server assuming its data is the new data for
+  // this entity.
+  void RecordAcceptedUpdate(const UpdateResponseData& response_data);
+
+  // Squashes a pending commit with an update from the server.
+  void RecordForcedUpdate(const UpdateResponseData& response_data);
 
   // Applies a local change to this item.
   void MakeLocalChange(scoped_ptr<EntityData> data);
@@ -119,6 +118,9 @@
   // Check whether |specifics| matches the stored specifics_hash.
   bool MatchesSpecificsHash(const sync_pb::EntitySpecifics& specifics) const;
 
+  // Check whether |data| matches the stored metadata.
+  bool MatchesData(const EntityData& data) const;
+
  private:
   friend class ProcessorEntityTrackerTest;
 
diff --git a/sync/internal_api/public/shared_model_type_processor.h b/sync/internal_api/public/shared_model_type_processor.h
index 94e30ff..49c3b55bc 100644
--- a/sync/internal_api/public/shared_model_type_processor.h
+++ b/sync/internal_api/public/shared_model_type_processor.h
@@ -86,6 +86,11 @@
   // Check conditions, and if met inform sync that we are ready to connect.
   void ConnectIfReady();
 
+  // Resolve a conflict between |update| and the pending commit in |entity|.
+  ConflictResolution::Type ResolveConflict(const UpdateResponseData& update,
+                                           ProcessorEntityTracker* entity,
+                                           EntityChangeList* changes);
+
   // Handle the first update received from the server after being enabled.
   void OnInitialUpdateReceived(const sync_pb::DataTypeState& type_state,
                                const UpdateResponseDataList& updates);
diff --git a/sync/internal_api/shared_model_type_processor.cc b/sync/internal_api/shared_model_type_processor.cc
index b193375..f1e835b 100644
--- a/sync/internal_api/shared_model_type_processor.cc
+++ b/sync/internal_api/shared_model_type_processor.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/location.h"
+#include "base/metrics/histogram.h"
 #include "base/thread_task_runner_handle.h"
 #include "sync/engine/commit_queue.h"
 #include "sync/internal_api/public/activation_context.h"
@@ -382,20 +383,33 @@
       entity = CreateEntity(data);
       entity_changes.push_back(
           EntityChange::CreateAdd(entity->client_tag(), update.entity));
+      entity->RecordAcceptedUpdate(update);
     } else if (entity->UpdateIsReflection(update.response_version)) {
       // Seen this update before; just ignore it.
       continue;
+    } else if (entity->IsUnsynced()) {
+      ConflictResolution::Type resolution_type =
+          ResolveConflict(update, entity, &entity_changes);
+      UMA_HISTOGRAM_ENUMERATION("Sync.ResolveConflict", resolution_type,
+                                ConflictResolution::TYPE_SIZE);
     } else if (data.is_deleted()) {
+      // The entity was deleted; inform the service. Note that the local data
+      // can never be deleted at this point because it would have either been
+      // acked (the add case) or pending (the conflict case).
+      DCHECK(!entity->metadata().is_deleted());
       entity_changes.push_back(
           EntityChange::CreateDelete(entity->client_tag()));
+      entity->RecordAcceptedUpdate(update);
     } else if (!entity->MatchesSpecificsHash(data.specifics)) {
       // Specifics have changed, so update the service.
       entity_changes.push_back(
           EntityChange::CreateUpdate(entity->client_tag(), update.entity));
+      entity->RecordAcceptedUpdate(update);
+    } else {
+      // No data change; still record that the update was received.
+      entity->RecordAcceptedUpdate(update);
     }
 
-    entity->ApplyUpdateFromServer(update);
-
     // If the received entity has out of date encryption, we schedule another
     // commit to fix it.
     if (data_type_state_.encryption_key_name() != update.encryption_key_name) {
@@ -432,6 +446,55 @@
   FlushPendingCommitRequests();
 }
 
+ConflictResolution::Type SharedModelTypeProcessor::ResolveConflict(
+    const UpdateResponseData& update,
+    ProcessorEntityTracker* entity,
+    EntityChangeList* changes) {
+  // There is a pending commit in conflict with the update.
+  // For now we require that pending commit data be loaded in this
+  // situation. This may be relaxed in the future if necessary.
+  DCHECK(!entity->RequiresCommitData());
+  const EntityData& data = update.entity.value();
+
+  if (entity->MatchesData(data)) {
+    // Record the update and squash the pending commit.
+    entity->RecordForcedUpdate(update);
+    return ConflictResolution::CHANGES_MATCH;
+  }
+
+  // There's a real data conflict here; let the service resolve it.
+  ConflictResolution resolution =
+      service_->ResolveConflict(entity->commit_data().value(), data);
+  switch (resolution.type()) {
+    case ConflictResolution::USE_LOCAL:
+      // Record that we received the update from the server but leave the
+      // pending commit intact.
+      entity->RecordIgnoredUpdate(update);
+      break;
+    case ConflictResolution::USE_REMOTE:
+      // Squash the pending commit.
+      entity->RecordForcedUpdate(update);
+      // Update client data to match server.
+      changes->push_back(
+          EntityChange::CreateUpdate(entity->client_tag(), update.entity));
+      break;
+    case ConflictResolution::USE_NEW:
+      // Record that we received the update.
+      entity->RecordIgnoredUpdate(update);
+      // Make a new pending commit to update the server.
+      entity->MakeLocalChange(resolution.ExtractData());
+      // Update the client with the new entity.
+      changes->push_back(EntityChange::CreateUpdate(entity->client_tag(),
+                                                    entity->commit_data()));
+      break;
+    case ConflictResolution::CHANGES_MATCH:
+    case ConflictResolution::TYPE_SIZE:
+      NOTREACHED();
+      break;
+  }
+  return resolution.type();
+}
+
 void SharedModelTypeProcessor::OnInitialUpdateReceived(
     const sync_pb::DataTypeState& data_type_state,
     const UpdateResponseDataList& updates) {
@@ -451,7 +514,7 @@
   for (const UpdateResponseData& update : updates) {
     ProcessorEntityTracker* entity = CreateEntity(update.entity.value());
     const std::string& tag = entity->client_tag();
-    entity->ApplyUpdateFromServer(update);
+    entity->RecordAcceptedUpdate(update);
     metadata_changes->UpdateMetadata(tag, entity->metadata());
     data_map[tag] = update.entity;
   }
diff --git a/sync/internal_api/shared_model_type_processor_unittest.cc b/sync/internal_api/shared_model_type_processor_unittest.cc
index a60d6d68..c728cb0 100644
--- a/sync/internal_api/shared_model_type_processor_unittest.cc
+++ b/sync/internal_api/shared_model_type_processor_unittest.cc
@@ -39,6 +39,27 @@
 const std::string kValue2 = "value2";
 const std::string kValue3 = "value3";
 
+std::string GenerateTagHash(const std::string& tag) {
+  return syncer::syncable::GenerateSyncableHash(kModelType, tag);
+}
+
+sync_pb::EntitySpecifics GenerateSpecifics(const std::string& tag,
+                                           const std::string& value) {
+  sync_pb::EntitySpecifics specifics;
+  specifics.mutable_preference()->set_name(tag);
+  specifics.mutable_preference()->set_value(value);
+  return specifics;
+}
+
+scoped_ptr<EntityData> GenerateEntityData(const std::string& tag,
+                                          const std::string& value) {
+  scoped_ptr<EntityData> entity_data = make_scoped_ptr(new EntityData());
+  entity_data->client_tag_hash = GenerateTagHash(tag);
+  entity_data->specifics = GenerateSpecifics(tag, value);
+  entity_data->non_unique_name = tag;
+  return entity_data;
+}
+
 // It is intentionally very difficult to copy an EntityData, as in normal code
 // we never want to. However, since we store the data as an EntityData for the
 // test code here, this function is needed to manually copy it.
@@ -95,6 +116,10 @@
     return *data_store_.find(tag)->second;
   }
 
+  const std::string& GetValue(const std::string& tag) const {
+    return GetData(tag).specifics.preference().value();
+  }
+
   const sync_pb::EntityMetadata& GetMetadata(const std::string& tag) const {
     return metadata_store_.find(tag)->second;
   }
@@ -393,6 +418,12 @@
     }
   }
 
+  // Store a resolution for the next call to ResolveConflict. Note that if this
+  // is a USE_NEW resolution, the data will only exist for one resolve call.
+  void SetConflictResolution(ConflictResolution resolution) {
+    conflict_resolution_.reset(new ConflictResolution(std::move(resolution)));
+  }
+
   const SimpleStore& db() const { return db_; }
 
   MockCommitQueue* mock_queue() { return mock_queue_; }
@@ -409,40 +440,6 @@
   }
 
  private:
-  static std::string GenerateTagHash(const std::string& tag) {
-    return syncer::syncable::GenerateSyncableHash(kModelType, tag);
-  }
-
-  static sync_pb::EntitySpecifics GenerateSpecifics(const std::string& tag,
-                                                    const std::string& value) {
-    sync_pb::EntitySpecifics specifics;
-    specifics.mutable_preference()->set_name(tag);
-    specifics.mutable_preference()->set_value(value);
-    return specifics;
-  }
-
-  // These tests never decrypt anything, so we can get away with faking the
-  // encryption for now.
-  static sync_pb::EntitySpecifics GenerateEncryptedSpecifics(
-      const std::string& tag,
-      const std::string& value,
-      const std::string& key_name) {
-    sync_pb::EntitySpecifics specifics;
-    syncer::AddDefaultFieldValue(kModelType, &specifics);
-    specifics.mutable_encrypted()->set_key_name(key_name);
-    specifics.mutable_encrypted()->set_blob("BLOB" + key_name);
-    return specifics;
-  }
-
-  static scoped_ptr<EntityData> GenerateEntityData(const std::string& tag,
-                                                   const std::string& value) {
-    scoped_ptr<EntityData> entity_data = make_scoped_ptr(new EntityData());
-    entity_data->client_tag_hash = GenerateTagHash(tag);
-    entity_data->specifics = GenerateSpecifics(tag, value);
-    entity_data->non_unique_name = tag;
-    return entity_data;
-  }
-
   void OnReadyToConnect(syncer::SyncError error,
                         scoped_ptr<ActivationContext> context) {
     scoped_ptr<MockCommitQueue> commit_queue(new MockCommitQueue());
@@ -546,6 +543,15 @@
         base::Bind(callback, syncer::SyncError(), base::Passed(&batch));
   }
 
+  ConflictResolution ResolveConflict(
+      const EntityData& local_data,
+      const EntityData& remote_data) const override {
+    DCHECK(conflict_resolution_);
+    return std::move(*conflict_resolution_);
+  }
+
+  scoped_ptr<ConflictResolution> conflict_resolution_;
+
   // This sets ThreadTaskRunnerHandle on the current thread, which the type
   // processor will pick up as the sync task runner.
   base::MessageLoop sync_loop_;
@@ -1165,6 +1171,69 @@
   EXPECT_EQ(kUncommittedVersion, metadata2.server_version());
 }
 
+TEST_F(SharedModelTypeProcessorTest, ConflictResolutionChangesMatch) {
+  InitializeToReadyState();
+  WriteItem(kTag1, kValue1);
+  EXPECT_EQ(1U, db().DataChangeCount());
+  EXPECT_EQ(kValue1, db().GetValue(kTag1));
+  EXPECT_EQ(1U, db().MetadataChangeCount());
+  EXPECT_EQ(kUncommittedVersion, db().GetMetadata(kTag1).server_version());
+  ExpectCommitRequests({kTag1});
+  ExpectNthCommitRequestList(0, kTag1, kValue1);
+
+  // Changes match doesn't call ResolveConflict.
+  UpdateFromServer(5, kTag1, kValue1);
+
+  // Updated metadata but not data; no new commit request.
+  EXPECT_EQ(1U, db().DataChangeCount());
+  EXPECT_EQ(5, db().GetMetadata(kTag1).server_version());
+  ExpectCommitRequests({kTag1});
+}
+
+TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseLocal) {
+  InitializeToReadyState();
+  WriteItem(kTag1, kValue1);
+  SetConflictResolution(ConflictResolution::UseLocal());
+
+  UpdateFromServer(5, kTag1, kValue2);
+
+  // Updated metadata but not data; new commit request.
+  EXPECT_EQ(1U, db().DataChangeCount());
+  EXPECT_EQ(2U, db().MetadataChangeCount());
+  EXPECT_EQ(5, db().GetMetadata(kTag1).server_version());
+  ExpectCommitRequests({kTag1, kTag1});
+  ExpectNthCommitRequestList(1, kTag1, kValue1);
+}
+
+TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseRemote) {
+  InitializeToReadyState();
+  WriteItem(kTag1, kValue1);
+  SetConflictResolution(ConflictResolution::UseRemote());
+  UpdateFromServer(5, kTag1, kValue2);
+
+  // Updated client data and metadata; no new commit request.
+  EXPECT_EQ(2U, db().DataChangeCount());
+  EXPECT_EQ(kValue2, db().GetValue(kTag1));
+  EXPECT_EQ(2U, db().MetadataChangeCount());
+  EXPECT_EQ(5, db().GetMetadata(kTag1).server_version());
+  ExpectCommitRequests({kTag1});
+}
+
+TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseNew) {
+  InitializeToReadyState();
+  WriteItem(kTag1, kValue1);
+  SetConflictResolution(
+      ConflictResolution::UseNew(GenerateEntityData(kTag1, kValue3)));
+
+  UpdateFromServer(5, kTag1, kValue2);
+  EXPECT_EQ(2U, db().DataChangeCount());
+  EXPECT_EQ(kValue3, db().GetValue(kTag1));
+  EXPECT_EQ(2U, db().MetadataChangeCount());
+  EXPECT_EQ(5, db().GetMetadata(kTag1).server_version());
+  ExpectCommitRequests({kTag1, kTag1});
+  ExpectNthCommitRequestList(1, kTag1, kValue3);
+}
+
 // Test proper handling of disconnect and reconnect.
 //
 // Creates items in various states of commit and verifies they re-attempt to
@@ -1231,7 +1300,7 @@
 }
 
 // Test re-encrypt everything when desired encryption key changes.
-TEST_F(SharedModelTypeProcessorTest, ReEncryptCommitsWithNewKey) {
+TEST_F(SharedModelTypeProcessorTest, DISABLED_ReEncryptCommitsWithNewKey) {
   InitializeToReadyState();
 
   // Commit an item.
diff --git a/sync/sync.gyp b/sync/sync.gyp
index b129936..2b8383c 100644
--- a/sync/sync.gyp
+++ b/sync/sync.gyp
@@ -78,6 +78,8 @@
         'api/attachments/attachment_store.h',
         'api/attachments/attachment_store_backend.cc',
         'api/attachments/attachment_store_backend.h',
+        'api/conflict_resolution.cc',
+        'api/conflict_resolution.h',
         'api/data_batch.h',
         'api/entity_change.cc',
         'api/entity_change.h',
diff --git a/third_party/WebKit/LayoutTests/LeakExpectations b/third_party/WebKit/LayoutTests/LeakExpectations
index 8fcc89b..c89e01615 100644
--- a/third_party/WebKit/LayoutTests/LeakExpectations
+++ b/third_party/WebKit/LayoutTests/LeakExpectations
@@ -156,3 +156,19 @@
 crbug.com/594309 [ Linux ] imported/csswg-test/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-16.html [ Leak ]
 crbug.com/594309 [ Linux ] imported/csswg-test/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-17.html [ Leak ]
 crbug.com/594309 [ Linux ] imported/csswg-test/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-18.html [ Leak ]
+
+
+# -----------------------------------------------------------------
+# Leaks in ScriptedIdleTaskController
+# See LayoutTests/intersection-observer/README for details.
+# -----------------------------------------------------------------
+crbug.com/595155 http/tests/intersection-observer/iframe-cross-origin.html [ Leak ]
+crbug.com/595155 intersection-observer/containing-block.html [ Leak ]
+crbug.com/595155 intersection-observer/iframe-no-root.html [ Leak ]
+crbug.com/595155 intersection-observer/multiple-thresholds.html [ Leak ]
+crbug.com/595155 intersection-observer/observer-without-js-reference.html [ Leak ]
+crbug.com/595155 intersection-observer/root-margin.html [ Leak ]
+crbug.com/595155 intersection-observer/same-document-no-root.html [ Leak ]
+crbug.com/595155 intersection-observer/same-document-root.html [ Leak ]
+crbug.com/595155 intersection-observer/same-document-zero-size-target.html [ Leak ]
+crbug.com/595155 intersection-observer/timestamp.html [ Leak ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 81c87776..57cfbf3 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -889,6 +889,7 @@
 
 crbug.com/574283 [ Mac ] virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html [ Skip ]
 crbug.com/587165 [ Win7 Debug ] virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html [ Pass Failure ]
+crbug.com/587165 [ Linux Debug ] virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html [ Pass Failure ]
 
 # When drawing subpixel smoothed glyphs, CoreGraphics will fake bold the glyphs.
 # In this configuration, the pixel smoothed glyphs will be created from subpixel smoothed glyphs.
@@ -1314,11 +1315,6 @@
 
 crbug.com/588103 fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer.html [ Pass Failure ]
 
-crbug.com/599933 css3/filters/effect-reference-hw.html [ NeedsRebaseline ]
-crbug.com/599933 css3/filters/effect-reference-colorspace-hw.html [ NeedsRebaseline ]
-crbug.com/599933 css3/filters/effect-reference-ordering-hw.html [ NeedsRebaseline ]
-crbug.com/599933 css3/filters/effect-reference-zoom-hw.html [ NeedsRebaseline ]
-
 crbug.com/594672 fast/events/iframe-object-onload.html [ Failure Pass ]
 crbug.com/594672 fast/events/scale-and-scroll-iframe-body.html [ Failure Pass ]
 crbug.com/594672 fast/events/updateLayoutForHitTest.html [ Failure Pass ]
@@ -1339,9 +1335,7 @@
 crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/layer-creation/compositing-reason-removed.html [ Failure ]
 crbug.com/591832 [ Mac10.11 Retina ] compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html [ Failure ]
 crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/overflow/fixed-scroll-in-empty-root-layer.html [ Failure ]
-crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/overflow/text-color-change.html [ Failure ]
 crbug.com/591832 [ Mac10.11 Retina ] compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Failure ]
-crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/overflow/updating-scrolling-container-and-content.html [ Failure ]
 crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/overflow/updating-scrolling-container.html [ Failure ]
 crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/squashing/invalidate-when-leaving-squashed-layer.html [ Failure ]
 crbug.com/591832 [ Mac10.10 Mac10.11 Retina ] compositing/squashing/invalidation-for-subpixel-offset-of-squashed-layer.html [ Failure ]
@@ -1367,3 +1361,5 @@
 crbug.com/453002 [ Win ] fast/text/orientation-sideways.html [ Failure Pass ]
 
 crbug.com/599662 inspector/sources/debugger-ui/debugger-save-to-temp-var.html [ Failure Crash ]
+
+crbug.com/587737 [ Mac10.11 Retina ] virtual/gpu-rasterization/fast/images/color-profile-filter.html [ Timeout Failure ]
diff --git a/third_party/WebKit/LayoutTests/bluetooth/connect.html b/third_party/WebKit/LayoutTests/bluetooth/connect.html
index f69ff8f..cf39934 100644
--- a/third_party/WebKit/LayoutTests/bluetooth/connect.html
+++ b/third_party/WebKit/LayoutTests/bluetooth/connect.html
@@ -124,34 +124,6 @@
   }, testSpec.testName);
 });
 
-// TODO(ortuno): Allow connections when the tab is in the background.
-// This is a short term solution instead of implementing a tab indicator
-// for bluetooth connections.
-// https://crbug.com/579746
-promise_test(() => {
-  return setBluetoothFakeAdapter('HeartRateAdapter')
-    .then(() => requestDeviceWithKeyDown({
-      filters: [{services: ['heart_rate']}]}))
-    .then(device => {
-      testRunner.setPageVisibility('hidden');
-      return assert_promise_rejects_with_message(
-        device.gatt.connect(),
-        new DOMException('Connection is only allowed while the page is visible. ' +
-                         'This is a temporary measure until we are able to ' +
-                         'effectively communicate to the user that a page is ' +
-                         'connected to a device.',
-                         'SecurityError'))
-       .then(() => {
-         assert_false(device.gatt.connected);
-       });
-    })
-    .then(() => testRunner.setPageVisibility('visible'))
-    .catch(error => {
-      testRunner.setPageVisibility('visible');
-      throw error;
-    });
-}, 'Device should not be able to connect in background.');
-
 promise_test(() => {
   return setBluetoothFakeAdapter('HeartRateAdapter')
     .then(() => requestDeviceWithKeyDown({
diff --git a/third_party/WebKit/LayoutTests/bluetooth/disconnect-when-hidden-or-closed.html b/third_party/WebKit/LayoutTests/bluetooth/disconnect-when-hidden-or-closed.html
deleted file mode 100644
index bee1141..0000000
--- a/third_party/WebKit/LayoutTests/bluetooth/disconnect-when-hidden-or-closed.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<script src="../resources/testharness.js"></script>
-<script src="../resources/testharnessreport.js"></script>
-<script src="resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-test(t => { assert_true(window.testRunner instanceof Object); t.done(); },
-     'window.testRunner is required for the following tests.');
-
-// TODO(ortuno): Allow connections when the tab is in the background.
-// This is a short term solution instead of implementing a tab indicator
-// for bluetooth connections.
-// https://crbug.com/579746
-promise_test(() => {
-  testRunner.setPageVisibility("visible");
-  return setBluetoothFakeAdapter('HeartRateAdapter')
-    .then(() => requestDeviceWithKeyDown({
-      filters: [{services: ['heart_rate']}]}))
-   .then(device => {
-     return device.gatt.connect().then(gatt_server => {
-       assert_true(gatt_server.connected);
-
-       let event_catcher1 = new EventCatcher(device, 'gattserverdisconnected');
-       testRunner.setPageVisibility("hidden");
-       assert_false(gatt_server.connected);
-       assert_true(event_catcher1.eventFired);
-
-       let event_catcher2 = new EventCatcher(device, 'gattserverdisconnected');
-       testRunner.setPageVisibility("visible");
-       assert_false(gatt_server.connected);
-       assert_false(event_catcher2.eventFired);
-     });
-   });
-}, 'Test device disconnects and event is fired when tab becomes hidden.');
-
-promise_test(() => {
-  testRunner.setPageVisibility('visible');
-  return setBluetoothFakeAdapter('HeartRateAdapter')
-    .then(() => requestDeviceWithKeyDown({
-      filters: [{services: ['heart_rate']}]}))
-   .then(device => device.gatt.connect())
-   .then(gatt_server => {})
-   .then(() => runGarbageCollection())
-   .then(() => testRunner.setPageVisibility('hidden'));
-}, 'Test object gets garbage collected before tab becomes hidden. ' +
-   'We shouldn\'t crash.');
-
-promise_test(() => {
-  testRunner.setPageVisibility('visible');
-  return setBluetoothFakeAdapter('HeartRateAdapter')
-    .then(() => requestDeviceWithKeyDown({
-      filters: [{services: ['heart_rate']}]}))
-   .then(device => device.gatt.connect())
-   .then(gatt_server => testRunner.setPageVisibility('hidden'))
-   .then(() => runGarbageCollection());
-}, 'Test object gets garbage collected after tab becomes hidden. ' +
-   'We shouldn\'t crash.');
-
-promise_test(() => {
-  testRunner.setPageVisibility('visible');
-  return setBluetoothFakeAdapter('HeartRateAdapter')
-    .then(() => requestDeviceWithKeyDown({
-      filters: [{services: ['heart_rate']}]}))
-   .then(device => {
-     let connect_promise = device.gatt.connect();
-     testRunner.setPageVisibility('hidden');
-     return assert_promise_rejects_with_message(
-       connect_promise,
-       new DOMException('Connection is only allowed while the page is visible. ' +
-                        'This is a temporary measure until we are able to ' +
-                        'effectively communicate to the user that a page is ' +
-                        'connected to a device.',
-                        'SecurityError'))
-       .then(() => {
-         assert_false(device.gatt.connected);
-       });
-   });
-}, 'Visibility changes during connection. Should disconnect and reject.');
-</script>
diff --git a/third_party/WebKit/LayoutTests/bluetooth/resources/bluetooth-helpers.js b/third_party/WebKit/LayoutTests/bluetooth/resources/bluetooth-helpers.js
index 9667135f..91377756 100644
--- a/third_party/WebKit/LayoutTests/bluetooth/resources/bluetooth-helpers.js
+++ b/third_party/WebKit/LayoutTests/bluetooth/resources/bluetooth-helpers.js
@@ -322,8 +322,6 @@
   // will notify the renderer that the device disconnected so we won't need
   // this hack.
   // https://crbug.com/581855
-  testRunner.setPageVisibility('hidden');
-  testRunner.setPageVisibility('visible');
   testRunner.setBluetoothManualChooser(false);
   setBluetoothFakeAdapter('');
 });
diff --git a/third_party/WebKit/LayoutTests/css3/calc/calc-nesting.html b/third_party/WebKit/LayoutTests/css3/calc/calc-nesting.html
new file mode 100644
index 0000000..b00bcc3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/css3/calc/calc-nesting.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../../css-parser/resources/property-parsing-test.js"></script>
+
+<style>
+#parent { width: 200px; }
+#div1 { width: calc(calc(50px)); }
+#div2 { width: calc(calc(60%) - 20px); }
+#div3 { width: calc(calc(3 * 25%)); }
+#div4 {
+    --width: calc(10% + 30px);
+    width: calc(2 * var(--width));
+}
+</style>
+<div id=parent>
+  <div id=div1></div>
+  <div id=div2></div>
+  <div id=div3></div>
+  <div id=div4></div>
+</div>
+
+<script>
+// Tests using property-parsing-test.js
+assert_valid_value("left", "calc(20px + calc(80px))", "calc(100px)");
+assert_valid_value("left", "calc(calc(100px))", "calc(100px)");
+assert_valid_value("left", "calc(calc(2) * calc(50px)", "calc(100px)");
+assert_valid_value("left", "calc(calc(150px*2/3)", "calc(100px)");
+assert_valid_value("left", "calc(calc(2 * calc(calc(3)) + 4) * 10px)", "calc(100px)");
+assert_valid_value("left", "calc(50px + calc(40%))", "calc(50px + 40%)");
+assert_valid_value("border", "calc(calc(10px)) solid pink", "calc(10px) solid pink");
+
+// Tests that require layout
+test(function(){
+    assert_equals(getComputedStyle(div1).width, "50px");
+    assert_equals(getComputedStyle(div2).width, "100px");
+    assert_equals(getComputedStyle(div3).width, "150px");
+    assert_equals(getComputedStyle(div4).width, "100px");
+}, "Nested calcs should work with layout");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children-expected.txt b/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children-expected.txt
new file mode 100644
index 0000000..b2c2aa9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children-expected.txt
@@ -0,0 +1 @@
+Test passes if no crash.
diff --git a/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children.html b/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children.html
new file mode 100644
index 0000000..41e03b5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/css/containment/paint-contained-tablerow-with-fixed-children.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<body style="contain: paint; display: table-row;">
+<div style="position: fixed">Test passes if no crash.
+<script>
+if (window.testRunner)
+	testRunner.dumpAsText();
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions-expected.txt
new file mode 100644
index 0000000..cf8d4c64
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions-expected.txt
@@ -0,0 +1,26 @@
+This test verifies the dimensions of the visual viewport returned by the JS visual viewport API.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+    **** Initial visual viewport dimensions *****
+PASS document.visualViewport.scrollTop is 0
+PASS document.visualViewport.scrollLeft is 0
+PASS document.visualViewport.clientWidth is 800
+PASS document.visualViewport.clientHeight is 600
+PASS document.visualViewport.pageScale is 1
+    **** Viewport dimensions after scale and scroll *****
+PASS document.visualViewport.scrollTop is 10
+PASS document.visualViewport.scrollLeft is 10
+PASS document.visualViewport.clientWidth is 400
+PASS document.visualViewport.clientHeight is 300
+PASS document.visualViewport.pageScale is 2
+    **** Writable viewport dimensions *****
+PASS document.visualViewport.scrollTop is 20
+PASS document.visualViewport.scrollLeft is 0
+PASS document.visualViewport.scrollTop is 0
+PASS document.visualViewport.scrollTop is 20.5
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions.html
new file mode 100644
index 0000000..959ceca4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/verify-viewport-dimensions.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<script src="../../../resources/js-test.js"></script>
+<style>
+    body {
+        height: 2000px;
+        width: 2000px;
+    }
+</style>
+
+<script>
+    window.jsTestIsAsync = true;
+
+    description("This test verifies the dimensions of the visual viewport \
+        returned by the JS visual viewport API.");
+
+    function runTest() {
+        if (!window.eventSender || !window.internals) {
+            finishJSTest();
+            return;
+        }
+
+        // Turn off smooth scrolling.
+        internals.settings.setScrollAnimatorEnabled(false);
+
+        // Scroll both viewports.
+        eventSender.mouseMoveTo(100, 100);
+        eventSender.continuousMouseScrollBy(100, 100);
+
+        debug("    **** Initial visual viewport dimensions *****");
+        shouldBe("document.visualViewport.scrollTop", "0");
+        shouldBe("document.visualViewport.scrollLeft", "0");
+        shouldBe("document.visualViewport.clientWidth", "800");
+        shouldBe("document.visualViewport.clientHeight", "600");
+        shouldBe("document.visualViewport.pageScale", "1");
+
+        // Scale and scroll visual viewport.
+        internals.setPageScaleFactor(2);
+        internals.setVisualViewportOffset(10, 10);
+
+        debug("    **** Viewport dimensions after scale and scroll *****");
+        shouldBe("document.visualViewport.scrollTop", "10");
+        shouldBe("document.visualViewport.scrollLeft", "10");
+        shouldBe("document.visualViewport.clientWidth", "400");
+        shouldBe("document.visualViewport.clientHeight", "300");
+        shouldBe("document.visualViewport.pageScale", "2");
+
+        document.visualViewport.scrollTop = 20;
+        document.visualViewport.scrollLeft = 0;
+        debug("    **** Writable viewport dimensions *****");
+        shouldBe("document.visualViewport.scrollTop", "20");
+        shouldBe("document.visualViewport.scrollLeft", "0");
+        document.visualViewport.scrollTop = -20;
+        shouldBe("document.visualViewport.scrollTop", "0");
+        document.visualViewport.scrollTop = 20.5;
+        shouldBe("document.visualViewport.scrollTop", "20.5");
+
+        finishJSTest();
+    }
+</script>
+
+<body onload="runTest()"></body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-expected.txt
new file mode 100644
index 0000000..604884a9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-expected.txt
@@ -0,0 +1,14 @@
+This test verifies that that visualviewportchanged event gets fired when the visual viewport is scaled or scrolled.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS numCalls is 0
+PASS numCalls is 1
+PASS numCalls is 2
+PASS numCalls is 3
+PASS numCalls is 4
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized-expected.txt
new file mode 100644
index 0000000..dc0505a9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized-expected.txt
@@ -0,0 +1,11 @@
+This test verifies that that visualviewportchanged event gets fired when the window is resized.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS numCalls is 1
+PASS numCalls is 2
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized.html
new file mode 100644
index 0000000..94c419c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired-window-resized.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<script src="../../../resources/js-test.js"></script>
+
+<script>
+    window.jsTestIsAsync = true;
+    var numCalls = 0;
+
+    description("This test verifies that that visualviewportchanged event gets \
+        fired when the window is resized.");
+
+    function runTest() {
+        if (!window.eventSender || !window.internals || !window.testRunner) {
+            finishJSTest();
+            return;
+        }
+
+        testRunner.useUnfortunateSynchronousResizeMode();
+
+        // Turn off smooth scrolling.
+        internals.settings.setScrollAnimatorEnabled(false);
+
+        document.addEventListener('visualviewportchanged', function(e) {
+            numCalls++;
+        });
+
+        resizeTo(outerWidth - 24, outerHeight - 24);
+        requestAnimationFrame(function() {
+            shouldBe("numCalls", "1");
+            resizeTo(outerWidth + 24, outerHeight + 24);
+            requestAnimationFrame(function() {
+                shouldBe("numCalls", "2");
+                finishJSTest();
+            });
+        });
+    }
+</script>
+
+<body onload="runTest()"></body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired.html
new file mode 100644
index 0000000..408273c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/visualviewportchanged-event-fired.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<script src="../../../resources/js-test.js"></script>
+<style>
+    body {
+        height: 2000px;
+        width: 2000px;
+    }
+</style>
+
+<script>
+    window.jsTestIsAsync = true;
+    var numCalls = 0;
+
+    description("This test verifies that that visualviewportchanged event gets \
+        fired when the visual viewport is scaled or scrolled.");
+
+    function verifySetViewportOffsets() {
+        // Set viewport offset. Listener called twice.
+        document.visualViewport.scrollTop = 20;
+        requestAnimationFrame(function() {
+            shouldBe("numCalls", "3");
+            document.visualViewport.scrollLeft = 0;
+            requestAnimationFrame(function() {
+                shouldBe("numCalls", "4");
+                finishJSTest();
+            });
+        });
+    }
+
+    function runTest() {
+        if (!window.eventSender || !window.internals) {
+            finishJSTest();
+            return;
+        }
+        // Turn off smooth scrolling.
+        internals.settings.setScrollAnimatorEnabled(false);
+
+        document.addEventListener('visualviewportchanged', function(e) {
+            numCalls++;
+        });
+
+        // Scroll both viewports. Listner not called.
+        eventSender.mouseMoveTo(100, 100);
+        eventSender.continuousMouseScrollBy(100, 100);
+        shouldBe("numCalls", "0");
+
+        // Scale and scroll visual viewport. Listener called twice.
+        internals.setPageScaleFactor(2);
+        requestAnimationFrame(function() {
+            shouldBe("numCalls", "1");
+            internals.setVisualViewportOffset(10, 10);
+            requestAnimationFrame(function() {
+                shouldBe("numCalls", "2");
+                verifySetViewportOffsets();
+            });
+        });
+    }
+</script>
+
+<body onload="runTest()"></body>
diff --git a/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty-expected.txt b/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty-expected.txt
new file mode 100644
index 0000000..c5aa393
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty-expected.txt
@@ -0,0 +1 @@
+crbug.com/598722: Test passes if it does not crash
diff --git a/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty.html b/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty.html
new file mode 100644
index 0000000..4bdc698
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/lists/remove-listmarker-and-make-anonblock-empty.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<span style="display:list-item;">
+    <ruby style="display:block;">Text</ruby>
+</span>
+<script>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+    document.designMode = 'on';
+    document.execCommand("selectAll");
+    document.execCommand("InsertHTML",false,"<p>crbug.com/598722: Test passes if it does not crash</p>");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation-expected.html b/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation-expected.html
new file mode 100644
index 0000000..8c8635f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation-expected.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<style>
+img {
+    box-sizing: border-box;
+    width: 100px;
+    height: 100px;
+}
+</style>
+<p>crbug.com/597194: There should be two blue boxes of equal size below.</p>
+<img id="tst" src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><rect width="1" height="1" fill="blue"/></svg>'>
+<img id="tst" src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><rect width="1" height="1" fill="blue"/></svg>'>
+
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation.html b/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation.html
new file mode 100644
index 0000000..c0e8c8ff
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/repaint/border-box-sizing-invalidation.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<style>
+img {
+    box-sizing: border-box;
+    width: 100px;
+}
+#tst {
+    padding: 30px;
+}
+</style>
+<p>crbug.com/597194: There should be two blue boxes of equal size below.</p>
+<img id="tst" src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><rect width="1" height="1" fill="blue"/></svg>'>
+<img src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><rect width="1" height="1" fill="blue"/></svg>'>
+<script src="../../resources/run-after-layout-and-paint.js"></script>
+<script>
+runAfterLayoutAndPaint(function() {
+    document.getElementById('tst').style.padding = "0";
+}, true);
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-expected.txt
index 87b5a0a1..b1a5e1cb 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-expected.txt
@@ -6,12 +6,10 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [400, 200, 40, 140],
         [400, 0, 40, 140],
-        [380, 200, 60, 140],
         [380, 0, 60, 140],
-        [0, 300, 440, 40],
-        [0, 280, 440, 60],
+        [0, 200, 440, 140],
+        [0, 200, 400, 100],
         [0, 100, 440, 40],
         [0, 80, 440, 60]
       ],
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-padding-keeping-size-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-padding-keeping-size-expected.txt
index e9f7954d..13ca72a 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-padding-keeping-size-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/box-sizing-padding-keeping-size-expected.txt
@@ -4,7 +4,13 @@
     {
       "bounds": [800, 600],
       "contentsOpaque": true,
-      "drawsContent": true
+      "drawsContent": true,
+      "repaintRects": [
+        [0, 200, 100, 100]
+      ],
+      "paintInvalidationClients": [
+        "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'"
+      ]
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/layout-state-only-positioned-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/layout-state-only-positioned-expected.txt
index 0fb1fe7c..27282ab 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/layout-state-only-positioned-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/layout-state-only-positioned-expected.txt
@@ -7,7 +7,7 @@
       "drawsContent": true,
       "repaintRects": [
         [88, 53, 15, 100],
-        [3, 103, 10, 53]
+        [3, 103, 10, 50]
       ],
       "paintInvalidationClients": [
         "LayoutBlockFlow (positioned) DIV",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/scroll-inside-table-cell-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/scroll-inside-table-cell-expected.txt
index ffa6fa05..edf3ceb 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/scroll-inside-table-cell-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/scroll-inside-table-cell-expected.txt
@@ -7,8 +7,8 @@
       "drawsContent": true,
       "repaintRects": [
         [314, 564, 435, 15],
-        [314, 114, 450, 450],
-        [312, 114, 437, 450],
+        [314, 114, 435, 450],
+        [314, 114, 435, 450],
         [312, 112, 454, 469]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/scroll-relative-table-inside-table-cell-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/scroll-relative-table-inside-table-cell-expected.txt
index 473fed3..7544db2 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/scroll-relative-table-inside-table-cell-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/scroll-relative-table-inside-table-cell-expected.txt
@@ -7,8 +7,8 @@
       "drawsContent": true,
       "repaintRects": [
         [1114, 1764, 435, 15],
-        [1114, 1314, 450, 450],
-        [1112, 1314, 437, 450],
+        [1114, 1314, 435, 450],
+        [1114, 1314, 435, 450],
         [1112, 1312, 454, 469]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/scrollbar-damage-and-full-viewport-repaint-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/scrollbar-damage-and-full-viewport-repaint-expected.txt
index 4e83dc5a..852b4937 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/scrollbar-damage-and-full-viewport-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/scrollbar-damage-and-full-viewport-repaint-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [101, 51, 101, 201],
+        [101, 51, 85, 185],
         [1, 236, 185, 15]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden-expected.txt b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden-expected.txt
index 5f38a3b..6797489 100644
--- a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden-expected.txt
@@ -16,6 +16,8 @@
 PASS gFocusedDocument.activeElement.getAttribute("id") is "f4"
 PASS gFocusedDocument.activeElement.getAttribute("id") is "f4"
 PASS gFocusedDocument.activeElement.getAttribute("id") is "f5"
+PASS gFocusedDocument.activeElement.getAttribute("id") is "f5"
+PASS gFocusedDocument.activeElement.getAttribute("id") is "f6"
 PASS gFocusedDocument.activeElement.getAttribute("id") is "f6"
 PASS gFocusedDocument.activeElement.getAttribute("id") is "f9"
 This test is testing that div with overflow:auto would scroll, by div with overflow:hidden would not.
diff --git a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden.html b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden.html
index 937bc20..d009d02c 100644
--- a/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden.html
+++ b/third_party/WebKit/LayoutTests/fast/spatial-navigation/snav-div-overflow-scrol-hidden.html
@@ -11,6 +11,8 @@
       ["Down", "f4"],
       ["Down", "f4"],
       ["Down", "f5"],
+      ["Down", "f5"],
+      ["Down", "f6"],
       ["Down", "f6"],
       ["Down", "f9"],
       ["DONE", "DONE"]
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/console-cd.html b/third_party/WebKit/LayoutTests/http/tests/inspector/console-cd.html
index 4c9d2fa..40a4f1c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector/console-cd.html
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/console-cd.html
@@ -8,7 +8,7 @@
 function test()
 {
     InspectorTest.changeExecutionContext("myIFrame");
-    InspectorTest.evaluateInConsoleAndDump("foo", finish);
+    InspectorTest.evaluateInConsoleAndDump("foo", finish, true);
     function finish()
     {
         InspectorTest.completeTest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/console-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector/console-test.js
index c5a4fad..113e9a9b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector/console-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/console-test.js
@@ -3,8 +3,21 @@
 InspectorTest.preloadModule("source_frame");
 InspectorTest.preloadPanel("console");
 
-InspectorTest.evaluateInConsole = function(code, callback)
+InspectorTest.selectMainExecutionContext = function()
 {
+    var executionContexts = InspectorTest.mainTarget.runtimeModel.executionContexts();
+    for (var context of executionContexts) {
+        if (context.isDefault) {
+            WebInspector.context.setFlavor(WebInspector.ExecutionContext, context);
+            return;
+        }
+    }
+}
+
+InspectorTest.evaluateInConsole = function(code, callback, dontForceMainContext)
+{
+    if (!dontForceMainContext)
+        InspectorTest.selectMainExecutionContext();
     callback = InspectorTest.safeWrap(callback);
 
     var consoleView = WebInspector.ConsoleView.instance();
@@ -27,7 +40,7 @@
     InspectorTest.addSniffer(WebInspector.ConsoleView.prototype, "_consoleMessageAddedForTest", sniffer, opt_sticky);
 }
 
-InspectorTest.evaluateInConsoleAndDump = function(code, callback)
+InspectorTest.evaluateInConsoleAndDump = function(code, callback, dontForceMainContext)
 {
     callback = InspectorTest.safeWrap(callback);
 
@@ -37,7 +50,7 @@
         InspectorTest.addResult(code + " = " + text);
         callback(text);
     }
-    InspectorTest.evaluateInConsole(code, mycallback);
+    InspectorTest.evaluateInConsole(code, mycallback, dontForceMainContext);
 }
 
 InspectorTest.prepareConsoleMessageText = function(messageElement, consoleMessage)
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js
index 0887c74..d8b235a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js
@@ -250,9 +250,6 @@
         case "Resume":
             InspectorTest.togglePause();
             break;
-        case "StepIntoAsync":
-            InspectorTest.DebuggerAgent.stepIntoAsync();
-            break;
         default:
             InspectorTest.addResult("FAIL: Unknown action: " + action);
             callback();
diff --git a/third_party/WebKit/LayoutTests/http/tests/intersection-observer/iframe-cross-origin.html b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/iframe-cross-origin.html
index 3324515..0132d6d5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/intersection-observer/iframe-cross-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/iframe-cross-origin.html
@@ -61,7 +61,11 @@
 }
 
 window.addEventListener("message", handleMessage);
+
 iframe.onload = function() {
-  iframe.contentWindow.postMessage("", "*")
-};
+  // See LayoutTests/intersection-observer/README for explanation of double RAF.
+  requestAnimationFrame(() => {
+      requestAnimationFrame(() => { iframe.contentWindow.postMessage("", "*") })
+  });
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/intersection-observer/resources/cross-origin-subframe.html b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/resources/cross-origin-subframe.html
index d2a40dd..eda791fa 100644
--- a/third_party/WebKit/LayoutTests/http/tests/intersection-observer/resources/cross-origin-subframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/resources/cross-origin-subframe.html
@@ -14,60 +14,54 @@
 // Instead of RAF-ing, we just post an empty message to the parent window, which will
 // RAF when it is received, and then send us a message to cause the next step to run.
 
-function observer_callback(changes) {
-  for (var i in changes)
-    entries.push(changes[i]);
-}
-
 // Use a rootMargin here, and verify it does NOT get applied for the cross-origin case.
-var observer = new IntersectionObserver(observer_callback, {rootMargin: "7px"});
+var observer = new IntersectionObserver(
+    changes => { entries = entries.concat(changes) },
+    { rootMargin: "7px" }
+);
 observer.observe(target);
 
 function step0() {
-  setTimeout(function() {
-    nextStep = step1;
-    port.postMessage({actual: entries.map(entryToJson), expected: []}, "*");
-    entries = [];
-    port.postMessage({scrollTo: 200}, "*");
-  });
+  entries = entries.concat(observer.takeRecords());
+  nextStep = step1;
+  port.postMessage({actual: entries.map(entryToJson), expected: []}, "*");
+  entries = [];
+  port.postMessage({scrollTo: 200}, "*");
 }
 
 function step1() {
-  setTimeout(function() {
-    port.postMessage({actual: entries.map(entryToJson), expected: []}, "*");
-    entries = [];
-    scroller.scrollTop = 250;
-    nextStep = step2;
-    port.postMessage({}, "*");
-  });
+  entries = entries.concat(observer.takeRecords());
+  port.postMessage({actual: entries.map(entryToJson), expected: []}, "*");
+  entries = [];
+  scroller.scrollTop = 250;
+  nextStep = step2;
+  port.postMessage({}, "*");
 }
 
 function step2() {
-  setTimeout(function() {
-    var expected = [{
-      boundingClientRect: coordinatesToClientRectJson(-42, 108, 58, 8),
-      intersectionRect: coordinatesToClientRectJson(0, 108, 58, 8),
-      rootBounds: "null",
-      target: target.id
-    }];
-    port.postMessage({actual: entries.map(entryToJson), expected: expected}, "*");
-    entries = [];
-    nextStep = step3;
-    port.postMessage({scrollTo: 100}, "*");
-  });
+  entries = entries.concat(observer.takeRecords());
+  var expected = [{
+    boundingClientRect: coordinatesToClientRectJson(-42, 108, 58, 8),
+    intersectionRect: coordinatesToClientRectJson(0, 108, 58, 8),
+    rootBounds: "null",
+    target: target.id
+  }];
+  port.postMessage({actual: entries.map(entryToJson), expected: expected}, "*");
+  entries = [];
+  nextStep = step3;
+  port.postMessage({scrollTo: 100}, "*");
 }
 
 function step3() {
-  setTimeout(function() {
-    var expected = [{
-      boundingClientRect: coordinatesToClientRectJson(-42, 108, 58, 8),
-      intersectionRect: coordinatesToClientRectJson(0, 0, 0, 0),
-      rootBounds: "null",
-      target: target.id
-    }];
-    port.postMessage({actual: entries.map(entryToJson), expected: expected}, "*");
-    port.postMessage({DONE: 1}, "*");
-  });
+  entries = entries.concat(observer.takeRecords());
+  var expected = [{
+    boundingClientRect: coordinatesToClientRectJson(-42, 108, 58, 8),
+    intersectionRect: coordinatesToClientRectJson(0, 0, 0, 0),
+    rootBounds: "null",
+    target: target.id
+  }];
+  port.postMessage({actual: entries.map(entryToJson), expected: expected}, "*");
+  port.postMessage({DONE: 1}, "*");
 }
 
 function handleMessage(event)
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling-expected.txt
new file mode 100644
index 0000000..d10064f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling-expected.txt
@@ -0,0 +1,10 @@
+Tests that default execution context accessed without enabling Runtime domain gets properly cleaned up on reload.
+Page reloaded.
+{
+    error : {
+        code : -32000
+        message : Inspected frame has gone
+    }
+    id : 0
+}
+
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling.html b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling.html
new file mode 100644
index 0000000..c119374
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-evaluate-without-enabling.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script>
+<script>
+
+window.dummyObject = { a : 1 };
+
+function test()
+{
+    InspectorTest.sendCommand("Runtime.evaluate", { "expression": "window.dummyObject" }, evaluateCallback);
+
+    function evaluateCallback(result)
+    {
+        InspectorTest.navigate("runtime-evaluate-without-enabling.html", reloadCallback.bind(null, result.result.result.objectId));
+    }
+
+    function reloadCallback(remoteObjectId)
+    {
+        InspectorTest.sendCommand("Runtime.getProperties", { objectId: remoteObjectId, ownProperties: true }, getPropertiesCallback);
+    }
+
+    function getPropertiesCallback(result)
+    {
+        result.id = 0;
+        InspectorTest.logObject(result);
+        InspectorTest.completeTest();
+    }
+}
+</script>
+</head>
+<body onLoad="runTest();">
+Tests that default execution context accessed without enabling Runtime domain gets properly cleaned up on reload.
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints-expected.txt
deleted file mode 100644
index aded455..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Tests AsyncOperation breakpoints.
-
-Set timer for test function.
-Executing Resume...
-Executing Resume...
-Call stack:
-    0) callback1 (async-operation-breakpoints.html:24)
-Pause reason: AsyncOperation
-Executing Resume...
-Executing Resume...
-Call stack:
-    0) callback2 (async-operation-breakpoints.html:34)
-Pause reason: AsyncOperation
-Executing Resume...
-Executing Resume...
-Call stack:
-    0) callback3 (async-operation-breakpoints.html:46)
-Pause reason: AsyncOperation
-
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints.html
deleted file mode 100644
index 3bb7d60..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-breakpoints.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<html>
-<head>
-<script src="../../../http/tests/inspector/inspector-test.js"></script>
-<script src="../../../http/tests/inspector/debugger-test.js"></script>
-<script src="../debugger/resources/framework.js"></script>
-<script>
-
-var dummy = function FAIL_should_not_pause_here() { return 0; };
-
-function testFunction()
-{
-    debugger;
-
-    setTimeout(dummy, 0);
-    setTimeout(dummy, 30);
-    (function setAsyncBreakpointForMe() { setTimeout(callback1, 20); })();
-    setTimeout(dummy, 0);
-    Promise.resolve(42)
-        .then(dummy);
-
-    debugger; // Stop the debugger to receive pending AsyncOperation events.
-}
-
-function callback1()
-{
-    var func = setTimeout.bind(null, callback2, 0);
-    func = setTimeout.bind(null, func, 0);
-    func = setTimeout.bind(null, func, 0);
-    (function setAsyncBreakpointForMe() { setTimeout(func); })();
-    debugger;
-    return 1;
-}
-
-function callback2()
-{
-    var func = Framework.willSchedule(callback3);
-    func = Framework.willSchedule(func);
-    func = Framework.willSchedule(func);
-    (function setAsyncBreakpointForMe() { Framework.schedule(func); })();
-    debugger;
-    Promise.resolve().then(dummy).then(dummy).then(dummy);
-    setTimeout(dummy, 0);
-    return 2;
-}
-
-function callback3()
-{
-    return 3;
-}
-
-function test()
-{
-    var maxAsyncCallStackDepth = 4;
-    var frameworkRegexString = "/framework\\.js$";
-    WebInspector.settingForTest("skipStackFramesPattern").set(frameworkRegexString);
-
-    InspectorTest.startDebuggerTest(step1, true);
-
-    function step1()
-    {
-        InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
-    }
-
-    function step2()
-    {
-        InspectorTest.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.AsyncOperationStarted, onAsyncOperationStarted);
-        InspectorTest.DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, step3);
-    }
-
-    function step3()
-    {
-        var callbackFuncCount = 3;
-        iterate();
-
-        function iterate()
-        {
-            if (!callbackFuncCount--) {
-                InspectorTest.completeDebuggerTest();
-                return;
-            }
-            InspectorTest.waitUntilPausedAndPerformSteppingActions(["Resume", "Resume"], InspectorTest.waitUntilPaused.bind(InspectorTest, didPause));
-        }
-
-        function didPause(callFrames, reason, breakpointIds, asyncStackTrace)
-        {
-            InspectorTest.captureStackTrace(callFrames);
-            InspectorTest.addResult("Pause reason: " + reason);
-            iterate();
-        }
-    }
-
-    function onAsyncOperationStarted(event)
-    {
-        var operation = event.data;
-        var callFrames = operation.stack ? operation.stack.callFrames : [];
-        for (var callFrame of callFrames) {
-            var functionName = callFrame && callFrame.functionName;
-            if (functionName === "setAsyncBreakpointForMe") {
-                InspectorTest.DebuggerAgent.setAsyncOperationBreakpoint(operation.id);
-                break;
-            }
-        }
-    }
-}
-
-</script>
-</head>
-
-<body onload="runTest()">
-<p>
-Tests AsyncOperation breakpoints.
-</p>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events-expected.txt
deleted file mode 100644
index eef1529..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Tests debugger AsyncOperation events while in a debugger stepping session.
-
-Set timer for test function.
-Executing StepOver...
-Executing StepOver...
-==> AsyncOperationStarted: [setTimeout] testFunction @ async-operation-events.html
-Executing StepOver...
-Call stack:
-    0) callback1 (async-operation-events.html:13)
-    [setTimeout]
-    0) testFunction (async-operation-events.html:10)
-
-Executing StepOver...
-Executing StepOver...
-==> AsyncOperationStarted: [setTimeout] callback1 @ async-operation-events.html
-Executing StepOver...
-==> AsyncOperationStarted: [Promise.resolve] callback1 @ async-operation-events.html
-Executing StepOver...
-==> AsyncOperationCompleted: [setTimeout] testFunction @ async-operation-events.html
-Executing StepOver...
-==> AsyncOperationCompleted: [Promise.resolve] callback1 @ async-operation-events.html
-Call stack:
-    0) callback2 (async-operation-events.html:20)
-    [setTimeout]
-    0) callback1 (async-operation-events.html:15)
-    [setTimeout]
-    0) testFunction (async-operation-events.html:10)
-
-Executing StepOver...
-Executing StepOver...
-==> AsyncOperationStarted: [setTimeout] callback2 @ async-operation-events.html
-Executing Resume...
-==> AsyncOperationCompleted: [setTimeout] callback1 @ async-operation-events.html
-==> AsyncOperationCompleted: [setTimeout] callback2 @ async-operation-events.html
-==> AsyncOperationStarted: [setTimeout]  @ async-operation-events.html
-Executing Resume...
-==> AsyncOperationCompleted: [setTimeout]  @ async-operation-events.html
-Scheduling few setInterval's...
-All setInterval's were scheduled.
-Requesting all pending AsyncOperation events from backend...
-==> AsyncOperationStarted: [setInterval] runIntervals @ async-operation-events.html
-==> AsyncOperationStarted: [setInterval] runIntervals @ async-operation-events.html
-==> AsyncOperationStarted: [setInterval] runIntervals @ async-operation-events.html
-
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events.html
deleted file mode 100644
index de54be5f..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-operation-events.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<html>
-<head>
-<script src="../../../http/tests/inspector/inspector-test.js"></script>
-<script src="../../../http/tests/inspector/debugger-test.js"></script>
-<script>
-
-function testFunction()
-{
-    debugger;
-    setTimeout(callback1, 0);
-}
-
-function callback1()
-{
-    setTimeout(callback2, 0);
-    Promise.resolve(42)
-        .then(function() {});
-}
-
-function callback2()
-{
-    setTimeout(callback3, 0);
-    // Pressing RESUME here, thus the following async promise events should not be reported to the front-end.
-    Promise.resolve(43)
-        .then(function() {})
-        .then(function() {});
-}
-
-function callback3()
-{
-    Promise.resolve(44)
-        .then(function() {})
-        .then(
-            function()
-            {
-                setTimeout(callback4, 0);
-            }
-        );
-}
-
-function callback4()
-{
-    debugger;
-}
-
-function runIntervals()
-{
-    setInterval(function f1() {}, 50);
-    setInterval(function f2() {}, 60);
-    setInterval(function f3() {}, 70);
-}
-
-function test()
-{
-    var maxAsyncCallStackDepth = 4;
-    InspectorTest.startDebuggerTest(step1, true);
-
-    function step1()
-    {
-        InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
-    }
-
-    function step2()
-    {
-        InspectorTest.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.AsyncOperationStarted, onAsyncOperationStarted);
-        InspectorTest.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.AsyncOperationCompleted, onAsyncOperationCompleted);
-        InspectorTest.DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, step3);
-    }
-
-    function step3()
-    {
-        var actions = [
-            "StepOver", "StepOver", "StepOver", "Print", // @ callback1
-            "StepOver", "StepOver", "StepOver", "StepOver", "StepOver", "Print", // @ callback2
-            "StepOver", "StepOver", "Resume",
-            "Resume",
-        ];
-        InspectorTest.waitUntilPausedAndPerformSteppingActions(actions, step4);
-    }
-
-    var asyncOperations = {};
-    var setIntervalEventCount = 3;
-    var noAsyncOperationsCallback = null;
-
-    function onAsyncOperationStarted(event)
-    {
-        var operation = event.data;
-        var description = asyncOperationDescription(operation);
-        asyncOperations[operation.id] = description;
-        InspectorTest.addResult("==> AsyncOperationStarted: " + description);
-
-        if (description.indexOf("runIntervals") !== -1) {
-            if (!--setIntervalEventCount)
-                InspectorTest.completeDebuggerTest();
-        }
-    }
-
-    function onAsyncOperationCompleted(event)
-    {
-        var operationId = event.data;
-        InspectorTest.addResult("==> AsyncOperationCompleted: " + asyncOperations[operationId]);
-        delete asyncOperations[operationId];
-        maybeRunNoAsyncOperationsCallback();
-    }
-
-    function asyncOperationDescription(operation)
-    {
-        var link = "";
-        var callFrame = operation.stack ? operation.stack.callFrames[0] : null;
-        if (callFrame) {
-            var url = WebInspector.displayNameForURL(callFrame.url);
-            link = " " + callFrame.functionName + " @ " + url;
-        }
-        return ("[" + operation.stack.description + "]" + link);
-    }
-
-    function maybeRunNoAsyncOperationsCallback()
-    {
-        if (!noAsyncOperationsCallback)
-            return;
-        for (var id in asyncOperations)
-            return;
-        var callback = noAsyncOperationsCallback;
-        noAsyncOperationsCallback = null;
-        callback();
-    }
-
-    function step4()
-    {
-        noAsyncOperationsCallback = step5;
-        maybeRunNoAsyncOperationsCallback();
-    }
-
-    function step5()
-    {
-        InspectorTest.addResult("Scheduling few setInterval's...");
-        InspectorTest.evaluateInPage("runIntervals()", step6);
-    }
-
-    function step6()
-    {
-        InspectorTest.addResult("All setInterval's were scheduled.");
-        InspectorTest.addResult("Requesting all pending AsyncOperation events from backend...");
-        InspectorTest.DebuggerAgent.flushAsyncOperationEvents();
-    }
-
-}
-
-</script>
-</head>
-
-<body onload="runTest()">
-<p>
-Tests debugger AsyncOperation events while in a debugger stepping session.
-</p>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1-expected.txt
deleted file mode 100644
index 17c0e8c8..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1-expected.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-Tests debugger StepIntoAsync action (part 1).
-
-Set timer for test function.
-Executing StepOver...
-Executing StepOver...
-Executing StepOver...
-Call stack:
-    0) testFunction (debugger-step-into-async1.html:17)
-
-Executing StepIntoAsync...
-Call stack:
-    0) callback1 (debugger-step-into-async1.html:23)
-    [setTimeout]
-    0) testFunction (debugger-step-into-async1.html:17)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback2 (debugger-step-into-async1.html:34)
-    [setTimeout]
-    0) callback1 (debugger-step-into-async1.html:29)
-    [setTimeout]
-    0) testFunction (debugger-step-into-async1.html:17)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback3 (debugger-step-into-async1.html:46)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback2 (debugger-step-into-async1.html:40)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback4 (debugger-step-into-async1.html:56)
-  * 1) Framework.safeRun (framework.js:8)
-  * 2) Framework.safeRun (framework.js:13)
-  * 3) Framework.safeRun (framework.js:10)
-  * 4) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback3 (debugger-step-into-async1.html:50)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback5 (debugger-step-into-async1.html:65)
-  * 1) Framework_eventListener (framework.js:86)
-  * 2) Framework.createButtonWithEventListenersAndClick (framework.js:173)
-  * 3) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback4 (debugger-step-into-async1.html:58)
-  * 2) Framework.safeRun (framework.js:8)
-  * 3) Framework.safeRun (framework.js:13)
-  * 4) Framework.safeRun (framework.js:10)
-  * 5) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback3 (debugger-step-into-async1.html:50)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback6 (debugger-step-into-async1.html:80)
-    [Promise.resolve]
-    0) callback5 (debugger-step-into-async1.html:75)
-  * 1) Framework_eventListener (framework.js:86)
-  * 2) Framework.createButtonWithEventListenersAndClick (framework.js:173)
-  * 3) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback4 (debugger-step-into-async1.html:58)
-  * 2) Framework.safeRun (framework.js:8)
-  * 3) Framework.safeRun (framework.js:13)
-  * 4) Framework.safeRun (framework.js:10)
-  * 5) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback3 (debugger-step-into-async1.html:50)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-  * 1) Framework_willSchedule (framework.js:51)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback7 (debugger-step-into-async1.html:96)
-    [Promise.resolve]
-    0) callback6 (debugger-step-into-async1.html:85)
-    [Promise.resolve]
-    0) callback5 (debugger-step-into-async1.html:75)
-  * 1) Framework_eventListener (framework.js:86)
-  * 2) Framework.createButtonWithEventListenersAndClick (framework.js:173)
-  * 3) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback4 (debugger-step-into-async1.html:58)
-  * 2) Framework.safeRun (framework.js:8)
-  * 3) Framework.safeRun (framework.js:13)
-  * 4) Framework.safeRun (framework.js:10)
-  * 5) Framework_bound (framework.js:105)
-    [setTimeout]
-  * 0) Framework.schedule (framework.js:45)
-    1) callback3 (debugger-step-into-async1.html:50)
-
-
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1.html
deleted file mode 100644
index 9117eaf1..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async1.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<html>
-<head>
-<script src="../../../http/tests/inspector/inspector-test.js"></script>
-<script src="../../../http/tests/inspector/debugger-test.js"></script>
-<script src="../debugger/resources/framework.js"></script>
-<script>
-
-var dummy = function FAIL_should_not_pause_here() { return 0; };
-
-function testFunction()
-{
-    debugger; // <- will turn on async call stacks here.
-
-    setTimeout(dummy, 0);
-    setTimeout(dummy.bind(null), 10);
-
-    setTimeout(callback1, 20); // <- StepIntoAsync
-
-    setTimeout(dummy, 0);
-    setTimeout(dummy.bind(null), 10);
-}
-
-function callback1()
-{
-    var func = setTimeout.bind(null, callback2, 0);
-    func = setTimeout.bind(null, func, 0);
-    func = setTimeout.bind(null, func, 0);
-    debugger;
-    setTimeout(func); // <- StepIntoAsync
-    Promise.resolve().then(dummy).then(dummy).then(dummy);
-    return 1;
-}
-
-function callback2()
-{
-    var func = Framework.willSchedule(callback3);
-    func = Framework.willSchedule(func);
-    func = Framework.willSchedule(func);
-    debugger;
-    Framework.schedule(func); // <- StepIntoAsync
-    Promise.resolve().then(dummy).then(dummy).then(dummy);
-    setTimeout(dummy, 0);
-    return 2;
-}
-
-function callback3()
-{
-    var func = Framework.bind(Framework.safeRun, null, Framework.createButtonWithEventListenersAndClick, Framework.throwFrameworkException, callback4);
-    debugger;
-    Framework.schedule(func); // <- StepIntoAsync
-    return 3;
-}
-
-function callback4()
-{
-    var func = Framework.bind(Framework.createButtonWithEventListenersAndClick, null, callback5);
-    debugger;
-    Framework.schedule(func); // <- StepIntoAsync
-    return 4;
-}
-
-function callback5()
-{
-    var resolve;
-    var promise = new Promise(function(a, b) { resolve = a; });
-    promise
-        .then(JSON.stringify)
-        .then(JSON.parse)
-        .then(Framework.empty)
-        .then(Framework.createButtonWithEventListenersAndClick)
-        .then(callback6)
-        .then(dummy)
-        .catch(dummy);
-    debugger;
-    resolve({foo: 42}); // <- StepIntoAsync
-    setTimeout(dummy, 0);
-    return 5;
-}
-
-function callback6()
-{
-    var value = {foo: 43};
-    debugger;
-    Promise.resolve(value) // <- StepIntoAsync
-        .then(JSON.stringify)
-        .then(JSON.parse)
-        .then(Framework.empty)
-        .then(Framework.createButtonWithEventListenersAndClick)
-        .then(callback7)
-        .then(dummy)
-        .catch(dummy);
-    setTimeout(dummy, 0);
-    return 6;
-}
-
-function callback7()
-{
-    return 7;
-}
-
-function test()
-{
-    var maxAsyncCallStackDepth = 4;
-    var frameworkRegexString = "/framework\\.js$";
-    WebInspector.settingForTest("skipStackFramesPattern").set(frameworkRegexString);
-
-    InspectorTest.startDebuggerTest(step1, true);
-
-    function step1()
-    {
-        InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
-    }
-
-    function step2()
-    {
-        InspectorTest.DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, step3);
-    }
-
-    function step3()
-    {
-        var actions = [
-            "StepOver", "StepOver", "StepOver", "Print", // on setTimeout(callback1)
-            "StepIntoAsync", "Print", // at callback1
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback2
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback3
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback4
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback5
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback6
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at callback7
-        ];
-        InspectorTest.waitUntilPausedAndPerformSteppingActions(actions, step4);
-    }
-
-    function step4()
-    {
-        InspectorTest.completeDebuggerTest();
-    }
-}
-
-</script>
-</head>
-
-<body onload="runTest()">
-<p>
-Tests debugger StepIntoAsync action (part 1).
-</p>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2-expected.txt
deleted file mode 100644
index aa40b06..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-Tests debugger StepIntoAsync action (part 2).
-
-
-Set timer for test function.
-Executing StepOver...
-Executing StepOver...
-Call stack:
-    0) testFunction (debugger-step-into-async2.html:15)
-
-Executing StepIntoAsync...
-Call stack:
-    0) callback7 (debugger-step-into-async2.html:18)
-    [setTimeout]
-    0) testFunction (debugger-step-into-async2.html:15)
-
-Executing Resume...
-Executing StepOver...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) callback8 (debugger-step-into-async2.html:36)
-    [Promise.resolve]
-    0) callback7 (debugger-step-into-async2.html:21)
-    [setTimeout]
-    0) testFunction (debugger-step-into-async2.html:15)
-
-Executing Resume...
-Executing StepOver...
-Executing StepIntoAsync...
-Call stack:
-    0) onMessageReceivedInFrame (post-message-listener.html:5)
-    [postMessage]
-    0) callback8 (debugger-step-into-async2.html:42)
-    [Promise.resolve]
-    0) callback7 (debugger-step-into-async2.html:21)
-    [setTimeout]
-    0) testFunction (debugger-step-into-async2.html:15)
-
-Executing Resume...
-Executing StepInto...
-Executing StepIntoAsync...
-Call stack:
-    0) inner1 (debugger-step-into-async2.html:54)
-    [Promise.resolve]
-    0) callback9 (debugger-step-into-async2.html:53)
-    [postMessage]
-    0) postMessageToParent (post-message-listener.html:13)
-    1) onMessageReceivedInFrame (post-message-listener.html:8)
-    [postMessage]
-    0) callback8 (debugger-step-into-async2.html:42)
-    [Promise.resolve]
-    0) callback7 (debugger-step-into-async2.html:21)
-
-Executing StepIntoAsync...
-Call stack:
-    0) inner2 (debugger-step-into-async2.html:60)
-    [Promise.resolve]
-    0) callback9 (debugger-step-into-async2.html:53)
-    [postMessage]
-    0) postMessageToParent (post-message-listener.html:13)
-    1) onMessageReceivedInFrame (post-message-listener.html:8)
-    [postMessage]
-    0) callback8 (debugger-step-into-async2.html:42)
-    [Promise.resolve]
-    0) callback7 (debugger-step-into-async2.html:21)
-
-Executing StepIntoAsync...
-Executing StepIntoAsync...
-Call stack:
-    0) callback10 (debugger-step-into-async2.html:72)
-    1) inner2 (debugger-step-into-async2.html:62)
-    [Promise.resolve]
-    0) callback9 (debugger-step-into-async2.html:53)
-    [postMessage]
-    0) postMessageToParent (post-message-listener.html:13)
-    1) onMessageReceivedInFrame (post-message-listener.html:8)
-    [postMessage]
-    0) callback8 (debugger-step-into-async2.html:42)
-    [Promise.resolve]
-    0) callback7 (debugger-step-into-async2.html:21)
-
-
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2.html
deleted file mode 100644
index 987330a..0000000
--- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-step/debugger-step-into-async2.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<html>
-<head>
-<script src="../../../http/tests/inspector/inspector-test.js"></script>
-<script src="../../../http/tests/inspector/debugger-test.js"></script>
-<script src="../debugger/resources/framework.js"></script>
-<script>
-
-var dummy = function FAIL_should_not_pause_here() { return 0; };
-
-function testFunction()
-{
-    debugger; // <- will turn on async call stacks here.
-
-    setTimeout(dummy, 0);
-    setTimeout(callback7, 20); // <- StepIntoAsync
-}
-
-function callback7()
-{
-    Promise.resolve(42)
-        .then(
-            function inner()
-            {
-                var p = Promise.reject(new Error("my error"));
-                p.catch(function() {});
-                debugger;
-                return p; // <- StepIntoAsync
-            }
-        )
-        .then(dummy)
-        .catch(Framework.throwFrameworkException)
-        .catch(callback8);
-    return 7;
-}
-
-function callback8()
-{
-    var iframe = document.getElementById("iframe");
-    var win = iframe.contentWindow;
-    window.addEventListener("message", callback9, false);
-    debugger;
-    win.postMessage("skip debugger", "*"); // <- StepIntoAsync
-    setTimeout(dummy, 0);
-    Promise.resolve().then(dummy);
-    return 9;
-}
-
-function callback9()
-{
-    window.removeEventListener("message", callback9, false);
-    debugger;
-    Promise.resolve({foo: 44}) // <- StepIntoAsync
-        .then(
-            function inner1()  // <- StepIntoAsync when in inner1 should lead debugger to the
-            {                  // next promise handler in the chain, i.e. the one, which will
-            }                  // receive the result returned by inner1, that is inner2.
-        )
-        .then(Framework.empty)
-        .then(
-            function inner2()
-            {
-                return callback10();
-            }
-        )
-        .then(dummy);
-    setTimeout(dummy, 0);
-    return 10;
-}
-
-function callback10()
-{
-    return 11;
-}
-
-function test()
-{
-    var maxAsyncCallStackDepth = 4;
-    var frameworkRegexString = "/framework\\.js$";
-    WebInspector.settingForTest("skipStackFramesPattern").set(frameworkRegexString);
-
-    InspectorTest.startDebuggerTest(step1, true);
-
-    function step1()
-    {
-        InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
-    }
-
-    function step2()
-    {
-        InspectorTest.DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, step3);
-    }
-
-    function step3()
-    {
-        var actions = [
-            "StepOver", "StepOver", "Print", // on setTimeout(callback1)
-            "StepIntoAsync", "Print", // at callback7
-            "Resume", // now paused at debugger in inner()
-            "StepOver", "StepOver", "StepIntoAsync", "Print", // at callback8
-            "Resume", "StepOver", "StepIntoAsync", "Print", // at onmessage handler in iframe
-            "Resume", // now paused at debugger in callback9
-            "StepInto", "StepIntoAsync", "Print", // in inner1
-            "StepIntoAsync", "Print", // in inner2
-            // Test that StepIntoAsync is StepInto when there are no Async operations.
-            "StepIntoAsync", "StepIntoAsync", "Print", // in callback10
-        ];
-        InspectorTest.waitUntilPausedAndPerformSteppingActions(actions, step4);
-    }
-
-    function step4()
-    {
-        InspectorTest.completeDebuggerTest();
-    }
-}
-
-</script>
-</head>
-
-<body onload="runTest()">
-<p>
-Tests debugger StepIntoAsync action (part 2).
-</p>
-<div><iframe src="../debugger/resources/post-message-listener.html"
-    id="iframe" width="800" height="100" style="border: 1px solid black;">
-</iframe></div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/README b/third_party/WebKit/LayoutTests/intersection-observer/README
new file mode 100644
index 0000000..bc78b41
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/intersection-observer/README
@@ -0,0 +1,78 @@
+All of the IntersectionObserver tests feature the following idiom:
+
+<script>
+var observer = new IntersectionObserver(...)
+function test_function() {
+  var entries = observer.takeRecords();
+  // Verify entries
+}
+onload = function() {
+  observer.observe(target);
+  requestAnimationFrame(() => { requestAnimationFrame(test_function) });
+}
+
+Subsequent steps in the test use a single RAF to give the observer a chance to
+generate notifications, but the double RAF is required in the onload handler.
+Here's the chain of events:
+
+- onload
+  - observer.observe()
+  - First RAF handler is registered
+- BeginFrame
+  - RAF handlers run
+    - Second RAF handler is registered 
+  - UpdateAllLifecyclePhases
+    - IntersectionObserver generates notifications
+- BeginFrame
+  - RAF handlers run
+    - Second RAF handler verifies observer notifications.
+
+#-------------------------------------------------------------------------------
+
+All of the IntersectionObserver tests are currently listed in LeakExpecations.
+
+To avoid leaking DOM objects, the tests must ensure that all posted tasks have
+run before exiting.  IntersectionObserverController requests an idle callback
+through the document's ScriptedIdleTaskController with a timeout of 100ms.  That
+callback must be allowed to run before the test finishes to avoid a leak.
+
+ScriptedIdleTaskController posts two tasks to the WebScheduler: one to run at
+the next idle time, and another to run when the timeout expires.
+crbug.com/595155 explains that when one of those tasks runs, it does not release
+its reference to the ScriptedIdleTaskController, which is needlessly kept alive
+until the both tasks have fired.  If a test exits before both tasks have fired,
+it will have a DOM leak.
+
+crbug.com/595152 explains that when running without the threaded compositor --
+as the layout tests do -- idle tasks are never serviced.  They will still run
+when their timeout expires, but the idle task posted by
+ScriptedIdleTaskController will never run.
+
+Fixing the first bug means that requestIdleCallback will not leak as long as it
+actually runs before exit.  The second bug means that when running without the
+threaded compositor, requestIdleCallback will only ever run when its timeout
+expires.
+
+The upshot of all of this is that the only way to ensure that
+IntersectionObserver tests don't leak is to ensure that their idle tasks all run
+before the tests exit, and those idle tasks will only run when their 100ms
+timeout expires.
+
+Note that all of this still holds when observer.takeRecords() is called before
+the idle task runs.  In that case, the idle task is not cancelled (because the
+idle task needs to service all observers tracked by a given
+IntersectionObserverController); when the idle task runs, it's simply a no-op.
+There is no way in javascript to detect that such a no-op has occurred, but
+using requestIdleCallback with a timeout of 100 should be guaranteed to run
+after the IntersectionObserverController's idle task has run, as long as
+ScriptedIdleTaskController honors first-in-first-out semantics.
+
+At the time of writing, there is a patch out to add testRunner.runIdleTasks():
+
+https://codereview.chromium.org/1806133002/
+
+With that patch, the tests can be removed from LeakExpectations as long as they
+end with:
+
+if (window.testRunner)
+  testRunner.runIdleTasks(finishJSTest);
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/containing-block.html b/third_party/WebKit/LayoutTests/intersection-observer/containing-block.html
index f7db8fb..819ec5fa 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/containing-block.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/containing-block.html
@@ -19,81 +19,79 @@
 </div>
 
 <script>
-  description("Test that no notifications are generated when root is not in the containing block chain of target.");
-  var root = document.getElementById("root");
-  var target = document.getElementById("target");
-  var entries = [];
+description("Test that no notifications are generated when root is not in the containing block chain of target.");
+var root = document.getElementById("root");
+var target = document.getElementById("target");
+var entries = [];
 
-  function observer_callback(changes) {
-    changes.forEach(function(e) { entries.push(e) });
+var observer = new IntersectionObserver(
+    changes => { entries = entries.concat(changes) },
+    { root: root }
+);
+
+onload = function() {
+  observer.observe(target);
+  shouldBeEqualToNumber("entries.length", 0);
+  target.style.top = "10px";
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step1) });
+};
+
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 58);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 158);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 18);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 118);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 58);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 158);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 18);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 118);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 8);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 193);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 8);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 208);
+    shouldEvaluateToSameObject("entries[0].target", target);
   }
-  new IntersectionObserver(observer_callback, {root: root}).observe(target);
+  target.style.top = "250px";
+  requestAnimationFrame(step2);
+}
 
-  function step0() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      target.style.top = "10px";
-      requestAnimationFrame(step1);
-    });
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 58);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 158);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", 258);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 358);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 8);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 193);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 8);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 208);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
+  root.style.position = "static";
+  target.style.top = "10px";
+  requestAnimationFrame(step3);
+}
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 58);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 158);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 18);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 118);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 58);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 158);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 18);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 118);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", 8);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 193);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", 8);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 208);
-      shouldEvaluateToSameObject("entries[0].target", target);
-      target.style.top = "250px";
-      requestAnimationFrame(step2);
-    });
-  }
+function step3() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  target.style.top = "250px";
+  requestAnimationFrame(step4);
+}
 
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 58);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 158);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", 258);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 358);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", 8);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 193);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", 8);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 208);
-      shouldEvaluateToSameObject("entries[1].target", target);
-      root.style.position = "static";
-      target.style.top = "10px";
-      requestAnimationFrame(step3);
-    });
-  }
-
-  function step3() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      target.style.top = "250px";
-      requestAnimationFrame(step4);
-    });
-  }
-
-  function step4() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      finishJSTest();
-    });
-  }
-
-  step0();
+function step4() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  finishJSTest();
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root-expected.txt
index a8fc7831..a744f4e 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root-expected.txt
@@ -5,6 +5,7 @@
 
 PASS entries.length is 0
 PASS entries.length is 0
+PASS entries.length is 0
 PASS entries.length is 1
 PASS entries[0].boundingClientRect.left is 8
 PASS entries[0].boundingClientRect.right is 108
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root.html b/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root.html
index 912e286f..134b645 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/iframe-no-root.html
@@ -8,81 +8,76 @@
 <script>
 description("Simple intersection observer test with no explicit root and target in an iframe.");
 var entries = [];
+var observer = new IntersectionObserver(changes => { entries = entries.concat(changes) }, {});
 var targetIframe = document.getElementById("target-iframe");
+var target;
+var iframeScroller;
 
 targetIframe.onload = function() {
-  var target = targetIframe.contentDocument.getElementById("target");
-  var iframeScroller = targetIframe.contentDocument.scrollingElement;
-
-  observer_callback = function(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  };
-  var observer = new IntersectionObserver(observer_callback, {});
+  target = targetIframe.contentDocument.getElementById("target");
+  iframeScroller = targetIframe.contentDocument.scrollingElement;
   observer.observe(target);
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step0) });
+}
 
-  function step0() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      document.scrollingElement.scrollTop = 200;
-      requestAnimationFrame(step1);
-    });
+function step0() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollTop = 200;
+  requestAnimationFrame(step1);
+}
+
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  iframeScroller.scrollTop = 250;
+  requestAnimationFrame(step2);
+}
+
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", -42);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 58);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 58);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[0].target", target);
   }
+  document.scrollingElement.scrollTop = 100;
+  requestAnimationFrame(step3);
+}
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      iframeScroller.scrollTop = 250;
-      requestAnimationFrame(step2);
-    });
+function step3() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", -42);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 58);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
-
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      if (entries.length > 0) {
-        shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
-        shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
-        shouldBeEqualToNumber("entries[0].boundingClientRect.top", -42);
-        shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 58);
-        shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
-        shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
-        shouldBeEqualToNumber("entries[0].intersectionRect.top", 0);
-        shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 58);
-        shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
-        shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
-        shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
-        shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
-        shouldEvaluateToSameObject("entries[0].target", target);
-      }
-      document.scrollingElement.scrollTop = 100;
-      requestAnimationFrame(step3);
-    });
-  }
-
-  function step3() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      if (entries.length > 1) {
-        shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
-        shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
-        shouldBeEqualToNumber("entries[1].boundingClientRect.top", -42);
-        shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 58);
-        shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-        shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-        shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-        shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-        shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
-        shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
-        shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
-        shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
-        shouldEvaluateToSameObject("entries[1].target", target);
-      }
-      finishJSTest();
-      document.scrollingElement.scrollTop = 0;
-    });
-  }
-
-  step0();
+  finishJSTest();
+  document.scrollingElement.scrollTop = 0;
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds-expected.txt
index b3d7f60..512532f 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds-expected.txt
@@ -4,6 +4,7 @@
 
 
 PASS entries.length is 0
+PASS entries.length is 0
 PASS entries.length is 1
 PASS entries[0].boundingClientRect.left is 8
 PASS entries[0].boundingClientRect.right is 108
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds.html b/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds.html
index 94db094..cee4e94 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/multiple-thresholds.html
@@ -6,194 +6,202 @@
 <div style="width:100%; height:700px;"></div>
 
 <script>
-  description("Intersection observer test with multiple thresholds.");
-  var target = document.getElementById("target");
-  var entries = [];
+description("Intersection observer test with multiple thresholds.");
+var target = document.getElementById("target");
+var entries = [];
+var observer = new IntersectionObserver(
+    changes => { entries = entries.concat(changes) },
+    { threshold: [0, 0.25, 0.5, 0.75, 1] }
+);
 
-  observer_callback = function(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  };
-  var observer = new IntersectionObserver(observer_callback, {
-    threshold: [0, 0.25, 0.5, 0.75, 1]
-  });
+onload = function() {
   observer.observe(target);
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step0) });
+}
 
-  function step0() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      document.scrollingElement.scrollTop = 120;
-      requestAnimationFrame(step1);
-    });
+function step0() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollTop = 120;
+  requestAnimationFrame(step1);
+}
+
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 588);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 688);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 588);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 600);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[0].target", target);
   }
+  document.scrollingElement.scrollTop = 160;
+  requestAnimationFrame(step2);
+}
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 588);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 688);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 588);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 600);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[0].target", target);
-      document.scrollingElement.scrollTop = 160;
-      requestAnimationFrame(step2);
-    });
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", 548);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 648);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 548);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 600);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
+  document.scrollingElement.scrollTop = 200;
+  requestAnimationFrame(step3);
+}
 
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", 548);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 648);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 548);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 600);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[1].target", target);
-      document.scrollingElement.scrollTop = 200;
-      requestAnimationFrame(step3);
-    });
+function step3() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 3);
+  if (entries.length > 2) {
+    shouldBeEqualToNumber("entries[2].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.top", 508);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.bottom", 608);
+    shouldBeEqualToNumber("entries[2].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[2].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[2].intersectionRect.top", 508);
+    shouldBeEqualToNumber("entries[2].intersectionRect.bottom", 600);
+    shouldBeEqualToNumber("entries[2].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[2].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[2].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[2].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[2].target", target);
   }
+  document.scrollingElement.scrollTop = 240;
+  requestAnimationFrame(step4);
+}
 
-  function step3() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 3);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.top", 508);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.bottom", 608);
-      shouldBeEqualToNumber("entries[2].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[2].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[2].intersectionRect.top", 508);
-      shouldBeEqualToNumber("entries[2].intersectionRect.bottom", 600);
-      shouldBeEqualToNumber("entries[2].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[2].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[2].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[2].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[2].target", target);
-      document.scrollingElement.scrollTop = 240;
-      requestAnimationFrame(step4);
-    });
+function step4() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 4);
+  if (entries.length > 3) {
+    shouldBeEqualToNumber("entries[3].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[3].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[3].boundingClientRect.top", 468);
+    shouldBeEqualToNumber("entries[3].boundingClientRect.bottom", 568);
+    shouldBeEqualToNumber("entries[3].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[3].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[3].intersectionRect.top", 468);
+    shouldBeEqualToNumber("entries[3].intersectionRect.bottom", 568);
+    shouldBeEqualToNumber("entries[3].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[3].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[3].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[3].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[3].target", target);
   }
+  document.scrollingElement.scrollTop = 740;
+  requestAnimationFrame(step5);
+}
 
-  function step4() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 4);
-      shouldBeEqualToNumber("entries[3].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[3].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[3].boundingClientRect.top", 468);
-      shouldBeEqualToNumber("entries[3].boundingClientRect.bottom", 568);
-      shouldBeEqualToNumber("entries[3].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[3].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[3].intersectionRect.top", 468);
-      shouldBeEqualToNumber("entries[3].intersectionRect.bottom", 568);
-      shouldBeEqualToNumber("entries[3].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[3].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[3].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[3].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[3].target", target);
-      document.scrollingElement.scrollTop = 740;
-      requestAnimationFrame(step5);
-    });
+function step5() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 5);
+  if (entries.length > 4) {
+    shouldBeEqualToNumber("entries[4].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[4].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[4].boundingClientRect.top", -32);
+    shouldBeEqualToNumber("entries[4].boundingClientRect.bottom", 68);
+    shouldBeEqualToNumber("entries[4].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[4].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[4].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[4].intersectionRect.bottom", 68);
+    shouldBeEqualToNumber("entries[4].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[4].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[4].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[4].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[4].target", target);
   }
+  document.scrollingElement.scrollTop = 760;
+  requestAnimationFrame(step6);
+}
 
-  function step5() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 5);
-      shouldBeEqualToNumber("entries[4].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[4].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[4].boundingClientRect.top", -32);
-      shouldBeEqualToNumber("entries[4].boundingClientRect.bottom", 68);
-      shouldBeEqualToNumber("entries[4].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[4].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[4].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[4].intersectionRect.bottom", 68);
-      shouldBeEqualToNumber("entries[4].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[4].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[4].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[4].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[4].target", target);
-      document.scrollingElement.scrollTop = 760;
-      requestAnimationFrame(step6);
-    });
+function step6() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 6);
+  if (entries.length > 5) {
+    shouldBeEqualToNumber("entries[5].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[5].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[5].boundingClientRect.top", -52);
+    shouldBeEqualToNumber("entries[5].boundingClientRect.bottom", 48);
+    shouldBeEqualToNumber("entries[5].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[5].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[5].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[5].intersectionRect.bottom", 48);
+    shouldBeEqualToNumber("entries[5].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[5].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[5].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[5].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[5].target", target);
   }
+  document.scrollingElement.scrollTop = 800;
+  requestAnimationFrame(step7);
+}
 
-  function step6() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 6);
-      shouldBeEqualToNumber("entries[5].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[5].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[5].boundingClientRect.top", -52);
-      shouldBeEqualToNumber("entries[5].boundingClientRect.bottom", 48);
-      shouldBeEqualToNumber("entries[5].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[5].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[5].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[5].intersectionRect.bottom", 48);
-      shouldBeEqualToNumber("entries[5].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[5].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[5].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[5].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[5].target", target);
-      document.scrollingElement.scrollTop = 800;
-      requestAnimationFrame(step7);
-    });
+function step7() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 7);
+  if (entries.length > 6) {
+    shouldBeEqualToNumber("entries[6].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[6].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[6].boundingClientRect.top", -92);
+    shouldBeEqualToNumber("entries[6].boundingClientRect.bottom", 8);
+    shouldBeEqualToNumber("entries[6].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[6].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[6].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[6].intersectionRect.bottom", 8);
+    shouldBeEqualToNumber("entries[6].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[6].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[6].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[6].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[6].target", target);
   }
+  document.scrollingElement.scrollTop = 820;
+  requestAnimationFrame(step8);
+}
 
-  function step7() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 7);
-      shouldBeEqualToNumber("entries[6].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[6].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[6].boundingClientRect.top", -92);
-      shouldBeEqualToNumber("entries[6].boundingClientRect.bottom", 8);
-      shouldBeEqualToNumber("entries[6].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[6].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[6].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[6].intersectionRect.bottom", 8);
-      shouldBeEqualToNumber("entries[6].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[6].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[6].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[6].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[6].target", target);
-      document.scrollingElement.scrollTop = 820;
-      requestAnimationFrame(step8);
-    });
+function step8() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 8);
+  if (entries.length > 7) {
+    shouldBeEqualToNumber("entries[7].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[7].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[7].boundingClientRect.top", -112);
+    shouldBeEqualToNumber("entries[7].boundingClientRect.bottom", -12);
+    shouldBeEqualToNumber("entries[7].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[7].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[7].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[7].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[7].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[7].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[7].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[7].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[7].target", target);
   }
-
-  function step8() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 8);
-      shouldBeEqualToNumber("entries[7].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[7].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[7].boundingClientRect.top", -112);
-      shouldBeEqualToNumber("entries[7].boundingClientRect.bottom", -12);
-      shouldBeEqualToNumber("entries[7].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[7].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[7].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[7].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[7].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[7].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[7].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[7].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[7].target", target);
-      finishJSTest();
-      document.scrollingElement.scrollTop = 0;
-    });
-  }
-
-  step0();
+  finishJSTest();
+  document.scrollingElement.scrollTop = 0;
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html b/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html
index 637a955f3..f152676 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html
@@ -6,19 +6,28 @@
 <div style="width:100%; height:700px;"></div>
 
 <script>
-  jsTestIsAsync = true;
-  description("IntersectionObserver continues to produce notifications when it has no javascript references.");
-  var target = document.getElementById("target");
-  var entries = [];
-  new IntersectionObserver(function(changes) {
-      entries.push(...changes);
-  }).observe(target);
-  gc();
-  document.scrollingElement.scrollTop = 300;
-  requestAnimationFrame(function () {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      finishJSTest();
-    });
-  });
+jsTestIsAsync = true;
+description("IntersectionObserver continues to produce notifications when it has no javascript references.");
+var target = document.getElementById("target");
+var entries = [];
+new IntersectionObserver(function(changes) {
+    entries.push(...changes);
+}).observe(target);
+gc();
+document.scrollingElement.scrollTop = 300;
+// See README for explanation of double RAF.
+requestAnimationFrame(() => { requestAnimationFrame(() => {
+  // In other IntersectionObserver tests, observer.takeRecords() is used to ensure that
+  // all pending notifications are taken.  Because this test specifically tests the
+  // case where the observer object has no js references, it can't use takeRecords().
+  // However, the IntersectionObserver spec mandates that all notifications must be
+  // sent within 100ms of being generated, so this timeout effectively tests conformance
+  // with that requirement.
+  // TODO(szager): Switch setTimeout to testRunner.runIdleTasks after this patch lands:
+  //   https://codereview.chromium.org/1806133002/
+  setTimeout(() => {
+    shouldBeEqualToNumber("entries.length", 1);
+    finishJSTest();
+  }, 100)
+}) });
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/root-margin-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/root-margin-expected.txt
index 910c278..a88ff82 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/root-margin-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/root-margin-expected.txt
@@ -3,11 +3,13 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS new IntersectionObserver(observer_callback, { rootMargin: '1.4px' }) did not throw exception.
-PASS new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px' }) did not throw exception.
-PASS new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px 3%' }) did not throw exception.
-PASS new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px 3% 40px junk junk junk' }) did not throw exception.
+PASS new IntersectionObserver(c => {}, { rootMargin: '1.4px' }) did not throw exception.
+PASS new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px' }) did not throw exception.
+PASS new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px 3%' }) did not throw exception.
+PASS new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px 3% 40px junk junk junk' }) did not throw exception.
 PASS entries.length is 0
+PASS entries.length is 0
+PASS entries.length is 1
 PASS entries.length is 1
 PASS entries[0].boundingClientRect.left is 912
 PASS entries[0].boundingClientRect.right is 1012
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/root-margin.html b/third_party/WebKit/LayoutTests/intersection-observer/root-margin.html
index c5dd9433..dda62ea3 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/root-margin.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/root-margin.html
@@ -10,83 +10,84 @@
 <div style="width:100%; height:700px;"></div>
 
 <script>
-  description("Intersection observer test with root margin and implicit root.");
-  var target = document.getElementById("target");
-  var entries = [];
+description("Intersection observer test with root margin and implicit root.");
+var target = document.getElementById("target");
+var entries = [];
+var observer = new IntersectionObserver(
+    changes => { entries = entries.concat(changes) },
+    { rootMargin: "10px 20% 40% 30px" }
+);
 
-  function observer_callback(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  }
+shouldNotThrow("new IntersectionObserver(c => {}, { rootMargin: '1.4px' })");
+shouldNotThrow("new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px' })");
+shouldNotThrow("new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px 3%' })");
+shouldNotThrow("new IntersectionObserver(c => {}, { rootMargin: '1.4px 2px 3% 40px junk junk junk' })");
 
-  var observer = new IntersectionObserver(observer_callback, {
-    rootMargin: "10px 20% 40% 30px"
-  });
+onload = function() {
   observer.observe(target);
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step0) });
+}
 
-  function step0() {
-    setTimeout(function() {
-      shouldNotThrow("new IntersectionObserver(observer_callback, { rootMargin: '1.4px' })");
-      shouldNotThrow("new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px' })");
-      shouldNotThrow("new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px 3%' })");
-      shouldNotThrow("new IntersectionObserver(observer_callback, { rootMargin: '1.4px 2px 3% 40px junk junk junk' })");
-      shouldBeEqualToNumber("entries.length", 0);
-      document.scrollingElement.scrollLeft = 100;
-      requestAnimationFrame(step1);
-    });
+function step0() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollLeft = 100;
+  requestAnimationFrame(step1);
+}
+
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries.length", 1);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 912);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 1012);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 708);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 808);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 912);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 942);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 708);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 808);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", -30);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 942);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", -10);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 819);
+    shouldEvaluateToSameObject("entries[0].target", target);
   }
+  document.scrollingElement.scrollTop = 800;
+  requestAnimationFrame(step2);
+}
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 912);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 1012);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 708);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 808);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 912);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 942);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 708);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 808);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", -30);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 942);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", -10);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 819);
-      shouldEvaluateToSameObject("entries[0].target", target);
-      document.scrollingElement.scrollTop = 800;
-      requestAnimationFrame(step2);
-    });
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  document.scrollingElement.scrollTop = 900;
+  requestAnimationFrame(step3);
+}
+
+function step3() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 912);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 1012);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", -192);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", -92);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", -30);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 942);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", -10);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 819);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
-
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      document.scrollingElement.scrollTop = 900;
-      requestAnimationFrame(step3);
-    });
-  }
-
-  function step3() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 912);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 1012);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", -192);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", -92);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", -30);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 942);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", -10);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 819);
-      shouldEvaluateToSameObject("entries[1].target", target);
-
-      finishJSTest();
-      document.scrollingElement.scrollLeft = 0;
-      document.scrollingElement.scrollTop = 0;
-    });
-  }
-
-  step0();
+  finishJSTest();
+  document.scrollingElement.scrollLeft = 0;
+  document.scrollingElement.scrollTop = 0;
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/same-document-no-root.html b/third_party/WebKit/LayoutTests/intersection-observer/same-document-no-root.html
index 168a2cf..5d8a01b8 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/same-document-no-root.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/same-document-no-root.html
@@ -6,68 +6,67 @@
 <div style="width:100%; height:700px;"></div>
 
 <script>
-  description("Simple intersection observer test with no explicit root and one document.");
-  var target = document.getElementById("target");
-  var entries = [];
-  observer_callback = function(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  };
-  var observer = new IntersectionObserver(observer_callback, {});
+description("Simple intersection observer test with no explicit root and one document.");
+var target = document.getElementById("target");
+var entries = [];
+var observer = new IntersectionObserver(changes => { entries = entries.concat(changes) });
+
+onload = function() {
   observer.observe(target);
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollTop = 300;
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step1) });
+};
 
-  onload = function() {
-    shouldBeEqualToNumber("entries.length", 0);
-    document.scrollingElement.scrollTop = 300;
-    requestAnimationFrame(step1);
-  };
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 408);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 508);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 408);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 508);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[0].target", target);
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 408);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 508);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 108);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 408);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 508);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[0].target", target);
-
-      // ClientRect members of IntersectionObserverEntry should be stable.
-      shouldEvaluateToSameObject("entries[0].boundingClientRect", entries[0].boundingClientRect);
-      shouldEvaluateToSameObject("entries[0].intersectionRect", entries[0].intersectionRect);
-      shouldEvaluateToSameObject("entries[0].rootBounds", entries[0].rootBounds);
-
-      document.scrollingElement.scrollTop = 100;
-      requestAnimationFrame(step2);
-    });
+    // ClientRect members of IntersectionObserverEntry should be stable.
+    shouldEvaluateToSameObject("entries[0].boundingClientRect", entries[0].boundingClientRect);
+    shouldEvaluateToSameObject("entries[0].intersectionRect", entries[0].intersectionRect);
+    shouldEvaluateToSameObject("entries[0].rootBounds", entries[0].rootBounds);
   }
+  document.scrollingElement.scrollTop = 100;
+  requestAnimationFrame(step2);
+}
 
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", 608);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 708);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[1].target", target);
-      finishJSTest();
-      document.scrollingElement.scrollTop = 0;
-    });
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 108);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", 608);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 708);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
+  finishJSTest();
+  document.scrollingElement.scrollTop = 0;
+}
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/same-document-root-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/same-document-root-expected.txt
index 157d6e5e..af7109b2 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/same-document-root-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/same-document-root-expected.txt
@@ -5,6 +5,7 @@
 
 PASS entries.length is 0
 PASS entries.length is 0
+PASS entries.length is 0
 PASS entries.length is 1
 PASS entries[0].boundingClientRect.left is 11
 PASS entries[0].boundingClientRect.right is 111
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html b/third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html
index d96f6d1..3c4cfe7 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html
@@ -9,105 +9,108 @@
 <div style="width:100%;height:700px;"></div>
 
 <script>
-  description("Simple intersection observer test with explicit root and target in the same document.");
-  var target = document.getElementById("target");
-  var root = document.getElementById("root");
-  var entries = [];
+description("Simple intersection observer test with explicit root and target in the same document.");
+var target = document.getElementById("target");
+var root = document.getElementById("root");
+var entries = [];
+var observer = new IntersectionObserver(
+    changes => { entries = entries.concat(changes) },
+    { root: document.getElementById("root") }
+);
 
-  observer_callback = function(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  };
-  var observer = new IntersectionObserver(observer_callback, {"root": document.getElementById("root")});
+onload = function() {
   observer.observe(target);
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  requestAnimationFrame(() => { requestAnimationFrame(step0) });
+}
 
-  // Test that notifications are not generated when the target is overflow clipped by the root.
-  function step0() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      document.scrollingElement.scrollTop = 600;
-      requestAnimationFrame(step1);
-    });
+// Test that notifications are not generated when the target is overflow clipped by the root.
+function step0() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollTop = 600;
+  requestAnimationFrame(step1);
+}
+
+function step1() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  root.scrollTop = 150;
+  requestAnimationFrame(step2);
+}
+
+function step2() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 11);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 111);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 261);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 361);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 11);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 111);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 261);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 311);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 11);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 111);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 111);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 311);
+    shouldEvaluateToSameObject("entries[0].target", target);
+  }
+  document.scrollingElement.scrollTop = 0;
+  requestAnimationFrame(step3);
+}
+
+function step3() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  root.scrollTop = 0;
+  requestAnimationFrame(step4);
+}
+
+function step4() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 11);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 111);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", 1011);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 1111);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 11);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 111);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 711);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 911);
+    shouldEvaluateToSameObject("entries[1].target", target);
+  }
+  root.scrollTop = 150;
+  requestAnimationFrame(step5);
+}
+
+// This tests that notifications are generated even when the root element is off screen.
+function step5() {
+  entries = entries.concat(observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 3);
+  if (entries.length > 2) {
+    shouldBeEqualToNumber("entries[2].boundingClientRect.left", 11);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.right", 111);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.top", 861);
+    shouldBeEqualToNumber("entries[2].boundingClientRect.bottom", 961);
+    shouldBeEqualToNumber("entries[2].intersectionRect.left", 11);
+    shouldBeEqualToNumber("entries[2].intersectionRect.right", 111);
+    shouldBeEqualToNumber("entries[2].intersectionRect.top", 861);
+    shouldBeEqualToNumber("entries[2].intersectionRect.bottom", 911);
+    shouldBeEqualToNumber("entries[2].rootBounds.left", 11);
+    shouldBeEqualToNumber("entries[2].rootBounds.right", 111);
+    shouldBeEqualToNumber("entries[2].rootBounds.top", 711);
+    shouldBeEqualToNumber("entries[2].rootBounds.bottom", 911);
+    shouldEvaluateToSameObject("entries[2].target", target);
   }
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 0);
-      root.scrollTop = 150;
-      requestAnimationFrame(step2);
-    });
-  }
-
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 11);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 111);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 261);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 361);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 11);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 111);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 261);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 311);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", 11);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 111);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", 111);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 311);
-      shouldEvaluateToSameObject("entries[0].target", target);
-      document.scrollingElement.scrollTop = 0;
-      requestAnimationFrame(step3);
-    });
-  }
-
-  function step3() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      root.scrollTop = 0;
-      requestAnimationFrame(step4);
-    });
-  }
-
-  function step4() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 11);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 111);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", 1011);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 1111);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", 11);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 111);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", 711);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 911);
-      shouldEvaluateToSameObject("entries[1].target", target);
-      root.scrollTop = 150;
-      requestAnimationFrame(step5);
-    });
-  }
-
-  // This tests that notifications are generated even when the root element is off screen.
-  function step5() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 3);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.left", 11);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.right", 111);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.top", 861);
-      shouldBeEqualToNumber("entries[2].boundingClientRect.bottom", 961);
-      shouldBeEqualToNumber("entries[2].intersectionRect.left", 11);
-      shouldBeEqualToNumber("entries[2].intersectionRect.right", 111);
-      shouldBeEqualToNumber("entries[2].intersectionRect.top", 861);
-      shouldBeEqualToNumber("entries[2].intersectionRect.bottom", 911);
-      shouldBeEqualToNumber("entries[2].rootBounds.left", 11);
-      shouldBeEqualToNumber("entries[2].rootBounds.right", 111);
-      shouldBeEqualToNumber("entries[2].rootBounds.top", 711);
-      shouldBeEqualToNumber("entries[2].rootBounds.bottom", 911);
-      shouldEvaluateToSameObject("entries[2].target", target);
-      finishJSTest();
-    });
-  }
-
-  step0();
+  finishJSTest();
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target-expected.txt
index 4a1e57ba..ff17e0b 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target-expected.txt
@@ -1,4 +1,4 @@
-Iintersection observer test with zero-size target element.
+Intersection observer test with zero-size target element.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target.html b/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target.html
index 215f005..51010bb 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/same-document-zero-size-target.html
@@ -6,68 +6,66 @@
 <div style="width:100%; height:700px;"></div>
 
 <script>
-  description("Iintersection observer test with zero-size target element.");
-  var target = document.getElementById("target");
-  var entries = [];
-  observer_callback = function(changes) {
-    for (var i in changes)
-      entries.push(changes[i]);
-  };
-  var observer = new IntersectionObserver(observer_callback, {});
+description("Intersection observer test with zero-size target element.");
+var target = document.getElementById("target");
+var entries = [];
+var observer = new IntersectionObserver(changes => { entries = entries.concat(changes) }, {});
+
+onload = function() {
   observer.observe(target);
+  entries.push(...observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 0);
+  document.scrollingElement.scrollTop = 300;
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step1) });
+};
 
-  onload = function() {
-    shouldBeEqualToNumber("entries.length", 0);
-    document.scrollingElement.scrollTop = 300;
-    requestAnimationFrame(step1);
-  };
+function step1() {
+  entries.push(...observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 1);
+  if (entries.length > 0) {
+    shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.right", 8);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.top", 408);
+    shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 408);
+    shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
+    shouldBeEqualToNumber("entries[0].intersectionRect.right", 8);
+    shouldBeEqualToNumber("entries[0].intersectionRect.top", 408);
+    shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 408);
+    shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[0].target", target);
 
-  function step1() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 1);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.right", 8);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.top", 408);
-      shouldBeEqualToNumber("entries[0].boundingClientRect.bottom", 408);
-      shouldBeEqualToNumber("entries[0].intersectionRect.left", 8);
-      shouldBeEqualToNumber("entries[0].intersectionRect.right", 8);
-      shouldBeEqualToNumber("entries[0].intersectionRect.top", 408);
-      shouldBeEqualToNumber("entries[0].intersectionRect.bottom", 408);
-      shouldBeEqualToNumber("entries[0].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[0].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[0].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[0].target", target);
-
-      // ClientRect members of IntersectionObserverEntry should be stable.
-      shouldEvaluateToSameObject("entries[0].boundingClientRect", entries[0].boundingClientRect);
-      shouldEvaluateToSameObject("entries[0].intersectionRect", entries[0].intersectionRect);
-      shouldEvaluateToSameObject("entries[0].rootBounds", entries[0].rootBounds);
-
-      document.scrollingElement.scrollTop = 100;
-      requestAnimationFrame(step2);
-    });
+    // ClientRect members of IntersectionObserverEntry should be stable.
+    shouldEvaluateToSameObject("entries[0].boundingClientRect", entries[0].boundingClientRect);
+    shouldEvaluateToSameObject("entries[0].intersectionRect", entries[0].intersectionRect);
+    shouldEvaluateToSameObject("entries[0].rootBounds", entries[0].rootBounds);
   }
+  document.scrollingElement.scrollTop = 100;
+  requestAnimationFrame(step2);
+}
 
-  function step2() {
-    setTimeout(function() {
-      shouldBeEqualToNumber("entries.length", 2);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.right", 8);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.top", 608);
-      shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 608);
-      shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
-      shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
-      shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
-      shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
-      shouldEvaluateToSameObject("entries[1].target", target);
-      finishJSTest();
-      document.scrollingElement.scrollTop = 0;
-    });
+function step2() {
+  entries.push(...observer.takeRecords());
+  shouldBeEqualToNumber("entries.length", 2);
+  if (entries.length > 1) {
+    shouldBeEqualToNumber("entries[1].boundingClientRect.left", 8);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.right", 8);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.top", 608);
+    shouldBeEqualToNumber("entries[1].boundingClientRect.bottom", 608);
+    shouldBeEqualToNumber("entries[1].intersectionRect.left", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.right", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.top", 0);
+    shouldBeEqualToNumber("entries[1].intersectionRect.bottom", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.left", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.right", 785);
+    shouldBeEqualToNumber("entries[1].rootBounds.top", 0);
+    shouldBeEqualToNumber("entries[1].rootBounds.bottom", 600);
+    shouldEvaluateToSameObject("entries[1].target", target);
   }
-
+  finishJSTest();
+  document.scrollingElement.scrollTop = 0;
+}
 </script>
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/timestamp-expected.txt b/third_party/WebKit/LayoutTests/intersection-observer/timestamp-expected.txt
index 96b5d6c..e04bc4d 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/timestamp-expected.txt
+++ b/third_party/WebKit/LayoutTests/intersection-observer/timestamp-expected.txt
@@ -3,13 +3,13 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS topWindowTime - iframeWindowTime is > 2 * timestampTolerance
+PASS topWindowTime - iframeWindowTime is > 2.5 * timestampTolerance
 PASS topWindowEntries.length is 0
 PASS iframeWindowEntries.length is 0
 PASS topWindowEntries.length is 1
-PASS topWindowEntries[0].time is within 24 of topWindowTime
+PASS topWindowEntries[0].time is within 124 of topWindowTime
 PASS iframeWindowEntries.length is 1
-PASS iframeWindowEntries[0].time is within 24 of iframeWindowTime
+PASS iframeWindowEntries[0].time is within 124 of iframeWindowTime
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/timestamp.html b/third_party/WebKit/LayoutTests/intersection-observer/timestamp.html
index 47f1dcc..dfc004a 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/timestamp.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/timestamp.html
@@ -8,43 +8,48 @@
 description("Test that intersection observer time is relative to time in the callback context.");
 var topWindowEntries = [];
 var iframeWindowEntries = [];
+var topWindowObserver;
+var iframeWindowObserver;
 var targetIframe;
 var iframeScroller;
 var topWindowTime;
 var iframeWindowTime;
-var timestampTolerance = 24;  // 1.5 times frame duration.
+// TODO(szager): We should be able to use a much smaller value for timestampTolerance
+// by using testRunner.runIdleTasks after this patch lands:
+//   https://codereview.chromium.org/1806133002/
+var timestampTolerance = 124;  // ~= 100ms idle callback timeout + 1.5 * frame time
 
 function step0() {
-  setTimeout(function() {
-    // Test results are only significant if there's a sufficient gap between
-    // top window time and iframe window time.
-    topWindowTime = performance.now();
-    iframeWindowTime = targetIframe.contentWindow.performance.now();
-    shouldBeGreaterThan("topWindowTime - iframeWindowTime", "2 * timestampTolerance");
+  // Test results are only significant if there's a sufficient gap between
+  // top window time and iframe window time.
+  topWindowTime = performance.now();
+  iframeWindowTime = targetIframe.contentWindow.performance.now();
+  shouldBeGreaterThan("topWindowTime - iframeWindowTime", "2.5 * timestampTolerance");
 
-    shouldBeEqualToNumber("topWindowEntries.length", 0);
-    shouldBeEqualToNumber("iframeWindowEntries.length", 0);
-    document.scrollingElement.scrollTop = 200;
-    iframeScroller.scrollTop = 250;
-    requestAnimationFrame(step1);
-  });
+  topWindowEntries = topWindowEntries.concat(topWindowObserver.takeRecords());
+  iframeWindowEntries = iframeWindowEntries.concat(iframeWindowObserver.takeRecords());
+  shouldBeEqualToNumber("topWindowEntries.length", 0);
+  shouldBeEqualToNumber("iframeWindowEntries.length", 0);
+  document.scrollingElement.scrollTop = 200;
+  iframeScroller.scrollTop = 250;
+  requestAnimationFrame(step1);
 }
 
 function step1() {
-  setTimeout(function() {
-    topWindowTime = performance.now();
-    iframeWindowTime = targetIframe.contentWindow.performance.now();
-    shouldBeEqualToNumber("topWindowEntries.length", 1);
-    if (topWindowEntries.length) {
-      shouldBeCloseTo("topWindowEntries[0].time", "topWindowTime", timestampTolerance);
-    }
-    shouldBeEqualToNumber("iframeWindowEntries.length", 1);
-    if (iframeWindowEntries.length) {
-      shouldBeCloseTo("iframeWindowEntries[0].time", "iframeWindowTime", timestampTolerance);
-    }
-    finishJSTest();
-    document.scrollingElement.scrollTop = 0;
-  });
+  topWindowEntries = topWindowEntries.concat(topWindowObserver.takeRecords());
+  iframeWindowEntries = iframeWindowEntries.concat(iframeWindowObserver.takeRecords());
+  topWindowTime = performance.now();
+  iframeWindowTime = targetIframe.contentWindow.performance.now();
+  shouldBeEqualToNumber("topWindowEntries.length", 1);
+  if (topWindowEntries.length)
+    shouldBeCloseTo("topWindowEntries[0].time", "topWindowTime", timestampTolerance);
+
+  shouldBeEqualToNumber("iframeWindowEntries.length", 1);
+  if (iframeWindowEntries.length) {
+    shouldBeCloseTo("iframeWindowEntries[0].time", "iframeWindowTime", timestampTolerance);
+  }
+  finishJSTest();
+  document.scrollingElement.scrollTop = 0;
 }
 
 function runTest() {
@@ -53,21 +58,22 @@
 
   // Observer created here, callback created in iframe context.  Timestamps should be
   // from this window.
-  var observer = new IntersectionObserver(targetIframe.contentDocument.createObserverCallback(topWindowEntries), {});
-  observer.observe(target);
+  topWindowObserver = new IntersectionObserver(targetIframe.contentDocument.createObserverCallback(topWindowEntries), {});
+  topWindowObserver.observe(target);
 
   // Callback created here, observer created in iframe.  Timestamps should be
   // from iframe window.
-  observer = targetIframe.contentDocument.createObserver(function(newEntries) {
+  iframeWindowObserver = targetIframe.contentDocument.createObserver(function(newEntries) {
     for (var i = 0; i < newEntries.length; i++)
       iframeWindowEntries.push(newEntries[i]);
   });
-  observer.observe(target);
+  iframeWindowObserver.observe(target);
 
-  step0();
+  // See README for explanation of double RAF.
+  requestAnimationFrame(() => { requestAnimationFrame(step0) });
 }
 
-window.onload = function() {
+onload = function() {
   setTimeout(function() {
     targetIframe = document.createElement("iframe");
     targetIframe.src = "../resources/intersection-observer-timestamp-subframe.html";
@@ -75,7 +81,7 @@
     var afterFrame = document.getElementById("afterFrame");
     afterFrame.parentNode.insertBefore(targetIframe, afterFrame);
     targetIframe.onload = runTest;
-  }, 100);
+  }, 2.5 * timestampTolerance);
 };
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/text-color-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/text-color-change-expected.txt
index 8ca180d..84376d5 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/text-color-change-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/text-color-change-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 61, 48, 200]
+        [8, 61, 48, 185]
       ],
       "paintInvalidationClients": [
         "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/updating-scrolling-container-and-content-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/updating-scrolling-container-and-content-expected.txt
index af41229..33b45a9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/updating-scrolling-container-and-content-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/updating-scrolling-container-and-content-expected.txt
@@ -6,8 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 298, 74, 10],
-        [8, 278, 74, 19],
+        [8, 278, 74, 15],
         [8, 258, 74, 19],
         [8, 238, 74, 19],
         [8, 218, 74, 19],
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-colorspace-hw-expected.png
index 38263a2f..2dfb8993 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-expected.png
index b22aa171..7c23502 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-hw-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-hw-expected.png
index 5e6ff29..6fdcdef 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-ordering-hw-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-ordering-hw-expected.png
index b5a9589b..448298d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-ordering-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-ordering-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-zoom-hw-expected.png
index 2a0692a..08bbc7d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
index e923a7a..a6d3776e 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
@@ -6,8 +6,8 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [100, 120, 35, 19],
-        [100, 120, 35, 19],
+        [100, 120, 34, 19],
+        [100, 120, 34, 19],
         [100, 120, 27, 19]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invisible-text-after-scrolling-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invisible-text-after-scrolling-expected.txt
index 4011a49..1e7e587 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invisible-text-after-scrolling-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invisible-text-after-scrolling-expected.txt
@@ -9,7 +9,7 @@
           text run at (0,20) width 82: "(Bug 12163)."
 layer at (10,72) size 502x502 clip at (11,73) size 485x485 scrollY 550.00 scrollWidth 5000 scrollHeight 5005
   LayoutBlockFlow (positioned) {div} at (10,72) size 502x502 [border: (1px solid #AAAAAA)]
-    LayoutSVGRoot {svg} at (11,72) size 501x502
+    LayoutSVGRoot {svg} at (11,73) size 485x485
       LayoutSVGText {text} at (-2,3) size 78x22 contains 1 chunk(s)
         LayoutSVGInlineText {#text} at (0,0) size 78x22
           chunk 1 text run 1 at (0.00,20.00) startOffset 0 endOffset 11 width 75.00: "just a text"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/text-color-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/text-color-change-expected.txt
deleted file mode 100644
index 5661be4..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/text-color-change-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-  "bounds": [800, 600],
-  "children": [
-    {
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "repaintRects": [
-        [8, 57, 47, 200]
-      ],
-      "paintInvalidationClients": [
-        "LayoutText #text",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'",
-        "InlineTextBox '  Text'",
-        "InlineTextBox '\n'"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/updating-scrolling-container-and-content-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/updating-scrolling-container-and-content-expected.txt
deleted file mode 100644
index 9afaa0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/updating-scrolling-container-and-content-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "bounds": [800, 600],
-  "children": [
-    {
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "repaintRects": [
-        [8, 275, 75, 18],
-        [8, 257, 75, 18],
-        [8, 239, 75, 18],
-        [8, 221, 75, 18],
-        [8, 203, 75, 18],
-        [8, 185, 75, 18],
-        [8, 167, 75, 18],
-        [8, 149, 75, 18],
-        [8, 131, 75, 18],
-        [8, 113, 75, 18],
-        [8, 108, 75, 5]
-      ],
-      "paintInvalidationClients": [
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'",
-        "LayoutText #text",
-        "InlineTextBox 'CONTENT'"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/text-color-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/text-color-change-expected.txt
index bc3cde35..cb48118 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/text-color-change-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/text-color-change-expected.txt
@@ -6,7 +6,92 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 57, 47, 200]
+        [8, 57, 47, 185]
+      ],
+      "paintInvalidationClients": [
+        "LayoutText #text",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'",
+        "InlineTextBox '  Text'",
+        "InlineTextBox '\n'"
       ]
     }
   ]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/updating-scrolling-container-and-content-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/updating-scrolling-container-and-content-expected.txt
index a46291ce..9afaa0c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/updating-scrolling-container-and-content-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/updating-scrolling-container-and-content-expected.txt
@@ -17,6 +17,34 @@
         [8, 131, 75, 18],
         [8, 113, 75, 18],
         [8, 108, 75, 5]
+      ],
+      "paintInvalidationClients": [
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'",
+        "LayoutText #text",
+        "InlineTextBox 'CONTENT'"
       ]
     }
   ]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
index e3af28f..e5e43ccb9 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-expected.png
index ffc95df..d3d18438 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-hw-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-hw-expected.png
index ac7010bb..5d3f2eeb 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-ordering-hw-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-ordering-hw-expected.png
index e6ae33d0..034b904 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-ordering-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-ordering-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-expected.png
index 3872276..87a22a5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
index b60a7fb..dabc7f8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
index 05d3266..6f279e2 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
@@ -6,8 +6,8 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [100, 118, 35, 18],
-        [100, 118, 35, 18],
+        [100, 118, 34, 18],
+        [100, 118, 34, 18],
         [100, 118, 30, 18]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invisible-text-after-scrolling-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invisible-text-after-scrolling-expected.txt
index 2fd4528..1eefccaf 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invisible-text-after-scrolling-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invisible-text-after-scrolling-expected.txt
@@ -9,7 +9,7 @@
           text run at (0,18) width 132: "appear (Bug 12163)."
 layer at (10,68) size 502x502 clip at (11,69) size 485x485 scrollY 550.00 scrollWidth 5000 scrollHeight 5004
   LayoutBlockFlow (positioned) {div} at (10,68) size 502x502 [border: (1px solid #AAAAAA)]
-    LayoutSVGRoot {svg} at (11,68) size 501x502
+    LayoutSVGRoot {svg} at (11,69) size 485x485
       LayoutSVGText {text} at (-2,2) size 80x23 contains 1 chunk(s)
         LayoutSVGInlineText {#text} at (0,0) size 79x23
           chunk 1 text run 1 at (0.00,20.00) startOffset 0 endOffset 11 width 77.76: "just a text"
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/text-color-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/text-color-change-expected.txt
index ebac7869..34f77cc 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/text-color-change-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/text-color-change-expected.txt
@@ -6,7 +6,7 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [8, 57, 48, 200]
+        [8, 57, 48, 185]
       ],
       "paintInvalidationClients": [
         "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
index 01d7ae4..40fee94 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-expected.png
index 57859a5..25d6a93c 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-hw-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-hw-expected.png
index ceb2e9a..7fe991a 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-ordering-hw-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-ordering-hw-expected.png
index 96056fc4..462787c9 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-ordering-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-ordering-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-expected.png
index 9c14b9c..c968e20f5 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
index 3dbb064..26bd7bc0 100644
--- a/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/layout-state-scrolloffset3-expected.txt
index 137d1bf..0c31cf6 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/layout-state-scrolloffset3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/layout-state-scrolloffset3-expected.txt
@@ -6,8 +6,8 @@
       "contentsOpaque": true,
       "drawsContent": true,
       "repaintRects": [
-        [100, 118, 35, 17],
-        [100, 118, 35, 17],
+        [100, 118, 34, 17],
+        [100, 118, 34, 17],
         [100, 118, 30, 17]
       ],
       "paintInvalidationClients": [
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/invisible-text-after-scrolling-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/custom/invisible-text-after-scrolling-expected.txt
index 7dface3..c3fd81f 100644
--- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/invisible-text-after-scrolling-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/invisible-text-after-scrolling-expected.txt
@@ -9,7 +9,7 @@
           text run at (0,18) width 132: "appear (Bug 12163)."
 layer at (10,68) size 502x502 clip at (11,69) size 485x485 scrollY 550.00 scrollWidth 5000 scrollHeight 5004
   LayoutBlockFlow (positioned) {div} at (10,68) size 502x502 [border: (1px solid #AAAAAA)]
-    LayoutSVGRoot {svg} at (11,68) size 501x502
+    LayoutSVGRoot {svg} at (11,69) size 485x485
       LayoutSVGText {text} at (-2,2) size 80x23 contains 1 chunk(s)
         LayoutSVGInlineText {#text} at (0,0) size 80x23
           chunk 1 text run 1 at (0.00,20.00) startOffset 0 endOffset 11 width 77.76: "just a text"
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 674aa7a..77a92c7 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -1193,6 +1193,7 @@
     getter timeline
     getter title
     getter visibilityState
+    getter visualViewport
     getter webkitCurrentFullScreenElement
     getter webkitFullscreenElement
     getter webkitFullscreenEnabled
@@ -6359,6 +6360,16 @@
     setter onaddtrack
     setter onchange
     setter onremovetrack
+interface VisualViewport
+    attribute @@toStringTag
+    getter clientHeight
+    getter clientWidth
+    getter pageScale
+    getter scrollLeft
+    getter scrollTop
+    method constructor
+    setter scrollLeft
+    setter scrollTop
 interface WaveShaperNode : AudioNode
     attribute @@toStringTag
     getter curve
diff --git a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
index 36a7772..3b20ec1 100644
--- a/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/OriginTrials.cpp.tmpl
@@ -21,7 +21,7 @@
 // static
 OriginTrials* OriginTrials::from(ExecutionContext* host)
 {
-    OriginTrials* originTrials = reinterpret_cast<OriginTrials*>(Supplement<ExecutionContext>::from(host, supplementName()));
+    OriginTrials* originTrials = static_cast<OriginTrials*>(Supplement<ExecutionContext>::from(host, supplementName()));
     if (!originTrials) {
         originTrials = new OriginTrials(host->createOriginTrialContext());
         Supplement<ExecutionContext>::provideTo(*host, supplementName(), originTrials);
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi
index 09e1ff3..5e7158e3 100644
--- a/third_party/WebKit/Source/core/core.gypi
+++ b/third_party/WebKit/Source/core/core.gypi
@@ -162,6 +162,7 @@
             'frame/History.idl',
             'frame/ImageBitmap.idl',
             'frame/Location.idl',
+            'frame/VisualViewport.idl',
             'html/FormData.idl',
             'html/HTMLAllCollection.idl',
             'html/HTMLAnchorElement.idl',
@@ -4047,6 +4048,7 @@
             'layout/ScrollAnchorTest.cpp',
             'layout/compositing/CompositedLayerMappingTest.cpp',
             'layout/shapes/BoxShapeTest.cpp',
+            'layout/svg/LayoutSVGRootTest.cpp',
             'loader/DocumentLoadTimingTest.cpp',
             'loader/FrameFetchContextTest.cpp',
             'loader/LinkHeaderTest.cpp',
diff --git a/third_party/WebKit/Source/core/css/CSSCalculationValue.cpp b/third_party/WebKit/Source/core/css/CSSCalculationValue.cpp
index 58f4167..c7e37527 100644
--- a/third_party/WebKit/Source/core/css/CSSCalculationValue.cpp
+++ b/third_party/WebKit/Source/core/css/CSSCalculationValue.cpp
@@ -636,7 +636,7 @@
         if (checkDepthAndIndex(&depth, tokens) != OK)
             return false;
 
-        if (tokens.peek().type() == LeftParenthesisToken) {
+        if (tokens.peek().type() == LeftParenthesisToken || tokens.peek().functionId() == CSSValueCalc) {
             CSSParserTokenRange innerRange = tokens.consumeBlock();
             tokens.consumeWhitespace();
             innerRange.consumeWhitespace();
diff --git a/third_party/WebKit/Source/core/css/RuleSet.cpp b/third_party/WebKit/Source/core/css/RuleSet.cpp
index e13b6e2..3d19f18 100644
--- a/third_party/WebKit/Source/core/css/RuleSet.cpp
+++ b/third_party/WebKit/Source/core/css/RuleSet.cpp
@@ -204,10 +204,8 @@
         return true;
     }
 
-    // TODO(esprehn): We shouldn't favor tagName over m_shadowHostRules, it means
-    // selectors with div:host end up in the tagName list matched against all tags
-    // even though they can't match anything at all.
     if (component.isHostPseudoClass()) {
+        ASSERT(component.isLastInTagHistory() || (component.relation() == CSSSelector::SubSelector && component.tagHistory()->match() == CSSSelector::PseudoElement));
         m_shadowHostRules.append(ruleData);
         return true;
     }
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
index dae347c..f1a07252 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -1230,6 +1230,13 @@
     return body();
 }
 
+VisualViewport* Document::visualViewport()
+{
+    if (FrameHost* host = frameHost())
+        return &host->visualViewport();
+    return nullptr;
+}
+
 /*
  * Performs three operations:
  *  1. Convert control characters to spaces
@@ -4018,6 +4025,13 @@
     ensureScriptedAnimationController().enqueueMediaQueryChangeListeners(listeners);
 }
 
+void Document::enqueueVisualViewportChangedEvent()
+{
+    RawPtr<Event> event = Event::create(EventTypeNames::visualviewportchanged);
+    event->setTarget(this);
+    ensureScriptedAnimationController().enqueuePerFrameEvent(event.release());
+}
+
 void Document::dispatchEventsForPrinting()
 {
     if (!m_scriptedAnimationController)
diff --git a/third_party/WebKit/Source/core/dom/Document.h b/third_party/WebKit/Source/core/dom/Document.h
index 646af18..5b7e5af 100644
--- a/third_party/WebKit/Source/core/dom/Document.h
+++ b/third_party/WebKit/Source/core/dom/Document.h
@@ -51,6 +51,7 @@
 #include "core/frame/DOMTimerCoordinator.h"
 #include "core/frame/LocalDOMWindow.h"
 #include "core/frame/OriginsUsingFeatures.h"
+#include "core/frame/VisualViewport.h"
 #include "core/html/CollectionType.h"
 #include "core/html/parser/ParserSynchronizationPolicy.h"
 #include "core/page/PageVisibilityState.h"
@@ -298,6 +299,7 @@
     HeapVector<Member<Element>> elementsFromPoint(int x, int y) const;
     RawPtr<Range> caretRangeFromPoint(int x, int y);
     Element* scrollingElement();
+    VisualViewport* visualViewport();
 
     String readyState() const;
 
@@ -900,6 +902,7 @@
     // Only one event for a target/event type combination will be dispatched per frame.
     void enqueueUniqueAnimationFrameEvent(RawPtr<Event>);
     void enqueueMediaQueryChangeListeners(HeapVector<Member<MediaQueryListListener>>&);
+    void enqueueVisualViewportChangedEvent();
 
     void dispatchEventsForPrinting();
 
diff --git a/third_party/WebKit/Source/core/dom/Document.idl b/third_party/WebKit/Source/core/dom/Document.idl
index 307c2f31..3523cc6 100644
--- a/third_party/WebKit/Source/core/dom/Document.idl
+++ b/third_party/WebKit/Source/core/dom/Document.idl
@@ -149,6 +149,9 @@
 
     readonly attribute Element? scrollingElement;
 
+    // Visual Viewport API
+    // https://github.com/WICG/ViewportAPI
+    [RuntimeEnabled=VisualViewportAPI] readonly attribute VisualViewport? visualViewport;
 
     // Pointer Lock
     // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#extensions-to-the-document-interface
diff --git a/third_party/WebKit/Source/core/dom/IdleRequestCallback.h b/third_party/WebKit/Source/core/dom/IdleRequestCallback.h
index a54f3d0..a30ba581 100644
--- a/third_party/WebKit/Source/core/dom/IdleRequestCallback.h
+++ b/third_party/WebKit/Source/core/dom/IdleRequestCallback.h
@@ -20,6 +20,7 @@
 
     virtual void handleEvent(IdleDeadline*) = 0;
 };
+
 } // namespace blink
 
 #endif // IdleRequestCallback_h
diff --git a/third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp b/third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp
index 055b3c64..3bdf81d4 100644
--- a/third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp
+++ b/third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp
@@ -5,6 +5,7 @@
 #include "core/dom/IntersectionObserverController.h"
 
 #include "core/dom/Document.h"
+#include "core/dom/IdleRequestOptions.h"
 
 namespace blink {
 
@@ -19,8 +20,8 @@
 
 IntersectionObserverController::IntersectionObserverController(Document* document)
     : ActiveDOMObject(document)
-    , m_timer(this, &IntersectionObserverController::deliverIntersectionObservations)
-    , m_timerFiredWhileSuspended(false)
+    , m_callbackID(0)
+    , m_callbackFiredWhileSuspended(false)
 {
 }
 
@@ -28,28 +29,39 @@
 
 void IntersectionObserverController::scheduleIntersectionObserverForDelivery(IntersectionObserver& observer)
 {
-    // TODO(szager): use idle callback with a timeout.  Until we do that, there is no
-    // reliable way to write a test for takeRecords, because it's impossible to guarantee
-    // that javascript will get a chance to run before the timer fires.
-    if (!m_timer.isActive())
-        m_timer.startOneShot(0, BLINK_FROM_HERE);
     m_pendingIntersectionObservers.add(&observer);
+    if (m_callbackID)
+        return;
+    Document* document = toDocument(getExecutionContext());
+    if (!document)
+        return;
+    IdleRequestOptions options;
+    // The IntersectionObserver spec mandates that notifications be sent within 100ms.
+    options.setTimeout(100);
+    m_callbackID = document->requestIdleCallback(this, options);
 }
 
 void IntersectionObserverController::resume()
 {
-    // If the timer fired while DOM objects were suspended, notifications might be late, so deliver
-    // them right away (rather than waiting for m_timer to fire again).
-    if (m_timerFiredWhileSuspended) {
-        m_timerFiredWhileSuspended = false;
-        deliverIntersectionObservations(nullptr);
+    // If the callback fired while DOM objects were suspended, notifications might be late, so deliver
+    // them right away (rather than waiting to fire again).
+    if (m_callbackFiredWhileSuspended) {
+        m_callbackFiredWhileSuspended = false;
+        deliverIntersectionObservations();
     }
 }
 
-void IntersectionObserverController::deliverIntersectionObservations(Timer<IntersectionObserverController>*)
+void IntersectionObserverController::handleEvent(IdleDeadline*)
+{
+    ASSERT(m_callbackID);
+    m_callbackID = 0;
+    deliverIntersectionObservations();
+}
+
+void IntersectionObserverController::deliverIntersectionObservations()
 {
     if (getExecutionContext()->activeDOMObjectsAreSuspended()) {
-        m_timerFiredWhileSuspended = true;
+        m_callbackFiredWhileSuspended = true;
         return;
     }
     IntersectionObserverVector observers;
@@ -88,6 +100,7 @@
     visitor->trace(m_trackedIntersectionObservers);
     visitor->trace(m_pendingIntersectionObservers);
     ActiveDOMObject::trace(visitor);
+    IdleRequestCallback::trace(visitor);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/IntersectionObserverController.h b/third_party/WebKit/Source/core/dom/IntersectionObserverController.h
index 3757835f..998685d0 100644
--- a/third_party/WebKit/Source/core/dom/IntersectionObserverController.h
+++ b/third_party/WebKit/Source/core/dom/IntersectionObserverController.h
@@ -6,8 +6,8 @@
 #define IntersectionObserverController_h
 
 #include "core/dom/Element.h"
+#include "core/dom/IdleRequestCallback.h"
 #include "core/dom/IntersectionObserver.h"
-#include "platform/Timer.h"
 #include "platform/heap/Handle.h"
 #include "wtf/HashSet.h"
 
@@ -16,16 +16,17 @@
 
 namespace blink {
 
-class IntersectionObserverController : public GarbageCollectedFinalized<IntersectionObserverController>, public ActiveDOMObject {
+class IntersectionObserverController : public IdleRequestCallback, public ActiveDOMObject {
     USING_GARBAGE_COLLECTED_MIXIN(IntersectionObserverController);
 public:
     static IntersectionObserverController* create(Document*);
     ~IntersectionObserverController();
 
     void resume() override;
+    void handleEvent(IdleDeadline*) override;
 
     void scheduleIntersectionObserverForDelivery(IntersectionObserver&);
-    void deliverIntersectionObservations(Timer<IntersectionObserverController>*);
+    void deliverIntersectionObservations();
     void computeTrackedIntersectionObservations();
     void addTrackedObserver(IntersectionObserver&);
     void removeTrackedObserversForRoot(const Node&);
@@ -36,13 +37,13 @@
     explicit IntersectionObserverController(Document*);
 
 private:
-    Timer<IntersectionObserverController> m_timer;
     // IntersectionObservers for which this is the tracking document.
     HeapHashSet<WeakMember<IntersectionObserver>> m_trackedIntersectionObservers;
     // IntersectionObservers for which this is the execution context of the callback.
     HeapHashSet<Member<IntersectionObserver>> m_pendingIntersectionObservers;
 
-    bool m_timerFiredWhileSuspended;
+    int m_callbackID;
+    bool m_callbackFiredWhileSuspended;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/events/EventTypeNames.in b/third_party/WebKit/Source/core/events/EventTypeNames.in
index 2c0aef08..a7f5ac4 100644
--- a/third_party/WebKit/Source/core/events/EventTypeNames.in
+++ b/third_party/WebKit/Source/core/events/EventTypeNames.in
@@ -242,6 +242,7 @@
 updatestart
 upgradeneeded
 versionchange
+visualviewportchanged
 visibilitychange
 voiceschanged
 volumechange
diff --git a/third_party/WebKit/Source/core/frame/Settings.cpp b/third_party/WebKit/Source/core/frame/Settings.cpp
index 947ef3e..7ba6251f 100644
--- a/third_party/WebKit/Source/core/frame/Settings.cpp
+++ b/third_party/WebKit/Source/core/frame/Settings.cpp
@@ -58,12 +58,11 @@
 #endif
 
 Settings::Settings()
-    : m_openGLMultisamplingEnabled(false)
 #if DEBUG_TEXT_AUTOSIZING_ON_DESKTOP
-    , m_textAutosizingWindowSizeOverride(320, 480)
+    : m_textAutosizingWindowSizeOverride(320, 480)
     , m_textAutosizingEnabled(true)
 #else
-    , m_textAutosizingEnabled(false)
+    : m_textAutosizingEnabled(false)
 #endif
     SETTINGS_INITIALIZER_LIST
 {
@@ -116,13 +115,4 @@
     return ScrollbarTheme::mockScrollbarsEnabled();
 }
 
-void Settings::setOpenGLMultisamplingEnabled(bool flag)
-{
-    if (m_openGLMultisamplingEnabled == flag)
-        return;
-
-    m_openGLMultisamplingEnabled = flag;
-    invalidate(SettingsDelegate::MultisamplingChange);
-}
-
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/frame/Settings.h b/third_party/WebKit/Source/core/frame/Settings.h
index a55c0773..2adf947 100644
--- a/third_party/WebKit/Source/core/frame/Settings.h
+++ b/third_party/WebKit/Source/core/frame/Settings.h
@@ -67,11 +67,6 @@
     static void setMockScrollbarsEnabled(bool flag);
     static bool mockScrollbarsEnabled();
 
-    // FIXME: naming_utilities.py isn't smart enough to handle OpenGL yet.
-    // It could handle "GL", but that seems a bit overly broad.
-    void setOpenGLMultisamplingEnabled(bool flag);
-    bool openGLMultisamplingEnabled() { return m_openGLMultisamplingEnabled; }
-
     void setDelegate(SettingsDelegate*);
 
 private:
@@ -82,7 +77,6 @@
     SettingsDelegate* m_delegate;
 
     GenericFontFamilySettings m_genericFontFamilySettings;
-    bool m_openGLMultisamplingEnabled : 1;
     IntSize m_textAutosizingWindowSizeOverride;
     bool m_textAutosizingEnabled : 1;
 
diff --git a/third_party/WebKit/Source/core/frame/SettingsDelegate.h b/third_party/WebKit/Source/core/frame/SettingsDelegate.h
index 624bb6c..561cfa7 100644
--- a/third_party/WebKit/Source/core/frame/SettingsDelegate.h
+++ b/third_party/WebKit/Source/core/frame/SettingsDelegate.h
@@ -55,7 +55,6 @@
         ViewportDescriptionChange,
         ViewportRuleChange,
         DNSPrefetchingChange,
-        MultisamplingChange,
         ImageLoadingChange,
         TextAutosizingChange,
         FontFamilyChange,
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
index b39222f..972c3bd 100644
--- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
@@ -85,6 +85,24 @@
     ScrollableArea::trace(visitor);
 }
 
+void VisualViewport::updateLayoutIgnorePendingStylesheets()
+{
+    if (!mainFrame())
+        return;
+
+    if (Document* document = mainFrame()->document())
+        document->updateLayoutIgnorePendingStylesheets();
+}
+
+void VisualViewport::enqueueChangedEvent()
+{
+    if (!RuntimeEnabledFeatures::visualViewportAPIEnabled())
+        return;
+
+    if (Document* document = mainFrame()->document())
+        document->enqueueVisualViewportChangedEvent();
+}
+
 void VisualViewport::setSize(const IntSize& size)
 {
     if (m_size == size)
@@ -104,6 +122,8 @@
     if (!mainFrame())
         return;
 
+    enqueueChangedEvent();
+
     bool autosizerNeedsUpdating = widthDidChange
         && mainFrame()->settings()
         && mainFrame()->settings()->textAutosizingEnabled();
@@ -189,6 +209,55 @@
     setScaleAndLocation(scale, m_offset);
 }
 
+double VisualViewport::scrollLeft()
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    return visibleRect().x();
+}
+
+double VisualViewport::scrollTop()
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    return visibleRect().y();
+}
+
+void VisualViewport::setScrollLeft(double x)
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    setLocation(FloatPoint(x, visibleRect().y()));
+}
+
+void VisualViewport::setScrollTop(double y)
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    setLocation(FloatPoint(visibleRect().x(), y));
+}
+
+double VisualViewport::clientWidth()
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    return visibleRect().width();
+}
+
+double VisualViewport::clientHeight()
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    return visibleRect().height();
+}
+
+double VisualViewport::pageScale()
+{
+    updateLayoutIgnorePendingStylesheets();
+
+    return m_scale;
+}
+
 void VisualViewport::setScaleAndLocation(float scale, const FloatPoint& location)
 {
     if (!mainFrame())
@@ -224,6 +293,8 @@
     if (!valuesChanged)
         return;
 
+    enqueueChangedEvent();
+
     InspectorInstrumentation::didUpdateLayout(mainFrame());
     mainFrame()->loader().saveScrollState();
 
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.h b/third_party/WebKit/Source/core/frame/VisualViewport.h
index 749c3a2..54c6e763 100644
--- a/third_party/WebKit/Source/core/frame/VisualViewport.h
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.h
@@ -32,6 +32,7 @@
 #define VisualViewport_h
 
 #include "core/CoreExport.h"
+#include "core/events/Event.h"
 #include "platform/geometry/FloatPoint.h"
 #include "platform/geometry/FloatRect.h"
 #include "platform/geometry/IntSize.h"
@@ -61,8 +62,13 @@
 // offset is set through the GraphicsLayer <-> CC sync mechanisms. Its contents is the page's
 // main FrameView, which corresponds to the outer viewport. The inner viewport is always contained
 // in the outer viewport and can pan within it.
-class CORE_EXPORT VisualViewport final : public GarbageCollectedFinalized<VisualViewport>, public GraphicsLayerClient, public ScrollableArea {
+class CORE_EXPORT VisualViewport final
+    : public GarbageCollectedFinalized<VisualViewport>
+    , public GraphicsLayerClient
+    , public ScriptWrappable
+    , public ScrollableArea {
     USING_GARBAGE_COLLECTED_MIXIN(VisualViewport);
+    DEFINE_WRAPPERTYPEINFO();
 public:
     static RawPtr<VisualViewport> create(FrameHost& host)
     {
@@ -197,6 +203,15 @@
     Widget* getWidget() override;
     CompositorAnimationTimeline* compositorAnimationTimeline() const override;
 
+    // Visual Viewport API implementation.
+    double scrollLeft();
+    double scrollTop();
+    void setScrollLeft(double x);
+    void setScrollTop(double y);
+    double clientWidth();
+    double clientHeight();
+    double pageScale();
+
     // Used for gathering data on user pinch-zoom statistics.
     void userDidChangeScale();
     void sendUMAMetrics();
@@ -211,6 +226,10 @@
 
     bool visualViewportSuppliesScrollbars() const;
 
+    void updateLayoutIgnorePendingStylesheets();
+
+    void enqueueChangedEvent();
+
     // GraphicsLayerClient implementation.
     bool needsRepaint(const GraphicsLayer&) const { ASSERT_NOT_REACHED(); return true; }
     IntRect computeInterestRect(const GraphicsLayer*, const IntRect&) const;
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.idl b/third_party/WebKit/Source/core/frame/VisualViewport.idl
new file mode 100644
index 0000000..eafa02e
--- /dev/null
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.idl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ // Visual Viewport API.
+ // WICG proposal: https://github.com/WICG/ViewportAPI
+
+[
+    RuntimeEnabled=VisualViewportAPI,
+    GarbageCollected,
+] interface VisualViewport {
+    attribute double scrollTop;
+    attribute double scrollLeft;
+
+    readonly attribute double clientWidth;
+    readonly attribute double clientHeight;
+
+    readonly attribute double pageScale;
+};
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
index fa3ccc5..b2e3425 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorDOMAgent.cpp
@@ -70,7 +70,7 @@
 #include "core/inspector/InspectorHistory.h"
 #include "core/inspector/InstrumentingAgents.h"
 #include "core/layout/HitTestResult.h"
-#include "core/layout/LayoutView.h"
+#include "core/layout/api/LayoutViewItem.h"
 #include "core/loader/DocumentLoader.h"
 #include "core/page/FrameTree.h"
 #include "core/page/Page.h"
@@ -1362,7 +1362,7 @@
         return;
     HitTestRequest request(HitTestRequest::Move | HitTestRequest::ReadOnly | HitTestRequest::AllowChildFrameContent);
     HitTestResult result(request, IntPoint(x, y));
-    m_document->frame()->contentLayoutObject()->hitTest(result);
+    m_document->frame()->contentLayoutItem().hitTest(result);
     Node* node = result.innerPossiblyPseudoNode();
     while (node && node->getNodeType() == Node::TEXT_NODE)
         node = node->parentNode();
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.cpp
index 3d706a3..660db57 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.cpp
@@ -146,11 +146,6 @@
     m_v8DebuggerAgent->resume(errorString);
 }
 
-void InspectorDebuggerAgent::stepIntoAsync(ErrorString* errorString)
-{
-    m_v8DebuggerAgent->stepIntoAsync(errorString);
-}
-
 void InspectorDebuggerAgent::searchInContent(ErrorString* errorString,
     const String16& inScriptId,
     const String16& inQuery,
@@ -259,21 +254,6 @@
     setTrackingAsyncCalls(m_v8DebuggerAgent->trackingAsyncCalls());
 }
 
-void InspectorDebuggerAgent::flushAsyncOperationEvents(ErrorString* errorString)
-{
-    m_v8DebuggerAgent->flushAsyncOperationEvents(errorString);
-}
-
-void InspectorDebuggerAgent::setAsyncOperationBreakpoint(ErrorString* errorString, int inOperationId)
-{
-    m_v8DebuggerAgent->setAsyncOperationBreakpoint(errorString, inOperationId);
-}
-
-void InspectorDebuggerAgent::removeAsyncOperationBreakpoint(ErrorString* errorString, int inOperationId)
-{
-    m_v8DebuggerAgent->removeAsyncOperationBreakpoint(errorString, inOperationId);
-}
-
 void InspectorDebuggerAgent::setBlackboxedRanges(
     ErrorString* errorString,
     const String16& inScriptId,
diff --git a/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h b/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h
index 40498698..efaa8777 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h
+++ b/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h
@@ -59,7 +59,6 @@
     void stepOut(ErrorString*) override;
     void pause(ErrorString*) override;
     void resume(ErrorString*) override;
-    void stepIntoAsync(ErrorString*) override;
     void searchInContent(ErrorString*, const String16& scriptId, const String16& query, const Maybe<bool>& caseSensitive, const Maybe<bool>& isRegex, OwnPtr<protocol::Array<protocol::Debugger::SearchMatch>>* result) override;
     void canSetScriptSource(ErrorString*, bool* result) override;
     void setScriptSource(ErrorString*, const String16& scriptId, const String16& scriptSource, const Maybe<bool>& preview, Maybe<protocol::Array<protocol::Debugger::CallFrame>>* callFrames, Maybe<bool>* stackChanged, Maybe<protocol::Runtime::StackTrace>* asyncStackTrace, Maybe<protocol::Debugger::SetScriptSourceError>* compileError) override;
@@ -73,9 +72,6 @@
     void setVariableValue(ErrorString*, int scopeNumber, const String16& variableName, PassOwnPtr<protocol::Runtime::CallArgument> newValue, const String16& callFrameId) override;
     void getBacktrace(ErrorString*, OwnPtr<protocol::Array<protocol::Debugger::CallFrame>>* callFrames, Maybe<protocol::Runtime::StackTrace>* asyncStackTrace) override;
     void setAsyncCallStackDepth(ErrorString*, int maxDepth) override;
-    void flushAsyncOperationEvents(ErrorString*) override;
-    void setAsyncOperationBreakpoint(ErrorString*, int operationId) override;
-    void removeAsyncOperationBreakpoint(ErrorString*, int operationId) override;
     void setBlackboxedRanges(ErrorString*, const String16& scriptId, PassOwnPtr<protocol::Array<protocol::Debugger::ScriptPosition>> positions) override;
 
     // Called by InspectorInstrumentation.
diff --git a/third_party/WebKit/Source/core/inspector/InspectorRuntimeAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorRuntimeAgent.cpp
index 4f367ef..5c8eebf 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorRuntimeAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorRuntimeAgent.cpp
@@ -111,7 +111,7 @@
         executionContextId = optExecutionContextId.fromJust();
     } else {
         v8::HandleScope handles(defaultScriptState()->isolate());
-        executionContextId = m_v8RuntimeAgent->ensureDefaultContextAvailable(defaultScriptState()->context());
+        executionContextId = V8Debugger::contextId(defaultScriptState()->context());
     }
     MuteConsoleScope<InspectorRuntimeAgent> muteScope;
     if (doNotPauseOnExceptionsAndMuteConsole.fromMaybe(false))
diff --git a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp
index 81a3c22..032d7248 100644
--- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp
+++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp
@@ -182,42 +182,4 @@
     return window && BindingSecurity::shouldAllowAccessTo(m_isolate, toLocalDOMWindow(toDOMWindow(calling)), window, DoNotReportSecurityError);
 }
 
-void MainThreadDebugger::contextsToReport(int contextGroupId, V8ContextInfoVector& contexts)
-{
-    LocalFrame* root = WeakIdentifierMap<LocalFrame>::lookup(contextGroupId);
-    if (!root)
-        return;
-
-    // Only report existing contexts if the page did commit load, otherwise we may
-    // unintentionally initialize contexts in the frames which may trigger some listeners
-    // that are expected to be triggered only after the load is committed, see http://crbug.com/131623
-    if (!root->loader().stateMachine()->committedFirstRealDocumentLoad())
-        return;
-
-    RawPtr<InspectedFrames> inspectedFrames = InspectedFrames::create(root);
-
-    Vector<std::pair<ScriptState*, SecurityOrigin*>> isolatedContexts;
-    for (LocalFrame* frame : *inspectedFrames) {
-        if (!frame->script().canExecuteScripts(NotAboutToExecuteScript))
-            continue;
-        String frameId = IdentifiersFactory::frameId(frame);
-
-        // Ensure execution context is created.
-        // If initializeMainWorld returns true, then is registered by didCreateScriptContext
-        if (!frame->script().initializeMainWorld()) {
-            ScriptState* scriptState = ScriptState::forMainWorld(frame);
-            contexts.append(V8ContextInfo(scriptState->context(), contextGroupId, true, "", "", frameId));
-        }
-        frame->script().collectIsolatedContexts(isolatedContexts);
-        if (isolatedContexts.isEmpty())
-            continue;
-        for (const auto& pair : isolatedContexts) {
-            String originString = pair.second ? pair.second->toRawString() : "";
-            ScriptState* scriptState = pair.first;
-            contexts.append(V8ContextInfo(scriptState->context(), contextGroupId, false, originString, scriptState->world().isolatedWorldHumanReadableName(), frameId));
-        }
-        isolatedContexts.clear();
-    }
-}
-
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h
index ea04075..a4b84fd 100644
--- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h
+++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h
@@ -75,7 +75,6 @@
     void muteWarningsAndDeprecations() override;
     void unmuteWarningsAndDeprecations() override;
     bool callingContextCanAccessContext(v8::Local<v8::Context> calling, v8::Local<v8::Context> target) override;
-    void contextsToReport(int contextGroupId, V8ContextInfoVector&) override;
 
     OwnPtr<ClientMessageLoop> m_clientMessageLoop;
     OwnPtr<InspectorTaskRunner> m_taskRunner;
diff --git a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.cpp b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.cpp
index 416180b..1e410797 100644
--- a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.cpp
+++ b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.cpp
@@ -89,11 +89,4 @@
     return true;
 }
 
-void WorkerThreadDebugger::contextsToReport(int contextGroupId, V8ContextInfoVector& contexts)
-{
-    ASSERT(contextGroupId == workerContextGroupId);
-    ScriptState* scriptState = m_workerThread->workerGlobalScope()->scriptController()->getScriptState();
-    contexts.append(V8ContextInfo(scriptState->context(), workerContextGroupId, true, m_workerThread->workerGlobalScope()->url().getString(), "", ""));
-}
-
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h
index 447728f..2b0420f 100644
--- a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h
+++ b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h
@@ -53,7 +53,6 @@
     void runMessageLoopOnPause(int contextGroupId) override;
     void quitMessageLoopOnPause() override;
     bool callingContextCanAccessContext(v8::Local<v8::Context> calling, v8::Local<v8::Context> target) override;
-    void contextsToReport(int contextGroupId, V8ContextInfoVector&) override;
 
 private:
     WorkerThread* m_workerThread;
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
index 3888503..24154469 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
@@ -379,49 +379,6 @@
     return node() != document().viewportDefiningElement();
 }
 
-void LayoutBlock::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPaintInvalidationState)
-{
-    LayoutBox::invalidatePaintOfSubtreesIfNeeded(childPaintInvalidationState);
-
-    // Take care of positioned objects. This is required as PaintInvalidationState keeps a single clip rect.
-    if (TrackedLayoutBoxListHashSet* positionedObjects = this->positionedObjects()) {
-        for (auto* box : *positionedObjects) {
-
-            // One of the layoutObjects we're skipping over here may be the child's paint invalidation container,
-            // so we can't pass our own paint invalidation container along.
-            const LayoutBoxModelObject& paintInvalidationContainerForChild = box->containerForPaintInvalidation();
-
-            // If it's a new paint invalidation container, we won't have properly accumulated the offset into the
-            // PaintInvalidationState.
-            // FIXME: Teach PaintInvalidationState to handle this case. crbug.com/371485
-            if (paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) {
-                ForceHorriblySlowRectMapping slowRectMapping(&childPaintInvalidationState);
-                PaintInvalidationState disabledPaintInvalidationState(childPaintInvalidationState, *this, paintInvalidationContainerForChild);
-                box->invalidateTreeIfNeeded(disabledPaintInvalidationState);
-                continue;
-            }
-
-            // If the positioned layoutObject is absolutely positioned and it is inside
-            // a relatively positioned inline element, we need to account for
-            // the inline elements position in PaintInvalidationState.
-            if (box->style()->position() == AbsolutePosition) {
-                LayoutObject* container = box->container(&paintInvalidationContainerForChild, 0);
-                if (container->isInFlowPositioned() && container->isLayoutInline()) {
-                    // FIXME: We should be able to use PaintInvalidationState for this.
-                    // Currently, we will place absolutely positioned elements inside
-                    // relatively positioned inline blocks in the wrong location. crbug.com/371485
-                    ForceHorriblySlowRectMapping slowRectMapping(&childPaintInvalidationState);
-                    PaintInvalidationState disabledPaintInvalidationState(childPaintInvalidationState, *this, paintInvalidationContainerForChild);
-                    box->invalidateTreeIfNeeded(disabledPaintInvalidationState);
-                    continue;
-                }
-            }
-
-            box->invalidateTreeIfNeeded(childPaintInvalidationState);
-        }
-    }
-}
-
 inline static void invalidateDisplayItemClientForStartOfContinuationsIfNeeded(const LayoutBlock& block)
 {
     // If the block is a continuation or containing block of an inline continuation, invalidate the
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.h b/third_party/WebKit/Source/core/layout/LayoutBlock.h
index f0d393f..ae8ca76 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlock.h
+++ b/third_party/WebKit/Source/core/layout/LayoutBlock.h
@@ -387,7 +387,6 @@
     // isInline.
     bool isInlineBlockOrInlineTable() const final { return isInline() && isAtomicInlineLevel(); }
 
-    void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPaintInvalidationState) override;
     void invalidateDisplayItemClients(const LayoutBoxModelObject& paintInvalidationContainer, PaintInvalidationReason) const override;
 
 private:
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
index 95d95708..9655aac 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
@@ -976,10 +976,8 @@
 
     flipForWritingMode(rect);
 
-    // size() is inaccurate if we're in the middle of a layout of this LayoutBox, so use the
-    // layer's size instead. Even if the layer's size is wrong, the layer itself will issue paint invalidations
-    // anyway if its size does change.
-    LayoutRect clipRect(LayoutPoint(), LayoutSize(layer()->size()));
+    LayoutRect clipRect = overflowClipRect(LayoutPoint());
+
     bool doesIntersect;
     if (visualRectFlags & EdgeInclusive) {
         doesIntersect = rect.inclusiveIntersect(clipRect);
@@ -1996,7 +1994,7 @@
     }
 
     if (ancestorSkipped) {
-        // If the ancestor is below o, then we need to map the rect into paintInvalidationContainer's coordinates.
+        // If the ancestor is below o, then we need to map the rect into ancestor's coordinates.
         LayoutSize containerOffset = ancestor->offsetFromAncestorContainer(container);
         rect.move(-containerOffset);
         // If the ancestor is fixed, then the rect is already in its coordinates so doesn't need viewport-adjusting.
@@ -3826,6 +3824,13 @@
         && hasLayer() && layer()->transform() && !layer()->transform()->isIdentityOrTranslation())
         return PaintInvalidationBoundsChange;
 
+    if (style()->backgroundLayers().thisOrNextLayersUseContentBox() || style()->maskLayers().thisOrNextLayersUseContentBox() || style()->boxSizing() == BoxSizingBorderBox) {
+        LayoutRect oldContentBoxRect = m_rareData ? m_rareData->m_previousContentBoxRect : LayoutRect();
+        LayoutRect newContentBoxRect = contentBoxRect();
+        if (oldContentBoxRect != newContentBoxRect)
+            return PaintInvalidationContentBoxChange;
+    }
+
     if (!style()->hasBackground() && !style()->hasBoxDecorations()) {
         // We could let incremental invalidation cover non-composited scrollbars, but just
         // do a full invalidation because incremental invalidation will go away with slimming paint.
@@ -3834,13 +3839,6 @@
         return invalidationReason;
     }
 
-    if (style()->backgroundLayers().thisOrNextLayersUseContentBox() || style()->maskLayers().thisOrNextLayersUseContentBox()) {
-        LayoutRect oldContentBoxRect = m_rareData ? m_rareData->m_previousContentBoxRect : LayoutRect();
-        LayoutRect newContentBoxRect = contentBoxRect();
-        if (oldContentBoxRect != newContentBoxRect)
-            return PaintInvalidationContentBoxChange;
-    }
-
     if (style()->backgroundLayers().thisOrNextLayersHaveLocalAttachment()) {
         LayoutRect oldLayoutOverflowRect = m_rareData ? m_rareData->m_previousLayoutOverflowRect : LayoutRect();
         LayoutRect newLayoutOverflowRect = layoutOverflowRect();
@@ -4517,6 +4515,10 @@
     if (paintInvalidationSize.isEmpty())
         return false;
 
+    // If we use border-box sizing we need to track changes in the size of the content box.
+    if (style()->boxSizing() == BoxSizingBorderBox)
+        return true;
+
     // We need the old box sizes only when the box has background, decorations, or masks.
     // Main LayoutView paints base background, thus interested in box size.
     if (!isLayoutView() && !style()->hasBackground() && !style()->hasBoxDecorations() && !style()->hasMask())
diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
index ced1bfb..067a767 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
@@ -365,10 +365,6 @@
         return;
 
     LayoutRect previousPaintInvalidationRect = this->previousPaintInvalidationRect();
-
-    // TODO(wangxianzhu): Enable this assert after we fix all paintInvalidationContainer mismatch issues. crbug.com/360286
-    // ASSERT(&newPaintInvalidationState.paintInvalidationContainer() == &containerForPaintInvalidation());
-
     PaintInvalidationReason reason = invalidatePaintIfNeeded(newPaintInvalidationState);
     clearPaintInvalidationFlags(newPaintInvalidationState);
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
index 7c43f50..382d87c 100644
--- a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
@@ -292,7 +292,7 @@
         if (LayoutBlock::finishDelayUpdateScrollInfo(&layoutScope, &scrollMap)) {
             layoutFlexItems(false, layoutScope);
             for (auto& entry : scrollMap) {
-                entry.key->scrollToPosition(entry.value);
+                entry.key->scrollToPosition(entry.value, ScrollOffsetClamped);
             }
         }
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
index 0905478..6724ab1 100644
--- a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
@@ -313,11 +313,12 @@
 
     if (markerParent != lineBoxParent) {
         m_marker->remove();
-        lineBoxParent->addChild(m_marker, firstNonMarkerChild(lineBoxParent));
-        m_marker->updateMarginsAndContent();
-        // If markerParent is an anonymous block with no children, destroy it.
+        // If markerParent is now an anonymous block with no children, this is the time to attempt to remove it
+        // as it might have gone away after addChild().
         if (markerParent && markerParent->isAnonymousBlock() && !toLayoutBlock(markerParent)->firstChild() && !toLayoutBlock(markerParent)->continuation())
             markerParent->destroy();
+        lineBoxParent->addChild(m_marker, firstNonMarkerChild(lineBoxParent));
+        m_marker->updateMarginsAndContent();
         return true;
     }
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
index 7e9ce08..8a378d6 100644
--- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
@@ -1337,10 +1337,8 @@
 
 void LayoutObject::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPaintInvalidationState)
 {
-    for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling()) {
-        if (!child->isOutOfFlowPositioned())
-            child->invalidateTreeIfNeeded(childPaintInvalidationState);
-    }
+    for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling())
+        child->invalidateTreeIfNeeded(childPaintInvalidationState);
 }
 
 static PassOwnPtr<TracedValue> jsonObjectForOldAndNewRects(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect& newRect, const LayoutPoint& newLocation)
@@ -1431,8 +1429,7 @@
         return PaintInvalidationNone; // Don't invalidate paints if we're printing.
 
     const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidationState.paintInvalidationContainer();
-    // TODO(wangxianzhu): Enable this assert after we fix all paintInvalidationContainer mismatch issues. crbug.com/360286
-    // ASSERT(paintInvalidationContainer == containerForPaintInvalidation());
+    ASSERT(paintInvalidationContainer == containerForPaintInvalidation());
 
     const LayoutRect oldBounds = previousPaintInvalidationRect();
     const LayoutPoint oldLocation = RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() ? LayoutPoint() : previousPositionFromPaintInvalidationBacking();
@@ -2616,9 +2613,9 @@
     return o;
 }
 
-LayoutObject* LayoutObject::containerCrossingFrameBoundaries() const
+LayoutObject* LayoutObject::parentCrossingFrameBoundaries() const
 {
-    return isLayoutView() ? frame()->ownerLayoutObject() : container();
+    return isLayoutView() ? frame()->ownerLayoutObject() : parent();
 }
 
 bool LayoutObject::isSelectionBorder() const
@@ -3417,10 +3414,10 @@
     }
 }
 
-inline void LayoutObject::markContainerChainForPaintInvalidation()
+inline void LayoutObject::markAncestorsForPaintInvalidation()
 {
-    for (LayoutObject* container = this->containerCrossingFrameBoundaries(); container && !container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); container = container->containerCrossingFrameBoundaries())
-        container->m_bitfields.setChildShouldCheckForPaintInvalidation(true);
+    for (LayoutObject* parent = this->parentCrossingFrameBoundaries(); parent && !parent->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); parent = parent->parentCrossingFrameBoundaries())
+        parent->m_bitfields.setChildShouldCheckForPaintInvalidation(true);
 }
 
 void LayoutObject::setShouldInvalidateSelection()
@@ -3428,7 +3425,7 @@
     if (!canUpdateSelectionOnRootLineBoxes())
         return;
     m_bitfields.setShouldInvalidateSelection(true);
-    markContainerChainForPaintInvalidation();
+    markAncestorsForPaintInvalidation();
     frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
 }
 
@@ -3444,7 +3441,7 @@
             reason = documentLifecycleBasedPaintInvalidationReason(document().lifecycle());
         m_bitfields.setFullPaintInvalidationReason(reason);
         if (!isUpgradingDelayedFullToFull)
-            markContainerChainForPaintInvalidation();
+            markAncestorsForPaintInvalidation();
     }
 
     frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
@@ -3455,7 +3452,7 @@
     if (mayNeedPaintInvalidation())
         return;
     m_bitfields.setMayNeedPaintInvalidation(true);
-    markContainerChainForPaintInvalidation();
+    markAncestorsForPaintInvalidation();
     frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
 }
 
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h
index ae73f78..c406435f1 100644
--- a/third_party/WebKit/Source/core/layout/LayoutObject.h
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
@@ -800,7 +800,6 @@
     // If |ancestor| and |ancestorSkipped| are not null, on return *ancestorSkipped
     // is true if the layoutObject returned is an ancestor of |ancestor|.
     LayoutObject* container(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const;
-    LayoutObject* containerCrossingFrameBoundaries() const;
     // Finds the container as if this object is fixed-position.
     LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const;
     // Finds the containing block as if this object is absolute-position.
@@ -962,7 +961,7 @@
 
     bool canContainFixedPositionObjects() const
     {
-        return isLayoutView() || (hasTransformRelatedProperty() && isLayoutBlock()) || isSVGForeignObject() || style()->containsPaint();
+        return isLayoutView() || ((hasTransformRelatedProperty() || style()->containsPaint()) && isLayoutBlock()) || isSVGForeignObject();
     }
 
     // Convert the given local point to absolute coordinates
@@ -1612,7 +1611,7 @@
     // recomputeOverflow-capable. crbug.com/437012 and crbug.com/434700.
     inline void markContainingBlocksForOverflowRecalc();
 
-    inline void markContainerChainForPaintInvalidation();
+    inline void markAncestorsForPaintInvalidation();
 
     inline void invalidateSelectionIfNeeded(const LayoutBoxModelObject& paintInvalidationContainer, const PaintInvalidationState&, PaintInvalidationReason);
 
@@ -1651,6 +1650,8 @@
     // The passed rect is mutated into the coordinate space of the paint invalidation container.
     const LayoutBoxModelObject* invalidatePaintRectangleInternal(const LayoutRect&) const;
 
+    LayoutObject* parentCrossingFrameBoundaries() const;
+
     static LayoutPoint uninitializedPaintOffset() { return LayoutPoint(LayoutUnit::max(), LayoutUnit::max()); }
 
     RefPtr<ComputedStyle> m_style;
diff --git a/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp b/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp
index f56793a..c9d18017 100644
--- a/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp
@@ -212,10 +212,16 @@
 
     LayoutBlock* target = toLayoutBlock(getLayoutObjectByElementId("target"));
     LayoutRect overflowRect = target->localOverflowRectForPaintInvalidation();
+    // -40 = -box_shadow_offset_x(40) (with target's top-right corner as the origin)
+    // 140 = width(100) + box_shadow_offset_x(40)
+    // 70 = height(50) + box_shadow_offset_y(20)
     EXPECT_EQ(LayoutRect(-40, 0, 140, 70), overflowRect);
+
     LayoutRect rect = overflowRect;
     EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
+    // This rect is in physical coordinates of target.
     EXPECT_EQ(LayoutRect(0, 0, 140, 70), rect);
+
     rect = overflowRect;
     EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
     EXPECT_EQ(LayoutRect(222, 111, 140, 70), rect);
@@ -231,14 +237,20 @@
 
     LayoutBlock* target = toLayoutBlock(getLayoutObjectByElementId("target"));
     LayoutRect targetOverflowRect = target->localOverflowRectForPaintInvalidation();
+    // -40 = -box_shadow_offset_x(40) (with target's top-right corner as the origin)
+    // 140 = width(100) + box_shadow_offset_x(40)
+    // 110 = height(90) + box_shadow_offset_y(20)
     EXPECT_EQ(LayoutRect(-40, 0, 140, 110), targetOverflowRect);
+
     LayoutRect rect = targetOverflowRect;
     EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
+    // This rect is in physical coordinates of target.
     EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
 
     LayoutBlock* container = toLayoutBlock(getLayoutObjectByElementId("container"));
     rect = targetOverflowRect;
     EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
+    // 100 is the physical x location of target in container.
     EXPECT_EQ(LayoutRect(100, 0, 140, 110), rect);
     rect = targetOverflowRect;
     EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
@@ -247,11 +259,124 @@
     LayoutRect containerOverflowRect = container->localOverflowRectForPaintInvalidation();
     EXPECT_EQ(LayoutRect(-40, 0, 240, 110), containerOverflowRect);
     rect = containerOverflowRect;
-    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(container, rect));
     EXPECT_EQ(LayoutRect(0, 0, 240, 110), rect);
     rect = containerOverflowRect;
-    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(&layoutView(), rect));
     EXPECT_EQ(LayoutRect(222, 111, 240, 110), rect);
 }
 
+TEST_F(LayoutObjectTest, OverflowRectMappingWithContainerOverflowClip)
+{
+    setBodyInnerHTML(
+        "<div id='container' style='position: absolute; top: 111px; left: 222px;"
+        "    border: 10px solid red; overflow: hidden; width: 50px; height: 80px;'>"
+        "    <div id='target' style='box-shadow: 40px 20px black; width: 100px; height: 90px'></div>"
+        "</div>");
+
+    LayoutBlock* container = toLayoutBlock(getLayoutObjectByElementId("container"));
+    EXPECT_EQ(LayoutUnit(0), container->scrollTop());
+    EXPECT_EQ(LayoutUnit(0), container->scrollLeft());
+    container->setScrollTop(LayoutUnit(7));
+    container->setScrollLeft(LayoutUnit(8));
+
+    LayoutBlock* target = toLayoutBlock(getLayoutObjectByElementId("target"));
+    LayoutRect targetOverflowRect = target->localOverflowRectForPaintInvalidation();
+    // 140 = width(100) + box_shadow_offset_x(40)
+    // 110 = height(90) + box_shadow_offset_y(20)
+    EXPECT_EQ(LayoutRect(0, 0, 140, 110), targetOverflowRect);
+    LayoutRect rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
+    EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
+
+    rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
+    // 2 = target_x(0) + container_border_left(10) - scroll_left(8)
+    // 3 = target_y(0) + container_border_top(10) - scroll_top(7)
+    // Rect is not clipped by container's overflow clip.
+    EXPECT_EQ(LayoutRect(2, 3, 140, 110), rect);
+
+    rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
+    // (2, 3, 140, 100) is first clipped by container's overflow clip, to (10, 10, 50, 80),
+    // then is by added container's offset in LayoutView (111, 222).
+    EXPECT_EQ(LayoutRect(232, 121, 50, 80), rect);
+
+    LayoutRect containerOverflowRect = container->localOverflowRectForPaintInvalidation();
+    // Because container has overflow clip, its visual overflow doesn't include overflow from children.
+    // 70 = width(50) + border_left_width(10) + border_right_width(10)
+    // 100 = height(80) + border_top_width(10) + border_bottom_width(10)
+    EXPECT_EQ(LayoutRect(0, 0, 70, 100), containerOverflowRect);
+    rect = containerOverflowRect;
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(container, rect));
+    // Container should not apply overflow clip on its own overflow rect.
+    EXPECT_EQ(LayoutRect(0, 0, 70, 100), rect);
+
+    rect = containerOverflowRect;
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(&layoutView(), rect));
+    EXPECT_EQ(LayoutRect(222, 111, 70, 100), rect);
+}
+
+TEST_F(LayoutObjectTest, OverflowRectMappingWithContainerFlippedWritingModeAndOverflowClip)
+{
+    setBodyInnerHTML(
+        "<div id='container' style='writing-mode: vertical-rl; position: absolute; top: 111px; left: 222px;"
+        "    border: solid red; border-width: 10px 20px 30px 40px;"
+        "    overflow: hidden; width: 50px; height: 80px'>"
+        "    <div id='target' style='box-shadow: 40px 20px black; width: 100px; height: 90px'></div>"
+        "    <div style='width: 100px; height: 100px'></div>"
+        "</div>");
+
+    LayoutBlock* container = toLayoutBlock(getLayoutObjectByElementId("container"));
+    EXPECT_EQ(LayoutUnit(0), container->scrollTop());
+    // The initial scroll offset is to the left-most because of flipped blocks writing mode.
+    // 150 = total_layout_overflow(100 + 100) - width(50)
+    EXPECT_EQ(LayoutUnit(150), container->scrollLeft());
+    container->setScrollTop(LayoutUnit(7));
+    container->setScrollLeft(LayoutUnit(142)); // Scroll to the right by 8 pixels.
+
+    LayoutBlock* target = toLayoutBlock(getLayoutObjectByElementId("target"));
+    LayoutRect targetOverflowRect = target->localOverflowRectForPaintInvalidation();
+    // -40 = -box_shadow_offset_x(40) (with target's top-right corner as the origin)
+    // 140 = width(100) + box_shadow_offset_x(40)
+    // 110 = height(90) + box_shadow_offset_y(20)
+    EXPECT_EQ(LayoutRect(-40, 0, 140, 110), targetOverflowRect);
+
+    LayoutRect rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
+    // This rect is in physical coordinates of target.
+    EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
+
+    rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
+    // -2 = target_physical_x(100) + container_border_left(40) - scroll_left(142)
+    // 3 = target_y(0) + container_border_top(10) - scroll_top(7)
+    // Rect is not clipped by container's overflow clip.
+    EXPECT_EQ(LayoutRect(-2, 3, 140, 110), rect);
+
+    rect = targetOverflowRect;
+    EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
+    // (-2, 3, 140, 100) is first clipped by container's overflow clip, to (40, 10, 50, 80),
+    // then is added by container's offset in LayoutView (111, 222).
+    // TODO(crbug.com/600039): rect.x() should be 262 (left + border-left), but is offset
+    // by extra horizontal border-widths because of layout error.
+    EXPECT_EQ(LayoutRect(322, 121, 50, 80), rect);
+
+    LayoutRect containerOverflowRect = container->localOverflowRectForPaintInvalidation();
+    // Because container has overflow clip, its visual overflow doesn't include overflow from children.
+    // 110 = width(50) + border_left_width(40) + border_right_width(20)
+    // 120 = height(80) + border_top_width(10) + border_bottom_width(30)
+    EXPECT_EQ(LayoutRect(0, 0, 110, 120), containerOverflowRect);
+
+    rect = containerOverflowRect;
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(container, rect));
+    EXPECT_EQ(LayoutRect(0, 0, 110, 120), rect);
+
+    rect = containerOverflowRect;
+    EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(&layoutView(), rect));
+    // TODO(crbug.com/600039): rect.x() should be 222 (left), but is offset by extra horizontal
+    // border-widths because of layout error.
+    EXPECT_EQ(LayoutRect(282, 111, 110, 120), rect);
+}
+
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/LayoutState.h b/third_party/WebKit/Source/core/layout/LayoutState.h
index bbc509d..8be94f2d8 100644
--- a/third_party/WebKit/Source/core/layout/LayoutState.h
+++ b/third_party/WebKit/Source/core/layout/LayoutState.h
@@ -33,7 +33,6 @@
 
 namespace blink {
 
-class ForceHorriblySlowRectMapping;
 class LayoutBox;
 class LayoutFlowThread;
 class LayoutObject;
@@ -94,8 +93,6 @@
     LayoutObject& layoutObject() const { return m_layoutObject; }
 
 private:
-    friend class ForceHorriblySlowRectMapping;
-
     // Do not add anything apart from bitfields until after m_flowThread. See https://bugs.webkit.org/show_bug.cgi?id=100173
     bool m_isPaginated : 1;
     // If our page height has changed, this will force all blocks to relayout.
diff --git a/third_party/WebKit/Source/core/layout/LayoutView.h b/third_party/WebKit/Source/core/layout/LayoutView.h
index 3638240..7d1fe25 100644
--- a/third_party/WebKit/Source/core/layout/LayoutView.h
+++ b/third_party/WebKit/Source/core/layout/LayoutView.h
@@ -223,8 +223,6 @@
     void updateFromStyle() override;
     bool allowsOverflowClip() const override;
 
-    friend class ForceHorriblySlowRectMapping;
-
     bool shouldUsePrintingLayout() const;
 
     int viewLogicalWidthForBoxSizing() const;
diff --git a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
index 33a0c38..4ba7f63 100644
--- a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
+++ b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
@@ -16,7 +16,7 @@
 
 // We can't enable this by default because saturated operations of LayoutUnit
 // don't conform commutative law for overflowing results, preventing us from
-// making fast-path and slow-path always return the same result.
+// making fast path and slow path always return the same result.
 #define ASSERT_SAME_RESULT_SLOW_AND_FAST_PATH (0 && ENABLE(ASSERT))
 
 namespace blink {
@@ -31,6 +31,10 @@
     if (object.isLayoutView())
         return;
 
+    // We ignore ancestor clipping for FixedPosition in fast path.
+    if (object.styleRef().position() == FixedPosition)
+        return;
+
     // TODO(crbug.com/597903): Fast path and slow path should generate equal empty rects.
     if (rect.isEmpty() && slowPathRect.isEmpty())
         return;
@@ -51,43 +55,35 @@
     }
 
 #ifndef NDEBUG
-    WTFLogAlways("Fast-path paint invalidation rect differs from slow-path: %s vs %s", rect.toString().ascii().data(), slowPathRect.toString().ascii().data());
+    WTFLogAlways("Fast path paint invalidation rect differs from slow path: %s vs %s", rect.toString().ascii().data(), slowPathRect.toString().ascii().data());
     showLayoutTree(&object);
 #endif
     ASSERT_NOT_REACHED();
 }
 #endif
 
-static bool isAbsolutePositionUnderRelativePositionInline(const LayoutObject& object)
-{
-    if (object.styleRef().position() != AbsolutePosition)
-        return false;
-    if (LayoutObject* container = object.container())
-        return container->isAnonymousBlock() && container->styleRef().position() == RelativePosition;
-    return false;
-}
-
 static bool supportsCachedOffsets(const LayoutObject& object)
 {
-    // TODO(wangxianzhu): Move some conditions to fast path if possible.
     return !object.hasTransformRelatedProperty()
         && !object.hasReflection()
         && !object.hasFilterInducingProperty()
         && !object.isLayoutFlowThread()
         && !object.isLayoutMultiColumnSpannerPlaceholder()
-        && object.styleRef().position() != FixedPosition
         && !object.styleRef().isFlippedBlocksWritingMode()
-        // TODO(crbug.com/598094): Handle this in fast path.
-        && !isAbsolutePositionUnderRelativePositionInline(object);
+        && !(object.isLayoutBlock() && object.isSVG());
 }
 
 PaintInvalidationState::PaintInvalidationState(const LayoutView& layoutView, Vector<LayoutObject*>& pendingDelayedPaintInvalidations)
     : m_currentObject(layoutView)
-    , m_clipped(false)
-    , m_cachedOffsetsEnabled(true)
     , m_forcedSubtreeInvalidationWithinContainer(false)
     , m_forcedSubtreeInvalidationRectUpdateWithinContainer(false)
-    , m_paintInvalidationContainer(layoutView.containerForPaintInvalidation())
+    , m_clipped(false)
+    , m_clippedForAbsolutePosition(false)
+    , m_cachedOffsetsEnabled(true)
+    , m_cachedOffsetsForAbsolutePositionEnabled(true)
+    , m_paintInvalidationContainer(&layoutView.containerForPaintInvalidation())
+    , m_paintInvalidationContainerForStackedContents(m_paintInvalidationContainer)
+    , m_containerForAbsolutePosition(layoutView)
     , m_pendingDelayedPaintInvalidations(pendingDelayedPaintInvalidations)
     , m_enclosingSelfPaintingLayer(*layoutView.layer())
 #if ENABLE(ASSERT)
@@ -99,41 +95,26 @@
         return;
     }
 
-    FloatPoint point = layoutView.localToAncestorPoint(FloatPoint(), &m_paintInvalidationContainer, TraverseDocumentBoundaries | InputIsInFrameCoordinates);
+    FloatPoint point = layoutView.localToAncestorPoint(FloatPoint(), m_paintInvalidationContainer, TraverseDocumentBoundaries | InputIsInFrameCoordinates);
     m_paintOffset = LayoutSize(point.x(), point.y());
-}
-
-// TODO(wangxianzhu): This is temporary for positioned object whose paintInvalidationContainer is different from
-// the one we find during tree walk. Remove this after we fix the issue with tree walk in DOM-order.
-PaintInvalidationState::PaintInvalidationState(const PaintInvalidationState& parentState, const LayoutBoxModelObject& currentObject, const LayoutBoxModelObject& paintInvalidationContainer)
-    : m_currentObject(currentObject)
-    , m_clipped(parentState.m_clipped)
-    , m_cachedOffsetsEnabled(parentState.m_cachedOffsetsEnabled)
-    , m_forcedSubtreeInvalidationWithinContainer(parentState.m_forcedSubtreeInvalidationWithinContainer)
-    , m_forcedSubtreeInvalidationRectUpdateWithinContainer(parentState.m_forcedSubtreeInvalidationRectUpdateWithinContainer)
-    , m_clipRect(parentState.m_clipRect)
-    , m_paintOffset(parentState.m_paintOffset)
-    , m_paintInvalidationContainer(paintInvalidationContainer)
-    , m_svgTransform(parentState.m_svgTransform)
-    , m_pendingDelayedPaintInvalidations(parentState.pendingDelayedPaintInvalidationTargets())
-    , m_enclosingSelfPaintingLayer(parentState.enclosingSelfPaintingLayer(currentObject))
-#if ENABLE(ASSERT)
-    , m_didUpdateForChildren(true)
-#endif
-{
-    ASSERT(parentState.m_didUpdateForChildren);
-    ASSERT(!m_cachedOffsetsEnabled);
+    m_paintOffsetForAbsolutePosition = m_paintOffset;
 }
 
 PaintInvalidationState::PaintInvalidationState(const PaintInvalidationState& parentState, const LayoutObject& currentObject)
     : m_currentObject(currentObject)
-    , m_clipped(parentState.m_clipped)
-    , m_cachedOffsetsEnabled(parentState.m_cachedOffsetsEnabled)
     , m_forcedSubtreeInvalidationWithinContainer(parentState.m_forcedSubtreeInvalidationWithinContainer)
     , m_forcedSubtreeInvalidationRectUpdateWithinContainer(parentState.m_forcedSubtreeInvalidationRectUpdateWithinContainer)
+    , m_clipped(parentState.m_clipped)
+    , m_clippedForAbsolutePosition(parentState.m_clippedForAbsolutePosition)
     , m_clipRect(parentState.m_clipRect)
+    , m_clipRectForAbsolutePosition(parentState.m_clipRectForAbsolutePosition)
     , m_paintOffset(parentState.m_paintOffset)
-    , m_paintInvalidationContainer(currentObject.isPaintInvalidationContainer() ? toLayoutBoxModelObject(currentObject) : parentState.m_paintInvalidationContainer)
+    , m_paintOffsetForAbsolutePosition(parentState.m_paintOffsetForAbsolutePosition)
+    , m_cachedOffsetsEnabled(parentState.m_cachedOffsetsEnabled)
+    , m_cachedOffsetsForAbsolutePositionEnabled(parentState.m_cachedOffsetsForAbsolutePositionEnabled)
+    , m_paintInvalidationContainer(parentState.m_paintInvalidationContainer)
+    , m_paintInvalidationContainerForStackedContents(parentState.m_paintInvalidationContainerForStackedContents)
+    , m_containerForAbsolutePosition(currentObject.canContainAbsolutePositionObjects() ? currentObject : parentState.m_containerForAbsolutePosition)
     , m_svgTransform(parentState.m_svgTransform)
     , m_pendingDelayedPaintInvalidations(parentState.pendingDelayedPaintInvalidationTargets())
     , m_enclosingSelfPaintingLayer(parentState.enclosingSelfPaintingLayer(currentObject))
@@ -153,11 +134,45 @@
 
     ASSERT(parentState.m_didUpdateForChildren);
 
+    EPosition position = currentObject.styleRef().position();
+
+    if (currentObject.isPaintInvalidationContainer()) {
+        m_paintInvalidationContainer = toLayoutBoxModelObject(&currentObject);
+        if (currentObject.styleRef().isStackingContext()) {
+            m_paintInvalidationContainerForStackedContents = toLayoutBoxModelObject(&currentObject);
+            // Adjust cached offsets for absolute-position to be relative to this new paintInvalidationContainer.
+            if (m_cachedOffsetsForAbsolutePositionEnabled && m_cachedOffsetsEnabled) {
+                m_paintOffsetForAbsolutePosition -= m_paintOffset;
+                if (m_clippedForAbsolutePosition)
+                    m_clipRectForAbsolutePosition.move(-m_paintOffset);
+            }
+        }
+    } else if (currentObject.isLayoutView()) {
+        // m_paintInvalidationContainerForStackedContents is only for stacked descendants in its own frame,
+        // because it doesn't establish stacking context for stacked contents in sub-frames.
+        // Contents stacked in the root stacking context in this frame should use this frame's paintInvalidationContainer.
+        m_paintInvalidationContainerForStackedContents = m_paintInvalidationContainer;
+    } else if (currentObject.styleRef().isStacked()
+        // This is to exclude some objects (e.g. LayoutText) inheriting stacked style from parent but aren't actually stacked.
+        && currentObject.hasLayer()
+        && m_paintInvalidationContainer != m_paintInvalidationContainerForStackedContents) {
+        // The current object is stacked, so we should use m_paintInvalidationContainerForStackedContents as its
+        // paint invalidation container on which the current object is painted.
+        m_paintInvalidationContainer = m_paintInvalidationContainerForStackedContents;
+        // We are changing paintInvalidationContainer to m_paintInvalidationContainerForStackedContents. Must disable
+        // cached offsets because we didn't track paint offset from m_paintInvalidationContainerForStackedContents.
+        // TODO(wangxianzhu): There are optimization opportunities:
+        // - Like what we do for fixed-position, calculate the paint offset in slow path and enable fast path for
+        //   descendants if possible; or
+        // - Track offset between the two paintInvalidationContainers.
+        m_cachedOffsetsEnabled = false;
+    }
+
     if (!currentObject.isBoxModelObject() && !currentObject.isSVG())
         return;
 
-    if (m_cachedOffsetsEnabled && !supportsCachedOffsets(currentObject))
-        m_cachedOffsetsEnabled = false;
+    if (m_cachedOffsetsEnabled || currentObject == m_paintInvalidationContainer)
+        m_cachedOffsetsEnabled = supportsCachedOffsets(currentObject);
 
     if (currentObject.isSVG()) {
         if (currentObject.isSVGRoot()) {
@@ -195,6 +210,38 @@
         return;
     }
 
+    if (position == FixedPosition) {
+        if (m_paintInvalidationContainer != currentObject.view() && m_paintInvalidationContainer->view() == currentObject.view()) {
+            // TODO(crbug.com/598762): localToAncestorPoint() is incorrect for fixed-position when paintInvalidationContainer
+            // is under the containing LayoutView.
+            m_cachedOffsetsEnabled = false;
+            return;
+        }
+        // Use slow path to get the offset of the fixed-position, and enable fast path for descendants.
+        FloatPoint fixedOffset = currentObject.localToAncestorPoint(FloatPoint(), m_paintInvalidationContainer, TraverseDocumentBoundaries);
+        m_paintOffset = LayoutSize(fixedOffset.x(), fixedOffset.y());
+        // In the above way to get paint offset, we can't get accurate clip rect, so just assume no clip.
+        // Clip on fixed-position is rare, in case that paintInvalidationContainer crosses frame boundary
+        // and the LayoutView is clipped by something in owner document.
+        m_clipped = false;
+        return;
+    }
+
+    if (position == AbsolutePosition) {
+        m_cachedOffsetsEnabled = m_cachedOffsetsForAbsolutePositionEnabled;
+        if (!m_cachedOffsetsEnabled)
+            return;
+
+        m_paintOffset = m_paintOffsetForAbsolutePosition;
+        m_clipped = m_clippedForAbsolutePosition;
+        m_clipRect = m_clipRectForAbsolutePosition;
+
+        // Handle absolute-position block under relative-position inline.
+        const LayoutObject& container = parentState.m_containerForAbsolutePosition;
+        if (container.isInFlowPositioned() && container.isLayoutInline())
+            m_paintOffset += toLayoutInline(container).offsetForInFlowPositionedInline(toLayoutBox(m_currentObject));
+    }
+
     if (currentObject.isBox())
         m_paintOffset += toLayoutBox(currentObject).locationOffset();
 
@@ -209,6 +256,29 @@
     m_didUpdateForChildren = true;
 #endif
 
+    updateForNormalChildren();
+
+    if (m_currentObject == m_containerForAbsolutePosition) {
+        if (m_paintInvalidationContainer == m_paintInvalidationContainerForStackedContents) {
+            m_cachedOffsetsForAbsolutePositionEnabled = m_cachedOffsetsEnabled;
+            if (m_cachedOffsetsEnabled) {
+                m_paintOffsetForAbsolutePosition = m_paintOffset;
+                m_clippedForAbsolutePosition = m_clipped;
+                m_clipRectForAbsolutePosition = m_clipRect;
+            }
+        } else {
+            // Cached offsets for absolute-position are from m_paintInvalidationContainer,
+            // which can't be used if the absolute-position descendants will use a different
+            // paintInvalidationContainer.
+            // TODO(wangxianzhu): Same optimization opportunities as under isStacked() condition
+            // in the PaintInvalidationState::PaintInvalidationState(... LayoutObject&...).
+            m_cachedOffsetsForAbsolutePositionEnabled = false;
+        }
+    }
+}
+
+void PaintInvalidationState::updateForNormalChildren()
+{
     if (!m_cachedOffsetsEnabled)
         return;
 
@@ -242,7 +312,7 @@
     if (box.usesCompositedScrolling())
         ASSERT(!m_clipped); // The box should establish paint invalidation container, so no m_clipped inherited.
     else
-        addClipRectRelativeToPaintOffset(LayoutRect(LayoutPoint(), LayoutSize(box.layer()->size())));
+        addClipRectRelativeToPaintOffset(box.overflowClipRect(LayoutPoint()));
 
     m_paintOffset -= box.scrolledContentOffset();
 
@@ -261,7 +331,7 @@
     ASSERT(!m_didUpdateForChildren);
 
     FloatPoint point;
-    if (m_paintInvalidationContainer != m_currentObject) {
+    if (m_paintInvalidationContainer != &m_currentObject) {
         if (m_cachedOffsetsEnabled) {
             if (m_currentObject.isSVG() && !m_currentObject.isSVGRoot())
                 point = m_svgTransform.mapPoint(point);
@@ -271,12 +341,12 @@
             // ASSERT(point == slowLocalOriginToAncestorPoint(m_currentObject, m_paintInvalidationContainer, FloatPoint());
 #endif
         } else {
-            point = slowLocalToAncestorPoint(m_currentObject, m_paintInvalidationContainer, FloatPoint());
+            point = slowLocalToAncestorPoint(m_currentObject, *m_paintInvalidationContainer, FloatPoint());
         }
     }
 
-    if (m_paintInvalidationContainer.layer()->groupedMapping())
-        PaintLayer::mapPointInPaintInvalidationContainerToBacking(m_paintInvalidationContainer, point);
+    if (m_paintInvalidationContainer->layer()->groupedMapping())
+        PaintLayer::mapPointInPaintInvalidationContainerToBacking(*m_paintInvalidationContainer, point);
 
     return LayoutPoint(point);
 }
@@ -304,19 +374,19 @@
             rect.intersect(m_clipRect);
 #if ASSERT_SAME_RESULT_SLOW_AND_FAST_PATH
         // TODO(crbug.com/597902): Slow path misses clipping of paintInvalidationContainer.
-        LayoutRect slowPathRect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(m_currentObject, m_paintInvalidationContainer);
+        LayoutRect slowPathRect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(m_currentObject, *m_paintInvalidationContainer);
         if (m_clipped)
             slowPathRect.intersect(m_clipRect);
         assertRectsEqual(m_currentObject, m_paintInvalidationContainer, rect, slowPathRect);
 #endif
     } else {
         // TODO(wangxianzhu): Sometimes m_cachedOffsetsEnabled==false doesn't mean we can't use cached
-        // m_svgTransform. We can use hybrid fast-path (for SVG) and slow-path (for things above the SVGRoot).
-        rect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(m_currentObject, m_paintInvalidationContainer);
+        // m_svgTransform. We can use hybrid fast path (for SVG) and slow path (for things above the SVGRoot).
+        rect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(m_currentObject, *m_paintInvalidationContainer);
     }
 
-    if (m_paintInvalidationContainer.layer()->groupedMapping())
-        PaintLayer::mapRectInPaintInvalidationContainerToBacking(m_paintInvalidationContainer, rect);
+    if (m_paintInvalidationContainer->layer()->groupedMapping())
+        PaintLayer::mapRectInPaintInvalidationContainerToBacking(*m_paintInvalidationContainer, rect);
     return rect;
 }
 
@@ -324,9 +394,6 @@
 {
     if (object.isLayoutView()) {
         toLayoutView(object).mapToVisualRectInAncestorSpace(&ancestor, rect, InputIsInFrameCoordinates, DefaultVisualRectFlags);
-    } else if (object.isSVGRoot()) {
-        // TODO(crbug.com/597813): This is to avoid the extra clip applied in LayoutSVGRoot::mapVisibleRectInAncestorSpace().
-        toLayoutSVGRoot(object).LayoutReplaced::mapToVisualRectInAncestorSpace(&ancestor, rect);
     } else {
         object.mapToVisualRectInAncestorSpace(&ancestor, rect);
     }
@@ -339,7 +406,7 @@
     if (m_cachedOffsetsEnabled) {
 #if ASSERT_SAME_RESULT_SLOW_AND_FAST_PATH
         LayoutRect slowPathRect(rect);
-        slowMapToVisualRectInAncestorSpace(m_currentObject, m_paintInvalidationContainer, slowPathRect);
+        slowMapToVisualRectInAncestorSpace(m_currentObject, *m_paintInvalidationContainer, slowPathRect);
 #endif
         rect.move(m_paintOffset);
         if (m_clipped)
@@ -348,14 +415,14 @@
         // TODO(crbug.com/597902): Slow path misses clipping of paintInvalidationContainer.
         if (m_clipped)
             slowPathRect.intersect(m_clipRect);
-        assertRectsEqual(m_currentObject, m_paintInvalidationContainer, rect, slowPathRect);
+        assertRectsEqual(m_currentObject, *m_paintInvalidationContainer, rect, slowPathRect);
 #endif
     } else {
-        slowMapToVisualRectInAncestorSpace(m_currentObject, m_paintInvalidationContainer, rect);
+        slowMapToVisualRectInAncestorSpace(m_currentObject, *m_paintInvalidationContainer, rect);
     }
 
-    if (m_paintInvalidationContainer.layer()->groupedMapping())
-        PaintLayer::mapRectInPaintInvalidationContainerToBacking(m_paintInvalidationContainer, rect);
+    if (m_paintInvalidationContainer->layer()->groupedMapping())
+        PaintLayer::mapRectInPaintInvalidationContainerToBacking(*m_paintInvalidationContainer, rect);
 }
 
 void PaintInvalidationState::addClipRectRelativeToPaintOffset(const LayoutRect& localClipRect)
diff --git a/third_party/WebKit/Source/core/layout/PaintInvalidationState.h b/third_party/WebKit/Source/core/layout/PaintInvalidationState.h
index 69ba2d5..8852577 100644
--- a/third_party/WebKit/Source/core/layout/PaintInvalidationState.h
+++ b/third_party/WebKit/Source/core/layout/PaintInvalidationState.h
@@ -32,16 +32,15 @@
 // The main difference with LayoutState is that it was customized for the
 // needs of the paint invalidation systems (keeping visual rectangles
 // instead of layout specific information).
+//
+// See Source/core/paint/README.md ### PaintInvalidationState for more details.
+
 class PaintInvalidationState {
     DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
     WTF_MAKE_NONCOPYABLE(PaintInvalidationState);
 public:
     PaintInvalidationState(const PaintInvalidationState& parentState, const LayoutObject&);
 
-    // TODO(wangxianzhu): This is temporary for positioned object whose paintInvalidationContainer is different from
-    // the one we find during tree walk. Remove this after we fix the issue with tree walk in DOM-order.
-    PaintInvalidationState(const PaintInvalidationState& parentState, const LayoutBoxModelObject&, const LayoutBoxModelObject& paintInvalidationContainer);
-
     // For root LayoutView, or when sub-frame LayoutView's invalidateTreeIfNeeded() is called directly from
     // FrameView::invalidateTreeIfNeededRecursive() instead of the owner LayoutPart.
     // TODO(wangxianzhu): Eliminate the latter case.
@@ -59,7 +58,7 @@
     bool forcedSubtreeInvalidationRectUpdateWithinContainer() const { return m_forcedSubtreeInvalidationRectUpdateWithinContainer; }
     void setForceSubtreeInvalidationRectUpdateWithinContainer() { m_forcedSubtreeInvalidationRectUpdateWithinContainer = true; }
 
-    const LayoutBoxModelObject& paintInvalidationContainer() const { return m_paintInvalidationContainer; }
+    const LayoutBoxModelObject& paintInvalidationContainer() const { return *m_paintInvalidationContainer; }
 
     // Computes the position of the current object ((0,0) in the space of the object)
     // in the space of paint invalidation backing.
@@ -82,6 +81,8 @@
 #endif
 
 private:
+    void updateForNormalChildren();
+
     LayoutRect computePaintInvalidationRectInBackingForSVG() const;
 
     void addClipRectRelativeToPaintOffset(const LayoutRect& localClipRect);
@@ -90,20 +91,40 @@
 
     const LayoutObject& m_currentObject;
 
-    bool m_clipped;
-    mutable bool m_cachedOffsetsEnabled;
     bool m_forcedSubtreeInvalidationWithinContainer;
     bool m_forcedSubtreeInvalidationRectUpdateWithinContainer;
 
+    bool m_clipped;
+    bool m_clippedForAbsolutePosition;
+
+    // Clip rect from paintInvalidationContainer if m_cachedOffsetsEnabled is true.
     LayoutRect m_clipRect;
+    LayoutRect m_clipRectForAbsolutePosition;
 
-    // x/y offset from paint invalidation container. Includes relative positioning and scroll offsets.
+    // x/y offset from the paintInvalidationContainer if m_cachedOffsetsEnabled is true.
+    // It includes relative positioning and scroll offsets.
     LayoutSize m_paintOffset;
+    LayoutSize m_paintOffsetForAbsolutePosition;
 
-    // The current paint invalidation container.
-    //
+    // Whether m_paintOffset[XXX] and m_clipRect[XXX] are valid and can be used
+    // to map a rect from space of the current object to space of paintInvalidationContainer.
+    mutable bool m_cachedOffsetsEnabled;
+    bool m_cachedOffsetsForAbsolutePositionEnabled;
+
+    // The following two fields are never null. Declare them as pointers because we need some
+    // logic to initialize them in the body of the constructor.
+
+    // The current paint invalidation container for normal flow objects.
     // It is the enclosing composited object.
-    const LayoutBoxModelObject& m_paintInvalidationContainer;
+    const LayoutBoxModelObject* m_paintInvalidationContainer;
+
+    // The current paint invalidation container for stacked contents (stacking contexts or positioned objects).
+    // It is the nearest ancestor composited object which establishes a stacking context.
+    // See Source/core/paint/README.md ### PaintInvalidationState for details on how stacked contents'
+    // paint invalidation containers differ.
+    const LayoutBoxModelObject* m_paintInvalidationContainerForStackedContents;
+
+    const LayoutObject& m_containerForAbsolutePosition;
 
     // Transform from the initial viewport coordinate system of an outermost
     // SVG root to the userspace _before_ the relevant element. Combining this
@@ -119,32 +140,6 @@
 #endif
 };
 
-// Suspends the PaintInvalidationState cached offset and clipRect optimization. Used under transforms
-// that cannot be represented by PaintInvalidationState (common in SVG) and when paint invalidation
-// containers don't follow the common tree-walk algorithm (e.g. when an absolute positioned descendant
-// is nested under a relatively positioned inline-block child).
-class ForceHorriblySlowRectMapping {
-    STACK_ALLOCATED();
-    WTF_MAKE_NONCOPYABLE(ForceHorriblySlowRectMapping);
-public:
-    ForceHorriblySlowRectMapping(const PaintInvalidationState* paintInvalidationState)
-        : m_paintInvalidationState(paintInvalidationState)
-        , m_didDisable(m_paintInvalidationState && m_paintInvalidationState->m_cachedOffsetsEnabled)
-    {
-        if (m_paintInvalidationState)
-            m_paintInvalidationState->m_cachedOffsetsEnabled = false;
-    }
-
-    ~ForceHorriblySlowRectMapping()
-    {
-        if (m_didDisable)
-            m_paintInvalidationState->m_cachedOffsetsEnabled = true;
-    }
-private:
-    const PaintInvalidationState* m_paintInvalidationState;
-    bool m_didDisable;
-};
-
 } // namespace blink
 
 #endif // PaintInvalidationState_h
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp
index 83c614d..84f44525 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp
@@ -115,14 +115,4 @@
     return false;
 }
 
-void LayoutSVGBlock::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState)
-{
-    if (!shouldCheckForPaintInvalidation(paintInvalidationState))
-        return;
-
-    // TODO(wangxianzhu): Move this to fast path if possible. crbug.com/391054.
-    ForceHorriblySlowRectMapping slowRectMapping(&paintInvalidationState);
-    LayoutBlockFlow::invalidateTreeIfNeeded(paintInvalidationState);
-}
-
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h b/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h
index 15b889c..9c344e79 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h
@@ -38,8 +38,6 @@
 
     PaintLayerType layerTypeRequired() const final { return NoPaintLayer; }
 
-    void invalidateTreeIfNeeded(const PaintInvalidationState&) override;
-
 protected:
     void willBeDestroyed() override;
     bool mapToVisualRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect&, VisualRectFlags = DefaultVisualRectFlags) const final;
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
index 56a4526..7e6a83c8 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
@@ -324,8 +324,7 @@
     // This is an open-coded aggregate of SVGLayoutSupport::localOverflowRectForPaintInvalidation,
     // and LayoutReplaced::localOverflowRectForPaintInvalidation.
     // The reason for this is to optimize/minimize the paint invalidation rect when the box is not "decorated"
-    // (does not have background/border/etc.)
-    // TODO(wangxianzhu): Verify if the optimization is still needed.
+    // (does not have background/border/etc., see LayoutSVGRootTest.OverflowRectMappingWithViewportClipWithoutBorder).
 
     // Return early for any cases where we don't actually paint.
     if (style()->visibility() != VISIBLE && !enclosingLayer()->hasVisibleContent())
@@ -351,26 +350,6 @@
     return LayoutRect(enclosingIntRect(paintInvalidationRect));
 }
 
-bool LayoutSVGRoot::mapToVisualRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, VisualRectFlags visualRectFlags) const
-{
-    // Note that we don't apply the border-box transform here - it's assumed
-    // that whoever called us has done that already.
-
-    // Apply initial viewport clip
-    // TODO(crbug.com/597813): We should not apply clip on LayoutSVGRoot's own rect. This clip should
-    // be applied in children's mapToVisualRectInAncestorSpace().
-    if (shouldApplyViewportClip()) {
-        if (visualRectFlags & EdgeInclusive) {
-            if (!rect.inclusiveIntersect(LayoutRect(pixelSnappedBorderBoxRect())))
-                return false;
-        } else {
-            rect.intersect(LayoutRect(pixelSnappedBorderBoxRect()));
-        }
-    }
-
-    return LayoutReplaced::mapToVisualRectInAncestorSpace(ancestor, rect, visualRectFlags);
-}
-
 // This method expects local CSS box coordinates.
 // Callers with local SVG viewport coordinates should first apply the localToBorderBoxTransform
 // to convert from SVG viewport coordinates to local CSS box coordinates.
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.h b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.h
index 245e3fb..4da040e 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.h
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.h
@@ -29,7 +29,7 @@
 
 class SVGElement;
 
-class LayoutSVGRoot final : public LayoutReplaced {
+class CORE_EXPORT LayoutSVGRoot final : public LayoutReplaced {
 public:
     explicit LayoutSVGRoot(SVGElement*);
     ~LayoutSVGRoot() override;
@@ -38,7 +38,6 @@
     bool isEmbeddedThroughFrameContainingSVGDocument() const;
 
     void computeIntrinsicSizingInfo(IntrinsicSizingInfo&) const override;
-    bool mapToVisualRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect&, VisualRectFlags = DefaultVisualRectFlags) const override;
 
     // If you have a LayoutSVGRoot, use firstChild or lastChild instead.
     void slowFirstChild() const = delete;
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRootTest.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRootTest.cpp
new file mode 100644
index 0000000..ae076ae
--- /dev/null
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRootTest.cpp
@@ -0,0 +1,86 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/layout/svg/LayoutSVGRoot.h"
+
+#include "core/layout/LayoutTestHelper.h"
+#include "core/layout/svg/LayoutSVGShape.h"
+#include "core/layout/svg/SVGLayoutSupport.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace blink {
+
+using LayoutSVGRootTest = RenderingTest;
+
+TEST_F(LayoutSVGRootTest, OverflowRectMappingWithoutViewportClipWithBorder)
+{
+    setBodyInnerHTML(
+        "<svg id='root' style='border: 10px solid red; width: 200px; height: 100px; overflow: visible' viewBox='0 0 200 100'>"
+        "   <rect id='rect' x='80' y='80' width='100' height='100'/>"
+        "</svg>");
+
+    const LayoutSVGRoot* root = toLayoutSVGRoot(getLayoutObjectByElementId("root"));
+    const LayoutSVGShape* svgRect = toLayoutSVGShape(getLayoutObjectByElementId("rect"));
+
+    LayoutRect rect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(*svgRect, *root);
+    // (80, 80, 100, 100) added by root's content rect offset from border rect, not clipped.
+    EXPECT_EQ(LayoutRect(90, 90, 100, 100), rect);
+
+    LayoutRect rootOverflowRect = static_cast<const LayoutObject*>(root)->localOverflowRectForPaintInvalidation();
+    // SVG root's overflow includes overflow from descendants.
+    EXPECT_EQ(LayoutRect(0, 0, 220, 190), rootOverflowRect);
+
+    rect = rootOverflowRect;
+    EXPECT_TRUE(root->mapToVisualRectInAncestorSpace(root, rect));
+    EXPECT_EQ(LayoutRect(0, 0, 220, 190), rect);
+}
+
+TEST_F(LayoutSVGRootTest, OverflowRectMappingWithViewportClipAndBorder)
+{
+    setBodyInnerHTML(
+        "<svg id='root' style='border: 10px solid red; width: 200px; height: 100px; overflow: hidden' viewBox='0 0 200 100'>"
+        "   <rect id='rect' x='80' y='80' width='100' height='100'/>"
+        "</svg>");
+
+    const LayoutSVGRoot* root = toLayoutSVGRoot(getLayoutObjectByElementId("root"));
+    const LayoutSVGShape* svgRect = toLayoutSVGShape(getLayoutObjectByElementId("rect"));
+
+    LayoutRect rect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(*svgRect, *root);
+    // (80, 80, 100, 100) added by root's content rect offset from border rect, clipped by (10, 10, 200, 100).
+    EXPECT_EQ(LayoutRect(90, 90, 100, 30), rect);
+
+    LayoutRect rootOverflowRect = static_cast<const LayoutObject*>(root)->localOverflowRectForPaintInvalidation();
+    // SVG root with overflow:hidden doesn't include overflow from children, just border box rect.
+    EXPECT_EQ(LayoutRect(0, 0, 220, 120), rootOverflowRect);
+
+    rect = rootOverflowRect;
+    EXPECT_TRUE(root->mapToVisualRectInAncestorSpace(root, rect));
+    // LayoutSVGRoot should not apply overflow clip on its own rect.
+    EXPECT_EQ(LayoutRect(0, 0, 220, 120), rect);
+}
+
+TEST_F(LayoutSVGRootTest, OverflowRectMappingWithViewportClipWithoutBorder)
+{
+    setBodyInnerHTML(
+        "<svg id='root' style='width: 200px; height: 100px; overflow: hidden' viewBox='0 0 200 100'>"
+        "   <rect id='rect' x='80' y='80' width='100' height='100'/>"
+        "</svg>");
+
+    const LayoutSVGRoot* root = toLayoutSVGRoot(getLayoutObjectByElementId("root"));
+    const LayoutSVGShape* svgRect = toLayoutSVGShape(getLayoutObjectByElementId("rect"));
+
+    LayoutRect rect = SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(*svgRect, *root);
+    // (80, 80, 100, 100) clipped by (0, 0, 200, 100).
+    EXPECT_EQ(LayoutRect(80, 80, 100, 20), rect);
+
+    LayoutRect rootOverflowRect = static_cast<const LayoutObject*>(root)->localOverflowRectForPaintInvalidation();
+    // SVG root doesn't have box decoration background, so just use clipped overflow of children.
+    EXPECT_EQ(LayoutRect(80, 80, 100, 20), rootOverflowRect);
+
+    rect = rootOverflowRect;
+    EXPECT_TRUE(root->mapToVisualRectInAncestorSpace(root, rect));
+    EXPECT_EQ(LayoutRect(80, 80, 100, 20), rect);
+}
+
+} // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp
index c8244fc..cfbdf727 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp
@@ -516,8 +516,6 @@
     if (reason == PaintInvalidationDelayedFull)
         paintInvalidationState.pushDelayedPaintInvalidationTarget(*this);
 
-    // TODO(wangxianzhu): Move this to fast path if possible. crbug.com/391054.
-    ForceHorriblySlowRectMapping slowRectMapping(&newPaintInvalidationState);
     if (reason == PaintInvalidationSVGResourceChange)
         newPaintInvalidationState.setForceSubtreeInvalidationWithinContainer();
 
diff --git a/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp b/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp
index 83fe10c..646a3f4 100644
--- a/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp
@@ -124,6 +124,17 @@
     AffineTransform rootBorderBoxTransform;
     const LayoutSVGRoot& svgRoot = computeTransformToSVGRoot(object, rootBorderBoxTransform);
     resultRect = transformPaintInvalidationRect(object, rootBorderBoxTransform, localPaintInvalidationRect);
+
+    // Apply initial viewport clip.
+    if (svgRoot.shouldApplyViewportClip()) {
+        LayoutRect clipRect(svgRoot.pixelSnappedBorderBoxRect());
+        if (visualRectFlags & EdgeInclusive) {
+            if (!resultRect.inclusiveIntersect(clipRect))
+                return false;
+        } else {
+            resultRect.intersect(clipRect);
+        }
+    }
     return svgRoot.mapToVisualRectInAncestorSpace(ancestor, resultRect, visualRectFlags);
 }
 
diff --git a/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h b/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h
index 7213a7f7..5690fa1 100644
--- a/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h
+++ b/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h
@@ -46,7 +46,7 @@
 class StrokeData;
 class TransformState;
 
-class SVGLayoutSupport {
+class CORE_EXPORT SVGLayoutSupport {
     STATIC_ONLY(SVGLayoutSupport);
 public:
     // Shares child layouting code between LayoutSVGRoot/LayoutSVG(Hidden)Container
diff --git a/third_party/WebKit/Source/core/page/Page.cpp b/third_party/WebKit/Source/core/page/Page.cpp
index 7f785597..fd79db8 100644
--- a/third_party/WebKit/Source/core/page/Page.cpp
+++ b/third_party/WebKit/Source/core/page/Page.cpp
@@ -211,7 +211,6 @@
 
 void Page::documentDetached(Document* document)
 {
-    m_multisamplingChangedObservers.clear();
     m_pointerLockController->documentDetached(document);
     m_contextMenuController->documentDetached(document);
     if (m_validationMessageClient)
@@ -390,19 +389,6 @@
     return m_isCursorVisible && settings().deviceSupportsMouse();
 }
 
-void Page::addMultisamplingChangedObserver(MultisamplingChangedObserver* observer)
-{
-    m_multisamplingChangedObservers.add(observer);
-}
-
-// For Oilpan, unregistration is handled by the GC and weak references.
-#if !ENABLE(OILPAN)
-void Page::removeMultisamplingChangedObserver(MultisamplingChangedObserver* observer)
-{
-    m_multisamplingChangedObservers.remove(observer);
-}
-#endif
-
 void Page::settingsChanged(SettingsDelegate::ChangeType changeType)
 {
     switch (changeType) {
@@ -419,11 +405,6 @@
                 toLocalFrame(frame)->document()->initDNSPrefetch();
         }
         break;
-    case SettingsDelegate::MultisamplingChange: {
-        for (MultisamplingChangedObserver* observer : m_multisamplingChangedObservers)
-            observer->multisamplingChanged(m_settings->openGLMultisamplingEnabled());
-        break;
-    }
     case SettingsDelegate::ImageLoadingChange:
         for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) {
             if (frame->isLocalFrame()) {
@@ -538,7 +519,6 @@
     visitor->trace(m_undoStack);
     visitor->trace(m_mainFrame);
     visitor->trace(m_validationMessageClient);
-    visitor->trace(m_multisamplingChangedObservers);
     visitor->trace(m_frameHost);
     visitor->trace(m_memoryPurgeController);
     Supplementable<Page>::trace(visitor);
diff --git a/third_party/WebKit/Source/core/page/Page.h b/third_party/WebKit/Source/core/page/Page.h
index 1b0a2ca..13ef51e 100644
--- a/third_party/WebKit/Source/core/page/Page.h
+++ b/third_party/WebKit/Source/core/page/Page.h
@@ -200,16 +200,6 @@
     bool isPainting() const { return m_isPainting; }
 #endif
 
-    class CORE_EXPORT MultisamplingChangedObserver : public GarbageCollectedMixin {
-    public:
-        virtual void multisamplingChanged(bool) = 0;
-    };
-
-    void addMultisamplingChangedObserver(MultisamplingChangedObserver*);
-#if !ENABLE(OILPAN)
-    void removeMultisamplingChangedObserver(MultisamplingChangedObserver*);
-#endif
-
     void didCommitLoad(LocalFrame*);
 
     void acceptLanguagesChanged();
@@ -287,8 +277,6 @@
     bool m_isPainting;
 #endif
 
-    HeapHashSet<WeakMember<MultisamplingChangedObserver>> m_multisamplingChangedObservers;
-
     // A pointer to all the interfaces provided to in-process Frames for this Page.
     // FIXME: Most of the members of Page should move onto FrameHost.
     Member<FrameHost> m_frameHost;
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
index 1d7e4bb..bf50af9 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -631,8 +631,7 @@
         scrollToPosition(clampedScrollPosition);
 
     if (originalScrollOffset != adjustedScrollOffset()) {
-        DoublePoint origin(scrollOrigin());
-        scrollPositionChanged(-origin + adjustedScrollOffset(), ProgrammaticScroll);
+        scrollPositionChanged(scrollPositionDouble(), ProgrammaticScroll);
     }
 
     m_scrollbarManager.setCanDetachScrollbars(false);
diff --git a/third_party/WebKit/Source/core/paint/README.md b/third_party/WebKit/Source/core/paint/README.md
index 643933a3..b3516cd 100644
--- a/third_party/WebKit/Source/core/paint/README.md
+++ b/third_party/WebKit/Source/core/paint/README.md
@@ -2,15 +2,20 @@
 
 This directory contains implementation of painters of layout objects.
 
-## Stacked contents and stacking contexts
+## Glossaries
+
+### Stacked elements and stacking contexts
 
 This chapter is basically a clarification of [CSS 2.1 appendix E. Elaborate description
 of Stacking Contexts](http://www.w3.org/TR/CSS21/zindex.html).
 
+Note: we use 'element' instead of 'object' in this chapter to keep consistency with
+the spec. We use 'object' in other places in this document.
+
 According to the documentation, we can have the following types of elements that are
 treated in different ways during painting:
 
-*   Stacked elements: elements that are z-ordered in stacking contexts.
+*   Stacked objects: objects that are z-ordered in stacking contexts, including:
 
     *   Stacking contexts: elements with non-auto z-indices.
 
@@ -55,7 +60,26 @@
 
 *   Other normal elements.
 
-## Painters
+### Other glossaries
+
+*   Paint container: the parent of an object for painting, as defined by [CSS2.1 spec
+    for painting]((http://www.w3.org/TR/CSS21/zindex.html)). For regular objects,
+    this is the parent in the DOM. For stacked objects, it's the containing stacking
+    context-inducing object.
+
+*   Paint container chain: the chain of paint ancestors between an element and the
+    root of the page.
+
+*   Compositing container: an implementation detail of Blink, which uses
+    `PaintLayer`s to represent some layout objects. It is the ancestor along the paint
+    ancestor chain which has a PaintLayer. Implemented in
+    `PaintLayer::compositingContainer()`. Think of it as skipping intermediate normal
+    objects and going directly to the containing stacked object.
+
+*   Compositing container chain: same as paint chain, but for compositing container.
+
+*   Paint invalidation container: the nearest object on the compositing container
+    chain which is composited.
 
 ## Paint invalidation
 
@@ -70,13 +94,62 @@
 Paint invalidation is a document cycle stage after compositing update and before paint.
 During the previous stages, objects are marked for needing paint invalidation checking
 if needed by style change, layout change, compositing change, etc. In paint invalidation stage,
-we traverse the layout tree for marked subtrees and objects and send the following information
-to `GraphicsLayer`s and `PaintController`s:
+we traverse the layout tree in pre-order, crossing frame boundaries, for marked subtrees
+and objects and send the following information to `GraphicsLayer`s and `PaintController`s:
 
 *   paint invalidation rects: must cover all areas that will generete different pixels.
 *   invalidated display item clients: must invalidate all display item clients that will
     generate different display items.
 
+#### `PaintInvalidationState`
+
+`PaintInvalidationState` is an optimization used during the paint invalidation phase. Before
+the paint invalidation tree walk, a root `PaintInvalidationState` is created for the root
+`LayoutView`. During the tree walk, one `PaintInvalidationState` is created for each visited
+object based on the `PaintInvalidationState` passed from the parent object.
+It tracks the following information to provide O(1) complexity access to them if possible:
+
+*   Paint invalidation container: Since as indicated by the definitions in [Glossaries](#Other glossaries),
+    the paint invalidation container for stacked objects can differ from normal objects, we
+    have to track both separately. Here is an example:
+
+        <div style="overflow: scroll">
+            <div id=A style="position: absolute"></div>
+            <div id=B></div>
+        </div>
+
+    If the scroller is composited (for high-DPI screens for example), it is the paint invalidation
+    container for div B, but not A.
+
+*   Paint offset and clip rect: if possible, `PaintInvalidationState` accumulates paint offsets
+    and overflow clipping rects from the paint invalidation container to provide O(1) complexity to
+    map a point or a rect in current object's local space to paint invalidation container's space.
+    Because locations of objects are determined by their containing blocks, and the containing block
+    for absolute-position objects differs from non-absolute, we track paint offsets and overflow
+    clipping rects for absolute-position objects separately.
+
+In cases that accurate accumulation of paint offsets and clipping rects is impossible,
+we will fall back to slow-path using `LayoutObject::localToAncestorPoint()` or
+`LayoutObject::mapToVisualRectInAncestorSpace()`. This includes the following cases:
+
+*   An object has transform related property, is multi-column or has flipped blocks writing-mode,
+    causing we can't simply accumulate paint offset for mapping a local rect to paint invalidation
+    container;
+
+*   An object has has filter or reflection, which needs to expand paint invalidation rect
+    for descendants, because currently we don't include and reflection extents into visual overflow;
+
+*   For a fixed-position object we calculate its offset using `LayoutObject::localToAncestorPoint()`,
+    but map for its descendants in fast-path if no other things prevent us from doing this;
+
+*   Because we track paint offset from the normal paint invalidation container only, if we are going
+    to use `m_paintInvalidationContainerForStackedContents` and it's different from the normal paint
+    invalidation container, we have to force slow-path because the accumulated paint offset is not
+    usable;
+
+*   We also stop to track paint offset and clipping rect for absolute-position objects when
+    `m_paintInvalidationContainerForStackedContents` becomes different from `m_paintInvalidationContainer`.
+
 ### Paint invalidation of texts
 
 Texts are painted by `InlineTextBoxPainter` using `InlineTextBox` as display item client.
diff --git a/third_party/WebKit/Source/devtools/devtools.gypi b/third_party/WebKit/Source/devtools/devtools.gypi
index 76c3d08..cd6a22c 100644
--- a/third_party/WebKit/Source/devtools/devtools.gypi
+++ b/third_party/WebKit/Source/devtools/devtools.gypi
@@ -638,7 +638,6 @@
             'front_end/sources/uiList.css',
             'front_end/sources/AddSourceMapURLDialog.js',
             'front_end/sources/AdvancedSearchView.js',
-            'front_end/sources/AsyncOperationsSidebarPane.js',
             'front_end/sources/CallStackSidebarPane.js',
             'front_end/sources/CSSSourceFrame.js',
             'front_end/sources/EditingLocationHistoryManager.js',
diff --git a/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js b/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js
index bf851ab..5f9d8f2 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js
@@ -23,18 +23,20 @@
 
 /**
  * @param {number} throughput
+ * @param {boolean=} plainText
  * @return {string}
  */
-WebInspector.NetworkConditionsSelector._throughputText = function(throughput)
+WebInspector.NetworkConditionsSelector._throughputText = function(throughput, plainText)
 {
     if (throughput < 0)
         return "";
     var throughputInKbps = throughput / (1024 / 8);
+    var delimiter = plainText ? "" : " ";
     if (throughputInKbps < 1024)
-        return WebInspector.UIString("%d kb/s", throughputInKbps);
+        return WebInspector.UIString("%d%skb/s", throughputInKbps, delimiter);
     if (throughputInKbps < 1024 * 10)
-        return WebInspector.UIString("%.1f Mb/s", throughputInKbps / 1024);
-    return WebInspector.UIString("%d Mb/s", (throughputInKbps / 1024) | 0);
+        return WebInspector.UIString("%.1f%sMb/s", throughputInKbps / 1024, delimiter);
+    return WebInspector.UIString("%d%sMb/s", (throughputInKbps / 1024) | 0, delimiter);
 }
 
 /** @type {!Array.<!WebInspector.NetworkManager.Conditions>} */
@@ -52,9 +54,10 @@
 
 /**
  * @param {!WebInspector.NetworkManager.Conditions} conditions
+ * @param {boolean=} plainText
  * @return {!{text: string, title: string}}
  */
-WebInspector.NetworkConditionsSelector._conditionsTitle = function(conditions)
+WebInspector.NetworkConditionsSelector._conditionsTitle = function(conditions, plainText)
 {
     var downloadInKbps = conditions.download / (1024 / 8);
     var uploadInKbps = conditions.upload / (1024 / 8);
@@ -63,9 +66,10 @@
     if (!isThrottling)
         return {text: conditionTitle, title: conditionTitle};
 
-    var downloadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.download);
-    var uploadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.upload);
-    var title = WebInspector.UIString("%s (%s\u2b07 %s\u2b06 %dms RTT)", conditionTitle, downloadText, uploadText, conditions.latency);
+    var downloadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.download, plainText);
+    var uploadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.upload, plainText);
+    var pattern = plainText ? "%s (%dms, %s, %s)" : "%s (%dms RTT, %s\u2b07, %s\u2b06)";
+    var title = WebInspector.UIString(pattern, conditionTitle, conditions.latency, downloadText, uploadText);
     return {text: title, title: WebInspector.UIString("Maximum download throughput: %s.\r\nMaximum upload throughput: %s.\r\nMinimum round-trip time: %dms.", downloadText, uploadText, conditions.latency)};
 }
 
@@ -196,7 +200,7 @@
             if (!conditions)
                 contextMenu.appendSeparator();
             else
-                contextMenu.appendCheckboxItem(WebInspector.NetworkConditionsSelector._conditionsTitle(conditions).text, selector.optionSelected.bind(selector, conditions), selectedIndex === index);
+                contextMenu.appendCheckboxItem(WebInspector.NetworkConditionsSelector._conditionsTitle(conditions, true).text, selector.optionSelected.bind(selector, conditions), selectedIndex === index);
         }
         contextMenu.appendItem(WebInspector.UIString("Edit\u2026"), selector.revealAndUpdate.bind(selector));
     }
diff --git a/third_party/WebKit/Source/devtools/front_end/components/ShortcutsScreen.js b/third_party/WebKit/Source/devtools/front_end/components/ShortcutsScreen.js
index 45ca577a..36dec89 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/ShortcutsScreen.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/ShortcutsScreen.js
@@ -249,8 +249,6 @@
     section.addAlternateKeys(WebInspector.shortcutRegistry.shortcutDescriptorsForAction("debugger.step-over"), WebInspector.UIString("Step over"));
     section.addAlternateKeys(WebInspector.shortcutRegistry.shortcutDescriptorsForAction("debugger.step-into"), WebInspector.UIString("Step into"));
     section.addAlternateKeys(WebInspector.shortcutRegistry.shortcutDescriptorsForAction("debugger.step-out"), WebInspector.UIString("Step out"));
-    if (Runtime.experiments.isEnabled("stepIntoAsync"))
-        section.addAlternateKeys(WebInspector.shortcutRegistry.shortcutDescriptorsForAction("debugger.step-into"), WebInspector.UIString("Step into"));
 
     var nextAndPrevFrameKeys = WebInspector.ShortcutsScreen.SourcesPanelShortcuts.NextCallFrame.concat(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame);
     section.addRelatedKeys(nextAndPrevFrameKeys, WebInspector.UIString("Next/previous call frame"));
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
index cafe233..2f60f72 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
@@ -73,7 +73,7 @@
     this._visible = false;
 
     this._popoverHelper = new WebInspector.PopoverHelper(this._element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
-    this._popoverHelper.setTimeout(0);
+    this._popoverHelper.setTimeout(0, 100);
 
     /** @type {!Map<!WebInspector.DOMNode, !WebInspector.ElementsTreeOutline.UpdateRecord>} */
     this._updateRecords = new Map();
diff --git a/third_party/WebKit/Source/devtools/front_end/main/Main.js b/third_party/WebKit/Source/devtools/front_end/main/Main.js
index 8302a03..5e75ce97 100644
--- a/third_party/WebKit/Source/devtools/front_end/main/Main.js
+++ b/third_party/WebKit/Source/devtools/front_end/main/Main.js
@@ -122,7 +122,6 @@
         Runtime.experiments.register("timelineShowAllEvents", "Show all events on Timeline", true);
         Runtime.experiments.register("timelineLatencyInfo", "Show input latency events on the Timeline", true);
         Runtime.experiments.register("securityPanel", "Security panel");
-        Runtime.experiments.register("stepIntoAsync", "Step into async");
         Runtime.experiments.register("timelineFlowEvents", "Timeline flow events", true);
         Runtime.experiments.register("timelineInvalidationTracking", "Timeline invalidation tracking", true);
         Runtime.experiments.register("timelineRecordingPerspectives", "Timeline recording perspectives UI");
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileBottomUpDataGrid.js b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileBottomUpDataGrid.js
index 591d4acb..ee86af7 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileBottomUpDataGrid.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileBottomUpDataGrid.js
@@ -178,12 +178,14 @@
 /**
  * @constructor
  * @extends {WebInspector.ProfileDataGridTree}
- * @param {!WebInspector.CPUProfileView} profileView
+ * @param {!WebInspector.ProfileDataGridNode.Formatter} formatter
+ * @param {!WebInspector.SearchableView} searchableView
  * @param {!ProfilerAgent.CPUProfileNode} rootProfileNode
+ * @param {number} totalTime
  */
-WebInspector.BottomUpProfileDataGridTree = function(profileView, rootProfileNode)
+WebInspector.BottomUpProfileDataGridTree = function(formatter, searchableView, rootProfileNode, totalTime)
 {
-    WebInspector.ProfileDataGridTree.call(this, profileView, rootProfileNode);
+    WebInspector.ProfileDataGridTree.call(this, formatter, searchableView, totalTime);
 
     // Iterate each node in pre-order.
     var profileNodeUIDs = 0;
@@ -304,14 +306,13 @@
      * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
      * @param {boolean} shouldJump
      * @param {boolean=} jumpBackwards
-     * @return {number}
      */
     performSearch: function(searchConfig, shouldJump, jumpBackwards)
     {
         this.searchCanceled();
         var matchesQuery = this._matchFunction(searchConfig);
         if (!matchesQuery)
-            return 0;
+            return;
 
         this._searchResults = [];
         for (var current = this.children[0]; current; current = current.traverseNextNode(true, null, true)) {
@@ -319,7 +320,8 @@
                 this._searchResults.push({ profileNode: current });
         }
         this._searchResultIndex = jumpBackwards ? 0 : this._searchResults.length - 1;
-        return this._searchResults.length;
+        this._searchableView.updateSearchMatchesCount(this._searchResults.length);
+        this._searchableView.updateCurrentMatchIndex(this._searchResultIndex);
     },
 
     /**
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileDataGrid.js b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileDataGrid.js
index 863127a0..70c60164 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileDataGrid.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileDataGrid.js
@@ -27,7 +27,7 @@
  * @constructor
  * @extends {WebInspector.DataGridNode}
  * @param {!ProfilerAgent.CPUProfileNode} profileNode
- * @param {!WebInspector.TopDownProfileDataGridTree} owningTree
+ * @param {!WebInspector.ProfileDataGridTree} owningTree
  * @param {boolean} hasChildren
  */
 WebInspector.ProfileDataGridNode = function(profileNode, owningTree, hasChildren)
@@ -37,7 +37,6 @@
     WebInspector.DataGridNode.call(this, null, hasChildren);
 
     this.tree = owningTree;
-
     this.childrenByCallUID = {};
     this.lastComparator = null;
 
@@ -45,7 +44,7 @@
     this.selfTime = profileNode.selfTime;
     this.totalTime = profileNode.totalTime;
     this.functionName = WebInspector.beautifyFunctionName(profileNode.functionName);
-    this._deoptReason = (!profileNode.deoptReason || profileNode.deoptReason === "no reason") ? "" : profileNode.deoptReason;
+    this._deoptReason = profileNode.deoptReason && profileNode.deoptReason !== "no reason" ? profileNode.deoptReason : "";
     this.url = profileNode.url;
 }
 
@@ -57,30 +56,15 @@
      */
     createCell: function(columnId)
     {
-        /**
-         * @param {number} value
-         * @param {number} percent
-         * @return {!Element}
-         */
-        function createValueCell(value, percent)
-        {
-            var cell = createElementWithClass("td", "numeric-column");
-            var div = cell.createChild("div", "profile-multiple-values");
-            div.createChild("span").textContent = WebInspector.UIString("%.1f\u2009ms", value);
-            div.createChild("span", "percent-column").textContent = percent >= 0 ? WebInspector.UIString("%.2f\u2009%%", percent) : "";
-            return cell;
-        }
-
         var cell;
-        var isIdleNode = this.profileNode === this.tree.profileView.profile.idleNode;
         switch (columnId) {
         case "self":
-            cell = createValueCell(this.selfTime, isIdleNode ? -1 : this.selfPercent);
+            cell = this._createValueCell(this.selfTime, this.selfPercent);
             cell.classList.toggle("highlight", this._searchMatchedSelfColumn);
             break;
 
         case "total":
-            cell = createValueCell(this.totalTime, isIdleNode ? -1 : this.totalPercent);
+            cell = this._createValueCell(this.totalTime, this.totalPercent);
             cell.classList.toggle("highlight", this._searchMatchedTotalColumn);
             break;
 
@@ -94,9 +78,7 @@
             cell.createTextChild(this.functionName);
             if (this.profileNode.scriptId === "0")
                 break;
-            var target = this.tree.profileView.target();
-            var callFrame = /** @type {!RuntimeAgent.CallFrame} */ (this.profileNode);
-            var urlElement = this.tree.profileView._linkifier.linkifyConsoleCallFrame(target, callFrame, "profile-node-file");
+            var urlElement = this.tree._formatter.linkifyNode(this);
             urlElement.style.maxWidth = "75%";
             cell.appendChild(urlElement);
             break;
@@ -108,16 +90,18 @@
         return cell;
     },
 
-    select: function(supressSelectedEvent)
+    /**
+     * @param {number} value
+     * @param {number} percent
+     * @return {!Element}
+     */
+    _createValueCell: function(value, percent)
     {
-        WebInspector.DataGridNode.prototype.select.call(this, supressSelectedEvent);
-        this.tree.profileView._dataGridNodeSelected(this);
-    },
-
-    deselect: function(supressDeselectedEvent)
-    {
-        WebInspector.DataGridNode.prototype.deselect.call(this, supressDeselectedEvent);
-        this.tree.profileView._dataGridNodeDeselected(this);
+        var cell = createElementWithClass("td", "numeric-column");
+        var div = cell.createChild("div", "profile-multiple-values");
+        div.createChild("span").textContent = this.tree._formatter.formatValue(value, this);
+        div.createChild("span", "percent-column").textContent = this.tree._formatter.formatPercent(percent, this);
+        return cell;
     },
 
     /**
@@ -330,21 +314,19 @@
 
 /**
  * @constructor
- * @implements {WebInspector.CPUProfileView.Searchable}
- * @param {!WebInspector.CPUProfileView} profileView
- * @param {!ProfilerAgent.CPUProfileNode} rootProfileNode
+ * @implements {WebInspector.Searchable}
+ * @param {!WebInspector.ProfileDataGridNode.Formatter} formatter
+ * @param {!WebInspector.SearchableView} searchableView
+ * @param {number} totalTime
  */
-WebInspector.ProfileDataGridTree = function(profileView, rootProfileNode)
+WebInspector.ProfileDataGridTree = function(formatter, searchableView, totalTime)
 {
     this.tree = this;
     this.children = [];
-
-    this.profileView = profileView;
-
-    var idleNode = profileView.profile.idleNode;
-    this.totalTime = rootProfileNode.totalTime - (idleNode ? idleNode.totalTime : 0);
+    this._formatter = formatter;
+    this._searchableView = searchableView;
+    this.totalTime = totalTime;
     this.lastComparator = null;
-
     this.childrenByCallUID = {};
 }
 
@@ -506,14 +488,13 @@
      * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
      * @param {boolean} shouldJump
      * @param {boolean=} jumpBackwards
-     * @return {number}
      */
     performSearch: function(searchConfig, shouldJump, jumpBackwards)
     {
         this.searchCanceled();
         var matchesQuery = this._matchFunction(searchConfig);
         if (!matchesQuery)
-            return 0;
+            return;
 
         this._searchResults = [];
         for (var current = this.children[0]; current; current = current.traverseNextNode(false, null, false)) {
@@ -521,7 +502,8 @@
                 this._searchResults.push({ profileNode: current });
         }
         this._searchResultIndex = jumpBackwards ? 0 : this._searchResults.length - 1;
-        return this._searchResults.length;
+        this._searchableView.updateSearchMatchesCount(this._searchResults.length);
+        this._searchableView.updateCurrentMatchIndex(this._searchResultIndex);
     },
 
     /**
@@ -567,21 +549,33 @@
 
     /**
      * @override
-     * @return {number}
+     * @return {boolean}
      */
-    currentSearchResultIndex: function()
+    supportsCaseSensitiveSearch: function()
     {
-        return this._searchResultIndex;
+        return true;
     },
 
+    /**
+     * @override
+     * @return {boolean}
+     */
+    supportsRegexSearch: function()
+    {
+        return false;
+    },
+
+    /**
+     * @param {number} index
+     */
     _jumpToSearchResult: function(index)
     {
         var searchResult = this._searchResults[index];
         if (!searchResult)
             return;
-
         var profileNode = searchResult.profileNode;
         profileNode.revealAndSelect();
+        this._searchableView.updateCurrentMatchIndex(index);
     }
 }
 
@@ -626,3 +620,30 @@
 
     return comparator;
 }
+
+/**
+ * @interface
+ */
+WebInspector.ProfileDataGridNode.Formatter = function() { }
+
+WebInspector.ProfileDataGridNode.Formatter.prototype = {
+    /**
+     * @param {number} value
+     * @param {!WebInspector.ProfileDataGridNode} node
+     * @return {string}
+     */
+    formatValue: function(value, node) { },
+
+    /**
+     * @param {number} value
+     * @param {!WebInspector.ProfileDataGridNode} node
+     * @return {string}
+     */
+    formatPercent: function(value, node) { },
+
+    /**
+     * @param  {!WebInspector.ProfileDataGridNode} node
+     * @return {!Element}
+     */
+    linkifyNode: function(node) { }
+}
\ No newline at end of file
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileFlameChart.js b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileFlameChart.js
index 8c0de79f..e8dfc4d 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileFlameChart.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileFlameChart.js
@@ -373,15 +373,17 @@
 
 /**
  * @constructor
- * @implements {WebInspector.CPUProfileView.Searchable}
+ * @implements {WebInspector.Searchable}
  * @extends {WebInspector.VBox}
+ * @param {!WebInspector.SearchableView} searchableView
  * @param {!WebInspector.FlameChartDataProvider} dataProvider
  */
-WebInspector.CPUProfileFlameChart = function(dataProvider)
+WebInspector.CPUProfileFlameChart = function(searchableView, dataProvider)
 {
     WebInspector.VBox.call(this);
     this.element.id = "cpu-flame-chart";
 
+    this._searchableView = searchableView;
     this._overviewPane = new WebInspector.CPUProfileFlameChart.OverviewPane(dataProvider);
     this._overviewPane.show(this.element);
 
@@ -437,7 +439,6 @@
      * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
      * @param {boolean} shouldJump
      * @param {boolean=} jumpBackwards
-     * @return {number}
      */
     performSearch: function(searchConfig, shouldJump, jumpBackwards)
     {
@@ -446,7 +447,7 @@
         var selectedEntryIndex = this._searchResultIndex !== -1 ? this._searchResults[this._searchResultIndex] : -1;
         this._searchResults = [];
         var entriesCount = this._dataProvider._entryNodes.length;
-        for(var index = 0; index < entriesCount; ++index) {
+        for (var index = 0; index < entriesCount; ++index) {
             if (this._dataProvider.entryTitle(index).match(matcher))
                 this._searchResults.push(index);
         }
@@ -456,10 +457,11 @@
             if (this._searchResultIndex === -1)
                 this._searchResultIndex = jumpBackwards ? this._searchResults.length - 1 : 0;
             this._mainPane.setSelectedEntry(this._searchResults[this._searchResultIndex]);
-        } else
+        } else {
             this.searchCanceled();
-
-        return this._searchResults.length;
+        }
+        this._searchableView.updateSearchMatchesCount(this._searchResults.length);
+        this._searchableView.updateCurrentMatchIndex(this._searchResultIndex);
     },
 
     /**
@@ -479,6 +481,7 @@
     {
         this._searchResultIndex = (this._searchResultIndex + 1) % this._searchResults.length;
         this._mainPane.setSelectedEntry(this._searchResults[this._searchResultIndex]);
+        this._searchableView.updateCurrentMatchIndex(this._searchResultIndex);
     },
 
     /**
@@ -488,15 +491,25 @@
     {
         this._searchResultIndex = (this._searchResultIndex - 1 + this._searchResults.length) % this._searchResults.length;
         this._mainPane.setSelectedEntry(this._searchResults[this._searchResultIndex]);
+        this._searchableView.updateCurrentMatchIndex(this._searchResultIndex);
     },
 
     /**
      * @override
-     * @return {number}
+     * @return {boolean}
      */
-    currentSearchResultIndex: function()
+    supportsCaseSensitiveSearch: function()
     {
-        return this._searchResultIndex;
+        return true;
+    },
+
+    /**
+     * @override
+     * @return {boolean}
+     */
+    supportsRegexSearch: function()
+    {
+        return false;
     },
 
     __proto__: WebInspector.VBox.prototype
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileTopDownDataGrid.js b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileTopDownDataGrid.js
index f28e58b..db2e4b9 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileTopDownDataGrid.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileTopDownDataGrid.js
@@ -90,15 +90,15 @@
 /**
  * @constructor
  * @extends {WebInspector.ProfileDataGridTree}
- * @param {!WebInspector.CPUProfileView} profileView
+ * @param {!WebInspector.ProfileDataGridNode.Formatter} formatter
+ * @param {!WebInspector.SearchableView} searchableView
  * @param {!ProfilerAgent.CPUProfileNode} rootProfileNode
+ * @param {number} totalTime
  */
-WebInspector.TopDownProfileDataGridTree = function(profileView, rootProfileNode)
+WebInspector.TopDownProfileDataGridTree = function(formatter, searchableView, rootProfileNode, totalTime)
 {
-    WebInspector.ProfileDataGridTree.call(this, profileView, rootProfileNode);
-
+    WebInspector.ProfileDataGridTree.call(this, formatter, searchableView, totalTime);
     this._remainingChildren = rootProfileNode.children;
-
     WebInspector.ProfileDataGridNode.populate(this);
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileView.js b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileView.js
index 74057f2..bd5553d 100644
--- a/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileView.js
+++ b/third_party/WebKit/Source/devtools/front_end/profiler/CPUProfileView.js
@@ -23,7 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
 /**
  * @constructor
  * @implements {WebInspector.Searchable}
@@ -40,6 +39,7 @@
     this._searchableView.show(this.element);
 
     this._viewType = WebInspector.settings.createSetting("cpuProfilerView", WebInspector.CPUProfileView._TypeHeavy);
+    this._nodeFormatter = new WebInspector.CPUProfileView.NodeFormatter(this);
 
     var columns = [];
     columns.push({id: "self", title: WebInspector.UIString("Self"), width: "120px", sort: WebInspector.DataGrid.Order.Descending, sortable: true});
@@ -48,6 +48,8 @@
 
     this.dataGrid = new WebInspector.DataGrid(columns);
     this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortProfile, this);
+    this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._nodeSelected.bind(this, true));
+    this.dataGrid.addEventListener(WebInspector.DataGrid.Events.DeselectedNode, this._nodeSelected.bind(this, false));
 
     this.viewSelectComboBox = new WebInspector.ToolbarComboBox(this._changeView.bind(this));
 
@@ -76,6 +78,8 @@
     this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.DefaultFormatter(30));
 
     this.profile = new WebInspector.CPUProfileDataModel(profileHeader._profile || profileHeader.protocolProfile());
+    this.totalCpuTime = this.profile.profileHead.totalTime;
+    this.totalCpuTime -= this.profile.idleNode ? this.profile.idleNode.totalTime : 0;
 
     this._changeView();
     if (this._flameChart)
@@ -86,30 +90,6 @@
 WebInspector.CPUProfileView._TypeTree = "Tree";
 WebInspector.CPUProfileView._TypeHeavy = "Heavy";
 
-/**
- * @interface
- */
-WebInspector.CPUProfileView.Searchable = function()
-{
-}
-
-WebInspector.CPUProfileView.Searchable.prototype = {
-    jumpToNextSearchResult: function() {},
-    jumpToPreviousSearchResult: function() {},
-    searchCanceled: function() {},
-    /**
-     * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
-     * @param {boolean} shouldJump
-     * @param {boolean=} jumpBackwards
-     * @return {number}
-     */
-    performSearch: function(searchConfig, shouldJump, jumpBackwards) {},
-    /**
-     * @return {number}
-     */
-    currentSearchResultIndex: function() {}
-}
-
 WebInspector.CPUProfileView.prototype = {
     focus: function()
     {
@@ -152,7 +132,7 @@
     _getBottomUpProfileDataGridTree: function()
     {
         if (!this._bottomUpProfileDataGridTree)
-            this._bottomUpProfileDataGridTree = new WebInspector.BottomUpProfileDataGridTree(this, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profile.profileHead));
+            this._bottomUpProfileDataGridTree = new WebInspector.BottomUpProfileDataGridTree(this._nodeFormatter, this._searchableView, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profile.profileHead), this.totalCpuTime);
         return this._bottomUpProfileDataGridTree;
     },
 
@@ -162,7 +142,7 @@
     _getTopDownProfileDataGridTree: function()
     {
         if (!this._topDownProfileDataGridTree)
-            this._topDownProfileDataGridTree = new WebInspector.TopDownProfileDataGridTree(this, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profile.profileHead));
+            this._topDownProfileDataGridTree = new WebInspector.TopDownProfileDataGridTree(this._nodeFormatter, this._searchableView, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profile.profileHead), this.totalCpuTime);
         return this._topDownProfileDataGridTree;
     },
 
@@ -238,9 +218,7 @@
      */
     performSearch: function(searchConfig, shouldJump, jumpBackwards)
     {
-        var matchesCount = this._searchableElement.performSearch(searchConfig, shouldJump, jumpBackwards);
-        this._searchableView.updateSearchMatchesCount(matchesCount);
-        this._searchableView.updateCurrentMatchIndex(this._searchableElement.currentSearchResultIndex());
+        this._searchableElement.performSearch(searchConfig, shouldJump, jumpBackwards);
     },
 
     /**
@@ -249,7 +227,6 @@
     jumpToNextSearchResult: function()
     {
         this._searchableElement.jumpToNextSearchResult();
-        this._searchableView.updateCurrentMatchIndex(this._searchableElement.currentSearchResultIndex());
     },
 
     /**
@@ -258,7 +235,6 @@
     jumpToPreviousSearchResult: function()
     {
         this._searchableElement.jumpToPreviousSearchResult();
-        this._searchableView.updateCurrentMatchIndex(this._searchableElement.currentSearchResultIndex());
     },
 
     _ensureFlameChartCreated: function()
@@ -266,7 +242,7 @@
         if (this._flameChart)
             return;
         this._dataProvider = new WebInspector.CPUFlameChartDataProvider(this.profile, this._profileHeader.target());
-        this._flameChart = new WebInspector.CPUProfileFlameChart(this._dataProvider);
+        this._flameChart = new WebInspector.CPUProfileFlameChart(this._searchableView, this._dataProvider);
         this._flameChart.addEventListener(WebInspector.FlameChart.Events.EntrySelected, this._onEntrySelected.bind(this));
     },
 
@@ -326,6 +302,15 @@
         this._visibleView.show(this._searchableView.element);
     },
 
+    /**
+     * @param {boolean} selected
+     */
+    _nodeSelected: function(selected)
+    {
+        this.focusButton.setEnabled(selected);
+        this.excludeButton.setEnabled(selected);
+    },
+
     _focusClicked: function(event)
     {
         if (!this.dataGrid.selectedNode)
@@ -361,18 +346,6 @@
         this.refreshVisibleData();
     },
 
-    _dataGridNodeSelected: function(node)
-    {
-        this.focusButton.setEnabled(true);
-        this.excludeButton.setEnabled(true);
-    },
-
-    _dataGridNodeDeselected: function(node)
-    {
-        this.focusButton.setEnabled(false);
-        this.excludeButton.setEnabled(false);
-    },
-
     _sortProfile: function()
     {
         var sortAscending = this.dataGrid.isSortOrderAscending();
@@ -823,3 +796,46 @@
 
     __proto__: WebInspector.ProfileHeader.prototype
 }
+
+/**
+ * @implements {WebInspector.ProfileDataGridNode.Formatter}
+ * @constructor
+ */
+WebInspector.CPUProfileView.NodeFormatter = function(profileView)
+{
+    this._profileView = profileView;
+}
+
+WebInspector.CPUProfileView.NodeFormatter.prototype = {
+    /**
+     * @override
+     * @param {number} value
+     * @return {string}
+     */
+    formatValue: function(value)
+    {
+        return WebInspector.UIString("%.1f\u2009ms", value);
+    },
+
+    /**
+     * @override
+     * @param {number} value
+     * @param {!WebInspector.ProfileDataGridNode} node
+     * @return {string}
+     */
+    formatPercent: function(value, node)
+    {
+        return node.profileNode === this._profileView.profile.idleNode ? "" : WebInspector.UIString("%.2f\u2009%%", value);
+    },
+
+    /**
+     * @override
+     * @param  {!WebInspector.ProfileDataGridNode} node
+     * @return {!Element}
+     */
+    linkifyNode: function(node)
+    {
+        var callFrame = /** @type {!RuntimeAgent.CallFrame} */ (node.profileNode);
+        return this._profileView._linkifier.linkifyConsoleCallFrame(this._profileView.target(), callFrame, "profile-node-file");
+    }
+}
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js
index 491729ea..f94d688 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js
@@ -78,8 +78,6 @@
 
 /** @enum {string} */
 WebInspector.DebuggerModel.Events = {
-    AsyncOperationStarted: "AsyncOperationStarted",
-    AsyncOperationCompleted: "AsyncOperationCompleted",
     DebuggerWasEnabled: "DebuggerWasEnabled",
     DebuggerWasDisabled: "DebuggerWasDisabled",
     BeforeDebuggerPaused: "BeforeDebuggerPaused",
@@ -94,7 +92,6 @@
 
 /** @enum {string} */
 WebInspector.DebuggerModel.BreakReason = {
-    AsyncOperation: "AsyncOperation",
     DOM: "DOM",
     EventListener: "EventListener",
     XHR: "XHR",
@@ -210,11 +207,6 @@
         this._agent.stepInto();
     },
 
-    stepIntoAsync: function()
-    {
-        this._agent.stepIntoAsync();
-    },
-
     stepOver: function()
     {
         this._agent.stepOver();
@@ -350,27 +342,6 @@
         }
     },
 
-    flushAsyncOperationEvents: function()
-    {
-        this._agent.flushAsyncOperationEvents();
-    },
-
-    /**
-     * @param {number} operationId
-     */
-    setAsyncOperationBreakpoint: function(operationId)
-    {
-        this._agent.setAsyncOperationBreakpoint(operationId);
-    },
-
-    /**
-     * @param {number} operationId
-     */
-    removeAsyncOperationBreakpoint: function(operationId)
-    {
-        this._agent.removeAsyncOperationBreakpoint(operationId);
-    },
-
     /**
      * @param {!DebuggerAgent.BreakpointId} breakpointId
      * @param {!DebuggerAgent.Location} location
@@ -388,22 +359,6 @@
         this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.GlobalObjectCleared);
     },
 
-    /**
-     * @param {!DebuggerAgent.AsyncOperation} operation
-     */
-    _asyncOperationStarted: function(operation)
-    {
-        this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.AsyncOperationStarted, operation);
-    },
-
-    /**
-     * @param {number} operationId
-     */
-    _asyncOperationCompleted: function(operationId)
-    {
-        this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.AsyncOperationCompleted, operationId);
-    },
-
     _reset: function()
     {
         this._scripts = {};
@@ -974,24 +929,6 @@
     breakpointResolved: function(breakpointId, location)
     {
         this._debuggerModel._breakpointResolved(breakpointId, location);
-    },
-
-    /**
-     * @override
-     * @param {!DebuggerAgent.AsyncOperation} operation
-     */
-    asyncOperationStarted: function(operation)
-    {
-        this._debuggerModel._asyncOperationStarted(operation);
-    },
-
-    /**
-     * @override
-     * @param {number} operationId
-     */
-    asyncOperationCompleted: function(operationId)
-    {
-        this._debuggerModel._asyncOperationCompleted(operationId);
     }
 }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/AsyncOperationsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/AsyncOperationsSidebarPane.js
deleted file mode 100644
index 2b4c375..0000000
--- a/third_party/WebKit/Source/devtools/front_end/sources/AsyncOperationsSidebarPane.js
+++ /dev/null
@@ -1,384 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @constructor
- * @extends {WebInspector.BreakpointsSidebarPaneBase}
- * @implements {WebInspector.TargetManager.Observer}
- */
-WebInspector.AsyncOperationsSidebarPane = function()
-{
-    WebInspector.BreakpointsSidebarPaneBase.call(this, WebInspector.UIString("Async Operation Breakpoints"));
-    this.element.classList.add("async-operations");
-    this._updateEmptyElement();
-
-    var refreshButton = new WebInspector.ToolbarButton(WebInspector.UIString("Refresh"), "refresh-toolbar-item");
-    refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this));
-    this.toolbar().appendToolbarItem(refreshButton);
-
-    /** @type {!Map.<!WebInspector.Target, !Map.<number, !DebuggerAgent.AsyncOperation>>} */
-    this._asyncOperationsByTarget = new Map();
-    /** @type {!Map.<number, !Element>} */
-    this._operationIdToElement = new Map();
-
-    this._revealBlackboxedCallFrames = false;
-    this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.DefaultFormatter(30));
-
-    this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
-    this._popoverHelper.setTimeout(250, 250);
-    this.element.addEventListener("click", this._hidePopover.bind(this), true);
-
-    WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.AsyncOperationStarted, this._onAsyncOperationStarted, this);
-    WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.AsyncOperationCompleted, this._onAsyncOperationCompleted, this);
-    WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
-    WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
-    WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targetChanged, this);
-
-    WebInspector.moduleSetting("skipStackFramesPattern").addChangeListener(this._refresh, this);
-    WebInspector.moduleSetting("enableAsyncStackTraces").addChangeListener(this._asyncStackTracesStateChanged, this);
-
-    WebInspector.targetManager.observeTargets(this);
-}
-
-WebInspector.AsyncOperationsSidebarPane.prototype = {
-    _operationIdSymbol: Symbol("operationId"),
-    _checkedSymbol: Symbol("checked"),
-
-    /**
-     * @override
-     * @param {!WebInspector.Target} target
-     */
-    targetAdded: function(target)
-    {
-    },
-
-    /**
-     * @override
-     * @param {!WebInspector.Target} target
-     */
-    targetRemoved: function(target)
-    {
-        this._asyncOperationsByTarget.delete(target);
-        if (this._target === target) {
-            this._clear();
-            delete this._target;
-        }
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _targetChanged: function(event)
-    {
-        var target = /** @type {!WebInspector.Target} */ (event.data);
-        if (this._target === target)
-            return;
-        this._target = target;
-        this._refresh();
-    },
-
-    /**
-     * @param {?WebInspector.Target} target
-     * @param {number} operationId
-     * @return {?DebuggerAgent.AsyncOperation}
-     */
-    operationById: function(target, operationId)
-    {
-        if (!target)
-            return null;
-        var operationsMap = this._asyncOperationsByTarget.get(target);
-        if (!operationsMap)
-            return null;
-        return operationsMap.get(operationId) || null;
-    },
-
-    _asyncStackTracesStateChanged: function()
-    {
-        var enabled = WebInspector.moduleSetting("enableAsyncStackTraces").get();
-        if (enabled) {
-            this._target = WebInspector.context.flavor(WebInspector.Target);
-        } else if (this._target) {
-            this._asyncOperationsByTarget.delete(this._target);
-            delete this._target;
-        }
-        this._updateEmptyElement();
-        this._refresh();
-    },
-
-    _updateEmptyElement: function()
-    {
-        var enabled = WebInspector.moduleSetting("enableAsyncStackTraces").get();
-        if (enabled) {
-            this.emptyElement.textContent = WebInspector.UIString("No Async Operations");
-        } else {
-            this.emptyElement.textContent = WebInspector.UIString("Async stack traces are disabled.");
-            this.emptyElement.createTextChild(" ");
-            var enableLink = this.emptyElement.createChild("span", "link");
-            enableLink.textContent = WebInspector.UIString("Enable");
-            enableLink.addEventListener("click", enableAsyncStackTraces, true);
-        }
-
-        function enableAsyncStackTraces()
-        {
-            WebInspector.moduleSetting("enableAsyncStackTraces").set(true);
-        }
-    },
-
-    /** @override */
-    wasShown: function()
-    {
-        if (!this._target && WebInspector.moduleSetting("enableAsyncStackTraces").get()) {
-            this._target = WebInspector.context.flavor(WebInspector.Target);
-            this._refresh();
-        }
-    },
-
-    /** @override */
-    willHide: function()
-    {
-        this._hidePopover();
-    },
-
-    /** @override */
-    onResize: function()
-    {
-        this._hidePopover();
-    },
-
-    /**
-     * @param {!WebInspector.Target} target
-     */
-    revealHiddenCallFrames: function(target)
-    {
-        if (this._target !== target || this._revealBlackboxedCallFrames)
-            return;
-        this._revealBlackboxedCallFrames = true;
-        this._refresh();
-    },
-
-    /**
-     * @param {number} operationId
-     */
-    highlightBreakpoint: function(operationId)
-    {
-        this._breakpointHitId = operationId;
-        var element = this._operationIdToElement.get(operationId);
-        if (!element)
-            return;
-        this.expand();
-        element.classList.add("breakpoint-hit");
-    },
-
-    clearBreakpointHighlight: function()
-    {
-        if (!this._breakpointHitId)
-            return;
-        var element = this._operationIdToElement.get(this._breakpointHitId);
-        if (element)
-            element.classList.remove("breakpoint-hit");
-        delete this._breakpointHitId;
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _debuggerResumed: function(event)
-    {
-        var target = /** @type {!WebInspector.Target} */  (event.target.target());
-        if (this._target !== target || !this._revealBlackboxedCallFrames)
-            return;
-        this._revealBlackboxedCallFrames = false;
-        this._refresh();
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _debuggerReset: function(event)
-    {
-        var target = /** @type {!WebInspector.Target} */ (event.target.target());
-        this._asyncOperationsByTarget.delete(target);
-        if (this._target === target)
-            this._clear();
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _refreshButtonClicked: function(event)
-    {
-        event.consume();
-        this.expand();
-        var debuggerModel = WebInspector.DebuggerModel.fromTarget(this._target);
-        if (debuggerModel)
-            debuggerModel.flushAsyncOperationEvents();
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _onAsyncOperationStarted: function(event)
-    {
-        var target = /** @type {!WebInspector.Target} */ (event.target.target());
-        var operation = /** @type {!DebuggerAgent.AsyncOperation} */ (event.data);
-
-        var operationsMap = this._asyncOperationsByTarget.get(target);
-        if (!operationsMap) {
-            operationsMap = new Map();
-            this._asyncOperationsByTarget.set(target, operationsMap)
-        }
-        operationsMap.set(operation.id, operation);
-
-        if (this._target === target)
-            this._createAsyncOperationItem(operation);
-    },
-
-    /**
-     * @param {!WebInspector.Event} event
-     */
-    _onAsyncOperationCompleted: function(event)
-    {
-        var target = /** @type {!WebInspector.Target} */ (event.target.target());
-        var operationId = /** @type {number} */ (event.data);
-
-        var operationsMap = this._asyncOperationsByTarget.get(target);
-        if (operationsMap)
-            operationsMap.delete(operationId);
-
-        if (this._target === target) {
-            var element = this._operationIdToElement.get(operationId);
-            if (element)
-                this.removeListElement(element);
-            this._operationIdToElement.delete(operationId);
-            if (!this._operationIdToElement.size)
-                this._clear();
-        }
-    },
-
-    _refresh: function()
-    {
-        this._clear();
-        if (!this._target)
-            return;
-        var operationsMap = this._asyncOperationsByTarget.get(this._target);
-        if (!operationsMap || !operationsMap.size)
-            return;
-
-        // The for..of loop iterates in insertion order.
-        for (var pair of operationsMap) {
-            var operation = /** @type {!DebuggerAgent.AsyncOperation} */ (pair[1]);
-            this._createAsyncOperationItem(operation);
-        }
-    },
-
-    /**
-     * @param {!DebuggerAgent.AsyncOperation} operation
-     */
-    _createAsyncOperationItem: function(operation)
-    {
-        var element = createElementWithClass("li", "async-operation");
-
-        var title;
-        if (operation.stack)
-            title = operation.stack.description;
-        if (!title)
-            title = WebInspector.UIString("Async Operation");
-
-        var label = createCheckboxLabel(title, operation[this._checkedSymbol]);
-        label.checkboxElement.addEventListener("click", this._checkboxClicked.bind(this, operation.id), false);
-        element.appendChild(label);
-        if (operation.stack && operation.stack.callFrames.length)
-            element.createChild("div").appendChild(this._linkifier.linkifyStackTraceTopFrame(this._target, operation.stack));
-
-        element[this._operationIdSymbol] = operation.id;
-        this._operationIdToElement.set(operation.id, element);
-        this.addListElement(element, this.listElement.firstChild);
-
-        if (operation.id === this._breakpointHitId) {
-            element.classList.add("breakpoint-hit");
-            this.expand();
-        }
-    },
-
-    /**
-     * @param {number} operationId
-     * @param {!Event} event
-     */
-    _checkboxClicked: function(operationId, event)
-    {
-        var operation = this.operationById(this._target, operationId);
-        if (!operation)
-            return;
-        var debuggerModel = WebInspector.DebuggerModel.fromTarget(this._target);
-        if (!debuggerModel)
-            return;
-        operation[this._checkedSymbol] = event.target.checked;
-        if (event.target.checked)
-            debuggerModel.setAsyncOperationBreakpoint(operationId);
-        else
-            debuggerModel.removeAsyncOperationBreakpoint(operationId);
-    },
-
-    _clear: function()
-    {
-        this._hidePopover();
-        this.reset();
-        this._operationIdToElement.clear();
-        this._linkifier.reset();
-    },
-
-    _hidePopover: function()
-    {
-        this._popoverHelper.hidePopover();
-    },
-
-    /**
-     * @param {!Element} element
-     * @param {!Event} event
-     * @return {!Element|!AnchorBox|undefined}
-     */
-    _getPopoverAnchor: function(element, event)
-    {
-        var anchor = /** @type {?Element} */ (element.enclosingNodeOrSelfWithNodeName("a"));
-        if (!anchor)
-            return undefined;
-        var operation = this._operationForPopover(anchor);
-        return operation ? anchor : undefined;
-    },
-
-    /**
-     * @param {!Element} anchor
-     * @param {!WebInspector.Popover} popover
-     */
-    _showPopover: function(anchor, popover)
-    {
-        var operation = this._operationForPopover(anchor);
-        if (!operation)
-            return;
-        var content = WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(this._target, this._linkifier, operation.stack);
-        popover.setCanShrink(true);
-        popover.showForAnchor(content, anchor);
-    },
-
-    /**
-     * @param {!Element} element
-     * @return {?DebuggerAgent.AsyncOperation}
-     */
-    _operationForPopover: function(element)
-    {
-        var asyncOperations = this._target && this._asyncOperationsByTarget.get(this._target);
-        if (!asyncOperations)
-            return null;
-        var anchor = element.enclosingNodeOrSelfWithClass("async-operation");
-        if (!anchor)
-            return null;
-        var operationId = anchor[this._operationIdSymbol];
-        var operation = operationId && asyncOperations.get(operationId);
-        if (!operation || !operation.stack)
-            return null;
-        return operation;
-    },
-
-    __proto__: WebInspector.BreakpointsSidebarPaneBase.prototype
-}
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
index d2232a3..0996744 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
@@ -45,7 +45,6 @@
 /** @enum {string} */
 WebInspector.CallStackSidebarPane.Events = {
     CallFrameSelected: "CallFrameSelected",
-    RevealHiddenCallFrames: "RevealHiddenCallFrames"
 }
 
 WebInspector.CallStackSidebarPane.prototype = {
@@ -191,7 +190,6 @@
             this._hiddenCallFramesMessageElement.remove();
             delete this._hiddenCallFramesMessageElement;
         }
-        this.dispatchEventToListeners(WebInspector.CallStackSidebarPane.Events.RevealHiddenCallFrames);
     },
 
     /**
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
index 83456d80..396c95fb 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
@@ -80,7 +80,6 @@
     this.sidebarPanes.watchExpressions = new WebInspector.WatchExpressionsSidebarPane();
     this.sidebarPanes.callstack = new WebInspector.CallStackSidebarPane();
     this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameSelected, this._callFrameSelectedInSidebar.bind(this));
-    this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.RevealHiddenCallFrames, this._hiddenCallFramesRevealedInSidebar.bind(this));
     this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));
 
     this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane();
@@ -89,8 +88,6 @@
     this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane();
     this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
     this.sidebarPanes.objectEventListeners = new WebInspector.ObjectEventListenersSidebarPane();
-    if (Runtime.experiments.isEnabled("stepIntoAsync"))
-        this.sidebarPanes.asyncOperationBreakpoints = new WebInspector.AsyncOperationsSidebarPane();
 
     this._lastSelectedTabSetting = WebInspector.settings.createLocalSetting("lastSelectedSourcesSidebarPaneTab", this.sidebarPanes.scopechain.title());
 
@@ -283,14 +280,6 @@
             this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a script blocked due to Content Security Policy directive: \"%s\".", details.auxData["directiveText"]));
         } else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand) {
             this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a debugged function."));
-        } else if (details.reason === WebInspector.DebuggerModel.BreakReason.AsyncOperation) {
-            if (Runtime.experiments.isEnabled("stepIntoAsync")) {
-                var operationId = details.auxData["operationId"];
-                var operation = this.sidebarPanes.asyncOperationBreakpoints.operationById(details.target(), operationId);
-                var description = (operation && operation.stack && operation.stack.description) || WebInspector.UIString("<unknown>");
-                this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a \"%s\" async operation.", description));
-                this.sidebarPanes.asyncOperationBreakpoints.highlightBreakpoint(operationId);
-            }
         } else {
             if (details.callFrames.length)
                 WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(details.callFrames[0].location(), didGetUILocation.bind(this), this._liveLocationPool);
@@ -664,19 +653,6 @@
     /**
      * @return {boolean}
      */
-    _stepIntoAsync: function()
-    {
-        var debuggerModel = this._prepareToResume();
-        if (!debuggerModel)
-            return true;
-
-        debuggerModel.stepIntoAsync();
-        return true;
-    },
-
-    /**
-     * @return {boolean}
-     */
     _stepOut: function()
     {
         var debuggerModel = this._prepareToResume();
@@ -696,12 +672,6 @@
         callFrame.debuggerModel.setSelectedCallFrame(callFrame);
     },
 
-    _hiddenCallFramesRevealedInSidebar: function()
-    {
-        if (Runtime.experiments.isEnabled("stepIntoAsync"))
-            this.sidebarPanes.asyncOperationBreakpoints.revealHiddenCallFrames(/** @type {!WebInspector.Target} */ (WebInspector.context.flavor(WebInspector.Target)));
-    },
-
     /**
      * @param {!WebInspector.UILocation} uiLocation
      */
@@ -1140,8 +1110,6 @@
             sidebarPaneStack.addPane(this.sidebarPanes.xhrBreakpoints);
             sidebarPaneStack.addPane(this.sidebarPanes.eventListenerBreakpoints);
             sidebarPaneStack.addPane(this.sidebarPanes.objectEventListeners);
-            if (Runtime.experiments.isEnabled("stepIntoAsync"))
-                sidebarPaneStack.addPane(this.sidebarPanes.asyncOperationBreakpoints);
 
             var tabbedPane = new WebInspector.SidebarTabbedPane();
             splitWidget.setSidebarWidget(tabbedPane);
@@ -1382,9 +1350,6 @@
         case "debugger.step-into":
             panel._stepInto();
             return true;
-        case "debugger.step-into-async":
-            panel._stepIntoAsync();
-            return true;
         case "debugger.step-out":
             panel._stepOut();
             return true;
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/module.json b/third_party/WebKit/Source/devtools/front_end/sources/module.json
index 62d6f41..c5095fa 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/module.json
+++ b/third_party/WebKit/Source/devtools/front_end/sources/module.json
@@ -68,23 +68,6 @@
         },
         {
             "type": "@WebInspector.ActionDelegate",
-            "actionId": "debugger.step-into-async",
-            "experiment": "stepIntoAsync",
-            "className": "WebInspector.SourcesPanel.DebuggingActionDelegate",
-            "contextTypes": ["WebInspector.SourcesPanel"],
-            "bindings": [
-                {
-                    "platform": "windows,linux",
-                    "shortcut": "Alt+F11 Alt+Ctrl+;"
-                },
-                {
-                    "platform": "mac",
-                    "shortcut": "Alt+F11 Alt+Meta+;"
-                }
-            ]
-        },
-        {
-            "type": "@WebInspector.ActionDelegate",
             "actionId": "debugger.step-out",
             "className": "WebInspector.SourcesPanel.DebuggingActionDelegate",
             "title": "Step out of current function",
@@ -344,7 +327,6 @@
     "scripts": [
         "UIList.js",
         "AddSourceMapURLDialog.js",
-        "AsyncOperationsSidebarPane.js",
         "CallStackSidebarPane.js",
         "SimpleHistoryManager.js",
         "EditingLocationHistoryManager.js",
diff --git a/third_party/WebKit/Source/devtools/protocol.json b/third_party/WebKit/Source/devtools/protocol.json
index aaf29a9d..9d708e8 100644
--- a/third_party/WebKit/Source/devtools/protocol.json
+++ b/third_party/WebKit/Source/devtools/protocol.json
@@ -3452,16 +3452,6 @@
                 "hidden": true
             },
             {
-                "id": "AsyncOperation",
-                "type": "object",
-                "description": "Information about the async operation.",
-                "properties": [
-                    { "name": "id", "type": "integer", "description": "Unique id of the async operation." },
-                    { "name": "stack", "$ref": "Runtime.StackTrace", "optional": true, "description": "Stack trace where async operation was scheduled." }
-                ],
-                "hidden": true
-            },
-            {
                 "id": "SearchMatch",
                 "type": "object",
                 "description": "Search match for resource.",
@@ -3559,11 +3549,6 @@
                 "description": "Resumes JavaScript execution."
             },
             {
-                "name": "stepIntoAsync",
-                "description": "Steps into the first async operation handler that was scheduled by or after the current statement.",
-                "hidden": true
-            },
-            {
                 "name": "searchInContent",
                 "parameters": [
                     { "name": "scriptId", "$ref": "Runtime.ScriptId", "description": "Id of the script to search in." },
@@ -3707,27 +3692,6 @@
                 "description": "Enables or disables async call stacks tracking."
             },
             {
-                "name": "flushAsyncOperationEvents",
-                "hidden": true,
-                "description": "Fires pending <code>asyncOperationStarted</code> events (if any), as if a debugger stepping session has just been started."
-            },
-            {
-                "name": "setAsyncOperationBreakpoint",
-                "parameters": [
-                    { "name": "operationId", "type": "integer", "description": "ID of the async operation to set breakpoint for." }
-                ],
-                "hidden": true,
-                "description": "Sets breakpoint on AsyncOperation callback handler."
-            },
-            {
-                "name": "removeAsyncOperationBreakpoint",
-                "parameters": [
-                    { "name": "operationId", "type": "integer", "description": "ID of the async operation to remove breakpoint for." }
-                ],
-                "hidden": true,
-                "description": "Removes AsyncOperation breakpoint."
-            },
-            {
                 "name": "setBlackboxedRanges",
                 "parameters": [
                     { "name": "scriptId", "$ref": "Runtime.ScriptId", "description": "Id of the script." },
@@ -3789,7 +3753,7 @@
                 "name": "paused",
                 "parameters": [
                     { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
-                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "assert", "CSPViolation", "debugCommand", "promiseRejection", "AsyncOperation", "other" ], "description": "Pause reason." },
+                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "assert", "CSPViolation", "debugCommand", "promiseRejection", "other" ], "description": "Pause reason." },
                     { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." },
                     { "name": "hitBreakpoints", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Hit breakpoints IDs", "hidden": true },
                     { "name": "asyncStackTrace", "$ref": "Runtime.StackTrace", "optional": true, "description": "Async stack trace, if any.", "hidden": true }
@@ -3799,22 +3763,6 @@
             {
                 "name": "resumed",
                 "description": "Fired when the virtual machine resumed execution."
-            },
-            {
-                "name": "asyncOperationStarted",
-                "parameters": [
-                    { "name": "operation", "$ref": "AsyncOperation", "description": "Information about the async operation." }
-                ],
-                "description": "Fired when an async operation is scheduled (while in a debugger stepping session).",
-                "hidden": true
-            },
-            {
-                "name": "asyncOperationCompleted",
-                "parameters": [
-                    { "name": "id", "type": "integer", "description": "ID of the async operation that was completed." }
-                ],
-                "description": "Fired when an async operation is completed (while in a debugger stepping session).",
-                "hidden": true
             }
         ]
     },
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp
index 57585d5..eccadad4 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp
@@ -8,10 +8,8 @@
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
-#include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/events/Event.h"
-#include "core/page/PageVisibilityState.h"
 #include "modules/bluetooth/BluetoothError.h"
 #include "modules/bluetooth/BluetoothRemoteGATTServer.h"
 #include "modules/bluetooth/BluetoothSupplement.h"
@@ -21,10 +19,8 @@
 
 BluetoothDevice::BluetoothDevice(ExecutionContext* context, PassOwnPtr<WebBluetoothDevice> webDevice)
     : ActiveDOMObject(context)
-    , PageLifecycleObserver(toDocument(context)->page())
     , m_webDevice(webDevice)
-    , m_adData(BluetoothAdvertisingData::create(m_webDevice->txPower,
-        m_webDevice->rssi))
+    , m_adData(BluetoothAdvertisingData::create(m_webDevice->txPower, m_webDevice->rssi))
     , m_gatt(BluetoothRemoteGATTServer::create(this))
 {
     // See example in Source/platform/heap/ThreadState.h
@@ -49,13 +45,6 @@
     disconnectGATTIfConnected();
 }
 
-void BluetoothDevice::pageVisibilityChanged()
-{
-    if (!page()->isPageVisible() && disconnectGATTIfConnected()) {
-        dispatchEvent(Event::create(EventTypeNames::gattserverdisconnected));
-    }
-}
-
 bool BluetoothDevice::disconnectGATTIfConnected()
 {
     if (m_gatt->connected()) {
@@ -80,7 +69,6 @@
 {
     RefCountedGarbageCollectedEventTargetWithInlineData<BluetoothDevice>::trace(visitor);
     ActiveDOMObject::trace(visitor);
-    PageLifecycleObserver::trace(visitor);
     visitor->trace(m_adData);
     visitor->trace(m_gatt);
 }
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h
index 1eb90a3..f8ed9d4 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h
@@ -7,7 +7,6 @@
 
 #include "bindings/core/v8/ScriptWrappable.h"
 #include "core/dom/ActiveDOMObject.h"
-#include "core/page/PageLifecycleObserver.h"
 #include "modules/EventTargetModules.h"
 #include "modules/bluetooth/BluetoothAdvertisingData.h"
 #include "modules/bluetooth/BluetoothRemoteGATTServer.h"
@@ -32,8 +31,7 @@
 // CallbackPromiseAdapter class comments.
 class BluetoothDevice final
     : public RefCountedGarbageCollectedEventTargetWithInlineData<BluetoothDevice>
-    , public ActiveDOMObject
-    , public PageLifecycleObserver {
+    , public ActiveDOMObject {
     USING_PRE_FINALIZER(BluetoothDevice, dispose);
     DEFINE_WRAPPERTYPEINFO();
     REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(BluetoothDevice);
@@ -50,15 +48,9 @@
     // dispose() is called in this case.
     // 2. When the parent document gets detached e.g. reloading a page.
     // stop() is called in this case.
-    // 3. For now (https://crbug.com/579746), when the tab is no longer in the
-    // foreground e.g. change tabs.
-    // pageVisibilityChanged() is called in this case.
     // TODO(ortuno): Users should be able to turn on notifications for
     // events on navigator.bluetooth and still remain connected even if the
     // BluetoothDevice object is garbage collected.
-    // TODO(ortuno): Allow connections when the tab is in the background.
-    // This is a short term solution instead of implementing a tab indicator
-    // for bluetooth connections.
 
     // USING_PRE_FINALIZER interface.
     // Called before the object gets garbage collected.
@@ -67,9 +59,6 @@
     // ActiveDOMObject interface.
     void stop() override;
 
-    // PageLifecycleObserver interface.
-    void pageVisibilityChanged() override;
-
     // If gatt is connected then disconnects and sets gatt.connected to false.
     // Returns true if gatt was disconnected.
     bool disconnectGATTIfConnected();
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTServer.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTServer.cpp
index cb2509f5d..9c7c35de 100644
--- a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTServer.cpp
+++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTServer.cpp
@@ -8,9 +8,7 @@
 #include "bindings/core/v8/ScriptPromise.h"
 #include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/dom/DOMException.h"
-#include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
-#include "core/page/Page.h"
 #include "modules/bluetooth/BluetoothError.h"
 #include "modules/bluetooth/BluetoothRemoteGATTService.h"
 #include "modules/bluetooth/BluetoothSupplement.h"
@@ -19,11 +17,6 @@
 #include "wtf/OwnPtr.h"
 
 namespace blink {
-namespace {
-
-const char kPageHiddenError[] = "Connection is only allowed while the page is visible. This is a temporary measure until we are able to effectively communicate to the user that a page is connected to a device.";
-
-}
 
 BluetoothRemoteGATTServer::BluetoothRemoteGATTServer(BluetoothDevice* device)
     : m_device(device)
@@ -52,16 +45,7 @@
         if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
             return;
         m_device->gatt()->setConnected(true);
-        if (!m_device->page()->isPageVisible()) {
-            // TODO(ortuno): Allow connections when the tab is in the background.
-            // This is a short term solution instead of implementing a tab indicator
-            // for bluetooth connections.
-            // https://crbug.com/579746
-            m_device->disconnectGATTIfConnected();
-            m_resolver->reject(DOMException::create(SecurityError, kPageHiddenError));
-        } else {
-            m_resolver->resolve(m_device->gatt());
-        }
+        m_resolver->resolve(m_device->gatt());
     }
 
     void onError(const WebBluetoothError& e) override
@@ -77,14 +61,6 @@
 
 ScriptPromise BluetoothRemoteGATTServer::connect(ScriptState* scriptState)
 {
-    // TODO(ortuno): Allow connections when the tab is in the background.
-    // This is a short term solution instead of implementing a tab indicator
-    // for bluetooth connections.
-    // https://crbug.com/579746
-    if (!toDocument(scriptState->getExecutionContext())->page()->isPageVisible()) {
-        return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(SecurityError, kPageHiddenError));
-    }
-
     WebBluetooth* webbluetooth = BluetoothSupplement::fromScriptState(scriptState);
     if (!webbluetooth)
         return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(NotSupportedError));
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
index 3cafe96..2ab1d1c8 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
@@ -23,7 +23,6 @@
 class WebGLVertexArrayObject;
 
 class WebGL2RenderingContextBase : public WebGLRenderingContextBase {
-    USING_GARBAGE_COLLECTED_MIXIN(WebGL2RenderingContextBase);
 public:
     ~WebGL2RenderingContextBase() override;
 
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
index 896cafbe..3e21a098 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -835,8 +835,6 @@
     , m_requestedAttributes(requestedAttributes)
     , m_synthesizedErrorsToConsole(true)
     , m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole)
-    , m_multisamplingAllowed(false)
-    , m_multisamplingObserverRegistered(false)
     , m_onePlusMaxNonDefaultTextureUnit(0)
     , m_isWebGL2FormatsTypesAdded(false)
     , m_isWebGL2InternalFormatsCopyTexImageAdded(false)
@@ -1020,12 +1018,6 @@
     ASSERT(drawingBuffer());
     if (Page* p = canvas()->document().page()) {
         m_synthesizedErrorsToConsole = p->settings().webGLErrorsToConsoleEnabled();
-
-        if (!m_multisamplingObserverRegistered && m_requestedAttributes.antialias()) {
-            m_multisamplingAllowed = drawingBuffer()->multisample();
-            p->addMultisamplingChangedObserver(this);
-            m_multisamplingObserverRegistered = true;
-        }
     }
 
     m_isDepthStencilSupported = extensionsUtil()->isExtensionEnabled("GL_OES_packed_depth_stencil");
@@ -1086,13 +1078,6 @@
 
     destroyContext();
 
-#if !ENABLE(OILPAN)
-    if (m_multisamplingObserverRegistered) {
-        if (Page* page = canvas()->document().page())
-            page->removeMultisamplingChangedObserver(this);
-    }
-#endif
-
     willDestroyContext(this);
 }
 
@@ -6221,14 +6206,6 @@
     bindTexture(nullptr, GL_TEXTURE_2D, m_textureUnits[m_activeTextureUnit].m_texture2DBinding.get());
 }
 
-void WebGLRenderingContextBase::multisamplingChanged(bool enabled)
-{
-    if (m_multisamplingAllowed != enabled) {
-        m_multisamplingAllowed = enabled;
-        forceLostContext(WebGLRenderingContextBase::SyntheticLostContext, WebGLRenderingContextBase::Auto);
-    }
-}
-
 void WebGLRenderingContextBase::findNewMaxNonDefaultTextureUnit()
 {
     // Trace backwards from the current max to find the new max non-default texture unit
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
index a477c75..eafdf33 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
@@ -35,7 +35,6 @@
 #include "core/dom/TypedFlexibleArrayBufferView.h"
 #include "core/html/canvas/CanvasRenderingContext.h"
 #include "core/layout/LayoutBoxModelObject.h"
-#include "core/page/Page.h"
 #include "modules/webgl/WebGLContextAttributes.h"
 #include "modules/webgl/WebGLExtensionName.h"
 #include "modules/webgl/WebGLTexture.h"
@@ -142,8 +141,7 @@
     Member<WebGLFramebuffer> m_readFramebufferBinding;
 };
 
-class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, public Page::MultisamplingChangedObserver {
-    USING_GARBAGE_COLLECTED_MIXIN(WebGLRenderingContextBase);
+class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
 public:
     ~WebGLRenderingContextBase() override;
 
@@ -411,6 +409,7 @@
     // to (first) be able to detach its WebGLContextObjects, before
     // they're later swept and finalized.
     EAGERLY_FINALIZE();
+    DECLARE_EAGER_FINALIZATION_OPERATOR_NEW();
     DECLARE_VIRTUAL_TRACE();
 
     // Returns approximate gpu memory allocated per pixel.
@@ -610,9 +609,6 @@
     bool m_synthesizedErrorsToConsole;
     int m_numGLErrorsToConsoleAllowed;
 
-    bool m_multisamplingAllowed;
-    bool m_multisamplingObserverRegistered;
-
     unsigned long m_onePlusMaxNonDefaultTextureUnit;
 
     OwnPtr<Extensions3DUtil> m_extensionsUtil;
@@ -1061,8 +1057,6 @@
     virtual void restoreCurrentFramebuffer();
     void restoreCurrentTexture2D();
 
-    void multisamplingChanged(bool) override;
-
     void findNewMaxNonDefaultTextureUnit();
 
     virtual void renderbufferStorageImpl(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, const char* functionName);
diff --git a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
index 99c8fbd..221fbfba 100644
--- a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
+++ b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
@@ -223,6 +223,7 @@
 smil status=stable
 ScrollCustomization
 ScrollRestoration status=stable
+VisualViewportAPI status=experimental
 WakeLock status=experimental
 WebFontsIntervention status=experimental
 WebFontsInterventionTrigger
diff --git a/third_party/WebKit/Source/platform/Supplementable.h b/third_party/WebKit/Source/platform/Supplementable.h
index b2bc6ef..f60bc75 100644
--- a/third_party/WebKit/Source/platform/Supplementable.h
+++ b/third_party/WebKit/Source/platform/Supplementable.h
@@ -69,7 +69,7 @@
 //
 //     MyClass* MyClass::from(MySupplementable* host)
 //     {
-//         return reinterpret_cast<MyClass*>(Supplement<MySupplementable>::from(host, supplementName()));
+//         return static_cast<MyClass*>(Supplement<MySupplementable>::from(host, supplementName()));
 //     }
 //
 // What you should know about thread checks
diff --git a/third_party/WebKit/Source/platform/blink_platform.gypi b/third_party/WebKit/Source/platform/blink_platform.gypi
index 5527747..cd719c06 100644
--- a/third_party/WebKit/Source/platform/blink_platform.gypi
+++ b/third_party/WebKit/Source/platform/blink_platform.gypi
@@ -1043,8 +1043,8 @@
       'v8_inspector/InjectedScriptNative.h',
       'v8_inspector/InjectedScriptHost.cpp',
       'v8_inspector/InjectedScriptHost.h',
-      'v8_inspector/InjectedScriptManager.cpp',
-      'v8_inspector/InjectedScriptManager.h',
+      'v8_inspector/InspectedContext.cpp',
+      'v8_inspector/InspectedContext.h',
       'v8_inspector/JavaScriptCallFrame.cpp',
       'v8_inspector/JavaScriptCallFrame.h',
       'v8_inspector/ScriptBreakpoint.h',
@@ -1064,6 +1064,8 @@
       'v8_inspector/V8HeapProfilerAgentImpl.h',
       'v8_inspector/V8InjectedScriptHost.cpp',
       'v8_inspector/V8InjectedScriptHost.h',
+      'v8_inspector/V8InspectorConnectionImpl.cpp',
+      'v8_inspector/V8InspectorConnectionImpl.h',
       'v8_inspector/V8ProfilerAgentImpl.cpp',
       'v8_inspector/V8ProfilerAgentImpl.h',
       'v8_inspector/V8Regex.cpp',
@@ -1210,6 +1212,7 @@
       'text/SegmentedStringTest.cpp',
       'text/TextBreakIteratorTest.cpp',
       'text/UnicodeUtilitiesTest.cpp',
+      'threading/BackgroundTaskRunnerTest.cpp',
       'transforms/TransformOperationsTest.cpp',
       'transforms/TransformTestHelper.h',
       'transforms/TransformationMatrixTest.cpp',
@@ -1236,7 +1239,6 @@
       'graphics/test/MockGLES2Interface.h',
       'graphics/test/MockImageDecoder.h',
       'graphics/test/MockWebGraphicsContext3D.h',
-      'threading/BackgroundTaskRunnerTest.cpp',
     ],
     'platform_test_support_files': [
       'testing/CompositorTest.cpp',
diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
index dbc5d45..8315809 100644
--- a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
+++ b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
@@ -476,8 +476,7 @@
 
     bool wantAcceleration = shouldAccelerate(hint);
     bool surfaceIsAccelerated;
-
-    if (isHidden() && wantAcceleration) {
+    if (CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU && isHidden() && wantAcceleration) {
         wantAcceleration = false;
         m_softwareRenderingWhileHidden = true;
     }
diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
index 9584567..0dd0ade 100644
--- a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
+++ b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
@@ -72,6 +72,9 @@
 #define USE_IOSURFACE_FOR_2D_CANVAS 0
 #endif
 
+// TODO: Fix background rendering and remove this workaround. crbug.com/600386
+#define CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU 0
+
 class PLATFORM_EXPORT Canvas2DLayerBridge : public WebExternalTextureLayerClient, public WebThread::TaskObserver, public RefCounted<Canvas2DLayerBridge> {
     WTF_MAKE_NONCOPYABLE(Canvas2DLayerBridge);
 public:
diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
index ea48003..01f6178 100644
--- a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
@@ -654,7 +654,7 @@
     doneEvent->wait();
 }
 
-#if CANVAS2D_HIBERNATION_ENABLED
+#if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
 TEST_F(Canvas2DLayerBridgeTest, BackgroundRenderingWhileHibernating)
 #else
 TEST_F(Canvas2DLayerBridgeTest, DISABLED_BackgroundRenderingWhileHibernating)
@@ -708,7 +708,7 @@
     ::testing::Mock::VerifyAndClearExpectations(&mainMock);
 }
 
-#if CANVAS2D_HIBERNATION_ENABLED
+#if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
 TEST_F(Canvas2DLayerBridgeTest, BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled)
 #else
 TEST_F(Canvas2DLayerBridgeTest, DISABLED_BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled)
@@ -770,7 +770,7 @@
     postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
 }
 
-#if CANVAS2D_HIBERNATION_ENABLED
+#if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
 TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating)
 #else
 TEST_F(Canvas2DLayerBridgeTest, DISABLED_DisableDeferredRenderingWhileHibernating)
@@ -1085,7 +1085,7 @@
     postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
 }
 
-#if CANVAS2D_HIBERNATION_ENABLED
+#if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhileBackgroundRendering)
 #else
 TEST_F(Canvas2DLayerBridgeTest, DISABLED_PrepareMailboxWhileBackgroundRendering)
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
index 666cece..4ef9fee 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.cpp
@@ -26,7 +26,7 @@
 {
 }
 
-FloatRect FEBoxReflect::mapRect(const FloatRect& rect, bool forward)
+FloatRect FEBoxReflect::mapRect(const FloatRect& rect, bool forward) const
 {
     SkMatrix flipMatrix = SkiaImageFilterBuilder().matrixForBoxReflectFilter(
         m_reflectionDirection, m_offset);
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
index 5522657..8a52885 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEBoxReflect.h
@@ -17,7 +17,7 @@
     static RawPtr<FEBoxReflect> create(Filter*, ReflectionDirection, float offset);
 
     // FilterEffect implementation
-    FloatRect mapRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapRect(const FloatRect&, bool forward = true) const final;
     TextStream& externalRepresentation(TextStream&, int indentation) const final;
     PassRefPtr<SkImageFilter> createImageFilter(SkiaImageFilterBuilder&) final;
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.cpp
index 1a020c0..a01a3508 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.cpp
@@ -54,7 +54,7 @@
         preserveAlpha, kernelMatrix);
 }
 
-FloatRect FEConvolveMatrix::mapPaintRect(const FloatRect& rect, bool forward)
+FloatRect FEConvolveMatrix::mapPaintRect(const FloatRect& rect, bool forward) const
 {
     FloatRect result = rect;
     if (parametersValid()) {
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.h b/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.h
index 244e9bb7..6a24e2e2 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.h
@@ -50,7 +50,7 @@
     bool setEdgeMode(EdgeModeType);
     bool setPreserveAlpha(bool);
 
-    FloatRect mapPaintRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapPaintRect(const FloatRect&, bool forward = true) const final;
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.cpp
index d562fa0..3b360e48 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.cpp
@@ -45,7 +45,7 @@
     return new FEDisplacementMap(filter, xChannelSelector, yChannelSelector, scale);
 }
 
-FloatRect FEDisplacementMap::mapPaintRect(const FloatRect& rect, bool)
+FloatRect FEDisplacementMap::mapPaintRect(const FloatRect& rect, bool) const
 {
     FloatRect result = rect;
     result.inflateX(getFilter()->applyHorizontalScale(m_scale / 2));
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.h b/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.h
index 547874e0..a31bb52 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEDisplacementMap.h
@@ -48,7 +48,7 @@
     float scale() const;
     bool setScale(float);
 
-    FloatRect mapPaintRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapPaintRect(const FloatRect&, bool forward = true) const final;
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.cpp
index 40e7cf36..74ba212 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.cpp
@@ -44,10 +44,10 @@
     return new FEDropShadow(filter, stdX, stdY, dx, dy, shadowColor, shadowOpacity);
 }
 
-FloatRect FEDropShadow::mapRect(const FloatRect& rect, bool forward)
+FloatRect FEDropShadow::mapRect(const FloatRect& rect, bool forward) const
 {
     FloatRect result = rect;
-    Filter* filter = this->getFilter();
+    const Filter* filter = this->getFilter();
     ASSERT(filter);
 
     FloatRect offsetRect = rect;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.h b/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.h
index 8b4fda1..a8e9d5c 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEDropShadow.h
@@ -30,7 +30,7 @@
 public:
     static RawPtr<FEDropShadow> create(Filter*, float, float, float, float, const Color&, float);
 
-    FloatRect mapRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapRect(const FloatRect&, bool forward = true) const final;
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
     PassRefPtr<SkImageFilter> createImageFilter(SkiaImageFilterBuilder&) override;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
index a6a8593..ff9e2fe 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.cpp
@@ -70,14 +70,13 @@
     return kernelSize;
 }
 
-IntSize FEGaussianBlur::calculateKernelSize(Filter* filter, const FloatPoint& std)
+IntSize FEGaussianBlur::calculateKernelSize(const Filter* filter, const FloatPoint& std)
 {
     FloatPoint stdError(filter->applyHorizontalScale(std.x()), filter->applyVerticalScale(std.y()));
-
     return calculateUnscaledKernelSize(stdError);
 }
 
-FloatRect FEGaussianBlur::mapRect(const FloatRect& rect, bool)
+FloatRect FEGaussianBlur::mapRect(const FloatRect& rect, bool) const
 {
     FloatRect result = rect;
     IntSize kernelSize = calculateKernelSize(getFilter(), FloatPoint(m_stdX, m_stdY));
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.h b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.h
index 7f33b17..61070fe2 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEGaussianBlur.h
@@ -31,9 +31,9 @@
 public:
     static RawPtr<FEGaussianBlur> create(Filter*, float, float);
 
-    FloatRect mapRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapRect(const FloatRect&, bool forward = true) const final;
     FloatRect determineAbsolutePaintRect(const FloatRect& requestedRect) override;
-    static IntSize calculateKernelSize(Filter*, const FloatPoint& std);
+    static IntSize calculateKernelSize(const Filter*, const FloatPoint& std);
     static IntSize calculateUnscaledKernelSize(const FloatPoint& std);
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FELighting.cpp b/third_party/WebKit/Source/platform/graphics/filters/FELighting.cpp
index cefff61..5d4f21572 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FELighting.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FELighting.cpp
@@ -50,7 +50,7 @@
 {
 }
 
-FloatRect FELighting::mapPaintRect(const FloatRect& rect, bool)
+FloatRect FELighting::mapPaintRect(const FloatRect& rect, bool) const
 {
     FloatRect result = rect;
     // The areas affected need to be a pixel bigger to accommodate the Sobel kernel.
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FELighting.h b/third_party/WebKit/Source/platform/graphics/filters/FELighting.h
index e27ef9a9..b97914c 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FELighting.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FELighting.h
@@ -46,7 +46,7 @@
 
     PassRefPtr<SkImageFilter> createImageFilter(SkiaImageFilterBuilder&) override;
 
-    FloatRect mapPaintRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapPaintRect(const FloatRect&, bool forward = true) const final;
     bool affectsTransparentPixels() override { return true; }
 
     FELighting(Filter*, LightingType, const Color&, float, float, float, float, PassRefPtr<LightSource>);
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.cpp
index bfd21cb9..5d904de 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.cpp
@@ -85,7 +85,7 @@
     return true;
 }
 
-FloatRect FEMorphology::mapRect(const FloatRect& rect, bool)
+FloatRect FEMorphology::mapRect(const FloatRect& rect, bool) const
 {
     FloatRect result = rect;
     result.inflateX(getFilter()->applyHorizontalScale(m_radiusX));
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.h b/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.h
index 46aecbc..b714ed7 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEMorphology.h
@@ -45,7 +45,7 @@
     float radiusY() const;
     bool setRadiusY(float);
 
-    FloatRect mapRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapRect(const FloatRect&, bool forward = true) const final;
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEOffset.cpp b/third_party/WebKit/Source/platform/graphics/filters/FEOffset.cpp
index 7e8a2aa..d0bd1e2 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEOffset.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEOffset.cpp
@@ -63,7 +63,7 @@
     m_dy = dy;
 }
 
-FloatRect FEOffset::mapRect(const FloatRect& rect, bool forward)
+FloatRect FEOffset::mapRect(const FloatRect& rect, bool forward) const
 {
     FloatRect result = rect;
     if (forward)
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FEOffset.h b/third_party/WebKit/Source/platform/graphics/filters/FEOffset.h
index 8783055..85d7c362 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FEOffset.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FEOffset.h
@@ -37,7 +37,7 @@
     float dy() const;
     void setDy(float);
 
-    FloatRect mapRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapRect(const FloatRect&, bool forward = true) const final;
 
     TextStream& externalRepresentation(TextStream&, int indention) const override;
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FETile.cpp b/third_party/WebKit/Source/platform/graphics/filters/FETile.cpp
index 992bcdc..a93610a 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FETile.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FETile.cpp
@@ -38,7 +38,7 @@
     return new FETile(filter);
 }
 
-FloatRect FETile::mapPaintRect(const FloatRect& rect, bool forward)
+FloatRect FETile::mapPaintRect(const FloatRect& rect, bool forward) const
 {
     return forward ? maxEffectRect() : inputEffect(0)->maxEffectRect();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FETile.h b/third_party/WebKit/Source/platform/graphics/filters/FETile.h
index 5475909..07f6874 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FETile.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FETile.h
@@ -31,7 +31,7 @@
 public:
     static RawPtr<FETile> create(Filter*);
 
-    FloatRect mapPaintRect(const FloatRect&, bool forward = true) final;
+    FloatRect mapPaintRect(const FloatRect&, bool forward = true) const final;
 
     FilterEffectType getFilterEffectType() const override { return FilterEffectTypeTile; }
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
index d0f1c4c..3c44480 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.cpp
@@ -85,7 +85,7 @@
     return inputUnion;
 }
 
-FloatRect FilterEffect::mapRectRecursive(const FloatRect& rect)
+FloatRect FilterEffect::mapRectRecursive(const FloatRect& rect) const
 {
     FloatRect result;
     if (m_inputEffects.size() > 0) {
@@ -215,26 +215,16 @@
     return adoptRef(SkColorFilterImageFilter::Create(colorFilter.get(), nullptr, &rect));
 }
 
-bool FilterEffect::hasConnectedInput() const
-{
-    for (unsigned i = 0; i < m_inputEffects.size(); i++) {
-        if (m_inputEffects[i] && m_inputEffects[i]->getFilterEffectType() != FilterEffectTypeSourceInput) {
-            return true;
-        }
-    }
-    return false;
-}
-
 SkImageFilter::CropRect FilterEffect::getCropRect() const
 {
-    FloatRect rect;
-    uint32_t flags = 0;
-    if (!hasConnectedInput() && !getFilter()->filterRegion().isEmpty()) {
-        rect = getFilter()->filterRegion();
-        flags = SkImageFilter::CropRect::kHasAll_CropEdge;
+    if (!filterPrimitiveSubregion().isEmpty()) {
+        FloatRect rect = filterPrimitiveSubregion();
+        rect.scale(getFilter()->scale());
+        return SkImageFilter::CropRect(rect);
     }
 
-    rect = applyEffectBoundaries(rect);
+    uint32_t flags = 0;
+    FloatRect rect = applyEffectBoundaries(rect);
 
     rect.scale(getFilter()->scale());
 
diff --git a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.h b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.h
index 1fcf6ff..6b0f3ca 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.h
+++ b/third_party/WebKit/Source/platform/graphics/filters/FilterEffect.h
@@ -92,16 +92,16 @@
     // destination rect. Note that these are not necessarily the inverse of
     // each other. For example, for FEGaussianBlur, they are the same
     // transformation.
-    virtual FloatRect mapRect(const FloatRect& rect, bool forward = true) { return rect; }
+    virtual FloatRect mapRect(const FloatRect& rect, bool forward = true) const { return rect; }
     // A version of the above that is used for calculating paint rects. We can't
     // use mapRect above for that, because that is also used for calculating effect
     // regions for CSS filters and has undesirable effects for tile and
     // displacement map.
-    virtual FloatRect mapPaintRect(const FloatRect& rect, bool forward)
+    virtual FloatRect mapPaintRect(const FloatRect& rect, bool forward) const
     {
         return mapRect(rect, forward);
     }
-    FloatRect mapRectRecursive(const FloatRect&);
+    FloatRect mapRectRecursive(const FloatRect&) const;
 
     virtual FilterEffectType getFilterEffectType() const { return FilterEffectTypeUnknown; }
 
@@ -166,8 +166,6 @@
     void addAbsolutePaintRect(const FloatRect& absolutePaintRect);
 
 private:
-    bool hasConnectedInput() const;
-
     FilterEffectVector m_inputEffects;
 
     IntRect m_absolutePaintRect;
diff --git a/third_party/WebKit/Source/platform/heap/Handle.h b/third_party/WebKit/Source/platform/heap/Handle.h
index fb28042..9aaa5935 100644
--- a/third_party/WebKit/Source/platform/heap/Handle.h
+++ b/third_party/WebKit/Source/platform/heap/Handle.h
@@ -1005,14 +1005,6 @@
 template<typename T, typename U> inline bool operator==(const Persistent<T>& a, const Member<U>& b) { return a.get() == b.get(); }
 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Member<U>& b) { return a.get() != b.get(); }
 
-#if defined(LEAK_SANITIZER)
-#define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \
-    static type* name = *(new Persistent<type>(arguments))->registerAsStaticReference()
-#else
-#define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \
-    static type* name = *(new Persistent<type>(arguments))
-#endif
-
 template<typename T, bool = IsGarbageCollectedType<T>::value>
 class RawPtrOrMemberTrait {
     STATIC_ONLY(RawPtrOrMemberTrait)
diff --git a/third_party/WebKit/Source/platform/text/TextBreakIteratorICU.cpp b/third_party/WebKit/Source/platform/text/TextBreakIteratorICU.cpp
index c014507..9691763 100644
--- a/third_party/WebKit/Source/platform/text/TextBreakIteratorICU.cpp
+++ b/third_party/WebKit/Source/platform/text/TextBreakIteratorICU.cpp
@@ -39,14 +39,14 @@
     USING_FAST_MALLOC(LineBreakIteratorPool);
     WTF_MAKE_NONCOPYABLE(LineBreakIteratorPool);
 public:
-    LineBreakIteratorPool() { }
-
     static LineBreakIteratorPool& sharedPool()
     {
         static WTF::ThreadSpecific<LineBreakIteratorPool>* pool = new WTF::ThreadSpecific<LineBreakIteratorPool>;
         return **pool;
     }
 
+    static PassOwnPtr<LineBreakIteratorPool> create() { return adoptPtr(new LineBreakIteratorPool); }
+
     icu::BreakIterator* take(const AtomicString& locale)
     {
         icu::BreakIterator* iterator = 0;
@@ -93,12 +93,16 @@
     }
 
 private:
+    LineBreakIteratorPool() { }
+
     static const size_t capacity = 4;
 
     typedef std::pair<AtomicString, icu::BreakIterator*> Entry;
     typedef Vector<Entry, capacity> Pool;
     Pool m_pool;
     HashMap<icu::BreakIterator*, AtomicString> m_vendedIterators;
+
+    friend WTF::ThreadSpecific<LineBreakIteratorPool>::operator LineBreakIteratorPool*();
 };
 
 enum TextContext { NoContext, PriorContext, PrimaryContext };
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
index b3eaf41..61e1c4a 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.cpp
@@ -34,10 +34,13 @@
 #include "platform/inspector_protocol/String16.h"
 #include "platform/inspector_protocol/Values.h"
 #include "platform/v8_inspector/InjectedScriptHost.h"
-#include "platform/v8_inspector/InjectedScriptManager.h"
+#include "platform/v8_inspector/InjectedScriptNative.h"
+#include "platform/v8_inspector/InjectedScriptSource.h"
+#include "platform/v8_inspector/InspectedContext.h"
 #include "platform/v8_inspector/RemoteObjectId.h"
 #include "platform/v8_inspector/V8DebuggerImpl.h"
 #include "platform/v8_inspector/V8FunctionCall.h"
+#include "platform/v8_inspector/V8InjectedScriptHost.h"
 #include "platform/v8_inspector/V8StackTraceImpl.h"
 #include "platform/v8_inspector/V8StringUtil.h"
 #include "platform/v8_inspector/public/V8Debugger.h"
@@ -56,11 +59,6 @@
 
 namespace blink {
 
-static void weakCallback(const v8::WeakCallbackInfo<InjectedScript>& data)
-{
-    data.GetParameter()->dispose();
-}
-
 static bool hasInternalError(ErrorString* errorString, bool hasError)
 {
     if (hasError)
@@ -68,25 +66,69 @@
     return hasError;
 }
 
-InjectedScript::InjectedScript(InjectedScriptManager* manager, v8::Local<v8::Context> context, v8::Local<v8::Object> object, PassOwnPtr<InjectedScriptNative> injectedScriptNative, int contextId)
-    : m_manager(manager)
-    , m_isolate(context->GetIsolate())
-    , m_context(m_isolate, context)
-    , m_value(m_isolate, object)
-    , m_native(injectedScriptNative)
-    , m_contextId(contextId)
+PassOwnPtr<InjectedScript> InjectedScript::create(InspectedContext* inspectedContext, InjectedScriptHost* injectedScriptHost)
 {
-    m_context.SetWeak(this, &weakCallback, v8::WeakCallbackType::kParameter);
+    v8::Isolate* isolate = inspectedContext->isolate();
+    v8::HandleScope handles(isolate);
+    v8::Local<v8::Context> context = inspectedContext->context();
+    v8::Context::Scope scope(context);
+
+    OwnPtr<InjectedScriptNative> injectedScriptNative = adoptPtr(new InjectedScriptNative(isolate));
+    String16 injectedScriptSource(reinterpret_cast<const char*>(InjectedScriptSource_js), sizeof(InjectedScriptSource_js));
+
+    v8::Local<v8::FunctionTemplate> wrapperTemplate = injectedScriptHost->wrapperTemplate(isolate);
+    if (wrapperTemplate.IsEmpty()) {
+        wrapperTemplate = V8InjectedScriptHost::createWrapperTemplate(isolate);
+        injectedScriptHost->setWrapperTemplate(wrapperTemplate, isolate);
+    }
+
+    v8::Local<v8::Object> scriptHostWrapper = V8InjectedScriptHost::wrap(wrapperTemplate, context, injectedScriptHost);
+    if (scriptHostWrapper.IsEmpty())
+        return nullptr;
+
+    injectedScriptNative->setOnInjectedScriptHost(scriptHostWrapper);
+
+    // Inject javascript into the context. The compiled script is supposed to evaluate into
+    // a single anonymous function(it's anonymous to avoid cluttering the global object with
+    // inspector's stuff) the function is called a few lines below with InjectedScriptHost wrapper,
+    // injected script id and explicit reference to the inspected global object. The function is expected
+    // to create and configure InjectedScript instance that is going to be used by the inspector.
+    v8::Local<v8::Value> value;
+    if (!inspectedContext->debugger()->compileAndRunInternalScript(context, toV8String(isolate, injectedScriptSource)).ToLocal(&value))
+        return nullptr;
+    ASSERT(value->IsFunction());
+    v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(value);
+    v8::Local<v8::Object> windowGlobal = context->Global();
+    v8::Local<v8::Value> info[] = { scriptHostWrapper, windowGlobal, v8::Number::New(isolate, inspectedContext->contextId()) };
+    v8::MicrotasksScope microtasksScope(isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
+    v8::Local<v8::Value> injectedScriptValue;
+    if (!function->Call(context, windowGlobal, WTF_ARRAY_LENGTH(info), info).ToLocal(&injectedScriptValue))
+        return nullptr;
+    if (!injectedScriptValue->IsObject())
+        return nullptr;
+    return adoptPtr(new InjectedScript(inspectedContext, injectedScriptValue.As<v8::Object>(), injectedScriptNative.release()));
+}
+
+InjectedScript::InjectedScript(InspectedContext* context, v8::Local<v8::Object> object, PassOwnPtr<InjectedScriptNative> injectedScriptNative)
+    : m_context(context)
+    , m_value(context->isolate(), object)
+    , m_native(injectedScriptNative)
+{
 }
 
 InjectedScript::~InjectedScript()
 {
 }
 
+v8::Isolate* InjectedScript::isolate() const
+{
+    return m_context->isolate();
+}
+
 void InjectedScript::getProperties(ErrorString* errorString, v8::Local<v8::Object> object, const String16& groupName, bool ownProperties, bool accessorPropertiesOnly, bool generatePreview, OwnPtr<Array<PropertyDescriptor>>* properties, Maybe<protocol::Runtime::ExceptionDetails>* exceptionDetails)
 {
-    v8::HandleScope handles(m_isolate);
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "getProperties");
+    v8::HandleScope handles(isolate());
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "getProperties");
     function.appendArgument(object);
     function.appendArgument(groupName);
     function.appendArgument(ownProperties);
@@ -119,13 +161,13 @@
 
 PassOwnPtr<protocol::Runtime::RemoteObject> InjectedScript::wrapObject(ErrorString* errorString, v8::Local<v8::Value> value, const String16& groupName, bool forceValueType, bool generatePreview) const
 {
-    v8::HandleScope handles(m_isolate);
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "wrapObject");
+    v8::HandleScope handles(isolate());
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "wrapObject");
     v8::Local<v8::Value> wrappedObject;
     if (!wrapValue(errorString, value, groupName, forceValueType, generatePreview).ToLocal(&wrappedObject))
         return nullptr;
     protocol::ErrorSupport errors;
-    OwnPtr<protocol::Runtime::RemoteObject> remoteObject = protocol::Runtime::RemoteObject::parse(toProtocolValue(context(), wrappedObject).get(), &errors);
+    OwnPtr<protocol::Runtime::RemoteObject> remoteObject = protocol::Runtime::RemoteObject::parse(toProtocolValue(m_context->context(), wrappedObject).get(), &errors);
     if (!remoteObject)
         *errorString = "Object has too long reference chain";
     return remoteObject.release();
@@ -134,12 +176,12 @@
 bool InjectedScript::wrapObjectProperty(ErrorString* errorString, v8::Local<v8::Object> object, v8::Local<v8::Value> key, const String16& groupName, bool forceValueType, bool generatePreview) const
 {
     v8::Local<v8::Value> property;
-    if (hasInternalError(errorString, !object->Get(context(), key).ToLocal(&property)))
+    if (hasInternalError(errorString, !object->Get(m_context->context(), key).ToLocal(&property)))
         return false;
     v8::Local<v8::Value> wrappedProperty;
     if (!wrapValue(errorString, property, groupName, forceValueType, generatePreview).ToLocal(&wrappedProperty))
         return false;
-    v8::Maybe<bool> success = object->Set(context(), key, wrappedProperty);
+    v8::Maybe<bool> success = object->Set(m_context->context(), key, wrappedProperty);
     if (hasInternalError(errorString, success.IsNothing() || !success.FromJust()))
         return false;
     return true;
@@ -147,7 +189,7 @@
 
 bool InjectedScript::wrapPropertyInArray(ErrorString* errorString, v8::Local<v8::Array> array, v8::Local<v8::String> property, const String16& groupName, bool forceValueType, bool generatePreview) const
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "wrapPropertyInArray");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "wrapPropertyInArray");
     function.appendArgument(array);
     function.appendArgument(property);
     function.appendArgument(groupName);
@@ -161,7 +203,7 @@
 
 bool InjectedScript::wrapObjectsInArray(ErrorString* errorString, v8::Local<v8::Array> array, const String16& groupName, bool forceValueType, bool generatePreview) const
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "wrapObjectsInArray");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "wrapObjectsInArray");
     function.appendArgument(array);
     function.appendArgument(groupName);
     function.appendArgument(canAccessInspectedWindow());
@@ -174,7 +216,7 @@
 
 v8::MaybeLocal<v8::Value> InjectedScript::wrapValue(ErrorString* errorString, v8::Local<v8::Value> value, const String16& groupName, bool forceValueType, bool generatePreview) const
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "wrapObject");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "wrapObject");
     function.appendArgument(value);
     function.appendArgument(groupName);
     function.appendArgument(canAccessInspectedWindow());
@@ -189,8 +231,8 @@
 
 PassOwnPtr<protocol::Runtime::RemoteObject> InjectedScript::wrapTable(v8::Local<v8::Value> table, v8::Local<v8::Value> columns) const
 {
-    v8::HandleScope handles(m_isolate);
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "wrapTable");
+    v8::HandleScope handles(isolate());
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "wrapTable");
     function.appendArgument(canAccessInspectedWindow());
     function.appendArgument(table);
     if (columns.IsEmpty())
@@ -202,7 +244,7 @@
     if (hadException)
         return nullptr;
     protocol::ErrorSupport errors;
-    return protocol::Runtime::RemoteObject::parse(toProtocolValue(context(), r).get(), &errors);
+    return protocol::Runtime::RemoteObject::parse(toProtocolValue(m_context->context(), r).get(), &errors);
 }
 
 bool InjectedScript::findObject(ErrorString* errorString, const RemoteObjectId& objectId, v8::Local<v8::Value>* outObject) const
@@ -220,10 +262,10 @@
 
 void InjectedScript::releaseObjectGroup(const String16& objectGroup)
 {
-    v8::HandleScope handles(m_isolate);
+    v8::HandleScope handles(isolate());
     m_native->releaseObjectGroup(objectGroup);
     if (objectGroup == "console") {
-        V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "clearLastEvaluationResult");
+        V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "clearLastEvaluationResult");
         bool hadException = false;
         callFunctionWithEvalEnabled(function, hadException);
         ASSERT(!hadException);
@@ -232,33 +274,28 @@
 
 void InjectedScript::setCustomObjectFormatterEnabled(bool enabled)
 {
-    v8::HandleScope handles(m_isolate);
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "setCustomObjectFormatterEnabled");
+    v8::HandleScope handles(isolate());
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "setCustomObjectFormatterEnabled");
     function.appendArgument(enabled);
     makeCall(function);
 }
 
 bool InjectedScript::canAccessInspectedWindow() const
 {
-    v8::Local<v8::Context> callingContext = m_isolate->GetCallingContext();
+    v8::Local<v8::Context> callingContext = isolate()->GetCallingContext();
     if (callingContext.IsEmpty())
         return true;
-    return m_manager->debugger()->client()->callingContextCanAccessContext(callingContext, context());
-}
-
-v8::Local<v8::Context> InjectedScript::context() const
-{
-    return m_context.Get(m_isolate);
+    return m_context->debugger()->client()->callingContextCanAccessContext(callingContext, m_context->context());
 }
 
 v8::Local<v8::Value> InjectedScript::v8Value() const
 {
-    return m_value.Get(m_isolate);
+    return m_value.Get(isolate());
 }
 
 v8::Local<v8::Value> InjectedScript::callFunctionWithEvalEnabled(V8FunctionCall& function, bool& hadException) const
 {
-    v8::Local<v8::Context> localContext = context();
+    v8::Local<v8::Context> localContext = m_context->context();
     v8::Context::Scope scope(localContext);
     bool evalIsDisabled = !localContext->IsCodeGenerationFromStringsAllowed();
     // Temporarily enable allow evals for inspector.
@@ -295,9 +332,9 @@
 PassOwnPtr<protocol::Value> InjectedScript::makeCallWithExceptionDetails(V8FunctionCall& function, Maybe<protocol::Runtime::ExceptionDetails>* exceptionDetails)
 {
     OwnPtr<protocol::Value> result;
-    v8::HandleScope handles(m_isolate);
-    v8::Context::Scope scope(context());
-    v8::TryCatch tryCatch(m_isolate);
+    v8::HandleScope handles(isolate());
+    v8::Context::Scope scope(m_context->context());
+    v8::TryCatch tryCatch(isolate());
     v8::Local<v8::Value> resultValue = function.callWithoutExceptionHandling();
     if (tryCatch.HasCaught()) {
         v8::Local<v8::Message> message = tryCatch.Message();
@@ -311,14 +348,9 @@
     return result.release();
 }
 
-void InjectedScript::dispose()
-{
-    m_manager->discardInjectedScript(m_contextId);
-}
-
 bool InjectedScript::setLastEvaluationResult(ErrorString* errorString, v8::Local<v8::Value> value)
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "setLastEvaluationResult");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "setLastEvaluationResult");
     function.appendArgument(value);
     bool hadException = false;
     function.call(hadException, false);
@@ -331,7 +363,7 @@
         OwnPtr<RemoteObjectId> remoteObjectId = RemoteObjectId::parse(errorString, callArgument->getObjectId(""));
         if (!remoteObjectId)
             return v8::MaybeLocal<v8::Value>();
-        if (remoteObjectId->contextId() != m_contextId) {
+        if (remoteObjectId->contextId() != m_context->contextId()) {
             *errorString = "Argument should belong to the same JavaScript world as target object";
             return v8::MaybeLocal<v8::Value>();
         }
@@ -345,24 +377,24 @@
         if (callArgument->getType(String16()) == "number")
             value = "Number(" + value + ")";
         v8::Local<v8::Value> object;
-        if (!m_manager->debugger()->compileAndRunInternalScript(context(), toV8String(m_isolate, value)).ToLocal(&object)) {
+        if (!m_context->debugger()->compileAndRunInternalScript(m_context->context(), toV8String(isolate(), value)).ToLocal(&object)) {
             *errorString = "Couldn't parse value object in call argument";
             return v8::MaybeLocal<v8::Value>();
         }
         return object;
     }
-    return v8::Undefined(m_isolate);
+    return v8::Undefined(isolate());
 }
 
 v8::MaybeLocal<v8::Object> InjectedScript::commandLineAPI(ErrorString* errorString) const
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "commandLineAPI");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "commandLineAPI");
     return callFunctionReturnObject(errorString, function);
 }
 
 v8::MaybeLocal<v8::Object> InjectedScript::remoteObjectAPI(ErrorString* errorString, const String16& groupName) const
 {
-    V8FunctionCall function(m_manager->debugger(), context(), v8Value(), "remoteObjectAPI");
+    V8FunctionCall function(m_context->debugger(), m_context->context(), v8Value(), "remoteObjectAPI");
     function.appendArgument(groupName);
     return callFunctionReturnObject(errorString, function);
 }
@@ -372,7 +404,7 @@
     bool hadException = false;
     v8::Local<v8::Value> result = function.call(hadException, false);
     v8::Local<v8::Object> resultObject;
-    if (hasInternalError(errorString, hadException || result.IsEmpty() || !result->ToObject(context()).ToLocal(&resultObject)))
+    if (hasInternalError(errorString, hadException || result.IsEmpty() || !result->ToObject(m_context->context()).ToLocal(&resultObject)))
         return v8::MaybeLocal<v8::Object>();
     return resultObject;
 }
@@ -383,16 +415,16 @@
     exceptionDetailsObject->setUrl(toProtocolStringWithTypeCheck(message->GetScriptResourceName()));
     exceptionDetailsObject->setScriptId(String16::number(message->GetScriptOrigin().ScriptID()->Value()));
 
-    v8::Maybe<int> lineNumber = message->GetLineNumber(context());
+    v8::Maybe<int> lineNumber = message->GetLineNumber(m_context->context());
     if (lineNumber.IsJust())
         exceptionDetailsObject->setLine(lineNumber.FromJust());
-    v8::Maybe<int> columnNumber = message->GetStartColumn(context());
+    v8::Maybe<int> columnNumber = message->GetStartColumn(m_context->context());
     if (columnNumber.IsJust())
         exceptionDetailsObject->setColumn(columnNumber.FromJust());
 
     v8::Local<v8::StackTrace> stackTrace = message->GetStackTrace();
     if (!stackTrace.IsEmpty() && stackTrace->GetFrameCount() > 0)
-        exceptionDetailsObject->setStack(m_manager->debugger()->createStackTrace(stackTrace, stackTrace->GetFrameCount())->buildInspectorObject());
+        exceptionDetailsObject->setStack(m_context->debugger()->createStackTrace(stackTrace, stackTrace->GetFrameCount())->buildInspectorObject());
     return exceptionDetailsObject.release();
 }
 
@@ -424,14 +456,14 @@
 }
 
 InjectedScript::ScopedGlobalObjectExtension::ScopedGlobalObjectExtension(InjectedScript* current, v8::MaybeLocal<v8::Object> extension)
-    : m_context(current->context())
+    : m_context(current->context()->context())
 {
     v8::Local<v8::Object> extensionObject;
     if (!extension.ToLocal(&extensionObject))
         return;
 
     m_symbol = V8Debugger::scopeExtensionSymbol(current->isolate());
-    v8::Local<v8::Object> global = current->context()->Global();
+    v8::Local<v8::Object> global = m_context->Global();
     if (global->Set(m_context, m_symbol, extensionObject).FromMaybe(false))
         m_global = global;
 }
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.h b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.h
index 76e4ca2..6a4dd164a 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScript.h
@@ -31,14 +31,17 @@
 #ifndef InjectedScript_h
 #define InjectedScript_h
 
+#include "platform/inspector_protocol/Allocator.h"
 #include "platform/inspector_protocol/TypeBuilder.h"
-#include "platform/v8_inspector/InjectedScriptManager.h"
 #include "platform/v8_inspector/InjectedScriptNative.h"
+#include "platform/v8_inspector/InspectedContext.h"
+#include "wtf/PassOwnPtr.h"
+
 #include <v8.h>
 
 namespace blink {
 
-class InjectedScriptManager;
+class InjectedScriptHost;
 class RemoteObjectId;
 class V8FunctionCall;
 
@@ -46,11 +49,12 @@
 class DictionaryValue;
 }
 
-
 using protocol::Maybe;
 
 class InjectedScript final {
+    PROTOCOL_DISALLOW_COPY(InjectedScript);
 public:
+    static PassOwnPtr<InjectedScript> create(InspectedContext*, InjectedScriptHost*);
     ~InjectedScript();
 
     void getProperties(ErrorString*, v8::Local<v8::Object>, const String16& groupName, bool ownProperties, bool accessorPropertiesOnly, bool generatePreview, OwnPtr<protocol::Array<protocol::Runtime::PropertyDescriptor>>* result, Maybe<protocol::Runtime::ExceptionDetails>*);
@@ -67,13 +71,9 @@
     void releaseObjectGroup(const String16&);
 
     void setCustomObjectFormatterEnabled(bool);
-    int contextId() { return m_contextId; }
-    String16 origin() const { return m_origin; }
-    void setOrigin(const String16& origin) { m_origin = origin; }
 
-    v8::Isolate* isolate() { return m_isolate; }
-    v8::Local<v8::Context> context() const;
-    void dispose();
+    InspectedContext* context() const { return m_context; }
+    v8::Isolate* isolate() const;
     bool canAccessInspectedWindow() const;
 
     bool setLastEvaluationResult(ErrorString*, v8::Local<v8::Value>);
@@ -106,8 +106,7 @@
     };
 
 private:
-    friend InjectedScript* InjectedScriptManager::injectedScriptFor(v8::Local<v8::Context>);
-    InjectedScript(InjectedScriptManager*, v8::Local<v8::Context>, v8::Local<v8::Object>, PassOwnPtr<InjectedScriptNative>, int contextId);
+    InjectedScript(InspectedContext*, v8::Local<v8::Object>, PassOwnPtr<InjectedScriptNative>);
 
     v8::Local<v8::Value> v8Value() const;
     v8::Local<v8::Value> callFunctionWithEvalEnabled(V8FunctionCall&, bool& hadException) const;
@@ -116,13 +115,9 @@
     v8::MaybeLocal<v8::Value> wrapValue(ErrorString*, v8::Local<v8::Value>, const String16& groupName, bool forceValueType, bool generatePreview) const;
     v8::MaybeLocal<v8::Object> callFunctionReturnObject(ErrorString*, V8FunctionCall&) const;
 
-    InjectedScriptManager* m_manager;
-    v8::Isolate* m_isolate;
-    v8::Global<v8::Context> m_context;
+    InspectedContext* m_context;
     v8::Global<v8::Value> m_value;
     OwnPtr<InjectedScriptNative> m_native;
-    int m_contextId;
-    String16 m_origin;
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.cpp b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.cpp
index 52ad495..7b0b1cca 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.cpp
@@ -33,20 +33,19 @@
 #include "platform/inspector_protocol/String16.h"
 #include "platform/inspector_protocol/Values.h"
 #include "platform/v8_inspector/V8DebuggerAgentImpl.h"
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
 #include "platform/v8_inspector/public/V8Debugger.h"
 
 namespace blink {
 
-PassOwnPtr<InjectedScriptHost> InjectedScriptHost::create(V8DebuggerImpl* debugger)
+PassOwnPtr<InjectedScriptHost> InjectedScriptHost::create(V8DebuggerImpl* debugger, V8InspectorConnectionImpl* connection)
 {
-    return adoptPtr(new InjectedScriptHost(debugger));
+    return adoptPtr(new InjectedScriptHost(debugger, connection));
 }
 
-InjectedScriptHost::InjectedScriptHost(V8DebuggerImpl* debugger)
+InjectedScriptHost::InjectedScriptHost(V8DebuggerImpl* debugger, V8InspectorConnectionImpl* connection)
     : m_debugger(debugger)
-    , m_debuggerAgent(nullptr)
-    , m_inspectCallback(nullptr)
-    , m_clearConsoleCallback(nullptr)
+    , m_connection(connection)
 {
 }
 
@@ -54,38 +53,26 @@
 {
 }
 
-void InjectedScriptHost::setClearConsoleCallback(PassOwnPtr<V8RuntimeAgent::ClearConsoleCallback> callback)
-{
-    m_clearConsoleCallback = callback;
-}
-
-void InjectedScriptHost::setInspectObjectCallback(PassOwnPtr<V8RuntimeAgent::InspectCallback> callback)
-{
-    m_inspectCallback = callback;
-}
-
 void InjectedScriptHost::disconnect()
 {
     m_debugger = nullptr;
-    m_debuggerAgent = nullptr;
-    m_inspectCallback = nullptr;
-    m_clearConsoleCallback = nullptr;
+    m_connection = nullptr;
     m_inspectedObjects.clear();
 }
 
 void InjectedScriptHost::inspectImpl(PassOwnPtr<protocol::Value> object, PassOwnPtr<protocol::Value> hints)
 {
-    if (m_inspectCallback) {
+    if (m_connection && m_connection->inspectCallback()) {
         protocol::ErrorSupport errors;
         OwnPtr<protocol::Runtime::RemoteObject> remoteObject = protocol::Runtime::RemoteObject::parse(object.get(), &errors);
-        (*m_inspectCallback)(remoteObject.release(), protocol::DictionaryValue::cast(hints));
+        (*m_connection->inspectCallback())(remoteObject.release(), protocol::DictionaryValue::cast(hints));
     }
 }
 
 void InjectedScriptHost::clearConsoleMessages()
 {
-    if (m_clearConsoleCallback)
-        (*m_clearConsoleCallback)();
+    if (m_connection && m_connection->clearConsoleCallback())
+        (*m_connection->clearConsoleCallback())();
 }
 
 void InjectedScriptHost::addInspectedObject(PassOwnPtr<V8RuntimeAgent::Inspectable> object)
@@ -109,14 +96,14 @@
 
 void InjectedScriptHost::debugFunction(const String16& scriptId, int lineNumber, int columnNumber)
 {
-    if (m_debuggerAgent)
-        m_debuggerAgent->setBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::DebugCommandBreakpointSource);
+    if (m_connection && m_connection->debuggerAgent())
+        m_connection->debuggerAgent()->setBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::DebugCommandBreakpointSource);
 }
 
 void InjectedScriptHost::undebugFunction(const String16& scriptId, int lineNumber, int columnNumber)
 {
-    if (m_debuggerAgent)
-        m_debuggerAgent->removeBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::DebugCommandBreakpointSource);
+    if (m_connection && m_connection->debuggerAgent())
+        m_connection->debuggerAgent()->removeBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::DebugCommandBreakpointSource);
 }
 
 void InjectedScriptHost::monitorFunction(const String16& scriptId, int lineNumber, int columnNumber, const String16& functionName)
@@ -128,14 +115,14 @@
     else
         builder.append(functionName);
     builder.append(" called\" + (arguments.length > 0 ? \" with arguments: \" + Array.prototype.join.call(arguments, \", \") : \"\")) && false");
-    if (m_debuggerAgent)
-        m_debuggerAgent->setBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::MonitorCommandBreakpointSource, builder.toString());
+    if (m_connection && m_connection->debuggerAgent())
+        m_connection->debuggerAgent()->setBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::MonitorCommandBreakpointSource, builder.toString());
 }
 
 void InjectedScriptHost::unmonitorFunction(const String16& scriptId, int lineNumber, int columnNumber)
 {
-    if (m_debuggerAgent)
-        m_debuggerAgent->removeBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::MonitorCommandBreakpointSource);
+    if (m_connection && m_connection->debuggerAgent())
+        m_connection->debuggerAgent()->removeBreakpointAt(scriptId, lineNumber, columnNumber, V8DebuggerAgentImpl::MonitorCommandBreakpointSource);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.h b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.h
index c850159..98657e8 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptHost.h
@@ -38,9 +38,9 @@
 
 namespace blink {
 
+class V8InspectorConnectionImpl;
 class V8EventListenerInfo;
 class V8DebuggerImpl;
-class V8DebuggerAgentImpl;
 
 namespace protocol {
 class DictionaryValue;
@@ -53,13 +53,9 @@
 
 class InjectedScriptHost {
 public:
-    static PassOwnPtr<InjectedScriptHost> create(V8DebuggerImpl*);
+    static PassOwnPtr<InjectedScriptHost> create(V8DebuggerImpl*, V8InspectorConnectionImpl*);
     ~InjectedScriptHost();
 
-    void setClearConsoleCallback(PassOwnPtr<V8RuntimeAgent::ClearConsoleCallback>);
-    void setInspectObjectCallback(PassOwnPtr<V8RuntimeAgent::InspectCallback>);
-    void setDebuggerAgent(V8DebuggerAgentImpl* debuggerAgent) { m_debuggerAgent = debuggerAgent; }
-
     void disconnect();
 
     void addInspectedObject(PassOwnPtr<V8RuntimeAgent::Inspectable>);
@@ -81,10 +77,10 @@
     v8::Local<v8::FunctionTemplate> wrapperTemplate(v8::Isolate* isolate) { return v8::Local<v8::FunctionTemplate>::New(isolate, m_wrapperTemplate); }
 
 private:
-    InjectedScriptHost(V8DebuggerImpl*);
+    InjectedScriptHost(V8DebuggerImpl*, V8InspectorConnectionImpl*);
 
     V8DebuggerImpl* m_debugger;
-    V8DebuggerAgentImpl* m_debuggerAgent;
+    V8InspectorConnectionImpl* m_connection;
     OwnPtr<V8RuntimeAgent::InspectCallback> m_inspectCallback;
     OwnPtr<V8RuntimeAgent::ClearConsoleCallback> m_clearConsoleCallback;
     protocol::Vector<OwnPtr<V8RuntimeAgent::Inspectable>> m_inspectedObjects;
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.cpp b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.cpp
deleted file mode 100644
index 2daff3bfa..0000000
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "platform/v8_inspector/InjectedScriptManager.h"
-
-#include "platform/v8_inspector/InjectedScript.h"
-#include "platform/v8_inspector/InjectedScriptHost.h"
-#include "platform/v8_inspector/InjectedScriptNative.h"
-#include "platform/v8_inspector/InjectedScriptSource.h"
-#include "platform/v8_inspector/RemoteObjectId.h"
-#include "platform/v8_inspector/V8DebuggerImpl.h"
-#include "platform/v8_inspector/V8InjectedScriptHost.h"
-#include "platform/v8_inspector/V8StringUtil.h"
-#include "platform/v8_inspector/public/V8DebuggerClient.h"
-#include "wtf/PassOwnPtr.h"
-
-namespace blink {
-
-PassOwnPtr<InjectedScriptManager> InjectedScriptManager::create(V8DebuggerImpl* debugger)
-{
-    return adoptPtr(new InjectedScriptManager(debugger));
-}
-
-InjectedScriptManager::InjectedScriptManager(V8DebuggerImpl* debugger)
-    : m_injectedScriptHost(InjectedScriptHost::create(debugger))
-    , m_customObjectFormatterEnabled(false)
-    , m_debugger(debugger)
-{
-}
-
-InjectedScriptManager::~InjectedScriptManager()
-{
-    m_injectedScriptHost->disconnect();
-}
-
-InjectedScriptHost* InjectedScriptManager::injectedScriptHost()
-{
-    return m_injectedScriptHost.get();
-}
-
-InjectedScript* InjectedScriptManager::findInjectedScript(ErrorString* errorString, int id) const
-{
-    IdToInjectedScriptMap::const_iterator it = m_idToInjectedScript.find(id);
-    if (it != m_idToInjectedScript.end())
-        return it->second;
-    *errorString = "Inspected frame has gone";
-    return nullptr;
-}
-
-InjectedScript* InjectedScriptManager::findInjectedScript(ErrorString* errorString, RemoteObjectIdBase* objectId) const
-{
-    return objectId ? findInjectedScript(errorString, objectId->contextId()) : nullptr;
-}
-
-void InjectedScriptManager::discardInjectedScripts()
-{
-    m_idToInjectedScript.clear();
-}
-
-int InjectedScriptManager::discardInjectedScriptFor(v8::Local<v8::Context> context)
-{
-    return discardInjectedScript(V8Debugger::contextId(context));
-}
-
-int InjectedScriptManager::discardInjectedScript(int contextId)
-{
-    if (!m_idToInjectedScript.contains(contextId))
-        return 0;
-    m_idToInjectedScript.remove(contextId);
-    return contextId;
-}
-
-void InjectedScriptManager::releaseObjectGroup(const String16& objectGroup)
-{
-    protocol::Vector<int> keys;
-    for (auto& it : m_idToInjectedScript)
-        keys.append(it.first);
-    for (auto& key : keys) {
-        if (m_idToInjectedScript.contains(key)) // m_idToInjectedScript may change here.
-            m_idToInjectedScript.get(key)->releaseObjectGroup(objectGroup);
-    }
-}
-
-void InjectedScriptManager::setCustomObjectFormatterEnabled(bool enabled)
-{
-    m_customObjectFormatterEnabled = enabled;
-    IdToInjectedScriptMap::iterator end = m_idToInjectedScript.end();
-    for (IdToInjectedScriptMap::iterator it = m_idToInjectedScript.begin(); it != end; ++it) {
-        it->second->setCustomObjectFormatterEnabled(enabled);
-    }
-}
-
-InjectedScript* InjectedScriptManager::injectedScriptFor(v8::Local<v8::Context> context)
-{
-    v8::Context::Scope scope(context);
-    int contextId = V8Debugger::contextId(context);
-
-    IdToInjectedScriptMap::iterator it = m_idToInjectedScript.find(contextId);
-    if (it != m_idToInjectedScript.end())
-        return it->second;
-
-    v8::Local<v8::Context> callingContext = context->GetIsolate()->GetCallingContext();
-    if (!callingContext.IsEmpty() && !m_debugger->client()->callingContextCanAccessContext(callingContext, context))
-        return nullptr;
-
-    OwnPtr<InjectedScriptNative> injectedScriptNative = adoptPtr(new InjectedScriptNative(context->GetIsolate()));
-    String16 injectedScriptSource(reinterpret_cast<const char*>(InjectedScriptSource_js), sizeof(InjectedScriptSource_js));
-
-    v8::Local<v8::Object> object = createInjectedScript(injectedScriptSource, context, contextId, injectedScriptNative.get());
-    OwnPtr<InjectedScript> result = adoptPtr(new InjectedScript(this, context, object, injectedScriptNative.release(), contextId));
-    InjectedScript* resultPtr = result.get();
-    if (m_customObjectFormatterEnabled)
-        result->setCustomObjectFormatterEnabled(m_customObjectFormatterEnabled);
-    m_idToInjectedScript.set(contextId, result.release());
-
-    return resultPtr;
-}
-
-v8::Local<v8::Object> InjectedScriptManager::createInjectedScript(const String16& source, v8::Local<v8::Context> context, int id, InjectedScriptNative* injectedScriptNative)
-{
-    v8::Isolate* isolate = context->GetIsolate();
-    v8::Context::Scope scope(context);
-
-    v8::Local<v8::FunctionTemplate> wrapperTemplate = m_injectedScriptHost->wrapperTemplate(isolate);
-    if (wrapperTemplate.IsEmpty()) {
-        wrapperTemplate = V8InjectedScriptHost::createWrapperTemplate(isolate);
-        m_injectedScriptHost->setWrapperTemplate(wrapperTemplate, isolate);
-    }
-
-    v8::Local<v8::Object> scriptHostWrapper = V8InjectedScriptHost::wrap(wrapperTemplate, context, m_injectedScriptHost.get());
-    if (scriptHostWrapper.IsEmpty())
-        return v8::Local<v8::Object>();
-
-    injectedScriptNative->setOnInjectedScriptHost(scriptHostWrapper);
-
-    // Inject javascript into the context. The compiled script is supposed to evaluate into
-    // a single anonymous function(it's anonymous to avoid cluttering the global object with
-    // inspector's stuff) the function is called a few lines below with InjectedScriptHost wrapper,
-    // injected script id and explicit reference to the inspected global object. The function is expected
-    // to create and configure InjectedScript instance that is going to be used by the inspector.
-    v8::Local<v8::Value> value;
-    if (!m_debugger->compileAndRunInternalScript(context, toV8String(isolate, source)).ToLocal(&value))
-        return v8::Local<v8::Object>();
-    ASSERT(value->IsFunction());
-    v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(value);
-    v8::Local<v8::Object> windowGlobal = context->Global();
-    v8::Local<v8::Value> info[] = { scriptHostWrapper, windowGlobal, v8::Number::New(context->GetIsolate(), id) };
-    v8::MicrotasksScope microtasksScope(isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
-    v8::Local<v8::Value> injectedScriptValue;
-    if (!function->Call(context, windowGlobal, WTF_ARRAY_LENGTH(info), info).ToLocal(&injectedScriptValue))
-        return v8::Local<v8::Object>();
-    if (!injectedScriptValue->IsObject())
-        return v8::Local<v8::Object>();
-    return injectedScriptValue.As<v8::Object>();
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.h b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.h
deleted file mode 100644
index 2f0a70a..0000000
--- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptManager.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InjectedScriptManager_h
-#define InjectedScriptManager_h
-
-#include "platform/inspector_protocol/Allocator.h"
-#include "platform/inspector_protocol/Collections.h"
-#include "platform/inspector_protocol/String16.h"
-#include "platform/inspector_protocol/TypeBuilder.h"
-#include <v8.h>
-
-namespace blink {
-
-class InjectedScript;
-class InjectedScriptHost;
-class InjectedScriptNative;
-class RemoteObjectIdBase;
-class V8DebuggerClient;
-class V8DebuggerImpl;
-
-class InjectedScriptManager {
-    PROTOCOL_DISALLOW_COPY(InjectedScriptManager);
-public:
-    static PassOwnPtr<InjectedScriptManager> create(V8DebuggerImpl*);
-    ~InjectedScriptManager();
-
-    InjectedScriptHost* injectedScriptHost();
-    V8DebuggerImpl* debugger() { return m_debugger; }
-
-    InjectedScript* injectedScriptFor(v8::Local<v8::Context>);
-    InjectedScript* findInjectedScript(ErrorString*, int) const;
-    InjectedScript* findInjectedScript(ErrorString*, RemoteObjectIdBase*) const;
-    void discardInjectedScripts();
-    int discardInjectedScriptFor(v8::Local<v8::Context>);
-    int discardInjectedScript(int);
-    void releaseObjectGroup(const String16& objectGroup);
-    void setCustomObjectFormatterEnabled(bool);
-private:
-    explicit InjectedScriptManager(V8DebuggerImpl*);
-
-    v8::Local<v8::Object> createInjectedScript(const String16& source, v8::Local<v8::Context>, int id, InjectedScriptNative*);
-
-    typedef protocol::HashMap<int, OwnPtr<InjectedScript>> IdToInjectedScriptMap;
-    IdToInjectedScriptMap m_idToInjectedScript;
-    OwnPtr<InjectedScriptHost> m_injectedScriptHost;
-    bool m_customObjectFormatterEnabled;
-    V8DebuggerImpl* m_debugger;
-};
-
-} // namespace blink
-
-#endif // !defined(InjectedScriptManager_h)
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.cpp b/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.cpp
new file mode 100644
index 0000000..fb9e4c5
--- /dev/null
+++ b/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.cpp
@@ -0,0 +1,63 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "platform/v8_inspector/InspectedContext.h"
+
+#include "platform/v8_inspector/InjectedScript.h"
+#include "platform/v8_inspector/V8DebuggerImpl.h"
+#include "platform/v8_inspector/public/V8ContextInfo.h"
+#include "platform/v8_inspector/public/V8DebuggerClient.h"
+
+namespace blink {
+
+void InspectedContext::weakCallback(const v8::WeakCallbackInfo<InspectedContext>& data)
+{
+    data.GetParameter()->m_debugger->discardInspectedContext(data.GetParameter()->m_contextGroupId, data.GetParameter()->m_contextId);
+}
+
+InspectedContext::InspectedContext(V8DebuggerImpl* debugger, const V8ContextInfo& info, int contextId)
+    : m_debugger(debugger)
+    , m_context(info.context->GetIsolate(), info.context)
+    , m_contextId(contextId)
+    , m_contextGroupId(info.contextGroupId)
+    , m_isDefault(info.isDefault)
+    , m_origin(info.origin)
+    , m_humanReadableName(info.humanReadableName)
+    , m_frameId(info.frameId)
+    , m_reported(false)
+{
+    m_context.SetWeak(this, &InspectedContext::weakCallback, v8::WeakCallbackType::kParameter);
+}
+
+InspectedContext::~InspectedContext()
+{
+}
+
+v8::Local<v8::Context> InspectedContext::context() const
+{
+    return m_context.Get(isolate());
+}
+
+v8::Isolate* InspectedContext::isolate() const
+{
+    return m_debugger->isolate();
+}
+
+void InspectedContext::createInjectedScript(InjectedScriptHost* injectedScriptHost)
+{
+    ASSERT(!m_injectedScript);
+    v8::HandleScope handles(isolate());
+    v8::Local<v8::Context> localContext = context();
+    v8::Local<v8::Context> callingContext = isolate()->GetCallingContext();
+    if (!callingContext.IsEmpty() && !m_debugger->client()->callingContextCanAccessContext(callingContext, localContext))
+        return;
+    m_injectedScript = InjectedScript::create(this, injectedScriptHost);
+}
+
+void InspectedContext::discardInjectedScript()
+{
+    m_injectedScript.clear();
+}
+
+} // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.h b/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.h
new file mode 100644
index 0000000..41359f0
--- /dev/null
+++ b/third_party/WebKit/Source/platform/v8_inspector/InspectedContext.h
@@ -0,0 +1,61 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef InspectedContext_h
+#define InspectedContext_h
+
+#include "platform/inspector_protocol/Allocator.h"
+#include "platform/inspector_protocol/Collections.h"
+#include "platform/inspector_protocol/String16.h"
+#include <v8.h>
+
+namespace blink {
+
+class InjectedScript;
+class InjectedScriptHost;
+class V8ContextInfo;
+class V8DebuggerImpl;
+
+class InspectedContext {
+    PROTOCOL_DISALLOW_COPY(InspectedContext);
+public:
+    ~InspectedContext();
+
+    v8::Local<v8::Context> context() const;
+    int contextId() const { return m_contextId; }
+    bool isDefault() const { return m_isDefault; }
+    String16 origin() const { return m_origin; }
+    String16 humanReadableName() const { return m_humanReadableName; }
+    String16 frameId() const { return m_frameId; }
+
+    bool isReported() const { return m_reported; }
+    void setReported(bool reported) { m_reported = reported; }
+
+    v8::Isolate* isolate() const;
+    V8DebuggerImpl* debugger() const { return m_debugger; }
+
+    InjectedScript* getInjectedScript() { return m_injectedScript.get(); }
+    void createInjectedScript(InjectedScriptHost*);
+    void discardInjectedScript();
+
+private:
+    friend class V8DebuggerImpl;
+    InspectedContext(V8DebuggerImpl*, const V8ContextInfo&, int contextId);
+    static void weakCallback(const v8::WeakCallbackInfo<InspectedContext>&);
+
+    V8DebuggerImpl* m_debugger;
+    v8::Global<v8::Context> m_context;
+    int m_contextId;
+    int m_contextGroupId;
+    bool m_isDefault;
+    const String16 m_origin;
+    const String16 m_humanReadableName;
+    const String16 m_frameId;
+    bool m_reported;
+    OwnPtr<InjectedScript> m_injectedScript;
+};
+
+} // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
index b491f6e..a49e80cf2 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
@@ -8,12 +8,12 @@
 #include "platform/inspector_protocol/Values.h"
 #include "platform/v8_inspector/IgnoreExceptionsScope.h"
 #include "platform/v8_inspector/InjectedScript.h"
-#include "platform/v8_inspector/InjectedScriptHost.h"
-#include "platform/v8_inspector/InjectedScriptManager.h"
+#include "platform/v8_inspector/InspectedContext.h"
 #include "platform/v8_inspector/JavaScriptCallFrame.h"
 #include "platform/v8_inspector/RemoteObjectId.h"
 #include "platform/v8_inspector/ScriptBreakpoint.h"
 #include "platform/v8_inspector/V8AsyncCallTracker.h"
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
 #include "platform/v8_inspector/V8Regex.h"
 #include "platform/v8_inspector/V8RuntimeAgentImpl.h"
 #include "platform/v8_inspector/V8StackTraceImpl.h"
@@ -25,7 +25,6 @@
 
 using blink::protocol::Array;
 using blink::protocol::Maybe;
-using blink::protocol::Debugger::AsyncOperation;
 using blink::protocol::Debugger::BreakpointId;
 using blink::protocol::Debugger::CallFrame;
 using blink::protocol::Debugger::CollectionEntry;
@@ -157,13 +156,12 @@
 PassOwnPtr<V8DebuggerAgent> V8DebuggerAgent::create(V8RuntimeAgent* runtimeAgent)
 {
     V8RuntimeAgentImpl* runtimeAgentImpl = static_cast<V8RuntimeAgentImpl*>(runtimeAgent);
-    return adoptPtr(new V8DebuggerAgentImpl(runtimeAgentImpl->getInjectedScriptManager(), runtimeAgentImpl->debugger(), runtimeAgentImpl->contextGroupId()));
+    return adoptPtr(new V8DebuggerAgentImpl(runtimeAgentImpl->connection(), runtimeAgentImpl->debugger()));
 }
 
-V8DebuggerAgentImpl::V8DebuggerAgentImpl(InjectedScriptManager* injectedScriptManager, V8DebuggerImpl* debugger, int contextGroupId)
-    : m_injectedScriptManager(injectedScriptManager)
-    , m_debugger(debugger)
-    , m_contextGroupId(contextGroupId)
+V8DebuggerAgentImpl::V8DebuggerAgentImpl(V8InspectorConnectionImpl* connection, V8DebuggerImpl* debugger)
+    : m_debugger(debugger)
+    , m_connection(connection)
     , m_enabled(false)
     , m_state(nullptr)
     , m_frontend(nullptr)
@@ -174,7 +172,6 @@
     , m_javaScriptPauseScheduled(false)
     , m_steppingFromFramework(false)
     , m_pausingOnNativeEvent(false)
-    , m_pausingOnAsyncOperation(false)
     , m_skippedStepFrameCount(0)
     , m_recursionLevelForStepOut(0)
     , m_recursionLevelForStepFrame(0)
@@ -185,10 +182,8 @@
     , m_nestedAsyncCallCount(0)
     , m_currentAsyncOperationId(unknownAsyncOperationId)
     , m_pendingTraceAsyncOperationCompleted(false)
-    , m_startingStepIntoAsync(false)
 {
-    ASSERT(contextGroupId);
-    m_injectedScriptManager->injectedScriptHost()->setDebuggerAgent(this);
+    m_connection->setDebuggerAgent(this);
 
     // FIXME: remove once InjectedScriptManager moves to v8.
     m_v8AsyncCallTracker = V8AsyncCallTracker::create(this);
@@ -197,6 +192,7 @@
 
 V8DebuggerAgentImpl::~V8DebuggerAgentImpl()
 {
+    m_connection->setDebuggerAgent(nullptr);
 }
 
 bool V8DebuggerAgentImpl::checkEnabled(ErrorString* errorString)
@@ -212,7 +208,7 @@
     // debugger().addListener may result in reporting all parsed scripts to
     // the agent so it should already be in enabled state by then.
     m_enabled = true;
-    debugger().addDebuggerAgent(m_contextGroupId, this);
+    debugger().addDebuggerAgent(m_connection->contextGroupId(), this);
     // FIXME(WK44513): breakpoints activated flag should be synchronized between all front-ends
     debugger().setBreakpointsActivated(true);
 }
@@ -241,7 +237,7 @@
     m_state->setNumber(DebuggerAgentState::pauseOnExceptionsState, V8DebuggerImpl::DontPauseOnExceptions);
     m_state->setNumber(DebuggerAgentState::asyncCallStackDepth, 0);
 
-    debugger().removeDebuggerAgent(m_contextGroupId);
+    debugger().removeDebuggerAgent(m_connection->contextGroupId());
     m_pausedContext.Reset();
     JavaScriptCallFrames emptyCallFrames;
     m_pausedCallFrames.swap(emptyCallFrames);
@@ -258,8 +254,6 @@
     m_pausingOnNativeEvent = false;
     m_skippedStepFrameCount = 0;
     m_recursionLevelForStepFrame = 0;
-    m_asyncOperationNotifications.clear();
-    clearStepIntoAsync();
     m_skipAllPauses = false;
     m_enabled = false;
 }
@@ -640,12 +634,12 @@
     OwnPtr<RemoteCallFrameId> remoteId = RemoteCallFrameId::parse(errorString, callFrameId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(m_isolate);
-    v8::Local<v8::Context> localContext = injectedScript->context();
+    v8::Local<v8::Context> localContext = injectedScript->context()->context();
 
     v8::TryCatch tryCatch(m_isolate);
 
@@ -688,12 +682,12 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, functionId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(m_isolate);
-    v8::Local<v8::Context> context = injectedScript->context();
+    v8::Local<v8::Context> context = injectedScript->context()->context();
     v8::Context::Scope contextScope(context);
 
     v8::Local<v8::Value> value;
@@ -721,7 +715,7 @@
 
     if (!scopes.IsEmpty()) {
         protocol::ErrorSupport errorSupport;
-        OwnPtr<protocol::Array<protocol::Debugger::Scope>> scopeChain = protocol::Array<protocol::Debugger::Scope>::parse(toProtocolValue(injectedScript->context(), scopes).get(), &errorSupport);
+        OwnPtr<protocol::Array<protocol::Debugger::Scope>> scopeChain = protocol::Array<protocol::Debugger::Scope>::parse(toProtocolValue(context, scopes).get(), &errorSupport);
         if (hasInternalError(errorString, errorSupport.hasErrors()))
             return;
         functionDetails->setScopeChain(scopeChain.release());
@@ -737,12 +731,12 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(m_isolate);
-    v8::Local<v8::Context> context = injectedScript->context();
+    v8::Local<v8::Context> context = injectedScript->context()->context();
     v8::Context::Scope contextScope(context);
 
     v8::Local<v8::Object> object;
@@ -777,12 +771,12 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(m_isolate);
-    v8::Local<v8::Context> context = injectedScript->context();
+    v8::Local<v8::Context> context = injectedScript->context()->context();
     v8::Context::Scope contextScope(context);
 
     v8::Local<v8::Value> value;
@@ -809,7 +803,7 @@
     if (!injectedScript->wrapPropertyInArray(errorString, entriesArray, toV8StringInternalized(injectedScript->isolate(), "value"), groupName))
         return;
     protocol::ErrorSupport errors;
-    OwnPtr<protocol::Array<CollectionEntry>> entries = protocol::Array<CollectionEntry>::parse(toProtocolValue(injectedScript->context(), entriesArray).get(), &errors);
+    OwnPtr<protocol::Array<CollectionEntry>> entries = protocol::Array<CollectionEntry>::parse(toProtocolValue(context, entriesArray).get(), &errors);
     if (hasInternalError(errorString, !entries))
         return;
     *outEntries = entries.release();
@@ -866,7 +860,6 @@
     if (m_javaScriptPauseScheduled || isPaused())
         return;
     clearBreakDetails();
-    clearStepIntoAsync();
     m_javaScriptPauseScheduled = true;
     m_scheduledDebuggerStep = NoStep;
     m_skippedStepFrameCount = 0;
@@ -880,7 +873,7 @@
         return;
     m_scheduledDebuggerStep = NoStep;
     m_steppingFromFramework = false;
-    m_injectedScriptManager->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
+    m_connection->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
     debugger().continueProgram();
 }
 
@@ -896,7 +889,7 @@
     }
     m_scheduledDebuggerStep = StepOver;
     m_steppingFromFramework = isTopPausedCallFrameBlackboxed();
-    m_injectedScriptManager->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
+    m_connection->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
     debugger().stepOverStatement();
 }
 
@@ -906,7 +899,7 @@
         return;
     m_scheduledDebuggerStep = StepInto;
     m_steppingFromFramework = isTopPausedCallFrameBlackboxed();
-    m_injectedScriptManager->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
+    m_connection->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
     debugger().stepIntoStatement();
 }
 
@@ -918,23 +911,10 @@
     m_skipNextDebuggerStepOut = false;
     m_recursionLevelForStepOut = 1;
     m_steppingFromFramework = isTopPausedCallFrameBlackboxed();
-    m_injectedScriptManager->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
+    m_connection->releaseObjectGroup(V8DebuggerAgentImpl::backtraceObjectGroup);
     debugger().stepOutOfFunction();
 }
 
-void V8DebuggerAgentImpl::stepIntoAsync(ErrorString* errorString)
-{
-    if (!assertPaused(errorString))
-        return;
-    if (!trackingAsyncCalls()) {
-        *errorString = "Can only perform operation if async call stacks are enabled.";
-        return;
-    }
-    clearStepIntoAsync();
-    m_startingStepIntoAsync = true;
-    stepInto(errorString);
-}
-
 void V8DebuggerAgentImpl::setPauseOnExceptions(ErrorString* errorString, const String16& stringPauseState)
 {
     if (!checkEnabled(errorString))
@@ -979,7 +959,7 @@
     OwnPtr<RemoteCallFrameId> remoteId = RemoteCallFrameId::parse(errorString, callFrameId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
@@ -1007,7 +987,7 @@
     v8::MaybeLocal<v8::Value> maybeResultValue = m_pausedCallFrames[frameOrdinal].get()->evaluate(toV8String(injectedScript->isolate(), expression));
 
     // InjectedScript may be gone after any evaluate call - find it again.
-    injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
@@ -1035,7 +1015,7 @@
     OwnPtr<RemoteCallFrameId> remoteId = RemoteCallFrameId::parse(errorString, callFrameId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
@@ -1077,25 +1057,9 @@
             m_lastAsyncOperationId = 1;
     } while (m_asyncOperations.contains(m_lastAsyncOperationId));
 
-    if (chain) {
-        m_asyncOperationNotifications.add(m_lastAsyncOperationId);
+    if (chain)
         m_asyncOperations.set(m_lastAsyncOperationId, chain.release());
-    }
 
-    if (m_startingStepIntoAsync) {
-        // We have successfully started a StepIntoAsync, so revoke the debugger's StepInto
-        // and wait for the corresponding async operation breakpoint.
-        ASSERT(m_pausingAsyncOperations.isEmpty());
-        m_pausingAsyncOperations.add(m_lastAsyncOperationId);
-        m_startingStepIntoAsync = false;
-        m_scheduledDebuggerStep = NoStep;
-        debugger().clearStepping();
-    } else if (m_pausingOnAsyncOperation) {
-        m_pausingAsyncOperations.add(m_lastAsyncOperationId);
-    }
-
-    if (!m_pausedContext.IsEmpty())
-        flushAsyncOperationEvents(nullptr);
     return m_lastAsyncOperationId;
 }
 
@@ -1125,14 +1089,6 @@
         m_currentAsyncOperationId = operationId;
         m_pendingTraceAsyncOperationCompleted = false;
         m_nestedAsyncCallCount = 1;
-
-        if (m_pausingAsyncOperations.contains(operationId) || m_asyncOperationBreakpoints.contains(operationId)) {
-            m_pausingOnAsyncOperation = true;
-            m_scheduledDebuggerStep = StepInto;
-            m_skippedStepFrameCount = 0;
-            m_recursionLevelForStepFrame = 0;
-            debugger().setPauseOnNextStatement(true);
-        }
     } else {
         if (m_currentAsyncCallChain)
             ++m_nestedAsyncCallCount;
@@ -1143,24 +1099,15 @@
 {
     if (!m_nestedAsyncCallCount)
         return;
-//    ASSERT(m_currentAsyncCallChain);
+    ASSERT(m_currentAsyncCallChain);
     --m_nestedAsyncCallCount;
-    if (!m_nestedAsyncCallCount) {
+    if (!m_nestedAsyncCallCount)
         clearCurrentAsyncOperation();
-        if (!m_pausingOnAsyncOperation)
-            return;
-        m_pausingOnAsyncOperation = false;
-        m_scheduledDebuggerStep = NoStep;
-        debugger().setPauseOnNextStatement(false);
-        if (m_startingStepIntoAsync && m_pausingAsyncOperations.isEmpty())
-            clearStepIntoAsync();
-    }
 }
 
 void V8DebuggerAgentImpl::traceAsyncOperationCompleted(int operationId)
 {
     ASSERT(operationId > 0 || operationId == unknownAsyncOperationId);
-    bool shouldNotify = false;
     if (operationId > 0) {
         if (m_currentAsyncOperationId == operationId) {
             if (m_pendingTraceAsyncOperationCompleted) {
@@ -1172,35 +1119,7 @@
             }
         }
         m_asyncOperations.remove(operationId);
-        m_asyncOperationBreakpoints.remove(operationId);
-        m_pausingAsyncOperations.remove(operationId);
-        shouldNotify = !m_asyncOperationNotifications.take(operationId);
     }
-    if (m_startingStepIntoAsync) {
-        if (!m_pausingOnAsyncOperation && m_pausingAsyncOperations.isEmpty())
-            clearStepIntoAsync();
-    }
-    if (m_frontend && shouldNotify)
-        m_frontend->asyncOperationCompleted(operationId);
-}
-
-void V8DebuggerAgentImpl::flushAsyncOperationEvents(ErrorString*)
-{
-    if (!m_frontend)
-        return;
-
-    for (auto& operationId : m_asyncOperationNotifications) {
-        V8StackTraceImpl* chain = m_asyncOperations.get(operationId.first);
-        ASSERT(chain);
-        if (!chain->isEmpty()) {
-            OwnPtr<AsyncOperation> operation = AsyncOperation::create()
-                .setId(operationId.first)
-                .setStack(chain->buildInspectorObject()).build();
-            m_frontend->asyncOperationStarted(operation.release());
-        }
-    }
-
-    m_asyncOperationNotifications.clear();
 }
 
 void V8DebuggerAgentImpl::clearCurrentAsyncOperation()
@@ -1217,41 +1136,8 @@
 void V8DebuggerAgentImpl::resetAsyncCallTracker()
 {
     clearCurrentAsyncOperation();
-    clearStepIntoAsync();
     m_v8AsyncCallTracker->resetAsyncOperations();
     m_asyncOperations.clear();
-    m_asyncOperationNotifications.clear();
-    m_asyncOperationBreakpoints.clear();
-}
-
-void V8DebuggerAgentImpl::setAsyncOperationBreakpoint(ErrorString* errorString, int operationId)
-{
-    if (!trackingAsyncCalls()) {
-        *errorString = "Can only perform operation while tracking async call stacks.";
-        return;
-    }
-    if (operationId <= 0) {
-        *errorString = "Wrong async operation id.";
-        return;
-    }
-    if (!m_asyncOperations.contains(operationId)) {
-        *errorString = "Unknown async operation id.";
-        return;
-    }
-    m_asyncOperationBreakpoints.add(operationId);
-}
-
-void V8DebuggerAgentImpl::removeAsyncOperationBreakpoint(ErrorString* errorString, int operationId)
-{
-    if (!trackingAsyncCalls()) {
-        *errorString = "Can only perform operation while tracking async call stacks.";
-        return;
-    }
-    if (operationId <= 0) {
-        *errorString = "Wrong async operation id.";
-        return;
-    }
-    m_asyncOperationBreakpoints.remove(operationId);
 }
 
 void V8DebuggerAgentImpl::setBlackboxedRanges(ErrorString* error, const String16& scriptId, PassOwnPtr<protocol::Array<protocol::Debugger::ScriptPosition>> inPositions)
@@ -1346,7 +1232,8 @@
 {
     if (m_pausedContext.IsEmpty() || !m_pausedCallFrames.size())
         return Array<CallFrame>::create();
-    InjectedScript* topFrameInjectedScript = m_injectedScriptManager->injectedScriptFor(m_pausedContext.Get(m_isolate));
+    ErrorString ignored;
+    InjectedScript* topFrameInjectedScript = m_connection->findInjectedScript(&ignored, V8Debugger::contextId(m_pausedContext.Get(m_isolate)));
     if (!topFrameInjectedScript) {
         // Context has been reported as removed while on pause.
         return Array<CallFrame>::create();
@@ -1354,7 +1241,7 @@
 
     v8::Isolate* isolate = topFrameInjectedScript->isolate();
     v8::HandleScope handles(isolate);
-    v8::Local<v8::Context> context = topFrameInjectedScript->context();
+    v8::Local<v8::Context> context = topFrameInjectedScript->context()->context();
     v8::Context::Scope contextScope(context);
 
     v8::Local<v8::Array> objects = v8::Array::New(isolate);
@@ -1366,13 +1253,11 @@
             return Array<CallFrame>::create();
 
         int contextId = currentCallFrame->contextId();
-        ErrorString ignoredErrorString;
-        InjectedScript* injectedScript = contextId ? m_injectedScriptManager->findInjectedScript(&ignoredErrorString, contextId) : nullptr;
+        InjectedScript* injectedScript = contextId ? m_connection->findInjectedScript(&ignored, contextId) : nullptr;
         if (!injectedScript)
             injectedScript = topFrameInjectedScript;
 
-        String16 callFrameId = RemoteCallFrameId::serialize(injectedScript->contextId(), frameOrdinal);
-
+        String16 callFrameId = RemoteCallFrameId::serialize(injectedScript->context()->contextId(), frameOrdinal);
         if (hasInternalError(errorString, !details->Set(context, toV8StringInternalized(isolate, "callFrameId"), toV8String(isolate, callFrameId)).FromMaybe(false)))
             return Array<CallFrame>::create();
 
@@ -1512,7 +1397,8 @@
     v8::HandleScope handles(m_isolate);
 
     if (!exception.IsEmpty()) {
-        InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(context);
+        ErrorString ignored;
+        InjectedScript* injectedScript = m_connection->findInjectedScript(&ignored, V8Debugger::contextId(context));
         if (injectedScript) {
             m_breakReason = isPromiseRejection ? protocol::Debugger::Paused::ReasonEnum::PromiseRejection : protocol::Debugger::Paused::ReasonEnum::Exception;
             ErrorString errorString;
@@ -1520,10 +1406,6 @@
             m_breakAuxData = obj ? obj->serialize() : nullptr;
             // m_breakAuxData might be null after this.
         }
-    } else if (m_pausingOnAsyncOperation) {
-        m_breakReason = protocol::Debugger::Paused::ReasonEnum::AsyncOperation;
-        m_breakAuxData = protocol::DictionaryValue::create();
-        m_breakAuxData->setNumber("operationId", m_currentAsyncOperationId);
     }
 
     OwnPtr<Array<String16>> hitBreakpointIds = Array<String16>::create();
@@ -1540,9 +1422,6 @@
         }
     }
 
-    if (!m_asyncOperationNotifications.isEmpty())
-        flushAsyncOperationEvents(nullptr);
-
     ErrorString errorString;
     m_frontend->paused(currentCallFrames(&errorString), m_breakReason, m_breakAuxData.release(), hitBreakpointIds.release(), currentAsyncStackTrace());
     m_scheduledDebuggerStep = NoStep;
@@ -1551,7 +1430,6 @@
     m_pausingOnNativeEvent = false;
     m_skippedStepFrameCount = 0;
     m_recursionLevelForStepFrame = 0;
-    clearStepIntoAsync();
 
     if (!m_continueToLocationBreakpointId.isEmpty()) {
         debugger().removeBreakpoint(m_continueToLocationBreakpointId);
@@ -1584,7 +1462,6 @@
     m_scheduledDebuggerStep = NoStep;
     m_steppingFromFramework = false;
     m_pausingOnNativeEvent = false;
-    clearStepIntoAsync();
     debugger().breakProgram();
 }
 
@@ -1595,13 +1472,6 @@
     breakProgram(breakReason, data);
 }
 
-void V8DebuggerAgentImpl::clearStepIntoAsync()
-{
-    m_startingStepIntoAsync = false;
-    m_pausingOnAsyncOperation = false;
-    m_pausingAsyncOperations.clear();
-}
-
 bool V8DebuggerAgentImpl::assertPaused(ErrorString* errorString)
 {
     if (m_pausedContext.IsEmpty()) {
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.h b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.h
index d6e705a..4ee50b9 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.h
@@ -14,10 +14,10 @@
 
 namespace blink {
 
-class InjectedScriptManager;
 class JavaScriptCallFrame;
 class PromiseTracker;
 class V8AsyncCallTracker;
+class V8InspectorConnectionImpl;
 class V8StackTraceImpl;
 
 namespace protocol {
@@ -43,7 +43,7 @@
         MonitorCommandBreakpointSource
     };
 
-    V8DebuggerAgentImpl(InjectedScriptManager*, V8DebuggerImpl*, int contextGroupId);
+    V8DebuggerAgentImpl(V8InspectorConnectionImpl*, V8DebuggerImpl*);
     ~V8DebuggerAgentImpl() override;
 
     void setInspectorState(protocol::DictionaryValue*) override;
@@ -113,7 +113,6 @@
     void stepOver(ErrorString*) override;
     void stepInto(ErrorString*) override;
     void stepOut(ErrorString*) override;
-    void stepIntoAsync(ErrorString*) override;
     void setPauseOnExceptions(ErrorString*, const String16& pauseState) override;
     void evaluateOnCallFrame(ErrorString*,
         const String16& callFrameId,
@@ -132,9 +131,6 @@
         PassOwnPtr<protocol::Runtime::CallArgument> newValue,
         const String16& callFrame) override;
     void setAsyncCallStackDepth(ErrorString*, int depth) override;
-    void flushAsyncOperationEvents(ErrorString*) override;
-    void setAsyncOperationBreakpoint(ErrorString*, int operationId) override;
-    void removeAsyncOperationBreakpoint(ErrorString*, int operationId) override;
     void setBlackboxedRanges(ErrorString*,
         const String16& scriptId,
         PassOwnPtr<protocol::Array<protocol::Debugger::ScriptPosition>> positions) override;
@@ -194,7 +190,6 @@
 
     PassOwnPtr<protocol::Debugger::Location> resolveBreakpoint(const String16& breakpointId, const String16& scriptId, const ScriptBreakpoint&, BreakpointSource);
     void removeBreakpoint(const String16& breakpointId);
-    void clearStepIntoAsync();
     bool assertPaused(ErrorString*);
     void clearBreakDetails();
 
@@ -217,9 +212,8 @@
         StepOut
     };
 
-    InjectedScriptManager* m_injectedScriptManager;
     V8DebuggerImpl* m_debugger;
-    int m_contextGroupId;
+    V8InspectorConnectionImpl* m_connection;
     bool m_enabled;
     protocol::DictionaryValue* m_state;
     protocol::Frontend::Debugger* m_frontend;
@@ -237,7 +231,6 @@
     bool m_javaScriptPauseScheduled;
     bool m_steppingFromFramework;
     bool m_pausingOnNativeEvent;
-    bool m_pausingOnAsyncOperation;
 
     int m_skippedStepFrameCount;
     int m_recursionLevelForStepOut;
@@ -250,15 +243,11 @@
     using AsyncOperationIdToStackTrace = protocol::HashMap<int, OwnPtr<V8StackTraceImpl>>;
     AsyncOperationIdToStackTrace m_asyncOperations;
     int m_lastAsyncOperationId;
-    protocol::HashSet<int> m_asyncOperationNotifications;
-    protocol::HashSet<int> m_asyncOperationBreakpoints;
-    protocol::HashSet<int> m_pausingAsyncOperations;
     int m_maxAsyncCallStackDepth;
     OwnPtr<V8StackTraceImpl> m_currentAsyncCallChain;
     unsigned m_nestedAsyncCallCount;
     int m_currentAsyncOperationId;
     bool m_pendingTraceAsyncOperationCompleted;
-    bool m_startingStepIntoAsync;
     protocol::HashMap<String16, protocol::Vector<std::pair<int, int>>> m_blackboxedPositions;
 };
 
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.cpp
index 74b5bae..72e957ca 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.cpp
@@ -33,8 +33,10 @@
 #include "platform/inspector_protocol/Values.h"
 #include "platform/v8_inspector/Atomics.h"
 #include "platform/v8_inspector/DebuggerScript.h"
+#include "platform/v8_inspector/InspectedContext.h"
 #include "platform/v8_inspector/ScriptBreakpoint.h"
 #include "platform/v8_inspector/V8DebuggerAgentImpl.h"
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
 #include "platform/v8_inspector/V8RuntimeAgentImpl.h"
 #include "platform/v8_inspector/V8StackTraceImpl.h"
 #include "platform/v8_inspector/V8StringUtil.h"
@@ -785,16 +787,34 @@
     v8::Context::Scope contextScope(info.context);
     info.context->SetEmbedderData(static_cast<int>(v8::Context::kDebugIdIndex), toV8String(m_isolate, debugData));
 
+    if (!m_contexts.contains(info.contextGroupId))
+        m_contexts.set(info.contextGroupId, adoptPtr(new ContextByIdMap()));
+    ASSERT(!m_contexts.get(info.contextGroupId)->contains(contextId));
+
+    OwnPtr<InspectedContext> contextOwner = adoptPtr(new InspectedContext(this, info, contextId));
+    InspectedContext* inspectedContext = contextOwner.get();
+    m_contexts.get(info.contextGroupId)->set(contextId, contextOwner.release());
+
     V8RuntimeAgentImpl* agent = getRuntimeAgentForContext(info.context);
     if (agent)
-        agent->reportExecutionContextCreated(info);
+        agent->reportExecutionContextCreated(inspectedContext);
 }
 
 void V8DebuggerImpl::contextDestroyed(v8::Local<v8::Context> context)
 {
+    int contextId = V8Debugger::contextId(context);
+    int contextGroupId = getGroupId(context);
+    if (!m_contexts.contains(contextGroupId) || !m_contexts.get(contextGroupId)->contains(contextId))
+        return;
+
+    InspectedContext* inspectedContext = m_contexts.get(contextGroupId)->get(contextId);
     V8RuntimeAgentImpl* agent = getRuntimeAgentForContext(context);
     if (agent)
-        agent->reportExecutionContextDestroyed(context);
+        agent->reportExecutionContextDestroyed(inspectedContext);
+
+    m_contexts.get(contextGroupId)->remove(contextId);
+    if (m_contexts.get(contextGroupId)->isEmpty())
+        m_contexts.remove(contextGroupId);
 }
 
 void V8DebuggerImpl::resetContextGroup(int contextGroupId)
@@ -805,6 +825,8 @@
     V8RuntimeAgentImpl* runtimeAgent = m_runtimeAgentsMap.get(contextGroupId);
     if (runtimeAgent)
         runtimeAgent->reset();
+    if (m_contexts.contains(contextGroupId))
+        m_contexts.remove(contextGroupId);
 }
 
 PassOwnPtr<V8StackTrace> V8DebuggerImpl::captureStackTrace(size_t maxStackSize)
@@ -820,4 +842,18 @@
     return m_regexContext.Get(m_isolate);
 }
 
+void V8DebuggerImpl::discardInspectedContext(int contextGroupId, int contextId)
+{
+    if (!m_contexts.contains(contextGroupId) || !m_contexts.get(contextGroupId)->contains(contextId))
+        return;
+    m_contexts.get(contextGroupId)->remove(contextId);
+}
+
+const V8DebuggerImpl::ContextByIdMap* V8DebuggerImpl::contextGroup(int contextGroupId)
+{
+    if (!m_contexts.contains(contextGroupId))
+        return nullptr;
+    return m_contexts.get(contextGroupId);
+}
+
 } // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.h b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.h
index 0a96e8e09..5e0c4a5 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerImpl.h
@@ -45,6 +45,7 @@
 using protocol::Maybe;
 
 struct ScriptBreakpoint;
+class InspectedContext;
 class V8DebuggerAgentImpl;
 class V8RuntimeAgentImpl;
 
@@ -109,6 +110,10 @@
     PassOwnPtr<V8StackTrace> createStackTrace(v8::Local<v8::StackTrace>, size_t maxStackSize) override;
     PassOwnPtr<V8StackTrace> captureStackTrace(size_t maxStackSize) override;
 
+    using ContextByIdMap = protocol::HashMap<int, OwnPtr<InspectedContext>>;
+    void discardInspectedContext(int contextGroupId, int contextId);
+    const ContextByIdMap* contextGroup(int contextGroupId);
+
 private:
     void enable();
     void disable();
@@ -138,6 +143,8 @@
 
     v8::Isolate* m_isolate;
     V8DebuggerClient* m_client;
+    using ContextsByGroupMap = protocol::HashMap<int, OwnPtr<ContextByIdMap>>;
+    ContextsByGroupMap m_contexts;
     using DebuggerAgentsMap = protocol::HashMap<int, V8DebuggerAgentImpl*>;
     DebuggerAgentsMap m_debuggerAgentsMap;
     using RuntimeAgentsMap = protocol::HashMap<int, V8RuntimeAgentImpl*>;
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8HeapProfilerAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8HeapProfilerAgentImpl.cpp
index 1d15abe..d236427 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8HeapProfilerAgentImpl.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8HeapProfilerAgentImpl.cpp
@@ -5,8 +5,8 @@
 #include "platform/v8_inspector/V8HeapProfilerAgentImpl.h"
 
 #include "platform/v8_inspector/InjectedScript.h"
-#include "platform/v8_inspector/InjectedScriptManager.h"
 #include "platform/v8_inspector/V8DebuggerImpl.h"
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
 #include "platform/v8_inspector/V8RuntimeAgentImpl.h"
 #include "platform/v8_inspector/V8StringUtil.h"
 #include "platform/v8_inspector/public/V8DebuggerClient.h"
@@ -56,10 +56,10 @@
         if (!contextId)
             return "";
         ErrorString errorString;
-        InjectedScript* injectedScript = m_runtimeAgent->getInjectedScriptManager()->findInjectedScript(&errorString, contextId);
+        InjectedScript* injectedScript = m_runtimeAgent->connection()->findInjectedScript(&errorString, contextId);
         if (!injectedScript)
             return "";
-        String16 name = injectedScript->origin();
+        String16 name = injectedScript->context()->origin();
         size_t length = name.length();
         if (m_offset + length + 1 >= m_strings.size())
             return "";
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.cpp
new file mode 100644
index 0000000..73f35ed
--- /dev/null
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.cpp
@@ -0,0 +1,130 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
+
+#include "platform/v8_inspector/InjectedScript.h"
+#include "platform/v8_inspector/InjectedScriptHost.h"
+#include "platform/v8_inspector/InspectedContext.h"
+#include "platform/v8_inspector/RemoteObjectId.h"
+#include "platform/v8_inspector/V8DebuggerAgentImpl.h"
+#include "platform/v8_inspector/V8DebuggerImpl.h"
+#include "platform/v8_inspector/V8RuntimeAgentImpl.h"
+#include "platform/v8_inspector/public/V8ContextInfo.h"
+#include "platform/v8_inspector/public/V8DebuggerClient.h"
+
+namespace blink {
+
+PassOwnPtr<V8InspectorConnectionImpl> V8InspectorConnectionImpl::create(V8DebuggerImpl* debugger, int contextGroupId)
+{
+    return adoptPtr(new V8InspectorConnectionImpl(debugger, contextGroupId));
+}
+
+V8InspectorConnectionImpl::V8InspectorConnectionImpl(V8DebuggerImpl* debugger, int contextGroupId)
+    : m_contextGroupId(contextGroupId)
+    , m_debugger(debugger)
+    , m_injectedScriptHost(InjectedScriptHost::create(debugger, this))
+    , m_customObjectFormatterEnabled(false)
+    , m_debuggerAgent(nullptr)
+    , m_inspectCallback(nullptr)
+    , m_clearConsoleCallback(nullptr)
+{
+}
+
+V8InspectorConnectionImpl::~V8InspectorConnectionImpl()
+{
+    resetInjectedScripts();
+    ASSERT(!m_debuggerAgent);
+}
+
+void V8InspectorConnectionImpl::resetInjectedScripts()
+{
+    m_injectedScriptHost->clearInspectedObjects();
+    const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId);
+    if (!contexts)
+        return;
+
+    protocol::Vector<int> keys;
+    for (auto& idContext : *contexts)
+        keys.append(idContext.first);
+    for (auto& key : keys) {
+        contexts = m_debugger->contextGroup(m_contextGroupId);
+        if (contexts && contexts->contains(key))
+            contexts->get(key)->discardInjectedScript(); // This may destroy some contexts.
+    }
+}
+
+InjectedScript* V8InspectorConnectionImpl::findInjectedScript(ErrorString* errorString, int contextId)
+{
+    const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId);
+    if (!contexts || !contexts->contains(contextId)) {
+        *errorString = "Inspected frame has gone";
+        return nullptr;
+    }
+
+    InspectedContext* context = contexts->get(contextId);
+    if (!context->getInjectedScript()) {
+        context->createInjectedScript(m_injectedScriptHost.get());
+        if (!context->getInjectedScript()) {
+            *errorString = "Cannot access specified execution context";
+            return nullptr;
+        }
+        if (m_customObjectFormatterEnabled)
+            context->getInjectedScript()->setCustomObjectFormatterEnabled(true);
+    }
+    return context->getInjectedScript();
+}
+
+InjectedScript* V8InspectorConnectionImpl::findInjectedScript(ErrorString* errorString, RemoteObjectIdBase* objectId)
+{
+    return objectId ? findInjectedScript(errorString, objectId->contextId()) : nullptr;
+}
+
+void V8InspectorConnectionImpl::addInspectedObject(PassOwnPtr<V8RuntimeAgent::Inspectable> inspectable)
+{
+    m_injectedScriptHost->addInspectedObject(inspectable);
+}
+
+void V8InspectorConnectionImpl::releaseObjectGroup(const String16& objectGroup)
+{
+    const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId);
+    if (!contexts)
+        return;
+
+    protocol::Vector<int> keys;
+    for (auto& idContext : *contexts)
+        keys.append(idContext.first);
+    for (auto& key : keys) {
+        contexts = m_debugger->contextGroup(m_contextGroupId);
+        if (contexts && contexts->contains(key)) {
+            InjectedScript* injectedScript = contexts->get(key)->getInjectedScript();
+            if (injectedScript)
+                injectedScript->releaseObjectGroup(objectGroup); // This may destroy some contexts.
+        }
+    }
+}
+
+void V8InspectorConnectionImpl::setCustomObjectFormatterEnabled(bool enabled)
+{
+    m_customObjectFormatterEnabled = enabled;
+    const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId);
+    if (!contexts)
+        return;
+    for (auto& idContext : *contexts) {
+        InjectedScript* injectedScript = idContext.second->getInjectedScript();
+        if (injectedScript)
+            injectedScript->setCustomObjectFormatterEnabled(enabled);
+    }
+}
+
+void V8InspectorConnectionImpl::reportAllContexts(V8RuntimeAgentImpl* agent)
+{
+    const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId);
+    if (!contexts)
+        return;
+    for (auto& idContext : *contexts)
+        agent->reportExecutionContextCreated(idContext.second);
+}
+
+} // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.h b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.h
new file mode 100644
index 0000000..5abc95d6
--- /dev/null
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorConnectionImpl.h
@@ -0,0 +1,68 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8InspectorConnectionImpl_h
+#define V8InspectorConnectionImpl_h
+
+#include "platform/inspector_protocol/Allocator.h"
+#include "platform/inspector_protocol/Collections.h"
+#include "platform/inspector_protocol/String16.h"
+#include "platform/inspector_protocol/TypeBuilder.h"
+#include "platform/v8_inspector/public/V8RuntimeAgent.h"
+#include "wtf/PassOwnPtr.h"
+
+#include <v8.h>
+
+namespace blink {
+
+class InjectedScript;
+class InjectedScriptHost;
+class InjectedScriptNative;
+class InspectedContext;
+class RemoteObjectIdBase;
+class V8ContextInfo;
+class V8DebuggerAgentImpl;
+class V8DebuggerImpl;
+class V8RuntimeAgentImpl;
+
+class V8InspectorConnectionImpl {
+    PROTOCOL_DISALLOW_COPY(V8InspectorConnectionImpl);
+public:
+    static PassOwnPtr<V8InspectorConnectionImpl> create(V8DebuggerImpl*, int contextGroupId);
+    ~V8InspectorConnectionImpl();
+
+    V8DebuggerImpl* debugger() const { return m_debugger; }
+    int contextGroupId() const { return m_contextGroupId; }
+
+    InjectedScript* findInjectedScript(ErrorString*, int contextId);
+    InjectedScript* findInjectedScript(ErrorString*, RemoteObjectIdBase*);
+    void resetInjectedScripts();
+    void reportAllContexts(V8RuntimeAgentImpl*);
+    void addInspectedObject(PassOwnPtr<V8RuntimeAgent::Inspectable>);
+    void releaseObjectGroup(const String16& objectGroup);
+    void setCustomObjectFormatterEnabled(bool);
+
+    // TODO(dgozman): remove these once runtime and debugger agent have the same lifetime.
+    void setDebuggerAgent(V8DebuggerAgentImpl* agent) { m_debuggerAgent = agent; }
+    V8DebuggerAgentImpl* debuggerAgent() { return m_debuggerAgent; }
+    void setClearConsoleCallback(PassOwnPtr<V8RuntimeAgent::ClearConsoleCallback> callback) { m_clearConsoleCallback = callback; }
+    V8RuntimeAgent::ClearConsoleCallback* clearConsoleCallback() { return m_clearConsoleCallback.get(); }
+    void setInspectObjectCallback(PassOwnPtr<V8RuntimeAgent::InspectCallback> callback) { m_inspectCallback = callback; }
+    V8RuntimeAgent::InspectCallback* inspectCallback() { return m_inspectCallback.get(); }
+
+private:
+    friend class InspectedContext;
+    V8InspectorConnectionImpl(V8DebuggerImpl*, int contextGroupId);
+    int m_contextGroupId;
+    V8DebuggerImpl* m_debugger;
+    OwnPtr<InjectedScriptHost> m_injectedScriptHost;
+    bool m_customObjectFormatterEnabled;
+    V8DebuggerAgentImpl* m_debuggerAgent;
+    OwnPtr<V8RuntimeAgent::InspectCallback> m_inspectCallback;
+    OwnPtr<V8RuntimeAgent::ClearConsoleCallback> m_clearConsoleCallback;
+};
+
+} // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.cpp
index aa45ee85..7b755c4 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.cpp
@@ -33,10 +33,10 @@
 #include "platform/inspector_protocol/Values.h"
 #include "platform/v8_inspector/IgnoreExceptionsScope.h"
 #include "platform/v8_inspector/InjectedScript.h"
-#include "platform/v8_inspector/InjectedScriptHost.h"
-#include "platform/v8_inspector/InjectedScriptManager.h"
+#include "platform/v8_inspector/InspectedContext.h"
 #include "platform/v8_inspector/RemoteObjectId.h"
 #include "platform/v8_inspector/V8DebuggerImpl.h"
+#include "platform/v8_inspector/V8InspectorConnectionImpl.h"
 #include "platform/v8_inspector/V8StringUtil.h"
 #include "platform/v8_inspector/public/V8DebuggerClient.h"
 
@@ -62,19 +62,18 @@
 }
 
 V8RuntimeAgentImpl::V8RuntimeAgentImpl(V8DebuggerImpl* debugger, int contextGroupId)
-    : m_contextGroupId(contextGroupId)
+    : m_connection(V8InspectorConnectionImpl::create(debugger, contextGroupId))
     , m_state(nullptr)
     , m_frontend(nullptr)
-    , m_injectedScriptManager(InjectedScriptManager::create(debugger))
     , m_debugger(debugger)
     , m_enabled(false)
 {
-    m_debugger->addRuntimeAgent(m_contextGroupId, this);
+    m_debugger->addRuntimeAgent(m_connection->contextGroupId(), this);
 }
 
 V8RuntimeAgentImpl::~V8RuntimeAgentImpl()
 {
-    m_debugger->removeRuntimeAgent(m_contextGroupId);
+    m_debugger->removeRuntimeAgent(m_connection->contextGroupId());
 }
 
 void V8RuntimeAgentImpl::evaluate(
@@ -95,13 +94,12 @@
         *errorString = "Cannot find default execution context";
         return;
     }
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, executionContextId.fromJust());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, executionContextId.fromJust());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(injectedScript->isolate());
-    v8::Local<v8::Context> localContext = injectedScript->context();
-    v8::Context::Scope contextScope(localContext);
+    v8::Context::Scope contextScope(injectedScript->context()->context());
 
     if (!injectedScript->canAccessInspectedWindow()) {
         *errorString = "Can not access given context";
@@ -116,7 +114,7 @@
     v8::MaybeLocal<v8::Value> maybeResultValue = evaluateInternal(injectedScript, doNotPauseOnExceptionsAndMuteConsole.fromMaybe(false), expression, commandLineAPI);
 
     // InjectedScript may be gone after any evaluate call - find it again.
-    injectedScript = m_injectedScriptManager->findInjectedScript(errorString, executionContextId.fromJust());
+    injectedScript = m_connection->findInjectedScript(errorString, executionContextId.fromJust());
     if (!injectedScript)
         return;
 
@@ -135,7 +133,7 @@
 {
     InjectedScript::ScopedGlobalObjectExtension scopeExtension(injectedScript, extension);
     IgnoreExceptionsScope ignoreExceptionsScope(doNotPauseOnExceptionsAndMuteConsole ? m_debugger : nullptr);
-    return m_debugger->compileAndRunInternalScript(injectedScript->context(), toV8String(injectedScript->isolate(), expression));
+    return m_debugger->compileAndRunInternalScript(injectedScript->context()->context(), toV8String(injectedScript->isolate(), expression));
 }
 
 void V8RuntimeAgentImpl::callFunctionOn(ErrorString* errorString,
@@ -152,13 +150,12 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     v8::HandleScope scope(injectedScript->isolate());
-    v8::Local<v8::Context> localContext = injectedScript->context();
-    v8::Context::Scope contextScope(localContext);
+    v8::Context::Scope contextScope(injectedScript->context()->context());
 
     if (!injectedScript->canAccessInspectedWindow()) {
         *errorString = "Can not access given context";
@@ -192,7 +189,7 @@
     v8::TryCatch tryCatch(injectedScript->isolate());
     v8::MaybeLocal<v8::Value> maybeFunctionValue = evaluateInternal(injectedScript, doNotPauseOnExceptionsAndMuteConsole.fromMaybe(false), "(" + expression + ")", remoteObjectAPI);
     // InjectedScript may be gone after any evaluate call - find it again.
-    injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
@@ -207,9 +204,9 @@
         return;
     }
 
-    v8::MaybeLocal<v8::Value> maybeResultValue = m_debugger->callFunction(functionValue.As<v8::Function>(), injectedScript->context(), object, argc, argv.get());
+    v8::MaybeLocal<v8::Value> maybeResultValue = m_debugger->callFunction(functionValue.As<v8::Function>(), injectedScript->context()->context(), object, argc, argv.get());
     // InjectedScript may be gone after any evaluate call - find it again.
-    injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
@@ -231,14 +228,15 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
 
     IgnoreExceptionsScope ignoreExceptionsScope(m_debugger);
 
     v8::HandleScope handles(injectedScript->isolate());
-    v8::Context::Scope scope(injectedScript->context());
+    v8::Local<v8::Context> context = injectedScript->context()->context();
+    v8::Context::Scope scope(context);
     v8::Local<v8::Value> objectValue;
     if (!injectedScript->findObject(errorString, *remoteId, &objectValue))
         return;
@@ -258,10 +256,10 @@
     OwnPtr<protocol::Array<InternalPropertyDescriptor>> propertiesProtocolArray = protocol::Array<InternalPropertyDescriptor>::create();
     for (uint32_t i = 0; i < propertiesArray->Length(); i += 2) {
         v8::Local<v8::Value> name;
-        if (hasInternalError(errorString, !propertiesArray->Get(injectedScript->context(), i).ToLocal(&name)) || !name->IsString())
+        if (hasInternalError(errorString, !propertiesArray->Get(context, i).ToLocal(&name)) || !name->IsString())
             return;
         v8::Local<v8::Value> value;
-        if (hasInternalError(errorString, !propertiesArray->Get(injectedScript->context(), i + 1).ToLocal(&value)))
+        if (hasInternalError(errorString, !propertiesArray->Get(context, i + 1).ToLocal(&value)))
             return;
         OwnPtr<RemoteObject> wrappedValue = injectedScript->wrapObject(errorString, value, objectGroupName);
         if (!wrappedValue)
@@ -280,7 +278,7 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return;
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return;
     bool pausingOnNextStatement = m_debugger->pausingOnNextStatement();
@@ -296,7 +294,7 @@
     bool pausingOnNextStatement = m_debugger->pausingOnNextStatement();
     if (pausingOnNextStatement)
         m_debugger->setPauseOnNextStatement(false);
-    m_injectedScriptManager->releaseObjectGroup(objectGroup);
+    m_connection->releaseObjectGroup(objectGroup);
     if (pausingOnNextStatement)
         m_debugger->setPauseOnNextStatement(true);
 }
@@ -309,7 +307,7 @@
 void V8RuntimeAgentImpl::setCustomObjectFormatterEnabled(ErrorString*, bool enabled)
 {
     m_state->setBoolean(V8RuntimeAgentImplState::customObjectFormatterEnabled, enabled);
-    m_injectedScriptManager->setCustomObjectFormatterEnabled(enabled);
+    m_connection->setCustomObjectFormatterEnabled(enabled);
 }
 
 void V8RuntimeAgentImpl::compileScript(ErrorString* errorString,
@@ -324,15 +322,16 @@
         *errorString = "Runtime agent is not enabled";
         return;
     }
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, executionContextId);
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, executionContextId);
     if (!injectedScript)
         return;
 
     v8::Isolate* isolate = injectedScript->isolate();
     v8::HandleScope handles(isolate);
-    v8::Context::Scope scope(injectedScript->context());
+    v8::Local<v8::Context> context = injectedScript->context()->context();
+    v8::Context::Scope scope(context);
     v8::TryCatch tryCatch(isolate);
-    v8::Local<v8::Script> script = m_debugger->compileInternalScript(injectedScript->context(), toV8String(isolate, expression), sourceURL);
+    v8::Local<v8::Script> script = m_debugger->compileInternalScript(context, toV8String(isolate, expression), sourceURL);
     if (script.IsEmpty()) {
         v8::Local<v8::Message> message = tryCatch.Message();
         if (!message.IsEmpty())
@@ -364,7 +363,7 @@
         *errorString = "Runtime agent is not enabled";
         return;
     }
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, executionContextId);
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, executionContextId);
     if (!injectedScript)
         return;
 
@@ -377,7 +376,7 @@
 
     v8::Isolate* isolate = injectedScript->isolate();
     v8::HandleScope handles(isolate);
-    v8::Local<v8::Context> context = injectedScript->context();
+    v8::Local<v8::Context> context = injectedScript->context()->context();
     v8::Context::Scope scope(context);
     OwnPtr<v8::Global<v8::Script>> scriptWrapper = m_compiledScripts.take(scriptId);
     v8::Local<v8::Script> script = scriptWrapper->Get(isolate);
@@ -397,7 +396,7 @@
     v8::MaybeLocal<v8::Value> maybeResultValue = m_debugger->runCompiledScript(context, script);
 
     // InjectedScript may be gone after any evaluate call - find it again.
-    injectedScript = m_injectedScriptManager->findInjectedScript(errorString, executionContextId);
+    injectedScript = m_connection->findInjectedScript(errorString, executionContextId);
     if (!injectedScript)
         return;
 
@@ -428,17 +427,14 @@
     ErrorString error;
     enable(&error);
     if (m_state->booleanProperty(V8RuntimeAgentImplState::customObjectFormatterEnabled, false))
-        m_injectedScriptManager->setCustomObjectFormatterEnabled(true);
+        m_connection->setCustomObjectFormatterEnabled(true);
 }
 
 void V8RuntimeAgentImpl::enable(ErrorString* errorString)
 {
     m_enabled = true;
     v8::HandleScope handles(m_debugger->isolate());
-    V8ContextInfoVector contexts;
-    m_debugger->client()->contextsToReport(m_contextGroupId, contexts);
-    for (const V8ContextInfo& info : contexts)
-        reportExecutionContextCreated(info);
+    m_connection->reportAllContexts(this);
 }
 
 void V8RuntimeAgentImpl::disable(ErrorString* errorString)
@@ -449,34 +445,29 @@
     reset();
 }
 
-int V8RuntimeAgentImpl::ensureDefaultContextAvailable(v8::Local<v8::Context> context)
-{
-    InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(context);
-    return injectedScript ? injectedScript->contextId() : 0;
-}
-
 void V8RuntimeAgentImpl::setClearConsoleCallback(PassOwnPtr<V8RuntimeAgent::ClearConsoleCallback> callback)
 {
-    m_injectedScriptManager->injectedScriptHost()->setClearConsoleCallback(callback);
+    m_connection->setClearConsoleCallback(callback);
 }
 
 void V8RuntimeAgentImpl::setInspectObjectCallback(PassOwnPtr<V8RuntimeAgent::InspectCallback> callback)
 {
-    m_injectedScriptManager->injectedScriptHost()->setInspectObjectCallback(callback);
+    m_connection->setInspectObjectCallback(callback);
 }
 
 PassOwnPtr<RemoteObject> V8RuntimeAgentImpl::wrapObject(v8::Local<v8::Context> context, v8::Local<v8::Value> value, const String16& groupName, bool generatePreview)
 {
-    InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(context);
+    ErrorString errorString;
+    InjectedScript* injectedScript = m_connection->findInjectedScript(&errorString, V8Debugger::contextId(context));
     if (!injectedScript)
         return nullptr;
-    ErrorString errorString;
     return injectedScript->wrapObject(&errorString, value, groupName, false, generatePreview);
 }
 
 PassOwnPtr<RemoteObject> V8RuntimeAgentImpl::wrapTable(v8::Local<v8::Context> context, v8::Local<v8::Value> table, v8::Local<v8::Value> columns)
 {
-    InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(context);
+    ErrorString errorString;
+    InjectedScript* injectedScript = m_connection->findInjectedScript(&errorString, V8Debugger::contextId(context));
     if (!injectedScript)
         return nullptr;
     return injectedScript->wrapTable(table, columns);
@@ -484,7 +475,7 @@
 
 void V8RuntimeAgentImpl::disposeObjectGroup(const String16& groupName)
 {
-    m_injectedScriptManager->releaseObjectGroup(groupName);
+    m_connection->releaseObjectGroup(groupName);
 }
 
 v8::Local<v8::Value> V8RuntimeAgentImpl::findObject(ErrorString* errorString, const String16& objectId, v8::Local<v8::Context>* context, String16* groupName)
@@ -492,7 +483,7 @@
     OwnPtr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString, objectId);
     if (!remoteId)
         return v8::Local<v8::Value>();
-    InjectedScript* injectedScript = m_injectedScriptManager->findInjectedScript(errorString, remoteId.get());
+    InjectedScript* injectedScript = m_connection->findInjectedScript(errorString, remoteId.get());
     if (!injectedScript)
         return v8::Local<v8::Value>();
     v8::Local<v8::Value> objectValue;
@@ -500,7 +491,7 @@
     if (objectValue.IsEmpty())
         return v8::Local<v8::Value>();
     if (context)
-        *context = injectedScript->context();
+        *context = injectedScript->context()->context();
     if (groupName)
         *groupName = injectedScript->objectGroupName(*remoteId);
     return objectValue;
@@ -508,40 +499,42 @@
 
 void V8RuntimeAgentImpl::addInspectedObject(PassOwnPtr<Inspectable> inspectable)
 {
-    m_injectedScriptManager->injectedScriptHost()->addInspectedObject(inspectable);
+    m_connection->addInspectedObject(inspectable);
 }
 
 void V8RuntimeAgentImpl::reset()
 {
     m_compiledScripts.clear();
-    m_injectedScriptManager->injectedScriptHost()->clearInspectedObjects();
-    m_injectedScriptManager->discardInjectedScripts();
-    if (m_enabled)
+    m_connection->resetInjectedScripts();
+    if (m_enabled) {
+        if (const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_connection->contextGroupId())) {
+            for (auto& idContext : *contexts)
+                idContext.second->setReported(false);
+        }
         m_frontend->executionContextsCleared();
+    }
 }
 
-void V8RuntimeAgentImpl::reportExecutionContextCreated(const V8ContextInfo& info)
+void V8RuntimeAgentImpl::reportExecutionContextCreated(InspectedContext* context)
 {
     if (!m_enabled)
         return;
-    int contextId = V8Debugger::contextId(info.context);
+    context->setReported(true);
     OwnPtr<protocol::Runtime::ExecutionContextDescription> description = protocol::Runtime::ExecutionContextDescription::create()
-        .setId(contextId)
-        .setIsDefault(info.isDefault)
-        .setName(info.humanReadableName)
-        .setOrigin(info.origin)
-        .setFrameId(info.frameId).build();
+        .setId(context->contextId())
+        .setIsDefault(context->isDefault())
+        .setName(context->humanReadableName())
+        .setOrigin(context->origin())
+        .setFrameId(context->frameId()).build();
     m_frontend->executionContextCreated(description.release());
-    InjectedScript* injectedScript = m_injectedScriptManager->injectedScriptFor(info.context);
-    if (injectedScript)
-        injectedScript->setOrigin(info.origin);
 }
 
-void V8RuntimeAgentImpl::reportExecutionContextDestroyed(v8::Local<v8::Context> context)
+void V8RuntimeAgentImpl::reportExecutionContextDestroyed(InspectedContext* context)
 {
-    int contextId = m_injectedScriptManager->discardInjectedScriptFor(context);
-    if (m_enabled && contextId)
-        m_frontend->executionContextDestroyed(contextId);
+    if (m_enabled && context->isReported()) {
+        context->setReported(false);
+        m_frontend->executionContextDestroyed(context->contextId());
+    }
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.h b/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.h
index 761f722..b21b728 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8RuntimeAgentImpl.h
@@ -38,9 +38,10 @@
 namespace blink {
 
 class InjectedScript;
-class InjectedScriptManager;
+class InspectedContext;
 class RemoteObjectIdBase;
 class V8DebuggerImpl;
+class V8InspectorConnectionImpl;
 
 namespace protocol {
 class DictionaryValue;
@@ -114,16 +115,14 @@
         Maybe<protocol::Runtime::ExceptionDetails>*) override;
 
     V8DebuggerImpl* debugger() { return m_debugger; }
-    InjectedScriptManager* getInjectedScriptManager() { return m_injectedScriptManager.get(); }
-    int contextGroupId() { return m_contextGroupId; }
+    V8InspectorConnectionImpl* connection() { return m_connection.get(); }
 
     void reset();
-    void reportExecutionContextCreated(const V8ContextInfo&);
-    void reportExecutionContextDestroyed(v8::Local<v8::Context>);
+    void reportExecutionContextCreated(InspectedContext*);
+    void reportExecutionContextDestroyed(InspectedContext*);
 
     void setClearConsoleCallback(PassOwnPtr<ClearConsoleCallback>) override;
     void setInspectObjectCallback(PassOwnPtr<InspectCallback>) override;
-    int ensureDefaultContextAvailable(v8::Local<v8::Context>) override;
     PassOwnPtr<protocol::Runtime::RemoteObject> wrapObject(v8::Local<v8::Context>, v8::Local<v8::Value>, const String16& groupName, bool generatePreview = false) override;
     PassOwnPtr<protocol::Runtime::RemoteObject> wrapTable(v8::Local<v8::Context>, v8::Local<v8::Value> table, v8::Local<v8::Value> columns) override;
     void disposeObjectGroup(const String16&) override;
@@ -133,10 +132,10 @@
 private:
     v8::MaybeLocal<v8::Value> evaluateInternal(InjectedScript*, bool doNotPauseOnExceptionsAndMuteConsole, const String& expression, v8::MaybeLocal<v8::Object> extension);
 
-    int m_contextGroupId;
+    // TODO(dgozman): reverse ownership.
+    OwnPtr<V8InspectorConnectionImpl> m_connection;
     protocol::DictionaryValue* m_state;
     protocol::Frontend::Runtime* m_frontend;
-    OwnPtr<InjectedScriptManager> m_injectedScriptManager;
     V8DebuggerImpl* m_debugger;
     bool m_enabled;
     protocol::HashMap<String16, OwnPtr<v8::Global<v8::Script>>> m_compiledScripts;
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/V8Debugger.h b/third_party/WebKit/Source/platform/v8_inspector/public/V8Debugger.h
index 299eee07..51bb6d2 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/public/V8Debugger.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/public/V8Debugger.h
@@ -40,6 +40,7 @@
 
     virtual void contextCreated(const V8ContextInfo&) = 0;
     virtual void contextDestroyed(v8::Local<v8::Context>) = 0;
+    // TODO(dgozman): remove this one.
     virtual void resetContextGroup(int contextGroupId) = 0;
 
     static v8::Local<v8::Symbol> scopeExtensionSymbol(v8::Isolate*);
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/V8DebuggerClient.h b/third_party/WebKit/Source/platform/v8_inspector/public/V8DebuggerClient.h
index 5e48345..0577b223 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/public/V8DebuggerClient.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/public/V8DebuggerClient.h
@@ -21,7 +21,6 @@
     virtual void muteWarningsAndDeprecations() = 0;
     virtual void unmuteWarningsAndDeprecations() = 0;
     virtual void eventListeners(v8::Local<v8::Value>, V8EventListenerInfoList&) = 0;
-    virtual void contextsToReport(int contextGroupId, V8ContextInfoVector&) = 0;
     virtual bool callingContextCanAccessContext(v8::Local<v8::Context> calling, v8::Local<v8::Context> target) = 0;
     virtual String16 valueSubtype(v8::Local<v8::Value>) = 0;
     virtual bool formatAccessorsAsProperties(v8::Local<v8::Value>) = 0;
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/V8RuntimeAgent.h b/third_party/WebKit/Source/platform/v8_inspector/public/V8RuntimeAgent.h
index 4f965f6..6d2c58c8 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/public/V8RuntimeAgent.h
+++ b/third_party/WebKit/Source/platform/v8_inspector/public/V8RuntimeAgent.h
@@ -34,8 +34,6 @@
     virtual void setClearConsoleCallback(PassOwnPtr<ClearConsoleCallback>) = 0;
     using InspectCallback = Function<void(PassOwnPtr<protocol::Runtime::RemoteObject>, PassOwnPtr<protocol::DictionaryValue>)>;
     virtual void setInspectObjectCallback(PassOwnPtr<InspectCallback>) = 0;
-    // FIXME: remove while preserving the default context evaluation.
-    virtual int ensureDefaultContextAvailable(v8::Local<v8::Context>) = 0;
     virtual PassOwnPtr<protocol::Runtime::RemoteObject> wrapObject(v8::Local<v8::Context>, v8::Local<v8::Value>, const String16& groupName, bool generatePreview = false) = 0;
     // FIXME: remove when console.table moves into V8 inspector.
     virtual PassOwnPtr<protocol::Runtime::RemoteObject> wrapTable(v8::Local<v8::Context>, v8::Local<v8::Value> table, v8::Local<v8::Value> columns) = 0;
diff --git a/third_party/WebKit/Source/web/WebSettingsImpl.cpp b/third_party/WebKit/Source/web/WebSettingsImpl.cpp
index 48f4923..ce73920d 100644
--- a/third_party/WebKit/Source/web/WebSettingsImpl.cpp
+++ b/third_party/WebKit/Source/web/WebSettingsImpl.cpp
@@ -492,11 +492,6 @@
     m_settings->setWebGLEnabled(enabled);
 }
 
-void WebSettingsImpl::setOpenGLMultisamplingEnabled(bool enabled)
-{
-    m_settings->setOpenGLMultisamplingEnabled(enabled);
-}
-
 void WebSettingsImpl::setRenderVSyncNotificationEnabled(bool enabled)
 {
     m_renderVSyncNotificationEnabled = enabled;
diff --git a/third_party/WebKit/Source/web/WebSettingsImpl.h b/third_party/WebKit/Source/web/WebSettingsImpl.h
index dcb5a0ac..8616706 100644
--- a/third_party/WebKit/Source/web/WebSettingsImpl.h
+++ b/third_party/WebKit/Source/web/WebSettingsImpl.h
@@ -123,7 +123,6 @@
     void setMinimumLogicalFontSize(int) override;
     void setMockScrollbarsEnabled(bool) override;
     void setOfflineWebApplicationCacheEnabled(bool) override;
-    void setOpenGLMultisamplingEnabled(bool) override;
     void setPasswordEchoDurationInSeconds(double) override;
     void setPasswordEchoEnabled(bool) override;
     void setPerTilePaintingEnabled(bool) override;
diff --git a/third_party/WebKit/Source/wtf/BUILD.gn b/third_party/WebKit/Source/wtf/BUILD.gn
index 5e85447..90d6caf 100644
--- a/third_party/WebKit/Source/wtf/BUILD.gn
+++ b/third_party/WebKit/Source/wtf/BUILD.gn
@@ -73,7 +73,10 @@
     cflags = [ "/wd4068" ]  # Unknown pragma.
   } else {
     # Non-Windows.
-    sources -= [ "ThreadingWin.cpp" ]
+    sources -= [
+      "ThreadSpecificWin.cpp",
+      "ThreadingWin.cpp",
+    ]
   }
 
   if (is_android) {
diff --git a/third_party/WebKit/Source/wtf/DEPS b/third_party/WebKit/Source/wtf/DEPS
index d3ca278..abbfb758 100644
--- a/third_party/WebKit/Source/wtf/DEPS
+++ b/third_party/WebKit/Source/wtf/DEPS
@@ -6,7 +6,6 @@
     "+base/numerics",
     "+base/rand_util.h",
     "+base/strings",
-    "+base/threading",
     "+base/time/time.h",
     "+base/tuple.h",
     "+build",
diff --git a/third_party/WebKit/Source/wtf/ThreadSpecific.h b/third_party/WebKit/Source/wtf/ThreadSpecific.h
index 36ff656..2e82293b 100644
--- a/third_party/WebKit/Source/wtf/ThreadSpecific.h
+++ b/third_party/WebKit/Source/wtf/ThreadSpecific.h
@@ -42,59 +42,245 @@
 #ifndef WTF_ThreadSpecific_h
 #define WTF_ThreadSpecific_h
 
-#include "base/threading/thread_local_storage.h"
 #include "wtf/Allocator.h"
 #include "wtf/Noncopyable.h"
 #include "wtf/Partitions.h"
+#include "wtf/StdLibExtras.h"
 #include "wtf/WTF.h"
+#include "wtf/WTFExport.h"
+
+#if OS(POSIX)
+#include <pthread.h>
+#elif OS(WIN)
+#include <windows.h>
+#endif
 
 namespace WTF {
 
-template<typename T>
-class ThreadSpecific {
+#if OS(WIN)
+// ThreadSpecificThreadExit should be called each time when a thread is detached.
+// This is done automatically for threads created with WTF::createThread.
+WTF_EXPORT void ThreadSpecificThreadExit();
+#endif
+
+template<typename T> class ThreadSpecific {
     USING_FAST_MALLOC(ThreadSpecific);
     WTF_MAKE_NONCOPYABLE(ThreadSpecific);
 public:
-    ThreadSpecific()
-        : m_slot(&destory)
-    { }
-
-    operator T*() { return get(); }
-    T* operator->() { return get(); }
-    T& operator*() { return *get(); }
+    ThreadSpecific();
+    bool isSet(); // Useful as a fast check to see if this thread has set this value.
+    T* operator->();
+    operator T*();
+    T& operator*();
 
 private:
+#if OS(WIN)
+    WTF_EXPORT friend void ThreadSpecificThreadExit();
+#endif
+
     // Not implemented. It's technically possible to destroy a thread specific key, but one would need
     // to make sure that all values have been destroyed already (usually, that all threads that used it
     // have exited). It's unlikely that any user of this call will be in that situation - and having
     // a destructor defined can be confusing, given that it has such strong pre-requisites to work correctly.
     ~ThreadSpecific();
 
-    T* get()
-    {
-        T* ptr = static_cast<T*>(m_slot.Get());
-        if (!ptr) {
-            // Set up thread-specific value's memory pointer before invoking constructor, in case any function it calls
-            // needs to access the value, to avoid recursion.
-            ptr = static_cast<T*>(Partitions::fastZeroedMalloc(sizeof(T), WTF_HEAP_PROFILER_TYPE_NAME(T)));
-            m_slot.Set(ptr);
-            new (NotNull, ptr) T;
-        }
-        return ptr;
-    }
+    T* get();
+    void set(T*);
+    void static destroy(void* ptr);
 
-    static void destory(void* value)
-    {
-        if (isShutdown())
-            return;
-        T* ptr = static_cast<T*>(value);
-        ptr->~T();
-        Partitions::fastFree(ptr);
-    }
+    struct Data {
+        WTF_MAKE_NONCOPYABLE(Data);
+    public:
+        Data(T* value, ThreadSpecific<T>* owner) : value(value), owner(owner) {}
 
-    base::ThreadLocalStorage::Slot m_slot;
+        T* value;
+        ThreadSpecific<T>* owner;
+#if OS(WIN)
+        void (*destructor)(void*);
+#endif
+    };
+
+#if OS(POSIX)
+    pthread_key_t m_key;
+#elif OS(WIN)
+    int m_index;
+#endif
 };
 
+#if OS(POSIX)
+
+typedef pthread_key_t ThreadSpecificKey;
+
+inline void threadSpecificKeyCreate(ThreadSpecificKey* key, void (*destructor)(void *))
+{
+    int error = pthread_key_create(key, destructor);
+    if (error)
+        CRASH();
+}
+
+inline void threadSpecificKeyDelete(ThreadSpecificKey key)
+{
+    int error = pthread_key_delete(key);
+    if (error)
+        CRASH();
+}
+
+inline void threadSpecificSet(ThreadSpecificKey key, void* value)
+{
+    pthread_setspecific(key, value);
+}
+
+inline void* threadSpecificGet(ThreadSpecificKey key)
+{
+    return pthread_getspecific(key);
+}
+
+template<typename T>
+inline ThreadSpecific<T>::ThreadSpecific()
+{
+    int error = pthread_key_create(&m_key, destroy);
+    if (error)
+        CRASH();
+}
+
+template<typename T>
+inline T* ThreadSpecific<T>::get()
+{
+    Data* data = static_cast<Data*>(pthread_getspecific(m_key));
+    return data ? data->value : 0;
+}
+
+template<typename T>
+inline void ThreadSpecific<T>::set(T* ptr)
+{
+    ASSERT(!get());
+    pthread_setspecific(m_key, new Data(ptr, this));
+}
+
+#elif OS(WIN)
+
+// TLS_OUT_OF_INDEXES is not defined on WinCE.
+#ifndef TLS_OUT_OF_INDEXES
+#define TLS_OUT_OF_INDEXES 0xffffffff
+#endif
+
+// The maximum number of TLS keys that can be created. For simplification, we assume that:
+// 1) Once the instance of ThreadSpecific<> is created, it will not be destructed until the program dies.
+// 2) We do not need to hold many instances of ThreadSpecific<> data. This fixed number should be far enough.
+const int kMaxTlsKeySize = 256;
+
+WTF_EXPORT long& tlsKeyCount();
+WTF_EXPORT DWORD* tlsKeys();
+
+class PlatformThreadSpecificKey;
+typedef PlatformThreadSpecificKey* ThreadSpecificKey;
+
+WTF_EXPORT void threadSpecificKeyCreate(ThreadSpecificKey*, void (*)(void *));
+WTF_EXPORT void threadSpecificKeyDelete(ThreadSpecificKey);
+WTF_EXPORT void threadSpecificSet(ThreadSpecificKey, void*);
+WTF_EXPORT void* threadSpecificGet(ThreadSpecificKey);
+
+template<typename T>
+inline ThreadSpecific<T>::ThreadSpecific()
+    : m_index(-1)
+{
+    DWORD tlsKey = TlsAlloc();
+    if (tlsKey == TLS_OUT_OF_INDEXES)
+        CRASH();
+
+    m_index = InterlockedIncrement(&tlsKeyCount()) - 1;
+    if (m_index >= kMaxTlsKeySize)
+        CRASH();
+    tlsKeys()[m_index] = tlsKey;
+}
+
+template<typename T>
+inline ThreadSpecific<T>::~ThreadSpecific()
+{
+    // Does not invoke destructor functions. They will be called from ThreadSpecificThreadExit when the thread is detached.
+    TlsFree(tlsKeys()[m_index]);
+}
+
+template<typename T>
+inline T* ThreadSpecific<T>::get()
+{
+    Data* data = static_cast<Data*>(TlsGetValue(tlsKeys()[m_index]));
+    return data ? data->value : 0;
+}
+
+template<typename T>
+inline void ThreadSpecific<T>::set(T* ptr)
+{
+    ASSERT(!get());
+    Data* data = new Data(ptr, this);
+    data->destructor = &ThreadSpecific<T>::destroy;
+    TlsSetValue(tlsKeys()[m_index], data);
+}
+
+#else
+#error ThreadSpecific is not implemented for this platform.
+#endif
+
+template<typename T>
+inline void ThreadSpecific<T>::destroy(void* ptr)
+{
+    if (isShutdown())
+        return;
+
+    Data* data = static_cast<Data*>(ptr);
+
+#if OS(POSIX)
+    // We want get() to keep working while data destructor works, because it can be called indirectly by the destructor.
+    // Some pthreads implementations zero out the pointer before calling destroy(), so we temporarily reset it.
+    pthread_setspecific(data->owner->m_key, ptr);
+#endif
+
+    data->value->~T();
+    Partitions::fastFree(data->value);
+
+#if OS(POSIX)
+    pthread_setspecific(data->owner->m_key, 0);
+#elif OS(WIN)
+    TlsSetValue(tlsKeys()[data->owner->m_index], 0);
+#else
+#error ThreadSpecific is not implemented for this platform.
+#endif
+
+    delete data;
+}
+
+template<typename T>
+inline bool ThreadSpecific<T>::isSet()
+{
+    return !!get();
+}
+
+template<typename T>
+inline ThreadSpecific<T>::operator T*()
+{
+    T* ptr = static_cast<T*>(get());
+    if (!ptr) {
+        // Set up thread-specific value's memory pointer before invoking constructor, in case any function it calls
+        // needs to access the value, to avoid recursion.
+        ptr = static_cast<T*>(Partitions::fastZeroedMalloc(sizeof(T), WTF_HEAP_PROFILER_TYPE_NAME(T)));
+        set(ptr);
+        new (NotNull, ptr) T;
+    }
+    return ptr;
+}
+
+template<typename T>
+inline T* ThreadSpecific<T>::operator->()
+{
+    return operator T*();
+}
+
+template<typename T>
+inline T& ThreadSpecific<T>::operator*()
+{
+    return *operator T*();
+}
+
 } // namespace WTF
 
 using WTF::ThreadSpecific;
diff --git a/third_party/WebKit/Source/wtf/ThreadSpecificWin.cpp b/third_party/WebKit/Source/wtf/ThreadSpecificWin.cpp
new file mode 100644
index 0000000..da2e0d4a
--- /dev/null
+++ b/third_party/WebKit/Source/wtf/ThreadSpecificWin.cpp
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2009 Jian Li <jianli@chromium.org>
+ * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "ThreadSpecific.h"
+
+#if OS(WIN)
+
+#include "StdLibExtras.h"
+#include "ThreadingPrimitives.h"
+#include "wtf/Allocator.h"
+#include "wtf/DoublyLinkedList.h"
+
+namespace WTF {
+
+static DoublyLinkedList<PlatformThreadSpecificKey>& destructorsList()
+{
+    DEFINE_STATIC_LOCAL(DoublyLinkedList<PlatformThreadSpecificKey>, staticList, ());
+    return staticList;
+}
+
+static Mutex& destructorsMutex()
+{
+    DEFINE_STATIC_LOCAL(Mutex, staticMutex, ());
+    return staticMutex;
+}
+
+class PlatformThreadSpecificKey : public DoublyLinkedListNode<PlatformThreadSpecificKey> {
+    USING_FAST_MALLOC(PlatformThreadSpecificKey);
+    WTF_MAKE_NONCOPYABLE(PlatformThreadSpecificKey);
+public:
+    friend class DoublyLinkedListNode<PlatformThreadSpecificKey>;
+
+    PlatformThreadSpecificKey(void (*destructor)(void *))
+        : m_destructor(destructor)
+    {
+        m_tlsKey = TlsAlloc();
+        if (m_tlsKey == TLS_OUT_OF_INDEXES)
+            CRASH();
+    }
+
+    ~PlatformThreadSpecificKey()
+    {
+        TlsFree(m_tlsKey);
+    }
+
+    void setValue(void* data) { TlsSetValue(m_tlsKey, data); }
+    void* value() { return TlsGetValue(m_tlsKey); }
+
+    void callDestructor()
+    {
+        if (void* data = value())
+            m_destructor(data);
+    }
+
+private:
+    void (*m_destructor)(void *);
+    DWORD m_tlsKey;
+    PlatformThreadSpecificKey* m_prev;
+    PlatformThreadSpecificKey* m_next;
+};
+
+long& tlsKeyCount()
+{
+    static long count;
+    return count;
+}
+
+DWORD* tlsKeys()
+{
+    static DWORD keys[kMaxTlsKeySize];
+    return keys;
+}
+
+void threadSpecificKeyCreate(ThreadSpecificKey* key, void (*destructor)(void *))
+{
+    *key = new PlatformThreadSpecificKey(destructor);
+
+    MutexLocker locker(destructorsMutex());
+    destructorsList().push(*key);
+}
+
+void threadSpecificKeyDelete(ThreadSpecificKey key)
+{
+    MutexLocker locker(destructorsMutex());
+    destructorsList().remove(key);
+    delete key;
+}
+
+void threadSpecificSet(ThreadSpecificKey key, void* data)
+{
+    key->setValue(data);
+}
+
+void* threadSpecificGet(ThreadSpecificKey key)
+{
+    return key->value();
+}
+
+void ThreadSpecificThreadExit()
+{
+    for (long i = 0; i < tlsKeyCount(); i++) {
+        // The layout of ThreadSpecific<T>::Data does not depend on T. So we are safe to do the static cast to ThreadSpecific<int> in order to access its data member.
+        ThreadSpecific<int>::Data* data = static_cast<ThreadSpecific<int>::Data*>(TlsGetValue(tlsKeys()[i]));
+        if (data)
+            data->destructor(data);
+    }
+
+    MutexLocker locker(destructorsMutex());
+    PlatformThreadSpecificKey* key = destructorsList().head();
+    while (key) {
+        PlatformThreadSpecificKey* nextKey = key->next();
+        key->callDestructor();
+        key = nextKey;
+    }
+}
+
+} // namespace WTF
+
+#endif // OS(WIN)
diff --git a/third_party/WebKit/Source/wtf/wtf.gypi b/third_party/WebKit/Source/wtf/wtf.gypi
index 5d22539..cb1f4f5f 100644
--- a/third_party/WebKit/Source/wtf/wtf.gypi
+++ b/third_party/WebKit/Source/wtf/wtf.gypi
@@ -108,6 +108,7 @@
             'ThreadRestrictionVerifier.h',
             'ThreadSafeRefCounted.h',
             'ThreadSpecific.h',
+            'ThreadSpecificWin.cpp',
             'Threading.h',
             'ThreadingPrimitives.h',
             'ThreadingPthreads.cpp',
diff --git a/third_party/WebKit/public/web/WebSettings.h b/third_party/WebKit/public/web/WebSettings.h
index 404fc9d7..1eea043 100644
--- a/third_party/WebKit/public/web/WebSettings.h
+++ b/third_party/WebKit/public/web/WebSettings.h
@@ -176,7 +176,6 @@
     virtual void setMinimumLogicalFontSize(int) = 0;
     virtual void setMockScrollbarsEnabled(bool) = 0;
     virtual void setOfflineWebApplicationCacheEnabled(bool) = 0;
-    virtual void setOpenGLMultisamplingEnabled(bool) = 0;
     virtual void setPasswordEchoDurationInSeconds(double) = 0;
     virtual void setPasswordEchoEnabled(bool) = 0;
     virtual void setPerTilePaintingEnabled(bool) = 0;
diff --git a/tools/copyright_scanner/OWNERS b/tools/copyright_scanner/OWNERS
index bf527378..90a3cbe 100644
--- a/tools/copyright_scanner/OWNERS
+++ b/tools/copyright_scanner/OWNERS
@@ -1,3 +1,3 @@
-mnaganov@chromium.org
 phajdan.jr@chromium.org
+sgurun@chromium.org
 torne@chromium.org
diff --git a/tools/json_schema_compiler/cpp_type_generator.py b/tools/json_schema_compiler/cpp_type_generator.py
index 82113ce9..23460c63 100644
--- a/tools/json_schema_compiler/cpp_type_generator.py
+++ b/tools/json_schema_compiler/cpp_type_generator.py
@@ -122,11 +122,9 @@
     if not self.FollowRef(type_).property_type == PropertyType.ENUM:
       is_base_value = (cpp_type == 'base::Value' or
                        cpp_type == 'base::DictionaryValue')
-      # Only wrap the object in a linked_ptr if it's a base::Value.
-      # TODO(devlin): Change this to scoped_ptr.
-      if is_in_container and is_base_value:
-        cpp_type = 'linked_ptr<%s>' % cpp_util.PadForGenerics(cpp_type)
-      elif is_ptr:
+      # Wrap ptrs and base::Values in containers (which aren't movable) in
+      # scoped_ptrs.
+      if is_ptr or (is_in_container and is_base_value):
         cpp_type = 'scoped_ptr<%s>' % cpp_util.PadForGenerics(cpp_type)
 
     return cpp_type
@@ -234,12 +232,9 @@
     if type_.property_type == PropertyType.REF:
       deps.add(_TypeDependency(self._FindType(type_.ref_type), hard=hard))
     elif type_.property_type == PropertyType.ARRAY:
-      # Non-copyable types are not hard because they are wrapped in linked_ptrs
-      # when generated. Otherwise they're typedefs, so they're hard (though we
-      # could generate those typedefs in every dependent namespace, but that
-      # seems weird).
-      deps = self._TypeDependencies(type_.item_type,
-                                    hard=self.IsCopyable(type_.item_type))
+      # Types in containers are hard dependencies because they are stored
+      # directly and use move semantics.
+      deps = self._TypeDependencies(type_.item_type, hard=hard)
     elif type_.property_type == PropertyType.CHOICES:
       for type_ in type_.choices:
         deps |= self._TypeDependencies(type_, hard=self.IsCopyable(type_))
diff --git a/tools/json_schema_compiler/h_generator.py b/tools/json_schema_compiler/h_generator.py
index 31a7ec2..a190eded 100644
--- a/tools/json_schema_compiler/h_generator.py
+++ b/tools/json_schema_compiler/h_generator.py
@@ -57,7 +57,6 @@
       .Append('#include <vector>')
       .Append()
       .Append('#include "base/logging.h"')
-      .Append('#include "base/memory/linked_ptr.h"')
       .Append('#include "base/memory/scoped_ptr.h"')
       .Append('#include "base/values.h"')
       .Cblock(self._type_helper.GenerateIncludes(include_soft=include_soft))
diff --git a/tools/json_schema_compiler/util.cc b/tools/json_schema_compiler/util.cc
index e870c78..c7fc433 100644
--- a/tools/json_schema_compiler/util.cc
+++ b/tools/json_schema_compiler/util.cc
@@ -100,29 +100,29 @@
   return true;
 }
 
-bool PopulateItem(const base::Value& from, linked_ptr<base::Value>* out) {
-  *out = make_linked_ptr(from.DeepCopy());
+bool PopulateItem(const base::Value& from, scoped_ptr<base::Value>* out) {
+  *out = make_scoped_ptr(from.DeepCopy());
   return true;
 }
 
 bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::Value>* out,
+                  scoped_ptr<base::Value>* out,
                   base::string16* error) {
-  *out = make_linked_ptr(from.DeepCopy());
+  *out = make_scoped_ptr(from.DeepCopy());
   return true;
 }
 
 bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::DictionaryValue>* out) {
+                  scoped_ptr<base::DictionaryValue>* out) {
   const base::DictionaryValue* dict = nullptr;
   if (!from.GetAsDictionary(&dict))
     return false;
-  *out = make_linked_ptr(dict->DeepCopy());
+  *out = make_scoped_ptr(dict->DeepCopy());
   return true;
 }
 
 bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::DictionaryValue>* out,
+                  scoped_ptr<base::DictionaryValue>* out,
                   base::string16* error) {
   const base::DictionaryValue* dict = nullptr;
   if (!from.GetAsDictionary(&dict)) {
@@ -133,7 +133,7 @@
                                     ValueTypeToString(from.GetType())));
     return false;
   }
-  *out = make_linked_ptr(dict->DeepCopy());
+  *out = make_scoped_ptr(dict->DeepCopy());
   return true;
 }
 
@@ -158,11 +158,11 @@
       base::BinaryValue::CreateWithCopiedBuffer(from.data(), from.size()));
 }
 
-void AddItemToList(const linked_ptr<base::Value>& from, base::ListValue* out) {
+void AddItemToList(const scoped_ptr<base::Value>& from, base::ListValue* out) {
   out->Append(from->DeepCopy());
 }
 
-void AddItemToList(const linked_ptr<base::DictionaryValue>& from,
+void AddItemToList(const scoped_ptr<base::DictionaryValue>& from,
                    base::ListValue* out) {
   out->Append(static_cast<base::Value*>(from->DeepCopy()));
 }
diff --git a/tools/json_schema_compiler/util.h b/tools/json_schema_compiler/util.h
index d5eec1b2..3365a4f 100644
--- a/tools/json_schema_compiler/util.h
+++ b/tools/json_schema_compiler/util.h
@@ -8,7 +8,6 @@
 #include <string>
 #include <vector>
 
-#include "base/memory/linked_ptr.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/values.h"
 
@@ -18,7 +17,7 @@
 
 // Populates the item |out| from the value |from|. These are used by template
 // specializations of |Get(Optional)ArrayFromList|.
-bool PopulateItem(const base::Value& from, linked_ptr<base::Value>* out);
+bool PopulateItem(const base::Value& from, scoped_ptr<base::Value>* out);
 
 bool PopulateItem(const base::Value& from, int* out);
 bool PopulateItem(const base::Value& from, int* out, base::string16* error);
@@ -35,25 +34,20 @@
                   std::vector<char>* out,
                   base::string16* error);
 bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::Value>* out,
+                  scoped_ptr<base::Value>* out,
                   base::string16* error);
-bool PopulateItem(const base::Value& from, linked_ptr<base::Value>* out);
-bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::DictionaryValue>* out);
-bool PopulateItem(const base::Value& from,
-                  linked_ptr<base::DictionaryValue>* out,
-                  base::string16* error);
+bool PopulateItem(const base::Value& from, scoped_ptr<base::Value>* out);
 
 // This template is used for types generated by tools/json_schema_compiler.
 template <class T>
-bool PopulateItem(const base::Value& from, linked_ptr<T>* out) {
+bool PopulateItem(const base::Value& from, scoped_ptr<T>* out) {
   const base::DictionaryValue* dict = nullptr;
   if (!from.GetAsDictionary(&dict))
     return false;
   scoped_ptr<T> obj(new T());
   if (!T::Populate(*dict, obj.get()))
     return false;
-  *out = linked_ptr<T>(obj.release());
+  *out = scoped_ptr<T>(obj.release());
   return true;
 }
 
@@ -74,7 +68,7 @@
 // error generation enabled.
 template <class T>
 bool PopulateItem(const base::Value& from,
-                  linked_ptr<T>* out,
+                  scoped_ptr<T>* out,
                   base::string16* error) {
   const base::DictionaryValue* dict = nullptr;
   if (!from.GetAsDictionary(&dict))
@@ -82,7 +76,7 @@
   scoped_ptr<T> obj(new T());
   if (!T::Populate(*dict, obj.get(), error))
     return false;
-  *out = linked_ptr<T>(obj.release());
+  *out = scoped_ptr<T>(obj.release());
   return true;
 }
 
@@ -167,14 +161,14 @@
 void AddItemToList(const double from, base::ListValue* out);
 void AddItemToList(const std::string& from, base::ListValue* out);
 void AddItemToList(const std::vector<char>& from, base::ListValue* out);
-void AddItemToList(const linked_ptr<base::Value>& from, base::ListValue* out);
-void AddItemToList(const linked_ptr<base::DictionaryValue>& from,
+void AddItemToList(const scoped_ptr<base::Value>& from, base::ListValue* out);
+void AddItemToList(const scoped_ptr<base::DictionaryValue>& from,
                    base::ListValue* out);
 
 // This template is used for types generated by tools/json_schema_compiler.
 template <class T>
-void AddItemToList(const linked_ptr<T>& from, base::ListValue* out) {
-  out->Append(from->ToValue().release());
+void AddItemToList(const scoped_ptr<T>& from, base::ListValue* out) {
+  out->Append(from->ToValue());
 }
 
 // This template is used for types generated by tools/json_schema_compiler.
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 7622ec8..d15985f 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -2582,6 +2582,18 @@
   <description>Please enter the description of the metric.</description>
 </action>
 
+<action name="CustomTabsRemoteViewsShown">
+  <owner>ianwen@chromium.org</owner>
+  <description>A RemoteViews based bottom bar was shown.</description>
+</action>
+
+<action name="CustomTabsRemoteViewsUpdated">
+  <owner>ianwen@chromium.org</owner>
+  <description>
+    A RemoteViews based bottom bar was updated through service API.
+  </description>
+</action>
+
 <action name="Cut">
   <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
   <description>Please enter the description of this user action.</description>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 7d91471..4b6478c 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -34434,6 +34434,34 @@
   </summary>
 </histogram>
 
+<histogram name="PageLoad.Timing2.ParseBlockedOnScriptLoad" units="ms">
+  <owner>bmcquade@chromium.org</owner>
+  <owner>csharrison@chromium.org</owner>
+  <summary>
+    Measures the time that the HTML parser spent blocked on the load of scripts,
+    for main frame documents that started parsing.
+  </summary>
+</histogram>
+
+<histogram name="PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete"
+    units="ms">
+  <owner>bmcquade@chromium.org</owner>
+  <owner>csharrison@chromium.org</owner>
+  <summary>
+    Measures the time that the HTML parser spent blocked on the load of scripts,
+    for main frame documents that finished parsing.
+  </summary>
+</histogram>
+
+<histogram name="PageLoad.Timing2.ParseDuration" units="ms">
+  <owner>bmcquade@chromium.org</owner>
+  <owner>csharrison@chromium.org</owner>
+  <summary>
+    Measures the time that the HTML parser was active, for main frame documents
+    that finished parsing.
+  </summary>
+</histogram>
+
 <histogram name="PartitionAlloc.CommittedSize" units="MB">
   <owner>haraken@chromium.org</owner>
   <summary>
@@ -52233,6 +52261,14 @@
   </summary>
 </histogram>
 
+<histogram name="Sync.ResolveConflict" enum="SyncConflictResolutions">
+  <owner>maxbogue@chromium.org</owner>
+  <summary>
+    Enumeration of types of conflict resolutions. Recorded every time a conflict
+    is resolved for a data type that has been converted to USS.
+  </summary>
+</histogram>
+
 <histogram name="Sync.ResolveSimpleConflict"
     enum="SyncSimpleConflictResolutions">
   <owner>zea@chromium.org</owner>
@@ -84142,6 +84178,17 @@
   <int value="6" label="RUNTIME_ERROR"/>
 </enum>
 
+<enum name="SyncConflictResolutions" type="int">
+  <summary>
+    Sync conflict resolutions. The codes are listed in conflict_resolution.h,
+    and correspond to all the different ways a sync conflict can be resolved.
+  </summary>
+  <int value="0" label="Changes match"/>
+  <int value="1" label="Use local"/>
+  <int value="2" label="Use remote"/>
+  <int value="3" label="Use new"/>
+</enum>
+
 <enum name="SyncCryptographerPendingKeysState" type="int">
   <int value="0" label="Does not have pending keys"/>
   <int value="1" label="Has pending keys"/>
@@ -89956,11 +90003,16 @@
   <affected-histogram name="PageLoad.Timing2.NavigationToFirstPaint"/>
   <affected-histogram name="PageLoad.Timing2.NavigationToFirstTextPaint"/>
   <affected-histogram name="PageLoad.Timing2.NavigationToLoadEventFired"/>
+  <affected-histogram name="PageLoad.Timing2.ParseBlockedOnScriptLoad"/>
+  <affected-histogram
+      name="PageLoad.Timing2.ParseBlockedOnScriptLoad.ParseComplete"/>
+  <affected-histogram name="PageLoad.Timing2.ParseDuration"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="PageLoadEventConditions" separator=".">
   <suffix name="BeforeCommit"/>
   <suffix name="AfterCommit.BeforePaint"/>
+  <suffix name="DuringParse"/>
   <affected-histogram name="PageLoad.AbortTiming.Close"/>
   <affected-histogram name="PageLoad.AbortTiming.ForwardBackNavigation"/>
   <affected-histogram name="PageLoad.AbortTiming.NewNavigation"/>
diff --git a/tools/perf/benchmarks/oortonline.py b/tools/perf/benchmarks/oortonline.py
index f9b483d..fdda6ca 100644
--- a/tools/perf/benchmarks/oortonline.py
+++ b/tools/perf/benchmarks/oortonline.py
@@ -33,6 +33,7 @@
 
 
 @benchmark.Disabled('android')
+@benchmark.Disabled('mac', 'win')  # crbug.com/599416
 class OortOnline(perf_benchmark.PerfBenchmark):
   """OortOnline benchmark that measures WebGL and V8 performance.
   URL: http://oortonline.gl/#run
diff --git a/tools/perf/benchmarks/system_health.py b/tools/perf/benchmarks/system_health.py
new file mode 100644
index 0000000..e31cd93
--- /dev/null
+++ b/tools/perf/benchmarks/system_health.py
@@ -0,0 +1,46 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from core import perf_benchmark
+from telemetry.timeline import tracing_category_filter
+from telemetry.web_perf import timeline_based_measurement
+import page_sets
+
+class _SystemHealthBenchmark(perf_benchmark.PerfBenchmark):
+  TRACING_CATEGORIES = [
+    'benchmark',
+    'navigation',
+    'blink.user_timing',
+  ]
+
+  def CreateTimelineBasedMeasurementOptions(self):
+    options = timeline_based_measurement.Options()
+    options.config.SetTracingCategoryFilter(
+        tracing_category_filter.TracingCategoryFilter(','.join(
+            self.TRACING_CATEGORIES)))
+    options.SetTimelineBasedMetric('SystemHealthMetrics')
+    return options
+
+  @classmethod
+  def ShouldDisable(cls, browser):
+    # http://crbug.com/600463
+    galaxy_s5_type_name = 'SM-G900H'
+    return browser.platform.GetDeviceTypeName() == galaxy_s5_type_name
+
+
+class SystemHealthTop25(_SystemHealthBenchmark):
+  page_set = page_sets.Top25PageSet
+
+  @classmethod
+  def Name(cls):
+    return 'system_health.top25'
+
+
+class SystemHealthKeyMobileSites(_SystemHealthBenchmark):
+  page_set = page_sets.KeyMobileSitesPageSet
+
+  @classmethod
+  def Name(cls):
+    return 'system_health.key_mobile_sites'
+
diff --git a/tools/perf/page_sets/typical_25.py b/tools/perf/page_sets/typical_25.py
index 04177d0aa..f871ede 100644
--- a/tools/perf/page_sets/typical_25.py
+++ b/tools/perf/page_sets/typical_25.py
@@ -5,7 +5,6 @@
 import shutil
 
 from profile_creators import profile_generator
-from profile_creators import small_profile_extender
 from telemetry.page import page as page_module
 from telemetry.page import shared_page_state
 from telemetry import story
@@ -20,6 +19,7 @@
   def __init__(self, test, finder_options, story_set):
     super(Typical25ProfileSharedState, self).__init__(
         test, finder_options, story_set)
+    from profile_creators import small_profile_extender
     generator = profile_generator.ProfileGenerator(
         small_profile_extender.SmallProfileExtender,
         'small_profile')
diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt
index a5bb300..9d5b4ad 100644
--- a/tools/valgrind/memcheck/suppressions.txt
+++ b/tools/valgrind/memcheck/suppressions.txt
@@ -3144,3 +3144,15 @@
    ...
    fun:_ZN4base4BindIMN7content21ChromeAppCacheServiceEFvRKNS_8FilePathEPNS1_15ResourceContextEPN3net23URLRequestContextGetterE13scoped_refptrIN7storage20SpecialStoragePolicyEEEJPS2_S3_S7_SB_IS9_ESE_EEENS_8CallbackINS_8internal22MakeUnboundRunTypeImplIT_JDpT0_EE4TypeEEESM_DpOSN_
 }
+{
+   bug_600484
+   Memcheck:Leak
+   fun:_Znw*
+   fun:_ZN4mojo3edk2js13HandleWrapper6Create*
+   fun:_ZN3gin9ConverterIN4mojo6Handle*
+   fun:_ZN3gin11ConvertToV8IN4mojo6Handle*
+   fun:_ZN3gin10ToV8TraitsIN4mojo6HandleELb0EE14TryConvertToV8*
+   fun:_ZN3gin14TryConvertToV8IN4mojo6Handle*
+   fun:_ZN3gin10Dictionary3SetIN4mojo6Handle*
+   fun:_ZN4mojo3edk2js12_GLOBAL__N_114CreateDataPipe*
+}
diff --git a/ui/android/java/strings/translations/android_ui_strings_am.xtb b/ui/android/java/strings/translations/android_ui_strings_am.xtb
index d5a3c946..71eb495a 100644
--- a/ui/android/java/strings/translations/android_ui_strings_am.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_am.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">ሰከንድ</translation>
 <translation id="4842092870884894799">የይለፍ ቃል ማመንጨት ብቅ ይን በማሳየት ላይ</translation>
 <translation id="4932733599132424254">ቀን</translation>
+<translation id="550684401320795253">Chromeን ​​በማዘመን ላይ...</translation>
 <translation id="5779929835642192302">የሚገኙ የአስተያየት ጥቆማዎች</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">ቢጫ</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ar.xtb b/ui/android/java/strings/translations/android_ui_strings_ar.xtb
index c22e9bc..a402437 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ar.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ar.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">الثواني</translation>
 <translation id="4842092870884894799">عرض نافذة إنشاء كلمة المرور المنبثقة</translation>
 <translation id="4932733599132424254">التاريخ</translation>
+<translation id="550684401320795253">‏جارٍ تحديث Chrome...</translation>
 <translation id="5779929835642192302">الاقتراحات المتاحة</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">أصفر</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_bg.xtb b/ui/android/java/strings/translations/android_ui_strings_bg.xtb
index ed3bc82..14c242c4 100644
--- a/ui/android/java/strings/translations/android_ui_strings_bg.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_bg.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Секунда</translation>
 <translation id="4842092870884894799">Изскачащият прозорец за генериране на пароли е показан</translation>
 <translation id="4932733599132424254">Дата</translation>
+<translation id="550684401320795253">Chrome се актуализира...</translation>
 <translation id="5779929835642192302">Налице са предложения</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">жълто</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ca.xtb b/ui/android/java/strings/translations/android_ui_strings_ca.xtb
index 055a03e1..8d455b2 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ca.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ca.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segon</translation>
 <translation id="4842092870884894799">Es mostra la finestra emergent de generació de contrasenyes</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">S'està actualitzant Chrome…</translation>
 <translation id="5779929835642192302">Suggeriments disponibles</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Groc</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_cs.xtb b/ui/android/java/strings/translations/android_ui_strings_cs.xtb
index 90e34fc..174a1a0 100644
--- a/ui/android/java/strings/translations/android_ui_strings_cs.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_cs.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunda</translation>
 <translation id="4842092870884894799">Je zobrazeno vyskakovací okno generování hesla</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Aktualizace Chromu...</translation>
 <translation id="5779929835642192302">Jsou k dispozici návrhy</translation>
 <translation id="5789643057113097023">,</translation>
 <translation id="5901630391730855834">Žlutá</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_da.xtb b/ui/android/java/strings/translations/android_ui_strings_da.xtb
index 3ed45aee..4e8a934f 100644
--- a/ui/android/java/strings/translations/android_ui_strings_da.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_da.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekund</translation>
 <translation id="4842092870884894799">Viser pop op for generering af adgangskoder</translation>
 <translation id="4932733599132424254">Dato</translation>
+<translation id="550684401320795253">Opdaterer Chrome...</translation>
 <translation id="5779929835642192302">Tilgængelige forslag</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Gul</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_de.xtb b/ui/android/java/strings/translations/android_ui_strings_de.xtb
index 48a8e1f2..f284091c 100644
--- a/ui/android/java/strings/translations/android_ui_strings_de.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_de.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunde</translation>
 <translation id="4842092870884894799">Pop-up-Fenster zur Passwortgenerierung wird angezeigt.</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Chrome wird aktualisiert...</translation>
 <translation id="5779929835642192302">Vorschläge verfügbar</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Gelb</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_el.xtb b/ui/android/java/strings/translations/android_ui_strings_el.xtb
index 5c56cc84..5fc7185 100644
--- a/ui/android/java/strings/translations/android_ui_strings_el.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_el.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Δευτερόλεπτο</translation>
 <translation id="4842092870884894799">Εμφάνιση αναδυόμενου παραθύρου δημιουργίας κωδικού πρόσβασης</translation>
 <translation id="4932733599132424254">Ημερομηνία</translation>
+<translation id="550684401320795253">Ενημέρωση του Chrome…</translation>
 <translation id="5779929835642192302">Διαθέσιμες προτάσεις</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Κίτρινο</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_en-GB.xtb b/ui/android/java/strings/translations/android_ui_strings_en-GB.xtb
index d2cce9f..1cb9d3ad 100644
--- a/ui/android/java/strings/translations/android_ui_strings_en-GB.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_en-GB.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Second</translation>
 <translation id="4842092870884894799">Showing password generation pop-up</translation>
 <translation id="4932733599132424254">Date</translation>
+<translation id="550684401320795253">Updating Chrome...</translation>
 <translation id="5779929835642192302">Suggestions available</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Yellow</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_es-419.xtb b/ui/android/java/strings/translations/android_ui_strings_es-419.xtb
index d0292ab5..c084cf0 100644
--- a/ui/android/java/strings/translations/android_ui_strings_es-419.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_es-419.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segundo</translation>
 <translation id="4842092870884894799">Mostrando mensaje emergente de generación de contraseña</translation>
 <translation id="4932733599132424254">Fecha</translation>
+<translation id="550684401320795253">Actualizando Chrome...</translation>
 <translation id="5779929835642192302">Sugerencias disponibles</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Amarillo</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_es.xtb b/ui/android/java/strings/translations/android_ui_strings_es.xtb
index 63a771c..3d3c379 100644
--- a/ui/android/java/strings/translations/android_ui_strings_es.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_es.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segundo</translation>
 <translation id="4842092870884894799">Mostrando la ventana emergente de generación de contraseña</translation>
 <translation id="4932733599132424254">Fecha</translation>
+<translation id="550684401320795253">Actualizando Chrome...</translation>
 <translation id="5779929835642192302">Sugerencias disponibles</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Amarillo</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_fa.xtb b/ui/android/java/strings/translations/android_ui_strings_fa.xtb
index 7fc325e..b93912f 100644
--- a/ui/android/java/strings/translations/android_ui_strings_fa.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_fa.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">ثانیه</translation>
 <translation id="4842092870884894799">نمایش پنجره تولید گذرواژه</translation>
 <translation id="4932733599132424254">تاریخ</translation>
+<translation id="550684401320795253">‏درحال به‌روزرسانی Chrome...</translation>
 <translation id="5779929835642192302">پیشنهادهایی در دسترس هستند</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">زرد</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_fi.xtb b/ui/android/java/strings/translations/android_ui_strings_fi.xtb
index 599844ca..93da9e1 100644
--- a/ui/android/java/strings/translations/android_ui_strings_fi.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_fi.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunti</translation>
 <translation id="4842092870884894799">Salasanojen luomisen ponnahdusikkuna on näkyvissä.</translation>
 <translation id="4932733599132424254">Päiväys</translation>
+<translation id="550684401320795253">Päivitetään Chromea…</translation>
 <translation id="5779929835642192302">Ehdotuksia on saatavilla.</translation>
 <translation id="5789643057113097023">,</translation>
 <translation id="5901630391730855834">Keltainen</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_fil.xtb b/ui/android/java/strings/translations/android_ui_strings_fil.xtb
index 7059e85..c476e813 100644
--- a/ui/android/java/strings/translations/android_ui_strings_fil.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_fil.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segundo</translation>
 <translation id="4842092870884894799">Ipinapakita ang popup para sa pagbuo ng password</translation>
 <translation id="4932733599132424254">Petsa</translation>
+<translation id="550684401320795253">Ina-update ang Chrome...</translation>
 <translation id="5779929835642192302">May available na mga suhestyon</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Dilaw</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_fr.xtb b/ui/android/java/strings/translations/android_ui_strings_fr.xtb
index 221f397..a463667 100644
--- a/ui/android/java/strings/translations/android_ui_strings_fr.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_fr.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Seconde</translation>
 <translation id="4842092870884894799">Affichage de la fenêtre contextuelle de génération de mot de passe</translation>
 <translation id="4932733599132424254">Date</translation>
+<translation id="550684401320795253">Mise à jour de Chrome…</translation>
 <translation id="5779929835642192302">Suggestions disponibles</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Jaune</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_hi.xtb b/ui/android/java/strings/translations/android_ui_strings_hi.xtb
index 95d092f..aaa9d08 100644
--- a/ui/android/java/strings/translations/android_ui_strings_hi.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_hi.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">सेकंड</translation>
 <translation id="4842092870884894799">पासवर्ड जेनरेशन पॉपअप दिखाया जा रहा है</translation>
 <translation id="4932733599132424254">दिनांक</translation>
+<translation id="550684401320795253">Chrome अपडेट किया जा रहा है...</translation>
 <translation id="5779929835642192302">सुझाव उपलब्ध हैं</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">पीला</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_hr.xtb b/ui/android/java/strings/translations/android_ui_strings_hr.xtb
index 5ab53be..8bd1a4a 100644
--- a/ui/android/java/strings/translations/android_ui_strings_hr.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_hr.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">sekunda</translation>
 <translation id="4842092870884894799">Prikazuje se skočni prozor generiranja zaporke</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Ažuriranje Chromea...</translation>
 <translation id="5779929835642192302">Dostupni su prijedlozi</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Žuta</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_hu.xtb b/ui/android/java/strings/translations/android_ui_strings_hu.xtb
index 3f24862c..1e670a9 100644
--- a/ui/android/java/strings/translations/android_ui_strings_hu.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_hu.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Másodperc</translation>
 <translation id="4842092870884894799">Jelszógenerálás előugró ablakának megjelenítése</translation>
 <translation id="4932733599132424254">Dátum</translation>
+<translation id="550684401320795253">A Chrome frissítése…</translation>
 <translation id="5779929835642192302">Javaslatok állnak rendelkezésre</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Sárga</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_id.xtb b/ui/android/java/strings/translations/android_ui_strings_id.xtb
index 2b620d9..ec1a457 100644
--- a/ui/android/java/strings/translations/android_ui_strings_id.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_id.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Detik</translation>
 <translation id="4842092870884894799">Menampilkan munculan pembuatan sandi</translation>
 <translation id="4932733599132424254">Tanggal</translation>
+<translation id="550684401320795253">Memperbarui Chrome...</translation>
 <translation id="5779929835642192302">Saran yang tersedia</translation>
 <translation id="5789643057113097023">:</translation>
 <translation id="5901630391730855834">Kuning</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_it.xtb b/ui/android/java/strings/translations/android_ui_strings_it.xtb
index 40ac52b..1c8ba153 100644
--- a/ui/android/java/strings/translations/android_ui_strings_it.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_it.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Secondo</translation>
 <translation id="4842092870884894799">È mostrato il popup di generazione della password</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">Aggiornamento di Chrome...</translation>
 <translation id="5779929835642192302">Suggerimenti disponibili</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Giallo</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_iw.xtb b/ui/android/java/strings/translations/android_ui_strings_iw.xtb
index 6e2db0df..81552cb 100644
--- a/ui/android/java/strings/translations/android_ui_strings_iw.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_iw.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">שנייה</translation>
 <translation id="4842092870884894799">מציג את החלון הקופץ של יצירת סיסמה</translation>
 <translation id="4932733599132424254">תאריך</translation>
+<translation id="550684401320795253">‏מעדכן את Chrome...</translation>
 <translation id="5779929835642192302">הצעות זמינות</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">צהוב</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ja.xtb b/ui/android/java/strings/translations/android_ui_strings_ja.xtb
index 27383c2..6dfef1d 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ja.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ja.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">秒</translation>
 <translation id="4842092870884894799">パスワード作成のポップアップを表示しています</translation>
 <translation id="4932733599132424254">日付</translation>
+<translation id="550684401320795253">Chrome を更新しています...</translation>
 <translation id="5779929835642192302">候補があります</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">黄</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ko.xtb b/ui/android/java/strings/translations/android_ui_strings_ko.xtb
index 0f0836e..af65e3a 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ko.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ko.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">초</translation>
 <translation id="4842092870884894799">비밀번호 생성 팝업 표시</translation>
 <translation id="4932733599132424254">날짜</translation>
+<translation id="550684401320795253">Chrome 업데이트 중...</translation>
 <translation id="5779929835642192302">제안 사용 가능</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">노란색</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_lt.xtb b/ui/android/java/strings/translations/android_ui_strings_lt.xtb
index 19fc6133..974143b 100644
--- a/ui/android/java/strings/translations/android_ui_strings_lt.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_lt.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekundė</translation>
 <translation id="4842092870884894799">Rodomas slaptažodžio generavimo iššokantysis langas</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">Atnaujinama „Chrome“...</translation>
 <translation id="5779929835642192302">Pasiekiami pasiūlymai</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Geltona</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_lv.xtb b/ui/android/java/strings/translations/android_ui_strings_lv.xtb
index 4cd59840..bad8a1d 100644
--- a/ui/android/java/strings/translations/android_ui_strings_lv.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_lv.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekundes</translation>
 <translation id="4842092870884894799">Tiek rādīts paroles ģenerēšanas uznirstošais logs</translation>
 <translation id="4932733599132424254">Datums</translation>
+<translation id="550684401320795253">Notiek Chrome atjaunināšana...</translation>
 <translation id="5779929835642192302">Pieejami ieteikumi</translation>
 <translation id="5789643057113097023">:</translation>
 <translation id="5901630391730855834">Dzeltena</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_nl.xtb b/ui/android/java/strings/translations/android_ui_strings_nl.xtb
index 76222a6..b68b6e0 100644
--- a/ui/android/java/strings/translations/android_ui_strings_nl.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_nl.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Seconde</translation>
 <translation id="4842092870884894799">Pop-upvenster voor wachtwoord genereren wordt weergegeven</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Chrome updaten...</translation>
 <translation id="5779929835642192302">Beschikbare suggesties</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Geel</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_pl.xtb b/ui/android/java/strings/translations/android_ui_strings_pl.xtb
index 826cd88..24be2f2 100644
--- a/ui/android/java/strings/translations/android_ui_strings_pl.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_pl.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunda</translation>
 <translation id="4842092870884894799">Pokazuję wyskakujące okienko generowania hasła</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">Aktualizuję Chrome...</translation>
 <translation id="5779929835642192302">Dostępne są sugestie</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Żółty</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_pt-BR.xtb b/ui/android/java/strings/translations/android_ui_strings_pt-BR.xtb
index f557307..c19ae59 100644
--- a/ui/android/java/strings/translations/android_ui_strings_pt-BR.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_pt-BR.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segundo</translation>
 <translation id="4842092870884894799">Mostrando pop-up da criação de senhas</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">Atualizando o Chrome…</translation>
 <translation id="5779929835642192302">Sugestões disponíveis</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Amarelo</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_pt-PT.xtb b/ui/android/java/strings/translations/android_ui_strings_pt-PT.xtb
index 0d37c92f..9abd420 100644
--- a/ui/android/java/strings/translations/android_ui_strings_pt-PT.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_pt-PT.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Segundo</translation>
 <translation id="4842092870884894799">A mostrar pop-up de geração de palavra-passe</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">A atualizar o Chrome...</translation>
 <translation id="5779929835642192302">Sugestões disponíveis</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Amarelo</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ro.xtb b/ui/android/java/strings/translations/android_ui_strings_ro.xtb
index 46b2116..578b5215 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ro.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ro.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Secundă</translation>
 <translation id="4842092870884894799">Fereastra pop-up pentru generarea parolelor este afișată</translation>
 <translation id="4932733599132424254">Data</translation>
+<translation id="550684401320795253">Se actualizează Chrome...</translation>
 <translation id="5779929835642192302">Sugestii disponibile</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Galben</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_ru.xtb b/ui/android/java/strings/translations/android_ui_strings_ru.xtb
index b6d8d47..56ef336 100644
--- a/ui/android/java/strings/translations/android_ui_strings_ru.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_ru.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Секунды</translation>
 <translation id="4842092870884894799">Открыто всплывающее окно создания пароля</translation>
 <translation id="4932733599132424254">Дата</translation>
+<translation id="550684401320795253">Chrome обновляется…</translation>
 <translation id="5779929835642192302">Доступны подходящие варианты</translation>
 <translation id="5789643057113097023">:</translation>
 <translation id="5901630391730855834">Желтый</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_sk.xtb b/ui/android/java/strings/translations/android_ui_strings_sk.xtb
index 8d8506af..b75440e 100644
--- a/ui/android/java/strings/translations/android_ui_strings_sk.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_sk.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunda</translation>
 <translation id="4842092870884894799">Zobrazuje sa okno generovania hesiel</translation>
 <translation id="4932733599132424254">Dátum</translation>
+<translation id="550684401320795253">Prebieha aktualizácia Chromu…</translation>
 <translation id="5779929835642192302">Sú k dispozícii návrhy</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Žltá</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_sl.xtb b/ui/android/java/strings/translations/android_ui_strings_sl.xtb
index 392a1fc..11759912 100644
--- a/ui/android/java/strings/translations/android_ui_strings_sl.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_sl.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunda</translation>
 <translation id="4842092870884894799">Prikaz pojavnega okna za ustvarjanje gesel</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Posodabljanje Chroma ...</translation>
 <translation id="5779929835642192302">Predlogi so na voljo</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Rumena</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_sr.xtb b/ui/android/java/strings/translations/android_ui_strings_sr.xtb
index 2f0ef99..1c0a852 100644
--- a/ui/android/java/strings/translations/android_ui_strings_sr.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_sr.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Секунд</translation>
 <translation id="4842092870884894799">Приказивање искачућег прозора за генерисање лозинке</translation>
 <translation id="4932733599132424254">Датум</translation>
+<translation id="550684401320795253">Ажурирамо Chrome…</translation>
 <translation id="5779929835642192302">Доступни су предлози</translation>
 <translation id="5789643057113097023">,</translation>
 <translation id="5901630391730855834">Жута</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_sv.xtb b/ui/android/java/strings/translations/android_ui_strings_sv.xtb
index cd8cf5a..aeca87ec 100644
--- a/ui/android/java/strings/translations/android_ui_strings_sv.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_sv.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekund</translation>
 <translation id="4842092870884894799">Visar popupfönster för lösenordsgenerering</translation>
 <translation id="4932733599132424254">Datum</translation>
+<translation id="550684401320795253">Chrome uppdateras …</translation>
 <translation id="5779929835642192302">Förslag tillgängliga</translation>
 <translation id="5789643057113097023">,</translation>
 <translation id="5901630391730855834">Gul</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_sw.xtb b/ui/android/java/strings/translations/android_ui_strings_sw.xtb
index 0a3e5fc..96a80440 100644
--- a/ui/android/java/strings/translations/android_ui_strings_sw.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_sw.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Sekunde</translation>
 <translation id="4842092870884894799">Inaonyesha dirisha ibukizi la uundaji wa nenosiri</translation>
 <translation id="4932733599132424254">Tarehe</translation>
+<translation id="550684401320795253">Inasasisha Chrome...</translation>
 <translation id="5779929835642192302">Mapendekezo yanapatikana</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Manjano</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_th.xtb b/ui/android/java/strings/translations/android_ui_strings_th.xtb
index 9477884..32fe33e 100644
--- a/ui/android/java/strings/translations/android_ui_strings_th.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_th.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">วินาที</translation>
 <translation id="4842092870884894799">กำลังแสดงป๊อปอัปการสร้างรหัสผ่าน</translation>
 <translation id="4932733599132424254">วันที่</translation>
+<translation id="550684401320795253">กำลังอัปเดต Chrome...</translation>
 <translation id="5779929835642192302">มีคำแนะนำ</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">สีเหลือง</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_tr.xtb b/ui/android/java/strings/translations/android_ui_strings_tr.xtb
index 5107afd..5d406bc3 100644
--- a/ui/android/java/strings/translations/android_ui_strings_tr.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_tr.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Saniye</translation>
 <translation id="4842092870884894799">Şifre oluşturma pop-up'ı gösteriliyor</translation>
 <translation id="4932733599132424254">Tarih</translation>
+<translation id="550684401320795253">Chrome güncelleniyor...</translation>
 <translation id="5779929835642192302">Öneri mevcut</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Sarı</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_uk.xtb b/ui/android/java/strings/translations/android_ui_strings_uk.xtb
index c52cf35a..131e9ae 100644
--- a/ui/android/java/strings/translations/android_ui_strings_uk.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_uk.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Секунди</translation>
 <translation id="4842092870884894799">Показ спливаючих вікон для створення пароля</translation>
 <translation id="4932733599132424254">Дата</translation>
+<translation id="550684401320795253">Оновлення Chrome…</translation>
 <translation id="5779929835642192302">Є пропозиції</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Жовтий</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_vi.xtb b/ui/android/java/strings/translations/android_ui_strings_vi.xtb
index 1d14862..a1b71f8f 100644
--- a/ui/android/java/strings/translations/android_ui_strings_vi.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_vi.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">Giây</translation>
 <translation id="4842092870884894799">Hiển thị cửa sổ bật lên tạo mật khẩu</translation>
 <translation id="4932733599132424254">Ngày Tháng</translation>
+<translation id="550684401320795253">Đang cập nhật Chrome...</translation>
 <translation id="5779929835642192302">Có đề xuất</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">Vàng</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_zh-CN.xtb b/ui/android/java/strings/translations/android_ui_strings_zh-CN.xtb
index 7a30df9..fe5d0c0 100644
--- a/ui/android/java/strings/translations/android_ui_strings_zh-CN.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_zh-CN.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">秒</translation>
 <translation id="4842092870884894799">目前显示的是密码生成弹出式窗口</translation>
 <translation id="4932733599132424254">日期</translation>
+<translation id="550684401320795253">正在更新 Chrome…</translation>
 <translation id="5779929835642192302">有自动填充建议</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">黄色</translation>
diff --git a/ui/android/java/strings/translations/android_ui_strings_zh-TW.xtb b/ui/android/java/strings/translations/android_ui_strings_zh-TW.xtb
index d82f731b..3c8eca040 100644
--- a/ui/android/java/strings/translations/android_ui_strings_zh-TW.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_zh-TW.xtb
@@ -17,6 +17,7 @@
 <translation id="4768459022382175196">秒</translation>
 <translation id="4842092870884894799">目前顯示的是密碼產生彈出式視窗</translation>
 <translation id="4932733599132424254">日期</translation>
+<translation id="550684401320795253">正在更新 Chrome...</translation>
 <translation id="5779929835642192302">有自動填入建議</translation>
 <translation id="5789643057113097023">.</translation>
 <translation id="5901630391730855834">黃色</translation>
diff --git a/ui/base/OWNERS b/ui/base/OWNERS
index b444384..b6ad79f1 100644
--- a/ui/base/OWNERS
+++ b/ui/base/OWNERS
@@ -2,6 +2,8 @@
 per-file *.isolate=tandrii@chromium.org
 per-file *.isolate=vadimsh@chromium.org
 
+per-file template_expressions*=dschuyler@chromium.org
+
 # If you're doing structural changes get a review from one of the ui/OWNERS.
 per-file *.gyp*=*
 per-file BUILD.gn=*
diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm
index 20cdb95..f3a4c43 100644
--- a/ui/base/clipboard/clipboard_mac.mm
+++ b/ui/base/clipboard/clipboard_mac.mm
@@ -112,7 +112,7 @@
 
 // static
 const Clipboard::FormatType& Clipboard::GetPlainTextFormatType() {
-  CR_DEFINE_STATIC_LOCAL(FormatType, type, (NSStringPboardType));
+  CR_DEFINE_STATIC_LOCAL(FormatType, type, (NSPasteboardTypeString));
   return type;
 }
 
@@ -243,7 +243,7 @@
   DCHECK(CalledOnValidThread());
   DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
   NSPasteboard* pb = GetPasteboard();
-  NSString* contents = [pb stringForType:NSStringPboardType];
+  NSString* contents = [pb stringForType:NSPasteboardTypeString];
 
   *result = base::SysNSStringToUTF16(contents);
 }
@@ -253,7 +253,7 @@
   DCHECK(CalledOnValidThread());
   DCHECK_EQ(type, CLIPBOARD_TYPE_COPY_PASTE);
   NSPasteboard* pb = GetPasteboard();
-  NSString* contents = [pb stringForType:NSStringPboardType];
+  NSString* contents = [pb stringForType:NSPasteboardTypeString];
 
   if (!contents)
     result->clear();
@@ -277,7 +277,7 @@
   NSPasteboard* pb = GetPasteboard();
   NSArray* supportedTypes = [NSArray arrayWithObjects:NSHTMLPboardType,
                                                       NSRTFPboardType,
-                                                      NSStringPboardType,
+                                                      NSPasteboardTypeString,
                                                       nil];
   NSString* bestType = [pb availableTypeFromArray:supportedTypes];
   if (bestType) {
@@ -391,8 +391,8 @@
   std::string text_str(text_data, text_len);
   NSString* text = base::SysUTF8ToNSString(text_str);
   NSPasteboard* pb = GetPasteboard();
-  [pb addTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
-  [pb setString:text forType:NSStringPboardType];
+  [pb addTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:nil];
+  [pb setString:text forType:NSPasteboardTypeString];
 }
 
 void ClipboardMac::WriteHTML(const char* markup_data,
diff --git a/ui/base/clipboard/clipboard_util_mac.mm b/ui/base/clipboard/clipboard_util_mac.mm
index 590ebf8..7d0d7741 100644
--- a/ui/base/clipboard/clipboard_util_mac.mm
+++ b/ui/base/clipboard/clipboard_util_mac.mm
@@ -67,7 +67,7 @@
                   forType:UTIFromPboardType(NSURLPboardType)];
   }
 
-  [item setString:urlString forType:UTIFromPboardType(NSStringPboardType)];
+  [item setString:urlString forType:NSPasteboardTypeString];
 
   [item setData:[urlString dataUsingEncoding:NSUTF8StringEncoding]
         forType:UTIFromPboardType(kCorePasteboardFlavorType_url)];
@@ -95,7 +95,7 @@
 base::scoped_nsobject<NSPasteboardItem> ClipboardUtil::PasteboardItemFromString(
     NSString* string) {
   base::scoped_nsobject<NSPasteboardItem> item([[NSPasteboardItem alloc] init]);
-  [item setString:string forType:UTIFromPboardType(NSStringPboardType)];
+  [item setString:string forType:NSPasteboardTypeString];
   return item;
 }
 
diff --git a/ui/base/cocoa/constrained_window/constrained_window_animation.mm b/ui/base/cocoa/constrained_window/constrained_window_animation.mm
index dc468ca..3618a1b9 100644
--- a/ui/base/cocoa/constrained_window/constrained_window_animation.mm
+++ b/ui/base/cocoa/constrained_window/constrained_window_animation.mm
@@ -76,60 +76,55 @@
 // Most Cocoa APIs use a coordinate system where the screen origin is the
 // bottom left. The various CGSSetWindow* APIs use a coordinate system where
 // the screen origin is the top left.
-// NSPoint GetCGSWindowScreenOrigin(NSWindow* window) {
-//   NSArray* screens = [NSScreen screens];
-//   if ([screens count] == 0)
-//     return NSZeroPoint;
-//   // Origin is relative to the screen with the menu bar (the screen at index
-//   0).
-//   // Note, this is not the same as mainScreen which is the screen with the
-//   key
-//   // window.
-//   NSScreen* main_screen = [screens objectAtIndex:0];
-//
-//   NSRect window_frame = [window frame];
-//   NSRect screen_frame = [main_screen frame];
-//   return NSMakePoint(NSMinX(window_frame),
-//                      NSHeight(screen_frame) - NSMaxY(window_frame));
-// }
+NSPoint GetCGSWindowScreenOrigin(NSWindow* window) {
+  NSArray* screens = [NSScreen screens];
+  if ([screens count] == 0)
+    return NSZeroPoint;
+  // Origin is relative to the screen with the menu bar (the screen at index 0).
+  // Note, this is not the same as mainScreen which is the screen with the key
+  // window.
+  NSScreen* main_screen = [screens objectAtIndex:0];
+
+  NSRect window_frame = [window frame];
+  NSRect screen_frame = [main_screen frame];
+  return NSMakePoint(NSMinX(window_frame),
+                     NSHeight(screen_frame) - NSMaxY(window_frame));
+}
 
 // Set the transparency of the window.
 void SetWindowAlpha(NSWindow* window, float alpha) {
-  // TODO(erikchen): Temporarily disabled. https://crbug.com/515627.
-  // CGSConnection cid = _CGSDefaultConnection();
-  // CGSSetWindowAlpha(cid, [window windowNumber], alpha);
+  CGSConnection cid = _CGSDefaultConnection();
+  CGSSetWindowAlpha(cid, [window windowNumber], alpha);
 }
 
 // Scales the window and translates it so that it stays centered relative
 // to its original position.
 void SetWindowScale(NSWindow* window, float scale) {
-  // TODO(erikchen): Temporarily disabled. https://crbug.com/515627.
-  // CGFloat scale_delta = 1.0 - scale;
-  // CGFloat cur_scale = 1.0 + scale_delta;
-  // CGAffineTransform transform =
-  //     CGAffineTransformMakeScale(cur_scale, cur_scale);
+  CGFloat scale_delta = 1.0 - scale;
+  CGFloat cur_scale = 1.0 + scale_delta;
+  CGAffineTransform transform =
+      CGAffineTransformMakeScale(cur_scale, cur_scale);
 
-  // // Translate the window to keep it centered at the original location.
-  // NSSize window_size = [window frame].size;
-  // CGFloat scale_offset_x = window_size.width * (1 - cur_scale) / 2.0;
-  // CGFloat scale_offset_y = window_size.height * (1 - cur_scale) / 2.0;
+  // Translate the window to keep it centered at the original location.
+  NSSize window_size = [window frame].size;
+  CGFloat scale_offset_x = window_size.width * (1 - cur_scale) / 2.0;
+  CGFloat scale_offset_y = window_size.height * (1 - cur_scale) / 2.0;
 
-  // NSPoint origin = GetCGSWindowScreenOrigin(window);
-  // CGFloat new_x = -origin.x + scale_offset_x;
-  // CGFloat new_y = -origin.y + scale_offset_y;
-  // transform = CGAffineTransformTranslate(transform, new_x, new_y);
+  NSPoint origin = GetCGSWindowScreenOrigin(window);
+  CGFloat new_x = -origin.x + scale_offset_x;
+  CGFloat new_y = -origin.y + scale_offset_y;
+  transform = CGAffineTransformTranslate(transform, new_x, new_y);
 
-  // CGSConnection cid = _CGSDefaultConnection();
-  // CGSSetWindowTransform(cid, [window windowNumber], transform);
+  CGSConnection cid = _CGSDefaultConnection();
+  CGSSetWindowTransform(cid, [window windowNumber], transform);
 }
 
 // Unsets any window warp that may have been previously applied.
 // Window warp prevents other effects such as CGSSetWindowTransform from
 // being applied.
 void ClearWindowWarp(NSWindow* window) {
-  // TODO(erikchen): Temporarily disabled. https://crbug.com/515627.
-  // CGSConnection cid = _CGSDefaultConnection();
-  // CGSSetWindowWarp(cid, [window windowNumber], 0, 0, NULL);
+  CGSConnection cid = _CGSDefaultConnection();
+  CGSSetWindowWarp(cid, [window windowNumber], 0, 0, NULL);
 }
 
 // Applies various transformations using a warp effect. The window is
@@ -140,44 +135,43 @@
                    float y_offset,
                    float scale,
                    float perspective_offset) {
-  // TODO(erikchen): Temporarily disabled. https://crbug.com/515627.
-  // NSRect win_rect = [window frame];
-  // win_rect.origin = NSZeroPoint;
-  // NSRect screen_rect = win_rect;
-  // screen_rect.origin = GetCGSWindowScreenOrigin(window);
+  NSRect win_rect = [window frame];
+  win_rect.origin = NSZeroPoint;
+  NSRect screen_rect = win_rect;
+  screen_rect.origin = GetCGSWindowScreenOrigin(window);
 
-  // // Apply a vertical translate.
-  // screen_rect.origin.y -= y_offset;
+  // Apply a vertical translate.
+  screen_rect.origin.y -= y_offset;
 
-  // // Apply a scale and translate to keep the window centered.
-  // screen_rect.origin.x += (NSWidth(win_rect) - NSWidth(screen_rect)) / 2.0;
-  // screen_rect.origin.y += (NSHeight(win_rect) - NSHeight(screen_rect)) / 2.0;
+  // Apply a scale and translate to keep the window centered.
+  screen_rect.origin.x += (NSWidth(win_rect) - NSWidth(screen_rect)) / 2.0;
+  screen_rect.origin.y += (NSHeight(win_rect) - NSHeight(screen_rect)) / 2.0;
 
-  // // A 2 x 2 mesh that maps each corner of the window to a location in screen
-  // // coordinates. Note that the origin of the coordinate system is top, left.
-  // CGPointWarp mesh[2][2] = {
-  //     {{
-  //       // Top left.
-  //       {NSMinX(win_rect), NSMinY(win_rect)},
-  //       {NSMinX(screen_rect) + perspective_offset, NSMinY(screen_rect)},
-  //      },
-  //      {
-  //       // Top right.
-  //       {NSMaxX(win_rect), NSMinY(win_rect)},
-  //       {NSMaxX(screen_rect) - perspective_offset, NSMinY(screen_rect)}, }},
-  //     {{
-  //       // Bottom left.
-  //       {NSMinX(win_rect), NSMaxY(win_rect)},
-  //       {NSMinX(screen_rect), NSMaxY(screen_rect)},
-  //      },
-  //      {
-  //       // Bottom right.
-  //       {NSMaxX(win_rect), NSMaxY(win_rect)},
-  //       {NSMaxX(screen_rect), NSMaxY(screen_rect)}, }},
-  // };
+  // A 2 x 2 mesh that maps each corner of the window to a location in screen
+  // coordinates. Note that the origin of the coordinate system is top, left.
+  CGPointWarp mesh[2][2] = {
+      {{
+        // Top left.
+        {NSMinX(win_rect), NSMinY(win_rect)},
+        {NSMinX(screen_rect) + perspective_offset, NSMinY(screen_rect)},
+       },
+       {
+        // Top right.
+        {NSMaxX(win_rect), NSMinY(win_rect)},
+        {NSMaxX(screen_rect) - perspective_offset, NSMinY(screen_rect)}, }},
+      {{
+        // Bottom left.
+        {NSMinX(win_rect), NSMaxY(win_rect)},
+        {NSMinX(screen_rect), NSMaxY(screen_rect)},
+       },
+       {
+        // Bottom right.
+        {NSMaxX(win_rect), NSMaxY(win_rect)},
+        {NSMaxX(screen_rect), NSMaxY(screen_rect)}, }},
+  };
 
-  // CGSConnection cid = _CGSDefaultConnection();
-  // CGSSetWindowWarp(cid, [window windowNumber], 2, 2, &(mesh[0][0]));
+  CGSConnection cid = _CGSDefaultConnection();
+  CGSSetWindowWarp(cid, [window windowNumber], 2, 2, &(mesh[0][0]));
 }
 
 // Sets the various effects that are a part of the Show/Hide animation.
diff --git a/ui/base/l10n/l10n_util.cc b/ui/base/l10n/l10n_util.cc
index c3e850da..8f262c51 100644
--- a/ui/base/l10n/l10n_util.cc
+++ b/ui/base/l10n/l10n_util.cc
@@ -50,7 +50,9 @@
 static const char* const kAcceptLanguageList[] = {
   "af",     // Afrikaans
   "am",     // Amharic
+  "an",     // Aragonese
   "ar",     // Arabic
+  "ast",    // Asturian
   "az",     // Azerbaijani
   "be",     // Belarusian
   "bg",     // Bulgarian
@@ -74,6 +76,7 @@
   "en-AU",  // English (Australia)
   "en-CA",  // English (Canada)
   "en-GB",  // English (UK)
+  "en-IN",  // English (India)
   "en-NZ",  // English (New Zealand)
   "en-US",  // English (US)
   "en-ZA",  // English (South Africa)
@@ -82,6 +85,10 @@
   // Spanish speaking countries?
   "es",     // Spanish
   "es-419", // Spanish (Latin America)
+  "es-AR",  // Spanish (Argentina)
+  "es-ES",  // Spanish (Spain)
+  "es-MX",  // Spanish (Mexico)
+  "es-US",  // Spanish (US)
   "et",     // Estonian
   "eu",     // Basque
   "fa",     // Persian
@@ -178,12 +185,14 @@
   "ur",     // Urdu
   "uz",     // Uzbek
   "vi",     // Vietnamese
+  "wa",     // Walloon
   "xh",     // Xhosa
   "yi",     // Yiddish
   "yo",     // Yoruba
   "zh",     // Chinese
-  "zh-CN",  // Chinese (Simplified)
-  "zh-TW",  // Chinese (Traditional)
+  "zh-CN",  // Chinese (China)
+  "zh-HK",  // Chinese (Hong Kong)
+  "zh-TW",  // Chinese (Taiwan)
   "zu",     // Zulu
 };
 
@@ -314,6 +323,8 @@
   return std::string(locale, 0, hyphen_pos);
 }
 
+// TOOD(jshin): revamp this function completely to use a more sytematic
+// and generic locale fallback based on ICU/CLDR.
 bool CheckAndResolveLocale(const std::string& locale,
                            std::string* resolved_locale) {
 #if defined(OS_MACOSX)
@@ -355,12 +366,13 @@
         tmp_locale.append("-CN");
       }
     } else if (base::LowerCaseEqualsASCII(lang, "en")) {
-      // Map Australian, Canadian, New Zealand and South African English
-      // to British English for now.
+      // Map Australian, Canadian, Indian, New Zealand and South African
+      // English to British English for now.
       // TODO(jungshik): en-CA may have to change sides once
       // we have OS locale separate from app locale (Chrome's UI language).
       if (base::LowerCaseEqualsASCII(region, "au") ||
           base::LowerCaseEqualsASCII(region, "ca") ||
+          base::LowerCaseEqualsASCII(region, "in") ||
           base::LowerCaseEqualsASCII(region, "nz") ||
           base::LowerCaseEqualsASCII(region, "za")) {
         tmp_locale.append("-GB");
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
index 36dc5760..3e9074d5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -15,6 +15,7 @@
 <translation id="2563856802393254086">অভিনন্দন! আপনার '<ph name="NAME" />' ডেটা পরিষেবা সক্রিয় করা হয়েছে এবং ব্যবহার করার জন্য প্রস্তুত৷</translation>
 <translation id="2649120831653069427">রেনবোফিশ</translation>
 <translation id="2670531586141364277">'<ph name="NAME" />' এর সক্রিয়করণের জন্য একটি নেটওয়ার্ক সংযোগের প্রয়োজন৷</translation>
+<translation id="277257480934873581"><ph name="NAME" /> এ পুনরায় সংযোগ করছে</translation>
 <translation id="2894654529758326923">তথ্য</translation>
 <translation id="2951236788251446349">জেলিফিশ</translation>
 <translation id="2966449113954629791">আপনি হয়তো আপনার মোবাইল ডেটার প্রদত্ত পরিমান ব্যবহার করে ফেলেছেন৷ আরো ডেটা কিনতে <ph name="NAME" /> সক্রিয়করণ পোর্টালে যান৷</translation>
@@ -67,6 +68,7 @@
 <translation id="8300849813060516376">OTASP ব্যর্থ</translation>
 <translation id="8372369524088641025">খারাপ WEP কী</translation>
 <translation id="8454013096329229812">Wi-Fi চালু আছে৷</translation>
+<translation id="8484916590211895857"><ph name="NAME" />: পুনরায় সংযোগ করছে...</translation>
 <translation id="8688591111840995413">খারাপ পাসওয়ার্ড</translation>
 <translation id="8714406895390098252">সাইকেল</translation>
 <translation id="8808686172382650546">বিড়াল</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
index 9ce6653..226a6b9 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
@@ -15,7 +15,7 @@
 <translation id="2563856802393254086">Enhorabona. El servei de dades "<ph name="NAME" />" s'ha activat i ja es pot fer servir.</translation>
 <translation id="2649120831653069427">Peix arc iris</translation>
 <translation id="2670531586141364277">Per activar "<ph name="NAME" />" cal una connexió a la xarxa.</translation>
-<translation id="277257480934873581">S'està tornant a connectar amb la xarxa <ph name="NAME" /></translation>
+<translation id="277257480934873581">S'està tornant a connectar a la xarxa <ph name="NAME" /></translation>
 <translation id="2894654529758326923">Informació</translation>
 <translation id="2951236788251446349">Medusa</translation>
 <translation id="2966449113954629791">És possible que hàgiu esgotat la quantitat assignada de dades mòbils. Visiteu el portal d'activació <ph name="NAME" /> per comprar més dades.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
index 0c727f08..548e965 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -15,7 +15,7 @@
 <translation id="2563856802393254086">Se activó tu servicio de datos "<ph name="NAME" />" y está listo para que lo uses.</translation>
 <translation id="2649120831653069427">Pez arco iris</translation>
 <translation id="2670531586141364277">Para activar "<ph name="NAME" />", es necesaria una conexión de red.</translation>
-<translation id="277257480934873581">Restableciendo  conexión con <ph name="NAME" /></translation>
+<translation id="277257480934873581">Restableciendo conexión con <ph name="NAME" /></translation>
 <translation id="2894654529758326923">Información</translation>
 <translation id="2951236788251446349">Medusa</translation>
 <translation id="2966449113954629791">Es posible que hayas agotado los datos móviles. Accede al portal de activación de <ph name="NAME" /> para comprar más datos.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
index 7835766..d2a9aff7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -15,7 +15,7 @@
 <translation id="2563856802393254086">Selamat! Layanan data '<ph name="NAME" />' Anda telah diaktifkan dan siap digunakan.</translation>
 <translation id="2649120831653069427">Ikan Pelangi</translation>
 <translation id="2670531586141364277">Aktivasi '<ph name="NAME" />' membutuhkan sambungan jaringan.</translation>
-<translation id="277257480934873581">Menyambung lagi ke <ph name="NAME" /></translation>
+<translation id="277257480934873581">Menyambungkan lagi ke <ph name="NAME" /></translation>
 <translation id="2894654529758326923">Informasi</translation>
 <translation id="2951236788251446349">Ubur-ubur</translation>
 <translation id="2966449113954629791">Data seluler Anda yang diizinkan mungkin telah habis. Kunjungi portal aktivasi <ph name="NAME" /> untuk membeli data lagi.</translation>
@@ -68,7 +68,7 @@
 <translation id="8300849813060516376">OTASP gagal</translation>
 <translation id="8372369524088641025">Kunci WEP yang buruk</translation>
 <translation id="8454013096329229812">Wi-Fi diaktifkan.</translation>
-<translation id="8484916590211895857"><ph name="NAME" />: Menyambung lagi...</translation>
+<translation id="8484916590211895857"><ph name="NAME" />: Menyambungkan lagi...</translation>
 <translation id="8688591111840995413">Sandi lemah</translation>
 <translation id="8714406895390098252">Sepeda</translation>
 <translation id="8808686172382650546">Kucing</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index aeb6e1e..2ee3b1c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -15,7 +15,7 @@
 <translation id="2563856802393254086">Gratulacje! Usługa transmisji danych „<ph name="NAME" />” została aktywowana i można z niej korzystać.</translation>
 <translation id="2649120831653069427">Tęczanka</translation>
 <translation id="2670531586141364277">Aktywacja <ph name="NAME" /> wymaga połączenia z siecią.</translation>
-<translation id="277257480934873581">Ponowne łączenie z: <ph name="NAME" /></translation>
+<translation id="277257480934873581">Ponownie łączę z: <ph name="NAME" /></translation>
 <translation id="2894654529758326923">Informacje</translation>
 <translation id="2951236788251446349">Meduza</translation>
 <translation id="2966449113954629791">Możliwe, że wykorzystałeś już limit transferu danych przez sieć komórkową. Odwiedź portal aktywacji <ph name="NAME" />, by zwiększyć limit.</translation>
@@ -68,7 +68,7 @@
 <translation id="8300849813060516376">Dostarczanie OTASP nie powiodło się</translation>
 <translation id="8372369524088641025">Błędny klucz WEP</translation>
 <translation id="8454013096329229812">Wi-Fi włączone.</translation>
-<translation id="8484916590211895857"><ph name="NAME" />: ponowne łączenie...</translation>
+<translation id="8484916590211895857"><ph name="NAME" />: ponownie łączę...</translation>
 <translation id="8688591111840995413">Nieprawidłowe hasło</translation>
 <translation id="8714406895390098252">Rower</translation>
 <translation id="8808686172382650546">Kot</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
index 66f7b78..d39b2f8 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
@@ -15,6 +15,7 @@
 <translation id="2563856802393254086">Felicitări! Serviciul de date „<ph name="NAME" />” a fost activat și este gata de utilizare.</translation>
 <translation id="2649120831653069427">Pește</translation>
 <translation id="2670531586141364277">Activarea rețelei „<ph name="NAME" />” necesită o conexiune la rețea.</translation>
+<translation id="277257480934873581">Se reconectează la <ph name="NAME" /></translation>
 <translation id="2894654529758326923">Informații</translation>
 <translation id="2951236788251446349">Meduză</translation>
 <translation id="2966449113954629791">Este posibil să fi epuizat datele mobile puse la dispoziție. Accesați portalul de activare <ph name="NAME" /> pentru a cumpăra mai multe date.</translation>
@@ -67,6 +68,7 @@
 <translation id="8300849813060516376">OTASP nu a reușit</translation>
 <translation id="8372369524088641025">Cheie WEP greșită</translation>
 <translation id="8454013096329229812">Conexiunea Wi-Fi este activată.</translation>
+<translation id="8484916590211895857"><ph name="NAME" />: se reconectează...</translation>
 <translation id="8688591111840995413">Parolă greșită</translation>
 <translation id="8714406895390098252">Bicicletă</translation>
 <translation id="8808686172382650546">Pisică</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index 87a3768..edc9f4df 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -15,6 +15,7 @@
 <translation id="2563856802393254086">Tebrikler! '<ph name="NAME" />' veri hizmetiniz etkinleştirildi ve kullanıma hazır.</translation>
 <translation id="2649120831653069427">Gökkuşağı Balığı</translation>
 <translation id="2670531586141364277">'<ph name="NAME" />' ağının etkinleştirilmesi için ağ bağlantısı gereklidir.</translation>
+<translation id="277257480934873581"><ph name="NAME" /> ile yeniden bağlantı kuruluyor</translation>
 <translation id="2894654529758326923">Bilgiler</translation>
 <translation id="2951236788251446349">Denizanası</translation>
 <translation id="2966449113954629791">Mobil veri kullanım hakkınızı doldurmuş olabilirsiniz. Daha fazla veri satın almak için <ph name="NAME" /> etkinleştirme portalını ziyaret edin.</translation>
@@ -67,6 +68,7 @@
 <translation id="8300849813060516376">OTASP başarısız oldu</translation>
 <translation id="8372369524088641025">Hatalı WEP anahtarı</translation>
 <translation id="8454013096329229812">Kablosuz açık.</translation>
+<translation id="8484916590211895857"><ph name="NAME" />: Yeniden bağlanılıyor...</translation>
 <translation id="8688591111840995413">Yanlış şifre</translation>
 <translation id="8714406895390098252">Bisiklet</translation>
 <translation id="8808686172382650546">Kedi</translation>
diff --git a/ui/events/ozone/evdev/input_device_factory_evdev.h b/ui/events/ozone/evdev/input_device_factory_evdev.h
index 8e95df6..5469651ba 100644
--- a/ui/events/ozone/evdev/input_device_factory_evdev.h
+++ b/ui/events/ozone/evdev/input_device_factory_evdev.h
@@ -14,6 +14,7 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/task_runner.h"
 #include "ui/events/ozone/evdev/event_converter_evdev.h"
 #include "ui/events/ozone/evdev/event_device_info.h"
diff --git a/ui/events/ozone/evdev/input_device_factory_evdev_proxy.h b/ui/events/ozone/evdev/input_device_factory_evdev_proxy.h
index 982d4d8..7c084cc 100644
--- a/ui/events/ozone/evdev/input_device_factory_evdev_proxy.h
+++ b/ui/events/ozone/evdev/input_device_factory_evdev_proxy.h
@@ -12,6 +12,7 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
diff --git a/ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h b/ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h
index 02d0888..b4fc0e4 100644
--- a/ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h
+++ b/ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h
@@ -9,6 +9,7 @@
 
 #include "base/files/file_path.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "ui/events/ozone/evdev/event_converter_evdev.h"
 #include "ui/events/ozone/evdev/event_device_info.h"
diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.h b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.h
index 01034e5..c4bee69 100644
--- a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.h
+++ b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.h
@@ -17,6 +17,7 @@
 
 #include "base/containers/scoped_ptr_hash_map.h"
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "ui/events/ozone/evdev/event_device_info.h"
 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
diff --git a/ui/gl/gl_surface_ozone.cc b/ui/gl/gl_surface_ozone.cc
index d28d081..4815405 100644
--- a/ui/gl/gl_surface_ozone.cc
+++ b/ui/gl/gl_surface_ozone.cc
@@ -631,6 +631,9 @@
         new GLImageOzoneNativePixmap(GetSize(), GL_BGRA_EXT);
     if (!image->Initialize(pixmap.get(), gfx::BufferFormat::BGRA_8888))
       return false;
+    // Image must have Destroy() called before destruction.
+    if (images_[i])
+      images_[i]->Destroy(true);
     images_[i] = image;
     // Bind image to texture.
     ScopedTextureBinder binder(GL_TEXTURE_2D, textures_[i]);
diff --git a/ui/ozone/common/native_display_delegate_ozone.h b/ui/ozone/common/native_display_delegate_ozone.h
index c491ec4..baf2a6c 100644
--- a/ui/ozone/common/native_display_delegate_ozone.h
+++ b/ui/ozone/common/native_display_delegate_ozone.h
@@ -8,6 +8,7 @@
 #include <stdint.h>
 
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/memory/scoped_vector.h"
 #include "ui/display/types/native_display_delegate.h"
 
diff --git a/ui/ozone/demo/surfaceless_gl_renderer.h b/ui/ozone/demo/surfaceless_gl_renderer.h
index c36c22f..6c8524e 100644
--- a/ui/ozone/demo/surfaceless_gl_renderer.h
+++ b/ui/ozone/demo/surfaceless_gl_renderer.h
@@ -6,6 +6,7 @@
 #define UI_OZONE_DEMO_SURFACELESS_GL_RENDERER_H_
 
 #include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
 #include "ui/ozone/demo/gl_renderer.h"
 
 namespace gl {
diff --git a/ui/views/animation/button_ink_drop_delegate.cc b/ui/views/animation/button_ink_drop_delegate.cc
index 7d25f57..73152d77 100644
--- a/ui/views/animation/button_ink_drop_delegate.cc
+++ b/ui/views/animation/button_ink_drop_delegate.cc
@@ -66,10 +66,10 @@
       event->SetHandled();
       break;
     case ui::ET_GESTURE_LONG_PRESS:
-      ink_drop_state = InkDropState::SLOW_ACTION_PENDING;
+      ink_drop_state = InkDropState::ALTERNATE_ACTION_PENDING;
       break;
     case ui::ET_GESTURE_LONG_TAP:
-      ink_drop_state = InkDropState::SLOW_ACTION;
+      ink_drop_state = InkDropState::ALTERNATE_ACTION_TRIGGERED;
       break;
     case ui::ET_GESTURE_END:
       if (current_ink_drop_state == InkDropState::ACTIVATED)
@@ -82,9 +82,11 @@
       return;
   }
 
+  last_ink_drop_location_ = event->location();
+
   if (ink_drop_state == InkDropState::HIDDEN &&
-      (current_ink_drop_state == InkDropState::QUICK_ACTION ||
-       current_ink_drop_state == InkDropState::SLOW_ACTION ||
+      (current_ink_drop_state == InkDropState::ACTION_TRIGGERED ||
+       current_ink_drop_state == InkDropState::ALTERNATE_ACTION_TRIGGERED ||
        current_ink_drop_state == InkDropState::DEACTIVATED)) {
     // These InkDropStates automatically transition to the HIDDEN state so we
     // don't make an explicit call. Explicitly animating to HIDDEN in this case
diff --git a/ui/views/animation/button_ink_drop_delegate.h b/ui/views/animation/button_ink_drop_delegate.h
index b1e1b5f..f4c245ec 100644
--- a/ui/views/animation/button_ink_drop_delegate.h
+++ b/ui/views/animation/button_ink_drop_delegate.h
@@ -8,6 +8,7 @@
 #include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/events/event_handler.h"
+#include "ui/gfx/geometry/point.h"
 #include "ui/views/animation/ink_drop_delegate.h"
 #include "ui/views/views_export.h"
 
@@ -28,6 +29,13 @@
   ButtonInkDropDelegate(InkDropHost* ink_drop_host, View* view);
   ~ButtonInkDropDelegate() override;
 
+  const gfx::Point& last_ink_drop_location() const {
+    return last_ink_drop_location_;
+  }
+  void set_last_ink_drop_location(const gfx::Point& point) {
+    last_ink_drop_location_ = point;
+  }
+
   // InkDropDelegate:
   void OnAction(InkDropState state) override;
   void SnapToActivated() override;
@@ -44,6 +52,10 @@
   // Parent InkDropHost (typically a View) that hosts the ink ripple animations.
   InkDropHost* ink_drop_host_;
 
+  // Location of the last ink drop triggering event in coordinate system of the
+  // ctor argument |view|.
+  gfx::Point last_ink_drop_location_;
+
   // Animation controller for the ink drop ripple effect.
   scoped_ptr<InkDropAnimationController> ink_drop_animation_controller_;
 
diff --git a/ui/views/animation/flood_fill_ink_drop_animation.cc b/ui/views/animation/flood_fill_ink_drop_animation.cc
index 77e091e4..9cfe241 100644
--- a/ui/views/animation/flood_fill_ink_drop_animation.cc
+++ b/ui/views/animation/flood_fill_ink_drop_animation.cc
@@ -18,7 +18,7 @@
 
 // The minimum radius to use when scaling the painted layers. Smaller values
 // were causing visual anomalies.
-const float kMinRadius = 0.01f;
+const float kMinRadius = 1.f;
 
 // All the sub animations that are used to animate each of the InkDropStates.
 // These are used to get time durations with
@@ -45,21 +45,23 @@
   // bounds.
   ACTION_PENDING_TRANSFORM,
 
-  // QUICK_ACTION sub animations.
+  // ACTION_TRIGGERED sub animations.
 
-  // The QUICK_ACTION sub animation that is fading out to a hidden opacity.
-  QUICK_ACTION_FADE_OUT,
+  // The ACTION_TRIGGERED sub animation that is fading out to a hidden opacity.
+  ACTION_TRIGGERED_FADE_OUT,
 
-  // SLOW_ACTION_PENDING sub animations.
+  // ALTERNATE_ACTION_PENDING sub animations.
 
-  // The SLOW_ACTION_PENDING animation has only one sub animation which animates
+  // The ALTERNATE_ACTION_PENDING animation has only one sub animation which
+  // animates
   // the circleto fill the bounds at visible opacity.
-  SLOW_ACTION_PENDING,
+  ALTERNATE_ACTION_PENDING,
 
-  // SLOW_ACTION sub animations.
+  // ALTERNATE_ACTION_TRIGGERED sub animations.
 
-  // The SLOW_ACTION sub animation that is fading out to a hidden opacity.
-  SLOW_ACTION_FADE_OUT,
+  // The ALTERNATE_ACTION_TRIGGERED sub animation that is fading out to a hidden
+  // opacity.
+  ALTERNATE_ACTION_TRIGGERED_FADE_OUT,
 
   // ACTIVATED sub animations.
 
@@ -83,9 +85,9 @@
     300,  // HIDDEN_TRANSFORM
     0,    // ACTION_PENDING_FADE_IN
     240,  // ACTION_PENDING_TRANSFORM
-    300,  // QUICK_ACTION_FADE_OUT
-    200,  // SLOW_ACTION_PENDING
-    300,  // SLOW_ACTION_FADE_OUT
+    300,  // ACTION_TRIGGERED_FADE_OUT
+    200,  // ALTERNATE_ACTION_PENDING
+    300,  // ALTERNATE_ACTION_TRIGGERED_FADE_OUT
     150,  // ACTIVATED_FADE_IN
     200,  // ACTIVATED_TRANSFORM
     300,  // DEACTIVATED_FADE_OUT
@@ -100,25 +102,6 @@
       kAnimationDurationInMs[state]);
 }
 
-// Calculates the largest distance from |point| to the corners of a rectangle
-// with origin (0, 0) and the given |size|.
-float CalculateLargestDistanceToCorners(const gfx::Size& size,
-                                        const gfx::Point& point) {
-  const float top_left_distance = gfx::Vector2dF(point.x(), point.y()).Length();
-  const float top_right_distance =
-      gfx::Vector2dF(size.width() - point.x(), point.y()).Length();
-  const float bottom_left_distance =
-      gfx::Vector2dF(point.x(), size.height() - point.y()).Length();
-  const float bottom_right_distance =
-      gfx::Vector2dF(size.width() - point.x(), size.height() - point.y())
-          .Length();
-
-  float largest_distance = std::max(top_left_distance, top_right_distance);
-  largest_distance = std::max(largest_distance, bottom_left_distance);
-  largest_distance = std::max(largest_distance, bottom_right_distance);
-  return largest_distance;
-}
-
 }  // namespace
 
 namespace views {
@@ -161,7 +144,7 @@
 void FloodFillInkDropAnimation::SnapToActivated() {
   InkDropAnimation::SnapToActivated();
   SetOpacity(kVisibleOpacity);
-  painted_layer_.SetTransform(GetActivatedTargetTransform());
+  painted_layer_.SetTransform(GetMaxSizeTargetTransform());
 }
 
 ui::Layer* FloodFillInkDropAnimation::GetRootLayer() {
@@ -180,7 +163,6 @@
     case InkDropState::HIDDEN:
       if (!IsVisible()) {
         SetStateToHidden();
-        break;
       } else {
         AnimateToOpacity(kHiddenOpacity, GetAnimationDuration(HIDDEN_FADE_OUT),
                          ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
@@ -204,15 +186,13 @@
                        ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                        gfx::Tween::EASE_IN, animation_observer);
 
-      const gfx::Transform transform = CalculateTransform(
-          CalculateLargestDistanceToCorners(size_, center_point_));
-      AnimateToTransform(transform,
+      AnimateToTransform(GetMaxSizeTargetTransform(),
                          GetAnimationDuration(ACTION_PENDING_TRANSFORM),
                          ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                          gfx::Tween::FAST_OUT_SLOW_IN, animation_observer);
       break;
     }
-    case InkDropState::QUICK_ACTION: {
+    case InkDropState::ACTION_TRIGGERED: {
       DCHECK(old_ink_drop_state == InkDropState::HIDDEN ||
              old_ink_drop_state == InkDropState::ACTION_PENDING);
       if (old_ink_drop_state == InkDropState::HIDDEN) {
@@ -220,28 +200,27 @@
                            animation_observer);
       }
       AnimateToOpacity(kHiddenOpacity,
-                       GetAnimationDuration(QUICK_ACTION_FADE_OUT),
+                       GetAnimationDuration(ACTION_TRIGGERED_FADE_OUT),
                        ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                        gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
     }
-    case InkDropState::SLOW_ACTION_PENDING: {
+    case InkDropState::ALTERNATE_ACTION_PENDING: {
       DCHECK(old_ink_drop_state == InkDropState::ACTION_PENDING);
       AnimateToOpacity(kVisibleOpacity,
-                       GetAnimationDuration(SLOW_ACTION_PENDING),
+                       GetAnimationDuration(ALTERNATE_ACTION_PENDING),
                        ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                        gfx::Tween::EASE_IN, animation_observer);
-      const gfx::Transform transform = CalculateTransform(
-          CalculateLargestDistanceToCorners(size_, center_point_));
-      AnimateToTransform(transform, GetAnimationDuration(SLOW_ACTION_PENDING),
+      AnimateToTransform(GetMaxSizeTargetTransform(),
+                         GetAnimationDuration(ALTERNATE_ACTION_PENDING),
                          ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                          gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
     }
-    case InkDropState::SLOW_ACTION:
-      DCHECK(old_ink_drop_state == InkDropState::SLOW_ACTION_PENDING);
-      AnimateToOpacity(kHiddenOpacity,
-                       GetAnimationDuration(SLOW_ACTION_FADE_OUT),
+    case InkDropState::ALTERNATE_ACTION_TRIGGERED:
+      DCHECK(old_ink_drop_state == InkDropState::ALTERNATE_ACTION_PENDING);
+      AnimateToOpacity(kHiddenOpacity, GetAnimationDuration(
+                                           ALTERNATE_ACTION_TRIGGERED_FADE_OUT),
                        ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                        gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
@@ -249,7 +228,7 @@
       AnimateToOpacity(kVisibleOpacity, GetAnimationDuration(ACTIVATED_FADE_IN),
                        ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                        gfx::Tween::EASE_IN, animation_observer);
-      AnimateToTransform(GetActivatedTargetTransform(),
+      AnimateToTransform(GetMaxSizeTargetTransform(),
                          GetAnimationDuration(ACTIVATED_TRANSFORM),
                          ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                          gfx::Tween::EASE_IN_OUT, animation_observer);
@@ -265,8 +244,7 @@
 }
 
 void FloodFillInkDropAnimation::SetStateToHidden() {
-  gfx::Transform transform = CalculateTransform(kMinRadius);
-  painted_layer_.SetTransform(transform);
+  painted_layer_.SetTransform(CalculateTransform(kMinRadius));
   root_layer_.SetOpacity(InkDropAnimation::kHiddenOpacity);
   root_layer_.SetVisible(false);
 }
@@ -336,9 +314,11 @@
   return transform;
 }
 
-gfx::Transform FloodFillInkDropAnimation::GetActivatedTargetTransform() const {
+gfx::Transform FloodFillInkDropAnimation::GetMaxSizeTargetTransform() const {
+  // TODO(estade): get rid of this 2, but make the fade out start before the
+  // active/action transform is done.
   return CalculateTransform(
-      CalculateLargestDistanceToCorners(size_, center_point_));
+      gfx::Vector2dF(size_.width(), size_.height()).Length() / 2);
 }
 
 }  // namespace views
diff --git a/ui/views/animation/flood_fill_ink_drop_animation.h b/ui/views/animation/flood_fill_ink_drop_animation.h
index e838e282..2449895c 100644
--- a/ui/views/animation/flood_fill_ink_drop_animation.h
+++ b/ui/views/animation/flood_fill_ink_drop_animation.h
@@ -40,9 +40,9 @@
 //
 //   {All InkDropStates}      => HIDDEN
 //   HIDDEN                   => ACTION_PENDING
-//   HIDDEN, ACTION_PENDING   => QUICK_ACTION
-//   ACTION_PENDING           => SLOW_ACTION_PENDING
-//   SLOW_ACTION_PENDING      => SLOW_ACTION
+//   HIDDEN, ACTION_PENDING   => ACTION_TRIGGERED
+//   ACTION_PENDING           => ALTERNATE_ACTION_PENDING
+//   ALTERNATE_ACTION_PENDING => ALTERNATE_ACTION_TRIGGERED
 //   {All InkDropStates}      => ACTIVATED
 //   {All InkDropStates}      => DEACTIVATED
 //
@@ -98,8 +98,8 @@
   // |target_radius|.
   gfx::Transform CalculateTransform(float target_radius) const;
 
-  // Returns the target Transform for the ACTIVATED animation.
-  gfx::Transform GetActivatedTargetTransform() const;
+  // Returns the target Transform for when the ink drop is fully shown.
+  gfx::Transform GetMaxSizeTargetTransform() const;
 
   // The clip Size.
   const gfx::Size size_;
diff --git a/ui/views/animation/ink_drop_animation_controller_factory_unittest.cc b/ui/views/animation/ink_drop_animation_controller_factory_unittest.cc
index 5991eb0..2d430ed 100644
--- a/ui/views/animation/ink_drop_animation_controller_factory_unittest.cc
+++ b/ui/views/animation/ink_drop_animation_controller_factory_unittest.cc
@@ -110,7 +110,8 @@
 
 TEST_P(InkDropAnimationControllerFactoryTest, TypicalQuickAction) {
   ink_drop_animation_controller_->AnimateToState(InkDropState::ACTION_PENDING);
-  ink_drop_animation_controller_->AnimateToState(InkDropState::QUICK_ACTION);
+  ink_drop_animation_controller_->AnimateToState(
+      InkDropState::ACTION_TRIGGERED);
   EXPECT_EQ(InkDropState::HIDDEN,
             ink_drop_animation_controller_->GetTargetInkDropState());
 }
@@ -125,8 +126,9 @@
 TEST_P(InkDropAnimationControllerFactoryTest, TypicalSlowAction) {
   ink_drop_animation_controller_->AnimateToState(InkDropState::ACTION_PENDING);
   ink_drop_animation_controller_->AnimateToState(
-      InkDropState::SLOW_ACTION_PENDING);
-  ink_drop_animation_controller_->AnimateToState(InkDropState::SLOW_ACTION);
+      InkDropState::ALTERNATE_ACTION_PENDING);
+  ink_drop_animation_controller_->AnimateToState(
+      InkDropState::ALTERNATE_ACTION_TRIGGERED);
   EXPECT_EQ(InkDropState::HIDDEN,
             ink_drop_animation_controller_->GetTargetInkDropState());
 }
@@ -134,7 +136,7 @@
 TEST_P(InkDropAnimationControllerFactoryTest, CancelSlowAction) {
   ink_drop_animation_controller_->AnimateToState(InkDropState::ACTION_PENDING);
   ink_drop_animation_controller_->AnimateToState(
-      InkDropState::SLOW_ACTION_PENDING);
+      InkDropState::ALTERNATE_ACTION_PENDING);
   ink_drop_animation_controller_->AnimateToState(InkDropState::HIDDEN);
   EXPECT_EQ(InkDropState::HIDDEN,
             ink_drop_animation_controller_->GetTargetInkDropState());
@@ -151,7 +153,7 @@
 TEST_P(InkDropAnimationControllerFactoryTest, TypicalSlowActivated) {
   ink_drop_animation_controller_->AnimateToState(InkDropState::ACTION_PENDING);
   ink_drop_animation_controller_->AnimateToState(
-      InkDropState::SLOW_ACTION_PENDING);
+      InkDropState::ALTERNATE_ACTION_PENDING);
   ink_drop_animation_controller_->AnimateToState(InkDropState::ACTIVATED);
   ink_drop_animation_controller_->AnimateToState(InkDropState::DEACTIVATED);
   EXPECT_EQ(InkDropState::HIDDEN,
diff --git a/ui/views/animation/ink_drop_animation_controller_impl.cc b/ui/views/animation/ink_drop_animation_controller_impl.cc
index def6df3b..963440d 100644
--- a/ui/views/animation/ink_drop_animation_controller_impl.cc
+++ b/ui/views/animation/ink_drop_animation_controller_impl.cc
@@ -39,8 +39,8 @@
 // automatically transition to the InkDropState::HIDDEN state.
 bool ShouldAnimateToHidden(InkDropState ink_drop_state) {
   switch (ink_drop_state) {
-    case views::InkDropState::QUICK_ACTION:
-    case views::InkDropState::SLOW_ACTION:
+    case views::InkDropState::ACTION_TRIGGERED:
+    case views::InkDropState::ALTERNATE_ACTION_TRIGGERED:
     case views::InkDropState::DEACTIVATED:
       return true;
     default:
@@ -79,6 +79,7 @@
 
 void InkDropAnimationControllerImpl::AnimateToState(
     InkDropState ink_drop_state) {
+  DestroyHiddenTargetedAnimations();
   if (!ink_drop_animation_)
     CreateInkDropAnimation();
 
@@ -87,17 +88,16 @@
                                   kHoverFadeOutBeforeAnimationDurationInMs));
   }
 
-  CompleteHiddenTargetedAnimations();
   ink_drop_animation_->AnimateToState(ink_drop_state);
 }
 
 void InkDropAnimationControllerImpl::SnapToActivated() {
+  DestroyHiddenTargetedAnimations();
   if (!ink_drop_animation_)
     CreateInkDropAnimation();
 
   SetHoveredInternal(false, base::TimeDelta());
 
-  CompleteHiddenTargetedAnimations();
   ink_drop_animation_->SnapToActivated();
 }
 
@@ -110,10 +110,11 @@
                                       kHoverFadeOutFromUserInputDurationInMs));
 }
 
-void InkDropAnimationControllerImpl::CompleteHiddenTargetedAnimations() {
-  if (ink_drop_animation_->target_ink_drop_state() == InkDropState::HIDDEN ||
-      ShouldAnimateToHidden(ink_drop_animation_->target_ink_drop_state())) {
-    ink_drop_animation_->HideImmediately();
+void InkDropAnimationControllerImpl::DestroyHiddenTargetedAnimations() {
+  if (ink_drop_animation_ &&
+      (ink_drop_animation_->target_ink_drop_state() == InkDropState::HIDDEN ||
+       ShouldAnimateToHidden(ink_drop_animation_->target_ink_drop_state()))) {
+    DestroyInkDropAnimation();
   }
 }
 
diff --git a/ui/views/animation/ink_drop_animation_controller_impl.h b/ui/views/animation/ink_drop_animation_controller_impl.h
index 8aaf6bc..9324b0bf 100644
--- a/ui/views/animation/ink_drop_animation_controller_impl.h
+++ b/ui/views/animation/ink_drop_animation_controller_impl.h
@@ -44,9 +44,8 @@
   friend class InkDropAnimationControllerFactoryTest;
   friend class InkDropAnimationControllerImplTest;
 
-  // Forcibly transition to the HIDDEN state if completing the current animation
-  // sequence would eventually be HIDDEN.
-  void CompleteHiddenTargetedAnimations();
+  // Destroys |ink_drop_animation_| if it's targeted to the HIDDEN state.
+  void DestroyHiddenTargetedAnimations();
 
   // Creates a new InkDropAnimation and sets it to |ink_drop_animation_|. If
   // |ink_drop_animation_| wasn't null then it will be destroyed using
diff --git a/ui/views/animation/ink_drop_animation_controller_impl_unittest.cc b/ui/views/animation/ink_drop_animation_controller_impl_unittest.cc
index 4f98549..96e2d3e 100644
--- a/ui/views/animation/ink_drop_animation_controller_impl_unittest.cc
+++ b/ui/views/animation/ink_drop_animation_controller_impl_unittest.cc
@@ -73,7 +73,7 @@
        HoverDoesntFadeInAfterAnimationIfHoverNotSet) {
   ink_drop_host_.set_should_show_hover(true);
   ink_drop_animation_controller_.SetHovered(false);
-  ink_drop_animation_controller_.AnimateToState(InkDropState::QUICK_ACTION);
+  ink_drop_animation_controller_.AnimateToState(InkDropState::ACTION_TRIGGERED);
 
   EXPECT_FALSE(task_runner_->HasPendingTask());
   EXPECT_FALSE(is_hover_fading_in_or_visible());
@@ -83,7 +83,7 @@
        HoverFadesInAfterAnimationWhenHostIsHovered) {
   ink_drop_host_.set_should_show_hover(true);
   ink_drop_animation_controller_.SetHovered(true);
-  ink_drop_animation_controller_.AnimateToState(InkDropState::QUICK_ACTION);
+  ink_drop_animation_controller_.AnimateToState(InkDropState::ACTION_TRIGGERED);
 
   EXPECT_TRUE(task_runner_->HasPendingTask());
 
@@ -96,7 +96,7 @@
        HoverDoesntFadeInAfterAnimationWhenHostIsNotHovered) {
   ink_drop_host_.set_should_show_hover(false);
   ink_drop_animation_controller_.SetHovered(true);
-  ink_drop_animation_controller_.AnimateToState(InkDropState::QUICK_ACTION);
+  ink_drop_animation_controller_.AnimateToState(InkDropState::ACTION_TRIGGERED);
 
   EXPECT_TRUE(task_runner_->HasPendingTask());
 
@@ -112,7 +112,7 @@
   ink_drop_animation_controller_.SetHovered(true);
   EXPECT_TRUE(is_hover_fading_in_or_visible());
 
-  ink_drop_animation_controller_.AnimateToState(InkDropState::QUICK_ACTION);
+  ink_drop_animation_controller_.AnimateToState(InkDropState::ACTION_TRIGGERED);
   EXPECT_FALSE(is_hover_fading_in_or_visible());
 }
 
diff --git a/ui/views/animation/ink_drop_animation_unittest.cc b/ui/views/animation/ink_drop_animation_unittest.cc
index 22f6230..5db3e892 100644
--- a/ui/views/animation/ink_drop_animation_unittest.cc
+++ b/ui/views/animation/ink_drop_animation_unittest.cc
@@ -130,7 +130,7 @@
 
 TEST_P(InkDropAnimationTest, QuickActionOpacity) {
   ink_drop_animation_->AnimateToState(views::InkDropState::ACTION_PENDING);
-  ink_drop_animation_->AnimateToState(views::InkDropState::QUICK_ACTION);
+  ink_drop_animation_->AnimateToState(views::InkDropState::ACTION_TRIGGERED);
   test_api_->CompleteAnimations();
 
   EXPECT_EQ(InkDropAnimation::kHiddenOpacity, test_api_->GetCurrentOpacity());
@@ -138,7 +138,8 @@
 
 TEST_P(InkDropAnimationTest, SlowActionPendingOpacity) {
   ink_drop_animation_->AnimateToState(views::InkDropState::ACTION_PENDING);
-  ink_drop_animation_->AnimateToState(views::InkDropState::SLOW_ACTION_PENDING);
+  ink_drop_animation_->AnimateToState(
+      views::InkDropState::ALTERNATE_ACTION_PENDING);
   test_api_->CompleteAnimations();
 
   EXPECT_EQ(InkDropAnimation::kVisibleOpacity, test_api_->GetCurrentOpacity());
@@ -146,8 +147,10 @@
 
 TEST_P(InkDropAnimationTest, SlowActionOpacity) {
   ink_drop_animation_->AnimateToState(views::InkDropState::ACTION_PENDING);
-  ink_drop_animation_->AnimateToState(views::InkDropState::SLOW_ACTION_PENDING);
-  ink_drop_animation_->AnimateToState(views::InkDropState::SLOW_ACTION);
+  ink_drop_animation_->AnimateToState(
+      views::InkDropState::ALTERNATE_ACTION_PENDING);
+  ink_drop_animation_->AnimateToState(
+      views::InkDropState::ALTERNATE_ACTION_TRIGGERED);
   test_api_->CompleteAnimations();
 
   EXPECT_EQ(InkDropAnimation::kHiddenOpacity, test_api_->GetCurrentOpacity());
@@ -210,7 +213,7 @@
 
 TEST_P(InkDropAnimationTest, VerifyObserversAreNotifiedOfPreemptedAnimations) {
   ink_drop_animation_->AnimateToState(InkDropState::ACTION_PENDING);
-  ink_drop_animation_->AnimateToState(InkDropState::SLOW_ACTION_PENDING);
+  ink_drop_animation_->AnimateToState(InkDropState::ALTERNATE_ACTION_PENDING);
 
   EXPECT_EQ(2, observer_.last_animation_ended_ordinal());
   EXPECT_EQ(InkDropAnimationObserver::InkDropAnimationEndedReason::PRE_EMPTED,
diff --git a/ui/views/animation/ink_drop_state.cc b/ui/views/animation/ink_drop_state.cc
index e8ea38064..adbefae 100644
--- a/ui/views/animation/ink_drop_state.cc
+++ b/ui/views/animation/ink_drop_state.cc
@@ -16,12 +16,12 @@
       return std::string("HIDDEN");
     case InkDropState::ACTION_PENDING:
       return std::string("ACTION_PENDING");
-    case InkDropState::QUICK_ACTION:
-      return std::string("QUICK_ACTION");
-    case InkDropState::SLOW_ACTION_PENDING:
-      return std::string("SLOW_ACTION_PENDING");
-    case InkDropState::SLOW_ACTION:
-      return std::string("SLOW_ACTION");
+    case InkDropState::ACTION_TRIGGERED:
+      return std::string("ACTION_TRIGGERED");
+    case InkDropState::ALTERNATE_ACTION_PENDING:
+      return std::string("ALTERNATE_ACTION_PENDING");
+    case InkDropState::ALTERNATE_ACTION_TRIGGERED:
+      return std::string("ALTERNATE_ACTION_TRIGGERED");
     case InkDropState::ACTIVATED:
       return std::string("ACTIVATED");
     case InkDropState::DEACTIVATED:
diff --git a/ui/views/animation/ink_drop_state.h b/ui/views/animation/ink_drop_state.h
index 16f4fc2b..2456455c 100644
--- a/ui/views/animation/ink_drop_state.h
+++ b/ui/views/animation/ink_drop_state.h
@@ -16,21 +16,21 @@
   // The ink drop is not visible.
   HIDDEN,
   // The view is being interacted with but the action to be triggered has not
-  // yet been determined.
+  // yet been determined, e.g. a mouse button down.
   ACTION_PENDING,
-  // The quick action for the view has been triggered. e.g. a tap gesture to
-  // click a button.
-  QUICK_ACTION,
-  // A view is being interacted with and the pending action will be a 'slow'
-  // action. e.g. a long press that is still active before releasing.
-  SLOW_ACTION_PENDING,
-  // The slow action for the view has been triggered. e.g. a long press release
-  // to bring up a menu.
-  SLOW_ACTION,
+  // The quick action for the view has been triggered, e.g. a tap gesture or a
+  // mouse click on a button.
+  ACTION_TRIGGERED,
+  // A view is being interacted with and the pending action will be a secondary
+  // action, e.g. a long press.
+  ALTERNATE_ACTION_PENDING,
+  // The alternate action for the view has been triggered, e.g. a long press
+  // release to bring up a menu.
+  ALTERNATE_ACTION_TRIGGERED,
   // An active state for a view that is not currently being interacted with.
   // e.g. a pressed button that is showing a menu.
   ACTIVATED,
-  // A previously active state has been toggled to inactive. e.g. a drop down
+  // A previously active state has been toggled to inactive, e.g. a drop down
   // menu is closed.
   DEACTIVATED,
 };
diff --git a/ui/views/animation/square_ink_drop_animation.cc b/ui/views/animation/square_ink_drop_animation.cc
index 5d78b43..58320aa 100644
--- a/ui/views/animation/square_ink_drop_animation.cc
+++ b/ui/views/animation/square_ink_drop_animation.cc
@@ -54,29 +54,33 @@
   // |large_size_| circle.
   ACTION_PENDING_TRANSFORM,
 
-  // QUICK_ACTION sub animations.
+  // ACTION_TRIGGERED sub animations.
 
-  // The QUICK_ACTION sub animation that is fading out to a hidden opacity.
-  QUICK_ACTION_FADE_OUT,
+  // The ACTION_TRIGGERED sub animation that is fading out to a hidden opacity.
+  ACTION_TRIGGERED_FADE_OUT,
 
-  // The QUICK_ACTION sub animation that transforms the shape to a |large_size_|
+  // The ACTION_TRIGGERED sub animation that transforms the shape to a
+  // |large_size_|
   // circle.
-  QUICK_ACTION_TRANSFORM,
+  ACTION_TRIGGERED_TRANSFORM,
 
-  // SLOW_ACTION_PENDING sub animations.
+  // ALTERNATE_ACTION_PENDING sub animations.
 
-  // The SLOW_ACTION_PENDING animation has only one sub animation which animates
+  // The ALTERNATE_ACTION_PENDING animation has only one sub animation which
+  // animates
   // to a |small_size_| rounded rectangle at visible opacity.
-  SLOW_ACTION_PENDING,
+  ALTERNATE_ACTION_PENDING,
 
-  // SLOW_ACTION sub animations.
+  // ALTERNATE_ACTION_TRIGGERED sub animations.
 
-  // The SLOW_ACTION sub animation that is fading out to a hidden opacity.
-  SLOW_ACTION_FADE_OUT,
+  // The ALTERNATE_ACTION_TRIGGERED sub animation that is fading out to a hidden
+  // opacity.
+  ALTERNATE_ACTION_TRIGGERED_FADE_OUT,
 
-  // The SLOW_ACTION sub animation that transforms the shape to a |large_size_|
+  // The ALTERNATE_ACTION_TRIGGERED sub animation that transforms the shape to a
+  // |large_size_|
   // rounded rectangle.
-  SLOW_ACTION_TRANSFORM,
+  ALTERNATE_ACTION_TRIGGERED_TRANSFORM,
 
   // ACTIVATED sub animations.
 
@@ -99,7 +103,7 @@
   DEACTIVATED_TRANSFORM,
 };
 
-// The scale factor used to burst the QUICK_ACTION bubble as it fades out.
+// The scale factor used to burst the ACTION_TRIGGERED bubble as it fades out.
 const float kQuickActionBurstScale = 1.3f;
 
 // Duration constants for InkDropStateSubAnimations. See the
@@ -109,11 +113,11 @@
     200,  // HIDDEN_TRANSFORM
     0,    // ACTION_PENDING_FADE_IN
     160,  // ACTION_PENDING_TRANSFORM
-    150,  // QUICK_ACTION_FADE_OUT
-    160,  // QUICK_ACTION_TRANSFORM
-    200,  // SLOW_ACTION_PENDING
-    150,  // SLOW_ACTION_FADE_OUT
-    200,  // SLOW_ACTION_TRANSFORM
+    150,  // ACTION_TRIGGERED_FADE_OUT
+    160,  // ACTION_TRIGGERED_TRANSFORM
+    200,  // ALTERNATE_ACTION_PENDING
+    150,  // ALTERNATE_ACTION_TRIGGERED_FADE_OUT
+    200,  // ALTERNATE_ACTION_TRIGGERED_TRANSFORM
     200,  // ACTIVATED_CIRCLE_TRANSFORM
     160,  // ACTIVATED_RECT_TRANSFORM
     150,  // DEACTIVATED_FADE_OUT
@@ -274,7 +278,7 @@
                           ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                           gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
-    case InkDropState::QUICK_ACTION: {
+    case InkDropState::ACTION_TRIGGERED: {
       DCHECK(old_ink_drop_state == InkDropState::HIDDEN ||
              old_ink_drop_state == InkDropState::ACTION_PENDING);
       if (old_ink_drop_state == InkDropState::HIDDEN) {
@@ -282,43 +286,44 @@
                            animation_observer);
       }
       AnimateToOpacity(kHiddenOpacity,
-                       GetAnimationDuration(QUICK_ACTION_FADE_OUT),
+                       GetAnimationDuration(ACTION_TRIGGERED_FADE_OUT),
                        ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                        gfx::Tween::EASE_IN_OUT, animation_observer);
       gfx::Size s = ScaleToRoundedSize(large_size_, kQuickActionBurstScale);
       CalculateCircleTransforms(s, &transforms);
       AnimateToTransforms(transforms,
-                          GetAnimationDuration(QUICK_ACTION_TRANSFORM),
+                          GetAnimationDuration(ACTION_TRIGGERED_TRANSFORM),
                           ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                           gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
     }
-    case InkDropState::SLOW_ACTION_PENDING:
+    case InkDropState::ALTERNATE_ACTION_PENDING:
       DCHECK(old_ink_drop_state == InkDropState::ACTION_PENDING);
       AnimateToOpacity(kVisibleOpacity,
-                       GetAnimationDuration(SLOW_ACTION_PENDING),
+                       GetAnimationDuration(ALTERNATE_ACTION_PENDING),
                        ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                        gfx::Tween::EASE_IN, animation_observer);
       CalculateRectTransforms(small_size_, small_corner_radius_, &transforms);
-      AnimateToTransforms(transforms, GetAnimationDuration(SLOW_ACTION_PENDING),
+      AnimateToTransforms(transforms,
+                          GetAnimationDuration(ALTERNATE_ACTION_PENDING),
                           ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                           gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
-    case InkDropState::SLOW_ACTION: {
-      DCHECK(old_ink_drop_state == InkDropState::SLOW_ACTION_PENDING);
+    case InkDropState::ALTERNATE_ACTION_TRIGGERED: {
+      DCHECK(old_ink_drop_state == InkDropState::ALTERNATE_ACTION_PENDING);
       base::TimeDelta visible_duration =
-          GetAnimationDuration(SLOW_ACTION_TRANSFORM) -
-          GetAnimationDuration(SLOW_ACTION_FADE_OUT);
+          GetAnimationDuration(ALTERNATE_ACTION_TRIGGERED_TRANSFORM) -
+          GetAnimationDuration(ALTERNATE_ACTION_TRIGGERED_FADE_OUT);
       AnimateToOpacity(kVisibleOpacity, visible_duration,
                        ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                        gfx::Tween::EASE_IN_OUT, animation_observer);
-      AnimateToOpacity(kHiddenOpacity,
-                       GetAnimationDuration(SLOW_ACTION_FADE_OUT),
+      AnimateToOpacity(kHiddenOpacity, GetAnimationDuration(
+                                           ALTERNATE_ACTION_TRIGGERED_FADE_OUT),
                        ui::LayerAnimator::ENQUEUE_NEW_ANIMATION,
                        gfx::Tween::EASE_IN_OUT, animation_observer);
       CalculateRectTransforms(large_size_, large_corner_radius_, &transforms);
-      AnimateToTransforms(transforms,
-                          GetAnimationDuration(SLOW_ACTION_TRANSFORM),
+      AnimateToTransforms(transforms, GetAnimationDuration(
+                                          ALTERNATE_ACTION_TRIGGERED_TRANSFORM),
                           ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
                           gfx::Tween::EASE_IN_OUT, animation_observer);
       break;
diff --git a/ui/views/animation/square_ink_drop_animation.h b/ui/views/animation/square_ink_drop_animation.h
index d897a59..d704e7eb 100644
--- a/ui/views/animation/square_ink_drop_animation.h
+++ b/ui/views/animation/square_ink_drop_animation.h
@@ -42,9 +42,9 @@
 //
 //   {All InkDropStates}      => HIDDEN
 //   HIDDEN                   => ACTION_PENDING
-//   HIDDEN, ACTION_PENDING   => QUICK_ACTION
-//   ACTION_PENDING           => SLOW_ACTION_PENDING
-//   SLOW_ACTION_PENDING      => SLOW_ACTION
+//   HIDDEN, ACTION_PENDING   => ACTION_TRIGGERED
+//   ACTION_PENDING           => ALTERNATE_ACTION_PENDING
+//   ALTERNATE_ACTION_PENDING      => ALTERNATE_ACTION_TRIGGERED
 //   {All InkDropStates}      => ACTIVATED
 //   {All InkDropStates}      => DEACTIVATED
 //
diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm
index 6a92058..6600d7fa 100644
--- a/ui/views/cocoa/bridged_native_widget.mm
+++ b/ui/views/cocoa/bridged_native_widget.mm
@@ -97,7 +97,7 @@
 
 const CGFloat kMavericksMenuOpacity = 251.0 / 255.0;
 const CGFloat kYosemiteMenuOpacity = 194.0 / 255.0;
-// const int kYosemiteMenuBlur = 80;
+const int kYosemiteMenuBlur = 80;
 
 // Margin at edge and corners of the window that trigger resizing. These match
 // actual Cocoa resize margins.
@@ -1207,11 +1207,8 @@
     // solid background, but make the CALayer transparent.
     if (base::mac::IsOSYosemiteOrLater()) {
       [background_layer setOpacity:kYosemiteMenuOpacity];
-
-      // TODO(erikchen): Temporarily disabled. https://crbug.com/515627.
-      // CGSSetWindowBackgroundBlurRadius(
-      //     _CGSDefaultConnection(), [window_ windowNumber],
-      //     kYosemiteMenuBlur);
+      CGSSetWindowBackgroundBlurRadius(
+          _CGSDefaultConnection(), [window_ windowNumber], kYosemiteMenuBlur);
       // The blur effect does not occur with a fully transparent (or fully
       // layer-backed) window. Setting a window background will use square
       // corners, so ask the contentView to draw one instead.
diff --git a/ui/views/controls/button/custom_button.cc b/ui/views/controls/button/custom_button.cc
index fc07e0b..f864f5e 100644
--- a/ui/views/controls/button/custom_button.cc
+++ b/ui/views/controls/button/custom_button.cc
@@ -433,7 +433,7 @@
       ink_drop_delegate_(nullptr),
       notify_action_(NOTIFY_ON_RELEASE),
       has_ink_drop_action_on_click_(false),
-      ink_drop_action_on_click_(InkDropState::QUICK_ACTION),
+      ink_drop_action_on_click_(InkDropState::ACTION_TRIGGERED),
       ink_drop_base_color_(gfx::kPlaceholderColor),
       md_focus_ring_(nullptr) {
   hover_animation_.SetSlideDuration(kHoverFadeDurationMs);
diff --git a/ui/views/controls/button/custom_button_unittest.cc b/ui/views/controls/button/custom_button_unittest.cc
index 0b07a34..081ed54e 100644
--- a/ui/views/controls/button/custom_button_unittest.cc
+++ b/ui/views/controls/button/custom_button_unittest.cc
@@ -95,15 +95,15 @@
   void OnAction(InkDropState state) override {
     switch (state) {
       case InkDropState::ACTION_PENDING:
-      case InkDropState::SLOW_ACTION_PENDING:
+      case InkDropState::ALTERNATE_ACTION_PENDING:
       case InkDropState::ACTIVATED:
         *ink_shown_ = true;
         break;
       case InkDropState::HIDDEN:
         *ink_hidden_ = true;
         break;
-      case InkDropState::QUICK_ACTION:
-      case InkDropState::SLOW_ACTION:
+      case InkDropState::ACTION_TRIGGERED:
+      case InkDropState::ALTERNATE_ACTION_TRIGGERED:
       case InkDropState::DEACTIVATED:
         break;
     }
diff --git a/ui/views/controls/button/menu_button.cc b/ui/views/controls/button/menu_button.cc
index 41921b9..4d1a1b9 100644
--- a/ui/views/controls/button/menu_button.cc
+++ b/ui/views/controls/button/menu_button.cc
@@ -150,7 +150,7 @@
 
     if (ink_drop_delegate() && !increment_pressed_lock_called &&
         pressed_lock_count_ == 0) {
-      ink_drop_delegate()->OnAction(InkDropState::QUICK_ACTION);
+      ink_drop_delegate()->OnAction(InkDropState::ACTION_TRIGGERED);
     }
 
     // We must return false here so that the RootView does not get stuck
diff --git a/ui/views/controls/button/menu_button_unittest.cc b/ui/views/controls/button/menu_button_unittest.cc
index 54799ae..fdfc4d0 100644
--- a/ui/views/controls/button/menu_button_unittest.cc
+++ b/ui/views/controls/button/menu_button_unittest.cc
@@ -447,7 +447,7 @@
   button()->set_ink_drop_delegate(&ink_drop_delegate);
   button()->Activate(nullptr);
 
-  EXPECT_EQ(InkDropState::QUICK_ACTION, ink_drop_delegate.state());
+  EXPECT_EQ(InkDropState::ACTION_TRIGGERED, ink_drop_delegate.state());
 }
 
 TEST_F(
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index 531b488..1e4fc76 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -1796,21 +1796,60 @@
 }
 
 void HWNDMessageHandler::OnNCPaint(HRGN rgn) {
+  RECT window_rect;
+  GetWindowRect(hwnd(), &window_rect);
+  RECT dirty_region;
+  // A value of 1 indicates paint all.
+  if (!rgn || rgn == reinterpret_cast<HRGN>(1)) {
+    dirty_region.left = 0;
+    dirty_region.top = 0;
+    dirty_region.right = window_rect.right - window_rect.left;
+    dirty_region.bottom = window_rect.bottom - window_rect.top;
+  } else {
+    RECT rgn_bounding_box;
+    GetRgnBox(rgn, &rgn_bounding_box);
+    if (!IntersectRect(&dirty_region, &rgn_bounding_box, &window_rect)) {
+      SetMsgHandled(FALSE);
+      return;  // Dirty region doesn't intersect window bounds, bail.
+    }
+
+    // rgn_bounding_box is in screen coordinates. Map it to window coordinates.
+    OffsetRect(&dirty_region, -window_rect.left, -window_rect.top);
+  }
+
   // We only do non-client painting if we're not using the system frame.
   // It's required to avoid some native painting artifacts from appearing when
   // the window is resized.
   if (!delegate_->HasNonClientView() ||
       delegate_->GetFrameMode() == FrameMode::SYSTEM_DRAWN) {
+    if (ui::win::IsAeroGlassEnabled()) {
+      // The default WM_NCPAINT handler under Aero Glass doesn't clear the
+      // nonclient area, so it'll remain the default white color. That area is
+      // invisible initially (covered by the window border) but can become
+      // temporarily visible on maximizing or fullscreening, so clear it here.
+      HDC dc = GetWindowDC(hwnd());
+      RECT client_rect;
+      ::GetClientRect(hwnd(), &client_rect);
+      ::MapWindowPoints(hwnd(), nullptr, reinterpret_cast<POINT*>(&client_rect),
+                        2);
+      ::OffsetRect(&client_rect, -window_rect.left, -window_rect.top);
+      // client_rect now is in window space.
+
+      base::win::ScopedRegion base(::CreateRectRgnIndirect(&dirty_region));
+      base::win::ScopedRegion client(::CreateRectRgnIndirect(&client_rect));
+      base::win::ScopedRegion nonclient(::CreateRectRgn(0, 0, 0, 0));
+      ::CombineRgn(nonclient.get(), base.get(), client.get(), RGN_DIFF);
+
+      ::SelectClipRgn(dc, nonclient.get());
+      HBRUSH brush = CreateSolidBrush(0);
+      ::FillRect(dc, &dirty_region, brush);
+      ::DeleteObject(brush);
+      ::ReleaseDC(hwnd(), dc);
+    }
     SetMsgHandled(FALSE);
     return;
   }
 
-  // We have an NC region and need to paint it. We expand the NC region to
-  // include the dirty region of the root view. This is done to minimize
-  // paints.
-  RECT window_rect;
-  GetWindowRect(hwnd(), &window_rect);
-
   gfx::Size root_view_size = delegate_->GetRootViewSize();
   if (gfx::Size(window_rect.right - window_rect.left,
                 window_rect.bottom - window_rect.top) != root_view_size) {
@@ -1822,24 +1861,6 @@
     // all is well.
     return;
   }
-
-  RECT dirty_region;
-  // A value of 1 indicates paint all.
-  if (!rgn || rgn == reinterpret_cast<HRGN>(1)) {
-    dirty_region.left = 0;
-    dirty_region.top = 0;
-    dirty_region.right = window_rect.right - window_rect.left;
-    dirty_region.bottom = window_rect.bottom - window_rect.top;
-  } else {
-    RECT rgn_bounding_box;
-    GetRgnBox(rgn, &rgn_bounding_box);
-    if (!IntersectRect(&dirty_region, &rgn_bounding_box, &window_rect))
-      return;  // Dirty region doesn't intersect window bounds, bale.
-
-    // rgn_bounding_box is in screen coordinates. Map it to window coordinates.
-    OffsetRect(&dirty_region, -window_rect.left, -window_rect.top);
-  }
-
   delegate_->HandlePaintAccelerated(gfx::Rect(dirty_region));
 
   // When using a custom frame, we want to avoid calling DefWindowProc() since
diff --git a/ui/webui/resources/js/i18n_behavior.js b/ui/webui/resources/js/i18n_behavior.js
index 9bb488da..c6b06a41 100644
--- a/ui/webui/resources/js/i18n_behavior.js
+++ b/ui/webui/resources/js/i18n_behavior.js
@@ -17,10 +17,11 @@
 var I18nBehavior = {
   /**
    * @param {string} id The ID of the string to translate.
-   * @param {...string} var_args Placeholders required by the string ($1-9).
+   * @param {...string=} var_args Placeholders required by the string ($0-9).
    * @return {string} A translated, substituted string.
    */
   i18n: function(id, var_args) {
-    return loadTimeData.getStringF.apply(loadTimeData, arguments);
+    return arguments.length == 1 ? loadTimeData.getString(id) :
+        loadTimeData.getStringF.apply(loadTimeData, arguments);
   },
 };