Merge from Chromium at DEPS revision 230120

This commit was generated by merge_to_master.py.

Change-Id: I54bc06b7ee8a07092e74ce3b68c6893508349042
diff --git a/ash/accelerators/accelerator_commands.cc b/ash/accelerators/accelerator_commands.cc
index c3271b4..1cb326d 100644
--- a/ash/accelerators/accelerator_commands.cc
+++ b/ash/accelerators/accelerator_commands.cc
@@ -34,5 +34,16 @@
   return true;
 }
 
+void ToggleMaximized() {
+  wm::WindowState* window_state = wm::GetActiveWindowState();
+  if (!window_state)
+    return;
+  // Get out of fullscreen when in fullscreen mode.
+  if (window_state->IsFullscreen())
+    Shell::GetInstance()->delegate()->ToggleFullscreen();
+  else
+    window_state->ToggleMaximized();
+}
+
 }  // namespace accelerators
 }  // namespace ash
diff --git a/ash/accelerators/accelerator_commands.h b/ash/accelerators/accelerator_commands.h
index 5fe2775..36006e7 100644
--- a/ash/accelerators/accelerator_commands.h
+++ b/ash/accelerators/accelerator_commands.h
@@ -17,6 +17,10 @@
 // restored.
 ASH_EXPORT bool ToggleMinimized();
 
+// Toggles the maxmized state. If the window is in fulllscreen, it exits
+// fullscreen mode.
+ASH_EXPORT void ToggleMaximized();
+
 }  // namespace accelerators
 }  // namespace ash
 
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index cf3abeb..4a73ee4 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -846,7 +846,7 @@
       return true;
     }
     case TOGGLE_MAXIMIZED: {
-      shell->delegate()->ToggleMaximized();
+      accelerators::ToggleMaximized();
       return true;
     }
     case WINDOW_POSITION_CENTER: {
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 957b765..47d82a3 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -530,7 +530,14 @@
   }
 }
 
-TEST_F(AcceleratorControllerTest, ControllerContext) {
+#if defined(OS_WIN) && defined(USE_AURA)
+// Bug 297650.
+#define MAYBE_ControllerContext DISABLED_ControllerContext
+#else
+#define MAYBE_ControllerContext ControllerContext
+#endif
+
+TEST_F(AcceleratorControllerTest, MAYBE_ControllerContext) {
   ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
   ui::Accelerator accelerator_a2(ui::VKEY_A, ui::EF_NONE);
   ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
diff --git a/ash/ash.gyp b/ash/ash.gyp
index baa8015..df74c49 100644
--- a/ash/ash.gyp
+++ b/ash/ash.gyp
@@ -131,6 +131,10 @@
         'drag_drop/drag_image_view.cc',
         'drag_drop/drag_image_view.h',
         'event_rewriter_delegate.h',
+        'first_run/first_run_helper.cc',
+        'first_run/first_run_helper.h',
+        'first_run/first_run_helper_impl.cc',
+        'first_run/first_run_helper_impl.h',
         'focus_cycler.cc',
         'focus_cycler.h',
         'high_contrast/high_contrast_controller.cc',
@@ -160,8 +164,6 @@
         'launcher/launcher_model_observer.h',
         'launcher/launcher_types.cc',
         'launcher/launcher_types.h',
-        'launcher/launcher_view.cc',
-        'launcher/launcher_view.h',
         'magnifier/magnification_controller.cc',
         'magnifier/magnification_controller.h',
         'magnifier/magnifier_constants.h',
@@ -213,6 +215,8 @@
         'shelf/shelf_types.h',
         'shelf/shelf_util.cc',
         'shelf/shelf_util.h',
+        'shelf/shelf_view.cc',
+        'shelf/shelf_view.h',
         'shelf/shelf_widget.cc',
         'shelf/shelf_widget.h',
         'shell.cc',
@@ -435,8 +439,10 @@
         'wm/event_client_impl.h',
         'wm/event_rewriter_event_filter.cc',
         'wm/event_rewriter_event_filter.h',
-        'wm/frame_painter.cc',
-        'wm/frame_painter.h',
+        'wm/frame_border_hit_test_controller.cc',
+        'wm/frame_border_hit_test_controller.h',
+        'wm/header_painter.cc',
+        'wm/header_painter.h',
         'wm/gestures/long_press_affordance_handler.cc',
         'wm/gestures/long_press_affordance_handler.h',
         'wm/gestures/overview_gesture_handler.cc',
@@ -618,8 +624,8 @@
         'test/cursor_manager_test_api.h',
         'test/launcher_test_api.cc',
         'test/launcher_test_api.h',
-        'test/launcher_view_test_api.cc',
-        'test/launcher_view_test_api.h',
+        'test/shelf_view_test_api.cc',
+        'test/shelf_view_test_api.h',
         'test/display_manager_test_api.cc',
         'test/display_manager_test_api.h',
         'test/launcher_item_delegate_manager_test_api.cc',
@@ -664,6 +670,11 @@
             'test/test_metro_viewer_process_host.cc',
             'test/test_metro_viewer_process_host.h',
           ],
+          'msvs_settings': {
+            'VCCLCompilerTool': {
+              'ForcedIncludeFiles': [ 'build/intsafe_workaround.h' ],
+            },
+          },
         }],
       ],
     },
@@ -675,7 +686,7 @@
         '../base/base.gyp:test_support_base',
         '../chrome/chrome_resources.gyp:packed_resources',
         '../content/content.gyp:content_browser',
-        '../content/content.gyp:test_support_content',
+        '../content/content_shell_and_tests.gyp:test_support_content',
         '../skia/skia.gyp:skia',
         '../testing/gtest.gyp:gtest',
         '../third_party/icu/icu.gyp:icui18n',
@@ -735,7 +746,6 @@
         'keyboard_overlay/keyboard_overlay_view_unittest.cc',
         'launcher/launcher_model_unittest.cc',
         'launcher/launcher_unittest.cc',
-        'launcher/launcher_view_unittest.cc',
         'magnifier/magnification_controller_unittest.cc',
         'root_window_controller_unittest.cc',
         'screen_ash_unittest.cc',
@@ -746,6 +756,7 @@
         'shelf/shelf_layout_manager_unittest.cc',
         'shelf/shelf_navigator_unittest.cc',
         'shelf/shelf_tooltip_manager_unittest.cc',
+        'shelf/shelf_view_unittest.cc',
         'shelf/shelf_widget_unittest.cc',
         'shell/app_list.cc',
         'shell/bubble.cc',
@@ -791,13 +802,14 @@
         'wm/dock/docked_window_layout_manager_unittest.cc',
         'wm/dock/docked_window_resizer_unittest.cc',
         'wm/drag_window_resizer_unittest.cc',
-        'wm/frame_painter_unittest.cc',
+        'wm/header_painter_unittest.cc',
         'wm/lock_state_controller_unittest.cc',
         'wm/mru_window_tracker_unittest.cc',
         'wm/overview/window_selector_unittest.cc',
         'wm/panels/panel_layout_manager_unittest.cc',
         'wm/panels/panel_window_resizer_unittest.cc',
         'wm/partial_screenshot_view_unittest.cc',
+        'wm/resize_shadow_and_cursor_unittest.cc',
         'wm/screen_dimmer_unittest.cc',
         'wm/stacking_controller_unittest.cc',
         'wm/sticky_keys_unittest.cc',
@@ -873,7 +885,7 @@
         '../base/base.gyp:base',
         '../base/base.gyp:base_i18n',
         '../chrome/chrome_resources.gyp:packed_resources',
-        '../content/content.gyp:content_shell_lib',
+        '../content/content_shell_and_tests.gyp:content_shell_lib',
         '../content/content.gyp:content',
         '../skia/skia.gyp:skia',
         '../third_party/icu/icu.gyp:icui18n',
diff --git a/ash/ash_switches.cc b/ash/ash_switches.cc
index 70b1340..394e5a6 100644
--- a/ash/ash_switches.cc
+++ b/ash/ash_switches.cc
@@ -91,6 +91,9 @@
 const char kAshEnableAlternateFrameCaptionButtonStyle[] =
     "ash-enable-alternate-caption-button";
 
+// Enables settings ui to control the autoclick accessibility feature.
+const char kAshEnableAutoclick[] = "ash-enable-autoclick";
+
 // Always enable brightness control. Used by machines that don't report their
 // main monitor as internal.
 const char kAshEnableBrightnessControl[] = "ash-enable-brightness-control";
diff --git a/ash/ash_switches.h b/ash/ash_switches.h
index a979c9f..099b5b9 100644
--- a/ash/ash_switches.h
+++ b/ash/ash_switches.h
@@ -42,6 +42,7 @@
 #endif
 ASH_EXPORT extern const char kAshEnableAdvancedGestures[];
 ASH_EXPORT extern const char kAshEnableAlternateFrameCaptionButtonStyle[];
+ASH_EXPORT extern const char kAshEnableAutoclick[];
 ASH_EXPORT extern const char kAshEnableBrightnessControl[];
 ASH_EXPORT extern const char kAshEnableDockedWindows[];
 #if defined(OS_CHROMEOS)
diff --git a/ash/autoclick/autoclick_controller.cc b/ash/autoclick/autoclick_controller.cc
index c2804a7..848fea9 100644
--- a/ash/autoclick/autoclick_controller.cc
+++ b/ash/autoclick/autoclick_controller.cc
@@ -16,12 +16,8 @@
 
 namespace ash {
 
-namespace {
-
-// The default wait time between last mouse movement and sending the autoclick.
-int kDefaultClickWaitTimeMs = 500;
-
-}  // namespace
+// static.
+const int AutoclickController::kDefaultAutoclickDelayMs = 400;
 
 class AutoclickControllerImpl : public AutoclickController,
                                 public ui::EventHandler {
@@ -33,8 +29,8 @@
   // AutoclickController overrides:
   virtual void SetEnabled(bool enabled) OVERRIDE;
   virtual bool IsEnabled() const OVERRIDE;
-  virtual void SetClickWaitTime(int wait_time_ms) OVERRIDE;
-  virtual int GetClickWaitTime() const OVERRIDE;
+  virtual void SetAutoclickDelay(int delay_ms) OVERRIDE;
+  virtual int GetAutoclickDelay() const OVERRIDE;
 
   // ui::EventHandler overrides:
   virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
@@ -46,7 +42,7 @@
   void DoAutoclick();
 
   bool enabled_;
-  int wait_time_ms_;
+  int delay_ms_;
   int mouse_event_flags_;
   scoped_ptr<base::Timer> autoclick_timer_;
 
@@ -56,7 +52,7 @@
 
 AutoclickControllerImpl::AutoclickControllerImpl()
     : enabled_(false),
-      wait_time_ms_(kDefaultClickWaitTimeMs),
+      delay_ms_(kDefaultAutoclickDelayMs),
       mouse_event_flags_(ui::EF_NONE) {
   InitClickTimer();
 }
@@ -81,19 +77,19 @@
   return enabled_;
 }
 
-void AutoclickControllerImpl::SetClickWaitTime(int wait_time_ms) {
-  wait_time_ms_ = wait_time_ms;
+void AutoclickControllerImpl::SetAutoclickDelay(int delay_ms) {
+  delay_ms_ = delay_ms;
   InitClickTimer();
 }
 
-int AutoclickControllerImpl::GetClickWaitTime() const {
-  return wait_time_ms_;
+int AutoclickControllerImpl::GetAutoclickDelay() const {
+  return delay_ms_;
 }
 
 void AutoclickControllerImpl::InitClickTimer() {
   autoclick_timer_.reset(new base::Timer(
       FROM_HERE,
-      base::TimeDelta::FromMilliseconds(wait_time_ms_),
+      base::TimeDelta::FromMilliseconds(delay_ms_),
       base::Bind(&AutoclickControllerImpl::DoAutoclick,
                  base::Unretained(this)),
       false));
diff --git a/ash/autoclick/autoclick_controller.h b/ash/autoclick/autoclick_controller.h
index 481660f..46b9ef4 100644
--- a/ash/autoclick/autoclick_controller.h
+++ b/ash/autoclick/autoclick_controller.h
@@ -5,12 +5,14 @@
 #ifndef ASH_AUTOCLICK_AUTOCLICK_CONTROLLER_H
 #define ASH_AUTOCLICK_AUTOCLICK_CONTROLLER_H
 
+#include "ash/ash_export.h"
+
 namespace ash {
 
 // Controls the autoclick a11y feature in ash.
 // If enabled, we will automatically send a click event a short time after
 // the mouse had been at rest.
-class AutoclickController {
+class ASH_EXPORT AutoclickController {
  public:
   virtual ~AutoclickController() {}
 
@@ -20,15 +22,19 @@
   // Returns true if autoclicking is enabled.
   virtual bool IsEnabled() const = 0;
 
-  // Set the time to wait from when the mouse stops moving to when
-  // the autoclick event is sent.
-  virtual void SetClickWaitTime(int wait_time_ms) = 0;
+  // Set the time to wait in milliseconds from when the mouse stops moving
+  // to when the autoclick event is sent.
+  virtual void SetAutoclickDelay(int delay_ms) = 0;
 
-  // Returns the wait time in milliseconds.
-  virtual int GetClickWaitTime() const = 0;
+  // Returns the autoclick delay in milliseconds.
+  virtual int GetAutoclickDelay() const = 0;
 
   static AutoclickController* CreateInstance();
 
+  // The default wait time between last mouse movement and sending
+  // the autoclick.
+  static const int kDefaultAutoclickDelayMs;
+
  protected:
   AutoclickController() {}
 };
diff --git a/ash/autoclick/autoclick_unittest.cc b/ash/autoclick/autoclick_unittest.cc
index dd462f4..d756b58 100644
--- a/ash/autoclick/autoclick_unittest.cc
+++ b/ash/autoclick/autoclick_unittest.cc
@@ -63,7 +63,7 @@
   virtual void SetUp() OVERRIDE {
     test::AshTestBase::SetUp();
     Shell::GetInstance()->AddPreTargetHandler(&mouse_event_capturer_);
-    GetAutoclickController()->SetClickWaitTime(0);
+    GetAutoclickController()->SetAutoclickDelay(0);
 
     // Move mouse to deterministic location at the start of each test.
     GetEventGenerator().MoveMouseTo(10, 10);
diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc
index 180f008..0959bb6 100644
--- a/ash/desktop_background/desktop_background_controller.cc
+++ b/ash/desktop_background/desktop_background_controller.cc
@@ -43,8 +43,6 @@
 // changed?
 const int kWallpaperReloadDelayMs = 2000;
 
-const SkColor kTransparentColor = SkColorSetARGB(0x00, 0x00, 0x00, 0x00);
-
 internal::RootWindowLayoutManager* GetRootWindowLayoutManager(
     aura::RootWindow* root_window) {
   return static_cast<internal::RootWindowLayoutManager*>(
diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc
index 53eb429..5714b93 100644
--- a/ash/display/display_controller.cc
+++ b/ash/display/display_controller.cc
@@ -297,7 +297,7 @@
     const gfx::Display& display = display_manager->GetDisplayAt(i);
     if (primary_display_id != display.id()) {
       aura::RootWindow* root = AddRootWindowForDisplay(display);
-      Shell::GetInstance()->InitRootWindowForSecondaryDisplay(root);
+      internal::RootWindowController::CreateForSecondaryDisplay(root);
     }
   }
   UpdateHostWindowNames();
@@ -370,37 +370,6 @@
   return controllers;
 }
 
-void DisplayController::SetLayoutForCurrentDisplays(
-    const DisplayLayout& layout_relative_to_primary) {
-  DCHECK_EQ(2U, GetDisplayManager()->GetNumDisplays());
-  if (GetDisplayManager()->GetNumDisplays() < 2)
-    return;
-  const gfx::Display& primary = GetPrimaryDisplay();
-  const DisplayIdPair pair = GetDisplayManager()->GetCurrentDisplayIdPair();
-  // Invert if the primary was swapped.
-  DisplayLayout to_set = pair.first == primary.id() ?
-      layout_relative_to_primary : layout_relative_to_primary.Invert();
-
-  internal::DisplayLayoutStore* layout_store =
-      GetDisplayManager()->layout_store();
-  DisplayLayout current_layout =
-      layout_store->GetRegisteredDisplayLayout(pair);
-  if (to_set.position != current_layout.position ||
-      to_set.offset != current_layout.offset) {
-    to_set.primary_id = primary.id();
-    layout_store->RegisterLayoutForDisplayIdPair(
-        pair.first, pair.second, to_set);
-    PreDisplayConfigurationChange(false);
-    // TODO(oshima): Call UpdateDisplays instead.
-    UpdateDisplayBoundsForLayout();
-    // Primary's bounds stay the same. Just notify bounds change
-    // on the secondary.
-    Shell::GetInstance()->screen()->NotifyBoundsChanged(
-        ScreenAsh::GetSecondaryDisplay());
-    PostDisplayConfigurationChange();
-  }
-}
-
 void DisplayController::ToggleMirrorMode() {
   internal::DisplayManager* display_manager = GetDisplayManager();
   if (display_manager->num_connected_displays() <= 1)
@@ -648,7 +617,7 @@
       primary_display_id = display.id();
     DCHECK(!root_windows_.empty());
     aura::RootWindow* root = AddRootWindowForDisplay(display);
-    Shell::GetInstance()->InitRootWindowForSecondaryDisplay(root);
+    internal::RootWindowController::CreateForSecondaryDisplay(root);
   }
 }
 
@@ -793,20 +762,6 @@
   return root_window;
 }
 
-void DisplayController::UpdateDisplayBoundsForLayout() {
-  internal::DisplayManager* display_manager = GetDisplayManager();
-  if (Shell::GetScreen()->GetNumDisplays() < 2 ||
-      display_manager->num_connected_displays() < 2) {
-    return;
-  }
-  DCHECK_EQ(2, Shell::GetScreen()->GetNumDisplays());
-
-  const DisplayLayout layout = display_manager->GetCurrentDisplayLayout();
-  display_manager->UpdateDisplayBoundsForLayoutById(
-      layout, GetPrimaryDisplay(),
-      ScreenAsh::GetSecondaryDisplay().id());
-}
-
 void DisplayController::OnFadeOutForSwapDisplayFinished() {
 #if defined(OS_CHROMEOS) && defined(USE_X11)
   SetPrimaryDisplay(ScreenAsh::GetSecondaryDisplay());
diff --git a/ash/display/display_controller.h b/ash/display/display_controller.h
index bbfd55a..dbe5f50 100644
--- a/ash/display/display_controller.h
+++ b/ash/display/display_controller.h
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "ash/ash_export.h"
-#include "ash/display/display_layout.h"
 #include "ash/display/display_manager.h"
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
@@ -129,10 +128,6 @@
   gfx::Insets GetOverscanInsets(int64 display_id) const;
   void SetOverscanInsets(int64 display_id, const gfx::Insets& insets_in_dip);
 
-  // Sets the layout for the current display pair. The |layout| specifies
-  // the locaion of the secondary display relative to the primary.
-  void SetLayoutForCurrentDisplays(const DisplayLayout& layout);
-
   // Checks if the mouse pointer is on one of displays, and moves to
   // the center of the nearest display if it's outside of all displays.
   void EnsurePointerInDisplays();
@@ -179,11 +174,6 @@
   // map.
   aura::RootWindow* AddRootWindowForDisplay(const gfx::Display& display);
 
-  void UpdateDisplayBoundsForLayout();
-
-  void SetLayoutForDisplayIdPair(const DisplayIdPair& display_pair,
-                                 const DisplayLayout& layout);
-
   void OnFadeOutForSwapDisplayFinished();
 
   void UpdateHostWindowNames();
diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc
index c2e3e7d..3d4acf2 100644
--- a/ash/display/display_controller_unittest.cc
+++ b/ash/display/display_controller_unittest.cc
@@ -165,7 +165,7 @@
                                         int offset) {
   DisplayLayout layout(position, offset);
   ASSERT_GT(Shell::GetScreen()->GetNumDisplays(), 1);
-  Shell::GetInstance()->display_controller()->
+  Shell::GetInstance()->display_manager()->
       SetLayoutForCurrentDisplays(layout);
 }
 
@@ -530,36 +530,6 @@
   EXPECT_EQ(0, observer.GetActivationChangedCountAndReset());
 }
 
-TEST_F(DisplayControllerTest, InvertLayout) {
-  EXPECT_EQ("left, 0",
-            DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString());
-  EXPECT_EQ("left, -100",
-            DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString());
-  EXPECT_EQ("left, 50",
-            DisplayLayout(DisplayLayout::RIGHT, -50).Invert().ToString());
-
-  EXPECT_EQ("right, 0",
-            DisplayLayout(DisplayLayout::LEFT, 0).Invert().ToString());
-  EXPECT_EQ("right, -90",
-            DisplayLayout(DisplayLayout::LEFT, 90).Invert().ToString());
-  EXPECT_EQ("right, 60",
-            DisplayLayout(DisplayLayout::LEFT, -60).Invert().ToString());
-
-  EXPECT_EQ("bottom, 0",
-            DisplayLayout(DisplayLayout::TOP, 0).Invert().ToString());
-  EXPECT_EQ("bottom, -80",
-            DisplayLayout(DisplayLayout::TOP, 80).Invert().ToString());
-  EXPECT_EQ("bottom, 70",
-            DisplayLayout(DisplayLayout::TOP, -70).Invert().ToString());
-
-  EXPECT_EQ("top, 0",
-            DisplayLayout(DisplayLayout::BOTTOM, 0).Invert().ToString());
-  EXPECT_EQ("top, -70",
-            DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString());
-  EXPECT_EQ("top, 80",
-            DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString());
-}
-
 TEST_F(DisplayControllerTest, SwapPrimary) {
   if (!SupportsMultipleDisplays())
     return;
@@ -574,7 +544,7 @@
   gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay();
 
   DisplayLayout display_layout(DisplayLayout::RIGHT, 50);
-  display_controller->SetLayoutForCurrentDisplays(display_layout);
+  display_manager->SetLayoutForCurrentDisplays(display_layout);
 
   EXPECT_NE(primary_display.id(), secondary_display.id());
   aura::RootWindow* primary_root =
@@ -668,7 +638,7 @@
   gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay();
 
   DisplayLayout display_layout(DisplayLayout::RIGHT, 50);
-  display_controller->SetLayoutForCurrentDisplays(display_layout);
+  display_manager->SetLayoutForCurrentDisplays(display_layout);
 
   EXPECT_NE(primary_display.id(), secondary_display.id());
   aura::RootWindow* primary_root =
@@ -759,7 +729,7 @@
   gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay();
 
   DisplayLayout display_layout(DisplayLayout::RIGHT, 50);
-  display_controller->SetLayoutForCurrentDisplays(display_layout);
+  display_manager->SetLayoutForCurrentDisplays(display_layout);
 
   EXPECT_NE(primary_display.id(), secondary_display.id());
   aura::RootWindow* primary_root =
@@ -924,48 +894,6 @@
   EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor());
 }
 
-#if defined(OS_WIN)
-// TODO(scottmg): RootWindow doesn't get resized on Windows
-// Ash. http://crbug.com/247916.
-#define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin
-#else
-#define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin
-#endif
-
-TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) {
-  UpdateDisplay("100x200,300x400");
-  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
-  Shell::RootWindowList root_windows =
-      Shell::GetInstance()->GetAllRootWindows();
-  ASSERT_EQ(2U, root_windows.size());
-  EXPECT_EQ("1,1", root_windows[0]->GetHostOrigin().ToString());
-  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
-  // UpdateDisplay set the origin if it's not set.
-  EXPECT_NE("1,1", root_windows[1]->GetHostOrigin().ToString());
-  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
-
-  UpdateDisplay("100x200,200+300-300x400");
-  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
-  EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
-  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
-  EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString());
-  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
-
-  UpdateDisplay("400+500-200x300,300x400");
-  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
-  EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString());
-  EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString());
-  EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString());
-  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
-
-  UpdateDisplay("100+200-100x200,300+500-200x300");
-  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
-  EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString());
-  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
-  EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString());
-  EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString());
-}
-
 TEST_F(DisplayControllerTest, OverscanInsets) {
   if (!SupportsMultipleDisplays())
     return;
@@ -1018,8 +946,6 @@
   if (!SupportsMultipleDisplays())
     return;
 
-  DisplayController* display_controller =
-      Shell::GetInstance()->display_controller();
   internal::DisplayManager* display_manager =
       Shell::GetInstance()->display_manager();
   TestEventHandler event_handler;
@@ -1052,7 +978,7 @@
   EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id));
 
   DisplayLayout display_layout(DisplayLayout::BOTTOM, 50);
-  display_controller->SetLayoutForCurrentDisplays(display_layout);
+  display_manager->SetLayoutForCurrentDisplays(display_layout);
   EXPECT_EQ("50,120 150x200",
             ScreenAsh::GetSecondaryDisplay().bounds().ToString());
 
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc
index 73b8302..9ffa6c8 100644
--- a/ash/display/display_manager.cc
+++ b/ash/display/display_manager.cc
@@ -271,7 +271,7 @@
     int64 mirrored_id = mirrored_display().id();
     return std::make_pair(displays_[0].id(), mirrored_id);
   } else {
-    CHECK_LE(2u, displays_.size());
+    CHECK_GE(2u, displays_.size());
     int64 id_at_zero = displays_[0].id();
     if (id_at_zero == gfx::Display::InternalDisplayId() ||
         id_at_zero == first_display_id()) {
@@ -282,6 +282,43 @@
   }
 }
 
+void DisplayManager::SetLayoutForCurrentDisplays(
+    const DisplayLayout& layout_relative_to_primary) {
+  DCHECK_EQ(2U, GetNumDisplays());
+  if (GetNumDisplays() < 2)
+    return;
+  const gfx::Display& primary = Shell::GetScreen()->GetPrimaryDisplay();
+  const DisplayIdPair pair = GetCurrentDisplayIdPair();
+  // Invert if the primary was swapped.
+  DisplayLayout to_set = pair.first == primary.id() ?
+      layout_relative_to_primary : layout_relative_to_primary.Invert();
+
+  DisplayLayout current_layout =
+      layout_store_->GetRegisteredDisplayLayout(pair);
+  if (to_set.position != current_layout.position ||
+      to_set.offset != current_layout.offset) {
+    to_set.primary_id = primary.id();
+    layout_store_->RegisterLayoutForDisplayIdPair(
+        pair.first, pair.second, to_set);
+    if (delegate_)
+      delegate_->PreDisplayConfigurationChange(false);
+    // PreDisplayConfigurationChange(false);
+    // TODO(oshima): Call UpdateDisplays instead.
+    const DisplayLayout layout = GetCurrentDisplayLayout();
+    UpdateDisplayBoundsForLayoutById(
+        layout, primary,
+        ScreenAsh::GetSecondaryDisplay().id());
+
+    //UpdateCurrentDisplayBoundsForLayout();
+    // Primary's bounds stay the same. Just notify bounds change
+    // on the secondary.
+    Shell::GetInstance()->screen()->NotifyBoundsChanged(
+        ScreenAsh::GetSecondaryDisplay());
+    if (delegate_)
+      delegate_->PostDisplayConfigurationChange();
+  }
+}
+
 const gfx::Display& DisplayManager::GetDisplayForId(int64 id) const {
   gfx::Display* display =
       const_cast<DisplayManager*>(this)->FindDisplayForId(id);
@@ -903,7 +940,6 @@
   return false;
 }
 
-
 // static
 void DisplayManager::UpdateDisplayBoundsForLayout(
     const DisplayLayout& layout,
diff --git a/ash/display/display_manager.h b/ash/display/display_manager.h
index d905f7c..6b547eb 100644
--- a/ash/display/display_manager.h
+++ b/ash/display/display_manager.h
@@ -113,6 +113,11 @@
   // Returns the current display pair.
   DisplayIdPair GetCurrentDisplayIdPair() const;
 
+  // Sets the layout for the current display pair. The |layout| specifies
+  // the locaion of the secondary display relative to the primary.
+  void SetLayoutForCurrentDisplays(
+      const DisplayLayout& layout_relative_to_primary);
+
   // Returns display for given |id|;
   const gfx::Display& GetDisplayForId(int64 id) const;
 
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc
index 58c7cb5..7e8652e 100644
--- a/ash/display/display_manager_unittest.cc
+++ b/ash/display/display_manager_unittest.cc
@@ -1048,5 +1048,77 @@
   EXPECT_EQ(2U, display_manager->num_connected_displays());
 }
 
+TEST_F(DisplayManagerTest, InvertLayout) {
+  EXPECT_EQ("left, 0",
+            DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString());
+  EXPECT_EQ("left, -100",
+            DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString());
+  EXPECT_EQ("left, 50",
+            DisplayLayout(DisplayLayout::RIGHT, -50).Invert().ToString());
+
+  EXPECT_EQ("right, 0",
+            DisplayLayout(DisplayLayout::LEFT, 0).Invert().ToString());
+  EXPECT_EQ("right, -90",
+            DisplayLayout(DisplayLayout::LEFT, 90).Invert().ToString());
+  EXPECT_EQ("right, 60",
+            DisplayLayout(DisplayLayout::LEFT, -60).Invert().ToString());
+
+  EXPECT_EQ("bottom, 0",
+            DisplayLayout(DisplayLayout::TOP, 0).Invert().ToString());
+  EXPECT_EQ("bottom, -80",
+            DisplayLayout(DisplayLayout::TOP, 80).Invert().ToString());
+  EXPECT_EQ("bottom, 70",
+            DisplayLayout(DisplayLayout::TOP, -70).Invert().ToString());
+
+  EXPECT_EQ("top, 0",
+            DisplayLayout(DisplayLayout::BOTTOM, 0).Invert().ToString());
+  EXPECT_EQ("top, -70",
+            DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString());
+  EXPECT_EQ("top, 80",
+            DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString());
+}
+
+#if defined(OS_WIN)
+// TODO(scottmg): RootWindow doesn't get resized on Windows
+// Ash. http://crbug.com/247916.
+#define MAYBE_UpdateDisplayWithHostOrigin DISABLED_UpdateDisplayWithHostOrigin
+#else
+#define MAYBE_UpdateDisplayWithHostOrigin UpdateDisplayWithHostOrigin
+#endif
+
+TEST_F(DisplayManagerTest, MAYBE_UpdateDisplayWithHostOrigin) {
+  UpdateDisplay("100x200,300x400");
+  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
+  Shell::RootWindowList root_windows =
+      Shell::GetInstance()->GetAllRootWindows();
+  ASSERT_EQ(2U, root_windows.size());
+  EXPECT_EQ("1,1", root_windows[0]->GetHostOrigin().ToString());
+  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
+  // UpdateDisplay set the origin if it's not set.
+  EXPECT_NE("1,1", root_windows[1]->GetHostOrigin().ToString());
+  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
+
+  UpdateDisplay("100x200,200+300-300x400");
+  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
+  EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
+  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
+  EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString());
+  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
+
+  UpdateDisplay("400+500-200x300,300x400");
+  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
+  EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString());
+  EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString());
+  EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString());
+  EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
+
+  UpdateDisplay("100+200-100x200,300+500-200x300");
+  ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
+  EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString());
+  EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
+  EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString());
+  EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString());
+}
+
 }  // namespace internal
 }  // namespace ash
diff --git a/ash/display/mirror_window_controller.cc b/ash/display/mirror_window_controller.cc
index 3429df7..acdfe4c 100644
--- a/ash/display/mirror_window_controller.cc
+++ b/ash/display/mirror_window_controller.cc
@@ -229,6 +229,7 @@
     reflector_ = NULL;
     NoneCaptureClient* capture_client = static_cast<NoneCaptureClient*>(
         aura::client::GetCaptureClient(root_window_.get()));
+    aura::client::SetCaptureClient(root_window_.get(), NULL);
     delete capture_client;
 
     root_window_->RemoveRootWindowObserver(
diff --git a/ash/display/mouse_cursor_event_filter_unittest.cc b/ash/display/mouse_cursor_event_filter_unittest.cc
index e4a25a8..949c7c0 100644
--- a/ash/display/mouse_cursor_event_filter_unittest.cc
+++ b/ash/display/mouse_cursor_event_filter_unittest.cc
@@ -7,7 +7,6 @@
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/cursor_manager_test_api.h"
-#include "ash/display/display_controller.h"
 #include "ash/display/display_layout_store.h"
 #include "ash/display/display_manager.h"
 #include "ui/aura/env.h"
@@ -219,10 +218,9 @@
   UpdateDisplay("360x360,700x700");
   Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
 
-  DisplayController* controller =
-      Shell::GetInstance()->display_controller();
+  DisplayManager* display_manager = Shell::GetInstance()->display_manager();
   DisplayLayout layout(DisplayLayout::RIGHT, 0);
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("359,16 1x344", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("360,0 1x360", event_filter()->dst_indicator_bounds_.ToString());
@@ -232,7 +230,7 @@
 
   // Move 2nd display downwards a bit.
   layout.offset = 5;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   // This is same as before because the 2nd display's y is above
   // the indicator's x.
@@ -245,7 +243,7 @@
   // Move it down further so that the shared edge is shorter than
   // minimum hole size (160).
   layout.offset = 200;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("359,200 1x160", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("360,200 1x160", event_filter()->dst_indicator_bounds_.ToString());
@@ -255,7 +253,7 @@
 
   // Now move 2nd display upwards
   layout.offset = -5;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("359,16 1x344", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("360,0 1x360", event_filter()->dst_indicator_bounds_.ToString());
@@ -275,10 +273,9 @@
   UpdateDisplay("360x360,700x700");
   Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
 
-  DisplayController* controller =
-      Shell::GetInstance()->display_controller();
+  DisplayManager* display_manager = Shell::GetInstance()->display_manager();
   DisplayLayout layout(DisplayLayout::LEFT, 0);
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("0,16 1x344", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("-1,0 1x360", event_filter()->dst_indicator_bounds_.ToString());
@@ -287,7 +284,7 @@
   EXPECT_EQ("0,0 1x360", event_filter()->dst_indicator_bounds_.ToString());
 
   layout.offset = 250;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("0,250 1x110", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("-1,250 1x110", event_filter()->dst_indicator_bounds_.ToString());
@@ -304,10 +301,9 @@
   UpdateDisplay("360x360,700x700");
   Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
 
-  DisplayController* controller =
-      Shell::GetInstance()->display_controller();
+  DisplayManager* display_manager = Shell::GetInstance()->display_manager();
   DisplayLayout layout(DisplayLayout::TOP, 0);
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("0,0 360x1", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("0,-1 360x1", event_filter()->dst_indicator_bounds_.ToString());
@@ -316,7 +312,7 @@
   EXPECT_EQ("0,0 360x1", event_filter()->dst_indicator_bounds_.ToString());
 
   layout.offset = 250;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("250,0 110x1", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("250,-1 110x1", event_filter()->dst_indicator_bounds_.ToString());
@@ -326,7 +322,7 @@
 
   layout.position = DisplayLayout::BOTTOM;
   layout.offset = 0;
-  controller->SetLayoutForCurrentDisplays(layout);
+  display_manager->SetLayoutForCurrentDisplays(layout);
   event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */);
   EXPECT_EQ("0,359 360x1", event_filter()->src_indicator_bounds_.ToString());
   EXPECT_EQ("0,360 360x1", event_filter()->dst_indicator_bounds_.ToString());
@@ -345,9 +341,8 @@
     return;
 
   UpdateDisplay("400x400,800x800*2");
-  DisplayController* controller =
-      Shell::GetInstance()->display_controller();
-  controller->SetLayoutForCurrentDisplays(
+  DisplayManager* display_manager = Shell::GetInstance()->display_manager();
+  display_manager->SetLayoutForCurrentDisplays(
       DisplayLayout(DisplayLayout::RIGHT, 0));
   Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
   ASSERT_EQ(2U, root_windows.size());
diff --git a/ash/display/root_window_transformers.cc b/ash/display/root_window_transformers.cc
index a33bb71..efb11f3 100644
--- a/ash/display/root_window_transformers.cc
+++ b/ash/display/root_window_transformers.cc
@@ -29,8 +29,10 @@
 namespace internal {
 namespace {
 
+#if defined(OS_WIN)
 DEFINE_WINDOW_PROPERTY_KEY(gfx::Display::Rotation, kRotationPropertyKey,
                            gfx::Display::ROTATE_0);
+#endif
 
 // Round near zero value to zero.
 void RoundNearZero(gfx::Transform* transform) {
diff --git a/ash/display/root_window_transformers_unittest.cc b/ash/display/root_window_transformers_unittest.cc
index b300036..9cb362e 100644
--- a/ash/display/root_window_transformers_unittest.cc
+++ b/ash/display/root_window_transformers_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "ash/display/root_window_transformers.h"
 
-#include "ash/display/display_controller.h"
 #include "ash/display/display_info.h"
 #include "ash/display/display_manager.h"
 #include "ash/launcher/launcher.h"
@@ -134,8 +133,6 @@
 #endif
 
 TEST_F(RootWindowTransformersTest, MAYBE_RotateAndMagnify) {
-  DisplayController* display_controller =
-      Shell::GetInstance()->display_controller();
   MagnificationController* magnifier =
       Shell::GetInstance()->magnification_controller();
   DisplayManager* display_manager = Shell::GetInstance()->display_manager();
@@ -185,7 +182,7 @@
   magnifier->SetEnabled(false);
 
   DisplayLayout display_layout(DisplayLayout::BOTTOM, 50);
-  display_controller->SetLayoutForCurrentDisplays(display_layout);
+  display_manager->SetLayoutForCurrentDisplays(display_layout);
   EXPECT_EQ("50,120 150x200",
             ScreenAsh::GetSecondaryDisplay().bounds().ToString());
 
diff --git a/ash/display/screen_position_controller_unittest.cc b/ash/display/screen_position_controller_unittest.cc
index 260590a..680ee83 100644
--- a/ash/display/screen_position_controller_unittest.cc
+++ b/ash/display/screen_position_controller_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ash/display/screen_position_controller.h"
 
-#include "ash/display/display_controller.h"
+#include "ash/display/display_manager.h"
 #include "ash/screen_ash.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -37,7 +37,7 @@
   DisplayLayout layout =
       Shell::GetInstance()->display_manager()->GetCurrentDisplayLayout();
   layout.position = position;
-  Shell::GetInstance()->display_controller()->
+  Shell::GetInstance()->display_manager()->
       SetLayoutForCurrentDisplays(layout);
 }
 
diff --git a/ash/drag_drop/drag_drop_controller.cc b/ash/drag_drop/drag_drop_controller.cc
index 48e7c35..d335465 100644
--- a/ash/drag_drop/drag_drop_controller.cc
+++ b/ash/drag_drop/drag_drop_controller.cc
@@ -181,7 +181,7 @@
     // We need to transfer the current gesture sequence and the GR's touch event
     // queue to the |drag_drop_tracker_|'s capture window so that when it takes
     // capture, it still gets a valid gesture state.
-    root_window->gesture_recognizer()->TransferEventsTo(source_window,
+    ui::GestureRecognizer::Get()->TransferEventsTo(source_window,
         tracker->capture_window());
     // We also send a gesture end to the source window so it can clear state.
     // TODO(varunjain): Remove this whole block when gesture sequence
diff --git a/ash/extended_desktop_unittest.cc b/ash/extended_desktop_unittest.cc
index a6a9107..689c546 100644
--- a/ash/extended_desktop_unittest.cc
+++ b/ash/extended_desktop_unittest.cc
@@ -38,7 +38,7 @@
   DisplayLayout layout =
       Shell::GetInstance()->display_manager()->GetCurrentDisplayLayout();
   layout.position = position;
-  Shell::GetInstance()->display_controller()->
+  Shell::GetInstance()->display_manager()->
       SetLayoutForCurrentDisplays(layout);
 }
 
diff --git a/ash/first_run/first_run_helper.cc b/ash/first_run/first_run_helper.cc
new file mode 100644
index 0000000..684bb39
--- /dev/null
+++ b/ash/first_run/first_run_helper.cc
@@ -0,0 +1,13 @@
+// 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 "ash/first_run/first_run_helper.h"
+
+namespace ash {
+
+FirstRunHelper::FirstRunHelper() {}
+FirstRunHelper::~FirstRunHelper() {}
+
+}  // namespace chromeos
+
diff --git a/ash/first_run/first_run_helper.h b/ash/first_run/first_run_helper.h
new file mode 100644
index 0000000..b1bacb6
--- /dev/null
+++ b/ash/first_run/first_run_helper.h
@@ -0,0 +1,46 @@
+// 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 ASH_FIRST_RUN_FIRST_RUN_HELPER_H_
+#define ASH_FIRST_RUN_FIRST_RUN_HELPER_H_
+
+#include "ash/ash_export.h"
+#include "base/basictypes.h"
+
+namespace gfx {
+class Rect;
+}
+
+namespace ash {
+
+// Interface used by first-run tutorial to manipulate and retreive information
+// about shell elements.
+// All returned coordinates are in screen coordinate system.
+class ASH_EXPORT FirstRunHelper {
+ public:
+  FirstRunHelper();
+  virtual ~FirstRunHelper();
+
+  // Opens and closes app list.
+  virtual void OpenAppList() = 0;
+  virtual void CloseAppList() = 0;
+
+  // Returns bounding rectangle of launcher elements.
+  virtual gfx::Rect GetLauncherBounds() = 0;
+
+  // Returns bounds of application list button.
+  virtual gfx::Rect GetAppListButtonBounds() = 0;
+
+  // Returns bounds of application list. You must open application list before
+  // calling this method.
+  virtual gfx::Rect GetAppListBounds() = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(FirstRunHelper);
+};
+
+}  // namespace ash
+
+#endif  // ASH_FIRST_RUN_FIRST_RUN_HELPER_H_
+
diff --git a/ash/first_run/first_run_helper_impl.cc b/ash/first_run/first_run_helper_impl.cc
new file mode 100644
index 0000000..6246e12
--- /dev/null
+++ b/ash/first_run/first_run_helper_impl.cc
@@ -0,0 +1,49 @@
+// 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 "ash/first_run/first_run_helper_impl.h"
+
+#include "ash/launcher/launcher.h"
+#include "ash/shell.h"
+#include "base/logging.h"
+#include "ui/app_list/views/app_list_view.h"
+#include "ui/aura/window.h"
+#include "ui/gfx/rect.h"
+#include "ui/views/view.h"
+
+namespace ash {
+
+FirstRunHelperImpl::FirstRunHelperImpl() {}
+
+void FirstRunHelperImpl::OpenAppList() {
+  if (Shell::GetInstance()->GetAppListTargetVisibility())
+    return;
+  Shell::GetInstance()->ToggleAppList(NULL);
+}
+
+void FirstRunHelperImpl::CloseAppList() {
+  if (!Shell::GetInstance()->GetAppListTargetVisibility())
+    return;
+  Shell::GetInstance()->ToggleAppList(NULL);
+}
+
+gfx::Rect FirstRunHelperImpl::GetLauncherBounds() {
+  ash::Launcher* launcher = ash::Launcher::ForPrimaryDisplay();
+  return launcher->GetVisibleItemsBoundsInScreen();
+}
+
+gfx::Rect FirstRunHelperImpl::GetAppListButtonBounds() {
+  ash::Launcher* launcher = ash::Launcher::ForPrimaryDisplay();
+  views::View* app_button = launcher->GetAppListButtonView();
+  return app_button->GetBoundsInScreen();
+}
+
+gfx::Rect FirstRunHelperImpl::GetAppListBounds() {
+  app_list::AppListView* view = Shell::GetInstance()->GetAppListView();
+  CHECK(view);
+  return view->GetBoundsInScreen();
+}
+
+}  // namespace ash
+
diff --git a/ash/first_run/first_run_helper_impl.h b/ash/first_run/first_run_helper_impl.h
new file mode 100644
index 0000000..5290d59
--- /dev/null
+++ b/ash/first_run/first_run_helper_impl.h
@@ -0,0 +1,33 @@
+// 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 ASH_FIRST_RUN_FIRST_RUN_HELPER_IMPL_H_
+#define ASH_FIRST_RUN_FIRST_RUN_HELPER_IMPL_H_
+
+#include "ash/first_run/first_run_helper.h"
+#include "base/compiler_specific.h"
+
+namespace ash {
+
+class Shell;
+
+class FirstRunHelperImpl : public FirstRunHelper {
+ public:
+  FirstRunHelperImpl();
+
+  // Overriden from FirstRunHelper.
+  virtual void OpenAppList() OVERRIDE;
+  virtual void CloseAppList() OVERRIDE;
+  virtual gfx::Rect GetLauncherBounds() OVERRIDE;
+  virtual gfx::Rect GetAppListButtonBounds() OVERRIDE;
+  virtual gfx::Rect GetAppListBounds() OVERRIDE;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(FirstRunHelperImpl);
+};
+
+}  // namespace ash
+
+#endif  // ASH_FIRST_RUN_FIRST_RUN_HELPER_IMPL_H_
+
diff --git a/ash/launcher/launcher.cc b/ash/launcher/launcher.cc
index ae16485..9637acb 100644
--- a/ash/launcher/launcher.cc
+++ b/ash/launcher/launcher.cc
@@ -12,11 +12,11 @@
 #include "ash/launcher/launcher_item_delegate.h"
 #include "ash/launcher/launcher_item_delegate_manager.h"
 #include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_ash.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_navigator.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
@@ -39,19 +39,19 @@
 
 namespace ash {
 
-const char Launcher::kNativeViewName[] = "LauncherView";
+const char Launcher::kNativeViewName[] = "ShelfView";
 
 Launcher::Launcher(LauncherModel* launcher_model,
                    LauncherDelegate* launcher_delegate,
                    ShelfWidget* shelf_widget)
-    : launcher_view_(NULL),
+    : shelf_view_(NULL),
       alignment_(shelf_widget->GetAlignment()),
       delegate_(launcher_delegate),
       shelf_widget_(shelf_widget) {
-  launcher_view_ = new internal::LauncherView(
+  shelf_view_ = new internal::ShelfView(
       launcher_model, delegate_, shelf_widget_->shelf_layout_manager());
-  launcher_view_->Init();
-  shelf_widget_->GetContentsView()->AddChildView(launcher_view_);
+  shelf_view_->Init();
+  shelf_widget_->GetContentsView()->AddChildView(shelf_view_);
   shelf_widget_->GetNativeView()->SetName(kNativeViewName);
   delegate_->OnLauncherCreated(this);
 }
@@ -76,15 +76,15 @@
 
 void Launcher::SetAlignment(ShelfAlignment alignment) {
   alignment_ = alignment;
-  launcher_view_->OnShelfAlignmentChanged();
+  shelf_view_->OnShelfAlignmentChanged();
   // ShelfLayoutManager will resize the launcher.
 }
 
 gfx::Rect Launcher::GetScreenBoundsOfItemIconForWindow(aura::Window* window) {
   LauncherID id = delegate_->GetIDByWindow(window);
-  gfx::Rect bounds(launcher_view_->GetIdealBoundsOfItemIcon(id));
+  gfx::Rect bounds(shelf_view_->GetIdealBoundsOfItemIcon(id));
   gfx::Point screen_origin;
-  views::View::ConvertPointToScreen(launcher_view_, &screen_origin);
+  views::View::ConvertPointToScreen(shelf_view_, &screen_origin);
   return gfx::Rect(screen_origin.x() + bounds.x(),
                    screen_origin.y() + bounds.y(),
                    bounds.width(),
@@ -92,7 +92,7 @@
 }
 
 void Launcher::UpdateIconPositionForWindow(aura::Window* window) {
-  launcher_view_->UpdatePanelIconPosition(
+  shelf_view_->UpdatePanelIconPosition(
       delegate_->GetIDByWindow(window),
       ash::ScreenAsh::ConvertRectFromScreen(
           shelf_widget()->GetNativeView(),
@@ -107,7 +107,7 @@
                      ui::EF_NONE,
                      false);
 
-  const ash::LauncherItem& item = launcher_view_->model()->items()[index];
+  const ash::LauncherItem& item = shelf_view_->model()->items()[index];
   ash::LauncherItemDelegate* item_delegate =
       Shell::GetInstance()->launcher_item_delegate_manager()->
           GetLauncherItemDelegate(item.id);
@@ -116,45 +116,45 @@
 
 void Launcher::CycleWindowLinear(CycleDirection direction) {
   int item_index = GetNextActivatedItemIndex(
-      *(launcher_view_->model()), direction);
+      *(shelf_view_->model()), direction);
   if (item_index >= 0)
     ActivateLauncherItem(item_index);
 }
 
 void Launcher::AddIconObserver(LauncherIconObserver* observer) {
-  launcher_view_->AddIconObserver(observer);
+  shelf_view_->AddIconObserver(observer);
 }
 
 void Launcher::RemoveIconObserver(LauncherIconObserver* observer) {
-  launcher_view_->RemoveIconObserver(observer);
+  shelf_view_->RemoveIconObserver(observer);
 }
 
 bool Launcher::IsShowingMenu() const {
-  return launcher_view_->IsShowingMenu();
+  return shelf_view_->IsShowingMenu();
 }
 
 bool Launcher::IsShowingOverflowBubble() const {
-  return launcher_view_->IsShowingOverflowBubble();
+  return shelf_view_->IsShowingOverflowBubble();
 }
 
 void Launcher::SetVisible(bool visible) const {
-  launcher_view_->SetVisible(visible);
+  shelf_view_->SetVisible(visible);
 }
 
 bool Launcher::IsVisible() const {
-  return launcher_view_->visible();
+  return shelf_view_->visible();
 }
 
 void Launcher::SchedulePaint() {
-  launcher_view_->SchedulePaintForAllButtons();
+  shelf_view_->SchedulePaintForAllButtons();
 }
 
 views::View* Launcher::GetAppListButtonView() const {
-  return launcher_view_->GetAppListButtonView();
+  return shelf_view_->GetAppListButtonView();
 }
 
 void Launcher::LaunchAppIndexAt(int item_index) {
-  LauncherModel* launcher_model = launcher_view_->model();
+  LauncherModel* launcher_model = shelf_view_->model();
   const LauncherItems& items = launcher_model->items();
   int item_count = launcher_model->item_count();
   int indexes_left = item_index >= 0 ? item_index : item_count;
@@ -178,20 +178,20 @@
   }
 }
 
-void Launcher::SetLauncherViewBounds(gfx::Rect bounds) {
-  launcher_view_->SetBoundsRect(bounds);
+void Launcher::SetShelfViewBounds(gfx::Rect bounds) {
+  shelf_view_->SetBoundsRect(bounds);
 }
 
-gfx::Rect Launcher::GetLauncherViewBounds() const {
-  return launcher_view_->bounds();
+gfx::Rect Launcher::GetShelfViewBounds() const {
+  return shelf_view_->bounds();
 }
 
 gfx::Rect Launcher::GetVisibleItemsBoundsInScreen() const {
-  return launcher_view_->GetVisibleItemsBoundsInScreen();
+  return shelf_view_->GetVisibleItemsBoundsInScreen();
 }
 
 app_list::ApplicationDragAndDropHost* Launcher::GetDragAndDropHostForAppList() {
-  return launcher_view_;
+  return shelf_view_;
 }
 
 }  // namespace ash
diff --git a/ash/launcher/launcher.h b/ash/launcher/launcher.h
index 6173805..693f137 100644
--- a/ash/launcher/launcher.h
+++ b/ash/launcher/launcher.h
@@ -33,8 +33,8 @@
 
 namespace internal {
 class FocusCycler;
-class LauncherView;
 class ShelfLayoutManager;
+class ShelfView;
 }
 
 namespace test {
@@ -103,9 +103,9 @@
 
   ShelfWidget* shelf_widget() { return shelf_widget_; }
 
-  // Set the bounds of the launcher view.
-  void SetLauncherViewBounds(gfx::Rect bounds);
-  gfx::Rect GetLauncherViewBounds() const;
+  // Set the bounds of the shelf view.
+  void SetShelfViewBounds(gfx::Rect bounds);
+  gfx::Rect GetShelfViewBounds() const;
 
   // Returns rectangle bounding all visible launcher items. Used screen
   // coordinate system.
@@ -117,8 +117,8 @@
  private:
   friend class ash::test::LauncherTestAPI;
 
-  // LauncherView used to display icons.
-  internal::LauncherView* launcher_view_;
+  // ShelfView used to display icons.
+  internal::ShelfView* shelf_view_;
 
   ShelfAlignment alignment_;
 
diff --git a/ash/launcher/launcher_button.cc b/ash/launcher/launcher_button.cc
index 0678d15..9f0b32e 100644
--- a/ash/launcher/launcher_button.cc
+++ b/ash/launcher/launcher_button.cc
@@ -29,7 +29,6 @@
 // Size of the bar. This is along the opposite axis of the shelf. For example,
 // if the shelf is aligned horizontally then this is the height of the bar.
 const int kBarSize = 3;
-const int kBarSpacing = 5;
 const int kIconSize = 32;
 const int kHopSpacing = 2;
 const int kIconPad = 8;
diff --git a/ash/launcher/launcher_model.h b/ash/launcher/launcher_model.h
index 0d54486..9d42844 100644
--- a/ash/launcher/launcher_model.h
+++ b/ash/launcher/launcher_model.h
@@ -14,7 +14,7 @@
 
 class LauncherModelObserver;
 
-// Model used by LauncherView.
+// Model used by ShelfView.
 class ASH_EXPORT LauncherModel {
  public:
   enum Status {
diff --git a/ash/launcher/launcher_unittest.cc b/ash/launcher/launcher_unittest.cc
index 0778c33..3e72f6d 100644
--- a/ash/launcher/launcher_unittest.cc
+++ b/ash/launcher/launcher_unittest.cc
@@ -6,12 +6,12 @@
 #include "ash/launcher/launcher_button.h"
 #include "ash/launcher/launcher_item_delegate_manager.h"
 #include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/test/test_launcher_item_delegate.h"
 #include "ash/wm/window_util.h"
 #include "ui/aura/root_window.h"
@@ -26,7 +26,7 @@
 #endif
 
 typedef ash::test::AshTestBase LauncherTest;
-using ash::internal::LauncherView;
+using ash::internal::ShelfView;
 using ash::internal::LauncherButton;
 
 namespace ash {
@@ -34,7 +34,7 @@
 class LauncherTest : public ash::test::AshTestBase {
  public:
   LauncherTest() : launcher_(NULL),
-                   launcher_view_(NULL),
+                   shelf_view_(NULL),
                    launcher_model_(NULL),
                    item_delegate_manager_(NULL) {
   }
@@ -48,12 +48,12 @@
     ASSERT_TRUE(launcher_);
 
     ash::test::LauncherTestAPI test(launcher_);
-    launcher_view_ = test.launcher_view();
-    launcher_model_ = launcher_view_->model();
+    shelf_view_ = test.shelf_view();
+    launcher_model_ = shelf_view_->model();
     item_delegate_manager_ =
         Shell::GetInstance()->launcher_item_delegate_manager();
 
-    test_.reset(new ash::test::LauncherViewTestAPI(launcher_view_));
+    test_.reset(new ash::test::ShelfViewTestAPI(shelf_view_));
   }
 
   virtual void TearDown() OVERRIDE {
@@ -64,8 +64,8 @@
     return launcher_;
   }
 
-  LauncherView* launcher_view() {
-    return launcher_view_;
+  ShelfView* shelf_view() {
+    return shelf_view_;
   }
 
   LauncherModel* launcher_model() {
@@ -76,16 +76,16 @@
     return item_delegate_manager_;
   }
 
-  ash::test::LauncherViewTestAPI* test_api() {
+  ash::test::ShelfViewTestAPI* test_api() {
     return test_.get();
   }
 
  private:
   Launcher* launcher_;
-  LauncherView* launcher_view_;
+  ShelfView* shelf_view_;
   LauncherModel* launcher_model_;
   LauncherItemDelegateManager* item_delegate_manager_;
-  scoped_ptr<ash::test::LauncherViewTestAPI> test_;
+  scoped_ptr<ash::test::ShelfViewTestAPI> test_;
 
   DISALLOW_COPY_AND_ASSIGN(LauncherTest);
 };
@@ -155,7 +155,7 @@
   test_api()->ShowOverflowBubble();
   EXPECT_TRUE(launcher()->IsShowingOverflowBubble());
 
-  // Removes the first item in main launcher view.
+  // Removes the first item in main shelf view.
   launcher_model()->RemoveItemAt(
       launcher_model()->ItemIndexByID(first_item_id));
 
diff --git a/ash/popup_message.cc b/ash/popup_message.cc
index bd51938..612cee3 100644
--- a/ash/popup_message.cc
+++ b/ash/popup_message.cc
@@ -19,7 +19,6 @@
 namespace {
 const int kMessageTopBottomMargin = 10;
 const int kMessageLeftRightMargin = 10;
-const int kMessageAppearanceDelayMs = 200;
 const int kMessageMinHeight = 29 - 2 * kMessageTopBottomMargin;
 const SkColor kMessageTextColor = SkColorSetRGB(0x22, 0x22, 0x22);
 
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 066f06c..6964f14 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -9,10 +9,12 @@
 
 #include "ash/ash_constants.h"
 #include "ash/ash_switches.h"
+#include "ash/desktop_background/desktop_background_controller.h"
 #include "ash/desktop_background/desktop_background_widget_controller.h"
 #include "ash/desktop_background/user_wallpaper_delegate.h"
 #include "ash/display/display_manager.h"
 #include "ash/focus_cycler.h"
+#include "ash/high_contrast/high_contrast_controller.h"
 #include "ash/root_window_settings.h"
 #include "ash/session_state_delegate.h"
 #include "ash/shelf/shelf_layout_manager.h"
@@ -214,27 +216,16 @@
 
 namespace internal {
 
-RootWindowController::RootWindowController(aura::RootWindow* root_window)
-    : root_window_(root_window),
-      root_window_layout_(NULL),
-      docked_layout_manager_(NULL),
-      panel_layout_manager_(NULL),
-      touch_hud_debug_(NULL),
-      touch_hud_projection_(NULL) {
-  GetRootWindowSettings(root_window)->controller = this;
-  screen_dimmer_.reset(new ScreenDimmer(root_window));
-
-  stacking_controller_.reset(new StackingController);
-  aura::client::SetStackingClient(root_window, stacking_controller_.get());
-  capture_client_.reset(new views::corewm::ScopedCaptureClient(root_window));
+void RootWindowController::CreateForPrimaryDisplay(
+    aura::RootWindow * root) {
+  RootWindowController* controller = new RootWindowController(root);
+  controller->Init(true /* primary */,
+                   Shell::GetInstance()->delegate()->IsFirstRunAfterBoot());
 }
 
-RootWindowController::~RootWindowController() {
-  Shutdown();
-  root_window_.reset();
-  // The CaptureClient needs to be around for as long as the RootWindow is
-  // valid.
-  capture_client_.reset();
+void RootWindowController::CreateForSecondaryDisplay(aura::RootWindow * root) {
+  RootWindowController* controller = new RootWindowController(root);
+  controller->Init(false /* secondary */, false /* first run */);
 }
 
 // static
@@ -253,6 +244,14 @@
   return internal::GetRootWindowController(Shell::GetTargetRootWindow());
 }
 
+RootWindowController::~RootWindowController() {
+  Shutdown();
+  root_window_.reset();
+  // The CaptureClient needs to be around for as long as the RootWindow is
+  // valid.
+  capture_client_.reset();
+}
+
 void RootWindowController::SetWallpaperController(
     DesktopBackgroundWidgetController* controller) {
   wallpaper_controller_.reset(controller);
@@ -325,22 +324,6 @@
   return root_window_->GetChildById(container_id);
 }
 
-void RootWindowController::Init(bool first_run_after_boot) {
-  root_window_->SetCursor(ui::kCursorPointer);
-  CreateContainersInRootWindow(root_window_.get());
-  CreateSystemBackground(first_run_after_boot);
-
-  InitLayoutManagers();
-  InitTouchHuds();
-
-  if (Shell::GetPrimaryRootWindowController()->
-      GetSystemModalLayoutManager(NULL)->has_modal_background()) {
-    GetSystemModalLayoutManager(NULL)->CreateModalBackground();
-  }
-
-  Shell::GetInstance()->AddShellObserver(this);
-}
-
 void RootWindowController::ShowLauncher() {
   if (!shelf_->launcher())
     return;
@@ -571,6 +554,58 @@
 ////////////////////////////////////////////////////////////////////////////////
 // RootWindowController, private:
 
+RootWindowController::RootWindowController(aura::RootWindow* root_window)
+    : root_window_(root_window),
+      root_window_layout_(NULL),
+      docked_layout_manager_(NULL),
+      panel_layout_manager_(NULL),
+      touch_hud_debug_(NULL),
+      touch_hud_projection_(NULL) {
+  GetRootWindowSettings(root_window)->controller = this;
+  screen_dimmer_.reset(new ScreenDimmer(root_window));
+
+  stacking_controller_.reset(new StackingController);
+  aura::client::SetStackingClient(root_window, stacking_controller_.get());
+  capture_client_.reset(new views::corewm::ScopedCaptureClient(root_window));
+}
+
+void RootWindowController::Init(bool is_primary, bool first_run_after_boot) {
+  Shell::GetInstance()->InitRootWindow(root_window_.get());
+
+  root_window_->SetCursor(ui::kCursorPointer);
+  CreateContainersInRootWindow(root_window_.get());
+  CreateSystemBackground(first_run_after_boot);
+
+  InitLayoutManagers();
+  InitTouchHuds();
+
+  if (Shell::GetPrimaryRootWindowController()->
+      GetSystemModalLayoutManager(NULL)->has_modal_background()) {
+    GetSystemModalLayoutManager(NULL)->CreateModalBackground();
+  }
+
+  Shell* shell = Shell::GetInstance();
+  shell->AddShellObserver(this);
+
+  if (is_primary) {
+    root_window_layout()->OnWindowResized();
+    shell->InitKeyboard(this);
+  } else {
+    root_window_layout()->OnWindowResized();
+    shell->desktop_background_controller()->OnRootWindowAdded(
+        root_window_.get());
+    shell->high_contrast_controller()->OnRootWindowAdded(root_window_.get());
+    root_window_->ShowRootWindow();
+    // Activate new root for testing.
+    // TODO(oshima): remove this.
+    shell->set_target_root_window(root_window_.get());
+
+    // Create a launcher if a user is already logged.
+    if (shell->session_state_delegate()->NumberOfLoggedInUsers())
+      shelf()->CreateLauncher();
+  }
+}
+
 void RootWindowController::InitLayoutManagers() {
   root_window_layout_ =
       new RootWindowLayoutManager(root_window_.get());
diff --git a/ash/root_window_controller.h b/ash/root_window_controller.h
index f5a67ee..4e6b8d1 100644
--- a/ash/root_window_controller.h
+++ b/ash/root_window_controller.h
@@ -70,13 +70,19 @@
 
 // This class maintains the per root window state for ash. This class
 // owns the root window and other dependent objects that should be
-// deleted upon the deletion of the root window.  The RootWindowController
-// for particular root window is stored as a property and can be obtained
-// using |GetRootWindowController(aura::RootWindow*)| function.
+// deleted upon the deletion of the root window. This object is
+// indirectly owned and deleted by |DisplayController|.
+// The RootWindowController for particular root window is stored in
+// its property (RootWindowSettings) and can be obtained using
+// |GetRootWindowController(aura::RootWindow*)| function.
 class ASH_EXPORT RootWindowController : public ShellObserver {
  public:
-  explicit RootWindowController(aura::RootWindow* root_window);
-  virtual ~RootWindowController();
+
+  // Creates and Initialize the RootWindowController for primary display.
+  static void CreateForPrimaryDisplay(aura::RootWindow* root_window);
+
+  // Creates and Initialize the RootWindowController for secondary displays.
+  static void CreateForSecondaryDisplay(aura::RootWindow* root_window);
 
   // Returns a RootWindowController that has a launcher for given
   // |window|. This returns the RootWindowController for the |window|'s
@@ -90,6 +96,8 @@
   // Returns the RootWindowController of the target root window.
   static internal::RootWindowController* ForTargetRootWindow();
 
+  virtual ~RootWindowController();
+
   aura::RootWindow* root_window() { return root_window_.get(); }
 
   RootWindowLayoutManager* root_window_layout() { return root_window_layout_; }
@@ -163,10 +171,6 @@
   aura::Window* GetContainer(int container_id);
   const aura::Window* GetContainer(int container_id) const;
 
-  // Initializes the RootWindowController. |first_run_after_boot| is
-  // set to true only for primary root window after boot.
-  void Init(bool first_run_after_boot);
-
   // Show launcher view if it was created hidden (before session has started).
   void ShowLauncher();
 
@@ -217,6 +221,13 @@
   void DeactivateKeyboard(keyboard::KeyboardController* keyboard_controller);
 
  private:
+  explicit RootWindowController(aura::RootWindow* root_window);
+
+  // Initializes the RootWindowController.  |is_primary| is true if
+  // the controller is for primary display.  |first_run_after_boot| is
+  // set to true only for primary root window after boot.
+  void Init(bool is_primary, bool first_run_after_boot);
+
   void InitLayoutManagers();
 
   // Initializes |system_background_| and possibly also |boot_splash_screen_|.
diff --git a/ash/session_state_delegate.h b/ash/session_state_delegate.h
index 8c96747..7fac828 100644
--- a/ash/session_state_delegate.h
+++ b/ash/session_state_delegate.h
@@ -74,10 +74,17 @@
   virtual const base::string16 GetUserDisplayName(
       MultiProfileIndex index) const = 0;
 
-  // Gets the email address for the user with the given |index|.
+  // Gets the display email address for the user with the given |index|.
+  // The display email address might contains some periods in the email name
+  // as well as capitalized letters. For example: "Foo.Bar@mock.com".
   // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|.
   virtual const std::string GetUserEmail(MultiProfileIndex index) const = 0;
 
+  // Gets the user id (sanitized email address) for the user with the given
+  // |index|. The function would return something like "foobar@mock.com".
+  // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|.
+  virtual const std::string GetUserID(MultiProfileIndex index) const = 0;
+
   // Gets the avatar image for the user with the given |index|.
   // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|.
   virtual const gfx::ImageSkia& GetUserImage(MultiProfileIndex index) const = 0;
@@ -85,9 +92,9 @@
   // Returns a list of all logged in users.
   virtual void GetLoggedInUsers(UserIdList* users) = 0;
 
-  // Switches to another active user using the |user_email|
+  // Switches to another active user with |user_id|
   // (if that user has already signed in).
-  virtual void SwitchActiveUser(const std::string& user_email) = 0;
+  virtual void SwitchActiveUser(const std::string& user_id) = 0;
 
   // Switches the active user to the next user, with the same ordering as
   // GetLoggedInUsers.
diff --git a/ash/session_state_delegate_stub.cc b/ash/session_state_delegate_stub.cc
index 83efd73..91602b3 100644
--- a/ash/session_state_delegate_stub.cc
+++ b/ash/session_state_delegate_stub.cc
@@ -66,6 +66,11 @@
   return "stub-user@domain.com";
 }
 
+const std::string SessionStateDelegateStub::GetUserID(
+    MultiProfileIndex index) const {
+  return GetUserEmail(index);
+}
+
 const gfx::ImageSkia& SessionStateDelegateStub::GetUserImage(
     MultiProfileIndex index) const {
   return null_image_;
diff --git a/ash/session_state_delegate_stub.h b/ash/session_state_delegate_stub.h
index 96e8364..894759d 100644
--- a/ash/session_state_delegate_stub.h
+++ b/ash/session_state_delegate_stub.h
@@ -32,6 +32,8 @@
       ash::MultiProfileIndex index) const OVERRIDE;
   virtual const std::string GetUserEmail(
       ash::MultiProfileIndex index) const OVERRIDE;
+  virtual const std::string GetUserID(
+      ash::MultiProfileIndex index) const OVERRIDE;
   virtual const gfx::ImageSkia& GetUserImage(
       ash::MultiProfileIndex index) const OVERRIDE;
   virtual void GetLoggedInUsers(UserIdList* users) OVERRIDE;
diff --git a/ash/shelf/app_list_button.cc b/ash/shelf/app_list_button.cc
index ca47d06..80a9b8d 100644
--- a/ash/shelf/app_list_button.cc
+++ b/ash/shelf/app_list_button.cc
@@ -21,12 +21,8 @@
 namespace ash {
 namespace internal {
 
-namespace {
-
 const int kAnimationDurationInMs = 600;
 const float kAnimationOpacity[] = { 1.0f, 0.4f, 1.0f };
-const int kBorderSize = 9;
-}  // namespace
 
 AppListButton::AppListButton(views::ButtonListener* listener,
                              LauncherButtonHost* host)
diff --git a/ash/shelf/overflow_bubble.cc b/ash/shelf/overflow_bubble.cc
index d448f6f..554e89f 100644
--- a/ash/shelf/overflow_bubble.cc
+++ b/ash/shelf/overflow_bubble.cc
@@ -7,9 +7,9 @@
 #include <algorithm>
 
 #include "ash/launcher/launcher_types.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf_layout_manager.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/system/tray/system_tray.h"
@@ -30,22 +30,22 @@
 // Max bubble size to screen size ratio.
 const float kMaxBubbleSizeToScreenRatio = 0.5f;
 
-// Inner padding in pixels for launcher view inside bubble.
+// Inner padding in pixels for shelf view inside bubble.
 const int kPadding = 2;
 
-// Padding space in pixels between LauncherView's left/top edge to its contents.
-const int kLauncherViewLeadingInset = 8;
+// Padding space in pixels between ShelfView's left/top edge to its contents.
+const int kShelfViewLeadingInset = 8;
 
 ////////////////////////////////////////////////////////////////////////////////
 // OverflowBubbleView
-// OverflowBubbleView hosts a LauncherView to display overflown items.
+// OverflowBubbleView hosts a ShelfView to display overflown items.
 
 class OverflowBubbleView : public views::BubbleDelegateView {
  public:
   OverflowBubbleView();
   virtual ~OverflowBubbleView();
 
-  void InitOverflowBubble(views::View* anchor, LauncherView* launcher_view);
+  void InitOverflowBubble(views::View* anchor, ShelfView* shelf_view);
 
  private:
   bool IsHorizontalAlignment() const {
@@ -53,7 +53,7 @@
   }
 
   const gfx::Size GetContentsSize() const {
-    return static_cast<views::View*>(launcher_view_)->GetPreferredSize();
+    return static_cast<views::View*>(shelf_view_)->GetPreferredSize();
   }
 
   // Gets arrow location based on shelf alignment.
@@ -85,21 +85,21 @@
         GetAnchorView()->GetWidget()->GetNativeView());
   }
 
-  LauncherView* launcher_view_;  // Owned by views hierarchy.
+  ShelfView* shelf_view_;  // Owned by views hierarchy.
   gfx::Vector2d scroll_offset_;
 
   DISALLOW_COPY_AND_ASSIGN(OverflowBubbleView);
 };
 
 OverflowBubbleView::OverflowBubbleView()
-    : launcher_view_(NULL) {
+    : shelf_view_(NULL) {
 }
 
 OverflowBubbleView::~OverflowBubbleView() {
 }
 
 void OverflowBubbleView::InitOverflowBubble(views::View* anchor,
-                                            LauncherView* launcher_view) {
+                                            ShelfView* shelf_view) {
   // set_anchor_view needs to be called before GetShelfLayoutManagerForLauncher
   // can be called.
   SetAnchorView(anchor);
@@ -117,8 +117,8 @@
   SetFillsBoundsOpaquely(false);
   layer()->SetMasksToBounds(true);
 
-  launcher_view_ = launcher_view;
-  AddChildView(launcher_view_);
+  shelf_view_ = shelf_view;
+  AddChildView(shelf_view_);
 
   views::BubbleDelegateView::CreateBubble(this);
 }
@@ -164,7 +164,7 @@
 }
 
 void OverflowBubbleView::Layout() {
-  launcher_view_->SetBoundsRect(gfx::Rect(
+  shelf_view_->SetBoundsRect(gfx::Rect(
       gfx::PointAtOffsetFromOrigin(-scroll_offset_), GetContentsSize()));
 }
 
@@ -205,7 +205,7 @@
   const int border_size =
       views::BubbleBorder::is_arrow_on_horizontal(arrow()) ?
       bubble_insets.left() : bubble_insets.top();
-  const int arrow_offset = border_size + kPadding + kLauncherViewLeadingInset +
+  const int arrow_offset = border_size + kPadding + kShelfViewLeadingInset +
       ShelfLayoutManager::GetPreferredShelfSize() / 2;
 
   const gfx::Size content_size = GetPreferredSize();
@@ -248,19 +248,19 @@
 OverflowBubble::OverflowBubble()
     : bubble_(NULL),
       anchor_(NULL),
-      launcher_view_(NULL) {
+      shelf_view_(NULL) {
 }
 
 OverflowBubble::~OverflowBubble() {
   Hide();
 }
 
-void OverflowBubble::Show(views::View* anchor, LauncherView* launcher_view) {
+void OverflowBubble::Show(views::View* anchor, ShelfView* shelf_view) {
   Hide();
 
   OverflowBubbleView* bubble_view = new OverflowBubbleView();
-  bubble_view->InitOverflowBubble(anchor, launcher_view);
-  launcher_view_ = launcher_view;
+  bubble_view->InitOverflowBubble(anchor, shelf_view);
+  shelf_view_ = shelf_view;
   anchor_ = anchor;
 
   Shell::GetInstance()->AddPreTargetHandler(this);
@@ -281,7 +281,7 @@
   bubble_->GetWidget()->Close();
   bubble_ = NULL;
   anchor_ = NULL;
-  launcher_view_ = NULL;
+  shelf_view_ = NULL;
 }
 
 void OverflowBubble::HideBubbleAndRefreshButton() {
@@ -300,7 +300,7 @@
   gfx::Point event_location_in_screen = event->location();
   aura::client::GetScreenPositionClient(target->GetRootWindow())->
       ConvertPointToScreen(target, &event_location_in_screen);
-  if (!launcher_view_->IsShowingMenu() &&
+  if (!shelf_view_->IsShowingMenu() &&
       !bubble_->GetBoundsInScreen().Contains(event_location_in_screen) &&
       !anchor_->GetBoundsInScreen().Contains(event_location_in_screen)) {
     HideBubbleAndRefreshButton();
@@ -321,7 +321,7 @@
   DCHECK(widget == bubble_->GetWidget());
   bubble_ = NULL;
   anchor_ = NULL;
-  launcher_view_ = NULL;
+  shelf_view_ = NULL;
   ShelfLayoutManager::ForLauncher(
       widget->GetNativeView())->shelf_widget()->launcher()->SchedulePaint();
 }
diff --git a/ash/shelf/overflow_bubble.h b/ash/shelf/overflow_bubble.h
index aaf71aa..ad4d11f 100644
--- a/ash/shelf/overflow_bubble.h
+++ b/ash/shelf/overflow_bubble.h
@@ -25,7 +25,7 @@
 
 namespace internal {
 
-class LauncherView;
+class ShelfView;
 
 // OverflowBubble displays the overflown launcher items in a bubble.
 class OverflowBubble : public ui::EventHandler,
@@ -34,8 +34,8 @@
   OverflowBubble();
   virtual ~OverflowBubble();
 
-  // Shows an bubble pointing to |anchor| with |launcher_view| as its content.
-  void Show(views::View* anchor, LauncherView* launcher_view);
+  // Shows an bubble pointing to |anchor| with |shelf_view| as its content.
+  void Show(views::View* anchor, ShelfView* shelf_view);
 
   void Hide();
 
@@ -44,7 +44,7 @@
   void HideBubbleAndRefreshButton();
 
   bool IsShowing() const { return !!bubble_; }
-  LauncherView* launcher_view() { return launcher_view_; }
+  ShelfView* shelf_view() { return shelf_view_; }
 
  private:
   void ProcessPressedEvent(ui::LocatedEvent* event);
@@ -57,8 +57,8 @@
   virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
 
   views::View* bubble_;  // Owned by views hierarchy.
-  views::View* anchor_;  // Owned by LauncherView.
-  LauncherView* launcher_view_;  // Owned by |bubble_|.
+  views::View* anchor_;  // Owned by ShelfView.
+  ShelfView* shelf_view_;  // Owned by |bubble_|.
 
   DISALLOW_COPY_AND_ASSIGN(OverflowBubble);
 };
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index d5441c4..e270547 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -290,12 +290,12 @@
 
   if (shelf_->launcher()) {
     // This is not part of UpdateBoundsAndOpacity() because
-    // SetLauncherViewBounds() sets the bounds immediately and does not animate.
-    // The height of the LauncherView for a horizontal shelf and the width of
-    // the LauncherView for a vertical shelf are set when |shelf_|'s bounds
+    // SetShelfViewBounds() sets the bounds immediately and does not animate.
+    // The height of the ShelfView for a horizontal shelf and the width of
+    // the ShelfView for a vertical shelf are set when |shelf_|'s bounds
     // are changed via UpdateBoundsAndOpacity(). This sets the origin and the
     // dimension in the other direction.
-    shelf_->launcher()->SetLauncherViewBounds(
+    shelf_->launcher()->SetShelfViewBounds(
         target_bounds.launcher_bounds_in_shelf);
   }
 }
@@ -830,16 +830,16 @@
   // This needs to happen after calling UpdateTargetBoundsForGesture(), because
   // that can change the size of the shelf.
   target_bounds->launcher_bounds_in_shelf = SelectValueForShelfAlignment(
-      gfx::Rect(base::i18n::IsRTL() ? status_size.width() : 0, 0,
-                    shelf_width - status_size.width(),
-                    target_bounds->shelf_bounds_in_root.height()),
+      gfx::Rect(0, 0,
+                shelf_width - status_size.width(),
+                target_bounds->shelf_bounds_in_root.height()),
       gfx::Rect(0, 0, target_bounds->shelf_bounds_in_root.width(),
                 shelf_height - status_size.height()),
       gfx::Rect(0, 0, target_bounds->shelf_bounds_in_root.width(),
                 shelf_height - status_size.height()),
-      gfx::Rect(base::i18n::IsRTL() ? status_size.width() : 0, 0,
-                    shelf_width - status_size.width(),
-                    target_bounds->shelf_bounds_in_root.height()));
+      gfx::Rect(0, 0,
+                shelf_width - status_size.width(),
+                target_bounds->shelf_bounds_in_root.height()));
 }
 
 void ShelfLayoutManager::UpdateTargetBoundsForGesture(
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc
index 5192902..93dfc57 100644
--- a/ash/shelf/shelf_layout_manager_unittest.cc
+++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -7,15 +7,14 @@
 #include "ash/accelerators/accelerator_controller.h"
 #include "ash/accelerators/accelerator_table.h"
 #include "ash/ash_switches.h"
-#include "ash/display/display_controller.h"
 #include "ash/display/display_manager.h"
 #include "ash/focus_cycler.h"
 #include "ash/launcher/launcher.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_ash.h"
 #include "ash/session_state_delegate.h"
 #include "ash/shelf/shelf_layout_manager_observer.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
@@ -785,7 +784,7 @@
   shelf_widget->status_area_widget()->SetBounds(
       gfx::Rect(0, 0, 200, 200));
   EXPECT_EQ(200, shelf_widget->GetContentsView()->width() -
-            test::LauncherTestAPI(launcher).launcher_view()->width());
+            test::LauncherTestAPI(launcher).shelf_view()->width());
 }
 
 
@@ -869,7 +868,7 @@
 
   UpdateDisplay("800x600,800x600");
   DisplayLayout display_layout(DisplayLayout::RIGHT, 0);
-  Shell::GetInstance()->display_controller()->SetLayoutForCurrentDisplays(
+  Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
       display_layout);
   // Put the primary monitor's shelf on the display boundary.
   ShelfLayoutManager* shelf = GetShelfLayoutManager();
diff --git a/ash/shelf/shelf_tooltip_manager.cc b/ash/shelf/shelf_tooltip_manager.cc
index 8bfb53a..bdf3306 100644
--- a/ash/shelf/shelf_tooltip_manager.cc
+++ b/ash/shelf/shelf_tooltip_manager.cc
@@ -4,8 +4,8 @@
 
 #include "ash/shelf/shelf_tooltip_manager.h"
 
-#include "ash/launcher/launcher_view.h"
 #include "ash/shelf/shelf_layout_manager.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
 #include "ash/wm/window_animations.h"
@@ -138,12 +138,12 @@
 
 ShelfTooltipManager::ShelfTooltipManager(
     ShelfLayoutManager* shelf_layout_manager,
-    LauncherView* launcher_view)
+    ShelfView* shelf_view)
     : view_(NULL),
       widget_(NULL),
       anchor_(NULL),
       shelf_layout_manager_(shelf_layout_manager),
-      launcher_view_(launcher_view),
+      shelf_view_(shelf_view),
       weak_factory_(this) {
   if (shelf_layout_manager)
     shelf_layout_manager->AddObserver(this);
@@ -253,7 +253,7 @@
     return;
 
   DCHECK(view_);
-  DCHECK(launcher_view_);
+  DCHECK(shelf_view_);
 
   // Pressing the mouse button anywhere should close the tooltip.
   if (event->type() == ui::ET_MOUSE_PRESSED) {
@@ -267,12 +267,12 @@
     return;
   }
 
-  gfx::Point location_in_launcher_view = event->location();
+  gfx::Point location_in_shelf_view = event->location();
   aura::Window::ConvertPointToTarget(
-      target, launcher_view_->GetWidget()->GetNativeWindow(),
-      &location_in_launcher_view);
+      target, shelf_view_->GetWidget()->GetNativeWindow(),
+      &location_in_shelf_view);
 
-  if (launcher_view_->ShouldHideTooltip(location_in_launcher_view)) {
+  if (shelf_view_->ShouldHideTooltip(location_in_shelf_view)) {
     // Because this mouse event may arrive to |view_|, here we just schedule
     // the closing event rather than directly calling Close().
     CloseSoon();
diff --git a/ash/shelf/shelf_tooltip_manager.h b/ash/shelf/shelf_tooltip_manager.h
index 73f6e62..5bb5f09 100644
--- a/ash/shelf/shelf_tooltip_manager.h
+++ b/ash/shelf/shelf_tooltip_manager.h
@@ -28,11 +28,11 @@
 namespace ash {
 namespace test {
 class ShelfTooltipManagerTest;
-class LauncherViewTest;
+class ShelfViewTest;
 }
 
 namespace internal {
-class LauncherView;
+class ShelfView;
 class ShelfLayoutManager;
 
 // ShelfTooltipManager manages the tooltip balloon poping up on shelf items.
@@ -40,7 +40,7 @@
                                        public ShelfLayoutManagerObserver {
  public:
   ShelfTooltipManager(ShelfLayoutManager* shelf_layout_manager,
-                      LauncherView* launcher_view);
+                      ShelfView* shelf_view);
   virtual ~ShelfTooltipManager();
 
   ShelfLayoutManager* shelf_layout_manager() { return shelf_layout_manager_; }
@@ -92,7 +92,7 @@
 
  private:
   class ShelfTooltipBubble;
-  friend class test::LauncherViewTest;
+  friend class test::ShelfViewTest;
   friend class test::ShelfTooltipManagerTest;
 
   void CancelHidingAnimation();
@@ -108,7 +108,7 @@
   scoped_ptr<base::Timer> timer_;
 
   ShelfLayoutManager* shelf_layout_manager_;
-  LauncherView* launcher_view_;
+  ShelfView* shelf_view_;
 
   base::WeakPtrFactory<ShelfTooltipManager> weak_factory_;
 
diff --git a/ash/shelf/shelf_tooltip_manager_unittest.cc b/ash/shelf/shelf_tooltip_manager_unittest.cc
index 7d60b92..6f2f0fa 100644
--- a/ash/shelf/shelf_tooltip_manager_unittest.cc
+++ b/ash/shelf/shelf_tooltip_manager_unittest.cc
@@ -45,7 +45,7 @@
         Shell::GetPrimaryRootWindowController();
     tooltip_manager_.reset(new internal::ShelfTooltipManager(
         controller->GetShelfLayoutManager(),
-        LauncherTestAPI(controller->shelf()->launcher()).launcher_view()));
+        LauncherTestAPI(controller->shelf()->launcher()).shelf_view()));
   }
 
   virtual void TearDown() OVERRIDE {
diff --git a/ash/launcher/launcher_view.cc b/ash/shelf/shelf_view.cc
similarity index 90%
rename from ash/launcher/launcher_view.cc
rename to ash/shelf/shelf_view.cc
index 4279c3c..25053e3 100644
--- a/ash/launcher/launcher_view.cc
+++ b/ash/shelf/shelf_view.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 "ash/launcher/launcher_view.h"
+#include "ash/shelf/shelf_view.h"
 
 #include <algorithm>
 
@@ -338,11 +338,11 @@
 
 // AnimationDelegate used when deleting an item. This steadily decreased the
 // opacity of the layer as the animation progress.
-class LauncherView::FadeOutAnimationDelegate
+class ShelfView::FadeOutAnimationDelegate
     : public views::BoundsAnimator::OwnedAnimationDelegate {
  public:
-  FadeOutAnimationDelegate(LauncherView* host, views::View* view)
-      : launcher_view_(host),
+  FadeOutAnimationDelegate(ShelfView* host, views::View* view)
+      : shelf_view_(host),
         view_(view) {}
   virtual ~FadeOutAnimationDelegate() {}
 
@@ -352,13 +352,13 @@
     view_->layer()->ScheduleDraw();
   }
   virtual void AnimationEnded(const Animation* animation) OVERRIDE {
-    launcher_view_->OnFadeOutAnimationEnded();
+    shelf_view_->OnFadeOutAnimationEnded();
   }
   virtual void AnimationCanceled(const Animation* animation) OVERRIDE {
   }
 
  private:
-  LauncherView* launcher_view_;
+  ShelfView* shelf_view_;
   scoped_ptr<views::View> view_;
 
   DISALLOW_COPY_AND_ASSIGN(FadeOutAnimationDelegate);
@@ -367,33 +367,33 @@
 // AnimationDelegate used to trigger fading an element in. When an item is
 // inserted this delegate is attached to the animation that expands the size of
 // the item.  When done it kicks off another animation to fade the item in.
-class LauncherView::StartFadeAnimationDelegate
+class ShelfView::StartFadeAnimationDelegate
     : public views::BoundsAnimator::OwnedAnimationDelegate {
  public:
-  StartFadeAnimationDelegate(LauncherView* host,
+  StartFadeAnimationDelegate(ShelfView* host,
                              views::View* view)
-      : launcher_view_(host),
+      : shelf_view_(host),
         view_(view) {}
   virtual ~StartFadeAnimationDelegate() {}
 
   // AnimationDelegate overrides:
   virtual void AnimationEnded(const Animation* animation) OVERRIDE {
-    launcher_view_->FadeIn(view_);
+    shelf_view_->FadeIn(view_);
   }
   virtual void AnimationCanceled(const Animation* animation) OVERRIDE {
     view_->layer()->SetOpacity(1.0f);
   }
 
  private:
-  LauncherView* launcher_view_;
+  ShelfView* shelf_view_;
   views::View* view_;
 
   DISALLOW_COPY_AND_ASSIGN(StartFadeAnimationDelegate);
 };
 
-LauncherView::LauncherView(LauncherModel* model,
-                           LauncherDelegate* delegate,
-                           ShelfLayoutManager* shelf_layout_manager)
+ShelfView::ShelfView(LauncherModel* model,
+                     LauncherDelegate* delegate,
+                     ShelfLayoutManager* shelf_layout_manager)
     : model_(model),
       delegate_(delegate),
       view_model_(new views::ViewModel),
@@ -424,7 +424,7 @@
   tooltip_.reset(new ShelfTooltipManager(shelf_layout_manager, this));
 }
 
-LauncherView::~LauncherView() {
+ShelfView::~ShelfView() {
   bounds_animator_->RemoveObserver(this);
   model_->RemoveObserver(this);
   // If we are inside the MenuRunner, we need to know if we were getting
@@ -433,7 +433,7 @@
     *got_deleted_ = true;
 }
 
-void LauncherView::Init() {
+void ShelfView::Init() {
   model_->AddObserver(this);
 
   const LauncherItems& items(model_->items());
@@ -453,7 +453,7 @@
   // We'll layout when our bounds change.
 }
 
-void LauncherView::OnShelfAlignmentChanged() {
+void ShelfView::OnShelfAlignmentChanged() {
   UpdateFirstButtonPadding();
   overflow_button_->OnShelfAlignmentChanged();
   LayoutToIdealBounds();
@@ -482,7 +482,7 @@
     overflow_bubble_->Hide();
 }
 
-void LauncherView::SchedulePaintForAllButtons() {
+void ShelfView::SchedulePaintForAllButtons() {
   for (int i = 0; i < view_model_->view_size(); ++i) {
     if (i >= first_visible_index_ && i <= last_visible_index_)
       view_model_->view_at(i)->SchedulePaint();
@@ -491,7 +491,7 @@
     overflow_button_->SchedulePaint();
 }
 
-gfx::Rect LauncherView::GetIdealBoundsOfItemIcon(LauncherID id) {
+gfx::Rect ShelfView::GetIdealBoundsOfItemIcon(LauncherID id) {
   int index = model_->ItemIndexByID(id);
   if (index == -1 || (index > last_visible_index_ &&
                       index < model_->FirstPanelIndex()))
@@ -508,8 +508,8 @@
                    icon_bounds.height());
 }
 
-void LauncherView::UpdatePanelIconPosition(LauncherID id,
-                                           const gfx::Point& midpoint) {
+void ShelfView::UpdatePanelIconPosition(LauncherID id,
+                                        const gfx::Point& midpoint) {
   int current_index = model_->ItemIndexByID(id);
   int first_panel_index = model_->FirstPanelIndex();
   if (current_index < first_panel_index)
@@ -536,16 +536,16 @@
     model_->Move(current_index, target_index);
 }
 
-bool LauncherView::IsShowingMenu() const {
+bool ShelfView::IsShowingMenu() const {
   return (launcher_menu_runner_.get() &&
        launcher_menu_runner_->IsRunning());
 }
 
-bool LauncherView::IsShowingOverflowBubble() const {
+bool ShelfView::IsShowingOverflowBubble() const {
   return overflow_bubble_.get() && overflow_bubble_->IsShowing();
 }
 
-views::View* LauncherView::GetAppListButtonView() const {
+views::View* ShelfView::GetAppListButtonView() const {
   for (int i = 0; i < model_->item_count(); ++i) {
     if (model_->items()[i].type == TYPE_APP_LIST)
       return view_model_->view_at(i);
@@ -556,21 +556,21 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// LauncherView, FocusTraversable implementation:
+// ShelfView, FocusTraversable implementation:
 
-views::FocusSearch* LauncherView::GetFocusSearch() {
+views::FocusSearch* ShelfView::GetFocusSearch() {
   return focus_search_.get();
 }
 
-views::FocusTraversable* LauncherView::GetFocusTraversableParent() {
+views::FocusTraversable* ShelfView::GetFocusTraversableParent() {
   return parent()->GetFocusTraversable();
 }
 
-View* LauncherView::GetFocusTraversableParentView() {
+View* ShelfView::GetFocusTraversableParentView() {
   return this;
 }
 
-void LauncherView::CreateDragIconProxy(
+void ShelfView::CreateDragIconProxy(
     const gfx::Point& location_in_screen_coordinates,
     const gfx::ImageSkia& icon,
     views::View* replaced_view,
@@ -593,20 +593,20 @@
   drag_image_->SetWidgetVisible(true);
 }
 
-void LauncherView::UpdateDragIconProxy(
+void ShelfView::UpdateDragIconProxy(
     const gfx::Point& location_in_screen_coordinates) {
   drag_image_->SetScreenPosition(
       GetPositionInScreen(location_in_screen_coordinates,
                           drag_replaced_view_) - drag_image_offset_);
 }
 
-void LauncherView::DestroyDragIconProxy() {
+void ShelfView::DestroyDragIconProxy() {
   drag_image_.reset();
   drag_image_offset_ = gfx::Vector2d(0, 0);
 }
 
-bool LauncherView::StartDrag(const std::string& app_id,
-                             const gfx::Point& location_in_screen_coordinates) {
+bool ShelfView::StartDrag(const std::string& app_id,
+                          const gfx::Point& location_in_screen_coordinates) {
   // Bail if an operation is already going on - or the cursor is not inside.
   // This could happen if mouse / touch operations overlap.
   if (drag_and_drop_launcher_id_ ||
@@ -614,7 +614,7 @@
     return false;
 
   // If the AppsGridView (which was dispatching this event) was opened by our
-  // button, LauncherView dragging operations are locked and we have to unlock.
+  // button, ShelfView dragging operations are locked and we have to unlock.
   CancelDrag(-1);
   drag_and_drop_item_pinned_ = false;
   drag_and_drop_app_id_ = app_id;
@@ -654,7 +654,7 @@
   return true;
 }
 
-bool LauncherView::Drag(const gfx::Point& location_in_screen_coordinates) {
+bool ShelfView::Drag(const gfx::Point& location_in_screen_coordinates) {
   if (!drag_and_drop_launcher_id_ ||
       !GetBoundsInScreen().Contains(location_in_screen_coordinates))
     return false;
@@ -670,7 +670,7 @@
   return true;
 }
 
-void LauncherView::EndDrag(bool cancel) {
+void ShelfView::EndDrag(bool cancel) {
   if (!drag_and_drop_launcher_id_)
     return;
 
@@ -696,7 +696,7 @@
   drag_and_drop_launcher_id_ = 0;
 }
 
-void LauncherView::LayoutToIdealBounds() {
+void ShelfView::LayoutToIdealBounds() {
   IdealBounds ideal_bounds;
   CalculateIdealBounds(&ideal_bounds);
 
@@ -708,7 +708,7 @@
   overflow_button_->SetBoundsRect(ideal_bounds.overflow_bounds);
 }
 
-void LauncherView::CalculateIdealBounds(IdealBounds* bounds) {
+void ShelfView::CalculateIdealBounds(IdealBounds* bounds) {
   ShelfLayoutManager* shelf = tooltip_->shelf_layout_manager();
 
   int available_size = shelf->PrimaryAxisValue(width(), height());
@@ -864,14 +864,14 @@
       view_model_->set_ideal_bounds(last_button_index, app_list_bounds);
     }
     if (overflow_bubble_.get() && overflow_bubble_->IsShowing())
-      UpdateOverflowRange(overflow_bubble_->launcher_view());
+      UpdateOverflowRange(overflow_bubble_->shelf_view());
   } else {
     if (overflow_bubble_)
       overflow_bubble_->Hide();
   }
 }
 
-int LauncherView::DetermineLastVisibleIndex(int max_value) const {
+int ShelfView::DetermineLastVisibleIndex(int max_value) const {
   ShelfLayoutManager* shelf = tooltip_->shelf_layout_manager();
 
   int index = model_->FirstPanelIndex() - 1;
@@ -884,7 +884,7 @@
   return index;
 }
 
-int LauncherView::DetermineFirstVisiblePanelIndex(int min_value) const {
+int ShelfView::DetermineFirstVisiblePanelIndex(int min_value) const {
   ShelfLayoutManager* shelf = tooltip_->shelf_layout_manager();
 
   int index = model_->FirstPanelIndex();
@@ -897,15 +897,15 @@
   return index;
 }
 
-void LauncherView::AddIconObserver(LauncherIconObserver* observer) {
+void ShelfView::AddIconObserver(LauncherIconObserver* observer) {
   observers_.AddObserver(observer);
 }
 
-void LauncherView::RemoveIconObserver(LauncherIconObserver* observer) {
+void ShelfView::RemoveIconObserver(LauncherIconObserver* observer) {
   observers_.RemoveObserver(observer);
 }
 
-void LauncherView::AnimateToIdealBounds() {
+void ShelfView::AnimateToIdealBounds() {
   IdealBounds ideal_bounds;
   CalculateIdealBounds(&ideal_bounds);
   for (int i = 0; i < view_model_->view_size(); ++i) {
@@ -921,7 +921,7 @@
   overflow_button_->SetBoundsRect(ideal_bounds.overflow_bounds);
 }
 
-views::View* LauncherView::CreateViewForItem(const LauncherItem& item) {
+views::View* ShelfView::CreateViewForItem(const LauncherItem& item) {
   views::View* view = NULL;
   switch (item.type) {
     case TYPE_BROWSER_SHORTCUT:
@@ -972,7 +972,7 @@
   return view;
 }
 
-void LauncherView::FadeIn(views::View* view) {
+void ShelfView::FadeIn(views::View* view) {
   view->SetVisible(true);
   view->layer()->SetOpacity(0);
   AnimateToIdealBounds();
@@ -980,8 +980,7 @@
       view, new FadeInAnimationDelegate(view), true);
 }
 
-void LauncherView::PrepareForDrag(Pointer pointer,
-                                  const ui::LocatedEvent& event) {
+void ShelfView::PrepareForDrag(Pointer pointer, const ui::LocatedEvent& event) {
   DCHECK(!dragging());
   DCHECK(drag_view_);
   drag_pointer_ = pointer;
@@ -1005,7 +1004,7 @@
   bounds_animator_->StopAnimatingView(drag_view_);
 }
 
-void LauncherView::ContinueDrag(const ui::LocatedEvent& event) {
+void ShelfView::ContinueDrag(const ui::LocatedEvent& event) {
   // Due to a syncing operation the application might have been removed.
   // Bail if it is gone.
   int current_index = view_model_->GetIndexOfView(drag_view_);
@@ -1081,7 +1080,7 @@
   bounds_animator_->StopAnimatingView(drag_view_);
 }
 
-bool LauncherView::HandleRipOffDrag(const ui::LocatedEvent& event) {
+bool ShelfView::HandleRipOffDrag(const ui::LocatedEvent& event) {
   // Determine the distance to the shelf.
   int delta = CalculateShelfDistance(event.root_location());
   int current_index = view_model_->GetIndexOfView(drag_view_);
@@ -1129,7 +1128,7 @@
   return false;
 }
 
-void LauncherView::FinalizeRipOffDrag(bool cancel) {
+void ShelfView::FinalizeRipOffDrag(bool cancel) {
   if (!dragged_off_shelf_)
     return;
   // Make sure we do not come in here again.
@@ -1188,7 +1187,7 @@
   DestroyDragIconProxy();
 }
 
-LauncherView::RemovableState LauncherView::RemovableByRipOff(int index) {
+ShelfView::RemovableState ShelfView::RemovableByRipOff(int index) {
   LauncherItemType type = model_->items()[index].type;
   if (type == TYPE_APP_LIST || !delegate_->CanPin())
     return NOT_REMOVABLE;
@@ -1199,8 +1198,8 @@
       REMOVABLE : DRAGGABLE;
 }
 
-bool LauncherView::SameDragType(LauncherItemType typea,
-                                LauncherItemType typeb) const {
+bool ShelfView::SameDragType(LauncherItemType typea,
+                             LauncherItemType typeb) const {
   switch (typea) {
     case TYPE_APP_SHORTCUT:
     case TYPE_BROWSER_SHORTCUT:
@@ -1218,7 +1217,7 @@
   return false;
 }
 
-std::pair<int, int> LauncherView::GetDragRange(int index) {
+std::pair<int, int> ShelfView::GetDragRange(int index) {
   int min_index = -1;
   int max_index = -1;
   LauncherItemType type = model_->items()[index].type;
@@ -1232,12 +1231,12 @@
   return std::pair<int, int>(min_index, max_index);
 }
 
-void LauncherView::ConfigureChildView(views::View* view) {
+void ShelfView::ConfigureChildView(views::View* view) {
   view->SetPaintToLayer(true);
   view->layer()->SetFillsBoundsOpaquely(false);
 }
 
-void LauncherView::ToggleOverflowBubble() {
+void ShelfView::ToggleOverflowBubble() {
   if (IsShowingOverflowBubble()) {
     overflow_bubble_->Hide();
     return;
@@ -1246,8 +1245,8 @@
   if (!overflow_bubble_)
     overflow_bubble_.reset(new OverflowBubble());
 
-  LauncherView* overflow_view = new LauncherView(
-      model_, delegate_, tooltip_->shelf_layout_manager());
+  ShelfView* overflow_view =
+      new ShelfView(model_, delegate_, tooltip_->shelf_layout_manager());
   overflow_view->Init();
   overflow_view->set_owner_overflow_bubble(overflow_bubble_.get());
   overflow_view->OnShelfAlignmentChanged();
@@ -1258,7 +1257,7 @@
   Shell::GetInstance()->UpdateShelfVisibility();
 }
 
-void LauncherView::UpdateFirstButtonPadding() {
+void ShelfView::UpdateFirstButtonPadding() {
   if (ash::switches::UseAlternateShelfLayout())
     return;
 
@@ -1276,7 +1275,7 @@
   }
 }
 
-void LauncherView::OnFadeOutAnimationEnded() {
+void ShelfView::OnFadeOutAnimationEnded() {
   AnimateToIdealBounds();
 
   // If overflow button is visible and there is a valid new last item, fading
@@ -1286,12 +1285,12 @@
     last_visible_view->layer()->SetOpacity(0);
     bounds_animator_->SetAnimationDelegate(
         last_visible_view,
-        new LauncherView::StartFadeAnimationDelegate(this, last_visible_view),
+        new ShelfView::StartFadeAnimationDelegate(this, last_visible_view),
         true);
   }
 }
 
-void LauncherView::UpdateOverflowRange(LauncherView* overflow_view) {
+void ShelfView::UpdateOverflowRange(ShelfView* overflow_view) {
   const int first_overflow_index = last_visible_index_ + 1;
   const int last_overflow_index = last_hidden_index_;
   DCHECK_LE(first_overflow_index, last_overflow_index);
@@ -1301,7 +1300,7 @@
   overflow_view->last_visible_index_ = last_overflow_index;
 }
 
-bool LauncherView::ShouldHideTooltip(const gfx::Point& cursor_location) {
+bool ShelfView::ShouldHideTooltip(const gfx::Point& cursor_location) {
   gfx::Rect active_bounds;
 
   for (int i = 0; i < child_count(); ++i) {
@@ -1318,14 +1317,14 @@
   return !active_bounds.Contains(cursor_location);
 }
 
-gfx::Rect LauncherView::GetVisibleItemsBoundsInScreen() {
+gfx::Rect ShelfView::GetVisibleItemsBoundsInScreen() {
   gfx::Size preferred_size = GetPreferredSize();
   gfx::Point origin(GetMirroredXWithWidthInView(0, preferred_size.width()), 0);
   ConvertPointToScreen(this, &origin);
   return gfx::Rect(origin, preferred_size);
 }
 
-int LauncherView::CancelDrag(int modified_index) {
+int ShelfView::CancelDrag(int modified_index) {
   FinalizeRipOffDrag(true);
   if (!drag_view_)
     return modified_index;
@@ -1354,7 +1353,7 @@
   return modified_view ? view_model_->GetIndexOfView(modified_view) : -1;
 }
 
-gfx::Size LauncherView::GetPreferredSize() {
+gfx::Size ShelfView::GetPreferredSize() {
   IdealBounds ideal_bounds;
   CalculateIdealBounds(&ideal_bounds);
 
@@ -1378,7 +1377,7 @@
                    last_button_bounds.bottom() + leading_inset());
 }
 
-void LauncherView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
+void ShelfView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
   LayoutToIdealBounds();
   FOR_EACH_OBSERVER(LauncherIconObserver, observers_,
                     OnLauncherIconPositionsChanged());
@@ -1387,21 +1386,21 @@
     overflow_bubble_->Hide();
 }
 
-views::FocusTraversable* LauncherView::GetPaneFocusTraversable() {
+views::FocusTraversable* ShelfView::GetPaneFocusTraversable() {
   return this;
 }
 
-void LauncherView::GetAccessibleState(ui::AccessibleViewState* state) {
+void ShelfView::GetAccessibleState(ui::AccessibleViewState* state) {
   state->role = ui::AccessibilityTypes::ROLE_TOOLBAR;
   state->name = l10n_util::GetStringUTF16(IDS_ASH_SHELF_ACCESSIBLE_NAME);
 }
 
-void LauncherView::OnGestureEvent(ui::GestureEvent* event) {
+void ShelfView::OnGestureEvent(ui::GestureEvent* event) {
   if (gesture_handler_.ProcessGestureEvent(*event))
     event->StopPropagation();
 }
 
-void LauncherView::LauncherItemAdded(int model_index) {
+void ShelfView::LauncherItemAdded(int model_index) {
   {
     base::AutoReset<bool> cancelling_drag(
         &cancelling_drag_model_changed_, true);
@@ -1437,7 +1436,7 @@
   }
 }
 
-void LauncherView::LauncherItemRemoved(int model_index, LauncherID id) {
+void ShelfView::LauncherItemRemoved(int model_index, LauncherID id) {
   if (id == context_menu_id_)
     launcher_menu_runner_.reset();
   {
@@ -1457,12 +1456,12 @@
   // above animation finishes, CalculateIdealBounds will be called to get
   // correct overflow range. CalculateIdealBounds could hide overflow bubble
   // and triggers LauncherItemChanged. And since we are still in the middle
-  // of LauncherItemRemoved, LauncherView in overflow bubble is not synced
+  // of LauncherItemRemoved, ShelfView in overflow bubble is not synced
   // with LauncherModel and will crash.
   if (overflow_bubble_ && overflow_bubble_->IsShowing()) {
     last_hidden_index_ = std::min(last_hidden_index_,
                                   view_model_->view_size() - 1);
-    UpdateOverflowRange(overflow_bubble_->launcher_view());
+    UpdateOverflowRange(overflow_bubble_->shelf_view());
   }
 
   // Close the tooltip because it isn't needed any longer and its anchor view
@@ -1471,8 +1470,8 @@
     tooltip_->Close();
 }
 
-void LauncherView::LauncherItemChanged(int model_index,
-                                       const ash::LauncherItem& old_item) {
+void ShelfView::LauncherItemChanged(int model_index,
+                                    const ash::LauncherItem& old_item) {
   const LauncherItem& item(model_->items()[model_index]);
   if (old_item.type != item.type) {
     // Type changed, swap the views.
@@ -1516,7 +1515,7 @@
   }
 }
 
-void LauncherView::LauncherItemMoved(int start_index, int target_index) {
+void ShelfView::LauncherItemMoved(int start_index, int target_index) {
   view_model_->Move(start_index, target_index);
   // When cancelling a drag due to a launcher item being added, the currently
   // dragged item is moved back to its initial position. AnimateToIdealBounds
@@ -1526,7 +1525,7 @@
     AnimateToIdealBounds();
 }
 
-void LauncherView::LauncherStatusChanged() {
+void ShelfView::LauncherStatusChanged() {
   if (ash::switches::UseAlternateShelfLayout())
     return;
   AppListButton* app_list_button =
@@ -1537,9 +1536,9 @@
     app_list_button->StopLoadingAnimation();
 }
 
-void LauncherView::PointerPressedOnButton(views::View* view,
-                                          Pointer pointer,
-                                          const ui::LocatedEvent& event) {
+void ShelfView::PointerPressedOnButton(views::View* view,
+                                       Pointer pointer,
+                                       const ui::LocatedEvent& event) {
   if (drag_view_)
     return;
 
@@ -1558,9 +1557,9 @@
   drag_offset_ = shelf->PrimaryAxisValue(event.x(), event.y());
 }
 
-void LauncherView::PointerDraggedOnButton(views::View* view,
-                                          Pointer pointer,
-                                          const ui::LocatedEvent& event) {
+void ShelfView::PointerDraggedOnButton(views::View* view,
+                                       Pointer pointer,
+                                       const ui::LocatedEvent& event) {
   ShelfLayoutManager* shelf = tooltip_->shelf_layout_manager();
   if (!dragging() && drag_view_ &&
       shelf->PrimaryAxisValue(abs(event.x() - drag_offset_),
@@ -1572,9 +1571,9 @@
     ContinueDrag(event);
 }
 
-void LauncherView::PointerReleasedOnButton(views::View* view,
-                                           Pointer pointer,
-                                           bool canceled) {
+void ShelfView::PointerReleasedOnButton(views::View* view,
+                                        Pointer pointer,
+                                        bool canceled) {
   if (canceled) {
     CancelDrag(-1);
   } else if (drag_pointer_ == pointer) {
@@ -1588,7 +1587,7 @@
     drag_view_ = NULL;
 }
 
-void LauncherView::MouseMovedOverButton(views::View* view) {
+void ShelfView::MouseMovedOverButton(views::View* view) {
   if (!ShouldShowTooltipForView(view))
     return;
 
@@ -1596,7 +1595,7 @@
     tooltip_->ResetTimer();
 }
 
-void LauncherView::MouseEnteredButton(views::View* view) {
+void ShelfView::MouseEnteredButton(views::View* view) {
   if (!ShouldShowTooltipForView(view))
     return;
 
@@ -1607,12 +1606,12 @@
   }
 }
 
-void LauncherView::MouseExitedButton(views::View* view) {
+void ShelfView::MouseExitedButton(views::View* view) {
   if (!tooltip_->IsVisible())
     tooltip_->StopTimer();
 }
 
-base::string16 LauncherView::GetAccessibleName(const views::View* view) {
+base::string16 ShelfView::GetAccessibleName(const views::View* view) {
   int view_index = view_model_->GetIndexOfView(view);
   // May be -1 while in the process of animating closed.
   if (view_index == -1)
@@ -1623,8 +1622,7 @@
   return item_delegate->GetTitle();
 }
 
-void LauncherView::ButtonPressed(views::Button* sender,
-                                 const ui::Event& event) {
+void ShelfView::ButtonPressed(views::Button* sender, const ui::Event& event) {
   // Do not handle mouse release during drag.
   if (dragging())
     return;
@@ -1686,9 +1684,9 @@
   }
 }
 
-bool LauncherView::ShowListMenuForView(const LauncherItem& item,
-                                       views::View* source,
-                                       const ui::Event& event) {
+bool ShelfView::ShowListMenuForView(const LauncherItem& item,
+                                    views::View* source,
+                                    const ui::Event& event) {
   scoped_ptr<ash::LauncherMenuModel> menu_model;
   LauncherItemDelegate* item_delegate =
       item_manager_->GetLauncherItemDelegate(item.id);
@@ -1708,9 +1706,9 @@
   return true;
 }
 
-void LauncherView::ShowContextMenuForView(views::View* source,
-                                          const gfx::Point& point,
-                                          ui:: MenuSourceType source_type) {
+void ShelfView::ShowContextMenuForView(views::View* source,
+                                       const gfx::Point& point,
+                                       ui::MenuSourceType source_type) {
   int view_index = view_model_->GetIndexOfView(source);
   // TODO(simon.hong81): Create LauncherContextMenu for applist in its
   // LauncherItemDelegate.
@@ -1743,12 +1741,11 @@
            source_type);
 }
 
-void LauncherView::ShowMenu(
-    scoped_ptr<views::MenuModelAdapter> menu_model_adapter,
-    views::View* source,
-    const gfx::Point& click_point,
-    bool context_menu,
-    ui::MenuSourceType source_type) {
+void ShelfView::ShowMenu(scoped_ptr<views::MenuModelAdapter> menu_model_adapter,
+                         views::View* source,
+                         const gfx::Point& click_point,
+                         bool context_menu,
+                         ui::MenuSourceType source_type) {
   closing_event_time_ = base::TimeDelta();
   launcher_menu_runner_.reset(
       new views::MenuRunner(menu_model_adapter->CreateMenu()));
@@ -1833,13 +1830,13 @@
   Shell::GetInstance()->UpdateShelfVisibility();
 }
 
-void LauncherView::OnBoundsAnimatorProgressed(views::BoundsAnimator* animator) {
+void ShelfView::OnBoundsAnimatorProgressed(views::BoundsAnimator* animator) {
   FOR_EACH_OBSERVER(LauncherIconObserver, observers_,
                     OnLauncherIconPositionsChanged());
   PreferredSizeChanged();
 }
 
-void LauncherView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) {
+void ShelfView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) {
   if (snap_back_from_rip_off_view_ && animator == bounds_animator_) {
     if (!animator->IsAnimating(snap_back_from_rip_off_view_)) {
       // Coming here the animation of the LauncherButton is finished and the
@@ -1859,7 +1856,7 @@
   }
 }
 
-bool LauncherView::IsUsableEvent(const ui::Event& event) {
+bool ShelfView::IsUsableEvent(const ui::Event& event) {
   if (closing_event_time_ == base::TimeDelta())
     return true;
 
@@ -1871,7 +1868,7 @@
   return (delta.InMilliseconds() < 0 || delta.InMilliseconds() > 130);
 }
 
-const LauncherItem* LauncherView::LauncherItemForView(
+const LauncherItem* ShelfView::LauncherItemForView(
     const views::View* view) const {
   int view_index = view_model_->GetIndexOfView(view);
   if (view_index == -1)
@@ -1879,7 +1876,7 @@
   return &(model_->items()[view_index]);
 }
 
-bool LauncherView::ShouldShowTooltipForView(const views::View* view) const {
+bool ShelfView::ShouldShowTooltipForView(const views::View* view) const {
   if (view == GetAppListButtonView() &&
       Shell::GetInstance()->GetAppListWindow())
     return false;
@@ -1891,7 +1888,7 @@
   return item_delegate->ShouldShowTooltip();
 }
 
-int LauncherView::CalculateShelfDistance(const gfx::Point& coordinate) const {
+int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const {
   ShelfWidget* shelf = RootWindowController::ForLauncher(
       GetWidget()->GetNativeView())->shelf();
   ash::ShelfAlignment align = shelf->GetAlignment();
diff --git a/ash/launcher/launcher_view.h b/ash/shelf/shelf_view.h
similarity index 92%
rename from ash/launcher/launcher_view.h
rename to ash/shelf/shelf_view.h
index 4032884..0953dd3 100644
--- a/ash/launcher/launcher_view.h
+++ b/ash/shelf/shelf_view.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 ASH_LAUNCHER_LAUNCHER_VIEW_H_
-#define ASH_LAUNCHER_LAUNCHER_VIEW_H_
+#ifndef ASH_SHELF_SHELF_VIEW_H_
+#define ASH_SHELF_SHELF_VIEW_H_
 
 #include <utility>
 #include <vector>
@@ -29,7 +29,7 @@
 namespace ash {
 
 namespace test {
-class LauncherViewTestAPI;
+class ShelfViewTestAPI;
 }
 
 class LauncherDelegate;
@@ -47,19 +47,19 @@
 class ShelfLayoutManager;
 class ShelfTooltipManager;
 
-class ASH_EXPORT LauncherView : public views::View,
-                                public LauncherModelObserver,
-                                public views::ButtonListener,
-                                public LauncherButtonHost,
-                                public views::ContextMenuController,
-                                public views::FocusTraversable,
-                                public views::BoundsAnimatorObserver,
-                                public app_list::ApplicationDragAndDropHost {
+class ASH_EXPORT ShelfView : public views::View,
+                             public LauncherModelObserver,
+                             public views::ButtonListener,
+                             public LauncherButtonHost,
+                             public views::ContextMenuController,
+                             public views::FocusTraversable,
+                             public views::BoundsAnimatorObserver,
+                             public app_list::ApplicationDragAndDropHost {
  public:
-  LauncherView(LauncherModel* model,
-               LauncherDelegate* delegate,
-               ShelfLayoutManager* shelf_layout_manager);
-  virtual ~LauncherView();
+  ShelfView(LauncherModel* model,
+            LauncherDelegate* delegate,
+            ShelfLayoutManager* shelf_layout_manager);
+  virtual ~ShelfView();
 
   ShelfTooltipManager* tooltip_manager() { return tooltip_.get(); }
 
@@ -86,7 +86,7 @@
   // Returns true if overflow bubble is shown.
   bool IsShowingOverflowBubble() const;
 
-  // Sets owner overflow bubble instance from which this launcher view pops
+  // Sets owner overflow bubble instance from which this shelf view pops
   // out as overflow.
   void set_owner_overflow_bubble(OverflowBubble* owner) {
     owner_overflow_bubble_ = owner;
@@ -134,7 +134,7 @@
   }
 
  private:
-  friend class ash::test::LauncherViewTestAPI;
+  friend class ash::test::ShelfViewTestAPI;
 
   class FadeOutAnimationDelegate;
   class StartFadeAnimationDelegate;
@@ -224,7 +224,7 @@
   void OnFadeOutAnimationEnded();
 
   // Updates the visible range of overflow items in |overflow_view|.
-  void UpdateOverflowRange(LauncherView* overflow_view);
+  void UpdateOverflowRange(ShelfView* overflow_view);
 
   // Overridden from views::View:
   virtual gfx::Size GetPreferredSize() OVERRIDE;
@@ -318,7 +318,7 @@
   scoped_ptr<views::ViewModel> view_model_;
 
   // Index of first visible launcher item. When it it greater than 0,
-  // LauncherView is hosted in an overflow bubble. In this mode, it does not
+  // ShelfView is hosted in an overflow bubble. In this mode, it does not
   // show browser, app list and overflow button.
   int first_visible_index_;
 
@@ -412,10 +412,10 @@
   // Holds LauncherItemDelegateManager.
   LauncherItemDelegateManager* item_manager_;
 
-  DISALLOW_COPY_AND_ASSIGN(LauncherView);
+  DISALLOW_COPY_AND_ASSIGN(ShelfView);
 };
 
 }  // namespace internal
 }  // namespace ash
 
-#endif  // ASH_LAUNCHER_LAUNCHER_VIEW_H_
+#endif  // ASH_SHELF_SHELF_VIEW_H_
diff --git a/ash/launcher/launcher_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
similarity index 85%
rename from ash/launcher/launcher_view_unittest.cc
rename to ash/shelf/shelf_view_unittest.cc
index 220fd64..1e1765b 100644
--- a/ash/launcher/launcher_view_unittest.cc
+++ b/ash/shelf/shelf_view_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 "ash/launcher/launcher_view.h"
+#include "ash/shelf/shelf_view.h"
 
 #include <algorithm>
 #include <vector>
@@ -22,7 +22,7 @@
 #include "ash/shell_window_ids.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/test/shell_test_api.h"
 #include "ash/test/test_launcher_delegate.h"
 #include "ash/test/test_launcher_item_delegate.h"
@@ -78,19 +78,19 @@
   DISALLOW_COPY_AND_ASSIGN(TestLauncherIconObserver);
 };
 
-class LauncherViewIconObserverTest : public ash::test::AshTestBase {
+class ShelfViewIconObserverTest : public ash::test::AshTestBase {
  public:
-  LauncherViewIconObserverTest() {}
-  virtual ~LauncherViewIconObserverTest() {}
+  ShelfViewIconObserverTest() {}
+  virtual ~ShelfViewIconObserverTest() {}
 
   virtual void SetUp() OVERRIDE {
     AshTestBase::SetUp();
     Launcher* launcher = Launcher::ForPrimaryDisplay();
     observer_.reset(new TestLauncherIconObserver(launcher));
 
-    launcher_view_test_.reset(new LauncherViewTestAPI(
-        LauncherTestAPI(launcher).launcher_view()));
-    launcher_view_test_->SetAnimationDuration(1);
+    shelf_view_test_.reset(new ShelfViewTestAPI(
+        LauncherTestAPI(launcher).shelf_view()));
+    shelf_view_test_->SetAnimationDuration(1);
   }
 
   virtual void TearDown() OVERRIDE {
@@ -100,8 +100,8 @@
 
   TestLauncherIconObserver* observer() { return observer_.get(); }
 
-  LauncherViewTestAPI* launcher_view_test() {
-    return launcher_view_test_.get();
+  ShelfViewTestAPI* shelf_view_test() {
+    return shelf_view_test_.get();
   }
 
   Launcher* LauncherForSecondaryDisplay() {
@@ -110,12 +110,12 @@
 
  private:
   scoped_ptr<TestLauncherIconObserver> observer_;
-  scoped_ptr<LauncherViewTestAPI> launcher_view_test_;
+  scoped_ptr<ShelfViewTestAPI> shelf_view_test_;
 
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewIconObserverTest);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewIconObserverTest);
 };
 
-TEST_F(LauncherViewIconObserverTest, AddRemove) {
+TEST_F(ShelfViewIconObserverTest, AddRemove) {
   ash::test::TestLauncherDelegate* launcher_delegate =
       ash::test::TestLauncherDelegate::instance();
   ASSERT_TRUE(launcher_delegate);
@@ -128,13 +128,13 @@
   scoped_ptr<views::Widget> widget(new views::Widget());
   widget->Init(params);
   launcher_delegate->AddLauncherItem(widget->GetNativeWindow());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(observer()->change_notified());
   observer()->Reset();
 
   widget->Show();
   widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(observer()->change_notified());
   observer()->Reset();
 }
@@ -149,7 +149,7 @@
 #endif
 // Make sure creating/deleting an window on one displays notifies a
 // launcher on external display as well as one on primary.
-TEST_F(LauncherViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) {
+TEST_F(ShelfViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) {
   UpdateDisplay("400x400,400x400");
   TestLauncherIconObserver second_observer(LauncherForSecondaryDisplay());
 
@@ -165,14 +165,14 @@
   scoped_ptr<views::Widget> widget(new views::Widget());
   widget->Init(params);
   launcher_delegate->AddLauncherItem(widget->GetNativeWindow());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(observer()->change_notified());
   EXPECT_TRUE(second_observer.change_notified());
   observer()->Reset();
   second_observer.Reset();
 
   widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(observer()->change_notified());
   EXPECT_TRUE(second_observer.change_notified());
 
@@ -180,39 +180,39 @@
   second_observer.Reset();
 }
 
-TEST_F(LauncherViewIconObserverTest, BoundsChanged) {
+TEST_F(ShelfViewIconObserverTest, BoundsChanged) {
   ash::ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf();
   Launcher* launcher = Launcher::ForPrimaryDisplay();
   gfx::Size shelf_size =
       shelf->GetWindowBoundsInScreen().size();
   shelf_size.set_width(shelf_size.width() / 2);
   ASSERT_GT(shelf_size.width(), 0);
-  launcher->SetLauncherViewBounds(gfx::Rect(shelf_size));
-  // No animation happens for LauncherView bounds change.
+  launcher->SetShelfViewBounds(gfx::Rect(shelf_size));
+  // No animation happens for ShelfView bounds change.
   EXPECT_TRUE(observer()->change_notified());
   observer()->Reset();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// LauncherView tests.
+// ShelfView tests.
 
-class LauncherViewTest : public AshTestBase {
+class ShelfViewTest : public AshTestBase {
  public:
-  LauncherViewTest() : model_(NULL), launcher_view_(NULL), browser_index_(1) {}
-  virtual ~LauncherViewTest() {}
+  ShelfViewTest() : model_(NULL), shelf_view_(NULL), browser_index_(1) {}
+  virtual ~ShelfViewTest() {}
 
   virtual void SetUp() OVERRIDE {
     AshTestBase::SetUp();
     test::ShellTestApi test_api(Shell::GetInstance());
     model_ = test_api.launcher_model();
     Launcher* launcher = Launcher::ForPrimaryDisplay();
-    launcher_view_ = test::LauncherTestAPI(launcher).launcher_view();
+    shelf_view_ = test::LauncherTestAPI(launcher).shelf_view();
 
     // The bounds should be big enough for 4 buttons + overflow chevron.
-    launcher_view_->SetBounds(0, 0, 500,
+    shelf_view_->SetBounds(0, 0, 500,
         internal::ShelfLayoutManager::GetPreferredShelfSize());
 
-    test_api_.reset(new LauncherViewTestAPI(launcher_view_));
+    test_api_.reset(new ShelfViewTestAPI(shelf_view_));
     test_api_->SetAnimationDuration(1);  // Speeds up animation for test.
 
     item_manager_ =
@@ -325,12 +325,12 @@
   void VerifyLauncherItemBoundsAreValid() {
     for (int i=0;i <= test_api_->GetLastVisibleIndex(); ++i) {
       if (test_api_->GetButton(i)) {
-        gfx::Rect launcher_view_bounds = launcher_view_->GetLocalBounds();
+        gfx::Rect shelf_view_bounds = shelf_view_->GetLocalBounds();
         gfx::Rect item_bounds = test_api_->GetBoundsByIndex(i);
         EXPECT_TRUE(item_bounds.x() >= 0);
         EXPECT_TRUE(item_bounds.y() >= 0);
-        EXPECT_TRUE(item_bounds.right() <= launcher_view_bounds.width());
-        EXPECT_TRUE(item_bounds.bottom() <= launcher_view_bounds.height());
+        EXPECT_TRUE(item_bounds.right() <= shelf_view_bounds.width());
+        EXPECT_TRUE(item_bounds.bottom() <= shelf_view_bounds.height());
       }
     }
   }
@@ -338,7 +338,7 @@
   views::View* SimulateButtonPressed(
       internal::LauncherButtonHost::Pointer pointer,
       int button_index) {
-    internal::LauncherButtonHost* button_host = launcher_view_;
+    internal::LauncherButtonHost* button_host = shelf_view_;
     views::View* button = test_api_->GetButton(button_index);
     ui::MouseEvent click_event(ui::ET_MOUSE_PRESSED,
                                button->bounds().origin(),
@@ -349,7 +349,7 @@
 
   views::View* SimulateClick(internal::LauncherButtonHost::Pointer pointer,
                              int button_index) {
-    internal::LauncherButtonHost* button_host = launcher_view_;
+    internal::LauncherButtonHost* button_host = shelf_view_;
     views::View* button = SimulateButtonPressed(pointer, button_index);
     button_host->PointerReleasedOnButton(button,
                                          internal::LauncherButtonHost::MOUSE,
@@ -360,7 +360,7 @@
   views::View* SimulateDrag(internal::LauncherButtonHost::Pointer pointer,
                             int button_index,
                             int destination_index) {
-    internal::LauncherButtonHost* button_host = launcher_view_;
+    internal::LauncherButtonHost* button_host = shelf_view_;
     views::View* button = SimulateButtonPressed(pointer, button_index);
 
     // Drag.
@@ -393,40 +393,40 @@
   }
 
   views::View* GetTooltipAnchorView() {
-    return launcher_view_->tooltip_manager()->anchor_;
+    return shelf_view_->tooltip_manager()->anchor_;
   }
 
   void ShowTooltip() {
-    launcher_view_->tooltip_manager()->ShowInternal();
+    shelf_view_->tooltip_manager()->ShowInternal();
   }
 
   LauncherModel* model_;
-  internal::LauncherView* launcher_view_;
+  internal::ShelfView* shelf_view_;
   int browser_index_;
   LauncherItemDelegateManager* item_manager_;
 
-  scoped_ptr<LauncherViewTestAPI> test_api_;
+  scoped_ptr<ShelfViewTestAPI> test_api_;
 
  private:
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewTest);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewTest);
 };
 
-class LauncherViewLegacyShelfLayoutTest : public LauncherViewTest {
+class ShelfViewLegacyShelfLayoutTest : public ShelfViewTest {
  public:
-  LauncherViewLegacyShelfLayoutTest() : LauncherViewTest() {
+  ShelfViewLegacyShelfLayoutTest() : ShelfViewTest() {
     browser_index_ = 0;
   }
 
-  virtual ~LauncherViewLegacyShelfLayoutTest() {}
+  virtual ~ShelfViewLegacyShelfLayoutTest() {}
 
   virtual void SetUp() OVERRIDE {
     CommandLine::ForCurrentProcess()->AppendSwitch(
         ash::switches::kAshDisableAlternateShelfLayout);
-    LauncherViewTest::SetUp();
+    ShelfViewTest::SetUp();
   }
 
  private:
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewLegacyShelfLayoutTest);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewLegacyShelfLayoutTest);
 };
 
 class ScopedTextDirectionChange {
@@ -453,45 +453,45 @@
   std::string original_locale_;
 };
 
-class LauncherViewTextDirectionTest
-    : public LauncherViewTest,
+class ShelfViewTextDirectionTest
+    : public ShelfViewTest,
       public testing::WithParamInterface<bool> {
  public:
-  LauncherViewTextDirectionTest() : text_direction_change_(GetParam()) {}
-  virtual ~LauncherViewTextDirectionTest() {}
+  ShelfViewTextDirectionTest() : text_direction_change_(GetParam()) {}
+  virtual ~ShelfViewTextDirectionTest() {}
 
   virtual void SetUp() OVERRIDE {
-    LauncherViewTest::SetUp();
+    ShelfViewTest::SetUp();
   }
 
   virtual void TearDown() OVERRIDE {
-    LauncherViewTest::TearDown();
+    ShelfViewTest::TearDown();
   }
 
  private:
   ScopedTextDirectionChange text_direction_change_;
 
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewTextDirectionTest);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewTextDirectionTest);
 };
 
 // Checks that the ideal item icon bounds match the view's bounds in the screen
 // in both LTR and RTL.
-TEST_P(LauncherViewTextDirectionTest, IdealBoundsOfItemIcon) {
+TEST_P(ShelfViewTextDirectionTest, IdealBoundsOfItemIcon) {
   LauncherID id = AddPlatformApp();
   internal::LauncherButton* button = GetButtonByID(id);
   gfx::Rect item_bounds = button->GetBoundsInScreen();
   gfx::Point icon_offset = button->GetIconBounds().origin();
   item_bounds.Offset(icon_offset.OffsetFromOrigin());
-  gfx::Rect ideal_bounds = launcher_view_->GetIdealBoundsOfItemIcon(id);
+  gfx::Rect ideal_bounds = shelf_view_->GetIdealBoundsOfItemIcon(id);
   gfx::Point screen_origin;
-  views::View::ConvertPointToScreen(launcher_view_, &screen_origin);
+  views::View::ConvertPointToScreen(shelf_view_, &screen_origin);
   ideal_bounds.Offset(screen_origin.x(), screen_origin.y());
   EXPECT_EQ(item_bounds.x(), ideal_bounds.x());
   EXPECT_EQ(item_bounds.y(), ideal_bounds.y());
 }
 
-// Checks that launcher view contents are considered in the correct drag group.
-TEST_F(LauncherViewTest, EnforceDragType) {
+// Checks that shelf view contents are considered in the correct drag group.
+TEST_F(ShelfViewTest, EnforceDragType) {
   EXPECT_TRUE(test_api_->SameDragType(TYPE_PLATFORM_APP, TYPE_PLATFORM_APP));
   EXPECT_FALSE(test_api_->SameDragType(TYPE_PLATFORM_APP, TYPE_APP_SHORTCUT));
   EXPECT_FALSE(test_api_->SameDragType(TYPE_PLATFORM_APP,
@@ -527,7 +527,7 @@
 
 // Adds platform app button until overflow and verifies that the last added
 // platform app button is hidden.
-TEST_F(LauncherViewTest, AddBrowserUntilOverflow) {
+TEST_F(ShelfViewTest, AddBrowserUntilOverflow) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -551,7 +551,7 @@
 // Adds one platform app button then adds app shortcut until overflow. Verifies
 // that the browser button gets hidden on overflow and last added app shortcut
 // is still visible.
-TEST_F(LauncherViewTest, AddAppShortcutWithBrowserButtonUntilOverflow) {
+TEST_F(ShelfViewTest, AddAppShortcutWithBrowserButtonUntilOverflow) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -574,7 +574,7 @@
   EXPECT_FALSE(GetButtonByID(browser_button_id)->visible());
 }
 
-TEST_F(LauncherViewLegacyShelfLayoutTest,
+TEST_F(ShelfViewLegacyShelfLayoutTest,
        AddAppShortcutWithBrowserButtonUntilOverflow) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
@@ -600,7 +600,7 @@
   EXPECT_FALSE(GetButtonByID(browser_button_id)->visible());
 }
 
-TEST_F(LauncherViewTest, AddPanelHidesPlatformAppButton) {
+TEST_F(ShelfViewTest, AddPanelHidesPlatformAppButton) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -627,7 +627,7 @@
   EXPECT_FALSE(test_api_->IsOverflowButtonVisible());
 }
 
-TEST_F(LauncherViewLegacyShelfLayoutTest, AddPanelHidesPlatformAppButton) {
+TEST_F(ShelfViewLegacyShelfLayoutTest, AddPanelHidesPlatformAppButton) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -658,7 +658,7 @@
 
 // When there are more panels then platform app buttons we should hide panels
 // rather than platform apps.
-TEST_F(LauncherViewTest, PlatformAppHidesExcessPanels) {
+TEST_F(ShelfViewTest, PlatformAppHidesExcessPanels) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -700,7 +700,7 @@
 // Adds button until overflow then removes first added one. Verifies that
 // the last added one changes from invisible to visible and overflow
 // chevron is gone.
-TEST_F(LauncherViewTest, RemoveButtonRevealsOverflowed) {
+TEST_F(ShelfViewTest, RemoveButtonRevealsOverflowed) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -730,7 +730,7 @@
 }
 
 // Verifies that remove last overflowed button should hide overflow chevron.
-TEST_F(LauncherViewTest, RemoveLastOverflowed) {
+TEST_F(ShelfViewTest, RemoveLastOverflowed) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -750,7 +750,7 @@
 
 // Adds platform app button without waiting for animation to finish and verifies
 // that all added buttons are visible.
-TEST_F(LauncherViewTest, AddButtonQuickly) {
+TEST_F(ShelfViewTest, AddButtonQuickly) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -763,7 +763,7 @@
     ASSERT_LT(added_count, 10000);
   }
 
-  // LauncherView should be big enough to hold at least 3 new buttons.
+  // ShelfView should be big enough to hold at least 3 new buttons.
   ASSERT_GE(added_count, 3);
 
   // Wait for the last animation to finish.
@@ -781,8 +781,8 @@
 
 // Check that model changes are handled correctly while a launcher icon is being
 // dragged.
-TEST_F(LauncherViewTest, ModelChangesWhileDragging) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewTest, ModelChangesWhileDragging) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
 
   std::vector<std::pair<LauncherID, views::View*> > id_map;
   SetupForDragTest(&id_map);
@@ -848,8 +848,8 @@
                                        false);
 }
 
-TEST_F(LauncherViewLegacyShelfLayoutTest, ModelChangesWhileDragging) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewLegacyShelfLayoutTest, ModelChangesWhileDragging) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
 
   std::vector<std::pair<LauncherID, views::View*> > id_map;
   SetupForDragTest(&id_map);
@@ -916,8 +916,8 @@
 }
 
 // Check that 2nd drag from the other pointer would be ignored.
-TEST_F(LauncherViewTest, SimultaneousDrag) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewTest, SimultaneousDrag) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
 
   std::vector<std::pair<LauncherID, views::View*> > id_map;
   SetupForDragTest(&id_map);
@@ -965,8 +965,8 @@
 
 // Check that clicking first on one item and then dragging another works as
 // expected.
-TEST_F(LauncherViewTest, ClickOneDragAnother) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewTest, ClickOneDragAnother) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
 
   std::vector<std::pair<LauncherID, views::View*> > id_map;
   SetupForDragTest(&id_map);
@@ -989,7 +989,7 @@
 }
 
 // Confirm that item status changes are reflected in the buttons.
-TEST_F(LauncherViewTest, LauncherItemStatus) {
+TEST_F(ShelfViewTest, LauncherItemStatus) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -1007,7 +1007,7 @@
   ASSERT_EQ(internal::LauncherButton::STATE_ATTENTION, button->state());
 }
 
-TEST_F(LauncherViewLegacyShelfLayoutTest,
+TEST_F(ShelfViewLegacyShelfLayoutTest,
        LauncherItemPositionReflectedOnStateChanged) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -1042,7 +1042,7 @@
 
 // Confirm that item status changes are reflected in the buttons
 // for platform apps.
-TEST_F(LauncherViewTest, LauncherItemStatusPlatformApp) {
+TEST_F(ShelfViewTest, LauncherItemStatusPlatformApp) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -1061,7 +1061,7 @@
 }
 
 // Confirm that launcher item bounds are correctly updated on shelf changes.
-TEST_F(LauncherViewTest, LauncherItemBoundsCheck) {
+TEST_F(ShelfViewTest, LauncherItemBoundsCheck) {
   internal::ShelfLayoutManager* shelf_layout_manager =
       Shell::GetPrimaryRootWindowController()->shelf()->shelf_layout_manager();
   VerifyLauncherItemBoundsAreValid();
@@ -1073,7 +1073,7 @@
   VerifyLauncherItemBoundsAreValid();
 }
 
-TEST_F(LauncherViewTest, ShelfTooltipTest) {
+TEST_F(ShelfViewTest, ShelfTooltipTest) {
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
 
@@ -1084,9 +1084,9 @@
   internal::LauncherButton* app_button = GetButtonByID(app_button_id);
   internal::LauncherButton* platform_button = GetButtonByID(platform_button_id);
 
-  internal::LauncherButtonHost* button_host = launcher_view_;
+  internal::LauncherButtonHost* button_host = shelf_view_;
   internal::ShelfTooltipManager* tooltip_manager =
-      launcher_view_->tooltip_manager();
+      shelf_view_->tooltip_manager();
 
   button_host->MouseEnteredButton(app_button);
   // There's a delay to show the tooltip, so it's not visible yet.
@@ -1121,10 +1121,10 @@
 
 // Verify a fix for crash caused by a tooltip update for a deleted launcher
 // button, see crbug.com/288838.
-TEST_F(LauncherViewTest, RemovingItemClosesTooltip) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewTest, RemovingItemClosesTooltip) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
   internal::ShelfTooltipManager* tooltip_manager =
-      launcher_view_->tooltip_manager();
+      shelf_view_->tooltip_manager();
 
   // Add an item to the launcher.
   LauncherID app_button_id = AddAppShortcut();
@@ -1147,10 +1147,10 @@
 }
 
 // Changing the shelf alignment closes any open tooltip.
-TEST_F(LauncherViewTest, ShelfAlignmentClosesTooltip) {
-  internal::LauncherButtonHost* button_host = launcher_view_;
+TEST_F(ShelfViewTest, ShelfAlignmentClosesTooltip) {
+  internal::LauncherButtonHost* button_host = shelf_view_;
   internal::ShelfTooltipManager* tooltip_manager =
-      launcher_view_->tooltip_manager();
+      shelf_view_->tooltip_manager();
 
   // Add an item to the launcher.
   LauncherID app_button_id = AddAppShortcut();
@@ -1168,7 +1168,7 @@
   EXPECT_FALSE(tooltip_manager->IsVisible());
 }
 
-TEST_F(LauncherViewTest, ShouldHideTooltipTest) {
+TEST_F(ShelfViewTest, ShouldHideTooltipTest) {
   LauncherID app_button_id = AddAppShortcut();
   LauncherID platform_button_id = AddPlatformApp();
 
@@ -1178,14 +1178,14 @@
     if (!button)
       continue;
 
-    EXPECT_FALSE(launcher_view_->ShouldHideTooltip(
+    EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
         button->GetMirroredBounds().CenterPoint()))
-        << "LauncherView tries to hide on button " << i;
+        << "ShelfView tries to hide on button " << i;
   }
 
   // The tooltip should not hide on the app-list button.
-  views::View* app_list_button = launcher_view_->GetAppListButtonView();
-  EXPECT_FALSE(launcher_view_->ShouldHideTooltip(
+  views::View* app_list_button = shelf_view_->GetAppListButtonView();
+  EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
       app_list_button->GetMirroredBounds().CenterPoint()));
 
   // The tooltip shouldn't hide if the mouse is in the gap between two buttons.
@@ -1193,7 +1193,7 @@
   gfx::Rect platform_button_rect =
       GetButtonByID(platform_button_id)->GetMirroredBounds();
   ASSERT_FALSE(app_button_rect.Intersects(platform_button_rect));
-  EXPECT_FALSE(launcher_view_->ShouldHideTooltip(
+  EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
       gfx::UnionRects(app_button_rect, platform_button_rect).CenterPoint()));
 
   // The tooltip should hide if it's outside of all buttons.
@@ -1205,21 +1205,21 @@
 
     all_area.Union(button->GetMirroredBounds());
   }
-  all_area.Union(launcher_view_->GetAppListButtonView()->GetMirroredBounds());
-  EXPECT_FALSE(launcher_view_->ShouldHideTooltip(all_area.origin()));
-  EXPECT_FALSE(launcher_view_->ShouldHideTooltip(
+  all_area.Union(shelf_view_->GetAppListButtonView()->GetMirroredBounds());
+  EXPECT_FALSE(shelf_view_->ShouldHideTooltip(all_area.origin()));
+  EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
       gfx::Point(all_area.right() - 1, all_area.bottom() - 1)));
-  EXPECT_TRUE(launcher_view_->ShouldHideTooltip(
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
       gfx::Point(all_area.right(), all_area.y())));
-  EXPECT_TRUE(launcher_view_->ShouldHideTooltip(
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
       gfx::Point(all_area.x() - 1, all_area.y())));
-  EXPECT_TRUE(launcher_view_->ShouldHideTooltip(
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
       gfx::Point(all_area.x(), all_area.y() - 1)));
-  EXPECT_TRUE(launcher_view_->ShouldHideTooltip(
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
       gfx::Point(all_area.x(), all_area.bottom())));
 }
 
-TEST_F(LauncherViewTest, ShouldHideTooltipWithAppListWindowTest) {
+TEST_F(ShelfViewTest, ShouldHideTooltipWithAppListWindowTest) {
   Shell::GetInstance()->ToggleAppList(NULL);
   ASSERT_TRUE(Shell::GetInstance()->GetAppListWindow());
 
@@ -1229,22 +1229,22 @@
     if (!button)
       continue;
 
-    EXPECT_FALSE(launcher_view_->ShouldHideTooltip(
+    EXPECT_FALSE(shelf_view_->ShouldHideTooltip(
         button->GetMirroredBounds().CenterPoint()))
-        << "LauncherView tries to hide on button " << i;
+        << "ShelfView tries to hide on button " << i;
   }
 
   // The tooltip should hide on the app-list button.
-  views::View* app_list_button = launcher_view_->GetAppListButtonView();
-  EXPECT_TRUE(launcher_view_->ShouldHideTooltip(
+  views::View* app_list_button = shelf_view_->GetAppListButtonView();
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
       app_list_button->GetMirroredBounds().CenterPoint()));
 }
 
 // Test that by moving the mouse cursor off the button onto the bubble it closes
 // the bubble.
-TEST_F(LauncherViewTest, ShouldHideTooltipWhenHoveringOnTooltip) {
+TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) {
   internal::ShelfTooltipManager* tooltip_manager =
-      launcher_view_->tooltip_manager();
+      shelf_view_->tooltip_manager();
   tooltip_manager->CreateZeroDelayTimerForTest();
   aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
 
@@ -1253,7 +1253,7 @@
   EXPECT_FALSE(tooltip_manager->IsVisible());
 
   // Move the mouse over the button and check that it is visible.
-  views::View* app_list_button = launcher_view_->GetAppListButtonView();
+  views::View* app_list_button = shelf_view_->GetAppListButtonView();
   gfx::Rect bounds = app_list_button->GetBoundsInScreen();
   generator.MoveMouseTo(bounds.CenterPoint());
   // Wait for the timer to go off.
@@ -1281,10 +1281,10 @@
   EXPECT_FALSE(tooltip_manager->IsVisible());
 }
 
-// Resizing launcher view while an add animation without fade-in is running,
+// Resizing shelf view while an add animation without fade-in is running,
 // which happens when overflow happens. App list button should end up in its
 // new ideal bounds.
-TEST_F(LauncherViewTest, ResizeDuringOverflowAddAnimation) {
+TEST_F(ShelfViewTest, ResizeDuringOverflowAddAnimation) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -1300,10 +1300,10 @@
     ASSERT_LT(items_added, 10000);
   }
 
-  // Resize launcher view with that animation running and stay overflown.
-  gfx::Rect bounds = launcher_view_->bounds();
+  // Resize shelf view with that animation running and stay overflown.
+  gfx::Rect bounds = shelf_view_->bounds();
   bounds.set_width(bounds.width() - kLauncherPreferredSize);
-  launcher_view_->SetBoundsRect(bounds);
+  shelf_view_->SetBoundsRect(bounds);
   ASSERT_TRUE(test_api_->IsOverflowButtonVisible());
 
   // Finish the animation.
@@ -1320,7 +1320,7 @@
 
 // Check that the first item in the list follows Fitt's law by including the
 // first pixel and being therefore bigger then the others.
-TEST_F(LauncherViewLegacyShelfLayoutTest, CheckFittsLaw) {
+TEST_F(ShelfViewLegacyShelfLayoutTest, CheckFittsLaw) {
   // All buttons should be visible.
   ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
             test_api_->GetButtonCount());
@@ -1329,14 +1329,14 @@
   EXPECT_GT(ideal_bounds_0.width(), ideal_bounds_1.width());
 }
 
-class LauncherViewVisibleBoundsTest : public LauncherViewTest,
+class ShelfViewVisibleBoundsTest : public ShelfViewTest,
                                       public testing::WithParamInterface<bool> {
  public:
-  LauncherViewVisibleBoundsTest() : text_direction_change_(GetParam()) {}
+  ShelfViewVisibleBoundsTest() : text_direction_change_(GetParam()) {}
 
   void CheckAllItemsAreInBounds() {
-    gfx::Rect visible_bounds = launcher_view_->GetVisibleItemsBoundsInScreen();
-    gfx::Rect launcher_bounds = launcher_view_->GetBoundsInScreen();
+    gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen();
+    gfx::Rect launcher_bounds = shelf_view_->GetBoundsInScreen();
     EXPECT_TRUE(launcher_bounds.Contains(visible_bounds));
     for (int i = 0; i < test_api_->GetButtonCount(); ++i)
       if (internal::LauncherButton* button = test_api_->GetButton(i))
@@ -1345,8 +1345,8 @@
   }
 
   void CheckAppListButtonIsInBounds() {
-    gfx::Rect visible_bounds = launcher_view_->GetVisibleItemsBoundsInScreen();
-    gfx::Rect app_list_button_bounds = launcher_view_->GetAppListButtonView()->
+    gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen();
+    gfx::Rect app_list_button_bounds = shelf_view_->GetAppListButtonView()->
        GetBoundsInScreen();
     EXPECT_TRUE(visible_bounds.Contains(app_list_button_bounds));
   }
@@ -1354,10 +1354,10 @@
  private:
   ScopedTextDirectionChange text_direction_change_;
 
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewVisibleBoundsTest);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewVisibleBoundsTest);
 };
 
-TEST_P(LauncherViewVisibleBoundsTest, ItemsAreInBounds) {
+TEST_P(ShelfViewVisibleBoundsTest, ItemsAreInBounds) {
   // Adding elements leaving some empty space.
   for (int i = 0; i < 3; i++) {
     AddAppShortcut();
@@ -1373,8 +1373,8 @@
   CheckAllItemsAreInBounds();
 }
 
-INSTANTIATE_TEST_CASE_P(LtrRtl, LauncherViewTextDirectionTest, testing::Bool());
-INSTANTIATE_TEST_CASE_P(VisibleBounds, LauncherViewVisibleBoundsTest,
+INSTANTIATE_TEST_CASE_P(LtrRtl, ShelfViewTextDirectionTest, testing::Bool());
+INSTANTIATE_TEST_CASE_P(VisibleBounds, ShelfViewVisibleBoundsTest,
     testing::Bool());
 
 }  // namespace test
diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc
index 70d6604..42204a7 100644
--- a/ash/shelf/shelf_widget.cc
+++ b/ash/shelf/shelf_widget.cc
@@ -8,11 +8,11 @@
 #include "ash/focus_cycler.h"
 #include "ash/launcher/launcher_delegate.h"
 #include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/session_state_delegate.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_navigator.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
@@ -233,7 +233,7 @@
 
 namespace ash {
 
-// The contents view of the Shelf. This view contains LauncherView and
+// The contents view of the Shelf. This view contains ShelfView and
 // sizes it to the width of the shelf minus the size of the status area.
 class ShelfWidget::DelegateView : public views::WidgetDelegate,
                                   public views::AccessiblePaneView,
diff --git a/ash/shelf/shelf_widget_unittest.cc b/ash/shelf/shelf_widget_unittest.cc
index b12549f..6004a6c 100644
--- a/ash/shelf/shelf_widget_unittest.cc
+++ b/ash/shelf/shelf_widget_unittest.cc
@@ -7,13 +7,13 @@
 #include "ash/launcher/launcher.h"
 #include "ash/launcher/launcher_button.h"
 #include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf_layout_manager.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/wm/window_util.h"
 #include "ui/aura/root_window.h"
 #include "ui/gfx/display.h"
@@ -141,7 +141,7 @@
   // Test only makes sense if the status is > 0, which it better be.
   EXPECT_GT(status_width, 0);
   EXPECT_EQ(status_width, shelf_widget->GetContentsView()->width() -
-            test::LauncherTestAPI(launcher).launcher_view()->width());
+            test::LauncherTestAPI(launcher).shelf_view()->width());
 }
 
 // Verifies when the shell is deleted with a full screen window we don't crash.
@@ -187,7 +187,7 @@
   EXPECT_GT(status_width, 0);
   EXPECT_EQ(status_width,
             shelf->GetContentsView()->width() -
-                test::LauncherTestAPI(launcher).launcher_view()->width());
+                test::LauncherTestAPI(launcher).shelf_view()->width());
 }
 #endif
 
diff --git a/ash/shell.cc b/ash/shell.cc
index 5ad43a2..6e25c52 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -24,6 +24,7 @@
 #include "ash/display/resolution_notification_controller.h"
 #include "ash/display/screen_position_controller.h"
 #include "ash/drag_drop/drag_drop_controller.h"
+#include "ash/first_run/first_run_helper_impl.h"
 #include "ash/focus_cycler.h"
 #include "ash/high_contrast/high_contrast_controller.h"
 #include "ash/host/root_window_host_factory.h"
@@ -82,7 +83,6 @@
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/client/user_action_client.h"
 #include "ui/aura/env.h"
-#include "ui/aura/focus_manager.h"
 #include "ui/aura/layout_manager.h"
 #include "ui/aura/root_window.h"
 #include "ui/aura/window.h"
@@ -266,15 +266,8 @@
 
   aura::RootWindow* root =
       wm::GetRootWindowMatching(gfx::Rect(location_in_screen, gfx::Size()));
-  // TODO(oshima): The root and root window controller shouldn't be
-  // NULL even for the out-of-bounds |location_in_screen| (It should
-  // return the primary root). Investigate why/how this is
-  // happening. crbug.com/165214.
-  internal::RootWindowController* rwc = internal::GetRootWindowController(root);
-  CHECK(rwc) << "root=" << root
-             << ", location:" << location_in_screen.ToString();
-  if (rwc)
-    rwc->ShowContextMenu(location_in_screen, source_type);
+  internal::GetRootWindowController(root)->
+      ShowContextMenu(location_in_screen, source_type);
 }
 
 void Shell::ToggleAppList(aura::Window* window) {
@@ -295,6 +288,10 @@
   return app_list_controller_.get() ? app_list_controller_->GetWindow() : NULL;
 }
 
+app_list::AppListView* Shell::GetAppListView() {
+  return app_list_controller_.get() ? app_list_controller_->GetView() : NULL;
+}
+
 bool Shell::IsSystemModalWindowOpen() const {
   if (simulate_modal_window_open_for_testing_)
     return true;
@@ -316,9 +313,7 @@
 views::NonClientFrameView* Shell::CreateDefaultNonClientFrameView(
     views::Widget* widget) {
   // Use translucent-style window frames for dialogs.
-  CustomFrameViewAsh* frame_view = new CustomFrameViewAsh;
-  frame_view->Init(widget);
-  return frame_view;
+  return new CustomFrameViewAsh(widget);
 }
 
 void Shell::RotateFocus(Direction direction) {
@@ -523,26 +518,11 @@
                     OnTouchHudProjectionToggled(enabled));
 }
 
-void Shell::InitRootWindowForSecondaryDisplay(aura::RootWindow* root) {
-  internal::RootWindowController* controller =
-      new internal::RootWindowController(root);
-  // Pass false for the |is_first_run_after_boot| parameter so we'll show a
-  // black background on this display instead of trying to mimic the boot splash
-  // screen.
-  InitRootWindowController(controller, false);
-
-  controller->root_window_layout()->OnWindowResized();
-  desktop_background_controller_->OnRootWindowAdded(root);
-  high_contrast_controller_->OnRootWindowAdded(root);
-  root->ShowRootWindow();
-  // Activate new root for testing.
-  // TODO(oshima): remove this.
-  target_root_window_ = root;
-
-  // Create a launcher if a user is already logged.
-  if (Shell::GetInstance()->session_state_delegate()->NumberOfLoggedInUsers())
-    controller->shelf()->CreateLauncher();
+#if defined(OS_CHROMEOS)
+ash::FirstRunHelper* Shell::CreateFirstRunHelper() {
+  return new ash::FirstRunHelperImpl;
 }
+#endif  // defined(OS_CHROMEOS)
 
 void Shell::DoInitialWorkspaceAnimation() {
   return GetPrimaryRootWindowController()->workspace_controller()->
@@ -869,24 +849,21 @@
   system_tray_delegate_.reset(delegate()->CreateSystemTrayDelegate());
   DCHECK(system_tray_delegate_.get());
 
-  internal::RootWindowController* root_window_controller =
-      new internal::RootWindowController(root_window);
-  InitRootWindowController(root_window_controller,
-                           delegate_->IsFirstRunAfterBoot());
-  InitKeyboard(root_window_controller);
-
   locale_notification_controller_.reset(
       new internal::LocaleNotificationController);
 
   // Initialize system_tray_delegate_ after StatusAreaWidget is created.
   system_tray_delegate_->Initialize();
 
+  // TODO(oshima): Initialize all RootWindowControllers once, and
+  // initialize controller/delegates above when initializing the
+  // primary root window controller.
+  internal::RootWindowController::CreateForPrimaryDisplay(root_window);
+
   display_controller_->InitSecondaryDisplays();
 
-  // Force Layout
-  root_window_controller->root_window_layout()->OnWindowResized();
-
-  // It needs to be created after OnWindowResized has been called, otherwise the
+  // It needs to be created after RootWindowController has been created
+  // (which calls OnWindowResized has been called, otherwise the
   // widget will not paint when restoring after a browser crash.  Also it needs
   // to be created after InitSecondaryDisplays() to initialize the wallpapers in
   // the correct size.
@@ -941,11 +918,7 @@
   }
 }
 
-void Shell::InitRootWindowController(
-    internal::RootWindowController* controller,
-    bool first_run_after_boot) {
-
-  aura::RootWindow* root_window = controller->root_window();
+void Shell::InitRootWindow(aura::RootWindow* root_window) {
   DCHECK(activation_client_);
   DCHECK(visibility_controller_.get());
   DCHECK(drag_drop_controller_.get());
@@ -971,8 +944,6 @@
   }
   if (user_action_client_)
     aura::client::SetUserActionClient(root_window, user_action_client_.get());
-
-  controller->Init(first_run_after_boot);
 }
 
 bool Shell::CanWindowReceiveEvents(aura::Window* window) {
diff --git a/ash/shell.h b/ash/shell.h
index 34b31eb..af884f4 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -27,6 +27,9 @@
 
 class CommandLine;
 
+namespace app_list {
+class AppListView;
+}
 namespace aura {
 class EventFilter;
 class RootWindow;
@@ -78,6 +81,7 @@
 class CapsLockDelegate;
 class DesktopBackgroundController;
 class DisplayController;
+class FirstRunHelper;
 class HighContrastController;
 class Launcher;
 class LauncherDelegate;
@@ -234,6 +238,9 @@
   // Returns app list window or NULL if it is not visible.
   aura::Window* GetAppListWindow();
 
+  // Returns app list view or NULL if it is not visible.
+  app_list::AppListView* GetAppListView();
+
   // Returns true if a system-modal dialog window is currently open.
   bool IsSystemModalWindowOpen() const;
 
@@ -274,7 +281,7 @@
   // Initializes |launcher_|.  Does nothing if it's already initialized.
   void CreateLauncher();
 
-  // Show launcher view if it was created hidden (before session has started).
+  // Show shelf view if it was created hidden (before session has started).
   void ShowLauncher();
 
   // Adds/removes observer.
@@ -454,9 +461,6 @@
     browser_context_ = browser_context;
   }
 
-  // Initializes the root window to be used for a secondary display.
-  void InitRootWindowForSecondaryDisplay(aura::RootWindow* root);
-
   // Starts the animation that occurs on first login.
   void DoInitialWorkspaceAnimation();
 
@@ -499,6 +503,12 @@
     return is_touch_hud_projection_enabled_;
   }
 
+#if defined(OS_CHROMEOS)
+  // Creates instance of FirstRunHelper. Caller is responsible for deleting
+  // returned object.
+  ash::FirstRunHelper* CreateFirstRunHelper();
+#endif  // defined(OS_CHROMEOS)
+
  private:
   FRIEND_TEST_ALL_PREFIXES(ExtendedDesktopTest, TestCursor);
   FRIEND_TEST_ALL_PREFIXES(WindowManagerTest, MouseEventCursors);
@@ -519,11 +529,8 @@
   // Initializes virtual keyboard controller and attaches it to |root|.
   void InitKeyboard(internal::RootWindowController* root);
 
-  // Initializes the root window and root window controller so that it
-  // can host browser windows. |first_run_after_boot| is true for the
-  // primary display only first time after boot.
-  void InitRootWindowController(internal::RootWindowController* root,
-                                bool first_run_after_boot);
+  // Initializes the root window so that it can host browser windows.
+  void InitRootWindow(aura::RootWindow* root_window);
 
   // ash::internal::SystemModalContainerEventFilterDelegate overrides:
   virtual bool CanWindowReceiveEvents(aura::Window* window) OVERRIDE;
diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc
index 4a4dbd9..6d65f8b 100644
--- a/ash/shell/shell_delegate_impl.cc
+++ b/ash/shell/shell_delegate_impl.cc
@@ -78,10 +78,7 @@
 }
 
 void ShellDelegateImpl::ToggleFullscreen() {
-  ToggleMaximized();
-}
-
-void ShellDelegateImpl::ToggleMaximized() {
+  // TODO(oshima): Remove this when crbug.com/309837 is implemented.
   wm::WindowState* window_state = wm::GetActiveWindowState();
   if (window_state)
     window_state->ToggleMaximized();
diff --git a/ash/shell/shell_delegate_impl.h b/ash/shell/shell_delegate_impl.h
index 4c215b2..4d4abe9 100644
--- a/ash/shell/shell_delegate_impl.h
+++ b/ash/shell/shell_delegate_impl.h
@@ -36,7 +36,6 @@
   virtual void NewTab() OVERRIDE;
   virtual void NewWindow(bool incognito) OVERRIDE;
   virtual void ToggleFullscreen() OVERRIDE;
-  virtual void ToggleMaximized() OVERRIDE;
   virtual void OpenFileManager() OVERRIDE;
   virtual void OpenCrosh() OVERRIDE;
   virtual void RestoreTab() OVERRIDE;
diff --git a/ash/shell_delegate.h b/ash/shell_delegate.h
index ecbfff5..02fea7f 100644
--- a/ash/shell_delegate.h
+++ b/ash/shell_delegate.h
@@ -142,9 +142,6 @@
   // Invoked when the user uses Shift+F4 to toggle the window fullscreen state.
   virtual void ToggleFullscreen() = 0;
 
-  // Invoked when the user uses F4 to toggle window maximized state.
-  virtual void ToggleMaximized() = 0;
-
   // Invoked when an accelerator is used to open the file manager.
   virtual void OpenFileManager() = 0;
 
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index 13c5bb4..7ca2190 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">በአንድ ጊዜ ብዙ መግባት ላይ እስከ ሶስት መለያዎች ድረስ ብቻ ነው ሊኖርዎ የሚችለው።</translation>
 <translation id="370649949373421643">Wi-Fi ያንቁ</translation>
 <translation id="3626281679859535460">ብሩህነት</translation>
+<translation id="3621202678540785336">ግብዓት</translation>
 <translation id="595202126637698455">አፈጻጸም መከታተያ ነቅቷል</translation>
 <translation id="8054466585765276473">የባትሪ ጊዜን በማስላት ላይ።</translation>
 <translation id="7982789257301363584">አውታረ መረብ</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">የሁኔታ መሳቢያ</translation>
 <translation id="1661867754829461514">ፒን ይጎድላል</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>፦ በመገናኘት ላይ...</translation>
+<translation id="40400351611212369">የአውታረ መረብ ማግበር ስህተት</translation>
 <translation id="4237016987259239829">የአውታረመረብ ግንኙነት ስህተት</translation>
 <translation id="2946640296642327832">ብሉቱዝን ያንቁ</translation>
 <translation id="6459472438155181876">ማያ ገጽ ወደ <ph name="DISPLAY_NAME"/> በመቀጠል ላይ</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">የማያ ገጽዎ ቁጥጥር በHangouts በኩል ለ<ph name="HELPER_NAME"/> በማጋራት ላይ።</translation>
 <translation id="7864539943188674973">ብሉቱዝን ያሰናክሉ</translation>
 <translation id="939252827960237676">ቅጽበታዊ ገጽ እይታን ማስቀመጥ አልተቻለም</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">ለማዘመን ዳግም ያስጀምሩ</translation>
 <translation id="2268813581635650749">ሁሉንም ዘግተህ ውጣ</translation>
 <translation id="735745346212279324">የቪ ፒ ኤን ግንኙነት ተቋርጧል</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">ቋንቋዎችን እና ግብአቶችን አብጅ...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">የመደርደሪያ አቀማመጥ</translation>
-<translation id="2903907270192926896">ግብዓት</translation>
 <translation id="8676770494376880701">አነስተኛ ኃይል ያለው ባትሪ መሙያ ተገናኝቷል</translation>
 <translation id="7170041865419449892">ከክልል ውጪ</translation>
 <translation id="4804818685124855865">ግንኙነት አቋርጥ</translation>
@@ -77,18 +79,23 @@
 ለመቀየር Shift + Alt ይጫኑ።</translation>
 <translation id="2562916301614567480">የግል አውታረ መረብ</translation>
 <translation id="6549021752953852991">ምንም የተንቀሳቃሽ ሞደም አውታረ መረብ አይገኝም</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">ውድ ማሳያ፣ ልንግባባ አልቻልንም። (ያ ማሳያ አይደገፍም)</translation>
 <translation id="6426039856985689743">የተንቀሳቃሽ ስልክ ውሂብን ያሰናክሉ</translation>
 <translation id="3087734570205094154">ግርጌ</translation>
 <translation id="3742055079367172538">ቅጽበታዊ ገጽ እይታ ተነስቷል</translation>
 <translation id="8878886163241303700">ማያ ገጽ በማስቀጠል ላይ</translation>
 <translation id="5271016907025319479">VPN አልተዋቀረም።</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (ብሉቱዝ)</translation>
+<translation id="3967919079500697218">ቅጽበታዊ-ገጽ እይታዎችን የማንሳት ችሎታ በአስተዳዳሪዎ ተሰናክሏል።</translation>
 <translation id="372094107052732682">ለመውጣት Ctrl+Shift+Qን ይጫኑ</translation>
 <translation id="6803622936009808957">ምንም የሚደገፉ ጥራቶች ስላልተገኙ ማሳያዎችን ማሳየት አልተቻለም። ይልቁንስ ወደ የተስፋፋ ዴስክቶፕ ሁነታ ተገብቷል።</translation>
 <translation id="1480041086352807611">የማሳያ ሁነታ</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% ይቀራል</translation>
 <translation id="9089416786594320554">የግቤት ስልቶች</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">«<ph name="NAME"/>»ን ማግበር የአውታረ መረብ ግንኙነት ያስፈልገዋል።</translation>
+<translation id="3963445509666917109">ድምጽ ማጉያ (ውስጣዊ)</translation>
 <translation id="2825619548187458965">መደርደሪያ</translation>
 <translation id="2614835198358683673">የእርስዎ Chromebook በርቶ ሳለ ባትሪ ላይሞላ ይችላል። ዋናውን ባትሪ መሙያ መጠቀሙን ያስቡበት።</translation>
 <translation id="1895658205118569222">አጥፋ</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">የድምጸ ተያያዥ ሞደም አውታረ መረቦችን በመፈለግ ላይ...</translation>
 <translation id="583281660410589416">ያልታወቀ</translation>
 <translation id="1383876407941801731">ፍለጋ</translation>
-<translation id="7468789844759750875">ተጨማሪ ውሂብ ለመግዛት የ<ph name="NAME"/> ማስገበሪያ መተላለፊያውን ይጎብኙ።</translation>
 <translation id="3901991538546252627">ከ<ph name="NAME"/> ጋር በመገናኘት ላይ</translation>
 <translation id="2204305834655267233">የአውታረ መረብ መረጃ</translation>
 <translation id="1621499497873603021">ባትሪ ባዶ እስኪሆን ድረስ የቀረው ጊዜ፣ <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">ከእንግዳ ውጣ</translation>
 <translation id="8308637677604853869">ቀዳሚ ምናሌ</translation>
 <translation id="4666297444214622512">ወደ ሌላ መለያ መግባት አይቻልም።</translation>
+<translation id="3625258641415618104">ቅጽበታዊ-ገጽ እይታዎች ተሰናክለዋል</translation>
 <translation id="1346748346194534595">ቀኝ</translation>
 <translation id="1773212559869067373">የማረጋገጫ ምስክር ወረቀት በአካባቢው ተቀባይነት አላገኘም</translation>
 <translation id="8528322925433439945">ተንቀሳቃሽ ስልክ ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">የማግበር አለመሳካት</translation>
 <translation id="5097002363526479830">ከአውታረ መረብ «<ph name="NAME"/>» ጋር መገናኘት አልተሳካም፦ <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi ጠፍቷል።</translation>
+<translation id="2966449113954629791">የተሰጠዎት ሞባይል ውሂብ ጨርሰው ሊሆኑ ይችላሉ። ተጨማሪ ውሂብ ለመግዛት የ<ph name="NAME"/> ማስገበሪያ በር ይጎብኙ።</translation>
 <translation id="8132793192354020517">ከ<ph name="NAME"/> ጋር ተገናኝቷል</translation>
 <translation id="7052914147756339792">ልጣፍ አዘጋጅ...</translation>
 <translation id="8678698760965522072">የመስመር ላይ ሁኔታ</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">እነበረበት መልስ</translation>
 <translation id="4274292172790327596">ያልታወቀ ስህተት</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ጆሮ ማዳጀጫ</translation>
 <translation id="225680501294068881">መሣሪያዎችን በመቃኘት ላይ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>፣ <ph name="DATE"/></translation>
+<translation id="737451040872859086">ማይክሮፎን (ውስጣዊ)</translation>
 <translation id="4448844063988177157">የWi-Fi አውታረ መረቦችን በመፈለግ ላይ…</translation>
 <translation id="8401662262483418323">ከ«<ph name="NAME"/>» ጋር መገናኘት አልተቻለም፦ <ph name="DETAILS"/>
 የአገልጋይ መልዕክት፦ <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">ስህተት ተከስቷል</translation>
 <translation id="7229570126336867161">ኢቪዲኦ ያስፈልጋል</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> በ<ph name="DOMAIN"/> የሚቀናበር ይፋዊ ክፍለ ጊዜ ነው</translation>
+<translation id="9044646465488564462">ከአውታረ መረብ ጋር መገናኘት አልተሳካም፦ <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">ከክፍለ-ጊዜ ውጣ</translation>
 <translation id="8454013096329229812">Wi-Fi በርቷል።</translation>
 <translation id="4872237917498892622">Alt+Search ወይም Shift</translation>
 <translation id="9201131092683066720">ባትሪው <ph name="PERCENTAGE"/>% ሙሉ ነው።</translation>
 <translation id="2983818520079887040">ቅንብሮች ...</translation>
+<translation id="3871838685472846647">በድምጸ ተያያዥ ሞደም የገበረ</translation>
 <translation id="1195412055398077112">ትርፍ ቅኝት</translation>
-<translation id="1717216362413677834">የመትከያ ሁነታ</translation>
 <translation id="112308213915226829">መደርደሪያን በራስ ሰር ደብቅ</translation>
+<translation id="7573962313813535744">ትክል ሁነታ</translation>
 <translation id="8927026611342028580">መገናኘት ተጠይቋል</translation>
 <translation id="8300849813060516376">OTASP አልተሳካም</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">ባትሪው <ph name="PERCENTAGE"/>% ሙሉ ሆኖ በተጨማሪም ኃይል እየሞላ ነው።</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>፦ በማግበር ላይ...</translation>
 <translation id="4895488851634969361">ባትሪው ሙሉ ነው።</translation>
-<translation id="1391854757121130358">የተንቀሳቃሽ ስልክ ውሂብ ገደብዎን ጨርሰው ሊሆን ይችላል።</translation>
 <translation id="5947494881799873997">አድህር</translation>
 <translation id="7593891976182323525">Search ወይም Shift</translation>
 <translation id="7649070708921625228">እገዛ</translation>
+<translation id="747833637904845037">የእርስዎ Chromebook ክዳኑ ተዘግቶ እንኳ ከውጫዊ ማሳያ ጋር እንደተገናኘ ይቆያል።</translation>
 <translation id="3050422059534974565">CAPS LOCK በርቷል።
 ለመሰረዝ Search ወይም Shift ይጫኑ።</translation>
 <translation id="397105322502079400">በማስላት ላይ...</translation>
 <translation id="158849752021629804">የቤት አውታረ መረብ ያስፈልጋል</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/>ን አግብር</translation>
 <translation id="5864471791310927901">የDHCP ፍለጋ አልተሳካም</translation>
-<translation id="5812035014844949013">ውፅዓት</translation>
 <translation id="6692173217867674490">መጥፎ የይለፍ ሐረግ</translation>
 <translation id="6165508094623778733">ተጨማሪ ለመረዳት</translation>
 <translation id="9046895021617826162">ማገናኘት አልተሳካም</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">ባትሪ ዝቅተኛ ነው (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">ይቀበሉ</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> ቀርቷል</translation>
+<translation id="3009178788565917040">ውጽዓት</translation>
 <translation id="520760366042891468">የማያ ገጽዎን ቁጥጥር በHangouts በኩል በማጋራት ላይ።</translation>
 <translation id="8000066093800657092">ምንም አውታረ መረብ የለም</translation>
 <translation id="4015692727874266537">ሌላ መለያ ያስገቡ...</translation>
 <translation id="5941711191222866238">አሳንስ</translation>
 <translation id="6911468394164995108">ሌላ ይቀላቀሉ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>፦ <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">እንኳን ደስ አለዎት! የእርስዎ «<ph name="NAME"/>» ውሂብ አገልግሎት ገባሪ ሆኖ ለመሄድ ዝግጁ ነው።</translation>
 <translation id="412065659894267608">ሙሉ እስኪሆን ድረስ <ph name="HOUR"/>ሰ <ph name="MINUTE"/>ደ</translation>
 <translation id="6359806961507272919">ኤስ ኤም ኤስ ከ<ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">ድምጸ ተያያዥ ሞደም</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index db45e7d..00a68bb 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">يُمكنك تسجيل الدخول المتعدد باستخدام ثلاثة حسابات كحد أقصى.</translation>
 <translation id="370649949373421643">‏تمكين Wi-Fi</translation>
 <translation id="3626281679859535460">السطوع</translation>
+<translation id="3621202678540785336">الإدخال</translation>
 <translation id="595202126637698455">تم تمكين تتبع مستوى الأداء</translation>
 <translation id="8054466585765276473">يجري حساب وقت البطارية.</translation>
 <translation id="7982789257301363584">الشبكة</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">علبة الحالة</translation>
 <translation id="1661867754829461514">رقم التعريف الشخصي غير موجود</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: جارٍ الاتصال...</translation>
+<translation id="40400351611212369">خطأ تنشيط الشبكة</translation>
 <translation id="4237016987259239829">خطأ في اتصال الشبكة</translation>
 <translation id="2946640296642327832">تمكين البلوتوث</translation>
 <translation id="6459472438155181876">تمديد الشاشة إلى <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">‏مشاركة التحكم في الشاشة مع <ph name="HELPER_NAME"/> عبر Hangouts.</translation>
 <translation id="7864539943188674973">تعطيل البلوتوث</translation>
 <translation id="939252827960237676">أخفق حفظ لقطة الشاشة</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">إعادة التشغيل للتحديث</translation>
 <translation id="2268813581635650749">خروج الجميع</translation>
 <translation id="735745346212279324">تم قطع اتصال الشبكة الظاهرية الخاصة</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">تخصيص اللغات والإدخال...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">وضع الرف</translation>
-<translation id="2903907270192926896">الإرسال</translation>
 <translation id="8676770494376880701">تمّ توصيل شاحن منخفض الطاقة</translation>
 <translation id="7170041865419449892">خارج النطاق</translation>
 <translation id="4804818685124855865">قطع الاتصال</translation>
@@ -77,18 +79,23 @@
 اضغط على Shift + Alt للتبديل.</translation>
 <translation id="2562916301614567480">الشبكة الخاصة</translation>
 <translation id="6549021752953852991">لا تتوفر شبكة خلوية</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">الشاشة لا تعمل. (هذه الشاشة غير متوافقة)</translation>
 <translation id="6426039856985689743">تعطيل بيانات الجوال</translation>
 <translation id="3087734570205094154">أسفل</translation>
 <translation id="3742055079367172538">تم التقاط لقطة الشاشة</translation>
 <translation id="8878886163241303700">توسيع الشاشة</translation>
 <translation id="5271016907025319479">لم تتم تهيئة الشبكة الظاهرية الخاصة.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (بلوتوث)</translation>
+<translation id="3967919079500697218">تم تعطيل إمكانية التقاط لقطات شاشة من قِبل المشرف..</translation>
 <translation id="372094107052732682">‏للإنهاء، اضغط على Ctrl+Shift+Q مرتين.</translation>
 <translation id="6803622936009808957">تعذر إجراء النسخ المطابق للعروض نظرًا لعدم العثور على درجات دقة متوافقة. تم الدخول إلى سطح المكتب الممتد بدلاً من ذلك.</translation>
 <translation id="1480041086352807611">الوضع التجريبي</translation>
 <translation id="3626637461649818317">باقٍ <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">أساليب الإدخال</translation>
 <translation id="6247708409970142803">%<ph name="PERCENTAGE"/></translation>
+<translation id="2670531586141364277">يتطلب تنشيط '<ph name="NAME"/>' اتصالاً بالشبكة.</translation>
+<translation id="3963445509666917109">سماعة (داخلية)</translation>
 <translation id="2825619548187458965">الرف</translation>
 <translation id="2614835198358683673">‏قد لا يستجيب جهاز Chromebook لعملية الشحن وهو قيد التشغيل. مع مراعاة استخدام الشاحن المخصص للجهاز.</translation>
 <translation id="1895658205118569222">إيقاف التشغيل</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">جارٍ البحث عن شبكات للهاتف الجوال...</translation>
 <translation id="583281660410589416">غير محدّد</translation>
 <translation id="1383876407941801731">البحث</translation>
-<translation id="7468789844759750875">انتقل إلى مدخل التنشيط <ph name="NAME"/> لشراء المزيد من البيانات.</translation>
 <translation id="3901991538546252627">جارٍ الاتصال بـ <ph name="NAME"/></translation>
 <translation id="2204305834655267233">معلومات الشبكة</translation>
 <translation id="1621499497873603021">الوقت المتبقي حتى تصبح البطارية فارغة <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">إنهاء جلسة الضيف</translation>
 <translation id="8308637677604853869">القائمة السابقة</translation>
 <translation id="4666297444214622512">يتعذّر تسجيل الدخول إلى حساب آخر.</translation>
+<translation id="3625258641415618104">تم تعطيل لقطات الشاشة</translation>
 <translation id="1346748346194534595">يمين</translation>
 <translation id="1773212559869067373">تمّ رفض شهادة المصادقة محليًا</translation>
 <translation id="8528322925433439945">الجوال ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">إخفاق في عملية التنشيط</translation>
 <translation id="5097002363526479830">أخفق الاتصال بشبكة &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">‏تم إيقاف تشغيل Wi-Fi.</translation>
+<translation id="2966449113954629791">يبدو أنك قد استنفدت القدر المتاح لك من بيانات الجوّال. يُمكنك الانتقال إلى منفذ تنشيط <ph name="NAME"/> لشراء مزيد من البيانات.</translation>
 <translation id="8132793192354020517">تم الاتصال بالموقع <ph name="NAME"/></translation>
 <translation id="7052914147756339792">تعيين خلفية...</translation>
 <translation id="8678698760965522072">الحالة متصل</translation>
@@ -149,21 +157,25 @@
 <translation id="3157931365184549694">استعادة</translation>
 <translation id="4274292172790327596">خطأ غير معروف</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">سماعة رأس</translation>
 <translation id="225680501294068881">جارٍ البحث عن أجهزة...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>، <ph name="DATE"/></translation>
+<translation id="737451040872859086">ميكروفون (داخلي)</translation>
 <translation id="4448844063988177157">‏جارِ البحث عن شبكات Wi-Fi...</translation>
 <translation id="8401662262483418323">أخفق الاتصال بـ &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/> رسالة الخادم: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">حدث خطأ</translation>
 <translation id="7229570126336867161">‏يلزم توفر EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> هي جلسة عامة يديرها <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">أخفق الاتصال بالشبكة: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">إنهاء الجلسة</translation>
 <translation id="8454013096329229812">‏تم تشغيل Wi-Fi.</translation>
 <translation id="4872237917498892622">‏Alt+مفتاح البحث أو Shift</translation>
 <translation id="9201131092683066720">اكتمل شحن <ph name="PERCENTAGE"/>% من البطارية.</translation>
 <translation id="2983818520079887040">الإعدادات...</translation>
+<translation id="3871838685472846647">تم تنشيط الخلوي</translation>
 <translation id="1195412055398077112">الخروج عن إطار الشاشة</translation>
-<translation id="1717216362413677834">وضع الإرساء</translation>
 <translation id="112308213915226829">الإخفاء التلقائي للرف</translation>
+<translation id="7573962313813535744">وضع الإرساء</translation>
 <translation id="8927026611342028580">الاتصال مطلوب</translation>
 <translation id="8300849813060516376">‏أخفقت OTASP</translation>
 <translation id="2792498699870441125">‏Alt+مفتاح البحث</translation>
@@ -175,16 +187,15 @@
 <translation id="6785414152754474415">اكتمل شحن <ph name="PERCENTAGE"/>% من البطارية ويجري شحنها.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: جارٍ التنشيط...</translation>
 <translation id="4895488851634969361">البطارية مملوءة.</translation>
-<translation id="1391854757121130358">ربما تكون قد استخدمت حصة بيانات الجوال المخصصة لك.</translation>
 <translation id="5947494881799873997">التراجع عن الإجراء</translation>
 <translation id="7593891976182323525">‏مفتاح البحث أو Shift</translation>
 <translation id="7649070708921625228">مساعدة</translation>
+<translation id="747833637904845037">‏سيظل جهاز Chromebook قيد التشغيل أثناء توصيله بشاشة عرض خارجية، حتى في حالة إغلاق الغطاء.</translation>
 <translation id="3050422059534974565">‏المفتاح CAPS LOCK في وضع التشغيل، اضغط على مفتاح البحث أو المفتاح Shift لإلغاء التشغيل.</translation>
 <translation id="397105322502079400">جارٍ الحساب...</translation>
 <translation id="158849752021629804">يلزم توفر الشبكة الرئيسية</translation>
 <translation id="6857811139397017780">تنشيط <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">‏أخفق بحث DHCP</translation>
-<translation id="5812035014844949013">الاستماع</translation>
 <translation id="6692173217867674490">عبارة مرور غير صالحة</translation>
 <translation id="6165508094623778733">مزيد من المعلومات</translation>
 <translation id="9046895021617826162">أخفق الاتصال</translation>
@@ -199,12 +210,14 @@
 <translation id="8940956008527784070">طاقة البطارية منخفضة (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">قبول</translation>
 <translation id="5102001756192215136">الوقت المتبقي: <ph name="HOUR"/>:<ph name="MINUTE"/> ‏</translation>
+<translation id="3009178788565917040">الإخراج</translation>
 <translation id="520760366042891468">‏مشاركة التحكم في الشاشة عبر Hangouts.</translation>
 <translation id="8000066093800657092">لا شبكة</translation>
 <translation id="4015692727874266537">تسجيل الدخول لحساب آخر...</translation>
 <translation id="5941711191222866238">تصغير</translation>
 <translation id="6911468394164995108">الانضمام إلى شبكة أخرى...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">تم تنشيط خدمة البيانات '<ph name="NAME"/>' وهي جاهزة للعمل.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>س <ph name="MINUTE"/>د حتى الاكتمال</translation>
 <translation id="6359806961507272919">‏رسالة قصيرة SMS من الهاتف رقم <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">شركة اتصالات</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 24aef8c..6c724bc 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">В централизирания вход можете да имате най-много три профила.</translation>
 <translation id="370649949373421643">Активиране на Wi-Fi</translation>
 <translation id="3626281679859535460">Яркост</translation>
+<translation id="3621202678540785336">Вход</translation>
 <translation id="595202126637698455">Проследяването на ефективността е активирано</translation>
 <translation id="8054466585765276473">Издръжливостта на батерията се изчислява.</translation>
 <translation id="7982789257301363584">Мрежа</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Област на състоянието</translation>
 <translation id="1661867754829461514">Липсва PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Установява се връзка...</translation>
+<translation id="40400351611212369">Грешка при активиране на мрежата</translation>
 <translation id="4237016987259239829">Грешка при свързване към мрежата</translation>
 <translation id="2946640296642327832">Активиране на Bluetooth</translation>
 <translation id="6459472438155181876">Екранът се разширява на „<ph name="DISPLAY_NAME"/>“</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Контролът върху екрана ви се споделя с/ъс <ph name="HELPER_NAME"/> чрез Hangouts.</translation>
 <translation id="7864539943188674973">Деактивиране на Bluetooth</translation>
 <translation id="939252827960237676">Запазването на екранната снимка не бе успешно</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Рестартирайте, за да актуализирате</translation>
 <translation id="2268813581635650749">Изход за всички</translation>
 <translation id="735745346212279324">Връзката с виртуалната частна мрежа (VPN) е прекъсната</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Персонализиране на езиците и въвеждането...</translation>
 <translation id="1279938420744323401">„<ph name="DISPLAY_NAME"/>“ (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Позиция на лавицата</translation>
-<translation id="2903907270192926896">ВХОД</translation>
 <translation id="8676770494376880701">Свързано е зарядно устройство с малка мощност</translation>
 <translation id="7170041865419449892">Извън обхват</translation>
 <translation id="4804818685124855865">Изключване</translation>
@@ -77,18 +79,23 @@
 Натиснете „Shift + Alt“, за да превключите.</translation>
 <translation id="2562916301614567480">Частна мрежа</translation>
 <translation id="6549021752953852991">Няма налична клетъчна мрежа</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Уважаеми мониторе, нещата между нас не се получават. (Този монитор не се поддържа)</translation>
 <translation id="6426039856985689743">Деактивиране на мобилните данни</translation>
 <translation id="3087734570205094154">Най-долу</translation>
 <translation id="3742055079367172538">Направена бе екранна снимка</translation>
 <translation id="8878886163241303700">Разгъване на екрана</translation>
 <translation id="5271016907025319479">Виртуалната частна мрежа (VPN) не е конфигурирана.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Възможността за правене на екранни снимки е деактивирана от администратора ви.</translation>
 <translation id="372094107052732682">За изход натиснете два пъти Ctrl+Shift+Q.</translation>
 <translation id="6803622936009808957">Дисплеите не можаха да се дублират, тъй като не бяха намерени поддържани разделителни способности. Вместо това влязохте в режима за разширен работен плот.</translation>
 <translation id="1480041086352807611">Демонстрационен режим</translation>
 <translation id="3626637461649818317">Остава/т <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Методи за въвеждане</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">За активирането на „<ph name="NAME"/>“ се изисква връзка с мрежата.</translation>
+<translation id="3963445509666917109">Високоговорител (вътрешен)</translation>
 <translation id="2825619548187458965">Лавица</translation>
 <translation id="2614835198358683673">Възможно е вашият Chromebook да не се зарежда, докато е включен. Помислете за използване на официалното зарядно устройство.</translation>
 <translation id="1895658205118569222">Изключване</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Търсят се мобилни мрежи...</translation>
 <translation id="583281660410589416">Неизвестно</translation>
 <translation id="1383876407941801731">Търсене</translation>
-<translation id="7468789844759750875">Посетете портала за активиране на <ph name="NAME"/>, за да купите още данни.</translation>
 <translation id="3901991538546252627">Установява се връзка със: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Информация за мрежата</translation>
 <translation id="1621499497873603021">Оставащо време до изразходването на батерията: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Изход от сесията като гост</translation>
 <translation id="8308637677604853869">Предишно меню</translation>
 <translation id="4666297444214622512">Не може да влезете в друг профил.</translation>
+<translation id="3625258641415618104">Екранните снимки са деактивирани</translation>
 <translation id="1346748346194534595">Надясно</translation>
 <translation id="1773212559869067373">Сертификатът за удостоверяване бе отхвърлен локално</translation>
 <translation id="8528322925433439945">Мобилни мрежи...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Неуспех при активирането</translation>
 <translation id="5097002363526479830">Свързването с мрежата „<ph name="NAME"/>“ не бе успешно: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi е изключен.</translation>
+<translation id="2966449113954629791">Възможно е да сте изразходвали отпуснатите ви мобилни данни. Посетете портала за активиране „<ph name="NAME"/>“, за да купите още данни.</translation>
 <translation id="8132793192354020517">Установена е връзка с/ъс <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Задаване на тапет...</translation>
 <translation id="8678698760965522072">Състояние: Онлайн</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Възстановяване</translation>
 <translation id="4274292172790327596">Неразпозната грешка</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Слушалки</translation>
 <translation id="225680501294068881">Сканира се за устройства...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Микрофон (вътрешен)</translation>
 <translation id="4448844063988177157">Търсят се Wi-Fi мрежи...</translation>
 <translation id="8401662262483418323">Свързването с/ъс „<ph name="NAME"/>“ не бе успешно: <ph name="DETAILS"/>
 Съобщение от сървъра: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Възникна грешка</translation>
 <translation id="7229570126336867161">Необходим е EVDO</translation>
 <translation id="2999742336789313416">„<ph name="DISPLAY_NAME"/>“ е обществена сесия, управлявана от <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Свързването с мрежата не бе успешно: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Изход от сесията</translation>
 <translation id="8454013096329229812">Wi-Fi е включен.</translation>
 <translation id="4872237917498892622">„Alt + търсене“ или „Shift“</translation>
 <translation id="9201131092683066720">Батерията е <ph name="PERCENTAGE"/>% пълна.</translation>
 <translation id="2983818520079887040">Настройки...</translation>
+<translation id="3871838685472846647">Мобилната мрежа е активирана</translation>
 <translation id="1195412055398077112">допълнителна област</translation>
-<translation id="1717216362413677834">Режим на работа с докинг станция</translation>
 <translation id="112308213915226829">Автоматично скриване на лавицата</translation>
+<translation id="7573962313813535744">Режим с докинг станция</translation>
 <translation id="8927026611342028580">Заявено е свързване</translation>
 <translation id="8300849813060516376">Безжичното осигуряване на услуга не бе успешно</translation>
 <translation id="2792498699870441125">Alt + търсене</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Батерията е <ph name="PERCENTAGE"/>% пълна и се зарежда.</translation>
 <translation id="6267036997247669271">„<ph name="NAME"/>“: Активира се...</translation>
 <translation id="4895488851634969361">Батерията е пълна.</translation>
-<translation id="1391854757121130358">Може да сте изразходили отпуснатите ви мобилни данни.</translation>
 <translation id="5947494881799873997">Възстановяване</translation>
 <translation id="7593891976182323525">„търсене“ или „Shift“</translation>
 <translation id="7649070708921625228">Помощ</translation>
+<translation id="747833637904845037">Докато е свързан с външен монитор, Chromebook ще остане включен дори при затворен капак.</translation>
 <translation id="3050422059534974565">„CAPS LOCK“ е включен.
 Натиснете „търсене“ или „Shift“, за да анулирате.</translation>
 <translation id="397105322502079400">Изчислява се...</translation>
 <translation id="158849752021629804">Необходима е собствена мрежа</translation>
 <translation id="6857811139397017780">Активиране на <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Търсенето на DHCP сървър не бе успешно</translation>
-<translation id="5812035014844949013">ИЗХОД</translation>
 <translation id="6692173217867674490">Паролата е неправилна</translation>
 <translation id="6165508094623778733">Научете повече</translation>
 <translation id="9046895021617826162">Свързването не бе успешно</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Батерията е изтощена (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Приемам</translation>
 <translation id="5102001756192215136">Остава/т <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Изход</translation>
 <translation id="520760366042891468">Контролът върху екрана ви се споделя чрез Hangouts.</translation>
 <translation id="8000066093800657092">Няма мрежа</translation>
 <translation id="4015692727874266537">Вход в друг профил...</translation>
 <translation id="5941711191222866238">Намаляване</translation>
 <translation id="6911468394164995108">Присъединяване другаде...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Поздравления! Услугата ви за данни „<ph name="NAME"/>“ е активирана и е готова за работа.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> ч <ph name="MINUTE"/> м до пълно зареждане</translation>
 <translation id="6359806961507272919">SMS от <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Оператор</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index fde6ff9..5b0c52e 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">একাধিক সাইন ইনে আপনার কেবলমাত্র তিনটি অ্যাকাউন্ট থাকতে পারে৷</translation>
 <translation id="370649949373421643">Wi-fi সক্ষম করুন</translation>
 <translation id="3626281679859535460">উজ্জ্বলতা</translation>
+<translation id="3621202678540785336">ইনপুট</translation>
 <translation id="595202126637698455">কার্য-সম্পাদনা ট্রেস করা সক্ষম রয়েছে</translation>
 <translation id="8054466585765276473">ব্যাটারি সময় গণনা করা হচ্ছে।</translation>
 <translation id="7982789257301363584">নেটওয়ার্ক</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">স্থিতি ট্রে</translation>
 <translation id="1661867754829461514">PIN হারিয়েছে</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: সংযুক্ত হচ্ছে...</translation>
+<translation id="40400351611212369">নেটওয়ার্ক সক্রিয়করণে ত্রুটি</translation>
 <translation id="4237016987259239829">নেটওয়ার্ক  সংযোগ ত্রুটি</translation>
 <translation id="2946640296642327832">ব্লুটুথ সক্ষম করুন</translation>
 <translation id="6459472438155181876">স্ক্রীন <ph name="DISPLAY_NAME"/> তে প্রসারিত হচ্ছে</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangouts এর মাধ্যমে <ph name="HELPER_NAME"/> এর সঙ্গে আপনার স্ক্রীন নিয়ন্ত্রণ ভাগ করা হচ্ছে৷</translation>
 <translation id="7864539943188674973">ব্লুটুথ অক্ষম করুন</translation>
 <translation id="939252827960237676">স্ক্রীনশট সংরক্ষণ করতে ব্যর্থ হয়েছে</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">আপডেট করার জন্য পুনরারম্ভ করুন</translation>
 <translation id="2268813581635650749">সবগুলি সাইন আউট করুন</translation>
 <translation id="735745346212279324">VPN সংযোগ বিচ্ছিন্ন করা হয়েছে</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">ভাষা এবং ইনপুট কাস্টমাইজ করুন...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">শেল্ফ অবস্থান</translation>
-<translation id="2903907270192926896">ইনপুট</translation>
 <translation id="8676770494376880701">নিম্ন শক্তির চার্জার সংযুক্ত করা হয়েছে</translation>
 <translation id="7170041865419449892">সীমার বাইরে</translation>
 <translation id="4804818685124855865">সংযোগ বিচ্ছিন্ন</translation>
@@ -77,18 +79,23 @@
 স্যুইচ করতে Shift + Alt টিপুন৷</translation>
 <translation id="2562916301614567480">ব্যক্তিগত নেটওয়ার্ক</translation>
 <translation id="6549021752953852991">কোনো সেলুলার নেটওয়ার্ক উপলব্ধ নেই</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (এই মনিটরটি সমর্থিত নয়)</translation>
 <translation id="6426039856985689743">মোবাইল ডেটা নিষ্ক্রিয় করুন</translation>
 <translation id="3087734570205094154">নীচে</translation>
 <translation id="3742055079367172538">স্ক্রীনশট নেওয়া হয়েছে</translation>
 <translation id="8878886163241303700">স্ক্রীন সম্প্রসারণ করা হচ্ছে</translation>
 <translation id="5271016907025319479">VPN কনফিগার করা নেই৷</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">স্ক্রীনশট নেওয়ার ক্ষমতা আপনার প্রশাসক দ্বারা অক্ষম করা হয়েছে৷</translation>
 <translation id="372094107052732682">প্রস্থান করার জন্য দুবার Ctrl+Shift+Q টিপুন৷</translation>
 <translation id="6803622936009808957">সমর্থিত রেসুলিউশানগুলি খুঁজে না পাওয়ায় মিরর প্রদর্শনগুলি করতে পারেনি৷ পরিবর্তে প্রসারিত ডেস্কটপ সক্ষম করা হয়েছে৷</translation>
 <translation id="1480041086352807611">নমুনা মোড</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% বাকি আছে</translation>
 <translation id="9089416786594320554">ইনপুট পদ্ধতিসমূহ</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' এর সক্রিয়করণের জন্য একটি নেটওয়ার্ক সংযোগের প্রয়োজন৷</translation>
+<translation id="3963445509666917109">স্পিকার (অভ্যন্তরীণ)</translation>
 <translation id="2825619548187458965">শেল্ফ</translation>
 <translation id="2614835198358683673">চালু থাকার সময় আপনার Chromebook চার্জ নাও হতে পারে৷ এটির নিজস্ব চার্জার ব্যবহার করার কথা বিবেচনা করুন৷</translation>
 <translation id="1895658205118569222">শাটডাউন</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">সেলুলার নেটওয়ার্কগুলির জন্য অনুসন্ধান করছে...</translation>
 <translation id="583281660410589416">অজানা</translation>
 <translation id="1383876407941801731">অনুসন্ধান</translation>
-<translation id="7468789844759750875">আরো ডেটা কেনার জন্য <ph name="NAME"/> সক্রিয়করণ পোর্টাল ঘুরে দেখুন৷</translation>
 <translation id="3901991538546252627"><ph name="NAME"/>-এ সংযোগ করা হচ্ছে</translation>
 <translation id="2204305834655267233">নেটওয়ার্ক তথ্য</translation>
 <translation id="1621499497873603021">ব্যাটারি শেষ হতে <ph name="TIME_LEFT"/> সময় বাকি আছে</translation>
 <translation id="5980301590375426705">অতিথি থেকে প্রস্থান</translation>
 <translation id="8308637677604853869">পূর্ববর্তী মেনু</translation>
 <translation id="4666297444214622512">অন্য একটি অ্যাকাউন্টে সাইন ইন করতে পারবেন না৷</translation>
+<translation id="3625258641415618104">স্ক্রীনশট অক্ষম হয়েছে</translation>
 <translation id="1346748346194534595">ডান</translation>
 <translation id="1773212559869067373">স্থানীয়ভাবে প্রমাণীকরণ শংসাপত্র প্রত্যাখ্যান করা হয়েছে</translation>
 <translation id="8528322925433439945">মোবাইল ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">সক্রিয়করণে ব্যর্থতা</translation>
 <translation id="5097002363526479830">নেটওয়ার্কের সাথে সংযোগ করতে ব্যর্থ '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi বন্ধ আছে৷</translation>
+<translation id="2966449113954629791">আপনি হয়তো আপনার মোবাইল ডেটার প্রদত্ত পরিমান ব্যবহার করে ফেলেছেন৷ আরো ডেটা কিনতে <ph name="NAME"/> সক্রিয়করণ পোর্টালে যান৷</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> তে সংযুক্ত</translation>
 <translation id="7052914147756339792">ওয়ালপেপার সেট করুন...</translation>
 <translation id="8678698760965522072">অনলাইন স্থিতি</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">পুনরুদ্ধার করুন</translation>
 <translation id="4274292172790327596">অস্বীকৃত ত্রুটি</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">হেডফোন</translation>
 <translation id="225680501294068881">ডিভাইসগুলির জন্য স্ক্যান করা হচ্ছে...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">মাইক্রোফোন (অভ্যন্তরীণ)</translation>
 <translation id="4448844063988177157">Wi-Fi নেটওয়ার্কগুলির জন্য অনুসন্ধান করুন...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' এর সাথে সংযোগ করা ব্যর্থ হয়েছে: <ph name="DETAILS"/>
 সার্ভার বার্তা: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">একটি ত্রুটি ঘটেছে</translation>
 <translation id="7229570126336867161">EVDO এর প্রয়োজন</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> হল <ph name="DOMAIN"/> এর দ্বারা পরিচালিত একটি সর্বজনীন সেশন</translation>
+<translation id="9044646465488564462">নেটওয়ার্কের সাথে সংযোগ করতে ব্যর্থ: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">সেশন থেকে প্রস্থান</translation>
 <translation id="8454013096329229812">Wi-Fi চালু আছে৷</translation>
 <translation id="4872237917498892622">Alt+Search অথবা Shift</translation>
 <translation id="9201131092683066720">ব্যাটারি <ph name="PERCENTAGE"/>% পূর্ণ৷</translation>
 <translation id="2983818520079887040">সেটিংস...</translation>
+<translation id="3871838685472846647">সেলুলার সক্রিয় করা হয়েছে</translation>
 <translation id="1195412055398077112">ওভারস্ক্যান</translation>
-<translation id="1717216362413677834">ডক মোড</translation>
 <translation id="112308213915226829">শেল্ফ স্বয়ংক্রিয়ভাবে লুকান</translation>
+<translation id="7573962313813535744">ডকযুক্ত মোড</translation>
 <translation id="8927026611342028580">সংযুক্ত করার অনুরোধ করা হয়েছে</translation>
 <translation id="8300849813060516376">OTASP ব্যর্থ</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">ব্যাটারি <ph name="PERCENTAGE"/>% পূর্ণ এবং চার্জ হচ্ছে৷</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: সক্রিয় করা হচ্ছে...</translation>
 <translation id="4895488851634969361">ব্যাটারি পূর্ণ৷</translation>
-<translation id="1391854757121130358">আপনি হয়তো আপনার মোবাইল ডেটা অ্যালাউন্স ব্যবহার করেছেন৷</translation>
 <translation id="5947494881799873997">ফেরান</translation>
 <translation id="7593891976182323525">Search অথবা Shift</translation>
 <translation id="7649070708921625228">সহায়তা</translation>
+<translation id="747833637904845037">একটি বাহ্যিক প্রদর্শনে সংযুক্ত থাকার সময়ে আপনার Chromebook চালু থাকে, এমনকি লিড বন্ধ করা থাকলেও৷</translation>
 <translation id="3050422059534974565">CAPS LOCK চালু আছে৷
 Search অথবা বাতিল করতে Shift টিপুন৷</translation>
 <translation id="397105322502079400">গণনা করা হচ্ছে...</translation>
 <translation id="158849752021629804">হোম নেটওয়ার্কের প্রয়োজন</translation>
 <translation id="6857811139397017780">সক্রিয় করুন <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP লুকআপ ব্যর্থ</translation>
-<translation id="5812035014844949013">আউটপুট</translation>
 <translation id="6692173217867674490">খারাপ পাসফ্রেজ</translation>
 <translation id="6165508094623778733">আরো জানুন</translation>
 <translation id="9046895021617826162">সংযোগ ব্যর্থ হয়েছে</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">(<ph name="PERCENTAGE"/>%) কম ব্যাটারি</translation>
 <translation id="4918086044614829423">স্বীকার</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> বাকি</translation>
+<translation id="3009178788565917040">আউটপুট</translation>
 <translation id="520760366042891468">Hangouts এর মাধ্যমে আপনার স্ক্রীন নিয়ন্ত্রণ ভাগ করা হচ্ছে৷</translation>
 <translation id="8000066093800657092">কোনও নেটওয়ার্ক নেই</translation>
 <translation id="4015692727874266537">অন্য একটি অ্যাকাউন্টে সাইন ইন করুন...</translation>
 <translation id="5941711191222866238">ছোট করুন</translation>
 <translation id="6911468394164995108">অন্যান্য যোগদান ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">অভিনন্দন! আপনার '<ph name="NAME"/>' ডেটা পরিষেবা সক্রিয় করা হয়েছে এবং ব্যবহার করার জন্য প্রস্তুত৷</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>ঘন্টা <ph name="MINUTE"/> মিনিট পর্যন্ত পূর্ণ</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/>-এর থেকে SMS...</translation>
 <translation id="1244147615850840081">কেরিয়ার</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index f7e60ca..90669e0 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Només podeu tenir tres comptes com a màxim en un inici de sessió múltiple.</translation>
 <translation id="370649949373421643">Activa la Wi-Fi</translation>
 <translation id="3626281679859535460">Brillantor</translation>
+<translation id="3621202678540785336">Entrada</translation>
 <translation id="595202126637698455">Seguiment del rendiment activat</translation>
 <translation id="8054466585765276473">S'està calculant el temps de la bateria.</translation>
 <translation id="7982789257301363584">Xarxa</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Safata d'estat</translation>
 <translation id="1661867754829461514">Falta el PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: s'està connectant...</translation>
+<translation id="40400351611212369">Error d'activació de xarxa</translation>
 <translation id="4237016987259239829">Error de connexió a la xarxa</translation>
 <translation id="2946640296642327832">Activa el Bluetooth</translation>
 <translation id="6459472438155181876">S'està ampliant la pantalla a <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Comparteix el control de la pantalla amb <ph name="HELPER_NAME"/> mitjançant Hangouts.</translation>
 <translation id="7864539943188674973">Desactiva el Bluetooth</translation>
 <translation id="939252827960237676">S'ha produït un error en desar la captura de pantalla.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reinicia per actualitzar</translation>
 <translation id="2268813581635650749">Tanca la sessió de tots els usuaris</translation>
 <translation id="735745346212279324">VPN desconnectada</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalitza els idiomes i l'entrada...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posició del prestatge</translation>
-<translation id="2903907270192926896">ENTRADA</translation>
 <translation id="8676770494376880701">S'ha connectat un carregador de baix consum</translation>
 <translation id="7170041865419449892">Fora de l'interval</translation>
 <translation id="4804818685124855865">Desconnecta</translation>
@@ -77,18 +79,23 @@
 Premeu Maj+Alt per canviar-lo.</translation>
 <translation id="2562916301614567480">Xarxa privada</translation>
 <translation id="6549021752953852991">No hi ha cap xarxa mòbil disponible</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Estimat monitor, això no funciona. (El monitor no és compatible)</translation>
 <translation id="6426039856985689743">Desactiva les dades mòbils</translation>
 <translation id="3087734570205094154">Part inferior</translation>
 <translation id="3742055079367172538">Captura de pantalla feta</translation>
 <translation id="8878886163241303700">Ampliació de la pantalla</translation>
 <translation id="5271016907025319479">La VPN no està configurada.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">L'administrador ha desactivat l'opció per fer captures de pantalla.</translation>
 <translation id="372094107052732682">Premeu Ctrl+Maj+Q dues vegades per sortir.</translation>
 <translation id="6803622936009808957">No s'han pogut reflectir les pantalles, perquè no s'ha trobat cap resolució compatible. S'està entrant al mode d'escriptori ampliat.</translation>
 <translation id="1480041086352807611">Mode de demostració</translation>
 <translation id="3626637461649818317">Queda un <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Mètodes d'introducció</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Per activar &quot;<ph name="NAME"/>&quot; cal una connexió a la xarxa.</translation>
+<translation id="3963445509666917109">Altaveu (intern)</translation>
 <translation id="2825619548187458965">Prestatge</translation>
 <translation id="2614835198358683673">És possible que el vostre Chromebook no es carregui mentre estigui encès. Proveu de fer servir un carregador oficial.</translation>
 <translation id="1895658205118569222">Aturada</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">S'estan cercant xarxes mòbils...</translation>
 <translation id="583281660410589416">Desconegut</translation>
 <translation id="1383876407941801731">Cerca</translation>
-<translation id="7468789844759750875">Visiteu el portal d'activació de <ph name="NAME"/> per comprar més dades.</translation>
 <translation id="3901991538546252627">S'està connectant amb <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informació de la xarxa</translation>
 <translation id="1621499497873603021">Temps que queda fins que no s'esgoti la bateria: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Surt de la sessió de convidat</translation>
 <translation id="8308637677604853869">Menú anterior</translation>
 <translation id="4666297444214622512">No podeu iniciar la sessió en un altre compte.</translation>
+<translation id="3625258641415618104">Captures de pantalla desactivades</translation>
 <translation id="1346748346194534595">A la dreta</translation>
 <translation id="1773212559869067373">S'ha rebutjat el certificat d'autenticació de manera local</translation>
 <translation id="8528322925433439945">Xarxes mòbils...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Error d'activació</translation>
 <translation id="5097002363526479830">S'ha produït un error en connectar amb la xarxa &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">La Wi-Fi està desactivada.</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>
 <translation id="8132793192354020517">Connectat a <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Defineix l'empaperat...</translation>
 <translation id="8678698760965522072">Estat en línia</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaura</translation>
 <translation id="4274292172790327596">Error no reconegut</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Auricular</translation>
 <translation id="225680501294068881">S'estan cercant dispositius...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Micròfon (intern)</translation>
 <translation id="4448844063988177157">S'estan cercant xarxes Wi-Fi...</translation>
 <translation id="8401662262483418323">No s'ha pogut connectar amb &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Missatge del servidor: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">S'ha produït un error</translation>
 <translation id="7229570126336867161">Es necessita EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> és una sessió pública gestionada per <ph name="DOMAIN"/>.</translation>
+<translation id="9044646465488564462">S'ha produït un error en connectar amb la xarxa: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Tanca la sessió</translation>
 <translation id="8454013096329229812">La Wi-Fi està activada.</translation>
 <translation id="4872237917498892622">Alt+Cerca o Maj</translation>
 <translation id="9201131092683066720">La bateria està carregada fins al <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Configuració...</translation>
+<translation id="3871838685472846647">Xarxa mòbil activada</translation>
 <translation id="1195412055398077112">sobreescaneig</translation>
-<translation id="1717216362413677834">Mode connectat</translation>
 <translation id="112308213915226829">Amaga el prestatge automàticament</translation>
+<translation id="7573962313813535744">Mode acoblat</translation>
 <translation id="8927026611342028580">S'ha sol·licitat la connexió</translation>
 <translation id="8300849813060516376">Error d'OTASP</translation>
 <translation id="2792498699870441125">Alt+Cerca</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">La bateria està carregada fins al <ph name="PERCENTAGE"/>% i s'està carregant.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: s'està activant...</translation>
 <translation id="4895488851634969361">La bateria està carregada.</translation>
-<translation id="1391854757121130358">Pot ser que hàgiu esgotat les dades mòbils.</translation>
 <translation id="5947494881799873997">Reverteix</translation>
 <translation id="7593891976182323525">Cerca o Maj</translation>
 <translation id="7649070708921625228">Ajuda</translation>
+<translation id="747833637904845037">El Chromebook continuarà actiu mentre estigui connectat a una pantalla externa, tot i que es tanqui la tapa.</translation>
 <translation id="3050422059534974565">Bloq Maj està activat.
 Premeu Cerca o Maj per cancel·lar.</translation>
 <translation id="397105322502079400">S’està calculant...</translation>
 <translation id="158849752021629804">Es necessita una xarxa domèstica</translation>
 <translation id="6857811139397017780">Activa <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Error en la cerca de DHCP</translation>
-<translation id="5812035014844949013">SORTIDA</translation>
 <translation id="6692173217867674490">Contrasenya no vàlida</translation>
 <translation id="6165508094623778733">Més informació</translation>
 <translation id="9046895021617826162">S'ha produït un error en la connexió</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Bateria baixa (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Accepta</translation>
 <translation id="5102001756192215136">Temps d'autonomia: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Sortida</translation>
 <translation id="520760366042891468">Compartiu el control de la pantalla mitjançant Hangouts.</translation>
 <translation id="8000066093800657092">No hi ha xarxa</translation>
 <translation id="4015692727874266537">Inicia la sessió amb un altre compte...</translation>
 <translation id="5941711191222866238">Minimitza</translation>
 <translation id="6911468394164995108">Uneix-te a una altra...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Enhorabona. El servei de dades &quot;<ph name="NAME"/>&quot; s'ha activat i ja es pot fer servir.</translation>
 <translation id="412065659894267608">Falten <ph name="HOUR"/> h <ph name="MINUTE"/> min fins que estigui carregada completament</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operador</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index d5f2e98..d7301ce 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">V rámci vícenásobného přihlášení lze používat maximálně tři účty.</translation>
 <translation id="370649949373421643">Povolit Wi-Fi</translation>
 <translation id="3626281679859535460">Jas</translation>
+<translation id="3621202678540785336">Vstup</translation>
 <translation id="595202126637698455">Sledování výkonu aktivováno</translation>
 <translation id="8054466585765276473">Výpočet doby výdrže baterie.</translation>
 <translation id="7982789257301363584">Síť</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Stavový panel</translation>
 <translation id="1661867754829461514">Chybí kód PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Připojování...</translation>
+<translation id="40400351611212369">Chyba aktivace sítě</translation>
 <translation id="4237016987259239829">Chyba připojení k síti</translation>
 <translation id="2946640296642327832">Zapnout Bluetooth</translation>
 <translation id="6459472438155181876">Rozšíření obrazovky na displej <ph name="DISPLAY_NAME"/></translation>
@@ -43,6 +45,7 @@
 <translation id="4628814525959230255">Sdílíte ovládání obrazovky s uživatelem <ph name="HELPER_NAME"/> (prostřednictvím služby Hangouts).</translation>
 <translation id="7864539943188674973">Vypnout Bluetooth</translation>
 <translation id="939252827960237676">Uložení snímku obrazovky se nezdařilo</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Restartovat a aktualizovat</translation>
 <translation id="2268813581635650749">Odhlásit vše</translation>
 <translation id="735745346212279324">Síť VPN je odpojena</translation>
@@ -52,7 +55,6 @@
 <translation id="8190698733819146287">Personalizovat jazyky a zadávání...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Pozice na poličce</translation>
-<translation id="2903907270192926896">VSTUP</translation>
 <translation id="8676770494376880701">Byla připojena nabíječka s nízkým napětím</translation>
 <translation id="7170041865419449892">Mimo dosah</translation>
 <translation id="4804818685124855865">Odpojit</translation>
@@ -75,18 +77,23 @@
 <translation id="5825747213122829519">Metoda zadávání se změnila na metodu <ph name="INPUT_METHOD_ID"/>. Přepnout ji můžete stisknutím klávesové zkratky Shift + Alt.</translation>
 <translation id="2562916301614567480">Soukromá síť</translation>
 <translation id="6549021752953852991">Není k dispozici žádná mobilní síť.</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Drahý monitore, nějak to mezi námi nefunguje. (Monitor není podporován.)</translation>
 <translation id="6426039856985689743">Zakázat  mobilní datové připojení</translation>
 <translation id="3087734570205094154">Až dolů</translation>
 <translation id="3742055079367172538">Byl vytvořen snímek obrazovky</translation>
 <translation id="8878886163241303700">Rozšíření obrazovky</translation>
 <translation id="5271016907025319479">Síť VPN není nakonfigurována.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Možnost pořizovat snímky obrazovky byla zakázána správcem.</translation>
 <translation id="372094107052732682">Práci ukončíte dvojitým stisknutím kombinace kláves Ctrl+Shift+Q.</translation>
 <translation id="6803622936009808957">Zobrazení nelze zrcadlit, protože nebyla nalezena podporovaná rozlišení. Místo toho se spustil režim rozšířené pracovní plochy.</translation>
 <translation id="1480041086352807611">Režim ukázky</translation>
 <translation id="3626637461649818317">Zbývá <ph name="PERCENTAGE"/> %</translation>
 <translation id="9089416786594320554">Metody zadávání dat</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Aktivace služby <ph name="NAME"/> vyžaduje připojení k síti.</translation>
+<translation id="3963445509666917109">Reproduktor (interní)</translation>
 <translation id="2825619548187458965">Polička</translation>
 <translation id="2614835198358683673">Když bude Chromebook zapnutý, možná se nebude nabíjet. Doporučujeme použít oficiální nabíječku.</translation>
 <translation id="1895658205118569222">Vypnout počítač</translation>
@@ -96,13 +103,13 @@
 <translation id="7874779702599364982">Vyhledávání mobilních sítí...</translation>
 <translation id="583281660410589416">Neznámý</translation>
 <translation id="1383876407941801731">Vyhledávání</translation>
-<translation id="7468789844759750875">Chcete-li koupit více dat, navštivte aktivační portál <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Připojování k síti <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informace o síti</translation>
 <translation id="1621499497873603021">Čas zbývající do vybití baterie: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Odhlásit hosta</translation>
 <translation id="8308637677604853869">Předchozí nabídka</translation>
 <translation id="4666297444214622512">Nelze se přihlásit k jinému účtu.</translation>
+<translation id="3625258641415618104">Snímky obrazovky zakázány</translation>
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1773212559869067373">Ověřovací certifikát byl místně odmítnut</translation>
 <translation id="8528322925433439945">Mobilní sítě...</translation>
@@ -131,6 +138,7 @@
 <translation id="1512064327686280138">Aktivace se nezdařila</translation>
 <translation id="5097002363526479830">Připojení k síti <ph name="NAME"/> se nezdařilo: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Připojení Wi-Fi je vypnuto.</translation>
+<translation id="2966449113954629791">Pravděpodobně jste vyčerpali povolený objem mobilních datových přenosů. Chcete-li koupit více dat, navštivte aktivační portál <ph name="NAME"/>.</translation>
 <translation id="8132793192354020517">Připojeno k síti <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Nastavení tapety...</translation>
 <translation id="8678698760965522072">Stav online</translation>
@@ -147,43 +155,46 @@
 <translation id="3157931365184549694">Obnovit</translation>
 <translation id="4274292172790327596">Neznámá chyba</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Sluchátka</translation>
 <translation id="225680501294068881">Vyhledávání zařízení…</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (interní)</translation>
 <translation id="4448844063988177157">Vyhledávání sítí Wi-Fi...</translation>
 <translation id="8401662262483418323">Připojení k položce <ph name="NAME"/> se nezdařilo: <ph name="DETAILS"/>
 Zpráva serveru: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Došlo k chybě</translation>
 <translation id="7229570126336867161">Je zapotřebí technologie EVDO.</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> je veřejná relace spravovaná doménou <ph name="DOMAIN"/>.</translation>
+<translation id="9044646465488564462">Připojení k síti se nezdařilo: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Ukončit relaci</translation>
 <translation id="8454013096329229812">Připojení Wi-Fi je zapnuto.</translation>
 <translation id="4872237917498892622">Alt + Vyhledávání nebo Shift</translation>
 <translation id="9201131092683066720">Baterie je nabita na <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Nastavení...</translation>
+<translation id="3871838685472846647">Mobil aktivován</translation>
 <translation id="1195412055398077112">přesah obrazu</translation>
-<translation id="1717216362413677834">Režim doku</translation>
 <translation id="112308213915226829">Automaticky skrývat poličku</translation>
+<translation id="7573962313813535744">Ukotvený režim</translation>
 <translation id="8927026611342028580">Je vyžadováno připojení</translation>
 <translation id="8300849813060516376">Selhání OTASP</translation>
 <translation id="2792498699870441125">Alt + Vyhledávání</translation>
 <translation id="8660803626959853127">Synchronizace souborů (<ph name="COUNT"/>)</translation>
-<translation id="5958529069007801266">Uživatel pod dohledem</translation>
+<translation id="5958529069007801266">Dozorovaný uživatel</translation>
 <translation id="3709443003275901162">&gt;9</translation>
 <translation id="639644700271529076">CAPS LOCK je vypnutý</translation>
 <translation id="6248847161401822652">Práci ukončíte dvojitým stisknutím kombinace kláves Ctrl+Shift+Q.</translation>
 <translation id="6785414152754474415">Baterie je nabita na <ph name="PERCENTAGE"/> % a nabíjí se.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Probíhá aktivace...</translation>
 <translation id="4895488851634969361">Baterie je plně nabita.</translation>
-<translation id="1391854757121130358">Pravděpodobně jste vyčerpali povolený objem mobilních datových přenosů.</translation>
 <translation id="5947494881799873997">Vrátit zpět</translation>
 <translation id="7593891976182323525">Vyhledávání nebo Shift</translation>
 <translation id="7649070708921625228">Nápověda</translation>
+<translation id="747833637904845037">Chromebook zůstane po připojení k externímu displeji zapnutý, a to i se zavřeným víkem.</translation>
 <translation id="3050422059534974565">CAPS LOCK je zapnutý. Vypnete jej stisknutím klávesy Vyhledávání nebo Shift.</translation>
 <translation id="397105322502079400">Probíhá výpočet…</translation>
 <translation id="158849752021629804">Je potřeba domácí síť</translation>
 <translation id="6857811139397017780">Aktivovat: <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Vyhledávání serveru DHCP selhalo.</translation>
-<translation id="5812035014844949013">VÝSTUP</translation>
 <translation id="6692173217867674490">Chybné přístupové heslo</translation>
 <translation id="6165508094623778733">Další informace</translation>
 <translation id="9046895021617826162">Připojení selhalo</translation>
@@ -199,12 +210,14 @@
 <translation id="8940956008527784070">Slabá baterie (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Přijmout</translation>
 <translation id="5102001756192215136">Zbývá: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Výstup</translation>
 <translation id="520760366042891468">Sdílíte ovládání obrazovky (prostřednictvím služby Hangouts).</translation>
 <translation id="8000066093800657092">Žádná síť</translation>
 <translation id="4015692727874266537">Přihlásit jiný účet...</translation>
 <translation id="5941711191222866238">Minimalizovat</translation>
 <translation id="6911468394164995108">Připojit k jiné...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Blahopřejeme! Datová služba <ph name="NAME"/> byla aktivována a je připravena k použití.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h <ph name="MINUTE"/> min do nabití</translation>
 <translation id="6359806961507272919">SMS z čísla <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operátor</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index fdb185e..eec885b 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Du kan kun have op til tre konti i samlet login fra flere konti.</translation>
 <translation id="370649949373421643">Aktivér Wi-Fi</translation>
 <translation id="3626281679859535460">Lysstyrke</translation>
+<translation id="3621202678540785336">Input</translation>
 <translation id="595202126637698455">Sporing af ydelsen er aktiveret</translation>
 <translation id="8054466585765276473">Beregner batteritid.</translation>
 <translation id="7982789257301363584">Netværk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Statusbakke</translation>
 <translation id="1661867754829461514">Pinkode mangler</translation>
 <translation id="4508225577814909926"><ph name="NAME"/> : Opretter forbindelse...</translation>
+<translation id="40400351611212369">Fejl under aktivering af netværk</translation>
 <translation id="4237016987259239829">Netværkforbindelsesfejl</translation>
 <translation id="2946640296642327832">Aktivér Bluetooth</translation>
 <translation id="6459472438155181876">Udvider skærmen til <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Deler kontrollen over din skærm med <ph name="HELPER_NAME"/> via Hangouts.</translation>
 <translation id="7864539943188674973">Deaktiver Bluetooth</translation>
 <translation id="939252827960237676">Skærmbilledet kunne ikke gemmes</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Genstart for at opdatere</translation>
 <translation id="2268813581635650749">Log alle ud</translation>
 <translation id="735745346212279324">VPN afbrudt</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Tilpas sprog og indtastning...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Hyldeplacering</translation>
-<translation id="2903907270192926896">INPUT</translation>
 <translation id="8676770494376880701">Oplader med lav kraft er tilsluttet</translation>
 <translation id="7170041865419449892">Intet signal</translation>
 <translation id="4804818685124855865">Afbryd</translation>
@@ -77,18 +79,23 @@
 Tryk på Shift+Alt for at ændre den.</translation>
 <translation id="2562916301614567480">Privat netværk</translation>
 <translation id="6549021752953852991">Der er ingen tilgængelige mobilnetværk</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Kære Skærm. Det fungerer ikke mellem os. (Denne skærm understøttes ikke)</translation>
 <translation id="6426039856985689743">Deaktiver mobildata</translation>
 <translation id="3087734570205094154">Bund</translation>
 <translation id="3742055079367172538">Skærmbilledet blev taget</translation>
 <translation id="8878886163241303700">Udvider skærm</translation>
 <translation id="5271016907025319479">VPN er ikke konfigureret.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Din administrator har deaktiveret muligheden for at tage skærmbilleder.</translation>
 <translation id="372094107052732682">Tryk på Ctrl+Shift+Q to gange for at afslutte.</translation>
 <translation id="6803622936009808957">Skærmene kunne ikke spejles, da der ikke fandtes en understøttet opløsning. I stedet anvendes Udvidet skrivebord.</translation>
 <translation id="1480041086352807611">Demotilstand</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % tilbage</translation>
 <translation id="9089416786594320554">Indtastningsmetoder</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Aktivering af &quot;<ph name="NAME"/>&quot; kræver en netværksforbindelse.</translation>
+<translation id="3963445509666917109">Højttaler (indbygget)</translation>
 <translation id="2825619548187458965">Hylde</translation>
 <translation id="2614835198358683673">Din Chromebook oplades muligvis ikke, når den er tændt. Anvend eventuelt den officielle oplader.</translation>
 <translation id="1895658205118569222">Nedlukning</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Søger efter mobilnetværk...</translation>
 <translation id="583281660410589416">Ukendt</translation>
 <translation id="1383876407941801731">Søgning</translation>
-<translation id="7468789844759750875">Gå til aktiveringsportalen <ph name="NAME"/> for at købe mere data.</translation>
 <translation id="3901991538546252627">Opretter forbindelse til <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Netværksoplysninger</translation>
 <translation id="1621499497873603021">Tid tilbage, indtil batteriet er tomt, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Afslut gæstesession</translation>
 <translation id="8308637677604853869">Forrige menu</translation>
 <translation id="4666297444214622512">Kan ikke logge ind på en anden konto.</translation>
+<translation id="3625258641415618104">Skærmbilleder er deaktiveret</translation>
 <translation id="1346748346194534595">Højre</translation>
 <translation id="1773212559869067373">Godkendelsescertifikatet blev afvist lokalt</translation>
 <translation id="8528322925433439945">Mobil...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktiveringsfejl:</translation>
 <translation id="5097002363526479830">Der kunne ikke oprettes forbindelse til netværket &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi er slået fra.</translation>
+<translation id="2966449113954629791">Du har muligvis opbrugt den tilladte mobildatamængde. Gå til aktiveringsportalen for <ph name="NAME"/> for at købe mere data.</translation>
 <translation id="8132793192354020517">Forbundet til <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Angiv baggrundsbillede...</translation>
 <translation id="8678698760965522072">Onlinetilstand</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Gendan</translation>
 <translation id="4274292172790327596">Fejlen genkendes ikke</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Hovedtelefon</translation>
 <translation id="225680501294068881">Scanner efter enheder...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/> d. <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (indbygget)</translation>
 <translation id="4448844063988177157">Søger efter Wi-Fi-netværk...</translation>
 <translation id="8401662262483418323">Der kunne ikke oprettes forbindelse til &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Servermeddelelse: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Der opstod en fejl</translation>
 <translation id="7229570126336867161">EVDO mangler</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> er en offentlig session administreret af <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Det var ikke muligt at oprette forbindelse til netværket: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Afslut session</translation>
 <translation id="8454013096329229812">Wi-Fi er slået til.</translation>
 <translation id="4872237917498892622">Alt+Søg eller Skift</translation>
 <translation id="9201131092683066720">Batteriet er <ph name="PERCENTAGE"/> % opladet.</translation>
 <translation id="2983818520079887040">Indstillinger...</translation>
+<translation id="3871838685472846647">Aktiveret for mobil</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Docktilstand</translation>
 <translation id="112308213915226829">Skjul hylde automatisk</translation>
+<translation id="7573962313813535744">Tilstanden Tilsluttet dockingstation</translation>
 <translation id="8927026611342028580">Der er anmodet om forbindelse</translation>
 <translation id="8300849813060516376">OTASP mislykkedes</translation>
 <translation id="2792498699870441125">Alt+Søg</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Batteriet er <ph name="PERCENTAGE"/> % opladet og oplades nu.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Aktiverer...</translation>
 <translation id="4895488851634969361">Batteriet er helt opladet.</translation>
-<translation id="1391854757121130358">Du har muligvis nået din mobildatagrænse.</translation>
 <translation id="5947494881799873997">Fortryd</translation>
 <translation id="7593891976182323525">Søg eller skift</translation>
 <translation id="7649070708921625228">Hjælp</translation>
+<translation id="747833637904845037">Din Chromebook vil forblive tændt, når den er sluttet til en ekstern skærm, selv når låget er lukket.</translation>
 <translation id="3050422059534974565">CAPS LOCK er slået til.
 Tryk på Søg eller Skift for at annullere.</translation>
 <translation id="397105322502079400">Beregner...</translation>
 <translation id="158849752021629804">Hjemmenetværk mangler</translation>
 <translation id="6857811139397017780">Aktiver <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP-opslag mislykkedes</translation>
-<translation id="5812035014844949013">OUTPUT</translation>
 <translation id="6692173217867674490">Ugyldig adgangssætning</translation>
 <translation id="6165508094623778733">Flere oplysninger</translation>
 <translation id="9046895021617826162">Forbindelsen mislykkedes</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Batteriniveauet er lavt (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Accepter</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> tilbage</translation>
+<translation id="3009178788565917040">Output</translation>
 <translation id="520760366042891468">Deler kontrollen over din skærm via Hangouts.</translation>
 <translation id="8000066093800657092">Intet netværk</translation>
 <translation id="4015692727874266537">Log ind på en anden konto...</translation>
 <translation id="5941711191222866238">Minimer</translation>
 <translation id="6911468394164995108">Find andre... </translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Datatjenesten &quot;<ph name="NAME"/>&quot; er blevet aktiveret og er klar til brug.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> t <ph name="MINUTE"/> m, indtil det er fuldt opladet</translation>
 <translation id="6359806961507272919">Sms fra <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Mobilselskab</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index b3c6f1b..a3c8d91 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Bei der Mehrfachanmeldung sind maximal drei Konten zulässig.</translation>
 <translation id="370649949373421643">WLAN aktivieren</translation>
 <translation id="3626281679859535460">Helligkeit</translation>
+<translation id="3621202678540785336">Eingang</translation>
 <translation id="595202126637698455">Leistungsnachverfolgung aktiviert</translation>
 <translation id="8054466585765276473">Akku-Laufzeit wird berechnet.</translation>
 <translation id="7982789257301363584">Netzwerk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Statusleiste</translation>
 <translation id="1661867754829461514">PIN fehlt</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Verbindung wird hergestellt...</translation>
+<translation id="40400351611212369">Fehler beim Aktivieren des Netzwerks</translation>
 <translation id="4237016987259239829">Fehler bei der Netzwerkverbindung</translation>
 <translation id="2946640296642327832">Bluetooth aktivieren</translation>
 <translation id="6459472438155181876">Bildschirm wird auf <ph name="DISPLAY_NAME"/> erweitert...</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Bildschirmfreigabe für <ph name="HELPER_NAME"/> über Hangouts</translation>
 <translation id="7864539943188674973">Bluetooth deaktivieren</translation>
 <translation id="939252827960237676">Screenshot konnte nicht gespeichert werden.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Zum Aktualisieren neu starten</translation>
 <translation id="2268813581635650749">Alle abmelden</translation>
 <translation id="735745346212279324">VPN-Verbindung getrennt</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Sprache und Eingabe anpassen...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Ablageposition</translation>
-<translation id="2903907270192926896">Eingang</translation>
 <translation id="8676770494376880701">Schwachstrom-Ladegerät angeschlossen</translation>
 <translation id="7170041865419449892">Außerhalb des Bereichs</translation>
 <translation id="4804818685124855865">Verbindung trennen</translation>
@@ -77,18 +79,23 @@
 Drücken Sie zum Wechseln Umschalt+Alt.</translation>
 <translation id="2562916301614567480">Privates Netzwerk</translation>
 <translation id="6549021752953852991">Kein Mobilfunknetz verfügbar</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Der Monitor wird nicht unterstützt.</translation>
 <translation id="6426039856985689743">Mobilfunk deaktivieren</translation>
 <translation id="3087734570205094154">Unten</translation>
 <translation id="3742055079367172538">Screenshot erstellt</translation>
 <translation id="8878886163241303700">Bildschirmerweiterung</translation>
 <translation id="5271016907025319479">VPN ist nicht konfiguriert.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Die Funktion zum Erfassen von Screenshots wurde vom Administrator deaktiviert.</translation>
 <translation id="372094107052732682">Drücken Sie zum Beenden zweimal Strg+Shift+Q.</translation>
 <translation id="6803622936009808957">Der Bildschirm konnte nicht gespiegelt werden, da die Auflösung nicht unterstützt wird. Stattdessen wurde der Modus für den erweiterten Desktop gestartet.</translation>
 <translation id="1480041086352807611">Demo-Modus</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % verbleibend</translation>
 <translation id="9089416786594320554">Eingabemethoden</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Zum Aktivieren von &quot;<ph name="NAME"/>&quot; ist eine Netzwerkverbindung erforderlich.</translation>
+<translation id="3963445509666917109">Lautsprecher (intern)</translation>
 <translation id="2825619548187458965">Ablage</translation>
 <translation id="2614835198358683673">Ihr Chromebook kann möglicherweise nicht geladen werden, während es eingeschaltet ist. Wir empfehlen die Verwendung des Originalladegeräts.</translation>
 <translation id="1895658205118569222">Herunterfahren</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Suche nach Mobilfunknetzen läuft...</translation>
 <translation id="583281660410589416">Unbekannt</translation>
 <translation id="1383876407941801731">Suche</translation>
-<translation id="7468789844759750875">Besuchen Sie das <ph name="NAME"/>-Aktivierungsportal, um zusätzliches Datenvolumen zu kaufen.</translation>
 <translation id="3901991538546252627">Verbindung mit <ph name="NAME"/> wird hergestellt.</translation>
 <translation id="2204305834655267233">Netzwerkinformationen</translation>
 <translation id="1621499497873603021">Verbleibende Akku-Laufzeit: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Gastsitzung beenden</translation>
 <translation id="8308637677604853869">Vorheriges Menü</translation>
 <translation id="4666297444214622512">Anmeldung in weiterem Konto nicht möglich</translation>
+<translation id="3625258641415618104">Screenshot-Funktion deaktiviert</translation>
 <translation id="1346748346194534595">Nach rechts</translation>
 <translation id="1773212559869067373">Lokale Ablehnung des Authentifizierungszertifikats</translation>
 <translation id="8528322925433439945">Mobil...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktivierungsfehler</translation>
 <translation id="5097002363526479830">Fehler beim Herstellen einer Verbindung mit dem Netzwerk &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">WLAN ist deaktiviert.</translation>
+<translation id="2966449113954629791">Sie haben möglicherweise Ihr mobiles Datenkontingent aufgebraucht. Besuchen Sie das <ph name="NAME"/>-Aktivierungsportal, um weiteres Datenkontingent zu kaufen.</translation>
 <translation id="8132793192354020517">Verbunden mit <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Hintergrund festlegen</translation>
 <translation id="8678698760965522072">Online-Status</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Wiederherstellen</translation>
 <translation id="4274292172790327596">Unbekannter Fehler</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Kopfhörer</translation>
 <translation id="225680501294068881">Nach Geräten wird gesucht...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (intern)</translation>
 <translation id="4448844063988177157">Suche nach WLAN-Netzwerken läuft...</translation>
 <translation id="8401662262483418323">Fehler bei der Verbindung mit &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Servernachricht: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Ein Fehler ist aufgetreten.</translation>
 <translation id="7229570126336867161">EVDO erforderlich</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> ist eine öffentliche Sitzung, die von <ph name="DOMAIN"/> verwaltet wird.</translation>
+<translation id="9044646465488564462">Fehler beim Herstellen einer Verbindung mit dem Netzwerk: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Sitzung beenden</translation>
 <translation id="8454013096329229812">WLAN ist aktiviert.</translation>
 <translation id="4872237917498892622">Alt+Such- oder Umschalttaste</translation>
 <translation id="9201131092683066720">Akku ist zu <ph name="PERCENTAGE"/> % geladen.</translation>
 <translation id="2983818520079887040">Einstellungen...</translation>
+<translation id="3871838685472846647">Mobiler Datendienst aktiviert</translation>
 <translation id="1195412055398077112">Overscan</translation>
-<translation id="1717216362413677834">Dock-Modus</translation>
 <translation id="112308213915226829">Ablage automatisch ausblenden</translation>
+<translation id="7573962313813535744">Docking-Modus</translation>
 <translation id="8927026611342028580">Verbindung angefordert</translation>
 <translation id="8300849813060516376">OTASP fehlgeschlagen</translation>
 <translation id="2792498699870441125">Alt+Suchtaste</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Akku ist zu <ph name="PERCENTAGE"/> % geladen und wird geladen.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Wird aktiviert...</translation>
 <translation id="4895488851634969361">Akku ist vollständig geladen.</translation>
-<translation id="1391854757121130358">Sie haben möglicherweise Ihr mobiles Datenvolumen aufgebraucht.</translation>
 <translation id="5947494881799873997">Rückgängig machen</translation>
 <translation id="7593891976182323525">Such- oder Umschalttaste</translation>
 <translation id="7649070708921625228">Hilfe</translation>
+<translation id="747833637904845037">Wenn das Chromebook an einen externen Monitor angeschlossen ist, bleibt es auch bei geschlossenem Laptopdeckel aktiv.</translation>
 <translation id="3050422059534974565">Die Feststelltaste ist aktiviert.
 Drücken Sie die Such- oder die Umschalttaste, um die Aktivierung aufzuheben.</translation>
 <translation id="397105322502079400">Wird berechnet...</translation>
 <translation id="158849752021629804">Heimnetzwerk erforderlich</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> aktivieren</translation>
 <translation id="5864471791310927901">DHCP-Suche fehlgeschlagen</translation>
-<translation id="5812035014844949013">Ausgang</translation>
 <translation id="6692173217867674490">Ungültige Passphrase</translation>
 <translation id="6165508094623778733">Weitere Informationen</translation>
 <translation id="9046895021617826162">Verbindungsaufbau fehlgeschlagen</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Niedriger Akkustand (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Annehmen</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> verbleiben</translation>
+<translation id="3009178788565917040">Ausgang</translation>
 <translation id="520760366042891468">Bildschirmfreigabe über Hangouts</translation>
 <translation id="8000066093800657092">Nicht verbunden</translation>
 <translation id="4015692727874266537">Anderes Konto anmelden...</translation>
 <translation id="5941711191222866238">Verkleinern</translation>
 <translation id="6911468394164995108">Andere Netzwerke...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Herzlichen Glückwunsch! Ihr Datendienst &quot;<ph name="NAME"/>&quot; wurde aktiviert und ist einsatzbereit.</translation>
 <translation id="412065659894267608">In <ph name="HOUR"/> Std. <ph name="MINUTE"/> Min. vollständig aufgeladen</translation>
 <translation id="6359806961507272919">SMS von <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Mobilfunkanbieter</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index a37b5bf..3f1a678 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Μπορείτε να συνδέεστε ταυτόχρονα με έως και τρεις λογαριασμούς.</translation>
 <translation id="370649949373421643">Ενεργοποίηση Wi-Fi</translation>
 <translation id="3626281679859535460">Φωτεινότητα</translation>
+<translation id="3621202678540785336">Είσοδος</translation>
 <translation id="595202126637698455">Η παρακολούθηση απόδοσης έχει ενεργοποιηθεί</translation>
 <translation id="8054466585765276473">Υπολογισμός χρόνου μπαταρίας που απομένει.</translation>
 <translation id="7982789257301363584">Δίκτυο</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Δίσκος κατάστασης</translation>
 <translation id="1661867754829461514">Απουσιάζει το PIN </translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Σύνδεση…</translation>
+<translation id="40400351611212369">Σφάλμα ενεργοποίησης συστήματος</translation>
 <translation id="4237016987259239829">Σφάλμα σύνδεσης δικτύου</translation>
 <translation id="2946640296642327832">Ενεργοποίηση Bluetooth</translation>
 <translation id="6459472438155181876">Επέκταση οθόνης σε <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Μοιράζεστε τον έλεγχο της οθόνης σας με το χρήστη <ph name="HELPER_NAME"/> μέσω του Hangouts.</translation>
 <translation id="7864539943188674973">Απενεργοποίηση Bluetooth</translation>
 <translation id="939252827960237676">Αποτυχία αποθήκευσης στιγμιότυπου οθόνης</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Επανεκκίνηση για ενημέρωση</translation>
 <translation id="2268813581635650749">Αποσύνδεση όλων</translation>
 <translation id="735745346212279324">Το VPN αποσυνδέθηκε</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Προσαρμογή γλωσσών και εισόδου...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Θέση ραφιού</translation>
-<translation id="2903907270192926896">ΕΙΣΟΔΟΣ</translation>
 <translation id="8676770494376880701">Ο συνδεδεμένος φορτιστής παρέχει χαμηλή ισχύ</translation>
 <translation id="7170041865419449892">Εκτός εύρους τιμών</translation>
 <translation id="4804818685124855865">Αποσύνδεση</translation>
@@ -77,18 +79,23 @@
 Πατήστε Shift + Alt για εναλλαγή.</translation>
 <translation id="2562916301614567480">Ιδιωτικό δίκτυο</translation>
 <translation id="6549021752953852991">Δεν υπάρχει διαθέσιμο δίκτυο κινητής τηλεφωνίας</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Αγαπητή οθόνη, κάτι δεν πάει καλά με εμάς. (Αυτή η οθόνη δεν υποστηρίζεται)</translation>
 <translation id="6426039856985689743">Απενεργοποίηση δεδομένων κινητής τηλεφωνίας</translation>
 <translation id="3087734570205094154">Κάτω</translation>
 <translation id="3742055079367172538">Το στιγμιότυπο οθόνης έχει ληφθεί</translation>
 <translation id="8878886163241303700">Επέκταση οθόνης</translation>
 <translation id="5271016907025319479">Το VPN δεν έχει διαμορφωθεί.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Η δυνατότητα λήψης στιγμιότυπων οθόνης έχει απενεργοποιηθεί από το διαχειριστή σας.</translation>
 <translation id="372094107052732682">Πατήστε Ctrl + Shift + Q δύο φορές για έξοδο.</translation>
 <translation id="6803622936009808957">Δεν ήταν δυνατός ο αντικατοπτρισμός των οθονών καθώς δεν βρέθηκαν υποστηριζόμενες αναλύσεις. Έχει ενεργοποιηθεί εναλλακτικά η εκτεταμένη επιφάνεια εργασίας.</translation>
 <translation id="1480041086352807611">Λειτουργία επίδειξης</translation>
 <translation id="3626637461649818317">Υπολείπεται <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Μέθοδοι εισαγωγής</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Η ενεργοποίηση του &quot;<ph name="NAME"/>&quot; απαιτεί σύνδεση δικτύου.</translation>
+<translation id="3963445509666917109">Ηχείο (Εσωτερικό)</translation>
 <translation id="2825619548187458965">Ράφι</translation>
 <translation id="2614835198358683673">Το Chromebook ενδέχεται να μη φορτίζει ενώ είναι ενεργοποιημένο. Χρησιμοποιήστε τον αυθεντικό φορτιστή.</translation>
 <translation id="1895658205118569222">Τερματισμός λειτουργίας</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Αναζήτηση για δίκτυα κινητής τηλεφωνίας…</translation>
 <translation id="583281660410589416">Άγνωστο</translation>
 <translation id="1383876407941801731">Αναζήτηση</translation>
-<translation id="7468789844759750875">Επισκεφτείτε την πύλη ενεργοποίησης <ph name="NAME"/> για να αγοράσετε περισσότερα δεδομένα.</translation>
 <translation id="3901991538546252627">Σύνδεση με <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Πληροφορίες δικτύου</translation>
 <translation id="1621499497873603021">Χρόνος που απομένει μέχρι να αδειάσει η μπαταρία, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Έξοδος επισκέπτη</translation>
 <translation id="8308637677604853869">Προηγούμενο μενού</translation>
 <translation id="4666297444214622512">Δεν είναι δυνατή η σύνδεση σε άλλο λογαριασμό.</translation>
+<translation id="3625258641415618104">Τα στιγμιότυπα οθόνης απενεργοποιήθηκαν</translation>
 <translation id="1346748346194534595">Δεξιά</translation>
 <translation id="1773212559869067373">Το πιστοποιητικό ελέγχου ταυτότητας απορρίφθηκε τοπικά</translation>
 <translation id="8528322925433439945">Κινητή τηλεφωνία...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Αποτυχία ενεργοποίησης</translation>
 <translation id="5097002363526479830">Δεν ήταν δυνατή η σύνδεση στο δίκτυο '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Το Wi-Fi έχει απενεργοποιηθεί.</translation>
+<translation id="2966449113954629791">Ενδέχεται να έχετε εξαντλήσει τα διαθέσιμα δεδομένα κινητής τηλεφωνίας. Επισκεφτείτε την πύλη ενεργοποίησης <ph name="NAME"/>, για να αγοράσετε περισσότερα δεδομένα.</translation>
 <translation id="8132793192354020517">Έγινε σύνδεση με το δίκτυο <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Ορισμός ταπετσαρίας...</translation>
 <translation id="8678698760965522072">Κατάσταση &quot;Σε σύνδεση&quot;</translation>
@@ -149,21 +157,25 @@
 <translation id="3157931365184549694">Επαναφορά</translation>
 <translation id="4274292172790327596">Μη αναγνωρίσιμο σφάλμα</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Ακουστικά</translation>
 <translation id="225680501294068881">Σάρωση για συσκευές…</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Μικρόφωνο (Εσωτερικό)</translation>
 <translation id="4448844063988177157">Αναζήτηση για δίκτυα Wi-Fi...</translation>
 <translation id="8401662262483418323">Αποτυχία σύνδεσης στο δίκτυο '<ph name="NAME"/>': <ph name="DETAILS"/> μήνυμα διακομιστή: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Παρουσιάστηκε σφάλμα</translation>
 <translation id="7229570126336867161">Απαιτείται EVDO</translation>
 <translation id="2999742336789313416">Το <ph name="DISPLAY_NAME"/> είναι μια δημόσια περίοδος σύνδεσης που διαχειρίζεται το <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Η σύνδεση στο δίκτυο απέτυχε: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Έξοδος από συνεδρία</translation>
 <translation id="8454013096329229812">Το Wi-Fi έχει ενεργοποιηθεί.</translation>
 <translation id="4872237917498892622">Alt+Search ή Shift</translation>
 <translation id="9201131092683066720">Η μπαταρία είναι πλήρης <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Ρυθμίσεις...</translation>
+<translation id="3871838685472846647">Το κινητό ενεργοποιήθηκε</translation>
 <translation id="1195412055398077112">υπερσάρωση</translation>
-<translation id="1717216362413677834">Λειτουργία Dock</translation>
 <translation id="112308213915226829">Αυτόματη απόκρυψη ραφιού</translation>
+<translation id="7573962313813535744">Λειτουργία βάσης σύνδεσης</translation>
 <translation id="8927026611342028580">Έχει υποβληθεί αίτημα σύνδεσης</translation>
 <translation id="8300849813060516376">Αποτυχία OTASP</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -175,17 +187,16 @@
 <translation id="6785414152754474415">Η μπαταρία είναι πλήρης <ph name="PERCENTAGE"/>% και φορτίζει.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Ενεργοποίηση…</translation>
 <translation id="4895488851634969361">Η μπαταρία είναι πλήρης.</translation>
-<translation id="1391854757121130358">Ενδέχεται να έχετε χρησιμοποιήσει το πρόγραμμά δεδομένων της κινητής τηλεφωνίας σας.</translation>
 <translation id="5947494881799873997">Επαναφορά</translation>
 <translation id="7593891976182323525">Search ή Shift</translation>
 <translation id="7649070708921625228">Βοήθεια</translation>
+<translation id="747833637904845037">Το Chromebook θα παραμείνει ενεργό ενώ βρίσκεται συνδεδεμένο σε εξωτερική οθόνη, ακόμα και με το καπάκι κλειστό.</translation>
 <translation id="3050422059534974565">Το πλήκτρο CAPS LOCK έχει ενεργοποιηθεί.
 Πατήστε Search ή Shift για ακύρωση.</translation>
 <translation id="397105322502079400">Υπολογισμός…</translation>
 <translation id="158849752021629804">Απαιτείται εγχώριο δίκτυο</translation>
 <translation id="6857811139397017780">Ενεργοποίηση <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Αποτυχία αναζήτησης DHCP</translation>
-<translation id="5812035014844949013">ΕΞΟΔΟΣ</translation>
 <translation id="6692173217867674490">Εσφαλμένη κωδική φράση</translation>
 <translation id="6165508094623778733">Μάθετε περισσότερα</translation>
 <translation id="9046895021617826162">Η σύνδεση απέτυχε</translation>
@@ -201,12 +212,14 @@
 <translation id="8940956008527784070">Χαμηλή στάθμη μπαταρίας (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Αποδοχή</translation>
 <translation id="5102001756192215136">Απομένουν <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Έξοδος</translation>
 <translation id="520760366042891468">Γίνεται κοινή χρήση της οθόνης σας μέσω Hangouts.</translation>
 <translation id="8000066093800657092">Κανένα δίκτυο</translation>
 <translation id="4015692727874266537">Σύνδεση σε άλλο λογαριασμό…</translation>
 <translation id="5941711191222866238">Ελαχιστοποίηση</translation>
 <translation id="6911468394164995108">Συμμετοχή σε άλλο…</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Συγχαρητήρια! Η υπηρεσία δεδομένων &quot;<ph name="NAME"/>&quot; έχει ενεργοποιηθεί και είναι έτοιμη για χρήση.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>ω <ph name="MINUTE"/>λ μέχρι να ολοκληρωθεί η φόρτιση</translation>
 <translation id="6359806961507272919">SMS από <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Εταιρεία κινητής τηλεφωνίας</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index d873968..e074974 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">You can only have up to three accounts in multiple sign-in.</translation>
 <translation id="370649949373421643">Enable Wi-Fi</translation>
 <translation id="3626281679859535460">Brightness</translation>
+<translation id="3621202678540785336">Input</translation>
 <translation id="595202126637698455">Performance tracing enabled</translation>
 <translation id="8054466585765276473">Calculating battery time.</translation>
 <translation id="7982789257301363584">Network</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Status tray</translation>
 <translation id="1661867754829461514">PIN missing</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Connecting...</translation>
+<translation id="40400351611212369">Network Activation Error</translation>
 <translation id="4237016987259239829">Network Connection Error</translation>
 <translation id="2946640296642327832">Enable Bluetooth</translation>
 <translation id="6459472438155181876">Extending screen to <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Sharing control of your screen with <ph name="HELPER_NAME"/> via Hangouts.</translation>
 <translation id="7864539943188674973">Disable Bluetooth</translation>
 <translation id="939252827960237676">Failed to save screenshot</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Restart to update</translation>
 <translation id="2268813581635650749">Sign out all</translation>
 <translation id="735745346212279324">VPN disconnected</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Customise languages and input...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Shelf position</translation>
-<translation id="2903907270192926896">INPUT</translation>
 <translation id="8676770494376880701">Low-power charger connected</translation>
 <translation id="7170041865419449892">Out of range</translation>
 <translation id="4804818685124855865">Disconnect</translation>
@@ -77,18 +79,23 @@
 Press Shift + Alt to switch.</translation>
 <translation id="2562916301614567480">Private Network</translation>
 <translation id="6549021752953852991">No mobile network available</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (That monitor is not supported)</translation>
 <translation id="6426039856985689743">Disable mobile data</translation>
 <translation id="3087734570205094154">Bottom</translation>
 <translation id="3742055079367172538">Screenshot taken</translation>
 <translation id="8878886163241303700">Extending screen</translation>
 <translation id="5271016907025319479">VPN is not configured.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">The ability to take screenshots has been disabled by your administrator.</translation>
 <translation id="372094107052732682">Press Ctrl+Shift+Q twice to exit.</translation>
 <translation id="6803622936009808957">Could not mirror displays since no supported resolutions found. Entered extended desktop instead.</translation>
 <translation id="1480041086352807611">Demo mode</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% remaining</translation>
 <translation id="9089416786594320554">Input methods</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Activation of '<ph name="NAME"/>' requires a network connection.</translation>
+<translation id="3963445509666917109">Speaker (Internal)</translation>
 <translation id="2825619548187458965">Shelf</translation>
 <translation id="2614835198358683673">Your Chromebook may not charge while it is turned on. Consider using the official charger.</translation>
 <translation id="1895658205118569222">Shutdown</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Searching for cellular networks...</translation>
 <translation id="583281660410589416">Unknown</translation>
 <translation id="1383876407941801731">Search</translation>
-<translation id="7468789844759750875">Visit the <ph name="NAME"/> activation portal to buy more data.</translation>
 <translation id="3901991538546252627">Connecting to <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Network Info</translation>
 <translation id="1621499497873603021">Time left until battery is empty, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Exit guest</translation>
 <translation id="8308637677604853869">Previous menu</translation>
 <translation id="4666297444214622512">Can't sign into another account.</translation>
+<translation id="3625258641415618104">Screenshots disabled</translation>
 <translation id="1346748346194534595">Right</translation>
 <translation id="1773212559869067373">Authentication certificate rejected locally</translation>
 <translation id="8528322925433439945">Mobile ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Activation failure</translation>
 <translation id="5097002363526479830">Failed to connect to the network '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi is turned off.</translation>
+<translation id="2966449113954629791">You may have used up your mobile data allowance. Visit the <ph name="NAME"/> activation portal to buy more data.</translation>
 <translation id="8132793192354020517">Connected to <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Set wallpaper...</translation>
 <translation id="8678698760965522072">Online state</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restore</translation>
 <translation id="4274292172790327596">Unrecognised error</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Headphone</translation>
 <translation id="225680501294068881">Scanning for devices...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microphone (Internal)</translation>
 <translation id="4448844063988177157">Searching for Wi-Fi networks...</translation>
 <translation id="8401662262483418323">Failed to connect to '<ph name="NAME"/>': <ph name="DETAILS"/>
 Server message: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">An error occurred</translation>
 <translation id="7229570126336867161">Need EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> is a public session managed by <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Failed to connect to network: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Exit session</translation>
 <translation id="8454013096329229812">Wi-Fi is turned on.</translation>
 <translation id="4872237917498892622">Alt+Search or Shift</translation>
 <translation id="9201131092683066720">Battery is <ph name="PERCENTAGE"/>% full.</translation>
 <translation id="2983818520079887040">Settings...</translation>
+<translation id="3871838685472846647">Mobile Activated</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Dock mode</translation>
 <translation id="112308213915226829">Autohide shelf</translation>
+<translation id="7573962313813535744">Docked mode</translation>
 <translation id="8927026611342028580">Connect Requested</translation>
 <translation id="8300849813060516376">OTASP failed</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Battery is <ph name="PERCENTAGE"/>% full and charging.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Activating...</translation>
 <translation id="4895488851634969361">Battery is full.</translation>
-<translation id="1391854757121130358">You may have used up your mobile data allowance.</translation>
 <translation id="5947494881799873997">Revert</translation>
 <translation id="7593891976182323525">Search or Shift</translation>
 <translation id="7649070708921625228">Help</translation>
+<translation id="747833637904845037">Your Chromebook will stay on while connected to an external display, even with the lid closed.</translation>
 <translation id="3050422059534974565">CAPS LOCK is on.
 Press Search or Shift to cancel.</translation>
 <translation id="397105322502079400">Calculating...</translation>
 <translation id="158849752021629804">Need home network</translation>
 <translation id="6857811139397017780">Activate <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP look-up failed</translation>
-<translation id="5812035014844949013">OUTPUT</translation>
 <translation id="6692173217867674490">Bad passphrase</translation>
 <translation id="6165508094623778733">Learn more</translation>
 <translation id="9046895021617826162">Connection failed</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Battery low (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Accept</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> left</translation>
+<translation id="3009178788565917040">Output</translation>
 <translation id="520760366042891468">Sharing control of your screen via Hangouts.</translation>
 <translation id="8000066093800657092">No network</translation>
 <translation id="4015692727874266537">Sign in another account...</translation>
 <translation id="5941711191222866238">Minimise</translation>
 <translation id="6911468394164995108">Join other ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Congratulations! Your '<ph name="NAME"/>' data service has been activated and is ready to go.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>h <ph name="MINUTE"/>m until full</translation>
 <translation id="6359806961507272919">SMS from <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operator</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index 5a28504..3acfeb2 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Solo puedes tener un máximo de tres cuentas en un acceso múltiple.</translation>
 <translation id="370649949373421643">Habilitar Wi-Fi</translation>
 <translation id="3626281679859535460">Brillo</translation>
+<translation id="3621202678540785336">Entrada</translation>
 <translation id="595202126637698455">Seguimiento de rendimiento habilitado</translation>
 <translation id="8054466585765276473">Calculando duración de la batería...</translation>
 <translation id="7982789257301363584">Red</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Bandeja de estado</translation>
 <translation id="1661867754829461514">Falta el número de PIN </translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Conectando...</translation>
+<translation id="40400351611212369">Error de activación de red</translation>
 <translation id="4237016987259239829">Error de conexión de red</translation>
 <translation id="2946640296642327832">Activar Bluetooth</translation>
 <translation id="6459472438155181876">Ampliando pantalla para <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Compartir el control de la pantalla con <ph name="HELPER_NAME"/> a través de Hangouts</translation>
 <translation id="7864539943188674973">Desactivar Bluetooth</translation>
 <translation id="939252827960237676">No se pudo guardar la captura de pantalla.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reinicia para actualizar.</translation>
 <translation id="2268813581635650749">Salir de todo</translation>
 <translation id="735745346212279324">VPN desconectada</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizar idiomas y la entrada de datos</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posición de la biblioteca</translation>
-<translation id="2903907270192926896">ENTRADA</translation>
 <translation id="8676770494376880701">Cargador de baja potencia conectado</translation>
 <translation id="7170041865419449892">Fuera de alcance</translation>
 <translation id="4804818685124855865">Desconectar</translation>
@@ -77,18 +79,23 @@
 Para cambiarlo, presiona Shift + Alt.</translation>
 <translation id="2562916301614567480">Red privada</translation>
 <translation id="6549021752953852991">No hay redes celulares disponibles.</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Querido Monitor, lo nuestro no funciona. (Este monitor no es compatible).</translation>
 <translation id="6426039856985689743">Inhabilitar datos de dispositivos móviles</translation>
 <translation id="3087734570205094154">Inferior</translation>
 <translation id="3742055079367172538">Captura de pantalla tomada</translation>
 <translation id="8878886163241303700">Ampliando pantalla</translation>
 <translation id="5271016907025319479">La VPN no está configurada.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Tu administrador inhabilitó la función para realizar capturas de pantalla.</translation>
 <translation id="372094107052732682">Presiona Ctrl+Mayús+Q dos veces para salir.</translation>
 <translation id="6803622936009808957">No se pudieron reflejar las pantallas porque no se encontraron resoluciones compatibles. En su lugar, se activó el escritorio extendido.</translation>
 <translation id="1480041086352807611">Modo demo</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% restante</translation>
 <translation id="9089416786594320554">Métodos de entrada</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Para activar &quot;<ph name="NAME"/>&quot;, es necesaria una conexión de red.</translation>
+<translation id="3963445509666917109">Altavoz (interno)</translation>
 <translation id="2825619548187458965">Biblioteca</translation>
 <translation id="2614835198358683673">Es posible que tu Chromebook no se cargue mientras esté encendida. Te recomendamos que utilices el cargador oficial.</translation>
 <translation id="1895658205118569222">Cierre</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Buscando redes para celulares...</translation>
 <translation id="583281660410589416">Desconocido</translation>
 <translation id="1383876407941801731">Buscar</translation>
-<translation id="7468789844759750875">Visita el portal de activación de <ph name="NAME"/> para comprar más datos.</translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Información de red</translation>
 <translation id="1621499497873603021">Tiempo restante hasta que se agote la batería: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Salir de la sesión de invitado</translation>
 <translation id="8308637677604853869">Menú anterior</translation>
 <translation id="4666297444214622512">No puedes acceder a otra cuenta.</translation>
+<translation id="3625258641415618104">Capturas de pantalla inhabilitadas</translation>
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1773212559869067373">Certificado de autenticación rechazado de forma local</translation>
 <translation id="8528322925433439945">Dispositivos móviles...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Fallo en la activación</translation>
 <translation id="5097002363526479830">Error al conectar a la red &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi desactivada</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>
 <translation id="8132793192354020517">Conectado a <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Establecer fondo de pantalla...</translation>
 <translation id="8678698760965522072">Estado en línea</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaurar</translation>
 <translation id="4274292172790327596">Error no reconocido</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Auriculares</translation>
 <translation id="225680501294068881">Buscando dispositivos...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Micrófono (interno)</translation>
 <translation id="4448844063988177157">Buscando redes Wi-Fi...</translation>
 <translation id="8401662262483418323">Error al conectarse a &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Mensaje del servidor: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Se ha producido un error</translation>
 <translation id="7229570126336867161">Se necesita EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> es una sesión pública administrada por <ph name="DOMAIN"/>.</translation>
+<translation id="9044646465488564462">Error al establecer conexión con la red: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Salir de la sesión</translation>
 <translation id="8454013096329229812">Wi-Fi activada</translation>
 <translation id="4872237917498892622">Alt+tecla de búsqueda o Mayús</translation>
 <translation id="9201131092683066720">La batería tiene un <ph name="PERCENTAGE"/> % de carga.</translation>
 <translation id="2983818520079887040">Configuración...</translation>
+<translation id="3871838685472846647">Celular activado</translation>
 <translation id="1195412055398077112">desajuste de dimensiones</translation>
-<translation id="1717216362413677834">Modo de conector</translation>
 <translation id="112308213915226829">Ocultar la biblioteca automáticamente</translation>
+<translation id="7573962313813535744">Modo acoplado</translation>
 <translation id="8927026611342028580">Conexión solicitada</translation>
 <translation id="8300849813060516376">OTASP falló</translation>
 <translation id="2792498699870441125">Alt+tecla de búsqueda</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">La batería tiene un <ph name="PERCENTAGE"/> % de carga y se está cargando.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Activando...</translation>
 <translation id="4895488851634969361">La batería está completa.</translation>
-<translation id="1391854757121130358">Es posible que hayas agotado tu cuota de datos móviles.</translation>
 <translation id="5947494881799873997">Revertir</translation>
 <translation id="7593891976182323525">Tecla de búsqueda o Mayús</translation>
 <translation id="7649070708921625228">Ayuda</translation>
+<translation id="747833637904845037">La Chromebook permanecerá encendida mientras esté conectada a una pantalla externa, aunque bajes la tapa.</translation>
 <translation id="3050422059534974565">El BLOQUEO DE MAYÚSCULAS está activado.
 Presiona Mayús o la tecla de búsqueda para cancelar la operación.</translation>
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="158849752021629804">Se necesita red local</translation>
 <translation id="6857811139397017780">Activar <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Falló la búsqueda de DHCP</translation>
-<translation id="5812035014844949013">SALIDA</translation>
 <translation id="6692173217867674490">Frase de contraseña no válida</translation>
 <translation id="6165508094623778733">Más información</translation>
 <translation id="9046895021617826162">No se pudo conectar</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Batería baja (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Aceptar</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> restante</translation>
+<translation id="3009178788565917040">Salida</translation>
 <translation id="520760366042891468">Compartir el control de la pantalla a través de Hangouts</translation>
 <translation id="8000066093800657092">Sin red</translation>
 <translation id="4015692727874266537">Acceder a otra cuenta</translation>
 <translation id="5941711191222866238">Minimizar</translation>
 <translation id="6911468394164995108">Conectarte a otra red...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Se activó tu servicio de datos &quot;<ph name="NAME"/>&quot; y está listo para que lo uses.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>h <ph name="MINUTE"/>min para completar la carga</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Proveedor de servicio celular</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index e69bab4..2d66c7d 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Solo puedes utilizar un máximo de tres cuentas en el inicio de sesión múltiple.</translation>
 <translation id="370649949373421643">Habilitar Wi-Fi</translation>
 <translation id="3626281679859535460">Brillo</translation>
+<translation id="3621202678540785336">Entrada</translation>
 <translation id="595202126637698455">Se ha habilitado el control del rendimiento</translation>
 <translation id="8054466585765276473">Calculando duración de la batería...</translation>
 <translation id="7982789257301363584">Red</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Bandeja de estado</translation>
 <translation id="1661867754829461514">Falta el PIN.</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: conectando...</translation>
+<translation id="40400351611212369">Error de activación de red</translation>
 <translation id="4237016987259239829">Error de conexión de red</translation>
 <translation id="2946640296642327832">Habilitar Bluetooth</translation>
 <translation id="6459472438155181876">Ampliando pantalla para <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Comparte el control de tu pantalla con <ph name="HELPER_NAME"/> a través de Hangouts.</translation>
 <translation id="7864539943188674973">Inhabilitar Bluetooth</translation>
 <translation id="939252827960237676">Error al guardar captura de pantalla</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reinicia el sistema para actualizarlo.</translation>
 <translation id="2268813581635650749">Cerrar todas las sesiones</translation>
 <translation id="735745346212279324">VPN desconectada</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizar idiomas...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posición de la estantería</translation>
-<translation id="2903907270192926896">ENTRADA</translation>
 <translation id="8676770494376880701">Cargador de baja potencia conectado</translation>
 <translation id="7170041865419449892">Fuera del alcance</translation>
 <translation id="4804818685124855865">Desvincular</translation>
@@ -77,18 +79,23 @@
 Para cambiarlo, pulsa Mayús + Alt.</translation>
 <translation id="2562916301614567480">Red privada</translation>
 <translation id="6549021752953852991">No hay ninguna red móvil disponible.</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Querido monitor, lo nuestro no funciona... (No se admite el uso de ese monitor).</translation>
 <translation id="6426039856985689743">Inhabilitar datos móviles</translation>
 <translation id="3087734570205094154">Inferior</translation>
 <translation id="3742055079367172538">Captura de pantalla hecha</translation>
 <translation id="8878886163241303700">Ampliando pantalla</translation>
 <translation id="5271016907025319479">VPN no configurada</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Tu administrador ha inhabilitado la función para realizar capturas de pantalla.</translation>
 <translation id="372094107052732682">Pulsa Ctrl+Mayús+Q dos veces para salir.</translation>
 <translation id="6803622936009808957">No se han podido duplicar las pantallas porque no se han encontrado resoluciones compatibles. Se ha utilizado el modo de escritorio ampliado en su lugar.</translation>
 <translation id="1480041086352807611">Modo demo</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% restante</translation>
 <translation id="9089416786594320554">Métodos de entrada</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">La activación de <ph name="NAME"/> requiere una conexión de red.</translation>
+<translation id="3963445509666917109">Altavoz (interno)</translation>
 <translation id="2825619548187458965">Estantería</translation>
 <translation id="2614835198358683673">Es posible que tu Chromebook no se cargue mientras esté activado. Te recomendamos que utilices el cargador oficial.</translation>
 <translation id="1895658205118569222">Cierre del navegador</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Buscando redes móviles...</translation>
 <translation id="583281660410589416">Desconocido</translation>
 <translation id="1383876407941801731">Búsqueda</translation>
-<translation id="7468789844759750875">Visita el portal de activación de <ph name="NAME"/> para comprar más datos.</translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Información de red</translation>
 <translation id="1621499497873603021">Tiempo restante hasta que se agote la batería: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Salir de la sesión de invitado</translation>
 <translation id="8308637677604853869">Menú anterior</translation>
 <translation id="4666297444214622512">No puedo iniciar sesión con otra cuenta.</translation>
+<translation id="3625258641415618104">Capturas de pantalla inhabilitadas</translation>
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1773212559869067373">Certificado de autenticación rechazado de forma local</translation>
 <translation id="8528322925433439945">Redes móviles...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Error de activación</translation>
 <translation id="5097002363526479830">Error al establecer conexión con la red &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">La conexión Wi-Fi está desactivada.</translation>
+<translation id="2966449113954629791">Es posible que hayas agotado los datos de tu plan de datos móviles. Accede al portal de activación de <ph name="NAME"/> para comprar más datos.</translation>
 <translation id="8132793192354020517">Conectado a <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Establecer fondo de pantalla...</translation>
 <translation id="8678698760965522072">Estado online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaurar</translation>
 <translation id="4274292172790327596">Error desconocido</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Auriculares</translation>
 <translation id="225680501294068881">Buscando dispositivos...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Micrófono (interno)</translation>
 <translation id="4448844063988177157">Buscando redes Wi-Fi...</translation>
 <translation id="8401662262483418323">Error al conectarse a &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Mensaje del servidor: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Se ha producido un error.</translation>
 <translation id="7229570126336867161">Es necesario el estándar EVDO.</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> es una sesión pública administrada por <ph name="DOMAIN"/>.</translation>
+<translation id="9044646465488564462">Error al establecer conexión con la red: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Cerrar sesión</translation>
 <translation id="8454013096329229812">La conexión Wi-Fi está activada.</translation>
 <translation id="4872237917498892622">Alt+tecla de búsqueda o Mayús</translation>
 <translation id="9201131092683066720">La batería está al <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Configuración...</translation>
+<translation id="3871838685472846647">Móvil activado</translation>
 <translation id="1195412055398077112">reajustar</translation>
-<translation id="1717216362413677834">Modo de conector</translation>
 <translation id="112308213915226829">Ocultar automáticamente estantería</translation>
+<translation id="7573962313813535744">Modo acoplado</translation>
 <translation id="8927026611342028580">Conexión solicitada</translation>
 <translation id="8300849813060516376">Error de OTASP</translation>
 <translation id="2792498699870441125">Alt+tecla de búsqueda</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">La batería se está cargando y está al <ph name="PERCENTAGE"/>%.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Activando...</translation>
 <translation id="4895488851634969361">La batería está llena.</translation>
-<translation id="1391854757121130358">Es posible que hayas agotado los datos de tu plan de datos móviles.</translation>
 <translation id="5947494881799873997">Deshacer</translation>
 <translation id="7593891976182323525">Tecla de búsqueda o Mayús</translation>
 <translation id="7649070708921625228">Ayuda</translation>
+<translation id="747833637904845037">Tu Chromebook permanecerá activado mientras esté conectado a una pantalla externa, aunque la tapa esté cerrada.</translation>
 <translation id="3050422059534974565">El BLOQUEO DE MAYÚSCULAS está activado.
 Pulsa Mayús o la tecla de búsqueda para cancelar la operación.</translation>
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="158849752021629804">Es necesaria una red doméstica.</translation>
 <translation id="6857811139397017780">Activar <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Error de búsqueda de DHCP</translation>
-<translation id="5812035014844949013">SALIDA</translation>
 <translation id="6692173217867674490">Frase de contraseña incorrecta</translation>
 <translation id="6165508094623778733">Más información</translation>
 <translation id="9046895021617826162">Error de conexión</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Poca batería (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Aceptar</translation>
 <translation id="5102001756192215136">Queda para <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Salida</translation>
 <translation id="520760366042891468">Comparte el control de tu pantalla a través de Hangouts.</translation>
 <translation id="8000066093800657092">Ninguna red</translation>
 <translation id="4015692727874266537">Inicia sesión con otra cuenta...</translation>
 <translation id="5941711191222866238">Minimizar</translation>
 <translation id="6911468394164995108">Conectarse a otra red...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">¡Enhorabuena! Tu servicio de datos <ph name="NAME"/> se ha activado y está listo para que lo uses.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h y <ph name="MINUTE"/> min para completar la carga</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operador</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index 6588f0e..98c8556 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Saate korraga sisse logida kuni kolmele kontole.</translation>
 <translation id="370649949373421643">Luba WiFi</translation>
 <translation id="3626281679859535460">Eredus</translation>
+<translation id="3621202678540785336">Sisend</translation>
 <translation id="595202126637698455">Toimivuse jälgimine on lubatud</translation>
 <translation id="8054466585765276473">Aku tööaja arvutamine.</translation>
 <translation id="7982789257301363584">Võrk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Olekusalv</translation>
 <translation id="1661867754829461514">PIN-kood puudub</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: ühendamine ...</translation>
+<translation id="40400351611212369">Võrgu aktiveerimise viga</translation>
 <translation id="4237016987259239829">Võrguühenduse viga</translation>
 <translation id="2946640296642327832">Luba Bluetooth</translation>
 <translation id="6459472438155181876">Ekraani laiendamine seadmesse <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Teie ekraani juhtimist jagatakse Hangoutsi kaudu kasutajaga <ph name="HELPER_NAME"/>.</translation>
 <translation id="7864539943188674973">Keela Bluetooth</translation>
 <translation id="939252827960237676">Ekraanipilti ei õnnestunud salvestada</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Taaskäivitage värskendamiseks</translation>
 <translation id="2268813581635650749">Logi kõik kasutajad välja</translation>
 <translation id="735745346212279324">VPN-i ühendus on katkestatud</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Keelte ja sisendi kohandamine...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Riiuli positsioon</translation>
-<translation id="2903907270192926896">SISEND</translation>
 <translation id="8676770494376880701">Väikese energiakuluga laadija on ühendatud</translation>
 <translation id="7170041865419449892">Vahemikust väljas</translation>
 <translation id="4804818685124855865">Katkesta ühendus</translation>
@@ -77,18 +79,23 @@
 Selle muutmiseks vajutage klahve Tõstuklahv + Alt.</translation>
 <translation id="2562916301614567480">Privaatvõrk</translation>
 <translation id="6549021752953852991">Mobiilivõrk pole saadaval</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Monitor, kahjuks ei tule meie koostööst midagi välja. (Seda monitori ei toetata)</translation>
 <translation id="6426039856985689743">Keela mobiilne andmeside</translation>
 <translation id="3087734570205094154">Alaserv</translation>
 <translation id="3742055079367172538">Ekraanipilt on tehtud</translation>
 <translation id="8878886163241303700">Ekraani laiendamine</translation>
 <translation id="5271016907025319479">VPN on seadistamata.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Teie administraator on ekraanipiltide tegemise keelanud.</translation>
 <translation id="372094107052732682">Väljumiseks vajutage kaks korda klahvikombinatsiooni Ctrl + tõstuklahv + Q.</translation>
 <translation id="6803622936009808957">Ei saanud kuvasid peegeldada, kuna toetatud eraldusvõimeid ei leitud. Selle asemel siseneti laiendatud töölaua režiimi.</translation>
 <translation id="1480041086352807611">Demorežiim</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% on jäänud</translation>
 <translation id="9089416786594320554">Sisestusviisid</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Võrgu „<ph name="NAME"/>” aktiveerimine nõuab võrguühendust.</translation>
+<translation id="3963445509666917109">Kõlar (sisemine)</translation>
 <translation id="2825619548187458965">Riiul</translation>
 <translation id="2614835198358683673">Teie Chromebooki ei pruugita laadida, kui see on sisse lülitatud. Kaaluge ametliku laadija kasutamist.</translation>
 <translation id="1895658205118569222">Sulgemine</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Mobiilsidevõrkude otsimine ...</translation>
 <translation id="583281660410589416">Tundmatu</translation>
 <translation id="1383876407941801731">Otsing</translation>
-<translation id="7468789844759750875">Külastage võrgu <ph name="NAME"/> aktiveerimisportaali, et rohkem andmemahtu osta.</translation>
 <translation id="3901991538546252627">Võrguga <ph name="NAME"/> ühenduse loomine</translation>
 <translation id="2204305834655267233">Võrguteave</translation>
 <translation id="1621499497873603021">Aku tühjenemiseni on aega <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Välju külastajaseansist</translation>
 <translation id="8308637677604853869">Eelmine menüü</translation>
 <translation id="4666297444214622512">Teisele kontole ei saa sisse logida.</translation>
+<translation id="3625258641415618104">Ekraanipildid on keelatud</translation>
 <translation id="1346748346194534595">Paremale</translation>
 <translation id="1773212559869067373">Autentimissertifikaat lükati kohalikult tagasi</translation>
 <translation id="8528322925433439945">Mobiil ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktiveerimise tõrge</translation>
 <translation id="5097002363526479830">Võrguga „<ph name="NAME"/>” ühenduse loomine ebaõnnestus: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">WiFi on välja lülitatud.</translation>
+<translation id="2966449113954629791">Võimalik, et olete oma mobiilse andmeside ära kasutanud. Andmesidet saate juurde osta aktiveerimisportaalis <ph name="NAME"/>.</translation>
 <translation id="8132793192354020517">Ühendus <ph name="NAME"/>iga</translation>
 <translation id="7052914147756339792">Määra taustapilt ...</translation>
 <translation id="8678698760965522072">Võrguühenduse olek</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Taasta</translation>
 <translation id="4274292172790327596">Tundmatu viga</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Kõrvaklapid</translation>
 <translation id="225680501294068881">Seadmete skannimine ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (sisemine)</translation>
 <translation id="4448844063988177157">WiFi võrkude otsimine ...</translation>
 <translation id="8401662262483418323">Võrguga <ph name="NAME"/> ühenduse loomine ebaõnnestus: <ph name="DETAILS"/>
 Serveri teade: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Tekkis viga</translation>
 <translation id="7229570126336867161">Vajalik EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> on avalik seanss, mida haldab <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Võrguga ühenduse loomine ebaõnnestus: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Välju seansist</translation>
 <translation id="8454013096329229812">WiFi on sisse lülitatud.</translation>
 <translation id="4872237917498892622">Alt + otsinguklahv või tõstuklahv</translation>
 <translation id="9201131092683066720">Aku on <ph name="PERCENTAGE"/>% täis.</translation>
 <translation id="2983818520079887040">Seaded...</translation>
+<translation id="3871838685472846647">Mobiil on aktiveeritud</translation>
 <translation id="1195412055398077112">liighälvitus</translation>
-<translation id="1717216362413677834">Dokirežiim</translation>
 <translation id="112308213915226829">Riiuli automaatne peitmine</translation>
+<translation id="7573962313813535744">Dokkimisrežiim</translation>
 <translation id="8927026611342028580">Ühenduse taotlus</translation>
 <translation id="8300849813060516376">OTASP nurjus</translation>
 <translation id="2792498699870441125">Alt + otsinguklahv</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Aku on <ph name="PERCENTAGE"/>% täis ja seda laetakse.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktiveerimine ...</translation>
 <translation id="4895488851634969361">Aku on täis.</translation>
-<translation id="1391854757121130358">Tundub, et olete oma mobiilse andmesidemahu ära kasutanud.</translation>
 <translation id="5947494881799873997">Ennista</translation>
 <translation id="7593891976182323525">Otsinguklahv või tõstuklahv</translation>
 <translation id="7649070708921625228">Abi</translation>
+<translation id="747833637904845037">Kui Chromebook on ühendatud välise ekraaniga, töötab see edasi ka klapi sulgemisel.</translation>
 <translation id="3050422059534974565">SUURTÄHELUKK on sisse lülitatud.
 Tühistamiseks vajutage otsinguklahvi või tõstuklahvi</translation>
 <translation id="397105322502079400">Arvutamine ...</translation>
 <translation id="158849752021629804">Vajalik koduvõrk</translation>
 <translation id="6857811139397017780">Aktiveeri <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP otsing nurjus</translation>
-<translation id="5812035014844949013">VÄLJUND</translation>
 <translation id="6692173217867674490">Halb parool</translation>
 <translation id="6165508094623778733">Lisateave</translation>
 <translation id="9046895021617826162">Ühendamine nurjus</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Aku tühjeneb (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Nõustu</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> alles</translation>
+<translation id="3009178788565917040">Väljund</translation>
 <translation id="520760366042891468">Teie ekraani juhtimist jagatakse Hangoutsi kaudu.</translation>
 <translation id="8000066093800657092">Võrku pole</translation>
 <translation id="4015692727874266537">Logige sisse teise kontoga ...</translation>
 <translation id="5941711191222866238">Minimeeri</translation>
 <translation id="6911468394164995108">Liitu muu võrguga ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Õnnitleme! Teie võrgu „<ph name="NAME"/>” andmeteenus on aktiveeritud ja kasutamiseks valmis.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h <ph name="MINUTE"/> min aku täitumiseni</translation>
 <translation id="6359806961507272919">SMS numbrilt <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Mobiilioperaator</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 0707e7b..f17dcd4 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">در ورود چندگانه به سیستم حداکثر می‌توانید از سه حساب استفاده کنید.</translation>
 <translation id="370649949373421643">‏فعال کردن Wi-Fi</translation>
 <translation id="3626281679859535460">روشنایی</translation>
+<translation id="3621202678540785336">ورودی</translation>
 <translation id="595202126637698455">ردیابی عملکرد فعال شد</translation>
 <translation id="8054466585765276473">درحال محاسبه زمان شارژ باتری.</translation>
 <translation id="7982789257301363584">شبکه</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">سینی وضعیت</translation>
 <translation id="1661867754829461514">پین جا افتاده</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: در حال اتصال...</translation>
+<translation id="40400351611212369">خطا در فعال‌سازی شبکه</translation>
 <translation id="4237016987259239829">خطای اتصال شبکه</translation>
 <translation id="2946640296642327832">فعال کردن بلوتوث</translation>
 <translation id="6459472438155181876">گسترش صفحه به <ph name="DISPLAY_NAME"/></translation>
@@ -43,6 +45,7 @@
 <translation id="4628814525959230255">‏اشتراک‌گذاری کنترل صفحه نمایش‌تان با <ph name="HELPER_NAME"/> از طریق Hangouts.</translation>
 <translation id="7864539943188674973">غیرفعال کردن بلوتوث</translation>
 <translation id="939252827960237676">عکس از صفحه نمایش ذخیره نشد</translation>
+<translation id="1969011864782743497">‏<ph name="DEVICE_NAME"/> (‏USB)</translation>
 <translation id="3126069444801937830">راه‌اندازی مجدد برای به‌روزرسانی</translation>
 <translation id="2268813581635650749">خروج همه از سیستم</translation>
 <translation id="735745346212279324">‏VPN قطع شد</translation>
@@ -52,7 +55,6 @@
 <translation id="8190698733819146287">سفارشی کردن زبان‌ها و ورودی...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">موقعیت قفسه</translation>
-<translation id="2903907270192926896">ورودی</translation>
 <translation id="8676770494376880701">شارژر برق متصل شده ضعیف است</translation>
 <translation id="7170041865419449892">خارج از محدوده</translation>
 <translation id="4804818685124855865">قطع اتصال</translation>
@@ -75,18 +77,23 @@
 <translation id="5825747213122829519">‏روش ورودی شما به <ph name="INPUT_METHOD_ID"/> تغییر یافت. Shift + Alt را برای تعویض فشار دهید.</translation>
 <translation id="2562916301614567480">شبکه خصوصی</translation>
 <translation id="6549021752953852991">هیچ شبکه سلولی دردسترس نیست</translation>
+<translation id="2982222131142145681">‏<ph name="DEVICE_NAME"/> (‏HDMI)</translation>
 <translation id="4379753398862151997">نمایشگر عزیز، ما برای هم ساخته نشده‌ایم. (این نمایشگر پشتیبانی نمی‌شود)</translation>
 <translation id="6426039856985689743">غیرفعال کردن اطلاعات تلفن همراه</translation>
 <translation id="3087734570205094154">پایین</translation>
 <translation id="3742055079367172538">عکس از صفحه نمایش گرفته شد</translation>
 <translation id="8878886163241303700">صفحه گسترش یافته است</translation>
 <translation id="5271016907025319479">‏VPN پیکربندی نشده است.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (بلوتوث)</translation>
+<translation id="3967919079500697218">سرپرست شما قابلیت عکس گرفتن از صفحه‌نمایش را غیرفعال کرده است.</translation>
 <translation id="372094107052732682">‏برای خروج Ctrl+Shift+Q را دو بار فشار دهید.</translation>
 <translation id="6803622936009808957">نمایش یک تصویر واحد در چند صفحه نمایش ممکن نیست زیرا وضوح تصویر پشتیبانی شده‌ای وجود ندارد. بجای آن حالت نمایش دسک‌تاپ چند بخشی استفاده می‌شود.</translation>
 <translation id="1480041086352807611">حالت نمایش</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>٪ باقیمانده</translation>
 <translation id="9089416786594320554">روش‌های ورودی</translation>
 <translation id="6247708409970142803">%<ph name="PERCENTAGE"/></translation>
+<translation id="2670531586141364277">فعال‌سازی «<ph name="NAME"/>» به اتصال شبکه نیاز دارد.</translation>
+<translation id="3963445509666917109">بلندگو (داخلی)</translation>
 <translation id="2825619548187458965">قفسه</translation>
 <translation id="2614835198358683673">‏وقتی Chromebook روشن است ممکن است شارژ نشود. از شارژر مخصوص دستگاه استفاده کنید.</translation>
 <translation id="1895658205118569222">بسته شدن</translation>
@@ -96,13 +103,13 @@
 <translation id="7874779702599364982">جستجو برای شبکه‌های تلفن همراه ...</translation>
 <translation id="583281660410589416">ناشناخته</translation>
 <translation id="1383876407941801731">جستجو</translation>
-<translation id="7468789844759750875">از پورتال فعال‌سازی <ph name="NAME"/> برای خرید داده‌های بیشتر بازدید کنید.</translation>
 <translation id="3901991538546252627">در حال اتصال به <ph name="NAME"/></translation>
 <translation id="2204305834655267233">اطلاعات شبکه</translation>
 <translation id="1621499497873603021">زمان باقیمانده تا خالی‌شدن شارژ باتری، <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">خروج از مهمان</translation>
 <translation id="8308637677604853869">منوی قبلی</translation>
 <translation id="4666297444214622512">ورود به حساب دیگر ممکن نیست.</translation>
+<translation id="3625258641415618104">عکس از صفحه‌نمایش غیرفعال است</translation>
 <translation id="1346748346194534595">راست</translation>
 <translation id="1773212559869067373">گواهینامه تأیید اعتبار به صورت محلی رد شد</translation>
 <translation id="8528322925433439945">تلفن همراه...</translation>
@@ -131,6 +138,7 @@
 <translation id="1512064327686280138">نقص در فعالسازی</translation>
 <translation id="5097002363526479830">اتصال ناموفق به شبکه &quot;<ph name="NAME"/>&quot;:<ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">‏Wi-Fi خاموش است.</translation>
+<translation id="2966449113954629791">ممکن است کلیه میزان مجاز داده‌‌های دستگاه همراهتان را مصرف کرده باشید. برای خرید داده بیشتر از پورتال فعال‌سازی <ph name="NAME"/> بازدید کنید.</translation>
 <translation id="8132793192354020517">متصل به <ph name="NAME"/></translation>
 <translation id="7052914147756339792">تنظیم کاغذدیواری...</translation>
 <translation id="8678698760965522072">حالت آنلاین</translation>
@@ -147,22 +155,26 @@
 <translation id="3157931365184549694">بازیابی</translation>
 <translation id="4274292172790327596">خطای ناشناس</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">هدفون</translation>
 <translation id="225680501294068881">درحال جستجو برای دستگاه‌ها...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>، <ph name="DATE"/></translation>
+<translation id="737451040872859086">میکروفن (داخلی)</translation>
 <translation id="4448844063988177157">‏در حال جستجوی شبکه‌های Wi-Fi...</translation>
 <translation id="8401662262483418323">اتصال به «<ph name="NAME"/>» ناموفق بود: <ph name="DETAILS"/>
 پیام سرور: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">یک خطا روی داد</translation>
 <translation id="7229570126336867161">‏EVDO مورد نیاز است</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> یک جلسه عمومی مدیریت‌شده توسط <ph name="DOMAIN"/> است</translation>
+<translation id="9044646465488564462">اتصال به شبکه انجام نشد: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">خروج از جلسه</translation>
 <translation id="8454013096329229812">‏Wi-Fi روشن است.</translation>
 <translation id="4872237917498892622">‏Alt+جستجو یا Shift</translation>
 <translation id="9201131092683066720">باتری <ph name="PERCENTAGE"/> درصد پر است.</translation>
 <translation id="2983818520079887040">تنظیمات...</translation>
+<translation id="3871838685472846647">شبکه تلفن همراه فعال شد</translation>
 <translation id="1195412055398077112">بزرگتر از صفحه</translation>
-<translation id="1717216362413677834">حالت جایگاه اتصال</translation>
 <translation id="112308213915226829">پنهان کردن خودکار قفسه</translation>
+<translation id="7573962313813535744">حالت اتصال به پایه</translation>
 <translation id="8927026611342028580">درخواست اتصال</translation>
 <translation id="8300849813060516376">‏OTASP انجام نشد</translation>
 <translation id="2792498699870441125">‏Alt+جستجو</translation>
@@ -174,17 +186,16 @@
 <translation id="6785414152754474415">باتری <ph name="PERCENTAGE"/> درصد پر و درحال شارژ است.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: در حال فعال‌سازی…</translation>
 <translation id="4895488851634969361">باتری پر است.</translation>
-<translation id="1391854757121130358">ممکن است حجم مجاز داده تلفن همراه خود را مصرف کرده باشید.</translation>
 <translation id="5947494881799873997">برگرداندن</translation>
 <translation id="7593891976182323525">‏جستجو یا Shift</translation>
 <translation id="7649070708921625228">راهنما</translation>
+<translation id="747833637904845037">‏مادامیکه Chromebook به یک نمایشگر خارجی متصل است روشن باقی می‌ماند، حتی اگر بسته باشد.</translation>
 <translation id="3050422059534974565">‏CAPS LOCK روشن است.
 جستجو یا Shift را برای لغو فشار دهید.</translation>
 <translation id="397105322502079400">در حال محاسبه…</translation>
 <translation id="158849752021629804">شبکه خانگی مورد نیاز است</translation>
 <translation id="6857811139397017780">فعال سازی <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">‏بررسی DHCP انجام نشد</translation>
-<translation id="5812035014844949013">خروجی</translation>
 <translation id="6692173217867674490">کلمه عبور نادرست</translation>
 <translation id="6165508094623778733">بیشتر بیاموزید</translation>
 <translation id="9046895021617826162">اتصال برقرار نشد</translation>
@@ -200,12 +211,14 @@
 <translation id="8940956008527784070">باتری ضعیف است (<ph name="PERCENTAGE"/>٪)</translation>
 <translation id="4918086044614829423">پذیرش</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> باقیمانده است</translation>
+<translation id="3009178788565917040">خروجی</translation>
 <translation id="520760366042891468">‏اشتراک‌گذاری کنترل صفحه نمایش شما از طریق Hangouts.</translation>
 <translation id="8000066093800657092">بدون شبکه</translation>
 <translation id="4015692727874266537">ورود به سیستم با حسابی دیگر...</translation>
 <translation id="5941711191222866238">کوچک کردن</translation>
 <translation id="6911468394164995108">پیوستن به شبکه دیگر…</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">تبریک می‌گوییم! خدمات داده «<ph name="NAME"/>» شما فعال شده است و آماده استفاده است.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>ساعت <ph name="MINUTE"/>دقیقه مانده تا باتری شارژ شود</translation>
 <translation id="6359806961507272919">پیامک از <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">شرکت مخابراتی</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 9c4981d..cd2a099 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Sinulla voi olla enintään kolme tiliä useaan tiliin kirjautuessasi.</translation>
 <translation id="370649949373421643">Ota wifi käyttöön</translation>
 <translation id="3626281679859535460">Kirkkaus</translation>
+<translation id="3621202678540785336">Äänitulo:</translation>
 <translation id="595202126637698455">Tehokkuuden seuranta on käytössä</translation>
 <translation id="8054466585765276473">Lasketaan akun kesto.</translation>
 <translation id="7982789257301363584">Verkko</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Tila-alue</translation>
 <translation id="1661867754829461514">PIN-koodi puuttuu</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Yhdistetään…</translation>
+<translation id="40400351611212369">Verkon aktivointivirhe</translation>
 <translation id="4237016987259239829">Verkon yhteysvirhe</translation>
 <translation id="2946640296642327832">Ota Bluetooth käyttöön</translation>
 <translation id="6459472438155181876">Ruutua laajennetaan: <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Näytönhallinnan jakaminen henkilön <ph name="HELPER_NAME"/> kanssa Hangout-keskustelujen kautta.</translation>
 <translation id="7864539943188674973">Poista Bluetooth käytöstä</translation>
 <translation id="939252827960237676">Kuvakaappauksen tallentaminen epäonnistui</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Päivitä käynnistämällä uudelleen</translation>
 <translation id="2268813581635650749">Kirjaa kaikki ulos</translation>
 <translation id="735745346212279324">VPN-yhteys katkaistu</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Muokkaa kieliä ja syötettä...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Hyllyn sijainti</translation>
-<translation id="2903907270192926896">ÄÄNITULO</translation>
 <translation id="8676770494376880701">Pienitehoinen laturi kytketty</translation>
 <translation id="7170041865419449892">Katvealueella</translation>
 <translation id="4804818685124855865">Katkaise yhteys</translation>
@@ -77,18 +79,23 @@
 Vaihda syöttötapaa painamalla Shift + Alt.</translation>
 <translation id="2562916301614567480">Yksityinen verkko</translation>
 <translation id="6549021752953852991">Matkapuhelinverkkoja ei ole käytettävissä</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Arvoisa näyttö, suhteemme ei toimi. (Näyttöä ei tueta)</translation>
 <translation id="6426039856985689743">Poista mobiilitiedonsiirto käytöstä</translation>
 <translation id="3087734570205094154">Alaosa</translation>
 <translation id="3742055079367172538">Kuvakaappaus otettu</translation>
 <translation id="8878886163241303700">Laajennettu näyttö</translation>
 <translation id="5271016907025319479">VPN-verkon asetuksia ei ole määritetty.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Järjestelmänvalvoja on poistanut käytöstä mahdollisuuden ottaa kuvakaappauksia.</translation>
 <translation id="372094107052732682">Lopeta painamalla kahdesti Ctrl+Shift+Q.</translation>
 <translation id="6803622936009808957">Näyttöjen peilaaminen ei onnistunut, sillä tuettua resoluutiota ei löytynyt. Sen sijaan valittiin työpöydän laajennus.</translation>
 <translation id="1480041086352807611">Esittelytila</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % jäljellä</translation>
 <translation id="9089416786594320554">Syöttötavat</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Verkon <ph name="NAME"/> aktivointi vaatii verkkoyhteyden.</translation>
+<translation id="3963445509666917109">Kaiutin (sisäinen)</translation>
 <translation id="2825619548187458965">Hylly</translation>
 <translation id="2614835198358683673">Chromebookisi ei välttämättä lataudu sen ollessa päällä. Harkitse virallisen laturin käyttämistä.</translation>
 <translation id="1895658205118569222">Sulkeminen</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Haetaan matkapuhelinverkkoja…</translation>
 <translation id="583281660410589416">Tuntematon</translation>
 <translation id="1383876407941801731">Haku</translation>
-<translation id="7468789844759750875">Osta lisää tiedonsiirtoa palvelussa <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Yhdistetään verkkoon <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Verkon tiedot</translation>
 <translation id="1621499497873603021">Akku on tyhjä <ph name="TIME_LEFT"/> kuluttua</translation>
 <translation id="5980301590375426705">Sulje vierastila</translation>
 <translation id="8308637677604853869">Edellinen valikko</translation>
 <translation id="4666297444214622512">Toiseen tiliin kirjautuminen ei onnistunut.</translation>
+<translation id="3625258641415618104">Kuvakaappaukset poissa käytöstä</translation>
 <translation id="1346748346194534595">Oikealle</translation>
 <translation id="1773212559869067373">Todennusvarmenne on hylätty paikallisesti</translation>
 <translation id="8528322925433439945">Mobiiliverkot...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktivointivirhe</translation>
 <translation id="5097002363526479830">Yhteyden muodostaminen verkkoon &quot;<ph name="NAME"/>&quot; epäonnistui: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wifi ei ole käytössä.</translation>
+<translation id="2966449113954629791">Olet saattanut käyttää tiedonsiirtosaldosi loppuun. Käy <ph name="NAME"/>-aktivointiportaalissa ostamassa lisää saldoa.</translation>
 <translation id="8132793192354020517">Yhteys muodostettu verkkoon <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Aseta taustakuva...</translation>
 <translation id="8678698760965522072">Online-tila</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Palauta</translation>
 <translation id="4274292172790327596">Tunnistamaton virhe</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>.<ph name="MINUTES"/>.<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Kuulokkeet</translation>
 <translation id="225680501294068881">Etsitään laitteita...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofoni (sisäinen)</translation>
 <translation id="4448844063988177157">Haetaan wifi-verkkoja...</translation>
 <translation id="8401662262483418323">Yhteyden muodostaminen kohteeseen <ph name="NAME"/> ei onnistu: <ph name="DETAILS"/>
 Palvelimen viesti: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Tapahtui virhe</translation>
 <translation id="7229570126336867161">EVDO tarvitaan</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> on julkinen käyttökerta, jota hallinnoi <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Yhteyden muodostaminen verkkoon epäonnistui: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Sulje käyttökerta</translation>
 <translation id="8454013096329229812">Wifi on käytössä.</translation>
 <translation id="4872237917498892622">Alt + haku tai Shift</translation>
 <translation id="9201131092683066720">Akussa on virtaa <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Asetukset...</translation>
+<translation id="3871838685472846647">Matkapuhelin aktivoitu</translation>
 <translation id="1195412055398077112">kuvasta rajataan pois osa</translation>
-<translation id="1717216362413677834">Telakointitila</translation>
 <translation id="112308213915226829">Piilota hylly automaattisesti</translation>
+<translation id="7573962313813535744">Telakoitu tila</translation>
 <translation id="8927026611342028580">Yhdistä pyydetyt</translation>
 <translation id="8300849813060516376">OTASP epäonnistui</translation>
 <translation id="2792498699870441125">Alt + haku</translation>
@@ -176,16 +188,15 @@
 <translation id="6785414152754474415">Akussa on virtaa <ph name="PERCENTAGE"/> %, ja laite on kytketty laturiin.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktivoidaan…</translation>
 <translation id="4895488851634969361">Akku on täynnä.</translation>
-<translation id="1391854757121130358">Olet ehkä käyttänyt mobiilitiedonsiirron kiintiösi.</translation>
 <translation id="5947494881799873997">Palauta</translation>
 <translation id="7593891976182323525">Haku tai Shift</translation>
 <translation id="7649070708921625228">Ohje</translation>
+<translation id="747833637904845037">Chromebookisi pysyy yhdistettynä ulkoiseen näyttöön, vaikka sen kansi olisi suljettu.</translation>
 <translation id="3050422059534974565">CAPS LOCK on päällä. Peruuta painamalla haku- tai Shift-näppäintä.</translation>
 <translation id="397105322502079400">Lasketaan...</translation>
 <translation id="158849752021629804">Kotiverkko tarvitaan</translation>
 <translation id="6857811139397017780">Aktivoi <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP-haku epäonnistui</translation>
-<translation id="5812035014844949013">ÄÄNENTOISTO</translation>
 <translation id="6692173217867674490">Väärä tunnuslause</translation>
 <translation id="6165508094623778733">Lisätietoja</translation>
 <translation id="9046895021617826162">Yhdistäminen epäonnistui</translation>
@@ -200,12 +211,14 @@
 <translation id="8940956008527784070">Akku vähissä (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Hyväksy</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>.<ph name="MINUTE"/> jäljellä</translation>
+<translation id="3009178788565917040">Äänentoisto</translation>
 <translation id="520760366042891468">Näytön hallinnan jakaminen Hangout-keskustelujen kautta.</translation>
 <translation id="8000066093800657092">Ei verkkoa</translation>
 <translation id="4015692727874266537">Kirjaudu sisään toiseen tiliin…</translation>
 <translation id="5941711191222866238">Pienennä</translation>
 <translation id="6911468394164995108">Liity muuhun verkkoon...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Onnittelut! Tiedonsiirtopalvelusi <ph name="NAME"/> on aktivoitu ja käyttövalmis.</translation>
 <translation id="412065659894267608">Akku täynnä <ph name="HOUR"/> t <ph name="MINUTE"/> min kuluttua</translation>
 <translation id="6359806961507272919">Tekstiviesti lähettäjältä <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operaattori</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index 3685689..46ff3bf 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Maaari ka lang magkaroon ng hanggang sa tatlong account sa multiple na pag-sign-in.</translation>
 <translation id="370649949373421643">Paganahin ang Wi-Fi</translation>
 <translation id="3626281679859535460">Tingkad</translation>
+<translation id="3621202678540785336">Input</translation>
 <translation id="595202126637698455">Naka-enable ang pagte-trace sa pagganap</translation>
 <translation id="8054466585765276473">Kinakalkula ang oras ng baterya.</translation>
 <translation id="7982789257301363584">Network</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Tray ng katayuan</translation>
 <translation id="1661867754829461514">Nawawala ang PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Kumokonekta...</translation>
+<translation id="40400351611212369">Error sa Pag-activate ng Network</translation>
 <translation id="4237016987259239829">Error sa Koneksyon ng Network</translation>
 <translation id="2946640296642327832">Paganahin ang Bluetooth</translation>
 <translation id="6459472438155181876">Pinapalawak ang screen sa <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Ibinahagi ang kontrol sa iyong screen kay <ph name="HELPER_NAME"/> sa pamamagitan ng Hangouts.</translation>
 <translation id="7864539943188674973">Huwag Paganahin ang Bluetooth</translation>
 <translation id="939252827960237676">Nabigong i-save ang screenshot</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">I-restart upang mag-update</translation>
 <translation id="2268813581635650749">I-sign out ang lahat</translation>
 <translation id="735745346212279324">Nakadiskonekta ang VPN</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">I-customize ang mga wika at input...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posisyon ng shelf</translation>
-<translation id="2903907270192926896">INPUT</translation>
 <translation id="8676770494376880701">Nakakabit ang low-power charger</translation>
 <translation id="7170041865419449892">Wala sa sakop</translation>
 <translation id="4804818685124855865">I-disconnect</translation>
@@ -77,18 +79,23 @@
 Pindutin ang Shift + Alt upang magpalit.</translation>
 <translation id="2562916301614567480">Pribadong Network</translation>
 <translation id="6549021752953852991">Walang available na cellular na network</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (Hindi sinusuportahan ang monitor na iyan)</translation>
 <translation id="6426039856985689743">Huwag paganahin ang mobile data</translation>
 <translation id="3087734570205094154">Sa ilalim</translation>
 <translation id="3742055079367172538">Nakakuha na ng screenshot</translation>
 <translation id="8878886163241303700">Pinapalawak ang screen</translation>
 <translation id="5271016907025319479">Hindi naka-configure ang VPN.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Na-disable ng iyong administrator ang kakayahang kumuha ng mga screenshot.</translation>
 <translation id="372094107052732682">Pindutin ang Ctrl+Shift+Q nang dalawang beses upang lumabas.</translation>
 <translation id="6803622936009808957">Hindi ma-mirror ang mga display dahil walang mga sinusuportahang resolusyon na nakita. Pumasok na lang sa pinalawak na desktop.</translation>
 <translation id="1480041086352807611">Mode ng demo</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% ang natitira</translation>
 <translation id="9089416786594320554">Mga pamamaraan ng pag-input</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Nangangailangan ng koneksyon sa network ang pag-activate ng '<ph name="NAME"/>.'</translation>
+<translation id="3963445509666917109">Speaker (Internal)</translation>
 <translation id="2825619548187458965">Shelf</translation>
 <translation id="2614835198358683673">Maaaring hindi mag-charge ang iyong Chromebook habang naka-on ito. Pag-isipang gamitin ang opisyal na charger.</translation>
 <translation id="1895658205118569222">Shutdown</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Naghahanap ng mga cellular network...</translation>
 <translation id="583281660410589416">Hindi kilala</translation>
 <translation id="1383876407941801731">Paghahanap</translation>
-<translation id="7468789844759750875">Bisitahin ang portal sa pag-activate ng <ph name="NAME"/> upang bumili ng higit pang data.</translation>
 <translation id="3901991538546252627">Kumokonekta sa <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Impormasyon ng Network</translation>
 <translation id="1621499497873603021">Natitirang oras bago maubos ang baterya, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Lumabas sa session ng bisita</translation>
 <translation id="8308637677604853869">Nakaraang menu</translation>
 <translation id="4666297444214622512">Hindi makaka-sign in sa isa pang account.</translation>
+<translation id="3625258641415618104">Naka-disable ang mga screenshot</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1773212559869067373">Lokal na tinanggihan ang certificate ng pagpapatunay</translation>
 <translation id="8528322925433439945">Mobile ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Pagkabigo ng pag-activate</translation>
 <translation id="5097002363526479830">Nabigong kumonekta sa network na '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Naka-off ang Wi-Fi.</translation>
+<translation id="2966449113954629791">Maaaring naubos mo na ang iyong allowance sa mobile data. Bisitahin ang activation portal ng <ph name="NAME"/> upang bumili ng higit pang data.</translation>
 <translation id="8132793192354020517">Kumukonekta sa <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Magtakda ng wallpaper...</translation>
 <translation id="8678698760965522072">Katayuan online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Ipanumbalik</translation>
 <translation id="4274292172790327596">Di-kilalang error</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Headphone</translation>
 <translation id="225680501294068881">Nag-i-scan para sa mga device...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microphone (Panloob)</translation>
 <translation id="4448844063988177157">Naghahanap ng mga network na Wi-Fi...</translation>
 <translation id="8401662262483418323">Nabigong kumonekta sa  '<ph name="NAME"/>': <ph name="DETAILS"/>
 Mensahe mula sa server: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">May isang naganap na error</translation>
 <translation id="7229570126336867161">Kailangan ng EVDO</translation>
 <translation id="2999742336789313416">Ang <ph name="DISPLAY_NAME"/> ay isang pampublikong session na pinamamahalaan ng <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Nabigong kumonekta sa network: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Lumabas sa session</translation>
 <translation id="8454013096329229812">Naka-on ang Wi-Fi.</translation>
 <translation id="4872237917498892622">Alt+Search o Shift</translation>
 <translation id="9201131092683066720">Ang baterya ay <ph name="PERCENTAGE"/>% na puno.</translation>
 <translation id="2983818520079887040">Mga Setting...</translation>
+<translation id="3871838685472846647">Na-activate ang Cellular</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Dock mode</translation>
 <translation id="112308213915226829">Awtomatikong itago ang shelf</translation>
+<translation id="7573962313813535744">Mode na naka-dock</translation>
 <translation id="8927026611342028580">Hiniling ang Koneksyon</translation>
 <translation id="8300849813060516376">Nabigo ang OTASP</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Ang baterya ay <ph name="PERCENTAGE"/>% na puno at nagcha-charge.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Ina-activate...</translation>
 <translation id="4895488851634969361">Puno na ang baterya.</translation>
-<translation id="1391854757121130358">Maaaring naubos mo na ang mobile data na nakalaan sa iyo.</translation>
 <translation id="5947494881799873997">I-revert</translation>
 <translation id="7593891976182323525">Search or Shift</translation>
 <translation id="7649070708921625228">Tulong</translation>
+<translation id="747833637904845037">Mananatiling naka-on ang iyong Chromebook habang nakakonekta sa isang external na display, kahit na nakasara ang takip.</translation>
 <translation id="3050422059534974565">Naka-on ang CAPS LOCK.
 Pindutin ang Search o Shift upang kanselahin.</translation>
 <translation id="397105322502079400">Kinakalkula...</translation>
 <translation id="158849752021629804">Kailangan ng home network</translation>
 <translation id="6857811139397017780">I-activate <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Nabigo ang paghanap ng DHCP</translation>
-<translation id="5812035014844949013">OUTPUT</translation>
 <translation id="6692173217867674490">Mahinang passphrase</translation>
 <translation id="6165508094623778733">Matuto nang higit pa</translation>
 <translation id="9046895021617826162">Nabigo ang pagkonekta</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Mahina na ang baterya (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Tanggapin</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> ang natitira</translation>
+<translation id="3009178788565917040">Output</translation>
 <translation id="520760366042891468">Ibinahagi ang kontrol sa iyong screen sa pamamagitan ng Hangouts.</translation>
 <translation id="8000066093800657092">Walang network</translation>
 <translation id="4015692727874266537">Mag-sign sa isa pang account...</translation>
 <translation id="5941711191222866238">Minimize</translation>
 <translation id="6911468394164995108">Sumali sa iba...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Binabati kita! Na-activate ang iyong serbisyo ng data ng '<ph name="NAME"/>' at handa nang gamitin.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>o <ph name="MINUTE"/>m hanggang mapuno</translation>
 <translation id="6359806961507272919">SMS mula kay <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Carrier</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index 812cc0f..8076812 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Vous ne pouvez vous connecter qu'à trois comptes au maximum dans le cadre de la connexion multicompte.</translation>
 <translation id="370649949373421643">Activer le Wi-Fi</translation>
 <translation id="3626281679859535460">Luminosité</translation>
+<translation id="3621202678540785336">Entrée</translation>
 <translation id="595202126637698455">Suivi des performances activé</translation>
 <translation id="8054466585765276473">Calcul de l'autonomie de la batterie en cours…</translation>
 <translation id="7982789257301363584">Réseau</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Barre d'état</translation>
 <translation id="1661867754829461514">Code secret manquant</translation>
 <translation id="4508225577814909926"><ph name="NAME"/> : Connexion en cours…</translation>
+<translation id="40400351611212369">Erreur d'activation réseau</translation>
 <translation id="4237016987259239829">Erreur de connexion réseau</translation>
 <translation id="2946640296642327832">Activer le Bluetooth</translation>
 <translation id="6459472438155181876">Extension de l'écran pour <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Partage du contrôle de votre écran avec <ph name="HELPER_NAME"/> via Hangouts</translation>
 <translation id="7864539943188674973">Désactiver le Bluetooth</translation>
 <translation id="939252827960237676">Échec d'enregistrement de la capture d'écran.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Redémarrez pour mettre à jour</translation>
 <translation id="2268813581635650749">Déconnecter tous les utilisateurs</translation>
 <translation id="735745346212279324">VPN déconnecté</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personnaliser les langues et la saisie...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Position de l'étagère</translation>
-<translation id="2903907270192926896">ENTRÉE</translation>
 <translation id="8676770494376880701">Chargeur de faible puissance connecté</translation>
 <translation id="7170041865419449892">Hors de portée</translation>
 <translation id="4804818685124855865">Se déconnecter</translation>
@@ -77,18 +79,23 @@
 Appuyez sur Maj + Alt pour en utiliser un autre.</translation>
 <translation id="2562916301614567480">Réseau privé</translation>
 <translation id="6549021752953852991">Aucun réseau mobile disponible</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Moniteur non compatible.</translation>
 <translation id="6426039856985689743">Désactiver les données mobiles</translation>
 <translation id="3087734570205094154">Bas</translation>
 <translation id="3742055079367172538">Capture d'écran réalisée</translation>
 <translation id="8878886163241303700">Extension de l'écran</translation>
 <translation id="5271016907025319479">VPN non configuré</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Votre administrateur a désactivé la fonctionnalité de capture d'écran.</translation>
 <translation id="372094107052732682">Pour quitter, appuyez deux fois sur Ctrl+Maj+Q.</translation>
 <translation id="6803622936009808957">Impossible de dupliquer les écrans, car aucune résolution compatible n'a été détectée. Le bureau étendu a été activé à la place.</translation>
 <translation id="1480041086352807611">Mode démonstration</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % restant(s)</translation>
 <translation id="9089416786594320554">Modes de saisie</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">L'activation de &quot;<ph name="NAME"/>&quot; nécessite une connexion réseau.</translation>
+<translation id="3963445509666917109">Haut-parleur (interne)</translation>
 <translation id="2825619548187458965">Étagère</translation>
 <translation id="2614835198358683673">Votre Chromebook risque de ne pas charger lorsqu'il est allumé. Utilisez plutôt le chargeur officiel.</translation>
 <translation id="1895658205118569222">Arrêt.</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Recherche de réseaux cellulaires en cours…</translation>
 <translation id="583281660410589416">Inconnu</translation>
 <translation id="1383876407941801731">Recherche</translation>
-<translation id="7468789844759750875">Pour acheter plus de données, consultez le portail d'activation <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Connexion à <ph name="NAME"/> en cours…</translation>
 <translation id="2204305834655267233">Informations réseau</translation>
 <translation id="1621499497873603021">Temps restant avant que la batterie ne soit vide : <ph name="TIME_LEFT"/>.</translation>
 <translation id="5980301590375426705">Fermer la session Invité</translation>
 <translation id="8308637677604853869">Menu précédent</translation>
 <translation id="4666297444214622512">Impossible de se connecter à un autre compte.</translation>
+<translation id="3625258641415618104">Captures d'écran désactivées</translation>
 <translation id="1346748346194534595">Vers la droite</translation>
 <translation id="1773212559869067373">Certificat d'authentification rejeté en local.</translation>
 <translation id="8528322925433439945">Mobile…</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Échec de l'activation</translation>
 <translation id="5097002363526479830">Échec de la connexion au réseau &quot;<ph name="NAME"/>&quot; : <ph name="DETAILS"/>.</translation>
 <translation id="1850504506766569011">Le Wi-Fi est désactivé.</translation>
+<translation id="2966449113954629791">Il semble que vous ayez utilisé l'intégralité de votre quota de données mobiles. Accédez au portail d'activation <ph name="NAME"/> pour acheter des données supplémentaires.</translation>
 <translation id="8132793192354020517">Connecté à <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Définir un fond d'écran…</translation>
 <translation id="8678698760965522072">En ligne</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaurer</translation>
 <translation id="4274292172790327596">Erreur non reconnue</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Casque</translation>
 <translation id="225680501294068881">Recherche d'appareils en cours…</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/> <ph name="DATE"/></translation>
+<translation id="737451040872859086">Micro (interne)</translation>
 <translation id="4448844063988177157">Recherche de réseaux Wi-Fi...</translation>
 <translation id="8401662262483418323">Échec de la connexion à &quot;<ph name="NAME"/>&quot; : <ph name="DETAILS"/>.
 Message du serveur : <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Une erreur s'est produite.</translation>
 <translation id="7229570126336867161">Technologie EvDo requise</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> est une session publique gérée par <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Échec de la connexion au réseau : <ph name="DETAILS"/>.</translation>
 <translation id="7029814467594812963">Quitter la session</translation>
 <translation id="8454013096329229812">Le Wi-Fi est activé.</translation>
 <translation id="4872237917498892622">Alt + Recherche ou Maj</translation>
 <translation id="9201131092683066720">La batterie est chargée à <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Paramètres...</translation>
+<translation id="3871838685472846647">Cellulaire activé</translation>
 <translation id="1195412055398077112">Surbalayage</translation>
-<translation id="1717216362413677834">Mode Ancrage</translation>
 <translation id="112308213915226829">Masquer automatiquement l'étagère</translation>
+<translation id="7573962313813535744">Mode Dock</translation>
 <translation id="8927026611342028580">Connexion demandée</translation>
 <translation id="8300849813060516376">Échec de l'opération OTASP</translation>
 <translation id="2792498699870441125">Alt + Recherche</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">La batterie est chargée à <ph name="PERCENTAGE"/> % et en charge.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/> : activation en cours…</translation>
 <translation id="4895488851634969361">La batterie est pleine.</translation>
-<translation id="1391854757121130358">Vous avez peut-être épuisé votre forfait de données mobiles.</translation>
 <translation id="5947494881799873997">Rétablir</translation>
 <translation id="7593891976182323525">Recherche ou Maj</translation>
 <translation id="7649070708921625228">Aide</translation>
+<translation id="747833637904845037">Votre Chromebook reste allumé tant qu'il est connecté à un écran externe, même avec le capot fermé.</translation>
 <translation id="3050422059534974565">Le VERROUILLAGE DES MAJUSCULES est activé.
 Appuyez sur Search ou Maj pour le désactiver.</translation>
 <translation id="397105322502079400">Calcul en cours…</translation>
 <translation id="158849752021629804">Réseau domestique requis</translation>
 <translation id="6857811139397017780">Activer <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Échec de la vérification DHCP</translation>
-<translation id="5812035014844949013">SORTIE</translation>
 <translation id="6692173217867674490">Mot de passe multiterme erroné</translation>
 <translation id="6165508094623778733">En savoir plus</translation>
 <translation id="9046895021617826162">Échec de la connexion</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Batterie faible (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Accepter</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> d'autonomie</translation>
+<translation id="3009178788565917040">Sortie</translation>
 <translation id="520760366042891468">Partage du contrôle de votre écran via Hangouts</translation>
 <translation id="8000066093800657092">Aucun réseau détecté</translation>
 <translation id="4015692727874266537">Connecter un autre compte…</translation>
 <translation id="5941711191222866238">Réduire</translation>
 <translation id="6911468394164995108">Autre réseau…</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/> : <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Félicitations ! Votre service de données &quot;<ph name="NAME"/>&quot; a été activé et est prêt à être utilisé.</translation>
 <translation id="412065659894267608">Encore <ph name="HOUR"/> h <ph name="MINUTE"/> min de chargement</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Opérateur</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index f83fe87..1a77de6 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">તમે બહુવિધ સાઇન-ઇનમાં માત્ર ત્રણ એકાઉન્ટ્સ સુધી રાખી શકો છો.</translation>
 <translation id="370649949373421643">Wi-Fi સક્ષમ કરો</translation>
 <translation id="3626281679859535460">તેજ</translation>
+<translation id="3621202678540785336">ઇનપુટ</translation>
 <translation id="595202126637698455">ભજવણી ટ્રેસિંગ સક્ષમ</translation>
 <translation id="8054466585765276473">બેટરી સમયની ગણના કરે છે.</translation>
 <translation id="7982789257301363584">નેટવર્ક</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">સ્થિતિ ટ્રે</translation>
 <translation id="1661867754829461514">PIN ખૂટે છે</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: કનેક્ટ કરી રહ્યું છે...</translation>
+<translation id="40400351611212369">નેટવર્ક સક્રિયકરણ ભૂલ</translation>
 <translation id="4237016987259239829">નેટવર્ક કનેક્શન ભૂલ</translation>
 <translation id="2946640296642327832">Bluetooth સક્ષમ કરો</translation>
 <translation id="6459472438155181876">સ્ક્રીનને <ph name="DISPLAY_NAME"/> પર વિસ્તૃત કરી રહ્યાં છે</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangouts દ્વારા <ph name="HELPER_NAME"/> સાથે તમારી સ્ક્રીનનું નિયંત્રણ શેર કરવું.</translation>
 <translation id="7864539943188674973">Bluetooth અક્ષમ કરો</translation>
 <translation id="939252827960237676">સ્ક્રીનશૉટ સાચવવામાં નિષ્ફળ રહ્યું</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">અપડેટ કરવા માટે પુનઃપ્રારંભ કરો</translation>
 <translation id="2268813581635650749">બધામાંથી સાઇન આઉટ કરો</translation>
 <translation id="735745346212279324">VPN ડિસ્કનેક્ટ કર્યું છે</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">ભાષાઓ અને ઇનપુટને કસ્ટમાઇઝ કરો...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">શેલ્ફ સ્થિતી</translation>
-<translation id="2903907270192926896">ઇનપુટ</translation>
 <translation id="8676770494376880701">નિમ્ન-પાવર ચાર્જર કનેક્ટ કર્યું છે</translation>
 <translation id="7170041865419449892">પહોંચ બહાર</translation>
 <translation id="4804818685124855865">ડિસ્કનેક્ટ કરો</translation>
@@ -77,18 +79,23 @@
 સ્વિચ કરવા માટે Shift + Alt દબાવો.</translation>
 <translation id="2562916301614567480">ખાનગી નેટવર્ક</translation>
 <translation id="6549021752953852991">કોઇ સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">પ્રિય મોનિટર, તે અમારી વચ્ચે કાર્ય કરી રહ્યું નથી. (તે મોનિટર સમર્થિત નથી)</translation>
 <translation id="6426039856985689743">મોબાઇલ ડેટાને અક્ષમ કરો</translation>
 <translation id="3087734570205094154">તળિયું</translation>
 <translation id="3742055079367172538">સ્ક્રીનશૉટ લેવાયો</translation>
 <translation id="8878886163241303700">સ્ક્રીનને વિસ્તૃત કરી રહ્યું છે</translation>
 <translation id="5271016907025319479">VPN ગોઠવેલું નથી.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">સ્ક્રીનશૉટ્સ લેવાની ક્ષમતા તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરવામાં આવી છે.</translation>
 <translation id="372094107052732682">છોડવા માટે બે વાર Ctrl+Shift+Q દબાવો.</translation>
 <translation id="6803622936009808957">કોઈ સમર્થિત રિઝોલ્યૂશન મળ્યું ન હોવાથી, પ્રદર્શનોને પ્રતિબિંબિત કરી શકાયા નથી. તેને બદલે વિસ્તૃત ડેસ્કટૉપ દાખલ કર્યું.</translation>
 <translation id="1480041086352807611">ડેમો મોડ</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% બાકી</translation>
 <translation id="9089416786594320554">ઇનપુટ પદ્ધતિઓ</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277"><ph name="NAME"/> ના સક્રિયકરણને નેટવર્ક કનેક્શનની જરૂર છે.</translation>
+<translation id="3963445509666917109">સ્પીકર (આંતરિક)</translation>
 <translation id="2825619548187458965">શેલ્ફ</translation>
 <translation id="2614835198358683673">જ્યારે તમારી Chromebook ચાલુ હોય ત્યારે તેને ચાર્જ કરી શકાશે નહીં. અધિકૃત ચાર્જરનો ઉપયોગ કરવાનું વિચારો.</translation>
 <translation id="1895658205118569222">બંધ કરો</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">સેલ્યુલર નેટવર્ક્સ માટે શોધી રહ્યું છે...</translation>
 <translation id="583281660410589416">અજ્ઞાત</translation>
 <translation id="1383876407941801731">શોધ</translation>
-<translation id="7468789844759750875">વધુ ડેટા ખરીદવા માટે <ph name="NAME"/> સક્રિયકરણ પોર્ટલની મુલાકાત લો.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> થી કનેક્ટ કરી રહ્યું છે</translation>
 <translation id="2204305834655267233">નેટવર્ક માહિતી</translation>
 <translation id="1621499497873603021">બેટરી ખાલી થવામાં બાકી સમય, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">અતિથિથી બહાર નીકળો</translation>
 <translation id="8308637677604853869">પહેલાનું મેનૂ</translation>
 <translation id="4666297444214622512">બીજા એકાઉન્ટમાં સાઇન ઇન કરી શકતા નથી.</translation>
+<translation id="3625258641415618104">સ્ક્રીનશોટ્સ અક્ષમ કર્યા</translation>
 <translation id="1346748346194534595">જમણે</translation>
 <translation id="1773212559869067373">પ્રમાણીકરણ પ્રમાણપત્રને સ્થાનિક રૂપે નકારવામાં આવ્યું છે</translation>
 <translation id="8528322925433439945">મોબાઇલ ...</translation>
@@ -132,6 +139,7 @@
 <translation id="1512064327686280138">સક્રિયતા નિષ્ફળ</translation>
 <translation id="5097002363526479830">નેટવર્ક '<ph name="NAME"/>' થી કનેક્ટ કરવામાં નિષ્ફળ: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi બંધ છે.</translation>
+<translation id="2966449113954629791">તમે તમારા મોબાઇલ ડેટા ભથ્થાનો ઉપયોગ કર્યો હોઈ શકે છે. વધુ ડેટા ખરીદવા માટે <ph name="NAME"/> સક્રિયતા પોર્ટલની મુલાકાત લો.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> થી કનેક્ટેડ છે</translation>
 <translation id="7052914147756339792">વૉલપેપર સેટ કરો...</translation>
 <translation id="8678698760965522072">ઓનલાઇન સ્ટેટ</translation>
@@ -148,22 +156,26 @@
 <translation id="3157931365184549694">પુનઃસ્થાપિત કરો</translation>
 <translation id="4274292172790327596">અપરિચિત ભૂલ</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/> : <ph name="MINUTES"/> : <ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">હેડફોન</translation>
 <translation id="225680501294068881">ઉપકરણો માટે સ્કેન કરી રહ્યું છે...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">માઇક્રોફોન (આંતરિક)</translation>
 <translation id="4448844063988177157"> Wi-Fi નેટવર્ક્સ માટે શોધી રહ્યું છે... </translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' થી કનેક્ટ કરવામાં નિષ્ફળ થયું: <ph name="DETAILS"/>
 સર્વર સંદેશ: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">કોઈ ભૂલ આવી છે</translation>
 <translation id="7229570126336867161">EVDO ની જરૂર છે</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> એ <ph name="DOMAIN"/> દ્વારા સંચાલિત સાર્વજનિક સત્ર છે</translation>
+<translation id="9044646465488564462">નેટવર્કથી કનેક્ટ કરવામાં નિષ્ફળ: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">સત્રમાંથી બહાર નીકળો</translation>
 <translation id="8454013096329229812">Wi-Fi ચાલુ છે.</translation>
 <translation id="4872237917498892622">Alt+Search અથવા Shift</translation>
 <translation id="9201131092683066720">બેટરી <ph name="PERCENTAGE"/> % પૂર્ણ છે.</translation>
 <translation id="2983818520079887040">સેટિંગ્સ...</translation>
+<translation id="3871838685472846647">સેલ્યુલર સક્રિય કર્ય્રુ</translation>
 <translation id="1195412055398077112">ઓવરસ્કૅન</translation>
-<translation id="1717216362413677834">ડૉક મોડ</translation>
 <translation id="112308213915226829">સ્વતઃછુપાવો શેલ્ફ</translation>
+<translation id="7573962313813535744">ડોક કરેલ મોડ</translation>
 <translation id="8927026611342028580">કનેક્ટ કરવાની વિનંતી કરી છે</translation>
 <translation id="8300849813060516376">OTASP નિષ્ફળ</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -175,17 +187,16 @@
 <translation id="6785414152754474415">બેટરી <ph name="PERCENTAGE"/> % પૂર્ણ અને ચાર્જ થઈ રહી છે.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: સક્રિય કરી રહ્યું છે...</translation>
 <translation id="4895488851634969361">બેટરી સંપૂર્ણ છે.</translation>
-<translation id="1391854757121130358">તમે તમારા મોબાઇલ ડેટા ભથ્થાનો ઉપયોગ કરી લીધો હશે.</translation>
 <translation id="5947494881799873997">પાછા ફરો</translation>
 <translation id="7593891976182323525">Search અથવા Shift</translation>
 <translation id="7649070708921625228">સહાય</translation>
+<translation id="747833637904845037">ઢાંકણું બંધ હોવા પર પણ, બાહ્ય પ્રદર્શન સાથે કનેક્ટ કર્યું હોય તે વખતે તમારી Chromebook ચાલુ રહેશે.</translation>
 <translation id="3050422059534974565">CAPS LOCK ચાલુ છે. 
 રદ કરવા માટે Search અથવા Shift દબાવો.</translation>
 <translation id="397105322502079400">ગણના કરી રહ્યું છે...</translation>
 <translation id="158849752021629804">હોમ નેટવર્કની આવશ્યકતા છે</translation>
 <translation id="6857811139397017780">સક્રિય કરો <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP લુકઅપ નિષ્ફળ</translation>
-<translation id="5812035014844949013">આઉટપુટ</translation>
 <translation id="6692173217867674490">ખરાબ પાસફ્રેઝ</translation>
 <translation id="6165508094623778733">વધુ જાણો</translation>
 <translation id="9046895021617826162">કનેક્ટ કરવું નિષ્ફળ</translation>
@@ -201,12 +212,14 @@
 <translation id="8940956008527784070">બૅટરી ઓછી (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">સ્વીકારો</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> બાકી</translation>
+<translation id="3009178788565917040">આઉટપુટ</translation>
 <translation id="520760366042891468">Hangouts દ્વારા તમારી સ્ક્રીનનું નિયંત્રણ શેર કરી રહ્યું છે.</translation>
 <translation id="8000066093800657092">નેટવર્ક નથી</translation>
 <translation id="4015692727874266537">બીજા એકાઉન્ટમાં સાઇન ઇન કરો...</translation>
 <translation id="5941711191222866238">નાનું કરો</translation>
 <translation id="6911468394164995108">અન્યથી જોડાઓ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">અભિનંદન! તમારી '<ph name="NAME"/>' ડેટા સેવાને સક્રિય કરવામાં આવી છે અને આગળ વધવા માટે તૈયાર છે.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>ક <ph name="MINUTE"/>મિ સુધીમાં પૂર્ણ</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> તરફથી SMS</translation>
 <translation id="1244147615850840081">વાહક</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 7882991..515368a 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">एकाधिक साइन-इन में आप तीन तक खाते रख सकते हैं.</translation>
 <translation id="370649949373421643">Wi-Fi सक्षम करें</translation>
 <translation id="3626281679859535460">चमक</translation>
+<translation id="3621202678540785336">इनपुट</translation>
 <translation id="595202126637698455">निष्पादन ट्रेसिंग सक्षम है</translation>
 <translation id="8054466585765276473">बैटरी समय की गणना की जा रही है.</translation>
 <translation id="7982789257301363584">नेटवर्क</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">स्थिति ट्रे</translation>
 <translation id="1661867754829461514">पिन गुम</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: कनेक्ट हो रहा है...</translation>
+<translation id="40400351611212369">नेटवर्क सक्रियण त्रुटि</translation>
 <translation id="4237016987259239829">नेटवर्क कनेक्शन त्रुटि</translation>
 <translation id="2946640296642327832">Bluetooth सक्षम करें</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/> पर स्क्रीन विस्तृत कर रहा है</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangout के माध्यम से अपनी स्क्रीन <ph name="HELPER_NAME"/> के साथ साझा करना.</translation>
 <translation id="7864539943188674973">Bluetooth अक्षम करें</translation>
 <translation id="939252827960237676">स्क्रीनशॉट सहेजने में विफल</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">अपडेट करने के लिए पुनरारंभ करें</translation>
 <translation id="2268813581635650749">सभी प्रस्थान करें</translation>
 <translation id="735745346212279324">VPN डिस्कनेक्ट है</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">भाषाएं और इनपुट कस्टमाइज़ करें...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">शेल्फ़ की स्थिति</translation>
-<translation id="2903907270192926896">इनपुट</translation>
 <translation id="8676770494376880701">कम-शक्ति वाला चार्जर</translation>
 <translation id="7170041865419449892">सीमा से बाहर</translation>
 <translation id="4804818685124855865">डिस्कनेक्ट करें</translation>
@@ -62,7 +64,7 @@
 <translation id="2391579633712104609">180°</translation>
 <translation id="2688477613306174402">कॉन्फ़िगरेशन</translation>
 <translation id="1272079795634619415">रोकें</translation>
-<translation id="4957722034734105353">और जानें...</translation>
+<translation id="4957722034734105353">अधिक जानें...</translation>
 <translation id="2964193600955408481">Wi-Fi अक्षम करें</translation>
 <translation id="4279490309300973883">मिरर करना</translation>
 <translation id="7973962044839454485">किसी गलत उपयोगकर्ता नाम या पासवर्ड के कारण PPP प्रमाणीकरण विफल रहा</translation>
@@ -77,18 +79,23 @@
 स्विच करने के लिए Shift + Alt दबाएं.</translation>
 <translation id="2562916301614567480">निजी नेटवर्क</translation>
 <translation id="6549021752953852991">कोई सेल्युलर नेटवर्क उपलब्ध नहीं</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (वह मॉनीटर समर्थित नहीं है)</translation>
 <translation id="6426039856985689743">मोबाइल डेटा अक्षम करें</translation>
 <translation id="3087734570205094154">नीचे</translation>
 <translation id="3742055079367172538">स्क्रीनशॉट लिया गया</translation>
 <translation id="8878886163241303700">स्क्रीन का विस्तार करना</translation>
 <translation id="5271016907025319479">VPN कॉन्फ़िगर नहीं किया गया है.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">स्क्रीनशॉट लेने की क्षमता को आपके व्यवस्थापक द्वारा अक्षम कर दिया गया है.</translation>
 <translation id="372094107052732682">छोड़ने के लिए Ctrl+Shift+Q दो बार दबाएं.</translation>
 <translation id="6803622936009808957">प्रदर्शनों को मिरर नहीं किया जा सका क्योंकि कोई समर्थित रिज़ॉल्यूशन नहीं मिला. इसके बजाय विस्तारित डेस्कटॉप में चला गया है.</translation>
 <translation id="1480041086352807611">डेमो मोड</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% शेष है</translation>
 <translation id="9089416786594320554">इनपुट पद्धतियां</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' के सक्रियण हेतु नेटवर्क कनेक्शन आवश्यक है.</translation>
+<translation id="3963445509666917109">स्पीकर (आंतरिक)</translation>
 <translation id="2825619548187458965">शेल्फ़</translation>
 <translation id="2614835198358683673">हो सकता है चालू होने पर आपका Chromebook चार्ज न हो. आधिकारिक चार्जर उपयोग करें.</translation>
 <translation id="1895658205118569222">बंद करें</translation>
@@ -98,19 +105,19 @@
 <translation id="7874779702599364982">सेलुलर नेटवर्क खोज रहा है...</translation>
 <translation id="583281660410589416">अज्ञात</translation>
 <translation id="1383876407941801731">खोज</translation>
-<translation id="7468789844759750875">अधिक डेटा खरीदने के लिए <ph name="NAME"/> सक्रियण पोर्टल पर जाएं.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> से कनेक्‍ट हो रहा है</translation>
 <translation id="2204305834655267233">नेटवर्क जानकारी</translation>
 <translation id="1621499497873603021">बैटरी के खाली होने में शेष समय, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">अतिथि सत्र से बाहर निकलें</translation>
 <translation id="8308637677604853869">पिछला मेनू</translation>
 <translation id="4666297444214622512">अन्य खाते में प्रवेश नहीं कर सकते.</translation>
+<translation id="3625258641415618104">स्क्रीनशॉट अक्षम हैं</translation>
 <translation id="1346748346194534595">दाएं</translation>
 <translation id="1773212559869067373">प्रमाणीकरण प्रमाणपत्र को स्थानीय रूप से अस्वीकार कर दिया गया</translation>
 <translation id="8528322925433439945">मोबाइल ...</translation>
 <translation id="7049357003967926684">संबद्धता</translation>
 <translation id="8428213095426709021">सेटिंग</translation>
-<translation id="2372145515558759244">एप्लिकेशन समन्वयित किए जा रहे हैं...</translation>
+<translation id="2372145515558759244">एप्स समन्वयित किए जा रहे हैं...</translation>
 <translation id="7256405249507348194">अपरिचित त्रुटि: <ph name="DESC"/></translation>
 <translation id="7925247922861151263">AAA जांच विफल</translation>
 <translation id="8456362689280298700">पूरा होने में <ph name="HOUR"/>:<ph name="MINUTE"/> शेष</translation>
@@ -129,10 +136,11 @@
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME"/> पर मिरर कर रहा है</translation>
 <translation id="2727977024730340865">कम-शक्ति वाले चार्जर में प्लग इन करें. बैटरी चार्ज करना संभवत: विश्वसनीय नहीं होगा.</translation>
 <translation id="3784455785234192852">लॉक करें</translation>
-<translation id="2805756323405976993">एप्लिकेशन</translation>
+<translation id="2805756323405976993">एप्स</translation>
 <translation id="1512064327686280138">सक्रियण विफलता</translation>
 <translation id="5097002363526479830">नेटवर्क से कनेक्ट करने में विफल '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi बंद है.</translation>
+<translation id="2966449113954629791">हो सकता है कि आपने अपनी मोबाइल डेटा छूट का उपयोग कर लिया हो. और डेटा खरीदने के लिए <ph name="NAME"/> सक्रियण पोर्टल पर जाएं.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> से कनेक्ट है</translation>
 <translation id="7052914147756339792">वॉलपेपर सेट करें...</translation>
 <translation id="8678698760965522072">ऑनलाइन स्थिति</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">पुनर्स्थापित करें</translation>
 <translation id="4274292172790327596">अपरिचित त्रुटि</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">हेडफ़ोन</translation>
 <translation id="225680501294068881">उपकरण स्कैन किए जा रहे हैं...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">माइक्रोफ़ोन (आंतरिक)</translation>
 <translation id="4448844063988177157">Wi-Fi नेटवर्क खोज रहा है...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' से कनेक्ट करने में असफल: <ph name="DETAILS"/>
 सर्वर संदेश: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">कोई त्रुटि आई</translation>
 <translation id="7229570126336867161">EVDO की आवश्यकता है</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/>, <ph name="DOMAIN"/> के द्वारा प्रबंधित एक सार्वजनिक सत्र है</translation>
+<translation id="9044646465488564462">नेटवर्क से कनेक्ट करने में विफल रहा: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">सत्र से बाहर निकलें</translation>
 <translation id="8454013096329229812">Wi-Fi चालू है.</translation>
 <translation id="4872237917498892622">Alt+Search या Shift</translation>
 <translation id="9201131092683066720">बैटरी <ph name="PERCENTAGE"/>% भरी हुई है.</translation>
 <translation id="2983818520079887040">सेटिंग...</translation>
+<translation id="3871838685472846647">सेलुलर सक्रिय किया गया</translation>
 <translation id="1195412055398077112">ओवरस्कैन</translation>
-<translation id="1717216362413677834">डॉक मोड</translation>
 <translation id="112308213915226829">शेल्फ़ को स्वत: छिपाएं</translation>
+<translation id="7573962313813535744">डॉक मोड</translation>
 <translation id="8927026611342028580">कनेक्ट करने का अनुरोध किया गया</translation>
 <translation id="8300849813060516376">OTASP विफल</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">बैटरी <ph name="PERCENTAGE"/>% भरी हुई है और चार्ज हो रही है.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: सक्रिय हो रहा है...</translation>
 <translation id="4895488851634969361">बैटरी भरी हुई है.</translation>
-<translation id="1391854757121130358">संभवत: आपने अपने मोबाइल डेटा सीमा का पूर्ण उपयोग कर लिया है.</translation>
 <translation id="5947494881799873997">वापस लाएं</translation>
 <translation id="7593891976182323525">Search या Shift</translation>
 <translation id="7649070708921625228">सहायता</translation>
+<translation id="747833637904845037">किसी बाहरी डिस्प्ले से कनेक्ट रहते समय आपका Chrome बुक चालू रहेगा, भले ही उसका लिड बंद हो.</translation>
 <translation id="3050422059534974565">CAPS LOCK चालू है.
 रद्द करने के लिए Search या Shift दबाएं.</translation>
 <translation id="397105322502079400">गणना की जा रही है...</translation>
 <translation id="158849752021629804">होम नेटवर्क की आवश्यकता है</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> को सक्रिय करें</translation>
 <translation id="5864471791310927901">DHCP लुकअप विफल</translation>
-<translation id="5812035014844949013">आउटपुट</translation>
 <translation id="6692173217867674490">ख़राब पासफ़्रेज़</translation>
 <translation id="6165508094623778733">अधिक जानें</translation>
 <translation id="9046895021617826162">कनेक्ट करना विफल</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">बैटरी कम (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">स्वीकार करें</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> शेष</translation>
+<translation id="3009178788565917040">आउटपुट</translation>
 <translation id="520760366042891468">Hangout के माध्यम से अपनी स्क्रीन साझा करना.</translation>
 <translation id="8000066093800657092">नेटवर्क नहीं है</translation>
 <translation id="4015692727874266537">अन्य खाते में प्रवेश करें...</translation>
 <translation id="5941711191222866238">छोटा करें</translation>
 <translation id="6911468394164995108">अन्य में शामिल हों...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">बधाई हो! आपकी '<ph name="NAME"/>' डेटा सेवा सक्रिय हो गई है और अब वह चलने के लिए तैयार है.</translation>
 <translation id="412065659894267608">पूरी तरह से चार्ज होने में <ph name="HOUR"/>घं <ph name="MINUTE"/>मि शेष</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> से SMS</translation>
 <translation id="1244147615850840081">कैरियर</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index 5e3fbd4..1c94284 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Možete imati najviše tri računa u višestrukoj prijavi.</translation>
 <translation id="370649949373421643">Omogući Wi-Fi</translation>
 <translation id="3626281679859535460">Svjetlina</translation>
+<translation id="3621202678540785336">Ulaz</translation>
 <translation id="595202126637698455">Omogućeno je praćenje izvedbe</translation>
 <translation id="8054466585765276473">Izračun vremena baterije.</translation>
 <translation id="7982789257301363584">Mreža</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Ladica statusa</translation>
 <translation id="1661867754829461514">Nedostaje PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: povezivanje...</translation>
+<translation id="40400351611212369">Pogreška aktivacije mreže</translation>
 <translation id="4237016987259239829">Pogreška mrežne veze</translation>
 <translation id="2946640296642327832">Omogući Bluetooth</translation>
 <translation id="6459472438155181876">Proširivanje zaslona na zaslon <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Dijelite kontrolu nad zaslonom s korisnikom <ph name="HELPER_NAME"/> putem značajke Hangouts.</translation>
 <translation id="7864539943188674973">Onemogući Bluetooth</translation>
 <translation id="939252827960237676">Snimka zaslona nije spremljena</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Ponovo pokrenite za ažuriranje</translation>
 <translation id="2268813581635650749">Odjavi sve</translation>
 <translation id="735745346212279324">Veza s VPN-om prekinuta</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Prilagodi jezike i unos...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Položaj police</translation>
-<translation id="2903907270192926896">ULAZ</translation>
 <translation id="8676770494376880701">Priključen je punjač male snage</translation>
 <translation id="7170041865419449892">Izvan raspona</translation>
 <translation id="4804818685124855865">Prekini vezu</translation>
@@ -77,18 +79,23 @@
 Pritisnite Shift + Alt za promjenu.</translation>
 <translation id="2562916301614567480">Privatna mreža</translation>
 <translation id="6549021752953852991">Mobilne mreže nisu dostupne</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dragi monitoru, naša veza neće uspjeti. (Taj monitor nije podržan)</translation>
 <translation id="6426039856985689743">Onemogući mobilne podatke</translation>
 <translation id="3087734570205094154">Donji</translation>
 <translation id="3742055079367172538">Izrađena je snimka zaslona</translation>
 <translation id="8878886163241303700">Produljenje zaslona</translation>
 <translation id="5271016907025319479">VPN nije konfiguriran.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Administrator je onemogućio izradu snimki zaslona.</translation>
 <translation id="372094107052732682">Pritisnite Ctrl + Shift + Q dvaput da biste odustali.</translation>
 <translation id="6803622936009808957">Nije bilo moguće zrcaliti zaslone jer nije pronađena nijedna podržana razlučivost. Umjesto toga proširena je radna površina.</translation>
 <translation id="1480041086352807611">Demonstracijski način</translation>
 <translation id="3626637461649818317">Preostalo <ph name="PERCENTAGE"/> %</translation>
 <translation id="9089416786594320554">Načini unosa</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Za aktivaciju mreže &quot;<ph name="NAME"/>&quot; potrebna je mrežna veza.</translation>
+<translation id="3963445509666917109">Zvučnik (ugrađeni)</translation>
 <translation id="2825619548187458965">Polica</translation>
 <translation id="2614835198358683673">Chromebook se možda neće puniti dok je uključen. Savjetujemo upotrebu službenog punjača.</translation>
 <translation id="1895658205118569222">Isključivanje</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Traženje mobilnih mreža...</translation>
 <translation id="583281660410589416">Nepoznato</translation>
 <translation id="1383876407941801731">Pretraživanje</translation>
-<translation id="7468789844759750875">Posjetite aktivacijski portal <ph name="NAME"/> da biste kupili više podataka.</translation>
 <translation id="3901991538546252627">Povezivanje s mrežom <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Podaci o mreži</translation>
 <translation id="1621499497873603021">Baterija će se isprazniti za <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Izlazak iz sesije gosta</translation>
 <translation id="8308637677604853869">Prethodni izbornik</translation>
 <translation id="4666297444214622512">Prijava na još jedan račun nije moguća.</translation>
+<translation id="3625258641415618104">Snimke zaslona onemogućene su</translation>
 <translation id="1346748346194534595">Udesno</translation>
 <translation id="1773212559869067373">Certifikat za autentifikaciju odbijen je lokalno</translation>
 <translation id="8528322925433439945">Mobilne mreže...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Neuspjela aktivacija</translation>
 <translation id="5097002363526479830">Neuspješno povezivanje s mrežom &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi je isključen.</translation>
+<translation id="2966449113954629791">Vjerojatno ste potrošili dopuštenu količinu mobilnih podataka. Posjetite aktivacijski portal <ph name="NAME"/> kako biste kupili još podataka.</translation>
 <translation id="8132793192354020517">Povezano s <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Postavljanje pozadinske slike...</translation>
 <translation id="8678698760965522072">Stanje na mreži</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Vrati</translation>
 <translation id="4274292172790327596">Neprepoznata pogreška</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Slušalice</translation>
 <translation id="225680501294068881">Pretraživanje uređaja...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (ugrađeni)</translation>
 <translation id="4448844063988177157">Traženje Wi-Fi mreža...</translation>
 <translation id="8401662262483418323">Povezivanje s mrežom &quot;<ph name="NAME"/>&quot; nije uspjelo: <ph name="DETAILS"/>
 Poruka poslužitelja: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Došlo je do pogreške</translation>
 <translation id="7229570126336867161">Potreban je EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> predstavlja javnu sesiju kojom upravlja domena <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Povezivanje s mrežom nije uspjelo: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Izlazak iz sesije</translation>
 <translation id="8454013096329229812">Wi-Fi je uključen.</translation>
 <translation id="4872237917498892622">Alt + Pretraživanje ili Shift</translation>
 <translation id="9201131092683066720">Baterija je <ph name="PERCENTAGE"/>% puna.</translation>
 <translation id="2983818520079887040">Postavke...</translation>
+<translation id="3871838685472846647">Mobilni je telefon aktiviran</translation>
 <translation id="1195412055398077112">rubno područje zaslona</translation>
-<translation id="1717216362413677834">Način rada na priključnoj stanici</translation>
 <translation id="112308213915226829">Automatski sakrij policu</translation>
+<translation id="7573962313813535744">Način rada u priključnoj stanici</translation>
 <translation id="8927026611342028580">Podnesen je zahtjev za povezivanje</translation>
 <translation id="8300849813060516376">OTASP nije uspio</translation>
 <translation id="2792498699870441125">Alt + Pretraživanje</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Baterija je <ph name="PERCENTAGE"/>% puna i puni se.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktiviranje...</translation>
 <translation id="4895488851634969361">Baterija je puna.</translation>
-<translation id="1391854757121130358">Možda ste potrošili dopuštenu količinu mobilnih podataka.</translation>
 <translation id="5947494881799873997">Vrati</translation>
 <translation id="7593891976182323525">Pretraživanje ili Shift</translation>
 <translation id="7649070708921625228">Pomoć</translation>
+<translation id="747833637904845037">Chromebook će ostati uključen dok je povezan s vanjskim zaslonom, čak i ako je poklopac zatvoren.</translation>
 <translation id="3050422059534974565">Uključena je opcija CAPS LOCK.
 Pritisnite tipke Pretraživanje ili Shift da biste ju isključili.</translation>
 <translation id="397105322502079400">Izračun u tijeku…</translation>
 <translation id="158849752021629804">Potrebna je matična mreža</translation>
 <translation id="6857811139397017780">Aktiviraj <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP pretraživanje nije uspjelo</translation>
-<translation id="5812035014844949013">IZLAZ</translation>
 <translation id="6692173217867674490">Pogrešna zaporka</translation>
 <translation id="6165508094623778733">Saznajte više</translation>
 <translation id="9046895021617826162">Neuspjelo povezivanje</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Baterija je skoro prazna (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Prihvati</translation>
 <translation id="5102001756192215136">Preostalo <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Izlaz</translation>
 <translation id="520760366042891468">Dijelite kontrolu nad zaslonom putem značajke Hangouts.</translation>
 <translation id="8000066093800657092">Nema mreže</translation>
 <translation id="4015692727874266537">Prijavite se na još jedan račun...</translation>
 <translation id="5941711191222866238">Minimiziraj</translation>
 <translation id="6911468394164995108">Pridruži se drugoj...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Čestitamo! Podatkovna usluga &quot;<ph name="NAME"/>&quot; aktivirana je i spremna za pokret.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h <ph name="MINUTE"/> min do završetka punjenja</translation>
 <translation id="6359806961507272919">SMS šalje <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Davatelj usluge</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 376fef9..e6531e1 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Legfeljebb három fiókot használhat a többfiókos bejelentkezés során.</translation>
 <translation id="370649949373421643">Wi-Fi engedélyezése</translation>
 <translation id="3626281679859535460">Fényerő</translation>
+<translation id="3621202678540785336">Bemenet</translation>
 <translation id="595202126637698455">Teljesítménykövetés engedélyezve</translation>
 <translation id="8054466585765276473">Akkumulátor-időtartam kiszámítása.</translation>
 <translation id="7982789257301363584">Hálózat</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Állapottálca</translation>
 <translation id="1661867754829461514">Hiányzó PIN kód</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: csatlakozás...</translation>
+<translation id="40400351611212369">Hálózati aktivációs hiba</translation>
 <translation id="4237016987259239829">Hálózati kapcsolat hibája</translation>
 <translation id="2946640296642327832">Bluetooth engedélyezése</translation>
 <translation id="6459472438155181876">Képernyő kiterjesztése erre: <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255"><ph name="HELPER_NAME"/> segéddel való képernyőmegosztás vezérlése a Hangoutson keresztül.</translation>
 <translation id="7864539943188674973">Bluetooth letiltása</translation>
 <translation id="939252827960237676">Nem sikerült menteni a képernyőképet.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Indítsa újra a frissítéshez</translation>
 <translation id="2268813581635650749">Összes kijelentkeztetése</translation>
 <translation id="735745346212279324">A VPN nincs csatlakoztatva</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Nyelvek és beviteli módok személyre szabása...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Polc pozíciója</translation>
-<translation id="2903907270192926896">BEMENET</translation>
 <translation id="8676770494376880701">Kis teljesítményű töltő csatlakoztatva</translation>
 <translation id="7170041865419449892">Tartományon kívül</translation>
 <translation id="4804818685124855865">Kapcsolat bontása</translation>
@@ -77,18 +79,23 @@
 A váltáshoz nyomja meg a Shift + Alt billentyűkódot.</translation>
 <translation id="2562916301614567480">Magánhálózat</translation>
 <translation id="6549021752953852991">Nem érhető el mobilhálózat</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Kedves Monitor, mi nem illünk össze. (A monitor nem támogatott.)</translation>
 <translation id="6426039856985689743">Mobiladatok letiltása</translation>
 <translation id="3087734570205094154">Alja</translation>
 <translation id="3742055079367172538">Képernyőkép elkészítve</translation>
 <translation id="8878886163241303700">Kibővített képernyő</translation>
 <translation id="5271016907025319479">Nincs konfigurálva VPN.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">A képernyőkép-készítést letiltotta a rendszergazda.</translation>
 <translation id="372094107052732682">A kilépéshez nyomja meg kétszer a Ctrl+Shift+Q billentyűkódot.</translation>
 <translation id="6803622936009808957">A kijelzők tükrözése sikertelen, mivel nem található támogatott felbontás. Ehelyett kiterjesztett asztal módba váltott a rendszer.</translation>
 <translation id="1480041086352807611">Demó üzemmód</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% maradt</translation>
 <translation id="9089416786594320554">Beviteli módszerek</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">A(z) „<ph name="NAME"/>” aktiválásához hálózati kapcsolatra van szükség.</translation>
+<translation id="3963445509666917109">Hangszóró (belső)</translation>
 <translation id="2825619548187458965">Polc</translation>
 <translation id="2614835198358683673">Előfordulhat, hogy a Chromebook nem töltődik, amíg be van kapcsolva. Vegye fontolóra a gyári töltő használatát.</translation>
 <translation id="1895658205118569222">Kikapcsolás</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Mobilhálózatok keresése...</translation>
 <translation id="583281660410589416">Ismeretlen</translation>
 <translation id="1383876407941801731">Keresés</translation>
-<translation id="7468789844759750875">Látogasson el a(z) <ph name="NAME"/> aktivációs portálra további adatforgalom vásárlásához.</translation>
 <translation id="3901991538546252627">Csatlakozás a következőhöz: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Hálózatinformáció</translation>
 <translation id="1621499497873603021">Akkumulátor lemerüléséig hátralévő idő: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Kilépés a vendég munkamenetből</translation>
 <translation id="8308637677604853869">Előző menü</translation>
 <translation id="4666297444214622512">Nem lehet bejelentkezni még egy fiókba.</translation>
+<translation id="3625258641415618104">Képernyőképek letiltva</translation>
 <translation id="1346748346194534595">Jobbra</translation>
 <translation id="1773212559869067373">A hitelesítési tanúsítvány helyileg elutasítva</translation>
 <translation id="8528322925433439945">Mobil...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktiválási hiba</translation>
 <translation id="5097002363526479830">Nem sikerült csatlakozni a(z) <ph name="NAME"/> hálózathoz: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi kikapcsolva.</translation>
+<translation id="2966449113954629791">Valószínűleg elérte a mobiladat-használatra vonatkozó korlátozást. További adatforgalom vásárlásához keresse fel a(z) <ph name="NAME"/> aktiválási portált.</translation>
 <translation id="8132793192354020517">Csatlakozás a következőhöz megtörtént: <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Háttérkép beállítása...</translation>
 <translation id="8678698760965522072">Online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Visszaállítás</translation>
 <translation id="4274292172790327596">Azonosítatlan hiba</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Fülhallgató</translation>
 <translation id="225680501294068881">Eszközök keresése...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (belső)</translation>
 <translation id="4448844063988177157">Wi-Fi hálózatok keresése...</translation>
 <translation id="8401662262483418323">Nem sikerült a csatlakozás a következőhöz: „<ph name="NAME"/>”: <ph name="DETAILS"/>
 Szerverüzenet: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Hiba történt</translation>
 <translation id="7229570126336867161">EVDO szükséges</translation>
 <translation id="2999742336789313416">A(z) <ph name="DISPLAY_NAME"/> egy <ph name="DOMAIN"/> által kezelt nyilvános munkamenet</translation>
+<translation id="9044646465488564462">Nem sikerült csatlakozni a hálózathoz: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Kilépés a munkamenetből</translation>
 <translation id="8454013096329229812">Wi-Fi bekapcsolva.</translation>
 <translation id="4872237917498892622">Alt + Keresés vagy Shift</translation>
 <translation id="9201131092683066720">Az akkumulátor töltöttsége: <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Beállítások...</translation>
+<translation id="3871838685472846647">Mobil aktiválva</translation>
 <translation id="1195412055398077112">túlpásztázás</translation>
-<translation id="1717216362413677834">Dokkolt mód</translation>
 <translation id="112308213915226829">Polc automatikus elrejtése</translation>
+<translation id="7573962313813535744">Dokkolt mód</translation>
 <translation id="8927026611342028580">Csatlakozás kérelmezve</translation>
 <translation id="8300849813060516376">OTASP sikertelen</translation>
 <translation id="2792498699870441125">Alt + Keresés</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Az akkumulátor töltöttsége <ph name="PERCENTAGE"/>%, és töltődik.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktiválás...</translation>
 <translation id="4895488851634969361">Az akkumulátor feltöltve.</translation>
-<translation id="1391854757121130358">Elképzelhető, hogy mobil adatforgalmi kerete elfogyott.</translation>
 <translation id="5947494881799873997">Visszavonás</translation>
 <translation id="7593891976182323525">Keresés vagy Shift</translation>
 <translation id="7649070708921625228">Súgó</translation>
+<translation id="747833637904845037">A Chromebook – ha külső monitort csatlakoztat hozzá – akkor is bekapcsolva marad, amikor lehajtja a fedelét.</translation>
 <translation id="3050422059534974565">A CAPS LOCK be van kapcsolva.
 Kikapcsolásához nyomja meg a Keresés vagy a Shift billentyűt.</translation>
 <translation id="397105322502079400">Számítás…</translation>
 <translation id="158849752021629804">Otthoni hálózat szükséges</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> aktiválása</translation>
 <translation id="5864471791310927901">DHCP-keresés sikertelen</translation>
-<translation id="5812035014844949013">KIMENET</translation>
 <translation id="6692173217867674490">Rossz összetett jelszó</translation>
 <translation id="6165508094623778733">További információ</translation>
 <translation id="9046895021617826162">Csatlakozás sikertelen</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Alacsony akkumulátortöltöttség (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Elfogadás</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> van hátra</translation>
+<translation id="3009178788565917040">Kimenet</translation>
 <translation id="520760366042891468">Képernyő megosztásának vezérlése a Hangoutson keresztül.</translation>
 <translation id="8000066093800657092">Nincs hálózat</translation>
 <translation id="4015692727874266537">Bejelentkezés másik fiókba...</translation>
 <translation id="5941711191222866238">Kicsinyítés</translation>
 <translation id="6911468394164995108">Csatlakozás másik hálózathoz...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Gratulálunk! „<ph name="NAME"/>” adatszolgáltatása aktív, és készen áll a használatra.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> ó <ph name="MINUTE"/> p a teljes feltöltésig</translation>
 <translation id="6359806961507272919">SMS innen: <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Szállító</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 5d3919c..4086b78 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Anda hanya dapat memiliki paling banyak tiga akun dalam fitur masuk multipel.</translation>
 <translation id="370649949373421643">Aktifkan Wi-Fi</translation>
 <translation id="3626281679859535460">Kecerahan</translation>
+<translation id="3621202678540785336">Masukan</translation>
 <translation id="595202126637698455">Kinerja pelacakan aktif</translation>
 <translation id="8054466585765276473">Menghitung masa pakai baterai.</translation>
 <translation id="7982789257301363584">Jaringan</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Baki status</translation>
 <translation id="1661867754829461514">PIN hilang</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Menyambung...</translation>
+<translation id="40400351611212369">Kesalahan Aktivasi Jaringan</translation>
 <translation id="4237016987259239829">Kesalahan Koneksi Jaringan</translation>
 <translation id="2946640296642327832">Aktifkan Bluetooth</translation>
 <translation id="6459472438155181876">Memperpanjang layar ke <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Berbagi kontrol layar Anda dengan <ph name="HELPER_NAME"/> melalui Hangouts.</translation>
 <translation id="7864539943188674973">Nonaktifkan Bluetooth</translation>
 <translation id="939252827960237676">Gagal menyimpan tangkapan layar</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Mulai ulang untuk memperbarui</translation>
 <translation id="2268813581635650749">Keluarkan semua pengguna</translation>
 <translation id="735745346212279324">VPN terputus</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Sesuaikan bahasa dan masukan...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posisi rak</translation>
-<translation id="2903907270192926896">MASUKAN</translation>
 <translation id="8676770494376880701">Pengisi daya rendah terpasang</translation>
 <translation id="7170041865419449892">Di luar jangkauan</translation>
 <translation id="4804818685124855865">Putuskan</translation>
@@ -77,18 +79,23 @@
 Tekan Shift + Alt untuk beralih.</translation>
 <translation id="2562916301614567480">Jaringan Pribadi</translation>
 <translation id="6549021752953852991">Jaringan seluler tidak tersedia</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Monitor, sayang sekali kita tidak bisa bekerja sama. (Monitor tersebut tidak didukung)</translation>
 <translation id="6426039856985689743">Nonaktifkan data seluler</translation>
 <translation id="3087734570205094154">Bawah</translation>
 <translation id="3742055079367172538">Tangkapan layar telah diambil</translation>
 <translation id="8878886163241303700">Memperluas layar</translation>
 <translation id="5271016907025319479">VPN belum dikonfigurasi.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Kemampuan untuk membuat tangkapan layar telah dinonaktifkan oleh administrator Anda.</translation>
 <translation id="372094107052732682">Tekan Ctrl+Shift+Q dua kali untuk keluar.</translation>
 <translation id="6803622936009808957">Tidak dapat menggandakan tampilan karena tidak ditemukan resolusi yang didukung. Memasuki desktop yang diperluas sebagai gantinya.</translation>
 <translation id="1480041086352807611">Mode demo</translation>
 <translation id="3626637461649818317">Sisa <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Metode masukan</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Aktivasi '<ph name="NAME"/>' membutuhkan sambungan jaringan.</translation>
+<translation id="3963445509666917109">Pengeras Suara (Internal)</translation>
 <translation id="2825619548187458965">Rak</translation>
 <translation id="2614835198358683673">Chromebook Anda mungkin tidak mengisi daya saat sedang menyala. Pertimbangkan untuk menggunakan pengisi daya resmi.</translation>
 <translation id="1895658205118569222">Mati</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Menelusuri jaringan seluler...</translation>
 <translation id="583281660410589416">Tidak diketahui</translation>
 <translation id="1383876407941801731">Penelusuran</translation>
-<translation id="7468789844759750875">Kunjungi portal pengaktifan <ph name="NAME"/> untuk membeli lebih banyak data.</translation>
 <translation id="3901991538546252627">Menyambung ke <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Info Jaringan</translation>
 <translation id="1621499497873603021">Waktu yang tersisa hingga baterai kosong, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Keluar dari sesi tamu</translation>
 <translation id="8308637677604853869">Menu sebelumnya</translation>
 <translation id="4666297444214622512">Tidak dapat masuk ke akun lain.</translation>
+<translation id="3625258641415618104">Tangkapan layar dinonaktifkan</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1773212559869067373">Sertifikat autentikasi ditolak secara lokal</translation>
 <translation id="8528322925433439945">Seluler ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Kegagalan aktivasi</translation>
 <translation id="5097002363526479830">Gagal menyambung ke jaringan '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi dinonaktifkan.</translation>
+<translation id="2966449113954629791">Data seluler Anda yang diizinkan mungkin telah habis. Kunjungi portal aktivasi <ph name="NAME"/> untuk membeli data lagi.</translation>
 <translation id="8132793192354020517">Tersambung ke <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Setel wallpaper...</translation>
 <translation id="8678698760965522072">Status online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Pulihkan</translation>
 <translation id="4274292172790327596">Kesalahan tak dikenal</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>.<ph name="MINUTES"/>.<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Headphone</translation>
 <translation id="225680501294068881">Memindai perangkat...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (Internal)</translation>
 <translation id="4448844063988177157">Menelusuri jaringan Wi-Fi...</translation>
 <translation id="8401662262483418323">Gagal tersambung ke '<ph name="NAME"/>': <ph name="DETAILS"/>
 Pesan server: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Terjadi kesalahan</translation>
 <translation id="7229570126336867161">Memerlukan EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> adalah sesi publik yang dikelola oleh <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Gagal menyambung ke jaringan: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Keluar dari sesi</translation>
 <translation id="8454013096329229812">Wi-Fi diaktifkan.</translation>
 <translation id="4872237917498892622">Alt+Telusuri atau Shift</translation>
 <translation id="9201131092683066720">Baterai terisi <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Setelan...</translation>
+<translation id="3871838685472846647">Seluler Diaktifkan</translation>
 <translation id="1195412055398077112">pemindaian berlebih</translation>
-<translation id="1717216362413677834">Mode dok</translation>
 <translation id="112308213915226829">Sembunyikan otomatis rak</translation>
+<translation id="7573962313813535744">Mode digalangkan</translation>
 <translation id="8927026611342028580">Sambungan Diminta</translation>
 <translation id="8300849813060516376">OTASP gagal</translation>
 <translation id="2792498699870441125">Alt+Telusuri</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Baterai sudah terisi <ph name="PERCENTAGE"/>% dan masih mengisi.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Mengaktifkan...</translation>
 <translation id="4895488851634969361">Baterai penuh.</translation>
-<translation id="1391854757121130358">Anda mungkin telah menghabiskan jatah data seluler.</translation>
 <translation id="5947494881799873997">Kembalikan</translation>
 <translation id="7593891976182323525">Telusuri atau Shift</translation>
 <translation id="7649070708921625228">Bantuan</translation>
+<translation id="747833637904845037">Chromebook Anda tetap menyala saat terhubung ke layar eksternal, bahkan saat penutupnya tertutup.</translation>
 <translation id="3050422059534974565">CAPS LOCK aktif.
 Tekan Telusuri atau Shift untuk membatalkan.</translation>
 <translation id="397105322502079400">Menghitung...</translation>
 <translation id="158849752021629804">Memerlukan jaringan rumah</translation>
 <translation id="6857811139397017780">Aktifkan <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Pencarian DHCP gagal</translation>
-<translation id="5812035014844949013">KELUARAN</translation>
 <translation id="6692173217867674490">Frasa sandi yang buruk</translation>
 <translation id="6165508094623778733">Pelajari lebih lanjut</translation>
 <translation id="9046895021617826162">Gagal menyambung</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Baterai lemah (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Terima</translation>
 <translation id="5102001756192215136">Sisa <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Keluaran</translation>
 <translation id="520760366042891468">Berbagi kontrol layar Anda melalui Hangouts.</translation>
 <translation id="8000066093800657092">Tidak ada jaringan</translation>
 <translation id="4015692727874266537">Masuk ke akun lain...</translation>
 <translation id="5941711191222866238">Perkecil</translation>
 <translation id="6911468394164995108">Bergabung dengan lainnya...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Selamat! Layanan data '<ph name="NAME"/>' Anda telah diaktifkan dan siap digunakan.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>j <ph name="MINUTE"/>m sampai penuh</translation>
 <translation id="6359806961507272919">SMS dari <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operator</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 5ba591b..54d8050 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Puoi avere massimo tre account per l'accesso simultaneo.</translation>
 <translation id="370649949373421643">Attiva Wi-Fi</translation>
 <translation id="3626281679859535460">Luminosità</translation>
+<translation id="3621202678540785336">Ingresso</translation>
 <translation id="595202126637698455">Rilevamento del rendimento attivo</translation>
 <translation id="8054466585765276473">Calcolo della durata della batteria.</translation>
 <translation id="7982789257301363584">Rete</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Barra di stato</translation>
 <translation id="1661867754829461514">PIN mancante</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: connessione...</translation>
+<translation id="40400351611212369">Errore di attivazione della rete</translation>
 <translation id="4237016987259239829">Errore di connessione di rete</translation>
 <translation id="2946640296642327832">Attiva Bluetooth</translation>
 <translation id="6459472438155181876">Estensione dello schermo su <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Condivisione del controllo dello schermo con <ph name="HELPER_NAME"/> tramite Hangouts.</translation>
 <translation id="7864539943188674973">Disattiva Bluetooth</translation>
 <translation id="939252827960237676">Salvataggio dello screenshot non riuscito</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Riavvia per aggiornare</translation>
 <translation id="2268813581635650749">Disconnetti tutti</translation>
 <translation id="735745346212279324">VPN scollegata</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizza lingue e immissione...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posizione shelf</translation>
-<translation id="2903907270192926896">INGRESSO</translation>
 <translation id="8676770494376880701">Caricabatterie a basso consumo collegato</translation>
 <translation id="7170041865419449892">Fuori dal raggio d'azione</translation>
 <translation id="4804818685124855865">Disconnetti</translation>
@@ -77,18 +79,23 @@
 Premi Maiusc+Alt per cambiare metodo.</translation>
 <translation id="2562916301614567480">Rete privata</translation>
 <translation id="6549021752953852991">Nessuna rete cellulare disponibile</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Caro monitor, non funziona tra di noi (il monitor non è supportato).</translation>
 <translation id="6426039856985689743">Disattiva dati mobili</translation>
 <translation id="3087734570205094154">In basso</translation>
 <translation id="3742055079367172538">Screenshot acquisito</translation>
 <translation id="8878886163241303700">Estensione schermo</translation>
 <translation id="5271016907025319479">VPN non configurata.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">La possibilità di effettuare screenshot è stata disabilitata dal tuo amministratore.</translation>
 <translation id="372094107052732682">Per uscire premi due volte Ctrl+Maiusc+Q.</translation>
 <translation id="6803622936009808957">Impossibile duplicare i display perché non sono state trovate risoluzioni supportate. È stato attivato il desktop esteso.</translation>
 <translation id="1480041086352807611">Modalità Demo</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% rimanente</translation>
 <translation id="9089416786594320554">Metodi di immissione</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">L'attivazione di &quot;<ph name="NAME"/>&quot; richiede una connessione di rete.</translation>
+<translation id="3963445509666917109">Altoparlante (interno)</translation>
 <translation id="2825619548187458965">Shelf</translation>
 <translation id="2614835198358683673">Il Chromebook potrebbe non ricaricarsi mentre è accesso. Prova a utilizzare il caricabatterie ufficiale.</translation>
 <translation id="1895658205118569222">Chiusura</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Ricerca reti cellulari...</translation>
 <translation id="583281660410589416">Sconosciuto</translation>
 <translation id="1383876407941801731">Ricerca</translation>
-<translation id="7468789844759750875">Visita il portale di attivazione <ph name="NAME"/> per acquistare altri dati.</translation>
 <translation id="3901991538546252627">Connessione a: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informazioni di rete</translation>
 <translation id="1621499497873603021">Tempo rimanente all'esaurimento della batteria: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Esci da sessione Ospite</translation>
 <translation id="8308637677604853869">Menu precedente</translation>
 <translation id="4666297444214622512">Impossibile accedere a un altro account.</translation>
+<translation id="3625258641415618104">Screenshot disabilitati</translation>
 <translation id="1346748346194534595">Destra</translation>
 <translation id="1773212559869067373">Certificato di autenticazione rifiutato localmente</translation>
 <translation id="8528322925433439945">Reti mobili...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Errore di attivazione</translation>
 <translation id="5097002363526479830">Connessione alla rete &quot;<ph name="NAME"/>&quot; non riuscita: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi non attivo.</translation>
+<translation id="2966449113954629791">Potresti avere esaurito la tua quota di dati mobili. Visita il portale di attivazione <ph name="NAME"/> per acquistare altri dati.</translation>
 <translation id="8132793192354020517">Connesso a <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Imposta sfondo...</translation>
 <translation id="8678698760965522072">Stato online</translation>
@@ -149,44 +157,47 @@
 <translation id="3157931365184549694">Ripristina</translation>
 <translation id="4274292172790327596">Errore non riconosciuto</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Cuffia</translation>
 <translation id="225680501294068881">Ricerca dispositivi in corso...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microfono (interno)</translation>
 <translation id="4448844063988177157">Ricerca di reti Wi-Fi in corso...</translation>
 <translation id="8401662262483418323">Impossibile collegarsi a &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Messaggio del server: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Si è verificato un errore</translation>
 <translation id="7229570126336867161">Occorre EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> è una sessione pubblica gestita da <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Connessione alla rete non riuscita: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Esci da sessione</translation>
 <translation id="8454013096329229812">Wi-Fi attivo.</translation>
 <translation id="4872237917498892622">Alt+tasto per la ricerca o Maiusc</translation>
 <translation id="9201131092683066720">Percentuale di caricamento della batteria: <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Impostazioni...</translation>
+<translation id="3871838685472846647">Attivata tramite rete cellulare</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Modalità dock</translation>
 <translation id="112308213915226829">Nascondi automaticamente shelf</translation>
+<translation id="7573962313813535744">Modalità dock</translation>
 <translation id="8927026611342028580">Connessione richiesta</translation>
 <translation id="8300849813060516376">OTASP non riuscito</translation>
 <translation id="2792498699870441125">Alt+tasto per la ricerca</translation>
 <translation id="8660803626959853127">Sincronizzazione di <ph name="COUNT"/> file in corso</translation>
-<translation id="5958529069007801266">Utente controllato</translation>
+<translation id="5958529069007801266">Utente supervisionato</translation>
 <translation id="3709443003275901162">Più di 9</translation>
 <translation id="639644700271529076">Funzione BLOC MAIUSC non attiva</translation>
 <translation id="6248847161401822652">Per uscire premi due volte Ctrl+Maiusc+Q.</translation>
 <translation id="6785414152754474415">Percentuale di caricamento batteria: <ph name="PERCENTAGE"/>%. La batteria è in carica.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: attivazione in corso...</translation>
 <translation id="4895488851634969361">La batteria è carica.</translation>
-<translation id="1391854757121130358">Potresti avere esaurito la tua quota di dati mobili.</translation>
 <translation id="5947494881799873997">Ripristina</translation>
 <translation id="7593891976182323525">Tasto per la ricerca o Maiusc</translation>
 <translation id="7649070708921625228">Guida</translation>
+<translation id="747833637904845037">Il tuo Chromebook rimane attivo quando è collegato a un monitor esterno, anche con il coperchio chiuso.</translation>
 <translation id="3050422059534974565">La funzione BLOC MAIUSC è attiva.
 Premi il tasto per la ricerca o Maiusc per annullare.</translation>
 <translation id="397105322502079400">Calcolo in corso...</translation>
 <translation id="158849752021629804">Occorre una rete domestica</translation>
 <translation id="6857811139397017780">Attiva <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Ricerca DHCP non riuscita</translation>
-<translation id="5812035014844949013">USCITA</translation>
 <translation id="6692173217867674490">Passphrase non valida</translation>
 <translation id="6165508094623778733">Ulteriori informazioni</translation>
 <translation id="9046895021617826162">Connessione non riuscita</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Batteria in esaurimento (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Accetto</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> rimanenti</translation>
+<translation id="3009178788565917040">Uscita</translation>
 <translation id="520760366042891468">Condivisione del controllo dello schermo tramite Hangouts.</translation>
 <translation id="8000066093800657092">Nessuna rete</translation>
 <translation id="4015692727874266537">Accedi a un altro account...</translation>
 <translation id="5941711191222866238">Riduci a icona</translation>
 <translation id="6911468394164995108">Connetti a un'altra...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Complimenti, il tuo servizio dati &quot;<ph name="NAME"/>&quot; è stato attivato ed è pronto all'uso.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h e <ph name="MINUTE"/> m per completare la ricarica</translation>
 <translation id="6359806961507272919">SMS da <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Gestore</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 870abf0..c195c24 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">ניתן לכלול עד שלושה חשבונות בלבד בכניסה עם מספר חשבונות.</translation>
 <translation id="370649949373421643">‏הפעל Wi-Fi</translation>
 <translation id="3626281679859535460">בהירות</translation>
+<translation id="3621202678540785336">קלט</translation>
 <translation id="595202126637698455">מעקב אחר הביצועים מופעל</translation>
 <translation id="8054466585765276473">מחשב זמן סוללה</translation>
 <translation id="7982789257301363584">רשת</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">מגש סטטוס</translation>
 <translation id="1661867754829461514">‏חסר PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: מתחבר...</translation>
+<translation id="40400351611212369">שגיאה בהפעלת רשת</translation>
 <translation id="4237016987259239829">שגיאת חיבור רשת</translation>
 <translation id="2946640296642327832">‏הפעל Bluetooth</translation>
 <translation id="6459472438155181876">מרחיב את המסך אל <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">‏משתף את השליטה במסך שלך עם <ph name="HELPER_NAME"/> באמצעות Hangouts.</translation>
 <translation id="7864539943188674973">‏השבת Bluetooth</translation>
 <translation id="939252827960237676">שמירת צילום המסך נכשלה</translation>
+<translation id="1969011864782743497">‏<ph name="DEVICE_NAME"/>‏ (USB)</translation>
 <translation id="3126069444801937830">הפעל מחדש כדי לעדכן</translation>
 <translation id="2268813581635650749">הוצא את כולם</translation>
 <translation id="735745346212279324">‏VPN מנותק</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">התאם אישית שפה וקלט...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/>‏ (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">מיקום המדף</translation>
-<translation id="2903907270192926896">קלט</translation>
 <translation id="8676770494376880701">חובר מטען בעל מתח נמוך</translation>
 <translation id="7170041865419449892">מחוץ לטווח</translation>
 <translation id="4804818685124855865">נתק</translation>
@@ -77,18 +79,23 @@
         הקש Shift + Alt כדי להחליף.</translation>
 <translation id="2562916301614567480">רשת פרטית</translation>
 <translation id="6549021752953852991">אין רשת סלולרית זמינה</translation>
+<translation id="2982222131142145681">‏<ph name="DEVICE_NAME"/>‏ (HDMI)</translation>
 <translation id="4379753398862151997">צג יקר, זה לא עובד בינינו. (הצג אינו נתמך)</translation>
 <translation id="6426039856985689743">השבת נתונים לנייד</translation>
 <translation id="3087734570205094154">תחתית</translation>
 <translation id="3742055079367172538">צילום המסך בוצע</translation>
 <translation id="8878886163241303700">מסך מתרחב</translation>
 <translation id="5271016907025319479">‏לא הוגדר VPN.</translation>
+<translation id="3105990244222795498">‏<ph name="DEVICE_NAME"/>‏ (Bluetooth)</translation>
+<translation id="3967919079500697218">היכולת לצלם צילומי מסך הושבתה על-ידי מנהל המערכת שלך.</translation>
 <translation id="372094107052732682">‏לחץ על Ctrl+Shift+Q פעמיים כדי לצאת.</translation>
 <translation id="6803622936009808957">לא ניתן היה לשקף מסכים מכיוון שלא נמצאה רזולוציה נתמכת. במקום זאת התצוגה עברה למצב שולחן עבודה מורחב.</translation>
 <translation id="1480041086352807611">מצב הדגמה</translation>
 <translation id="3626637461649818317">‏<ph name="PERCENTAGE"/>%‎ נותרו</translation>
 <translation id="9089416786594320554">שיטות קלט</translation>
 <translation id="6247708409970142803">%<ph name="PERCENTAGE"/></translation>
+<translation id="2670531586141364277">הפעלה של '<ph name="NAME"/>' מצריכה חיבור לרשת.</translation>
+<translation id="3963445509666917109">רמקול (פנימי)</translation>
 <translation id="2825619548187458965">מדף</translation>
 <translation id="2614835198358683673">‏ייתכן שה-Chromebook שלך לא ייטען בזמן שהוא מופעל. מומלץ להשתמש במטען הראשי.</translation>
 <translation id="1895658205118569222">כיבוי</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">מחפש רשתות סלולריות...</translation>
 <translation id="583281660410589416">לא ידוע</translation>
 <translation id="1383876407941801731">חיפוש</translation>
-<translation id="7468789844759750875">בקר בפורטל ההפעלה של <ph name="NAME"/> כדי לקנות עוד נתונים.</translation>
 <translation id="3901991538546252627">מתחבר אל: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">פרטי רשת</translation>
 <translation id="1621499497873603021">הזמן שנותר עד להתרוקנות הסוללה, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">צא מהפעלת אורח</translation>
 <translation id="8308637677604853869">התפריט הקודם</translation>
 <translation id="4666297444214622512">לא ניתן להיכנס לחשבון אחר.</translation>
+<translation id="3625258641415618104">צילומי מסך מושבתים</translation>
 <translation id="1346748346194534595">ימינה</translation>
 <translation id="1773212559869067373">אישור האימות נדחה מקומית</translation>
 <translation id="8528322925433439945">נייד ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">כשל בהפעלה</translation>
 <translation id="5097002363526479830">ההתחברות לרשת נכשלה '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">‏Wi-Fi כבוי.</translation>
+<translation id="2966449113954629791">ייתכן שהשתמשת בכל מכסת הנתונים לנייד שלך. בקר בפורטל ההפעלה של <ph name="NAME"/> לרכישת נתונים נוספים.</translation>
 <translation id="8132793192354020517">מחובר ל<ph name="NAME"/></translation>
 <translation id="7052914147756339792">הגדר טפט...</translation>
 <translation id="8678698760965522072">מצב מקוון</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">שחזר</translation>
 <translation id="4274292172790327596">שגיאה לא מזוהה</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">אוזניות</translation>
 <translation id="225680501294068881">סורק לאיתור מכשירים...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">מיקרופון (פנימי)</translation>
 <translation id="4448844063988177157">‏מחפש רשתות Wi-Fi...</translation>
 <translation id="8401662262483418323">הניסיון להתחבר אל '<ph name="NAME"/>' נכשל: <ph name="DETAILS"/>
 הודעת השרת: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">אירעה שגיאה</translation>
 <translation id="7229570126336867161">‏יש צורך ב-EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> היא הפעלה ציבורית המנוהלת על ידי <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">ההתחברות לרשת נכשלה: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">צא מההפעלה</translation>
 <translation id="8454013096329229812">‏Wi-Fi מופעל.</translation>
 <translation id="4872237917498892622">‏Alt + חיפוש או Shift</translation>
 <translation id="9201131092683066720">‏הסוללה טעונה ברמה של ‎<ph name="PERCENTAGE"/>%‎.</translation>
 <translation id="2983818520079887040">הגדרות...</translation>
+<translation id="3871838685472846647">סלולרי הופעל</translation>
 <translation id="1195412055398077112">סריקת יתר</translation>
-<translation id="1717216362413677834">מצב מעגן</translation>
 <translation id="112308213915226829">הסתרה אוטומטית של המדף</translation>
+<translation id="7573962313813535744">מצב מעוגן</translation>
 <translation id="8927026611342028580">נשלחה בקשה לחיבור</translation>
 <translation id="8300849813060516376">‏OTASP נכשל</translation>
 <translation id="2792498699870441125">‏Alt + חיפוש</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">‏הסוללה טעונה ברמה של ‎<ph name="PERCENTAGE"/>%‎ ומתבצעת טעינה.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: מפעיל...</translation>
 <translation id="4895488851634969361">הסוללה טעונה במלואה.</translation>
-<translation id="1391854757121130358">ייתכן שכבר השתמשת בכל הקצבת הנתונים לנייד.</translation>
 <translation id="5947494881799873997">חזרה לגרסה הקודמת</translation>
 <translation id="7593891976182323525">‏חיפוש או Shift</translation>
 <translation id="7649070708921625228">עזרה</translation>
+<translation id="747833637904845037">‏ה-Chromebook שלך יישאר מופעל כל עוד הוא מחובר לצג חיצוני, גם כשהמכסה שלו סגור.</translation>
 <translation id="3050422059534974565">‏CAPS LOCK פועל.
 הקש על 'חיפוש' או על Shift כדי לבטל.</translation>
 <translation id="397105322502079400">מחשב...</translation>
 <translation id="158849752021629804">יש צורך ברשת ביתית</translation>
 <translation id="6857811139397017780">הפעל את <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">‏חיפוש DHCP נכשל</translation>
-<translation id="5812035014844949013">פלט</translation>
 <translation id="6692173217867674490">משפט-סיסמה גרוע</translation>
 <translation id="6165508094623778733">למידע נוסף</translation>
 <translation id="9046895021617826162">החיבור נכשל</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">‏סוללה חלשה (‎<ph name="PERCENTAGE"/>%‎)</translation>
 <translation id="4918086044614829423">אשר</translation>
 <translation id="5102001756192215136">נותרו <ph name="HOUR"/> <ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">פלט</translation>
 <translation id="520760366042891468">‏משתף את השליטה במסך שלך באמצעות Hangouts.</translation>
 <translation id="8000066093800657092">אין רשת</translation>
 <translation id="4015692727874266537">הכנס חשבון אחר...</translation>
 <translation id="5941711191222866238">מזער</translation>
 <translation id="6911468394164995108">הצטרף לרשת אחרת...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>‏: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">ברכותינו! שירות הנתונים שלך, '<ph name="NAME"/>', הופעל ומוכן לשימוש.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> שעות ו-<ph name="MINUTE"/> דקות עד לטעינה מלאה</translation>
 <translation id="6359806961507272919">‏SMS מאת <ph name="PHONE_NUMBER"/> </translation>
 <translation id="1244147615850840081">ספק</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 180ae7c..57b3875 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">マルチ ログインできるアカウントは 3 つまでです。</translation>
 <translation id="370649949373421643">Wi-Fi を有効にする</translation>
 <translation id="3626281679859535460">輝度</translation>
+<translation id="3621202678540785336">入力</translation>
 <translation id="595202126637698455">パフォーマンス追跡機能が有効です</translation>
 <translation id="8054466585765276473">バッテリーの残り時間を計算しています。</translation>
 <translation id="7982789257301363584">ネットワーク</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">ステータス トレイ</translation>
 <translation id="1661867754829461514">PIN がありません</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: 接続しています...</translation>
+<translation id="40400351611212369">ネットワーク有効化エラー</translation>
 <translation id="4237016987259239829">ネットワーク接続エラー</translation>
 <translation id="2946640296642327832">Bluetooth を有効にする</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/> へ画面を拡張しています</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">ハングアウトを介して画面の制御を <ph name="HELPER_NAME"/> さんと共有しています。</translation>
 <translation id="7864539943188674973">Bluetooth を無効にする</translation>
 <translation id="939252827960237676">スクリーンショットを保存できませんでした</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/>(USB)</translation>
 <translation id="3126069444801937830">再起動して更新</translation>
 <translation id="2268813581635650749">すべてログアウト</translation>
 <translation id="735745346212279324">VPN が切断されました</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">言語と入力方法をカスタマイズ...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/>(<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">シェルフの位置</translation>
-<translation id="2903907270192926896">入力</translation>
 <translation id="8676770494376880701">低電力の充電器に接続されています</translation>
 <translation id="7170041865419449892">圏外</translation>
 <translation id="4804818685124855865">切断</translation>
@@ -77,18 +79,23 @@
 切り替えるには Shift+Alt キーを押します。</translation>
 <translation id="2562916301614567480">プライベート ネットワーク</translation>
 <translation id="6549021752953852991">利用可能なセルラー ネットワークがありません</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/>(HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us.(このモニターはサポートされていません)</translation>
 <translation id="6426039856985689743">モバイル データを無効にする</translation>
 <translation id="3087734570205094154">下</translation>
 <translation id="3742055079367172538">スクリーンショット撮影完了</translation>
 <translation id="8878886163241303700">画面を拡張しています</translation>
 <translation id="5271016907025319479">VPN が設定されていません。</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/>(Bluetooth)</translation>
+<translation id="3967919079500697218">スクリーンショットを撮る機能は、管理者によって無効にされています。</translation>
 <translation id="372094107052732682">終了するには Ctrl+Shift+Q を 2 回押してください。</translation>
 <translation id="6803622936009808957">サポートされている解像度が見つからなかったため、ディスプレイをミラーリングできませんでした。代わりに拡張デスクトップ モードに切り替えました。</translation>
 <translation id="1480041086352807611">デモ モード</translation>
 <translation id="3626637461649818317">残り <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">入力方法</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">「<ph name="NAME"/>」を有効にするにはネットワークに接続する必要があります。</translation>
+<translation id="3963445509666917109">スピーカー(内蔵)</translation>
 <translation id="2825619548187458965">シェルフ</translation>
 <translation id="2614835198358683673">この充電器がオンになっている間は、Chromebook が充電されない可能性があります。正規の充電器の使用をご検討ください。</translation>
 <translation id="1895658205118569222">シャットダウン</translation>
@@ -98,19 +105,19 @@
 <translation id="7874779702599364982">携帯電話ネットワークを検索しています...</translation>
 <translation id="583281660410589416">不明</translation>
 <translation id="1383876407941801731">検索</translation>
-<translation id="7468789844759750875">データを追加購入するには、<ph name="NAME"/> の有効化ポータルにアクセスしてください。</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> に接続しています</translation>
 <translation id="2204305834655267233">ネットワーク情報</translation>
 <translation id="1621499497873603021">バッテリーが空になるまであと: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">ゲスト セッションを終了</translation>
 <translation id="8308637677604853869">前のメニュー</translation>
 <translation id="4666297444214622512">別のアカウントにログインすることはできません。</translation>
+<translation id="3625258641415618104">スクリーンショットが無効</translation>
 <translation id="1346748346194534595">右</translation>
 <translation id="1773212559869067373">認証証明書がローカルで拒否されました</translation>
 <translation id="8528322925433439945">モバイル...</translation>
 <translation id="7049357003967926684">アソシエーション</translation>
 <translation id="8428213095426709021">設定</translation>
-<translation id="2372145515558759244">アプリの同期...</translation>
+<translation id="2372145515558759244">アプリの同期中...</translation>
 <translation id="7256405249507348194">不明なエラー: <ph name="DESC"/></translation>
 <translation id="7925247922861151263">AAA を確認できませんでした</translation>
 <translation id="8456362689280298700">フル充電まで: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">起動失敗</translation>
 <translation id="5097002363526479830">ネットワーク「<ph name="NAME"/>」に接続できませんでした: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi が無効になりました。</translation>
+<translation id="2966449113954629791">モバイル データの割り当て量をすべて使用している可能性があります。データを追加購入するには、<ph name="NAME"/> の有効化ポータルにアクセスしてください。</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> に接続しました</translation>
 <translation id="7052914147756339792">壁紙を設定...</translation>
 <translation id="8678698760965522072">オンライン状態</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">復元</translation>
 <translation id="4274292172790327596">不明なエラー</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ヘッドホン</translation>
 <translation id="225680501294068881">デバイスをスキャンしています...</translation>
 <translation id="5597451508971090205"><ph name="DATE"/> (<ph name="SHORT_WEEKDAY"/>)</translation>
+<translation id="737451040872859086">マイク(内蔵)</translation>
 <translation id="4448844063988177157">Wi-Fi ネットワークを検出しています...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' への接続に失敗しました: <ph name="DETAILS"/>
 サーバー メッセージ: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">エラーが発生しました</translation>
 <translation id="7229570126336867161">EVDO が必要です</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> は <ph name="DOMAIN"/> が管理する公開セッションです</translation>
+<translation id="9044646465488564462">ネットワークに接続できませんでした: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">セッションを終了</translation>
 <translation id="8454013096329229812">Wi-Fi が有効になりました。</translation>
 <translation id="4872237917498892622">Alt+ 検索/Shift</translation>
 <translation id="9201131092683066720">バッテリー残量: <ph name="PERCENTAGE"/>%。</translation>
 <translation id="2983818520079887040">設定...</translation>
+<translation id="3871838685472846647">携帯電話が有効になりました</translation>
 <translation id="1195412055398077112">オーバースキャン</translation>
-<translation id="1717216362413677834">ドック モード</translation>
 <translation id="112308213915226829">シェルフを自動的に隠す</translation>
+<translation id="7573962313813535744">ドッキング モード</translation>
 <translation id="8927026611342028580">接続をリクエスト済み</translation>
 <translation id="8300849813060516376">OTASP に失敗しました</translation>
 <translation id="2792498699870441125">Alt+ 検索</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">バッテリー残量: <ph name="PERCENTAGE"/>%、充電しています。</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: 有効にしています...</translation>
 <translation id="4895488851634969361">バッテリー残量: 満。</translation>
-<translation id="1391854757121130358">モバイル データの使用量上限に達した可能性があります。</translation>
 <translation id="5947494881799873997">元に戻す</translation>
 <translation id="7593891976182323525">検索/Shift</translation>
 <translation id="7649070708921625228">ヘルプ</translation>
+<translation id="747833637904845037">Chromebook は、外部ディスプレイに接続されている間、フタが閉じていても電源はオンのままとなります。</translation>
 <translation id="3050422059534974565">CapsLock がオンになっています。
 検索/Shift キーを押すと解除されます。</translation>
 <translation id="397105322502079400">計算しています...</translation>
 <translation id="158849752021629804">ホーム ネットワークが必要です</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> を有効にする</translation>
 <translation id="5864471791310927901">DHCP を検索できませんでした</translation>
-<translation id="5812035014844949013">出力</translation>
 <translation id="6692173217867674490">パスフレーズが正しくありません</translation>
 <translation id="6165508094623778733">詳しく見る</translation>
 <translation id="9046895021617826162">接続に失敗しました</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">バッテリー残量: 少(<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">承諾</translation>
 <translation id="5102001756192215136">残り時間: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">出力</translation>
 <translation id="520760366042891468">ハングアウトを介して画面の制御を共有しています。</translation>
 <translation id="8000066093800657092">ネットワーク接続なし</translation>
 <translation id="4015692727874266537">別のアカウントにログイン...</translation>
 <translation id="5941711191222866238">最小化</translation>
 <translation id="6911468394164995108">他のネットワークに接続...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">「<ph name="NAME"/>」データ サービスが有効になり、使用できるようになりました。</translation>
 <translation id="412065659894267608">フル充電まで <ph name="HOUR"/> 時間 <ph name="MINUTE"/> 分</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> の SMS</translation>
 <translation id="1244147615850840081">通信会社</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index a5bb15e..72b47ce 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">ಬಹು ಸೈನ್-ಇನ್‌ನಲ್ಲಿ ನೀವು ಮೂರರಷ್ಟು ಖಾತೆಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಬಹುದು.</translation>
 <translation id="370649949373421643">Wi-Fi ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="3626281679859535460">ಪ್ರಕಾಶಮಾನ</translation>
+<translation id="3621202678540785336">ಇನ್‌ಪುಟ್</translation>
 <translation id="595202126637698455">ಕಾರ್ಯಕ್ಷಮತೆ ಟ್ರೇಸಿಂಗ್ ಸಕ್ರಿಯಗೊಂಡಿದೆ</translation>
 <translation id="8054466585765276473">ಬ್ಯಾಟರಿ ಸಮಯವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="7982789257301363584">ನೆಟ್‌ವರ್ಕ್</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">ಸ್ಥಿತಿ ಟ್ರೆ</translation>
 <translation id="1661867754829461514">PIN ಕಾಣೆಯಾಗಿದೆ</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="40400351611212369">ನೆಟ್‌ವರ್ಕ್ ಸಕ್ರಿಯತೆ ದೋಷ</translation>
 <translation id="4237016987259239829">ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕದ ದೋಷ</translation>
 <translation id="2946640296642327832">bluetooth ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/> ಗೆ ಪರದೆಯನ್ನು ವಿಸ್ತರಿಸಲಾಗುತ್ತಿದೆ</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangouts ಮೂಲಕ <ph name="HELPER_NAME"/> ಅವರೊಂದಿಗೆ ನಿಮ್ಮ ಪರದೆಯ ನಿಯಂತ್ರಣವನ್ನು ಹಂಚಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="7864539943188674973">bluetooth ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="939252827960237676">ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">ನವೀಕರಿಸಲು ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="2268813581635650749">ಎಲ್ಲವನ್ನೂ ಸೈನ್ ಔಟ್ ಮಾಡಿ</translation>
 <translation id="735745346212279324">VPN ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">ಭಾಷೆಗಳು ಮತ್ತು ಇನ್‌ಪುಟ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">ಶೆಲ್ಫ್ ಸ್ಥಾನ</translation>
-<translation id="2903907270192926896">ಇನ್‌ಪುಟ್</translation>
 <translation id="8676770494376880701">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ</translation>
 <translation id="7170041865419449892">ವ್ಯಾಪ್ತಿಯ ಹೊರಗೆ</translation>
 <translation id="4804818685124855865">ಡಿಸ್‌ಕನೆಕ್ಟ್</translation>
@@ -77,18 +79,23 @@
         ಬದಲಿಸಲು Shift + Alt ಕೀಲಿಯನ್ನು ಒತ್ತಿರಿ.</translation>
 <translation id="2562916301614567480">ಖಾಸಗಿ ನೆಟ್‌ವರ್ಕ್‌</translation>
 <translation id="6549021752953852991">ಯಾವುದೇ ಸೆಲ್ಯುಲಾರ್ ನೆಟ್‌ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">ಆತ್ಮೀಯ ಮಾನಿಟರ್, ನಮ್ಮ ನಡುವೆ ಸರಿಹೊಂದುತ್ತಿಲ್ಲ. (ಆ ಮಾನಿಟರ್ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ)</translation>
 <translation id="6426039856985689743">ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="3087734570205094154">ಕೆಳಗೆ</translation>
 <translation id="3742055079367172538">ಸ್ಕ್ರಿನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ</translation>
 <translation id="8878886163241303700">ಪರದೆಯನ್ನು ವಿಸ್ತರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="5271016907025319479">VPN ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿಲ್ಲ.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="372094107052732682">ತೊರೆಯಲು Ctrl+Shift+Q ಅನ್ನು ಎರಡು ಬಾರಿ ಒತ್ತಿರಿ.</translation>
 <translation id="6803622936009808957">ಯಾವುದೇ ಬೆಂಬಲಿತ ಪರಿಹಾರಗಳು ಕಂಡುಬರದ ಕಾರಣ ಪ್ರದರ್ಶನಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸಲಾಗಲಿಲ್ಲ. ಬದಲಿಗೆ ವಿಸ್ತರಿತ ಡೆಸ್ಕ್‌ಟಾಪ್ ಅನ್ನು ನಮೂದಿಸಲಾಗಿದೆ.</translation>
 <translation id="1480041086352807611">ಡೆಮೋ ಮೋಡ್</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% ಉಳಿದಿದೆ</translation>
 <translation id="9089416786594320554">ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳು</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' ನ ಸಕ್ರಿಯತೆಗೆ ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕ ಅಗತ್ಯವಿದೆ.</translation>
+<translation id="3963445509666917109">ಸ್ಪೀಕರ್ (ಆಂತರಿಕ)</translation>
 <translation id="2825619548187458965">ಶೆಲ್ಫ್</translation>
 <translation id="2614835198358683673">ನಿಮ್ಮ Chromebook ಆನ್ ಆಗಿರುವಾಗ ಅದು ಚಾರ್ಜ್ ಆಗುವುದಿಲ್ಲ. ಅಧಿಕೃತ ಚಾರ್ಜರ್ ಬಳಸಿ.</translation>
 <translation id="1895658205118569222">ಶಟ್‌ಡೌನ್</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">ಸೆಲ್ಯುಲರ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕುತ್ತಿದೆ...</translation>
 <translation id="583281660410589416">ಅಜ್ಞಾತ</translation>
 <translation id="1383876407941801731">ಹುಡುಕಾಟ</translation>
-<translation id="7468789844759750875">ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಖರೀದಿಸಲು <ph name="NAME"/> ಸಕ್ರಿಯ ಪೋರ್ಟಲ್ ಅನ್ನು ಭೇಟಿ ಮಾಡಿ.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2204305834655267233">ನೆಟ್‌ವರ್ಕ್ ಮಾಹಿತಿ</translation>
 <translation id="1621499497873603021">ಬ್ಯಾಟರಿ ಖಾಲಿ ಆಗುವವರೆಗೆ ಉಳಿದಿರುವ ಸಮಯ, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">ಅತಿಥಿ ಸೆಶೆನ್‌ನಿಂದ ನಿರ್ಗಮಿಸು</translation>
 <translation id="8308637677604853869">ಹಿಂದಿನ ಮೆನು</translation>
 <translation id="4666297444214622512">ಮತ್ತೊಂದು ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
+<translation id="3625258641415618104">ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="1346748346194534595">ಬಲಕ್ಕೆ</translation>
 <translation id="1773212559869067373">ದೃಢೀಕರಣ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸ್ಥಳೀಯವಾಗಿ ತಿರಸ್ಕರಿಸಲಾಗಿದೆ</translation>
 <translation id="8528322925433439945">ಮೊಬೈಲ್...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>' ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ವಿಫಲವಾಗಿದೆ: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi ಆಫ್ ಮಾಡಲಾಗಿದೆ.</translation>
+<translation id="2966449113954629791">ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾ ಭತ್ಯೆಯನ್ನು ನೀವು ಬಳಸಿರಬಹುದು. ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಖರೀದಿಸಲು <ph name="NAME"/> ಸಕ್ರಿಯೀಕರಣ ಪೋರ್ಟಲ್‌ಗೆ ಭೇಟಿ ನೀಡಿ.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ</translation>
 <translation id="7052914147756339792">ವಾಲ್‌ಪೇಪರ್ ಅನ್ನು ಹೊಂದಿಸಿ...</translation>
 <translation id="8678698760965522072">ಆನ್‌ಲೈನ್ ಸ್ಥಿತಿ</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">ಪುನಃಸ್ಥಾಪನೆ</translation>
 <translation id="4274292172790327596">ಗುರುತಿಸದೆ ಇರುವ ದೋಷ</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ಹೆಡ್‌ಫೋನ್</translation>
 <translation id="225680501294068881">ಸಾಧನಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">ಮೈಕ್ರೊಫೋನ್ (ಆಂತರಿಕ)</translation>
 <translation id="4448844063988177157">Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ವಿಫಲವಾಗಿದೆ: <ph name="DETAILS"/>
 ಸರ್ವರ್ ಸಂದೇಶ: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">ದೋಷವೊಂದು ಕಾಣಿಸಿಕೊಂಡಿದೆ</translation>
 <translation id="7229570126336867161">EVDO ಅಗತ್ಯವಿದೆ</translation>
 <translation id="2999742336789313416"><ph name="DOMAIN"/> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾದ ಸಾರ್ವಜನಿಕ ಸೆಶನ್ <ph name="DISPLAY_NAME"/> ಆಗಿದೆ</translation>
+<translation id="9044646465488564462">ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ವಿಫಲವಾಗಿದೆ: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">ಸೆಶನ್‌ನಿಂದ ನಿರ್ಗಮಿಸು</translation>
 <translation id="8454013096329229812">Wi-Fi ಆನ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="4872237917498892622">Alt+ಹುಡುಕಾಟ ಅಥವಾ Shift</translation>
 <translation id="9201131092683066720">ಬ್ಯಾಟರಿ <ph name="PERCENTAGE"/>% ಪೂರ್ಣವಾಗಿದೆ.</translation>
 <translation id="2983818520079887040">ಸೆಟ್ಟಿಂಗ್‌ಗಳು...</translation>
+<translation id="3871838685472846647">ಸೆಲ್ಯುಲಾರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="1195412055398077112">ಓವರ್‌ಸ್ಕ್ಯಾನ್</translation>
-<translation id="1717216362413677834">ಡಾಕ್ ಮೋಡ್</translation>
 <translation id="112308213915226829">ಶೆಲ್ಫ್ ಅನ್ನು ಸ್ವಯಂಮರೆಮಾಡು</translation>
+<translation id="7573962313813535744">ಪರಸ್ಪರ ಸಂಧಿಸುವ ಮೋಡ್</translation>
 <translation id="8927026611342028580">ಸಂಪರ್ಕವನ್ನು ವಿನಂತಿಸಲಾಗಿದೆ</translation>
 <translation id="8300849813060516376">OTASP ವಿಫಲವಾಗಿದೆ</translation>
 <translation id="2792498699870441125">Alt+ಹುಡುಕಾಟ</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">ಬ್ಯಾಟರಿ <ph name="PERCENTAGE"/>% ಪೂರ್ಣಗೊಂಡಿದೆ ಮತ್ತು ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="4895488851634969361">ಬ್ಯಾಟರಿ ತುಂಬಿದೆ.</translation>
-<translation id="1391854757121130358">ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾ ಭತ್ಯೆಯನ್ನು ನೀವು ಬಳಸಿರಬಹುದು.</translation>
 <translation id="5947494881799873997">ಹಿಂತಿರುಗಿಸು</translation>
 <translation id="7593891976182323525">ಹುಡುಕಾಟ ಅಥವಾ Shift</translation>
 <translation id="7649070708921625228">ಸಹಾಯ</translation>
+<translation id="747833637904845037">ಒಂದು ಆಂತರಿಕ ಪ್ರದರ್ಶನಕ್ಕೆ ನಿಮ್ಮ Chromebook ಸಂಪರ್ಕಗೊಂಡಿರುವ ಸಂದರ್ಭದಲ್ಲಿ, ಲಿಡ್ ಮುಚ್ಚಲಾಗಿದ್ದರೂ ಕೂಡ ಅನ್ ಆಗಿಯೇ ಉಳಿದಿರುತ್ತದೆ.</translation>
 <translation id="3050422059534974565">CAPS LOCK ಆನ್ ಆಗಿದೆ.
 ರದ್ದುಗೊಳಿಸಲು ಹುಡುಕಾಟ ಅಥವಾ Shift ಕೀಲಿಯನ್ನು ಒತ್ತಿರಿ.</translation>
 <translation id="397105322502079400">ಎಣಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="158849752021629804">ಹೋಮ್ ನೆಟ್‌ವರ್ಕ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="6857811139397017780">ಸಕ್ರಿಯಗೊಳಿಸಿ<ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP ಲುಕಪ್ ವಿಫಲವಾಗಿದೆ</translation>
-<translation id="5812035014844949013">ಔಟ್‌ಪುಟ್</translation>
 <translation id="6692173217867674490">ಕೆಟ್ಟ ಪಾಸ್‌ಫ್ರೇಸ್</translation>
 <translation id="6165508094623778733">ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
 <translation id="9046895021617826162">ಸಂಪರ್ಕವು ವಿಫಲವಾಗಿದೆ</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">ಬ್ಯಾಟರಿ ಕಡಿಮೆ (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">ಸಮ್ಮತಿಸು</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> ಉಳಿದಿದೆ</translation>
+<translation id="3009178788565917040">ಔಟ್‌ಪುಟ್</translation>
 <translation id="520760366042891468">Hangouts ಮೂಲಕ ನಿಮ್ಮ ಪರದೆಯ ನಿಯಂತ್ರಣವನ್ನು ಹಂಚಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="8000066093800657092">ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ</translation>
 <translation id="4015692727874266537">ಮತ್ತೊಂದು ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ...</translation>
 <translation id="5941711191222866238">ಕುಗ್ಗಿಸು</translation>
 <translation id="6911468394164995108">ಇತರರನ್ನು ಸೇರಿ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">ಅಭಿನಂದನೆಗಳು! ನಿಮ್ಮ '<ph name="NAME"/>' ಡೇಟಾ ಸೇವೆಯನ್ನು ಕ್ರಿಯಾತ್ಮಕಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಮುಂದುವರೆಯಲು ಸಿದ್ಧವಾಗಿದೆ.</translation>
 <translation id="412065659894267608">ಪೂರ್ಣವಾಗುವವರಗೆ <ph name="HOUR"/>ಗಂ <ph name="MINUTE"/>ನಿ</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> ನಿಂದ SMS</translation>
 <translation id="1244147615850840081">ವಾಹಕ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 5c77190..3b15ee9 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">멀티 로그인 시 계정은 최대 3개까지만 사용할 수 있습니다.</translation>
 <translation id="370649949373421643">Wi-Fi 사용</translation>
 <translation id="3626281679859535460">밝기</translation>
+<translation id="3621202678540785336">입력</translation>
 <translation id="595202126637698455">성능 추적 사용 중</translation>
 <translation id="8054466585765276473">배터리 시간 계산 중</translation>
 <translation id="7982789257301363584">네트워크</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">상태 표시줄</translation>
 <translation id="1661867754829461514">PIN이 없습니다.</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: 연결하는 중...</translation>
+<translation id="40400351611212369">네트워크 활성화 오류</translation>
 <translation id="4237016987259239829">네트워크 연결 오류</translation>
 <translation id="2946640296642327832">블루투스 사용</translation>
 <translation id="6459472438155181876">화면을 <ph name="DISPLAY_NAME"/>(으)로 확장</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">행아웃을 통해 화면 제어를 <ph name="HELPER_NAME"/>님과 공유 중</translation>
 <translation id="7864539943188674973">블루투스 사용 안 함</translation>
 <translation id="939252827960237676">캡처화면을 저장하지 못했습니다.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/>(USB)</translation>
 <translation id="3126069444801937830">업데이트하려면 다시 시작</translation>
 <translation id="2268813581635650749">모두 로그아웃</translation>
 <translation id="735745346212279324">VPN 연결 끊김</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">언어 및 입력 설정...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/>(<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">서가 위치</translation>
-<translation id="2903907270192926896">입력:</translation>
 <translation id="8676770494376880701">저출력 충전기 연결됨</translation>
 <translation id="7170041865419449892">범위를 벗어났습니다.</translation>
 <translation id="4804818685124855865">연결 해제</translation>
@@ -77,18 +79,23 @@
 전환하려면 Shift+Alt를 누르세요.</translation>
 <translation id="2562916301614567480">사설 네트워크</translation>
 <translation id="6549021752953852991">사용 가능한 휴대전화 네트워크가 없음</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/>(HDMI)</translation>
 <translation id="4379753398862151997">확장 데스크톱에 어울리지 않는 모니터네요. (지원되지 않는 모니터입니다.)</translation>
 <translation id="6426039856985689743">모바일 데이터 사용 안함</translation>
 <translation id="3087734570205094154">맨 아래</translation>
 <translation id="3742055079367172538">찍은 캡처화면</translation>
 <translation id="8878886163241303700">화면 확대</translation>
 <translation id="5271016907025319479">VPN이 구성되지 않았습니다.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/>(블루투스)</translation>
+<translation id="3967919079500697218">관리자가 스크린샷 캡쳐 기능을 사용 중지했습니다.</translation>
 <translation id="372094107052732682">종료하려면 Ctrl+Shift+Q를 두 번 누릅니다.</translation>
 <translation id="6803622936009808957">지원되는 해상도가 없으므로 디스플레이를 그대로 반영할 수 없습니다. 대신 확장 데스크톱을 시작했습니다.</translation>
 <translation id="1480041086352807611">데모 모드</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% 남음</translation>
 <translation id="9089416786594320554">입력 방법</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">네트워크를 연결하려면 '<ph name="NAME"/>' 활성화가 필수입니다.</translation>
+<translation id="3963445509666917109">스피커(내부)</translation>
 <translation id="2825619548187458965">서가</translation>
 <translation id="2614835198358683673">크롬북이 켜져 있으면 충전되지 않을 수 있습니다. 공식 충전기를 사용해보세요.</translation>
 <translation id="1895658205118569222">종료</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">휴대전화 네트워크를 검색하는 중...</translation>
 <translation id="583281660410589416">알 수 없음</translation>
 <translation id="1383876407941801731">검색</translation>
-<translation id="7468789844759750875">추가 데이터를 구입하려면 <ph name="NAME"/> 활성화 포탈을 방문하세요.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/>에 연결 중</translation>
 <translation id="2204305834655267233">네트워크 정보</translation>
 <translation id="1621499497873603021">남은 배터리 사용 시간은 <ph name="TIME_LEFT"/>입니다.</translation>
 <translation id="5980301590375426705">손님 세션 종료</translation>
 <translation id="8308637677604853869">이전 메뉴</translation>
 <translation id="4666297444214622512">다른 계정에 로그인할 수 없습니다.</translation>
+<translation id="3625258641415618104">스크린샷 캡쳐 사용 중지됨</translation>
 <translation id="1346748346194534595">오른쪽</translation>
 <translation id="1773212559869067373">인증서가 로컬로 거부됨</translation>
 <translation id="8528322925433439945">모바일 ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">활성화 실패</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>' 네트워크에 연결하지 못했습니다: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi가 꺼져 있습니다.</translation>
+<translation id="2966449113954629791">할당되 모바일 데이터를 모두 사용한 것 같습니다. 추가 데이터를 구입하려면 <ph name="NAME"/> 활성화 포털을 방문하세요.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/>에 연결됨</translation>
 <translation id="7052914147756339792">배경화면 설정...</translation>
 <translation id="8678698760965522072">온라인 상태</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">복구</translation>
 <translation id="4274292172790327596">인식할 수 없는 오류</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">헤드폰</translation>
 <translation id="225680501294068881">기기 검색 중...</translation>
 <translation id="5597451508971090205"><ph name="DATE"/> <ph name="SHORT_WEEKDAY"/></translation>
+<translation id="737451040872859086">마이크(내부)</translation>
 <translation id="4448844063988177157">Wi-Fi 네트워크를 검색하는 중...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>'에 연결하지 못함: <ph name="DETAILS"/>
 서버 메시지: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">오류가 발생했습니다.</translation>
 <translation id="7229570126336867161">EVDO가 필요합니다.</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/>은(는) <ph name="DOMAIN"/>에서 관리하는 공개 세션입니다.</translation>
+<translation id="9044646465488564462">네트워크 연결 실패: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">세션 종료</translation>
 <translation id="8454013096329229812">Wi-Fi가 켜져 있습니다.</translation>
 <translation id="4872237917498892622">Alt+검색 또는 Shift 키</translation>
 <translation id="9201131092683066720">배터리가 <ph name="PERCENTAGE"/>% 남았습니다.</translation>
 <translation id="2983818520079887040">설정...</translation>
+<translation id="3871838685472846647">휴대전화 활성화</translation>
 <translation id="1195412055398077112">오버스캔</translation>
-<translation id="1717216362413677834">도크 모드</translation>
 <translation id="112308213915226829">서가 자동 숨김</translation>
+<translation id="7573962313813535744">고정 모드</translation>
 <translation id="8927026611342028580">연결 요청됨</translation>
 <translation id="8300849813060516376">OTASP 실패</translation>
 <translation id="2792498699870441125">Alt+검색 키</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">배터리가 <ph name="PERCENTAGE"/>% 충전되었으며 충전 중입니다.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: 활성화 중...</translation>
 <translation id="4895488851634969361">배터리 충전이 완료되었습니다.</translation>
-<translation id="1391854757121130358">모바일 데이터 사용량을 모두 사용했을 수 있습니다.</translation>
 <translation id="5947494881799873997">되돌리기</translation>
 <translation id="7593891976182323525">검색 또는 Shift 키</translation>
 <translation id="7649070708921625228">도움말</translation>
+<translation id="747833637904845037">크롬북이 외부 디스플레이에 연결되어 있는 동안은 덮개를 닫아도 전원이 켜진 채로 유지됩니다.</translation>
 <translation id="3050422059534974565">CAPS LOCK이 켜져 있습니다.
 취소하려면 검색 또는 Shift 키를 누릅니다.</translation>
 <translation id="397105322502079400">계산 중...</translation>
 <translation id="158849752021629804">홈 네크워크가 필요합니다.</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> 활성화</translation>
 <translation id="5864471791310927901">DHCP 조회 실패</translation>
-<translation id="5812035014844949013">출력</translation>
 <translation id="6692173217867674490">잘못된 암호</translation>
 <translation id="6165508094623778733">자세히 알아보기</translation>
 <translation id="9046895021617826162">연결 실패</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">배터리 부족(<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">수락</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> 남음</translation>
+<translation id="3009178788565917040">출력</translation>
 <translation id="520760366042891468">행아웃을 통해 화면 제어 권한 공유 중</translation>
 <translation id="8000066093800657092">네트워크 없음</translation>
 <translation id="4015692727874266537">다른 계정에 로그인...</translation>
 <translation id="5941711191222866238">최소화</translation>
 <translation id="6911468394164995108">다른 네트워크에 연결</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">축하합니다. '<ph name="NAME"/>' 데이터 서비스가 활성화되어 사용할 수 있습니다.</translation>
 <translation id="412065659894267608">충전 완료까지 <ph name="HOUR"/>시간 <ph name="MINUTE"/>분 남음</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/>에서 전송된 SMS</translation>
 <translation id="1244147615850840081">네트워크 사업자</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 0bb860e..d7c1b6f 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Naudodami kelių paskyrų funkciją, galite turėti iki trijų paskyrų.</translation>
 <translation id="370649949373421643">Įgalinti „Wi-Fi“</translation>
 <translation id="3626281679859535460">Skaistis</translation>
+<translation id="3621202678540785336">Įvestis</translation>
 <translation id="595202126637698455">Įgalintas našumo stebėjimas</translation>
 <translation id="8054466585765276473">Apskaičiuojamas laikas, likęs iki akumuliatoriaus išsikrovimo.</translation>
 <translation id="7982789257301363584">Tinklas</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Būsenos dėklas</translation>
 <translation id="1661867754829461514">Trūksta PIN kodo</translation>
 <translation id="4508225577814909926">„<ph name="NAME"/>“: jungiamasi...</translation>
+<translation id="40400351611212369">Tinklo aktyvinimo klaida</translation>
 <translation id="4237016987259239829">Tinklo ryšio klaida</translation>
 <translation id="2946640296642327832">Įgalinti „Bluetooth“</translation>
 <translation id="6459472438155181876">Ekranas išplečiamas į <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Jūsų ekrano valdymas bendrinamas su <ph name="HELPER_NAME"/> per „Hangout“.</translation>
 <translation id="7864539943188674973">Neleisti „Bluetooth“</translation>
 <translation id="939252827960237676">Išsaugant ekrano kopiją įvyko klaida</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Paleisti iš naujo, kad būtų atnaujinta</translation>
 <translation id="2268813581635650749">Atjungti visus</translation>
 <translation id="735745346212279324">VPN atjungtas</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Tinkinti kalbas ir įvestį...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Lentynos pozicija</translation>
-<translation id="2903907270192926896">ĮVESTIS</translation>
 <translation id="8676770494376880701">Prijungtas mažos galios įkroviklis</translation>
 <translation id="7170041865419449892">Nepasiekiama</translation>
 <translation id="4804818685124855865">Atsijungti</translation>
@@ -77,18 +79,23 @@
         Jei norite perjungti, paspauskite „Shift“ + „Alt“.</translation>
 <translation id="2562916301614567480">Privatus tinklas</translation>
 <translation id="6549021752953852991">Nėra jokių pasiekiamų korinio ryšio tinklų</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Mielas monitoriau, mums nepavyksta bendradarbiauti. (Tas monitorius nepalaikomas)</translation>
 <translation id="6426039856985689743">Neleisti duomenų mobiliesiems</translation>
 <translation id="3087734570205094154">Apačia</translation>
 <translation id="3742055079367172538">Ekrano kopija padaryta</translation>
 <translation id="8878886163241303700">Išplečiamas ekranas</translation>
 <translation id="5271016907025319479">VPN nesukonfigūruotas.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> („Bluetooth“)</translation>
+<translation id="3967919079500697218">Jūsų administratorius išjungė ekrano kopijų kūrimo funkciją.</translation>
 <translation id="372094107052732682">Jei norite išeiti, du kartus paspauskite „Ctrl“ + „Shift“ + Q.</translation>
 <translation id="6803622936009808957">Nepavyko dubliuoti vaizdų, nes nepavyko rasti palaikomų skyrų. Vietoje to įjungtas išplėstinio darbalaukio režimas.</translation>
 <translation id="1480041086352807611">Demonstracinės versijos režimas</translation>
 <translation id="3626637461649818317">Liko <ph name="PERCENTAGE"/> proc.</translation>
 <translation id="9089416786594320554">Įvesties metodai</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Norint suaktyvinti „<ph name="NAME"/>“ būtinas tinklo ryšys.</translation>
+<translation id="3963445509666917109">Garsiakalbis (vidinis)</translation>
 <translation id="2825619548187458965">Lentyna</translation>
 <translation id="2614835198358683673">„Chromebook“ gali nebūti įkraunamas, kai jis įjungtas. Apsvarstykite galimybę naudoti originalų įkroviklį.</translation>
 <translation id="1895658205118569222">Išjungimas</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Ieškoma korinio ryšio tinklų...</translation>
 <translation id="583281660410589416">Nežinoma</translation>
 <translation id="1383876407941801731">Ieškoti</translation>
-<translation id="7468789844759750875">Apsilankykite „<ph name="NAME"/>“ aktyvinimo portale, kad nusipirktumėte daugiau duomenų.</translation>
 <translation id="3901991538546252627">Jungiamasi prie „<ph name="NAME"/>“</translation>
 <translation id="2204305834655267233">Tinklo informacija</translation>
 <translation id="1621499497873603021">Laikas, likęs iki akumuliatoriaus išsikrovimo: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Išeiti iš svečio režimo</translation>
 <translation id="8308637677604853869">Ankstesnis meniu</translation>
 <translation id="4666297444214622512">Negalima prisijungti prie kitos paskyros.</translation>
+<translation id="3625258641415618104">Ekrano kopijos išjungtos</translation>
 <translation id="1346748346194534595">Dešinė</translation>
 <translation id="1773212559869067373">Autentifikavimo sertifikatas atmestas vietiniu mastu</translation>
 <translation id="8528322925433439945">Mobilusis...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktyvinimo triktis</translation>
 <translation id="5097002363526479830">Nepavyko prisijungti prie tinklo „<ph name="NAME"/>“: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">„Wi-Fi“ ryšys išjungtas.</translation>
+<translation id="2966449113954629791">Gali būti, kad pasiekėte mobiliojo ryšio duomenų apribojimą. Apsilankykite „<ph name="NAME"/>“ suaktyvinimo portale, kad įsigytumėte daugiau duomenų.</translation>
 <translation id="8132793192354020517">Prisijungta prie „<ph name="NAME"/>“</translation>
 <translation id="7052914147756339792">Nustatyti darbalaukio foną...</translation>
 <translation id="8678698760965522072">Būsena „Prisijungus“</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Atkurti</translation>
 <translation id="4274292172790327596">Neatpažįstama klaida</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Ausinės</translation>
 <translation id="225680501294068881">Ieškoma įrenginių...</translation>
 <translation id="5597451508971090205"><ph name="DATE"/>, <ph name="SHORT_WEEKDAY"/></translation>
+<translation id="737451040872859086">Mikrofonas (vidinis)</translation>
 <translation id="4448844063988177157">Ieškoma „Wi-Fi“ tinklų...</translation>
 <translation id="8401662262483418323">Nepavyko prisijungti prie „<ph name="NAME"/>“: <ph name="DETAILS"/>
 Serverio pranešimas: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Įvyko klaida</translation>
 <translation id="7229570126336867161">Reikia EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> yra vieša sesija, valdoma <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Nepavyko prisijungti prie tinklo: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Išeiti iš sesijos</translation>
 <translation id="8454013096329229812">„Wi-Fi“ ryšys įjungtas.</translation>
 <translation id="4872237917498892622">„Alt“ + paieškos arba antrojo lygio klavišas</translation>
 <translation id="9201131092683066720">Likusi akumuliatoriaus įkrova: <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Nustatymai...</translation>
+<translation id="3871838685472846647">Suaktyvintas korinis ryšys</translation>
 <translation id="1195412055398077112">sritis aplink vaizdo kraštus</translation>
-<translation id="1717216362413677834">Doko režimas</translation>
 <translation id="112308213915226829">Automatiškai slėpti lentyną</translation>
+<translation id="7573962313813535744">Doko režimas</translation>
 <translation id="8927026611342028580">Pateikta prisijungimo užklausa</translation>
 <translation id="8300849813060516376">OTASP nepavyko</translation>
 <translation id="2792498699870441125">„Alt“ + paieškos klavišas</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Likusi akumuliatoriaus įkrova: <ph name="PERCENTAGE"/> %. Jis įkraunamas.</translation>
 <translation id="6267036997247669271">„<ph name="NAME"/>“: aktyvinama...</translation>
 <translation id="4895488851634969361">Akumuliatorius visiškai įkrautas.</translation>
-<translation id="1391854757121130358">Galbūt išnaudojote savo mobiliojo ryšio duomenų normą.</translation>
 <translation id="5947494881799873997">Grąžinti</translation>
 <translation id="7593891976182323525">Paieškos arba antrojo lygio klavišas</translation>
 <translation id="7649070708921625228">Žinynas</translation>
+<translation id="747833637904845037">„Chromebook“ įrenginys bus įjungtas, kol bus prijungtas prie išorinio ekrano, net jei jis uždarytas.</translation>
 <translation id="3050422059534974565">DIDŽIŲJŲ RAIDŽIŲ RAŠYMAS įjungtas.
 Jei norite atšaukti, paspauskite paieškos arba antrojo lygio klavišą.</translation>
 <translation id="397105322502079400">Skaičiuojama...</translation>
 <translation id="158849752021629804">Reikalingas namų tinklas</translation>
 <translation id="6857811139397017780">Suaktyvinti „<ph name="NETWORKSERVICE"/>“</translation>
 <translation id="5864471791310927901">DHCP paieška nepavyko</translation>
-<translation id="5812035014844949013">IŠVESTIS</translation>
 <translation id="6692173217867674490">Netinkama slaptafrazė</translation>
 <translation id="6165508094623778733">Sužinokite daugiau</translation>
 <translation id="9046895021617826162">Nepavyko prisijungti</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Akumuliatorius senka (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Priimti</translation>
 <translation id="5102001756192215136">Liko <ph name="HOUR"/>.<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Išvestis</translation>
 <translation id="520760366042891468">Jūsų ekrano valdymas bendrinamas per „Hangout“.</translation>
 <translation id="8000066093800657092">Tinklo nėra</translation>
 <translation id="4015692727874266537">Prisijungti prie kitos paskyros...</translation>
 <translation id="5941711191222866238">Sumažinti</translation>
 <translation id="6911468394164995108">Prisijungti prie kito...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Sveikiname! Jūsų „<ph name="NAME"/>“ duomenų paslauga buvo suaktyvinta ir yra paruošta naudoti.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> val. <ph name="MINUTE"/> min. iki visiško įkrovimo</translation>
 <translation id="6359806961507272919">SMS iš <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operatorius</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 71e8d06..a03056b 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Vairākkārtējas pierakstīšanās laikā var izmantot ne vairāk kā trīs kontus.</translation>
 <translation id="370649949373421643">Iespējot Wi-Fi</translation>
 <translation id="3626281679859535460">Spilgtums</translation>
+<translation id="3621202678540785336">Ievade</translation>
 <translation id="595202126637698455">Veiktspējas izsekošana ir iespējota</translation>
 <translation id="8054466585765276473">Notiek akumulatora darbības ilguma aprēķināšana.</translation>
 <translation id="7982789257301363584">Tīkls</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Statusa tekne</translation>
 <translation id="1661867754829461514">Trūkst PIN koda</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: notiek savienojuma izveide...</translation>
+<translation id="40400351611212369">Tīkla aktivizācijas kļūda</translation>
 <translation id="4237016987259239829">Tīkla savienojuma kļūda</translation>
 <translation id="2946640296642327832">Iespējot Bluetooth</translation>
 <translation id="6459472438155181876">Paplašina ekrānu uz: <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Ekrāna vadības kopīgošana ar lietotāju <ph name="HELPER_NAME"/>, izmantojot funkciju Hangouts.</translation>
 <translation id="7864539943188674973">Atspējot Bluetooth</translation>
 <translation id="939252827960237676">Neizdevās saglabāt ekrānuzņēmumu.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Restartēt, lai atjauninātu</translation>
 <translation id="2268813581635650749">Izrakstīt visus</translation>
 <translation id="735745346212279324">VPN ir atvienots</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Pielāgot valodas un ievadi...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Plaukta pozīcija</translation>
-<translation id="2903907270192926896">IEEJA</translation>
 <translation id="8676770494376880701">Pievienots lādētājs ar mazu strāvas padevi</translation>
 <translation id="7170041865419449892">Ārpus diapazona</translation>
 <translation id="4804818685124855865">Atvienot</translation>
@@ -77,18 +79,23 @@
 Lai to pārslēgtu, nospiediet taustiņu kombināciju Shift+Alt.</translation>
 <translation id="2562916301614567480">Privāts tīkls</translation>
 <translation id="6549021752953852991">Mobilais tīkls nav pieejams.</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Diemžēl monitoru nevar izmantot (tas netiek atbalstīts).</translation>
 <translation id="6426039856985689743">Atspējot mobilo datu pārraidi</translation>
 <translation id="3087734570205094154">Apakša</translation>
 <translation id="3742055079367172538">Ekrānuzņēmums ir uzņemts</translation>
 <translation id="8878886163241303700">Notiek ekrāna izvēršana</translation>
 <translation id="5271016907025319479">VPN nav konfigurēts.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Jūsu administrators ir atspējojis ekrānuzņēmumu veidošanu.</translation>
 <translation id="372094107052732682">Lai izietu, divas reizes nospiediet taustiņu kombināciju Ctrl+Shift+Q.</translation>
 <translation id="6803622936009808957">Nevarēja spoguļot displejus, jo netika atrasta atbalstīta izšķirtspēja. Tā vietā tika aktivizēts paplašinātās darbvirsmas režīms.</translation>
 <translation id="1480041086352807611">Demonstrācijas režīms</translation>
 <translation id="3626637461649818317">Atlikums: <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Ievades metodes</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277"><ph name="NAME"/> aktivizācijai ir nepieciešams tīkla savienojums.</translation>
+<translation id="3963445509666917109">Skaļrunis (iekšējais)</translation>
 <translation id="2825619548187458965">Plaukts</translation>
 <translation id="2614835198358683673">Jūsu Chromebook dators, iespējams, netiks uzlādēts, kamēr tas ir ieslēgts. Ieteicams izmantot oriģinālo lādētāju.</translation>
 <translation id="1895658205118569222">Izslēgšana</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Notiek mobilo sakaru tīklu meklēšana...</translation>
 <translation id="583281660410589416">Nezināms</translation>
 <translation id="1383876407941801731">Meklēšana</translation>
-<translation id="7468789844759750875">Lai iegādātos citus datus, apmeklējiet <ph name="NAME"/> aktivizācijas portālu.</translation>
 <translation id="3901991538546252627">Notiek savienojuma izveide ar <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Tīkla informācija</translation>
 <translation id="1621499497873603021">Atlikušais akumulatora darbības laiks: <ph name="TIME_LEFT"/>.</translation>
 <translation id="5980301590375426705">Aizvērt viesa sesiju</translation>
 <translation id="8308637677604853869">Iepriekšējā izvēlne</translation>
 <translation id="4666297444214622512">Nevar pierakstīties citā kontā.</translation>
+<translation id="3625258641415618104">Ekrānuzņēmumi atspējoti</translation>
 <translation id="1346748346194534595">Pa labi</translation>
 <translation id="1773212559869067373">Autentifikācijas sertifikāts tika lokāli noraidīts.</translation>
 <translation id="8528322925433439945">Mobilās ierīces...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktivizācijas kļūme</translation>
 <translation id="5097002363526479830">Neizdevās izveidot savienojumu ar tīklu <ph name="NAME"/>: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi tīkls ir izslēgts.</translation>
+<translation id="2966449113954629791">Iespējams, esat jau izmantojis savu mobilo datu atļauju. Lai iegādātos citus datus, apmeklējiet <ph name="NAME"/> aktivizācijas portālu.</translation>
 <translation id="8132793192354020517">Savienots ar <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Iestatīt fona tapeti...</translation>
 <translation id="8678698760965522072">Tiešsaistes statuss</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Atjaunot</translation>
 <translation id="4274292172790327596">Neatpazīta kļūda</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Austiņas</translation>
 <translation id="225680501294068881">Notiek ierīču meklēšana...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofons (iekšējais)</translation>
 <translation id="4448844063988177157">Notiek Wi-Fi tīklu meklēšana...</translation>
 <translation id="8401662262483418323">Neizdevās izveidot savienojumu ar “<ph name="NAME"/>”: <ph name="DETAILS"/>
 Servera ziņojums: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Radās kļūda</translation>
 <translation id="7229570126336867161">Nepieciešams EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> ir publiska sesija, kas tiek pārvaldīta domēnā <ph name="DOMAIN"/>.</translation>
+<translation id="9044646465488564462">Neizdevās izveidot savienojumu ar tīklu: <ph name="DETAILS"/>.</translation>
 <translation id="7029814467594812963">Iziet no sesijas</translation>
 <translation id="8454013096329229812">Wi-Fi tīkls ir ieslēgts.</translation>
 <translation id="4872237917498892622">Alt+Meklēt vai Shift</translation>
 <translation id="9201131092683066720">Akumulatora uzlādes līmenis: <ph name="PERCENTAGE"/>%</translation>
 <translation id="2983818520079887040">Iestatījumi...</translation>
+<translation id="3871838685472846647">Mobilais tālrunis aktivizēts</translation>
 <translation id="1195412055398077112">attēla izvērse</translation>
-<translation id="1717216362413677834">Dokošanas režīms</translation>
 <translation id="112308213915226829">Automātiski slēpt plauktu</translation>
+<translation id="7573962313813535744">Dokošanas režīms</translation>
 <translation id="8927026611342028580">Ir pieprasīta savienojuma izveide.</translation>
 <translation id="8300849813060516376">OTASP neizdevās</translation>
 <translation id="2792498699870441125">Alt+Meklēt</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Akumulatora uzlādes līmenis: <ph name="PERCENTAGE"/>%; uzlāde tiek turpināta.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: notiek aktivizēšana...</translation>
 <translation id="4895488851634969361">Akumulators ir pilnībā uzlādēts.</translation>
-<translation id="1391854757121130358">Iespējams, esat jau izmantojis savu mobilo datu atļauju.</translation>
 <translation id="5947494881799873997">Atgriezt</translation>
 <translation id="7593891976182323525">Meklēt vai Shift</translation>
 <translation id="7649070708921625228">Palīdzība</translation>
+<translation id="747833637904845037">Jūsu Chromebook dators kādu laiku būs savienots ar ārēju displeju, pat ja datora vāks būs aizvērts.</translation>
 <translation id="3050422059534974565">Ir ieslēgts BURTSLĒGS.
 Lai atceltu tā funkcionalitāti, nospiediet Meklēt vai Shift.</translation>
 <translation id="397105322502079400">Aprēķina...</translation>
 <translation id="158849752021629804">Nepieciešams mājas tīkls</translation>
 <translation id="6857811139397017780">Aktivizēt <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP uzmeklēšana neizdevās</translation>
-<translation id="5812035014844949013">IZEJA</translation>
 <translation id="6692173217867674490">Neatbilstoša ieejas frāze</translation>
 <translation id="6165508094623778733">Uzziniet vairāk</translation>
 <translation id="9046895021617826162">Savienojums neizdevās</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Akumulators gandrīz tukšs (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Pieņemt</translation>
 <translation id="5102001756192215136">Atlicis: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Izvade</translation>
 <translation id="520760366042891468">Ekrāna vadības kopīgošana, izmantojot funkciju Hangouts.</translation>
 <translation id="8000066093800657092">Nav tīkla</translation>
 <translation id="4015692727874266537">Pierakstīties citā kontā...</translation>
 <translation id="5941711191222866238">Minimizēt</translation>
 <translation id="6911468394164995108">Pievienoties citam...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Jūsu “<ph name="NAME"/>” datu pakalpojums ir veiksmīgi aktivizēts, un to var izmantot.</translation>
 <translation id="412065659894267608">Līdz pilnīgai uzlādei atlikušais laiks: <ph name="HOUR"/> h <ph name="MINUTE"/> min</translation>
 <translation id="6359806961507272919">SMS no <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Mobilo sakaru operators</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index a258cc7..4e3566d 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">ഒന്നിലധികം സൈൻ ഇന്നുകളിൽ നിങ്ങൾക്ക് മൂന്ന് അക്കൗണ്ടുകൾ വരെ മാത്രമേ ഉണ്ടായിരിക്കാൻ പാടുള്ളൂ.</translation>
 <translation id="370649949373421643">Wi-fi പ്രാപ്‌തമാക്കുക</translation>
 <translation id="3626281679859535460">മിഴിവ്</translation>
+<translation id="3621202678540785336">ഇൻപുട്ട്</translation>
 <translation id="595202126637698455">പ്രകടനം പിന്തുടരൽ പ്രവർത്തനക്ഷമമാക്കി</translation>
 <translation id="8054466585765276473">ബാറ്ററി സമയം കണക്കാക്കുന്നു.</translation>
 <translation id="7982789257301363584">നെറ്റ്വര്‍ക്ക്</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">സ്റ്റാറ്റസ് ട്രേ</translation>
 <translation id="1661867754829461514">PIN കാണാനില്ല</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: കണക്റ്റുചെയ്യുന്നു...</translation>
+<translation id="40400351611212369">നെറ്റ്‌വർക്ക് സജീവമാക്കൽ പിശക്</translation>
 <translation id="4237016987259239829">നെറ്റ്വര്‍ക്ക് കണക്ഷന്‍ പിശക്</translation>
 <translation id="2946640296642327832">Bluetooth പ്രാപ്‌തമാക്കുക</translation>
 <translation id="6459472438155181876">സ്‌ക്രീൻ <ph name="DISPLAY_NAME"/> എന്നതിലേക്ക് വികസിപ്പിക്കുന്നു</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">നിങ്ങളുടെ സ്‌ക്രീനിന്റെ നിയന്ത്രണം Hangouts വഴി <ph name="HELPER_NAME"/> എന്നതുമായി പങ്കിടുന്നു.</translation>
 <translation id="7864539943188674973">Bluetooth അപ്രാപ്‌തമാക്കുക</translation>
 <translation id="939252827960237676">സ്‌ക്രീൻഷോട്ട് സംരക്ഷിക്കുന്നതിൽ പരാജയപ്പെട്ടു</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">അപ്‌ഡേറ്റുചെയ്യുന്നതിന് പുനരാരംഭിക്കുക</translation>
 <translation id="2268813581635650749">എല്ലാം സൈൻ ഔട്ട് ചെയ്യുക</translation>
 <translation id="735745346212279324">VPN വിച്ഛേദിച്ചു</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">ഭാഷകള്‍‌ ഇച്ഛാനുസൃതമാക്കി നല്‍‌കുക...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">ഷെൽഫ് സ്ഥാനം</translation>
-<translation id="2903907270192926896">ഇൻപുട്ട്</translation>
 <translation id="8676770494376880701">കുറഞ്ഞ തോതിൽ വൈദ്യുതി പ്രവഹിക്കുന്ന ചാർജർ കണക്റ്റുചെയ്‌തു</translation>
 <translation id="7170041865419449892">പരിധിയ്ക്ക് പുറത്താണ്</translation>
 <translation id="4804818685124855865">വിച്ഛേദിക്കുക</translation>
@@ -76,18 +78,23 @@
 <translation id="5825747213122829519">നിങ്ങളുടെ ഇൻപുട്ട് രീതി <ph name="INPUT_METHOD_ID"/> എന്നതിലേയ്‌ക്ക് മാറ്റി. സ്വിച്ചുചെയ്യുന്നതിന് Shift + Alt അമർത്തുക.</translation>
 <translation id="2562916301614567480">സ്വകാര്യ നെറ്റ്‌വർക്ക്</translation>
 <translation id="6549021752953852991">സെല്ലുലാർ നെറ്റ്‌വർക്കൊന്നും ലഭ്യമല്ല</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">പ്രിയ മോണിറ്റർ, ഇത് നമുക്കിടയിൽ പ്രവർത്തിക്കുന്നില്ല. (ആ മോണിറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല)</translation>
 <translation id="6426039856985689743">മൊബൈൽ ഡാറ്റ അപ്രാപ്‌തമാക്കുക</translation>
 <translation id="3087734570205094154">താഴെ</translation>
 <translation id="3742055079367172538">സ്‌ക്രീൻഷോട്ട് എടുത്തു</translation>
 <translation id="8878886163241303700">സ്‌ക്രീൻ വിപുലീകരിക്കുന്നു</translation>
 <translation id="5271016907025319479">VPN കോൺഫിഗർ ചെയ്‌തില്ല.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">സ്ക്രീൻഷോട്ടുകൾ എടുക്കാനുള്ള കഴിവ് നിങ്ങളുടെ അഡ്‌മിനിസ്ട്രേറ്റർ പ്രവർത്തനരഹിതമാക്കി.</translation>
 <translation id="372094107052732682">പുറത്തുപോകുന്നതിന് രണ്ടുതവണ Ctrl+Shift+Q അമർത്തുക.</translation>
 <translation id="6803622936009808957">പിന്തുണയ്‌ക്കുന്ന മിഴിവുകൾ കണ്ടെത്താത്തതിനാൽ പ്രദർശനങ്ങൾ പ്രതിഫലിപ്പിക്കാനായില്ല. പകരം വിപുലീകൃത ഡെസ്‌ക്‌ടോപ്പ് നൽകി.</translation>
 <translation id="1480041086352807611">ഡെമോ മോഡ്</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% ശേഷിക്കുന്നു</translation>
 <translation id="9089416786594320554">ഇൻപുട്ട്  രീതികൾ</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' സജീവമാക്കുന്നതിന് ഒരു നെറ്റ്‌വർക്ക് കണക്ഷൻ ആവശ്യമാണ്.</translation>
+<translation id="3963445509666917109">സ്‌പീക്കർ (ആന്തരികം)</translation>
 <translation id="2825619548187458965">ഷെൽഫ്</translation>
 <translation id="2614835198358683673">ഓണായിരിക്കുമ്പോൾ നിങ്ങളുടെ Chromebook ചാർജ് ചെയ്യാനിടയില്ല. ഔദ്യോഗിക ചാർജ്ജർ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.</translation>
 <translation id="1895658205118569222">ഷട്ട്‌ഡൗൺ ചെയ്യുക</translation>
@@ -97,13 +104,13 @@
 <translation id="7874779702599364982">സെല്ലുലാർ നെറ്റ്‌വർക്കുകൾക്കായി തിരയുന്നു...</translation>
 <translation id="583281660410589416">അജ്ഞാതം</translation>
 <translation id="1383876407941801731">തിരയൂ</translation>
-<translation id="7468789844759750875">കൂടുതൽ ഡാറ്റ വാങ്ങുന്നതിനായി <ph name="NAME"/> സജീവമാക്കൽ പോർട്ടൽ സന്ദർശിക്കുക.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> എന്നതിലേക്ക് കണക്റ്റുചെയ്യുന്നു</translation>
 <translation id="2204305834655267233">നെറ്റ്‌വർക്ക് വിവരം</translation>
 <translation id="1621499497873603021">ബാറ്ററി ശൂന്യമാകുന്നതിന് ശേഷിക്കുന്ന സമയം, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">അതിഥി സെഷനിൽ നിന്നും പുറത്തുകടക്കുക</translation>
 <translation id="8308637677604853869">മുൻ മെനു</translation>
 <translation id="4666297444214622512">മറ്റൊരു അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യാനാകില്ല.</translation>
+<translation id="3625258641415618104">സ്‌ക്രീൻഷോട്ടുകൾ പ്രവർത്തനരഹിതമാക്കി</translation>
 <translation id="1346748346194534595">ശരി</translation>
 <translation id="1773212559869067373">പ്രാമാണീകരണ സർട്ടിഫിക്കറ്റ് പ്രാദേശികമായി നിരസിച്ചു</translation>
 <translation id="8528322925433439945">മൊബൈൽ ...</translation>
@@ -132,6 +139,7 @@
 <translation id="1512064327686280138">സജീവമാക്കല്‍ പരാജയപ്പെട്ടു</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>' നെറ്റ്‌വര്‍‌ക്കിലേക്ക് ബന്ധിപ്പിക്കുന്നതിൽ പരാജയപ്പെട്ടു: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi ഓഫുചെയ്‌തു.</translation>
+<translation id="2966449113954629791">നിങ്ങളുടെ മൊബൈൽ ഡാറ്റ അലവൻസ് പരമാവധി ഉപയോഗിച്ചിരിക്കാനിടയുണ്ട്. കൂടുതൽ ഡാറ്റ വാങ്ങാൻ <ph name="NAME"/> സജീവമാക്കൽ പോർട്ടൽ സന്ദർശിക്കുക.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> എന്നതിലേക്ക് ബന്ധിപ്പിച്ചു</translation>
 <translation id="7052914147756339792">വാൾപേപ്പർ സജ്ജമാക്കുക...</translation>
 <translation id="8678698760965522072">ഓണ്‍ലൈന്‍ അവസ്ഥ</translation>
@@ -148,22 +156,26 @@
 <translation id="3157931365184549694">പുനഃസ്ഥാപിക്കുക</translation>
 <translation id="4274292172790327596">തിരിച്ചറിയാത്ത പിശക്</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ഹെഡ്‌ഫോൺ</translation>
 <translation id="225680501294068881">ഉപകരണങ്ങൾക്കായി സ്‌കാൻ ചെയ്യുന്നു...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">മൈക്രോഫോൺ (ആന്തരികം)</translation>
 <translation id="4448844063988177157">Wi-Fi ശൃംഖലകള്‍ക്കായി തിരയുന്നു...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' എന്നതിലേക്ക് കണക്റ്റുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു: <ph name="DETAILS"/>
 സെർവർ സന്ദേശം: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">ഒരു പിശക് സംഭവിച്ചു</translation>
 <translation id="7229570126336867161">EVDO ആവശ്യമുണ്ട്</translation>
 <translation id="2999742336789313416"><ph name="DOMAIN"/> നിയന്ത്രിക്കുന്ന എല്ലാവർക്കുമുള്ള ഒരു സെഷനാണ് <ph name="DISPLAY_NAME"/></translation>
+<translation id="9044646465488564462">നെറ്റ്‌വര്‍‌ക്കിലേക്ക് കണക്റ്റുചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">സെഷനിൽ നിന്ന് പുറത്തുകടക്കുക</translation>
 <translation id="8454013096329229812">Wi-Fi ഓൺ ചെയ്‌തു.</translation>
 <translation id="4872237917498892622">Alt+തിരയൽ അല്ലെങ്കിൽ Shift</translation>
 <translation id="9201131092683066720">ബാറ്ററി <ph name="PERCENTAGE"/>% നിറഞ്ഞു.</translation>
 <translation id="2983818520079887040">ക്രമീകരണങ്ങള്‍...</translation>
+<translation id="3871838685472846647">സെല്ലുലാർ സജീവമാക്കി</translation>
 <translation id="1195412055398077112">ഓവർസ്‌കാൻ</translation>
-<translation id="1717216362413677834">ഡോക്ക് മോഡ്</translation>
 <translation id="112308213915226829">ഷെൽഫ് യാന്ത്രികമായി മറയ്‌ക്കുക</translation>
+<translation id="7573962313813535744">ഡോക്കുചെയ്‌ത മോഡ്</translation>
 <translation id="8927026611342028580">കണക്റ്റുചെയ്യാൻ അഭ്യർത്ഥിച്ചു</translation>
 <translation id="8300849813060516376">OTASP പരാജയപ്പെട്ടു</translation>
 <translation id="2792498699870441125">Alt+തിരയൽ</translation>
@@ -175,17 +187,16 @@
 <translation id="6785414152754474415">ബാറ്ററി <ph name="PERCENTAGE"/>% നിറഞ്ഞിരിക്കുന്നു, ചാർജുചെയ്യൽ തുടരുന്നു.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: സജീവമാക്കുന്നു...</translation>
 <translation id="4895488851634969361">ബാറ്ററി ചാർജുചെയ്യൽ പൂർണ്ണമായി.</translation>
-<translation id="1391854757121130358">നിങ്ങൾ മൊബൈൽ ഡാറ്റ അലവൻസ് ഉപയോഗിച്ചിരിക്കാനിടയുണ്ട്.</translation>
 <translation id="5947494881799873997">പഴയപടിയാക്കുക</translation>
 <translation id="7593891976182323525">തിരയൽ അല്ലെങ്കിൽ Shift</translation>
 <translation id="7649070708921625228">സഹായം</translation>
+<translation id="747833637904845037">ലിഡ് അടച്ചിരിക്കുകയാണെങ്കിൽപ്പോലും, ഒരു ആന്തരിക ഡിസ്പ്ലേയിലേക്ക് കണക്റ്റുചെയ്‌തിരിക്കുമ്പോൾ നിങ്ങളുടെ Chromebook ഓണായി തുടരും.</translation>
 <translation id="3050422059534974565">CAPS LOCK ഓൺ ആണ്.
 റദ്ദാക്കുന്നതിന് തിരയൽ അല്ലെങ്കിൽ Shift അമർത്തുക.</translation>
 <translation id="397105322502079400">കണക്കാക്കുന്നു...</translation>
 <translation id="158849752021629804">ഹോം നെറ്റ്‍വര്‍ക്ക് ആവശ്യമുണ്ട്</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> സജീവമാക്കുക</translation>
 <translation id="5864471791310927901">DHCP തിരയല്‍ പരാജയപ്പെട്ടു</translation>
-<translation id="5812035014844949013">ഔട്ട്‌പുട്ട്</translation>
 <translation id="6692173217867674490">മോശം പാസ്ഫ്രെയ്സ്</translation>
 <translation id="6165508094623778733">കൂടുതല്‍ മനസിലാക്കുക</translation>
 <translation id="9046895021617826162">ബന്ധിപ്പിക്കല്‍ പരാജയപ്പെട്ടു</translation>
@@ -201,12 +212,14 @@
 <translation id="8940956008527784070">ബാറ്ററി കുറവാണ് (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">സ്വീകരിക്കുക</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> ശേഷിക്കുന്നു</translation>
+<translation id="3009178788565917040">ഔട്ട്പുട്ട്</translation>
 <translation id="520760366042891468">നിങ്ങളുടെ സ്‌ക്രീനിന്റെ നിയന്ത്രണം Hangouts വഴി പങ്കിടുന്നു.</translation>
 <translation id="8000066093800657092">നെറ്റ്‍വര്‍ക്ക് ഇല്ല</translation>
 <translation id="4015692727874266537">മറ്റൊരു അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യുക...</translation>
 <translation id="5941711191222866238">ചെറുതാക്കുക‍</translation>
 <translation id="6911468394164995108">മറ്റുള്ളവ ചേർക്കുക...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">അഭിനന്ദനങ്ങൾ! നിങ്ങളുടെ '<ph name="NAME"/>' ഡാറ്റ സേവനം സജീവമായി, ഇത് പ്രവർത്തിക്കാൻ തയ്യാറാണ്.</translation>
 <translation id="412065659894267608">പൂർണ്ണമായും ചാർജാകുന്നതിന് <ph name="HOUR"/>മ <ph name="MINUTE"/>മി</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> എന്നതില്‍ നിന്നുള്ള SMS</translation>
 <translation id="1244147615850840081">കാരിയര്‍</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 6d80de1..eadea33 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">आपल्याकडे एकाधिक साइन इनमध्ये फक्त तीन पर्यंत खाती असू शकतात.</translation>
 <translation id="370649949373421643">Wi-fi सक्षम करा</translation>
 <translation id="3626281679859535460">ब्राइटनेस</translation>
+<translation id="3621202678540785336">इनपुट</translation>
 <translation id="595202126637698455">कार्यप्रदर्शन ट्रेसिंग सक्षम केले</translation>
 <translation id="8054466585765276473">बॅटरी वेळ गणना करत आहे.</translation>
 <translation id="7982789257301363584">नेटवर्क</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">स्थिती ट्रे</translation>
 <translation id="1661867754829461514">PIN गहाळ आहे </translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: कनेक्ट करत आहे...</translation>
+<translation id="40400351611212369">नेटवर्क सक्रियण त्रुटी</translation>
 <translation id="4237016987259239829">नेटवर्क कनेक्शन त्रुटी</translation>
 <translation id="2946640296642327832">Bluetooth सक्षम करा</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/> मध्ये स्क्रीन विस्तृत करत आहे</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangouts द्वारे <ph name="HELPER_NAME"/> सह आपल्या स्क्रीनचे सामायिकरण नियंत्रण.</translation>
 <translation id="7864539943188674973">Bluetooth अक्षम करा</translation>
 <translation id="939252827960237676">स्क्रीनशॉट जतन करण्यात अयशस्वी</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">अद्यतनासाठी पुनर्प्रारंभ करा</translation>
 <translation id="2268813581635650749">सर्व साइन आउट करा</translation>
 <translation id="735745346212279324">VPN डिस्कनेक्ट केले</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">भाषा आणि इनपुट सानुकूलित करा...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">शेल्फ स्थिती</translation>
-<translation id="2903907270192926896">इनपुट</translation>
 <translation id="8676770494376880701">निम्न-उर्जेचे चार्जर कनेक्ट केले</translation>
 <translation id="7170041865419449892">परिक्षेत्राबाहेर</translation>
 <translation id="4804818685124855865">‍डिस्कनेक्ट</translation>
@@ -77,18 +79,23 @@
 स्विच करण्यासाठी Shift + Alt दाबा.</translation>
 <translation id="2562916301614567480">खाजगी नेटवर्क</translation>
 <translation id="6549021752953852991">कोणतेही सेल्युलर नेटवर्क उपलब्ध नाही</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">प्रिय मॉनिटर, हे आपल्या दरम्यान कार्य करत नाही. (तो मॉनिटर समर्थित नाही)</translation>
 <translation id="6426039856985689743">मोबाइल डेटा अक्षम करा</translation>
 <translation id="3087734570205094154">तळाकडील</translation>
 <translation id="3742055079367172538">स्क्रीनशॉट घेतला</translation>
 <translation id="8878886163241303700">स्क्रीन विस्तृत करत आहे</translation>
 <translation id="5271016907025319479">VPN कॉन्फिगर केलेले नाही.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">स्क्रीनशॉट घेण्याची क्षमता आपल्या प्रशासकाद्वारे अक्षम केली गेली आहे.</translation>
 <translation id="372094107052732682">बाहेर पडण्यासाठी Ctrl+Shift+Q दोनदा दाबा.</translation>
 <translation id="6803622936009808957">समर्थित रिजोल्यूशन न आढळल्यामुळे प्रदर्शने मिरर करू शकली नाहीत. त्याऐवजी विस्तारित डेस्कटॉप प्रविष्ट केला.</translation>
 <translation id="1480041086352807611">डेमो मोड</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% उर्वरित</translation>
 <translation id="9089416786594320554">इनपुट पद्धती</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' च्या सक्रियणास नेटवर्क कनेक्शन आवश्यक आहे.</translation>
+<translation id="3963445509666917109">स्पीकर (अंतर्गत)</translation>
 <translation id="2825619548187458965">शेल्फ</translation>
 <translation id="2614835198358683673">आपले Chromebook चालू असताना ते चार्ज होऊ शकत नाही. अधिकृत चार्जर वापरण्याचा विचार करा.</translation>
 <translation id="1895658205118569222">बंद करा</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">सेल्यूलर नेटवर्कसाठी शोधत आहे...</translation>
 <translation id="583281660410589416">अज्ञात</translation>
 <translation id="1383876407941801731">शोध</translation>
-<translation id="7468789844759750875">अधिक डेटा विकत घेण्यासाठी <ph name="NAME"/> सक्रियण पोर्टलला भेट द्या.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> वर कनेक्ट करीत आहे</translation>
 <translation id="2204305834655267233">नेटवर्क माहिती</translation>
 <translation id="1621499497873603021">बॅटरी रिक्त होईपर्यंत शिल्लक वेळ, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">अतिथी निर्गमन करा</translation>
 <translation id="8308637677604853869">मागील मेनू</translation>
 <translation id="4666297444214622512">दुसर्‍या खात्यामध्ये साइन इन करू शकत नाही.</translation>
+<translation id="3625258641415618104">स्क्रीनशॉट अक्षम केले</translation>
 <translation id="1346748346194534595">उजवे</translation>
 <translation id="1773212559869067373">प्रमाणीकरण प्रमाणपत्र स्थानिकपणे नाकारले</translation>
 <translation id="8528322925433439945">मोबाइल ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">सक्रियन अयशस्वी</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>': नेटवर्कशी कनेक्ट करण्यात अयशस्वी. <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi बंद आहे.</translation>
+<translation id="2966449113954629791">आपण आपली मोबाईल डेटा सूट वापरली असू शकते. अधिक डेटा विकत घेण्यासाठी <ph name="NAME"/> सक्रियकरण पोर्टलला भेट द्या.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> शी कनेक्ट केलेले</translation>
 <translation id="7052914147756339792">वॉलपेपर सेट करा...</translation>
 <translation id="8678698760965522072">ऑनलाइन राज्य</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">पुनर्संचयित करा</translation>
 <translation id="4274292172790327596">अपरिचित त्रुटी</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">हेडफोन</translation>
 <translation id="225680501294068881">डिव्हाइसेससाठी स्कॅन करत आहे...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">मायक्रोफोन (अंतर्गत)</translation>
 <translation id="4448844063988177157">Wi-Fi नेटवर्कचा शोधत आहे...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' शी कनेक्ट करण्यात अयशस्वी: <ph name="DETAILS"/>
 सर्व्हर संदेश: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">एक त्रुटी आली आहे</translation>
 <translation id="7229570126336867161">EVDO आवश्यक आहे</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> हे <ph name="DOMAIN"/> द्वारे व्यवस्थापित कलेले एक सावर्जनिक सत्र आहे</translation>
+<translation id="9044646465488564462">नेटवर्कशी कनेक्ट करण्यात अयशस्वी: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">सत्र निर्गमन करा</translation>
 <translation id="8454013096329229812">Wi-Fi चालू आहे.</translation>
 <translation id="4872237917498892622">Alt+Search किंवा Shift</translation>
 <translation id="9201131092683066720">बॅटरी <ph name="PERCENTAGE"/>% भरली आहे.</translation>
 <translation id="2983818520079887040">सेटिंग्ज...</translation>
+<translation id="3871838685472846647">सेल्युलर सक्रिय केले</translation>
 <translation id="1195412055398077112">ओव्हरस्कॅन</translation>
-<translation id="1717216362413677834">डॉक मोड</translation>
 <translation id="112308213915226829">शेल्फ स्वयं लपवा</translation>
+<translation id="7573962313813535744">डॉक केलेला मोड</translation>
 <translation id="8927026611342028580">विनंती केलेले कनेक्ट करा</translation>
 <translation id="8300849813060516376">OTASP बिघडले</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">बॅटरी <ph name="PERCENTAGE"/>% भरली आहे आणि चार्ज होत आहे.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: सक्रिय करत आहे...</translation>
 <translation id="4895488851634969361">बॅटरी भरली आहे.</translation>
-<translation id="1391854757121130358">आपण आपल्या मोबाईल डेटा भत्त्याचा वापर केला असेल.</translation>
 <translation id="5947494881799873997">परत करा</translation>
 <translation id="7593891976182323525">Search किंवा Shift</translation>
 <translation id="7649070708921625228">मदत</translation>
+<translation id="747833637904845037">लिडसह बंद असले, तरीही आपले Chromebook बाह्य प्रदर्शनाशी कनेक्ट केलेले असताना चालू राहील.</translation>
 <translation id="3050422059534974565">CAPS LOCK चालू आहे.
 रद्द करण्यासाठी Search किंवा Shift दाबा.</translation>
 <translation id="397105322502079400">गणना करत आहे...</translation>
 <translation id="158849752021629804">मुख्यपृष्ठ नेटवर्क आवश्यक</translation>
 <translation id="6857811139397017780">सक्रिय करा<ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP लुकअप अयशस्वी</translation>
-<translation id="5812035014844949013">आउटपुट</translation>
 <translation id="6692173217867674490">चुकीचा सांकेतिक वाक्यांश</translation>
 <translation id="6165508094623778733">अधिक जाणून घ्या</translation>
 <translation id="9046895021617826162">कनेक्ट करण्यात अयशस्वी</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">बॅटरी कमी झाली (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">स्वीकारा</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> शिल्‍लक</translation>
+<translation id="3009178788565917040">आउटपुट</translation>
 <translation id="520760366042891468">Hangouts द्वारे आपल्या स्क्रीनचे नियंत्रण सामायिक करत आहे.</translation>
 <translation id="8000066093800657092">कोणतेही नेटवर्क नाही</translation>
 <translation id="4015692727874266537">दुसऱ्या खात्यात साइन इन करा...</translation>
 <translation id="5941711191222866238">लहान करा</translation>
 <translation id="6911468394164995108">दुसरीकडे सामील व्हा...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">अभिनंदन! आपली '<ph name="NAME"/>' डेटा सेवा सक्रिय केली गेली आहे आणि वापरण्यास  सज्ज आहे.</translation>
 <translation id="412065659894267608">पूर्ण होईपर्यंत  <ph name="HOUR"/>ता <ph name="MINUTE"/>मि</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> कडून SMS</translation>
 <translation id="1244147615850840081">कॅरियर</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 7006c53..bd0a7fe 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Anda hanya boleh mempunyai sehingga tiga akaun dalam log masuk berbilang.</translation>
 <translation id="370649949373421643">Dayakan Wi-Fi</translation>
 <translation id="3626281679859535460">Kecerahan</translation>
+<translation id="3621202678540785336">Input</translation>
 <translation id="595202126637698455">Penjejakan prestasi didayakan</translation>
 <translation id="8054466585765276473">Mengira tempoh bateri.</translation>
 <translation id="7982789257301363584">Rangkaian</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Dulang status</translation>
 <translation id="1661867754829461514">PIN tiada</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Menyambung...</translation>
+<translation id="40400351611212369">Ralat Pengaktifan Rangkaian</translation>
 <translation id="4237016987259239829">Ralat Sambungan Rangkaian</translation>
 <translation id="2946640296642327832">Dayakan Bluetooth</translation>
 <translation id="6459472438155181876">Melanjutkan skrin ke <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Berkongsi kawalan skrin anda dengan <ph name="HELPER_NAME"/> melalui Hangouts.</translation>
 <translation id="7864539943188674973">Lumpuhkan Bluetooth</translation>
 <translation id="939252827960237676">Gagal menyimpan tangkapan skrin</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Mulakan semula untuk mengemas kini</translation>
 <translation id="2268813581635650749">Log keluar semua</translation>
 <translation id="735745346212279324">VPN diputuskan sambungan</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Sesuaikan bahasa dan input...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Kedudukan rak</translation>
-<translation id="2903907270192926896">INPUT</translation>
 <translation id="8676770494376880701">Pengecas berkuasa rendah disambungkan</translation>
 <translation id="7170041865419449892">Di luar lingkungan</translation>
 <translation id="4804818685124855865">Putuskan sambungan</translation>
@@ -77,18 +79,23 @@
 Tekan Shift + Alt untuk menukar.</translation>
 <translation id="2562916301614567480">Rangkaian Persendirian</translation>
 <translation id="6549021752953852991">Tiada rangkaian selular tersedia</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Malang sekali, tidak wujud keserasian antara kita, Monitor. (Monitor itu tidak disokong)</translation>
 <translation id="6426039856985689743">Lumpuhkan data mudah alih</translation>
 <translation id="3087734570205094154">Bawah</translation>
 <translation id="3742055079367172538">Tangkapan skrin diambil</translation>
 <translation id="8878886163241303700">Meluaskan skrin</translation>
 <translation id="5271016907025319479">VPN tidak dikonfigurasi.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Keupayaan untuk mengambil tangkapan skrin telah dilumpuhkan oleh pentadbir anda.</translation>
 <translation id="372094107052732682">Tekan Ctrl+Shift+Q dua kali untuk keluar.</translation>
 <translation id="6803622936009808957">Tidak dapat membalikkan paparan memandangkan tiada peleraian disokong ditemui. Sebaliknya, memasuki mod desktop yang dilanjutkan.</translation>
 <translation id="1480041086352807611">Mod tunjuk cara</translation>
 <translation id="3626637461649818317">Tinggal <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Kaedah input</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Pengaktifan '<ph name="NAME"/>' memerlukan sambungan rangkaian.</translation>
+<translation id="3963445509666917109">Pembesar Suara (Dalaman)</translation>
 <translation id="2825619548187458965">Rak</translation>
 <translation id="2614835198358683673">Chromebook anda tidak boleh dicas semasa dihidupkan. Pertimbangkan untuk menggunakan pengecas rasmi.</translation>
 <translation id="1895658205118569222">Tutup</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Mencari rangkaian selular...</translation>
 <translation id="583281660410589416">Tidak diketahui</translation>
 <translation id="1383876407941801731">Cari</translation>
-<translation id="7468789844759750875">Lawati portal pengaktifan <ph name="NAME"/> untuk membeli lagi data.</translation>
 <translation id="3901991538546252627">Menyambung ke <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Maklumat Rangkaian</translation>
 <translation id="1621499497873603021">Masa yang tinggal sehingga bateri kosong, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Keluar dari tetamu</translation>
 <translation id="8308637677604853869">Menu sebelumnya</translation>
 <translation id="4666297444214622512">Tidak boleh log masuk ke akaun lain.</translation>
+<translation id="3625258641415618104">Tangkapan skrin dilumpuhkan</translation>
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1773212559869067373">Sijil pengesahan ditolak secara setempat</translation>
 <translation id="8528322925433439945">Mudah alih ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Gagal pengaktifan</translation>
 <translation id="5097002363526479830">Gagal untuk bersambung ke rangkaian '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi dimatikan.</translation>
+<translation id="2966449113954629791">Anda mungkin telah menggunakan peruntukan data mudah alih anda. Lawati <ph name="NAME"/>portal pengaktifan untuk membeli lebih banyak data.</translation>
 <translation id="8132793192354020517">Disambungkan ke <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Tetapkan kertas dinding...</translation>
 <translation id="8678698760965522072">Keadaan dalam talian</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Pulihkan</translation>
 <translation id="4274292172790327596">Ralat tidak dikenali</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Fon kepala</translation>
 <translation id="225680501294068881">Mengimbas untuk peranti...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (Dalaman)</translation>
 <translation id="4448844063988177157">Mencari rangkaian Wi-Fi...</translation>
 <translation id="8401662262483418323">Gagal untuk menyambung ke '<ph name="NAME"/>': <ph name="DETAILS"/>
 Mesej pelayan: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Ralat berlaku</translation>
 <translation id="7229570126336867161">Perlukan EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> ialah sesi awam yang diurus oleh <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Gagal bersambung ke rangkaian: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Keluar dari sesi</translation>
 <translation id="8454013096329229812">Wi-Fi dihidupkan.</translation>
 <translation id="4872237917498892622">Alt+Search atau Shift</translation>
 <translation id="9201131092683066720">Bateri <ph name="PERCENTAGE"/>% penuh.</translation>
 <translation id="2983818520079887040">Tetapan...</translation>
+<translation id="3871838685472846647">Selular diaktifkan</translation>
 <translation id="1195412055398077112">imbas lampau</translation>
-<translation id="1717216362413677834">Mod dok</translation>
 <translation id="112308213915226829">Autosembunyi rak</translation>
+<translation id="7573962313813535744">Mod dok</translation>
 <translation id="8927026611342028580">Sambungan Diminta</translation>
 <translation id="8300849813060516376">OTASP gagal</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,16 +188,15 @@
 <translation id="6785414152754474415">Bateri <ph name="PERCENTAGE"/>% penuh dan sedang dicas.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Mengaktifkan...</translation>
 <translation id="4895488851634969361">Bateri penuh.</translation>
-<translation id="1391854757121130358">Anda mungkin telah menghabiskan peruntukan data mudah alih anda.</translation>
 <translation id="5947494881799873997">Berbalik</translation>
 <translation id="7593891976182323525">Search atau Shift</translation>
 <translation id="7649070708921625228">Bantuan</translation>
+<translation id="747833637904845037">Chromebook anda akan sentiasa hidup semasa disambungkan dengan paparan luar, walaupun penutupnya ditutup.</translation>
 <translation id="3050422059534974565">CAPS LOCK dihidupkan. Tekan Search atau Shift untuk membatalkan.</translation>
 <translation id="397105322502079400">Mengira...</translation>
 <translation id="158849752021629804">Perlukan rangkaian rumah</translation>
 <translation id="6857811139397017780">Aktifkan <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Carian DHCP gagal</translation>
-<translation id="5812035014844949013">OUTPUT</translation>
 <translation id="6692173217867674490">Frasa laluan teruk</translation>
 <translation id="6165508094623778733">Ketahui lebih lanjut</translation>
 <translation id="9046895021617826162">Gagal disambungkan</translation>
@@ -201,12 +212,14 @@
 <translation id="8940956008527784070">Bateri lemah (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Terima</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> tinggal</translation>
+<translation id="3009178788565917040">Output</translation>
 <translation id="520760366042891468">Berkongsi kawalan skrin anda melalui Hangouts.</translation>
 <translation id="8000066093800657092">Tiada rangkaian</translation>
 <translation id="4015692727874266537">Log masuk akaun lain...</translation>
 <translation id="5941711191222866238">Minimumkan</translation>
 <translation id="6911468394164995108">Sertai yang lain...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Tahniah! Perkhidmatan data '<ph name="NAME"/>' anda telah diaktifkan dan sedia untuk digunakan.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>j <ph name="MINUTE"/>m sehingga penuh</translation>
 <translation id="6359806961507272919">SMS daripada <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Pembawa</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index ccb8962..a0bcf9d 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Je kunt maximaal drie accounts hebben in Toegang tot meerdere accounts</translation>
 <translation id="370649949373421643">Wifi inschakelen</translation>
 <translation id="3626281679859535460">Helderheid</translation>
+<translation id="3621202678540785336">Ingang</translation>
 <translation id="595202126637698455">Bijhouden van prestaties ingeschakeld</translation>
 <translation id="8054466585765276473">Accuduur berekenen.</translation>
 <translation id="7982789257301363584">Netwerk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Statussysteemvak</translation>
 <translation id="1661867754829461514">Pincode ontbreekt</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: verbinden...</translation>
+<translation id="40400351611212369">Fout bij netwerkactivering</translation>
 <translation id="4237016987259239829">Fout bij netwerkverbinding</translation>
 <translation id="2946640296642327832">Bluetooth inschakelen</translation>
 <translation id="6459472438155181876">Scherm uitbreiden naar <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Controle over je scherm delen met <ph name="HELPER_NAME"/> via Hangouts.</translation>
 <translation id="7864539943188674973">Bluetooth uitschakelen</translation>
 <translation id="939252827960237676">Kan screenshot niet opslaan</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Opnieuw starten voor bijwerken</translation>
 <translation id="2268813581635650749">Alle gebruikers uitloggen</translation>
 <translation id="735745346212279324">Verbinding met VPN verbroken</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Talen en invoer aanpassen...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Positie van plank</translation>
-<translation id="2903907270192926896">INVOER</translation>
 <translation id="8676770494376880701">Laag-vermogen-lader aangesloten</translation>
 <translation id="7170041865419449892">Geen bereik</translation>
 <translation id="4804818685124855865">Verbinding verbreken</translation>
@@ -77,18 +79,23 @@
 Druk op Shift + Alt om te schakelen.</translation>
 <translation id="2562916301614567480">Privénetwerk</translation>
 <translation id="6549021752953852991">Geen mobiel netwerk beschikbaar</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Het lijkt erop dat dit niet werkt. Het beeldscherm wordt niet ondersteund.</translation>
 <translation id="6426039856985689743">Mobiele gegevens uitschakelen</translation>
 <translation id="3087734570205094154">Onderaan</translation>
 <translation id="3742055079367172538">Screenshot gemaakt</translation>
 <translation id="8878886163241303700">Uitgebreid scherm</translation>
 <translation id="5271016907025319479">VPN is niet geconfigureerd.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Je beheerder heeft de mogelijkheid uitgeschakeld om screenshots te maken.</translation>
 <translation id="372094107052732682">Druk twee keer op Ctrl+Shift+Q om te stoppen.</translation>
 <translation id="6803622936009808957">Kan schermen niet spiegelen, omdat er geen ondersteunde resoluties zijn gevonden. Het uitgebreide bureaublad is geactiveerd.</translation>
 <translation id="1480041086352807611">Demomodus</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% resterend</translation>
 <translation id="9089416786594320554">Invoermethoden</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Voor activering van '<ph name="NAME"/>' is een netwerkverbinding vereist.</translation>
+<translation id="3963445509666917109">Luidspreker (intern)</translation>
 <translation id="2825619548187458965">Plank</translation>
 <translation id="2614835198358683673">Je Chromebook wordt mogelijk niet opgeladen wanneer deze is ingeschakeld. Overweeg het gebruik van een officiële lader.</translation>
 <translation id="1895658205118569222">Uitschakeling</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Zoeken naar mobiele netwerken...</translation>
 <translation id="583281660410589416">Onbekend</translation>
 <translation id="1383876407941801731">Zoeken</translation>
-<translation id="7468789844759750875">Ga naar de activeringsportal <ph name="NAME"/> om meer gegevens te kopen.</translation>
 <translation id="3901991538546252627">Verbinding maken met <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Netwerkinfo</translation>
 <translation id="1621499497873603021">Resterende tijd totdat de accu leeg is: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Gastsessie sluiten</translation>
 <translation id="8308637677604853869">Vorig menu</translation>
 <translation id="4666297444214622512">Kan niet inloggen op een ander account.</translation>
+<translation id="3625258641415618104">Screenshots uitgeschakeld</translation>
 <translation id="1346748346194534595">Rechts</translation>
 <translation id="1773212559869067373">Verificatiecertificaat lokaal geweigerd</translation>
 <translation id="8528322925433439945">Mobiel...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Activering mislukt</translation>
 <translation id="5097002363526479830">Kan geen verbinding maken met het netwerk '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wifi is uitgeschakeld.</translation>
+<translation id="2966449113954629791">Je hebt misschien je mobiele gegevensquotum verbruikt. Ga naar de activeringsportal van <ph name="NAME"/> om meer gegevens te kopen.</translation>
 <translation id="8132793192354020517">Verbonden met <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Achtergrond instellen...</translation>
 <translation id="8678698760965522072">Online status</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Herstellen</translation>
 <translation id="4274292172790327596">Onbekende fout</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Hoofdtelefoon</translation>
 <translation id="225680501294068881">Scannen naar apparaten...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microfoon (intern)</translation>
 <translation id="4448844063988177157">Zoeken naar wifi-netwerken...</translation>
 <translation id="8401662262483418323">Verbinding maken met '<ph name="NAME"/>' is mislukt: <ph name="DETAILS"/>
 Melding van de server: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Er is een fout opgetreden</translation>
 <translation id="7229570126336867161">EVDO vereist</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> is een openbare sessie die wordt beheerd door <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Kan geen verbinding maken met netwerk: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Sessie sluiten</translation>
 <translation id="8454013096329229812">Wifi is ingeschakeld.</translation>
 <translation id="4872237917498892622">Alt+Zoeken of Shift</translation>
 <translation id="9201131092683066720">De accu is <ph name="PERCENTAGE"/>% vol.</translation>
 <translation id="2983818520079887040">Instellingen...</translation>
+<translation id="3871838685472846647">Mobiel geactiveerd</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Dockmodus</translation>
 <translation id="112308213915226829">Plank automatisch verbergen</translation>
+<translation id="7573962313813535744">Gedockte modus</translation>
 <translation id="8927026611342028580">Verbinding aangevraagd</translation>
 <translation id="8300849813060516376">OTASP mislukt</translation>
 <translation id="2792498699870441125">Alt+Zoeken</translation>
@@ -176,18 +188,17 @@
 <translation id="6785414152754474415">De accu is <ph name="PERCENTAGE"/>% vol en wordt opgeladen.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: activeren...</translation>
 <translation id="4895488851634969361">De accu is vol.</translation>
-<translation id="1391854757121130358">Je hebt mogelijk je quotum voor mobiele gegevens verbruikt.</translation>
 <translation id="5947494881799873997">Terugzetten</translation>
 <translation id="7593891976182323525">Zoeken of Shift</translation>
 <translation id="7649070708921625228">Help</translation>
+<translation id="747833637904845037">Je Chromebook blijft aan staan wanneer deze verbinding heeft met een extern scherm, zelfs als de klep is gesloten.</translation>
 <translation id="3050422059534974565">CAPS LOCK is ingeschakeld.
 Druk op Zoeken of Shift om te annuleren.</translation>
 <translation id="397105322502079400">Berekenen...</translation>
 <translation id="158849752021629804">Thuisnetwerk vereist</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> activeren</translation>
 <translation id="5864471791310927901">Opzoeken van DHCP mislukt</translation>
-<translation id="5812035014844949013">UITVOER</translation>
-<translation id="6692173217867674490">Slechte wachtwoordzin</translation>
+<translation id="6692173217867674490">Onjuist wachtwoord</translation>
 <translation id="6165508094623778733">Meer informatie</translation>
 <translation id="9046895021617826162">Verbinding mislukt</translation>
 <translation id="7168224885072002358">Terugzetten naar oude resolutie over <ph name="TIMEOUT_SECONDS"/></translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Accu is bijna leeg (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Accepteren</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> resterend</translation>
+<translation id="3009178788565917040">Uitgang</translation>
 <translation id="520760366042891468">Controle over je scherm delen via Hangouts.</translation>
 <translation id="8000066093800657092">Geen netwerk</translation>
 <translation id="4015692727874266537">Inloggen op ander account...</translation>
 <translation id="5941711191222866238">Minimaliseren</translation>
 <translation id="6911468394164995108">Verbinding met ander netwerk maken...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Gefeliciteerd! Je gegevensservice '<ph name="NAME"/>' is geactiveerd en kan worden gebruikt.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>u <ph name="MINUTE"/>m tot volledig opgeladen</translation>
 <translation id="6359806961507272919">Sms van <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Provider</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 5c3a487..ccdbe46 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Du kan bare ha opptil tre kontoer i flerpålogging.</translation>
 <translation id="370649949373421643">Aktivér Wi-Fi</translation>
 <translation id="3626281679859535460">Lysstyrke</translation>
+<translation id="3621202678540785336">Inndata</translation>
 <translation id="595202126637698455">Ytelsessporing er aktivert</translation>
 <translation id="8054466585765276473">Beregner batteritid.</translation>
 <translation id="7982789257301363584">Nettverk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Status-felt</translation>
 <translation id="1661867754829461514">Personlig kode mangler</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: kobler til ...</translation>
+<translation id="40400351611212369">Nettverksaktiveringsfeil</translation>
 <translation id="4237016987259239829">Feil i nettverkstilkobling</translation>
 <translation id="2946640296642327832">Aktiver Bluetooth</translation>
 <translation id="6459472438155181876">Utvider skjermen til <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Deling av skjermkontrollen din med <ph name="HELPER_NAME"/> via Hangouts.</translation>
 <translation id="7864539943188674973">Deaktiver Bluetooth</translation>
 <translation id="939252827960237676">Lagringen av skjermdumpen mislyktes</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Start på nytt for å oppdatere</translation>
 <translation id="2268813581635650749">Logg alle av</translation>
 <translation id="735745346212279324">VPN frakoblet</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Tilpass språk og inndata</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Hylleposisjon</translation>
-<translation id="2903907270192926896">INNDATA</translation>
 <translation id="8676770494376880701">Laveffektslader er tilkoblet</translation>
 <translation id="7170041865419449892">Utenfor rekkevidde</translation>
 <translation id="4804818685124855865">Koble fra</translation>
@@ -77,18 +79,23 @@
 Trykk på Shift + Alt for å bytte.</translation>
 <translation id="2562916301614567480">Privat nettverk</translation>
 <translation id="6549021752953852991">Ingen tilgjengelige mobilnettverk.</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Kjære skjerm, det går ikke så bra mellom oss. (Skjermen støttes ikke)</translation>
 <translation id="6426039856985689743">Deaktiver mobildata</translation>
 <translation id="3087734570205094154">Bunn</translation>
 <translation id="3742055079367172538">Skjermdump tatt</translation>
 <translation id="8878886163241303700">Utvidet skjerm</translation>
 <translation id="5271016907025319479">VPN er ikke konfigurert.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Muligheten til å ta skjermdumper er deaktivert av administratoren.</translation>
 <translation id="372094107052732682">Trykk Ctrl+Shift+Q to ganger for å avslutte.</translation>
 <translation id="6803622936009808957">Kunne ikke speile skjermene fordi ingen støttede oppløsninger ble funnet. Utvidet skrivebord ble brukt i stedet.</translation>
 <translation id="1480041086352807611">Demo-modus</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% igjen</translation>
 <translation id="9089416786594320554">Inndatametoder</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Aktivering av <ph name="NAME"/> krever nettverkstilkobling.</translation>
+<translation id="3963445509666917109">Mikrofon (intern)</translation>
 <translation id="2825619548187458965">Hylle</translation>
 <translation id="2614835198358683673">Chromebook kan ikke lades mens den er slått på. Vurder å bruke den offisielle laderen.</translation>
 <translation id="1895658205118569222">Avslutning</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Søker etter mobilnettverk ...</translation>
 <translation id="583281660410589416">Ukjent</translation>
 <translation id="1383876407941801731">Søk</translation>
-<translation id="7468789844759750875">Gå til <ph name="NAME"/>-aktiveringsportalen for å kjøpe mer mobildata.</translation>
 <translation id="3901991538546252627">Kobler til <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Nettverksinformasjon</translation>
 <translation id="1621499497873603021">Gjenværende tid til batteriet er tomt – <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Avslutt gjesteøkten</translation>
 <translation id="8308637677604853869">Forrige meny</translation>
 <translation id="4666297444214622512">Kan ikke logge på en annen konto.</translation>
+<translation id="3625258641415618104">Skjermdumper er deaktivert</translation>
 <translation id="1346748346194534595">Høyre</translation>
 <translation id="1773212559869067373">Autentiseringssertifikatet ble avvist lokalt</translation>
 <translation id="8528322925433439945">Mobil</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktiveringen mislyktes</translation>
 <translation id="5097002363526479830">Kunne ikke koble til nettverket «<ph name="NAME"/>»: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi er slått av.</translation>
+<translation id="2966449113954629791">Du kan ha brukt opp mobildatakvoten din. Gå til aktiveringsportalen for <ph name="NAME"/> for å kjøpe mer data.</translation>
 <translation id="8132793192354020517">Tilkoblet <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Angi bakgrunnsbilde</translation>
 <translation id="8678698760965522072">Tilkoblet tilstand</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Gjenopprett</translation>
 <translation id="4274292172790327596">Ukjent feil</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Hodetelefon</translation>
 <translation id="225680501294068881">Leter etter enheter ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/> <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (intern)</translation>
 <translation id="4448844063988177157">Søker etter Wi-Fi-nettverk ...</translation>
 <translation id="8401662262483418323">Kunne ikke koble til «<ph name="NAME"/>»: <ph name="DETAILS"/>
 Tjenermelding: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Det oppstod en feil</translation>
 <translation id="7229570126336867161">Krever EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> er en offentlig økt administrert av <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Kunne ikke koble til nettverket: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Avslutt økten</translation>
 <translation id="8454013096329229812">Wi-Fi er slått på.</translation>
 <translation id="4872237917498892622">Alt + Søk eller Shift</translation>
 <translation id="9201131092683066720">Batteriet er <ph name="PERCENTAGE"/> % fullt</translation>
 <translation id="2983818520079887040">Innstillinger</translation>
+<translation id="3871838685472846647">Mobil aktivert</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Dokkmodus</translation>
 <translation id="112308213915226829">Skjul hylle automatisk</translation>
+<translation id="7573962313813535744">Dokket modus</translation>
 <translation id="8927026611342028580">Tilkobling har blitt forespurt</translation>
 <translation id="8300849813060516376">OTASP mislyktes</translation>
 <translation id="2792498699870441125">Alt + Søk</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Batteriet er <ph name="PERCENTAGE"/> % fullt og til lading.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktiveres …</translation>
 <translation id="4895488851634969361">Batteriet er fullt.</translation>
-<translation id="1391854757121130358">Du kan ha brukt opp mobildatakvoten din.</translation>
 <translation id="5947494881799873997">Tilbakestill</translation>
 <translation id="7593891976182323525">Søk eller Shift</translation>
 <translation id="7649070708921625228">Hjelp</translation>
+<translation id="747833637904845037">Chromebook holder seg på mens den er koblet til en ekstern skjerm, selv når lokket er nede.</translation>
 <translation id="3050422059534974565">Caps Lock er på.
 Trykk på Søk eller Shift for å avbryte.</translation>
 <translation id="397105322502079400">Beregner …</translation>
 <translation id="158849752021629804">Trenger hjemmenettverk</translation>
 <translation id="6857811139397017780">Aktiver <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP-oppslag mislyktes</translation>
-<translation id="5812035014844949013">UTDATA</translation>
 <translation id="6692173217867674490">Feil passordfrase</translation>
 <translation id="6165508094623778733">Les mer</translation>
 <translation id="9046895021617826162">Tilkoblingen mislyktes</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Lavt batterinivå (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Godta</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>.<ph name="MINUTE"/> gjenstår</translation>
+<translation id="3009178788565917040">Utdata</translation>
 <translation id="520760366042891468">Deler skjermkontrollen din via Hangouts.</translation>
 <translation id="8000066093800657092">Ingen nettverk</translation>
 <translation id="4015692727874266537">Logg på en annen konto</translation>
 <translation id="5941711191222866238">Minimer</translation>
 <translation id="6911468394164995108">Koble til annet</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Gratulerer! <ph name="NAME"/>-datatjenesten din er aktivert og klar til bruk.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> t og <ph name="MINUTE"/> m til batteriet er ferdigladet</translation>
 <translation id="6359806961507272919">Tekstmelding fra <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operatør</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index b0b124d..2a3695c 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">W wielokrotnym logowaniu możesz mieć najwyżej trzy konta.</translation>
 <translation id="370649949373421643">Włącz Wi-Fi</translation>
 <translation id="3626281679859535460">Jasność</translation>
+<translation id="3621202678540785336">Urządzenie wejściowe</translation>
 <translation id="595202126637698455">Śledzenie wydajności jest włączone</translation>
 <translation id="8054466585765276473">Obliczanie czasu pracy na baterii.</translation>
 <translation id="7982789257301363584">Sieć</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Zasobnik stanu</translation>
 <translation id="1661867754829461514">Brak kodu PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: łączę...</translation>
+<translation id="40400351611212369">Błąd aktywacji sieci</translation>
 <translation id="4237016987259239829">Błąd połączenia z siecią</translation>
 <translation id="2946640296642327832">Włącz Bluetooth</translation>
 <translation id="6459472438155181876">Rozszerzanie ekranu na <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Udostępniasz ekran w Hangouts – <ph name="HELPER_NAME"/> kontroluje Twój komputer.</translation>
 <translation id="7864539943188674973">Wyłącz Bluetooth</translation>
 <translation id="939252827960237676">Nie można zapisać zrzutu ekranu</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Uruchom ponownie i zaktualizuj</translation>
 <translation id="2268813581635650749">Wyloguj wszystkich</translation>
 <translation id="735745346212279324">VPN odłączona</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Dostosuj języki i metody wprowadzania</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Pozycja półki</translation>
-<translation id="2903907270192926896">WEJŚCIE</translation>
 <translation id="8676770494376880701">Podłączono ładowarkę o małej mocy</translation>
 <translation id="7170041865419449892">Poza zasięgiem</translation>
 <translation id="4804818685124855865">Rozłącz</translation>
@@ -77,18 +79,23 @@
 Naciśnij Shift + Alt, by ją przełączyć.</translation>
 <translation id="2562916301614567480">Sieć prywatna</translation>
 <translation id="6549021752953852991">Brak dostępnych sieci komórkowych</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Drogi monitorze, nie układa się między nami. (Ten monitor jest nieobsługiwany)</translation>
 <translation id="6426039856985689743">Wyłącz komórkową transmisję danych</translation>
 <translation id="3087734570205094154">Na dół</translation>
 <translation id="3742055079367172538">Wykonano zrzut ekranu</translation>
 <translation id="8878886163241303700">Rozszerzony ekran</translation>
 <translation id="5271016907025319479">Sieć VPN jest nieskonfigurowana.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Możliwość robienia zrzutów ekranów została wyłączona przez administratora.</translation>
 <translation id="372094107052732682">Naciśnij dwukrotnie Ctrl+Shift+Q, by zakończyć.</translation>
 <translation id="6803622936009808957">Nie można wyświetlić odbicia lustrzanego, ponieważ nie znaleziono obsługiwanych rozdzielczości. Zamiast tego został włączony pulpit rozszerzony.</translation>
 <translation id="1480041086352807611">Tryb demo</translation>
 <translation id="3626637461649818317">Pozostało <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Wprowadzanie tekstu</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Aktywacja <ph name="NAME"/> wymaga połączenia z siecią.</translation>
+<translation id="3963445509666917109">Głośnik (wewnętrzny)</translation>
 <translation id="2825619548187458965">Półka</translation>
 <translation id="2614835198358683673">Włączony Chromebook może nie być ładowany. Zalecamy użycie oryginalnej ładowarki.</translation>
 <translation id="1895658205118569222">Wyłączenie</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Szukam sieci komórkowych...</translation>
 <translation id="583281660410589416">Nieznany</translation>
 <translation id="1383876407941801731">Wyszukiwanie</translation>
-<translation id="7468789844759750875">Odwiedź portal aktywacji <ph name="NAME"/>, aby wykupić więcej transferu danych.</translation>
 <translation id="3901991538546252627">Łączę z: <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informacje o sieci</translation>
 <translation id="1621499497873603021">Czas pozostały do wyczerpania baterii: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Zakończ sesję gościa</translation>
 <translation id="8308637677604853869">Poprzednie menu</translation>
 <translation id="4666297444214622512">Nie można zalogować się na kolejne konto.</translation>
+<translation id="3625258641415618104">Zrzuty ekranu wyłączone</translation>
 <translation id="1346748346194534595">W prawo</translation>
 <translation id="1773212559869067373">Certyfikat uwierzytelniania został odrzucony lokalnie</translation>
 <translation id="8528322925433439945">Komórkowe...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Niepowodzenie aktywacji</translation>
 <translation id="5097002363526479830">Nie udało się połączyć z siecią „<ph name="NAME"/>”: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi wyłączone.</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>
 <translation id="8132793192354020517">Połączono z <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Ustaw tapetę...</translation>
 <translation id="8678698760965522072">Online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Przywróć</translation>
 <translation id="4274292172790327596">Nierozpoznany błąd</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Słuchawki</translation>
 <translation id="225680501294068881">Skanowanie w poszukiwaniu urządzeń...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (wewnętrzny)</translation>
 <translation id="4448844063988177157">Trwa wyszukiwanie sieci Wi-Fi...</translation>
 <translation id="8401662262483418323">Nie udało się połączyć z „<ph name="NAME"/>”: <ph name="DETAILS"/>
 Komunikat serwera: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Wystąpił błąd</translation>
 <translation id="7229570126336867161">Wymagana technologia EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> jest publiczną sesją zarządzaną przez <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Nie udało się połączyć z siecią: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Zakończ sesję</translation>
 <translation id="8454013096329229812">Wi-Fi włączone.</translation>
 <translation id="4872237917498892622">Alt+Szukaj lub Shift</translation>
 <translation id="9201131092683066720">Naładowanie baterii: <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Ustawienia</translation>
+<translation id="3871838685472846647">Sieć komórkowa aktywna</translation>
 <translation id="1195412055398077112">nadmiarowość obrazu</translation>
-<translation id="1717216362413677834">Tryb doku</translation>
 <translation id="112308213915226829">Autoukrywanie półki</translation>
+<translation id="7573962313813535744">Tryb dokowania</translation>
 <translation id="8927026611342028580">Poproszono o połączenie</translation>
 <translation id="8300849813060516376">Dostarczanie OTASP nie powiodło się</translation>
 <translation id="2792498699870441125">Alt+Szukaj</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Naładowanie baterii: <ph name="PERCENTAGE"/>%. Trwa ładowanie.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: aktywuję...</translation>
 <translation id="4895488851634969361">Bateria jest pełna.</translation>
-<translation id="1391854757121130358">Być może został wyczerpany limit komórkowej transmisji danych.</translation>
 <translation id="5947494881799873997">Przywróć</translation>
 <translation id="7593891976182323525">Szukaj lub Shift</translation>
 <translation id="7649070708921625228">Pomoc</translation>
+<translation id="747833637904845037">Chromebook pozostanie włączony, dopóki będzie podłączony do wyświetlacza zewnętrznego, nawet po zamknięciu pokrywy.</translation>
 <translation id="3050422059534974565">CAPS LOCK jest włączony.
 Naciśnij Szukaj lub Shift, by anulować.</translation>
 <translation id="397105322502079400">Obliczanie...</translation>
 <translation id="158849752021629804">Wymagana sieć macierzysta</translation>
 <translation id="6857811139397017780">Aktywuj usługę <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Wyszukiwanie DHCP nie powiodło się</translation>
-<translation id="5812035014844949013">WYJŚCIE</translation>
 <translation id="6692173217867674490">Błędne hasło</translation>
 <translation id="6165508094623778733">Więcej informacji</translation>
 <translation id="9046895021617826162">Łączenie nie powiodło się</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Niski stan baterii (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Akceptuj</translation>
 <translation id="5102001756192215136">Pozostało <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Urządzenie wyjściowe</translation>
 <translation id="520760366042891468">Udostępniasz ekran i kontrolę nad komputerem w Hangouts.</translation>
 <translation id="8000066093800657092">Brak sieci</translation>
 <translation id="4015692727874266537">Zaloguj się na kolejne konto...</translation>
 <translation id="5941711191222866238">Minimalizuj</translation>
 <translation id="6911468394164995108">Połącz z inną...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Gratulacje! Usługa transmisji danych „<ph name="NAME"/>” została aktywowana i można z niej korzystać.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> godz. <ph name="MINUTE"/> min do pełnego naładowania</translation>
 <translation id="6359806961507272919">Wiadomość SMS z numeru <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operator</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index d2f1d0e..dca2a0c 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">É possível ter até três contas em login múltiplo.</translation>
 <translation id="370649949373421643">Ativar Wi-Fi</translation>
 <translation id="3626281679859535460">Brilho</translation>
+<translation id="3621202678540785336">Entrada</translation>
 <translation id="595202126637698455">Rastreamento de desempenho ativado</translation>
 <translation id="8054466585765276473">Calculando duração da bateria.</translation>
 <translation id="7982789257301363584">Rede</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Bandeja de status</translation>
 <translation id="1661867754829461514">PIN ausente</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: conectando...</translation>
+<translation id="40400351611212369">Erro de ativação de rede</translation>
 <translation id="4237016987259239829">Erro de conexão da rede</translation>
 <translation id="2946640296642327832">Ativar bluetooth</translation>
 <translation id="6459472438155181876">Estendendo tela para <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Compartilhando o controle de sua tela com <ph name="HELPER_NAME"/> por meio do Hangouts.</translation>
 <translation id="7864539943188674973">Desativar bluetooth</translation>
 <translation id="939252827960237676">Falha ao salvar a captura de tela</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reiniciar para atualizar</translation>
 <translation id="2268813581635650749">Desconectar todos</translation>
 <translation id="735745346212279324">VPN desconectada</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizar idiomas e entrada...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posição da estante</translation>
-<translation id="2903907270192926896">ENTRADA</translation>
 <translation id="8676770494376880701">Carregador de baixa potência conectado</translation>
 <translation id="7170041865419449892">Fora de alcance</translation>
 <translation id="4804818685124855865">Desconectar</translation>
@@ -77,18 +79,23 @@
 Pressione Shift + Alt para alternar.</translation>
 <translation id="2562916301614567480">Rede privada</translation>
 <translation id="6549021752953852991">Nenhuma rede celular disponível</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Prezado monitor, as coisas não estão dando certo entre nós (este monitor não é suportado).</translation>
 <translation id="6426039856985689743">Desativar dados móveis</translation>
 <translation id="3087734570205094154">Parte inferior</translation>
 <translation id="3742055079367172538">Captura de tela realizada</translation>
 <translation id="8878886163241303700">Tela ampla</translation>
 <translation id="5271016907025319479">A VPN não está configurada.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">A capacidade de fazer capturas de tela foi desativada pelo seu administrador.</translation>
 <translation id="372094107052732682">Pressione Ctrl+Shift+Q duas vezes para sair.</translation>
 <translation id="6803622936009808957">Não foi possível espelhar os displays porque não foram encontradas resoluções suportadas. Em vez disso, foi ativada a área de trabalho estendida.</translation>
 <translation id="1480041086352807611">Modo de demonstração</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% restante</translation>
 <translation id="9089416786594320554">Métodos de entrada</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">A ativação de &quot;<ph name="NAME"/>&quot; requer uma conexão com a rede.</translation>
+<translation id="3963445509666917109">Alto-falante (interno)</translation>
 <translation id="2825619548187458965">Estante</translation>
 <translation id="2614835198358683673">Seu Chromebook pode não carregar enquanto estiver ligado. Considere usar o carregador oficial.</translation>
 <translation id="1895658205118569222">Encerramento</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Procurando redes de celular...</translation>
 <translation id="583281660410589416">Desconhecido</translation>
 <translation id="1383876407941801731">Pesquisa</translation>
-<translation id="7468789844759750875">Visite o portal de ativação do <ph name="NAME"/> para adquirir mais dados.</translation>
 <translation id="3901991538546252627">Conectando-se a <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informações de rede</translation>
 <translation id="1621499497873603021">O tempo restante até que a bateria se esgote é de <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Sair da sessão de visitante</translation>
 <translation id="8308637677604853869">Menu anterior</translation>
 <translation id="4666297444214622512">Não é possível fazer login em outra conta.</translation>
+<translation id="3625258641415618104">Capturas de tela desativadas</translation>
 <translation id="1346748346194534595">Para a direita</translation>
 <translation id="1773212559869067373">Certificado de autenticação rejeitado localmente</translation>
 <translation id="8528322925433439945">Celular...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Falha na ativação</translation>
 <translation id="5097002363526479830">Falha na conexão à rede &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">O Wi-Fi está desligado.</translation>
+<translation id="2966449113954629791">Você pode ter usado a cota de dados do seu dispositivo móvel. Visite o portal de ativação do <ph name="NAME"/> para comprar mais dados.</translation>
 <translation id="8132793192354020517">Conectado à <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Definir plano de fundo...</translation>
 <translation id="8678698760965522072">Estado on-line</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaurar</translation>
 <translation id="4274292172790327596">Erro desconhecido</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Fone de ouvido</translation>
 <translation id="225680501294068881">Procurando dispositivos...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microfone (interno)</translation>
 <translation id="4448844063988177157">Procurando redes Wi-Fi...</translation>
 <translation id="8401662262483418323">Falha ao se conectar a &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Mensagem do servidor: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Ocorreu um erro</translation>
 <translation id="7229570126336867161">EVDO ausente</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> é uma sessão pública gerenciada por <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Falha na conexão à rede: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Sair da sessão</translation>
 <translation id="8454013096329229812">O Wi-Fi está ligado.</translation>
 <translation id="4872237917498892622">Alt + Pesquisar ou Shift</translation>
 <translation id="9201131092683066720">A bateria está <ph name="PERCENTAGE"/>% carregada.</translation>
 <translation id="2983818520079887040">Configurações...</translation>
+<translation id="3871838685472846647">Celular ativado</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Modo dock</translation>
 <translation id="112308213915226829">Ocultar estante automaticamente</translation>
+<translation id="7573962313813535744">Modo ancorado</translation>
 <translation id="8927026611342028580">Conexão solicitada</translation>
 <translation id="8300849813060516376">Falha no OTASP</translation>
 <translation id="2792498699870441125">Alt + Pesquisar</translation>
@@ -176,16 +188,15 @@
 <translation id="6785414152754474415">A bateria está <ph name="PERCENTAGE"/>% cheia e carregando.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Ativando...</translation>
 <translation id="4895488851634969361">A bateria está carregada.</translation>
-<translation id="1391854757121130358">Você pode ter esgotado sua permissão de dados móveis.</translation>
 <translation id="5947494881799873997">Reverter</translation>
 <translation id="7593891976182323525">Pesquisar ou Shift</translation>
 <translation id="7649070708921625228">Ajuda</translation>
+<translation id="747833637904845037">Seu Chromebook permanecerá ligado enquanto estiver conectado a um display externo, mesmo com a tampa fechada.</translation>
 <translation id="3050422059534974565">A tecla CAPS LOCK está ativada. Pressione Pesquisar ou Shift para cancelar.</translation>
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="158849752021629804">Rede doméstica ausente</translation>
 <translation id="6857811139397017780">Ativar <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Falha ao procurar DHCP</translation>
-<translation id="5812035014844949013">SAÍDA</translation>
 <translation id="6692173217867674490">Senha incorreta</translation>
 <translation id="6165508094623778733">Saiba mais</translation>
 <translation id="9046895021617826162">Falha na conexão</translation>
@@ -200,12 +211,14 @@
 <translation id="8940956008527784070">Nível de bateria baixo (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Aceitar</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> restantes</translation>
+<translation id="3009178788565917040">Saída</translation>
 <translation id="520760366042891468">Compartilhando o controle de sua tela por meio do Hangouts.</translation>
 <translation id="8000066093800657092">Sem rede</translation>
 <translation id="4015692727874266537">Fazer login em outra conta...</translation>
 <translation id="5941711191222866238">Minimizar</translation>
 <translation id="6911468394164995108">Conectar-se a outra...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Parabéns! Seu serviço de dados &quot;<ph name="NAME"/>&quot; foi ativado e está pronto para ser usado.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>h<ph name="MINUTE"/>m até a carga total</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operadora</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 5cb04a1..ffbf7c6 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Só pode ter três contas no máximo no início de sessão integrado.</translation>
 <translation id="370649949373421643">Ativar Wi-Fi</translation>
 <translation id="3626281679859535460">Brilho</translation>
+<translation id="3621202678540785336">Entrada</translation>
 <translation id="595202126637698455">Rastreio do desempenho ativado</translation>
 <translation id="8054466585765276473">A calcular tempo da bateria.</translation>
 <translation id="7982789257301363584">Rede</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Tabuleiro de estado</translation>
 <translation id="1661867754829461514">Falta o PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: A ligar...</translation>
+<translation id="40400351611212369">Erro na Ativação de Rede</translation>
 <translation id="4237016987259239829">Erro de ligação à rede</translation>
 <translation id="2946640296642327832">Ativar Bluetooth</translation>
 <translation id="6459472438155181876">A prolongar ecrã para <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Partilhar o controlo do seu ecrã com <ph name="HELPER_NAME"/> através do Hangouts.</translation>
 <translation id="7864539943188674973">Desativar Bluetooth</translation>
 <translation id="939252827960237676">Não foi possível guardar a captura de ecrã</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reiniciar para atualizar</translation>
 <translation id="2268813581635650749">Terminar sessão de todos</translation>
 <translation id="735745346212279324">VPN desligado</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizar idiomas e introdução...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Posição da prateleira</translation>
-<translation id="2903907270192926896">ENTRADA</translation>
 <translation id="8676770494376880701">Carregador de baixo consumo ligado</translation>
 <translation id="7170041865419449892">Fora de alcance</translation>
 <translation id="4804818685124855865">Desligar</translation>
@@ -77,18 +79,23 @@
 Prima Shift + Alt para mudar.</translation>
 <translation id="2562916301614567480">Rede Privada</translation>
 <translation id="6549021752953852991">Sem rede celular disponível</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Caro Monitor, não está a resultar entre nós. (Esse monitor não é suportado)</translation>
 <translation id="6426039856985689743">Desativar dados móveis</translation>
 <translation id="3087734570205094154">Parte inferior</translation>
 <translation id="3742055079367172538">Captura de ecrã efetuada</translation>
 <translation id="8878886163241303700">Ecrã alargado</translation>
 <translation id="5271016907025319479">A VPN não está configurada.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">A capacidade de criar capturas de ecrã foi desativada pelo seu administrador.</translation>
 <translation id="372094107052732682">Prima Ctrl+Shift+Q duas vezes para sair.</translation>
 <translation id="6803622936009808957">Não foi possível espelhar os ecrãs, porque não foram encontradas resoluções suportadas. Em vez disso, entrou no ambiente de trabalho expandido.</translation>
 <translation id="1480041086352807611">Modo de demonstração</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % restante</translation>
 <translation id="9089416786594320554">Métodos de introdução</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">A ativação de &quot;<ph name="NAME"/>&quot; necessita de uma ligação de rede.</translation>
+<translation id="3963445509666917109">Altifalante (interno)</translation>
 <translation id="2825619548187458965">Prateleira</translation>
 <translation id="2614835198358683673">É possível que não consiga carregar o seu Chromebook enquanto este se encontrar ligado. Considere utilizar o carregador oficial.</translation>
 <translation id="1895658205118569222">Encerrar</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">A procurar redes celulares...</translation>
 <translation id="583281660410589416">Desconhecido</translation>
 <translation id="1383876407941801731">Pesquisa</translation>
-<translation id="7468789844759750875">Visite o portal de ativação de <ph name="NAME"/> para comprar mais dados.</translation>
 <translation id="3901991538546252627">A ligar a <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informações da Rede</translation>
 <translation id="1621499497873603021">Tempo restante até a bateria terminar, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Sair da sessão de convidado</translation>
 <translation id="8308637677604853869">Menu anterior</translation>
 <translation id="4666297444214622512">Não é possível iniciar sessão noutra conta.</translation>
+<translation id="3625258641415618104">Capturas de ecrã desativadas</translation>
 <translation id="1346748346194534595">Direita</translation>
 <translation id="1773212559869067373">Certificado de autenticação rejeitado localmente</translation>
 <translation id="8528322925433439945">Telemóvel...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Falha na activação</translation>
 <translation id="5097002363526479830">Falha ao ligar à rede &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">A ligação Wi-Fi está desativada.</translation>
+<translation id="2966449113954629791">Poderá ter atingido o limite de utilização dos dados móveis. Visite o portal de ativação <ph name="NAME"/> para comprar mais dados.</translation>
 <translation id="8132793192354020517">Ligado a <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Definir imagem de fundo...</translation>
 <translation id="8678698760965522072">Estado on-line</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restaurar</translation>
 <translation id="4274292172790327596">Erro não reconhecido</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Auscultador</translation>
 <translation id="225680501294068881">A procurar dispositivos...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microfone (interno)</translation>
 <translation id="4448844063988177157">A pesquisar redes Wi-Fi...</translation>
 <translation id="8401662262483418323">A ligação a &quot;<ph name="NAME"/>&quot; falhou: <ph name="DETAILS"/>
 Mensagem do servidor: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Ocorreu um erro</translation>
 <translation id="7229570126336867161">Requer EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> é uma sessão pública gerida por <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Não foi possível ligar à rede: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Sair da sessão</translation>
 <translation id="8454013096329229812">A ligação Wi-Fi está ativada.</translation>
 <translation id="4872237917498892622">Alt + Pesquisar ou Shift</translation>
 <translation id="9201131092683066720">A bateria está <ph name="PERCENTAGE"/>% cheia.</translation>
 <translation id="2983818520079887040">Definições...</translation>
+<translation id="3871838685472846647">Telemóvel Ativado</translation>
 <translation id="1195412055398077112">overscan</translation>
-<translation id="1717216362413677834">Modo da estação de ancoragem</translation>
 <translation id="112308213915226829">Ocultar automaticamente a prateleira</translation>
+<translation id="7573962313813535744">Modo ancorado</translation>
 <translation id="8927026611342028580">Ligação Solicitada</translation>
 <translation id="8300849813060516376">O OTASP falhou</translation>
 <translation id="2792498699870441125">Alt + Pesquisar</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">A bateria está <ph name="PERCENTAGE"/>% cheia e a carregar.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: a ativar...</translation>
 <translation id="4895488851634969361">A bateria está carregada.</translation>
-<translation id="1391854757121130358">Poderá ter utilizado toda a sua bonificação de dados móveis.</translation>
 <translation id="5947494881799873997">Reverter</translation>
 <translation id="7593891976182323525">Pesquisar ou Shift</translation>
 <translation id="7649070708921625228">Ajuda</translation>
+<translation id="747833637904845037">O Chromebook mantém-se aceso enquanto está ligado a um visor externo, mesmo com a tampa fechada.</translation>
 <translation id="3050422059534974565">CAPS LOCK ativado.
 Prima Pesquisar ou Shift para cancelar.</translation>
 <translation id="397105322502079400">A calcular...</translation>
 <translation id="158849752021629804">Requer rede doméstica</translation>
 <translation id="6857811139397017780">Activar <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">A procura DHCP falhou</translation>
-<translation id="5812035014844949013">SAÍDA</translation>
 <translation id="6692173217867674490">Frase de acesso incorrecta</translation>
 <translation id="6165508094623778733">Saiba mais</translation>
 <translation id="9046895021617826162">A ligação falhou</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Bateria fraca (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Aceitar</translation>
 <translation id="5102001756192215136">Restam <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Saída</translation>
 <translation id="520760366042891468">Partilhar o controlo do seu ecrã através dos Hangouts.</translation>
 <translation id="8000066093800657092">Sem rede</translation>
 <translation id="4015692727874266537">Iniciar sessão numa conta adicional...</translation>
 <translation id="5941711191222866238">Minimizar</translation>
 <translation id="6911468394164995108">Aderir a outra...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Parabéns! O serviço de dados &quot;<ph name="NAME"/>&quot; foi ativado e está pronto a funcionar.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>h <ph name="MINUTE"/>m até ficar completa</translation>
 <translation id="6359806961507272919">SMS de <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operador</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index ace4300..0aeac78 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Conectarea multiplă acceptă maximum trei conturi.</translation>
 <translation id="370649949373421643">Activați Wi-Fi</translation>
 <translation id="3626281679859535460">Luminozitate</translation>
+<translation id="3621202678540785336">Intrări</translation>
 <translation id="595202126637698455">Urmărirea performanței este activată</translation>
 <translation id="8054466585765276473">Se calculează durata bateriei.</translation>
 <translation id="7982789257301363584">Rețea</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Bara de stare</translation>
 <translation id="1661867754829461514">Codul PIN lipsește</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: se conectează...</translation>
+<translation id="40400351611212369">Eroare de activare a rețelei</translation>
 <translation id="4237016987259239829">Eroare de conectare la rețea</translation>
 <translation id="2946640296642327832">Activați Bluetooth</translation>
 <translation id="6459472438155181876">Se extinde ecranul pe <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">În prezent, <ph name="HELPER_NAME"/> vă poate controla ecranul prin intermediul Hangouts.</translation>
 <translation id="7864539943188674973">Dezactivați Bluetooth</translation>
 <translation id="939252827960237676">Captura de ecran nu a putut fi salvată.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reporniți pentru a actualiza</translation>
 <translation id="2268813581635650749">Deconectați toți utilizatorii</translation>
 <translation id="735745346212279324">Rețea VPN deconectată</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Personalizați limbile și modul de introducere...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Poziție raft</translation>
-<translation id="2903907270192926896">INTRARE</translation>
 <translation id="8676770494376880701">A fost conectat un încărcător de putere joasă</translation>
 <translation id="7170041865419449892">Fără acoperire</translation>
 <translation id="4804818685124855865">Deconectați-vă</translation>
@@ -77,18 +79,23 @@
         Apăsați pe Shift + Alt pentru a comuta.</translation>
 <translation id="2562916301614567480">Rețea privată</translation>
 <translation id="6549021752953852991">Nicio rețea mobilă disponibilă</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (Monitorul respectiv nu este acceptat)</translation>
 <translation id="6426039856985689743">Dezactivați datele mobile</translation>
 <translation id="3087734570205094154">Jos</translation>
 <translation id="3742055079367172538">Captură de ecran efectuată</translation>
 <translation id="8878886163241303700">Ecran extins</translation>
 <translation id="5271016907025319479">Rețeaua VPN nu este configurată.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Capacitatea de a crea capturi de ecran a fost dezactivată de administrator.</translation>
 <translation id="372094107052732682">Apăsați de două ori Ctrl+Shift+Q pentru a ieși.</translation>
 <translation id="6803622936009808957">Afișajele nu au putut fi oglindite, deoarece nu au fost găsite rezoluții acceptate. Ați intrat, în schimb, în modul monitor extins.</translation>
 <translation id="1480041086352807611">Modul demonstrativ</translation>
 <translation id="3626637461649818317">Nivel disponibil: <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Metode de introducere</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Activarea rețelei „<ph name="NAME"/>” necesită o conexiune la rețea.</translation>
+<translation id="3963445509666917109">Difuzor (intern)</translation>
 <translation id="2825619548187458965">Raft</translation>
 <translation id="2614835198358683673">Este posibil ca laptopul Chromebook să nu se încarce în timp ce este pornit. Se recomandă să utilizați încărcătorul original.</translation>
 <translation id="1895658205118569222">Închideți</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Se caută rețele mobile...</translation>
 <translation id="583281660410589416">Necunoscut</translation>
 <translation id="1383876407941801731">Căutare</translation>
-<translation id="7468789844759750875">Accesați portalul de activare <ph name="NAME"/> pentru a achiziționa mai multe date.</translation>
 <translation id="3901991538546252627">Se conectează la <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informații despre rețea</translation>
 <translation id="1621499497873603021">Timp rămas până la descărcarea bateriei: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Ieșiți din sesiunea pentru invitați</translation>
 <translation id="8308637677604853869">Meniul anterior</translation>
 <translation id="4666297444214622512">Nu vă mai puteți conecta la alt cont.</translation>
+<translation id="3625258641415618104">Capturile de ecran sunt dezactivate</translation>
 <translation id="1346748346194534595">Dreapta</translation>
 <translation id="1773212559869067373">Certificatul de autentificare a fost respins local</translation>
 <translation id="8528322925433439945">Rețele mobile...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Activare nereușită</translation>
 <translation id="5097002363526479830">A eșuat conectarea la rețeaua „<ph name="NAME"/>”: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Conexiunea Wi-Fi este dezactivată.</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>
 <translation id="8132793192354020517">Conectat la <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Setați o imagine de fundal...</translation>
 <translation id="8678698760965522072">Stare online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Restabiliți</translation>
 <translation id="4274292172790327596">Eroare nerecunoscută</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Căști</translation>
 <translation id="225680501294068881">Se caută gadgeturi...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Microfon (intern)</translation>
 <translation id="4448844063988177157">Se caută rețele Wi-Fi...</translation>
 <translation id="8401662262483418323">Nu s-a putut stabili conexiunea la „<ph name="NAME"/>”: <ph name="DETAILS"/>
 Mesaj server: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">A apărut o eroare</translation>
 <translation id="7229570126336867161">Este necesar EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> este o sesiune publică gestionată de <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Conectarea la rețea nu s-a realizat: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Ieșiți din sesiune</translation>
 <translation id="8454013096329229812">Conexiunea Wi-Fi este activată.</translation>
 <translation id="4872237917498892622">Alt+Căutare sau Shift</translation>
 <translation id="9201131092683066720">Nivelul bateriei este de <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Setări...</translation>
+<translation id="3871838685472846647">Mobil activat</translation>
 <translation id="1195412055398077112">suprascanare</translation>
-<translation id="1717216362413677834">Mod de andocare</translation>
 <translation id="112308213915226829">Ascundeți automat raftul</translation>
+<translation id="7573962313813535744">Modul andocat</translation>
 <translation id="8927026611342028580">Conectare solicitată</translation>
 <translation id="8300849813060516376">OTASP a eșuat</translation>
 <translation id="2792498699870441125">Alt+Căutare</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Nivelul bateriei este de <ph name="PERCENTAGE"/>% și se încarcă.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: se activează...</translation>
 <translation id="4895488851634969361">Bateria este încărcată complet.</translation>
-<translation id="1391854757121130358">Este posibil să fi consumat complet alocarea datelor mobile.</translation>
 <translation id="5947494881799873997">Reveniți</translation>
 <translation id="7593891976182323525">Căutare sau Shift</translation>
 <translation id="7649070708921625228">Ajutor</translation>
+<translation id="747833637904845037">Chromebookul va continua să funcționeze cât timp este conectat la un afișaj extern, chiar și cu capacul închis.</translation>
 <translation id="3050422059534974565">Tasta CAPS LOCK este activată.
 Apăsați Căutare sau Shift pentru a anula.</translation>
 <translation id="397105322502079400">Se calculează...</translation>
 <translation id="158849752021629804">Este necesară rețeaua de domiciliu</translation>
 <translation id="6857811139397017780">Activați <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Căutarea DHCP a eșuat</translation>
-<translation id="5812035014844949013">IEȘIRE</translation>
 <translation id="6692173217867674490">Expresie de acces greșită</translation>
 <translation id="6165508094623778733">Aflați mai multe</translation>
 <translation id="9046895021617826162">Conectarea a eșuat</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Baterie slabă (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Accept</translation>
 <translation id="5102001756192215136">Timp rămas: <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Ieșiri</translation>
 <translation id="520760366042891468">În prezent, permiteți controlul la ecran prin intermediul Hangouts.</translation>
 <translation id="8000066093800657092">Nicio rețea</translation>
 <translation id="4015692727874266537">Conectați-vă la alt cont...</translation>
 <translation id="5941711191222866238">Minimizați</translation>
 <translation id="6911468394164995108">Conectați-vă la altă rețea...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Felicitări! Serviciul de date „<ph name="NAME"/>” a fost activat și este gata de utilizare.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h. <ph name="MINUTE"/> min. până la încărcare completă</translation>
 <translation id="6359806961507272919">SMS de la <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operator</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index e99e8b8..7f6da93 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Множественный вход поддерживает не более трех аккаунтов.</translation>
 <translation id="370649949373421643">Включить Wi-Fi</translation>
 <translation id="3626281679859535460">Яркость</translation>
+<translation id="3621202678540785336">Вход</translation>
 <translation id="595202126637698455">Включено отслеживание эффективности</translation>
 <translation id="8054466585765276473">Подсчет оставшегося времени работы от батареи…</translation>
 <translation id="7982789257301363584">Сеть</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Строка состояния</translation>
 <translation id="1661867754829461514">PIN-код отсутствует</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: соединение...</translation>
+<translation id="40400351611212369">Ошибка активации сети</translation>
 <translation id="4237016987259239829">Ошибка сетевого подключения</translation>
 <translation id="2946640296642327832">Включить Bluetooth</translation>
 <translation id="6459472438155181876">Расширение экрана на <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Доступ к экрану для <ph name="HELPER_NAME"/> в Hangouts.</translation>
 <translation id="7864539943188674973">Отключить Bluetooth</translation>
 <translation id="939252827960237676">Не удалось сохранить скриншот</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Перезагрузите, чтобы обновить</translation>
 <translation id="2268813581635650749">Выйти из всех аккаунтов</translation>
 <translation id="735745346212279324">VPN-соединение прервано</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Настройка языков и ввода...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Положение полки</translation>
-<translation id="2903907270192926896">ВХОД</translation>
 <translation id="8676770494376880701">Подключено маломощное зарядное устройство</translation>
 <translation id="7170041865419449892">Выход за рамки диапазона</translation>
 <translation id="4804818685124855865">Отключиться</translation>
@@ -77,18 +79,23 @@
 Для переключения нажмите Shift + Alt.</translation>
 <translation id="2562916301614567480">Частная сеть</translation>
 <translation id="6549021752953852991">Сеть не найдена</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Не удалось выполнить операцию.</translation>
 <translation id="6426039856985689743">Отключить мобильную передачу данных</translation>
 <translation id="3087734570205094154">Низ</translation>
 <translation id="3742055079367172538">Сделан скриншот</translation>
 <translation id="8878886163241303700">Раскрытый экран</translation>
 <translation id="5271016907025319479">VPN не настроена.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Функция создания скриншотов была отключена администратором.</translation>
 <translation id="372094107052732682">Чтобы выйти, дважды нажмите Ctrl + Shift + Q.</translation>
 <translation id="6803622936009808957">Не удалось дублировать изображение экрана, т. к. указанное разрешение не поддерживается. Включен режим расширенного рабочего стола.</translation>
 <translation id="1480041086352807611">Демонстрационный режим</translation>
 <translation id="3626637461649818317">Осталось <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Методы ввода</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Для активации &quot;<ph name="NAME"/>&quot; требуется подключение к сети.</translation>
+<translation id="3963445509666917109">Динамик (внутренний)</translation>
 <translation id="2825619548187458965">Полка</translation>
 <translation id="2614835198358683673">Возможны проблемы при зарядке Chromebook. Рекомендуем использовать комплектное зарядное устройство.</translation>
 <translation id="1895658205118569222">Завершение работы</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Поиск сетей мобильной связи...</translation>
 <translation id="583281660410589416">неизвестно</translation>
 <translation id="1383876407941801731">Поиск</translation>
-<translation id="7468789844759750875">Чтобы приобрести дополнительный пакет данных, перейдите на портал активации <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Подключение к <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Информация о сети</translation>
 <translation id="1621499497873603021">Оставшееся время работы от батареи: <ph name="TIME_LEFT"/>.</translation>
 <translation id="5980301590375426705">Выйти из гостевого режима</translation>
 <translation id="8308637677604853869">Предыдущее меню</translation>
 <translation id="4666297444214622512">Не удается войти ещё в один аккаунт.</translation>
+<translation id="3625258641415618104">Скриншоты отключены</translation>
 <translation id="1346748346194534595">Вправо</translation>
 <translation id="1773212559869067373">Сертификат аутентификации отклонен локально</translation>
 <translation id="8528322925433439945">Мобильные сети…</translation>
@@ -132,6 +139,7 @@
 <translation id="1512064327686280138">Сбой активации</translation>
 <translation id="5097002363526479830">Не удалось подключиться к сети <ph name="NAME"/>: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi отключен</translation>
+<translation id="2966449113954629791">Возможно, вы использовали свой лимит мобильных данных. Зайдите на портал активации <ph name="NAME"/>, чтобы приобрести дополнительный объем данных.</translation>
 <translation id="8132793192354020517">Подключено к сети <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Выбрать обои</translation>
 <translation id="8678698760965522072">Состояние &quot;В сети&quot;</translation>
@@ -148,22 +156,26 @@
 <translation id="3157931365184549694">Восстановить</translation>
 <translation id="4274292172790327596">Нераспознанная ошибка</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Наушники</translation>
 <translation id="225680501294068881">Поиск устройств…</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Микрофон (внутренний)</translation>
 <translation id="4448844063988177157">Поиск сетей Wi-Fi...</translation>
 <translation id="8401662262483418323">Сбой подключения к службе &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Сообщение сервера: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Произошел сбой.</translation>
 <translation id="7229570126336867161">Необходимо наличие EV-DO</translation>
 <translation id="2999742336789313416">Открытый сеанс <ph name="DISPLAY_NAME"/> выполняется в домене <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Не удалось подключиться к сети: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Завершить сеанс</translation>
 <translation id="8454013096329229812">Wi-Fi включен</translation>
 <translation id="4872237917498892622">Alt + Search или Shift</translation>
 <translation id="9201131092683066720">Батарея заряжена на <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Настройки...</translation>
+<translation id="3871838685472846647">Включена сотовая связь</translation>
 <translation id="1195412055398077112">Каемка экрана</translation>
-<translation id="1717216362413677834">Закрепленный режим</translation>
 <translation id="112308213915226829">Автоматически скрывать полку</translation>
+<translation id="7573962313813535744">Закрепленный режим</translation>
 <translation id="8927026611342028580">Запрос на подключение отправлен</translation>
 <translation id="8300849813060516376">Сбой OTASP</translation>
 <translation id="2792498699870441125">Alt + Search</translation>
@@ -175,17 +187,16 @@
 <translation id="6785414152754474415">Батарея заряжена на <ph name="PERCENTAGE"/>% и подключена к источнику питания.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: выполняется активация...</translation>
 <translation id="4895488851634969361">Батарея полностью заряжена.</translation>
-<translation id="1391854757121130358">Вероятно, вы использовали весь объем данных, предусмотренный тарифным планом.</translation>
 <translation id="5947494881799873997">Отменить</translation>
 <translation id="7593891976182323525">Search или Shift</translation>
 <translation id="7649070708921625228">Справка</translation>
+<translation id="747833637904845037">При подключении к внешнему дисплею Chromebook не отключается, даже если его крышка закрыта.</translation>
 <translation id="3050422059534974565">Включен режим CAPS LOCK.
 Чтобы отключить его, нажмите Search или Shift.</translation>
 <translation id="397105322502079400">Вычисление…</translation>
 <translation id="158849752021629804">Необходима домашняя сеть</translation>
 <translation id="6857811139397017780">Активировать <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Поиск DHCP завершен со сбоем</translation>
-<translation id="5812035014844949013">ВЫХОД</translation>
 <translation id="6692173217867674490">Неправильная кодовая фраза</translation>
 <translation id="6165508094623778733">Подробнее...</translation>
 <translation id="9046895021617826162">Сбой подключения</translation>
@@ -201,12 +212,14 @@
 <translation id="8940956008527784070">Низкий заряд батареи (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Принять</translation>
 <translation id="5102001756192215136">Осталось <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Выход</translation>
 <translation id="520760366042891468">Доступ к экрану в Hangouts.</translation>
 <translation id="8000066093800657092">Нет сети</translation>
 <translation id="4015692727874266537">Войти ещё в один аккаунт...</translation>
 <translation id="5941711191222866238">Свернуть</translation>
 <translation id="6911468394164995108">Подключиться к другой сети...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Поздравляем! Служба передачи данных &quot;<ph name="NAME"/>&quot; активирована и готова к работе.</translation>
 <translation id="412065659894267608">До полной зарядки: <ph name="HOUR"/> ч <ph name="MINUTE"/> мин</translation>
 <translation id="6359806961507272919">SMS от <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Оператор связи</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index c313ac1..ddcc4bb 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">V rámci viacnásobného prihlásenia môžete mať maximálne tri účty.</translation>
 <translation id="370649949373421643">Povoliť Wi-Fi</translation>
 <translation id="3626281679859535460">Jas</translation>
+<translation id="3621202678540785336">Vstup</translation>
 <translation id="595202126637698455">Sledovanie výkonnosti je povolené</translation>
 <translation id="8054466585765276473">Výpočet času výdrže batérie.</translation>
 <translation id="7982789257301363584">Sieť</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Stavový panel</translation>
 <translation id="1661867754829461514">Chýba kód PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: pripája sa...</translation>
+<translation id="40400351611212369">Chyba aktivácie siete</translation>
 <translation id="4237016987259239829">Chyba sieťového pripojenia</translation>
 <translation id="2946640296642327832">Povoliť rozhranie Bluetooth</translation>
 <translation id="6459472438155181876">Rozšírenie obrazovky na displej <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Zdieľanie ovládania obrazovky s používateľom <ph name="HELPER_NAME"/> prostredníctvom služby Hangouts.</translation>
 <translation id="7864539943188674973">Zakázať rozhranie Bluetooth</translation>
 <translation id="939252827960237676">Uloženie snímky obrazovky zlyhalo.</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Reštartovaním vykonáte aktualizáciu</translation>
 <translation id="2268813581635650749">Odhlásiť všetkých</translation>
 <translation id="735745346212279324">Sieť VPN je odpojená</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Prebieha prispôsobenie jazykov a vstupu...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Pozícia poličky</translation>
-<translation id="2903907270192926896">VSTUP</translation>
 <translation id="8676770494376880701">Pripojila sa nabíjačka s nízkym výkonom</translation>
 <translation id="7170041865419449892">Mimo rozsah</translation>
 <translation id="4804818685124855865">Odpojiť</translation>
@@ -77,18 +79,23 @@
         Prepnete ju stlačením klávesov Shift + Alt.</translation>
 <translation id="2562916301614567480">Súkromná sieť</translation>
 <translation id="6549021752953852991">K dispozícii nie je žiadna mobilná sieť</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Milý monitor, medzi nami to nefunguje. (Tento monitor sa nepodporuje)</translation>
 <translation id="6426039856985689743">Zakázať mobilné dátové pripojenie</translation>
 <translation id="3087734570205094154">Spodok</translation>
 <translation id="3742055079367172538">Vytvorila sa snímka obrazovky</translation>
 <translation id="8878886163241303700">Rozšírenie obrazovky</translation>
 <translation id="5271016907025319479">Sieť VPN nie je nakonfigurovaná.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Váš správca zakázal zaznamenávanie snímok obrazovky.</translation>
 <translation id="372094107052732682">Ak chcete skončiť, stlačte dvakrát kombináciu kláves Ctrl+Shift+Q.</translation>
 <translation id="6803622936009808957">Obraz na monitoroch sa nedá zrkadliť, pretože sa nenašli podporované rozlíšenia. Namiesto toho sa spustil režim rozšírenej pracovnej plochy.</translation>
 <translation id="1480041086352807611">Režim ukážky</translation>
 <translation id="3626637461649818317">Zostáva <ph name="PERCENTAGE"/> %</translation>
 <translation id="9089416786594320554">Metódy vstupu</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Aktivácia služby <ph name="NAME"/> vyžaduje sieťové pripojenie.</translation>
+<translation id="3963445509666917109">Reproduktor (vnútorný)</translation>
 <translation id="2825619548187458965">Polička</translation>
 <translation id="2614835198358683673">Chromebook sa nesmie dobíjať v čase, keď je zapnutý. Zvážte použitie oficiálnej nabíjačky.</translation>
 <translation id="1895658205118569222">Vypnúť</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Prebieha vyhľadávanie mobilných sietí...</translation>
 <translation id="583281660410589416">Neznámy</translation>
 <translation id="1383876407941801731">Vyhľadávanie</translation>
-<translation id="7468789844759750875">Ak chcete kúpiť ďalšie dáta, navštívte aktivačný portál <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Pripája sa k sieti <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Informácie o sieti</translation>
 <translation id="1621499497873603021">Čas zostávajúci do vybitia batérie: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Ukončiť reláciu hosťa</translation>
 <translation id="8308637677604853869">Predchádzajúca ponuka</translation>
 <translation id="4666297444214622512">Nepodarilo sa prihlásiť do iného účtu.</translation>
+<translation id="3625258641415618104">Snímky obrazovky sú zakázané</translation>
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1773212559869067373">Certifikát na overenie totožnosti bol zamietnutý miestne</translation>
 <translation id="8528322925433439945">Mobilné siete...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Zlyhanie aktivácie</translation>
 <translation id="5097002363526479830">K sieti „<ph name="NAME"/>“ sa nepodarilo pripojiť: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Pripojenie Wi-Fi je vypnuté.</translation>
+<translation id="2966449113954629791">Možno ste dosiahli povolený limit mobilných dát. Ďalšie údaje si môžete zakúpiť na aktivačnom portáli <ph name="NAME"/>.</translation>
 <translation id="8132793192354020517">Pripojené k stránke <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Nastavenie tapety...</translation>
 <translation id="8678698760965522072">Stav online</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Obnoviť</translation>
 <translation id="4274292172790327596">Nerozpoznaná chyba</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Slúchadlo</translation>
 <translation id="225680501294068881">Hľadajú sa zariadenia...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofón (vnútorný)</translation>
 <translation id="4448844063988177157">Prebieha vyhľadávanie sietí Wi-Fi...</translation>
 <translation id="8401662262483418323">Nepodarilo sa pripojiť k účtu <ph name="NAME"/>: <ph name="DETAILS"/>
 Správa zo servera: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Vyskytla sa chyba</translation>
 <translation id="7229570126336867161">Je potrebné pripojenie EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> je verejná relácia spravovaná stránkami <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Nepodarilo sa pripojiť k sieti: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Ukončiť reláciu</translation>
 <translation id="8454013096329229812">Pripojenie Wi-Fi je zapnuté.</translation>
 <translation id="4872237917498892622">Alt + Hľadať alebo Shift</translation>
 <translation id="9201131092683066720">Batéria je nabitá na <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Nastavenia...</translation>
+<translation id="3871838685472846647">Mobilná sieť sa aktivovala</translation>
 <translation id="1195412055398077112">presah obsahu</translation>
-<translation id="1717216362413677834">Režim doku</translation>
 <translation id="112308213915226829">Automatické skrývanie poličky</translation>
+<translation id="7573962313813535744">Režim v doku</translation>
 <translation id="8927026611342028580">Vyžaduje sa pripojenie</translation>
 <translation id="8300849813060516376">Zlyhanie služby OTASP</translation>
 <translation id="2792498699870441125">Alt + Hľadať</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Batéria je nabitá na <ph name="PERCENTAGE"/> % a nabíja sa.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Aktivuje sa...</translation>
 <translation id="4895488851634969361">Batéria je úplne nabitá.</translation>
-<translation id="1391854757121130358">Možno ste dosiahli limit povolených mobilných dát.</translation>
 <translation id="5947494881799873997">Vrátiť</translation>
 <translation id="7593891976182323525">Hľadať alebo Shift</translation>
 <translation id="7649070708921625228">Pomocník</translation>
+<translation id="747833637904845037">Počas pripojenia k externému displeju zostane váš Chromebook zapnutý, dokonca aj keď bude zavretý.</translation>
 <translation id="3050422059534974565">Kláves CAPS LOCK je zapnutý.
 Ak ho chcete zrušiť, stlačte klávesy Hľadať alebo Shift.</translation>
 <translation id="397105322502079400">Prebieha výpočet...</translation>
 <translation id="158849752021629804">Je potrebná domáca sieť</translation>
 <translation id="6857811139397017780">Aktivovať zariadenie <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Vyhľadanie servera DHCP zlyhalo</translation>
-<translation id="5812035014844949013">VÝSTUP</translation>
 <translation id="6692173217867674490">Zlá prístupová fráza</translation>
 <translation id="6165508094623778733">Viac informácií</translation>
 <translation id="9046895021617826162">Zlyhanie pripojenia</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Kapacita batérie je nízka (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Prijať</translation>
 <translation id="5102001756192215136">zostáva <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Výstup</translation>
 <translation id="520760366042891468">Zdieľanie ovládania obrazovky prostredníctvom služby Hangouts.</translation>
 <translation id="8000066093800657092">Žiadna sieť</translation>
 <translation id="4015692727874266537">Prihláste sa do iného účtu...</translation>
 <translation id="5941711191222866238">Minimalizovať</translation>
 <translation id="6911468394164995108">Pripojiť k ďalšej...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Gratulujeme! Dátová služba <ph name="NAME"/> sa aktivovala a je pripravená na použitie.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>h <ph name="MINUTE"/>min do nabitia</translation>
 <translation id="6359806961507272919">SMS z č. <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operátor</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index e9d5d1e..d84b483 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">S prijavo z več računi lahko uporabljate samo tri račune.</translation>
 <translation id="370649949373421643">Omogoči Wi-Fi</translation>
 <translation id="3626281679859535460">Svetlost</translation>
+<translation id="3621202678540785336">Vhod</translation>
 <translation id="595202126637698455">Sledenje učinkovitosti delovanja je omogočeno</translation>
 <translation id="8054466585765276473">Izračunavanje časa trajanja akumulatorja.</translation>
 <translation id="7982789257301363584">Omrežje</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Pladenj stanja</translation>
 <translation id="1661867754829461514">Manjka PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: vzpostavljanje povezave ...</translation>
+<translation id="40400351611212369">Napaka pri aktiviranju omrežja</translation>
 <translation id="4237016987259239829">Napaka omrežne povezave</translation>
 <translation id="2946640296642327832">Omogoči Bluetooth</translation>
 <translation id="6459472438155181876">Razširitev zaslon na <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Skupni nadzor zaslona z osebo <ph name="HELPER_NAME"/> prek klepetalnic Hangouts.</translation>
 <translation id="7864539943188674973">Onemogoči Bluetooth</translation>
 <translation id="939252827960237676">Posnetka zaslona ni bilo mogoče shraniti</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Znova zaženite za posodobitev</translation>
 <translation id="2268813581635650749">Odjava vseh</translation>
 <translation id="735745346212279324">Povezava z navideznim zasebnim omrežjem je prekinjena</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Prilagajanje jezikov in vnosa ...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Položaj police</translation>
-<translation id="2903907270192926896">VHOD</translation>
 <translation id="8676770494376880701">Priključen je nizkoenergijski polnilnik</translation>
 <translation id="7170041865419449892">Zunaj dosega</translation>
 <translation id="4804818685124855865">Prekini povezavo</translation>
@@ -77,18 +79,23 @@
 Pritisnite Shift + Alt, da ga preklopite.</translation>
 <translation id="2562916301614567480">Zasebno omrežje</translation>
 <translation id="6549021752953852991">Mobilno omrežje ni na voljo</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dragi monitor, med nama se ne bo obneslo. (Ta monitor ni podprt)</translation>
 <translation id="6426039856985689743">Onemogoči mobilno podatkovno povezavo</translation>
 <translation id="3087734570205094154">Na dno</translation>
 <translation id="3742055079367172538">Posnetek zaslona je narejen</translation>
 <translation id="8878886163241303700">Razširjanje zaslona</translation>
 <translation id="5271016907025319479">VPN ni konfiguriran.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Skrbnik je onemogočil možnost izdelave posnetkov zaslona.</translation>
 <translation id="372094107052732682">Dvakrat pritisnite Ctrl + Shift + Q, če želite končati.</translation>
 <translation id="6803622936009808957">Zaslonov ni bilo mogoče zrcaliti, ker ni bilo najdene nobene podprte ločljivosti. Uporabljeno je razširjeno namizje.</translation>
 <translation id="1480041086352807611">Predstavitveni način</translation>
 <translation id="3626637461649818317">Preostane še <ph name="PERCENTAGE"/> %</translation>
 <translation id="9089416786594320554">Načini vnosa</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Če želite aktivirati omrežje »<ph name="NAME"/>«, mora biti vzpostavljena omrežna povezava.</translation>
+<translation id="3963445509666917109">Zvočnik (vgrajeni)</translation>
 <translation id="2825619548187458965">Polica</translation>
 <translation id="2614835198358683673">Vaš Chromebook se ne more polniti, ko je vklopljen. Priporočamo uporabo uradnega polnilnika.</translation>
 <translation id="1895658205118569222">Zaprt</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Iskanje mobilnih omrežij ...</translation>
 <translation id="583281660410589416">Neznano</translation>
 <translation id="1383876407941801731">Iskanje</translation>
-<translation id="7468789844759750875">Če želite kupiti dodatne podatke, obiščite aktivacijski portal <ph name="NAME"/>.</translation>
 <translation id="3901991538546252627">Vzpostavljanje povezave z omrežjem <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Podatki o omrežju</translation>
 <translation id="1621499497873603021">Preostali čas do izpraznitve akumulatorja, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Zapusti sejo gosta</translation>
 <translation id="8308637677604853869">Prejšnji meni</translation>
 <translation id="4666297444214622512">V drug račun se ni mogoče prijaviti.</translation>
+<translation id="3625258641415618104">Posnetki zaslona so onemogočeni</translation>
 <translation id="1346748346194534595">V desno</translation>
 <translation id="1773212559869067373">Potrdilo za preverjanje pristnosti je bilo zavrnjeno lokalno</translation>
 <translation id="8528322925433439945">Mobilna ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Napaka pri aktiviranju</translation>
 <translation id="5097002363526479830">Povezava z omrežjem »<ph name="NAME"/>« ni uspela: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi je izklopljen.</translation>
+<translation id="2966449113954629791">Morda ste porabili dovoljeno količino prenosa podatkov v mobilnem omrežju. Večjo količino podatkov lahko kupite na portalu za aktiviranje <ph name="NAME"/>.</translation>
 <translation id="8132793192354020517">Povezava z <ph name="NAME"/> je vzpostavljena </translation>
 <translation id="7052914147756339792">Nastavi sliko za ozadje ...</translation>
 <translation id="8678698760965522072">Stanje s povezavo</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Obnovi</translation>
 <translation id="4274292172790327596">Neprepoznana napaka</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Slušalke</translation>
 <translation id="225680501294068881">Iskanje naprav ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (vgrajeni)</translation>
 <translation id="4448844063988177157">Iskanje omrežij Wi-Fi</translation>
 <translation id="8401662262483418323">Povezava s/z »<ph name="NAME"/>« ni bila mogoča: <ph name="DETAILS"/>
 Sporočilo strežnika: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Prišlo je do napake</translation>
 <translation id="7229570126336867161">Potreben je EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> je javna seja, ki jo upravlja <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Z omrežjem se ni bilo mogoče povezati: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Zapusti sejo</translation>
 <translation id="8454013096329229812">Wi-Fi je vklopljen.</translation>
 <translation id="4872237917498892622">Alt + iskanje ali Shift</translation>
 <translation id="9201131092683066720">Napolnjenost akumulatorja: <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Nastavitve ...</translation>
+<translation id="3871838685472846647">Mobilna aktivirana</translation>
 <translation id="1195412055398077112">upodabljanje čez rob zaslona</translation>
-<translation id="1717216362413677834">Zasidrani način</translation>
 <translation id="112308213915226829">Samodejno skrivanje police</translation>
+<translation id="7573962313813535744">Zasidran način</translation>
 <translation id="8927026611342028580">Povezava zahtevana</translation>
 <translation id="8300849813060516376">Storitev OTASP ni uspela</translation>
 <translation id="2792498699870441125">Alt + iskanje</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Napolnjenost akumulatorja: <ph name="PERCENTAGE"/> % – polnjenje še poteka.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Aktiviranje ...</translation>
 <translation id="4895488851634969361">Akumulator je poln.</translation>
-<translation id="1391854757121130358">Morda ste porabili dovoljeno količino mobilnih podatkov.</translation>
 <translation id="5947494881799873997">Razveljavi</translation>
 <translation id="7593891976182323525">Iskanje ali Shift</translation>
 <translation id="7649070708921625228">Pomoč</translation>
+<translation id="747833637904845037">Ko je Chromebook priključen na zunanji zaslon, bo ostal vklopljen, tudi ko je pokrov zaprt.</translation>
 <translation id="3050422059534974565">Tipka CAPS LOCK je vklopljena.
 Pritisnite tipko za iskanje ali Shift, da jo prekličete.</translation>
 <translation id="397105322502079400">Izračunavanje …</translation>
 <translation id="158849752021629804">Potrebno je domače omrežje</translation>
 <translation id="6857811139397017780">Aktiviraj <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Iskanje DHCP-ja ni uspelo</translation>
-<translation id="5812035014844949013">IZHOD</translation>
 <translation id="6692173217867674490">Napačno geslo</translation>
 <translation id="6165508094623778733">Več o tem</translation>
 <translation id="9046895021617826162">Vzpostavljanje povezave ni uspelo</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Akumulator je skoraj prazen (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Sprejmi</translation>
 <translation id="5102001756192215136">Še <ph name="HOUR"/>.<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Izhod</translation>
 <translation id="520760366042891468">Skupni nadzor zaslona prek klepetalnic Hangouts.</translation>
 <translation id="8000066093800657092">Ni omrežja</translation>
 <translation id="4015692727874266537">Prijava z drugim računom ...</translation>
 <translation id="5941711191222866238">Pomanjšaj</translation>
 <translation id="6911468394164995108">Pridružite se drugemu ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Čestitamo. Podatkovna storitev omrežja »<ph name="NAME"/>« je aktivirana in lahko jo začnete uporabljati.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h <ph name="MINUTE"/> min do napolnjenosti</translation>
 <translation id="6359806961507272919">SMS od <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operater</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index df00c69..1d387a7 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Можете да имате највише три налога за вишеструко пријављивање.</translation>
 <translation id="370649949373421643">Омогући Wi-Fi</translation>
 <translation id="3626281679859535460">Осветљеност</translation>
+<translation id="3621202678540785336">Улаз</translation>
 <translation id="595202126637698455">Праћење учинка је омогућено</translation>
 <translation id="8054466585765276473">Израчунавање времена трајања батерије.</translation>
 <translation id="7982789257301363584">Мрежа</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Палета статуса</translation>
 <translation id="1661867754829461514">Недостаје PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Повезивање...</translation>
+<translation id="40400351611212369">Грешка при активацији мреже</translation>
 <translation id="4237016987259239829">Грешка мрежне везе</translation>
 <translation id="2946640296642327832">Омогући Bluetooth</translation>
 <translation id="6459472438155181876">Проширивање екрана у <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Контрола над екраном се дели са корисником <ph name="HELPER_NAME"/> преко Hangouts-а.</translation>
 <translation id="7864539943188674973">Онемогући Bluetooth</translation>
 <translation id="939252827960237676">Чување снимка екрана није успело</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Покрените поново да бисте ажурирали</translation>
 <translation id="2268813581635650749">Одјави све</translation>
 <translation id="735745346212279324">Веза са VPN-ом је прекинута</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Прилагоди језике и унос...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Положај полице</translation>
-<translation id="2903907270192926896">УЛАЗ</translation>
 <translation id="8676770494376880701">Повезан је пуњач мале снаге</translation>
 <translation id="7170041865419449892">Изван опсега</translation>
 <translation id="4804818685124855865">Прекини везу</translation>
@@ -77,18 +79,23 @@
 Притисните Shift + Alt да бисте пребацили.</translation>
 <translation id="2562916301614567480">Приватна мрежа</translation>
 <translation id="6549021752953852991">Није доступна ниједна мобилна мрежа</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Драги мониторе, не иде нам. (Тај монитор није подржан)</translation>
 <translation id="6426039856985689743">Онемогући податке за мобилне уређаје</translation>
 <translation id="3087734570205094154">Дно</translation>
 <translation id="3742055079367172538">Снимак екрана је направљен</translation>
 <translation id="8878886163241303700">Проширени екран</translation>
 <translation id="5271016907025319479">VPN није конфигурисан.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Администратор је онемогућио опцију прављења снимака екрана.</translation>
 <translation id="372094107052732682">Притисните Ctrl+Shift+Q двапут да бисте изашли.</translation>
 <translation id="6803622936009808957">Није могуће пресликати екране зато што није пронађена ниједна подржана резолуција. Уместо тога, приказује се проширена радна површина.</translation>
 <translation id="1480041086352807611">Режим демонстрације</translation>
 <translation id="3626637461649818317">Преостало је <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Методи уноса</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Активација мреже „<ph name="NAME"/>“ захтева мрежну везу.</translation>
+<translation id="3963445509666917109">Звучник (интерни)</translation>
 <translation id="2825619548187458965">Полица</translation>
 <translation id="2614835198358683673">Chromebook се можда неће пунити док је укључен. Размислите о коришћењу оригиналног пуњача.</translation>
 <translation id="1895658205118569222">Затварање</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Претраживање мобилних мрежа...</translation>
 <translation id="583281660410589416">Непознато</translation>
 <translation id="1383876407941801731">Претрага</translation>
-<translation id="7468789844759750875">Посетите активациони портал <ph name="NAME"/> да бисте купили још података.</translation>
 <translation id="3901991538546252627">Повезивање са мрежом <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Информације о мрежи</translation>
 <translation id="1621499497873603021">Време које је преостало док се батерија не испразни, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Изађи из сесије госта</translation>
 <translation id="8308637677604853869">Претходни мени</translation>
 <translation id="4666297444214622512">Не можете да се пријавите на други налог.</translation>
+<translation id="3625258641415618104">Снимци екрана су онемогућени</translation>
 <translation id="1346748346194534595">Удесно</translation>
 <translation id="1773212559869067373">Сертификат за потврду аутентичности је одбијен локално</translation>
 <translation id="8528322925433439945">Мобилни ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Активација није успела</translation>
 <translation id="5097002363526479830">Повезивање са мрежом „<ph name="NAME"/>“ није успело: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi је искључен.</translation>
+<translation id="2966449113954629791">Можда сте искористили дозвољену количину података за мобилне уређаје. Посетите портал за активацију за <ph name="NAME"/> да бисте купили још података.</translation>
 <translation id="8132793192354020517">Успостављена је веза са <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Подеси позадину...</translation>
 <translation id="8678698760965522072">Стање На мрежи</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Поново отвори</translation>
 <translation id="4274292172790327596">Непозната грешка</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Слушалице</translation>
 <translation id="225680501294068881">Скенирање уређаја...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/> <ph name="DATE"/></translation>
+<translation id="737451040872859086">Микрофон (интерни)</translation>
 <translation id="4448844063988177157">Тражење Wi-Fi мрежа...</translation>
 <translation id="8401662262483418323">Повезивање са „<ph name="NAME"/>“ није успело: <ph name="DETAILS"/>
 Порука сервера: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Дошло је до грешке</translation>
 <translation id="7229570126336867161">Потребан је EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> је јавна сесија којом управља <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Повезивање са мрежом није успело: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Изађи из сесије</translation>
 <translation id="8454013096329229812">Wi-Fi је укључен.</translation>
 <translation id="4872237917498892622">Alt + тастер за претрагу или Shift</translation>
 <translation id="9201131092683066720">Батерија је <ph name="PERCENTAGE"/>% пуна.</translation>
 <translation id="2983818520079887040">Подешавања...</translation>
+<translation id="3871838685472846647">Мобилни уређај је активиран</translation>
 <translation id="1195412055398077112">ивично подручје екрана</translation>
-<translation id="1717216362413677834">Режим базне станице</translation>
 <translation id="112308213915226829">Аутоматски сакриј полицу</translation>
+<translation id="7573962313813535744">Режим са базном станицом</translation>
 <translation id="8927026611342028580">Захтева се повезивање</translation>
 <translation id="8300849813060516376">OTASP није успео</translation>
 <translation id="2792498699870441125">Alt + тастер за претрагу</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Батерија је <ph name="PERCENTAGE"/>% пуна и још увек се пуни.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Активирање...</translation>
 <translation id="4895488851634969361">Батерија је пуна.</translation>
-<translation id="1391854757121130358">Можда сте искористили додељени пакет података за мобилне уређаје.</translation>
 <translation id="5947494881799873997">Врати</translation>
 <translation id="7593891976182323525">Тастер за претрагу или Shift</translation>
 <translation id="7649070708921625228">Помоћ</translation>
+<translation id="747833637904845037">Chromebook ће остати укључен док је повезан са спољним екраном, чак и када је поклопац затворен.</translation>
 <translation id="3050422059534974565">CAPS LOCK је укључен.
 Притисните тастер за претрагу или Shift да бисте га отказали.</translation>
 <translation id="397105322502079400">Израчунавање...</translation>
 <translation id="158849752021629804">Потребна је матична мрежа</translation>
 <translation id="6857811139397017780">Активирај <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Проналажење DHCP-а није успело</translation>
-<translation id="5812035014844949013">ИЗЛАЗ</translation>
 <translation id="6692173217867674490">Неисправна приступна фраза</translation>
 <translation id="6165508094623778733">Сазнајте више</translation>
 <translation id="9046895021617826162">Повезивање није успело</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Батерија је скоро празна (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Прихвати</translation>
 <translation id="5102001756192215136">Преостало је <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Излаз</translation>
 <translation id="520760366042891468">Контрола над екраном се дели преко Hangouts-а.</translation>
 <translation id="8000066093800657092">Нема мреже</translation>
 <translation id="4015692727874266537">Пријави ме на други налог...</translation>
 <translation id="5941711191222866238">Смањи</translation>
 <translation id="6911468394164995108">Придружи ме другој...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Честитамо! Услуга преноса података „<ph name="NAME"/>“ је активирана и спремна за коришћење.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> с <ph name="MINUTE"/> м до краја пуњења</translation>
 <translation id="6359806961507272919">SMS са броја <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Мобилни оператер</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index b07c6b9..36537b6 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Du kan högst använda tre konton för multiinloggning.</translation>
 <translation id="370649949373421643">Aktivera Wi-Fi</translation>
 <translation id="3626281679859535460">Ljusstyrka</translation>
+<translation id="3621202678540785336">Ingång</translation>
 <translation id="595202126637698455">Resultatspårning aktiverat</translation>
 <translation id="8054466585765276473">Batteritiden beräknas.</translation>
 <translation id="7982789257301363584">Nätverk</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Statusfält</translation>
 <translation id="1661867754829461514">PIN saknas</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: ansluter ...</translation>
+<translation id="40400351611212369">Fel vid nätverksaktivering</translation>
 <translation id="4237016987259239829">Fel vid nätverksanslutning</translation>
 <translation id="2946640296642327832">Aktivera Bluetooth</translation>
 <translation id="6459472438155181876">Utöka skärmen till <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Delar kontrollen över din skärm med <ph name="HELPER_NAME"/> via Hangouts.</translation>
 <translation id="7864539943188674973">Inaktivera Bluetooth</translation>
 <translation id="939252827960237676">Det gick inte att spara skärmdumpen</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Starta om för att uppdatera</translation>
 <translation id="2268813581635650749">Logga ut alla</translation>
 <translation id="735745346212279324">VPN frånkopplat</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Anpassa språk och inmatning...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Hyllposition</translation>
-<translation id="2903907270192926896">INDATA</translation>
 <translation id="8676770494376880701">Laddare med låg effekt ansluten</translation>
 <translation id="7170041865419449892">Utanför intervallet</translation>
 <translation id="4804818685124855865">Koppla från</translation>
@@ -77,18 +79,23 @@
         Tryck på Skift + Alt om du vill byta.</translation>
 <translation id="2562916301614567480">Privat nätverk</translation>
 <translation id="6549021752953852991">Det finns inget tillgängligt mobilt nätverk</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Det fungerar inte med den här skärmen. (Skärmen stöds inte.)</translation>
 <translation id="6426039856985689743">Inaktivera mobildata</translation>
 <translation id="3087734570205094154">Nederst</translation>
 <translation id="3742055079367172538">Skärmbilden har tagits</translation>
 <translation id="8878886163241303700">Utökad skärm</translation>
 <translation id="5271016907025319479">VPN är inte konfigurerat.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Möjligheten att ta skärmdumpar har inaktiverats av administratören.</translation>
 <translation id="372094107052732682">Avsluta genom att trycka på Ctrl + Skift + Q två gånger.</translation>
 <translation id="6803622936009808957">Det gick inte att spegla visningar eftersom inga upplösningar som stöds hittades. Utökat skrivbordsläge används i stället.</translation>
 <translation id="1480041086352807611">Demoläge</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/> % återstår</translation>
 <translation id="9089416786594320554">Inmatningsmetoder</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/> %</translation>
+<translation id="2670531586141364277">Aktivering av <ph name="NAME"/> kräver en nätverksanslutning.</translation>
+<translation id="3963445509666917109">Högtalare (inbyggd)</translation>
 <translation id="2825619548187458965">Hylla</translation>
 <translation id="2614835198358683673">Din Chromebook kanske inte laddas medan den är på. Överväg att använda den officiella laddaren.</translation>
 <translation id="1895658205118569222">Stängning</translation>
@@ -98,19 +105,19 @@
 <translation id="7874779702599364982">Söker efter mobilnätverk ...</translation>
 <translation id="583281660410589416">Okänt</translation>
 <translation id="1383876407941801731">Sökning</translation>
-<translation id="7468789844759750875">Besök aktiveringsportalen för <ph name="NAME"/> om du vill köpa mer data.</translation>
 <translation id="3901991538546252627">Ansluter till <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Nätverksinformation</translation>
 <translation id="1621499497873603021">Tid som återstår tills batteriet är tomt: <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Avsluta gästsession</translation>
 <translation id="8308637677604853869">Föregående meny</translation>
 <translation id="4666297444214622512">Det går inte att logga in på ett annat konto.</translation>
+<translation id="3625258641415618104">Skärmdumpar har inaktiverats</translation>
 <translation id="1346748346194534595">Höger</translation>
 <translation id="1773212559869067373">Autentiseringscertifikatet godkändes inte lokalt</translation>
 <translation id="8528322925433439945">Mobil ...</translation>
 <translation id="7049357003967926684">Association</translation>
 <translation id="8428213095426709021">Inställningar</translation>
-<translation id="2372145515558759244">Synkronisera appar ...</translation>
+<translation id="2372145515558759244">Synkroniserar appar ...</translation>
 <translation id="7256405249507348194">Okänt fel: <ph name="DESC"/></translation>
 <translation id="7925247922861151263">Kontroll med AAA misslyckades</translation>
 <translation id="8456362689280298700"><ph name="HOUR"/>:<ph name="MINUTE"/> till fulladdat batteri</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Aktiveringsfel</translation>
 <translation id="5097002363526479830">Det gick inte att ansluta till nätverket <ph name="NAME"/>: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi är inaktiverat.</translation>
+<translation id="2966449113954629791">Du kan ha använt din tillåtna mängd mobildata. Besök aktiveringsportalen <ph name="NAME"/> om du vill köpa mer data.</translation>
 <translation id="8132793192354020517">Ansluten till <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Ange bakgrund ...</translation>
 <translation id="8678698760965522072">Onlineläge</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Återställ</translation>
 <translation id="4274292172790327596">Okänt fel</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Hörlurar</translation>
 <translation id="225680501294068881">Söker efter enheter ...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (inbyggd)</translation>
 <translation id="4448844063988177157">Söker efter Wi-Fi-nätverk...</translation>
 <translation id="8401662262483418323">Det gick inte att ansluta till <ph name="NAME"/>: <ph name="DETAILS"/>
 Meddelande från servern: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Det uppstod ett fel</translation>
 <translation id="7229570126336867161">Behöver EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> är en offentlig session som hanteras av <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Det gick inte att ansluta till nätverket: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Avsluta session</translation>
 <translation id="8454013096329229812">Wi-Fi är aktiverat.</translation>
 <translation id="4872237917498892622">Alt + Sök eller Skift</translation>
 <translation id="9201131092683066720">Batteriet är fullt till <ph name="PERCENTAGE"/> %.</translation>
 <translation id="2983818520079887040">Inställningar...</translation>
+<translation id="3871838685472846647">Mobil aktiverad</translation>
 <translation id="1195412055398077112">överskanning</translation>
-<translation id="1717216362413677834">Dockningsläge</translation>
-<translation id="112308213915226829">Dölj hylla automatiskt</translation>
+<translation id="112308213915226829">Dölj hyllan automatiskt</translation>
+<translation id="7573962313813535744">Dockat läge</translation>
 <translation id="8927026611342028580">Anslutning begärd</translation>
 <translation id="8300849813060516376">Det gick inte att etablera tjänsten over-the-air.</translation>
 <translation id="2792498699870441125">Alt + Sök</translation>
@@ -176,16 +188,15 @@
 <translation id="6785414152754474415">Batteriet är fullt till <ph name="PERCENTAGE"/> % och laddas.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Aktiverar ...</translation>
 <translation id="4895488851634969361">Batteriet är fullt.</translation>
-<translation id="1391854757121130358">Du kanske har slut på mobildata.</translation>
 <translation id="5947494881799873997">Återgå</translation>
 <translation id="7593891976182323525">Sök eller Skift</translation>
 <translation id="7649070708921625228">Hjälp</translation>
+<translation id="747833637904845037">Chromebook fortsätter att vara ansluten till en extern skärm även om locket är stängt.</translation>
 <translation id="3050422059534974565">CAPS LOCK är på. Avbryt genom att trycka på Sök eller Shift.</translation>
 <translation id="397105322502079400">Beräknar ...</translation>
 <translation id="158849752021629804">Behöver hemnätverk</translation>
 <translation id="6857811139397017780">Aktivera <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP-förfrågan misslyckades</translation>
-<translation id="5812035014844949013">UTDATA</translation>
 <translation id="6692173217867674490">Ogiltig lösenfras</translation>
 <translation id="6165508094623778733">Läs mer</translation>
 <translation id="9046895021617826162">Kunde inte ansluta</translation>
@@ -200,12 +211,14 @@
 <translation id="8940956008527784070">Låg batterinivå (<ph name="PERCENTAGE"/> %)</translation>
 <translation id="4918086044614829423">Acceptera</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> kvar</translation>
+<translation id="3009178788565917040">Utgång</translation>
 <translation id="520760366042891468">Delar kontrollen över din skärm via Hangouts.</translation>
 <translation id="8000066093800657092">Inget nätverk</translation>
 <translation id="4015692727874266537">Logga in på ett annat konto …</translation>
 <translation id="5941711191222866238">Minimera</translation>
 <translation id="6911468394164995108">Anslut till andra ...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Grattis! Datatjänsten <ph name="NAME"/> har aktiverats och är klar att använda.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> h <ph name="MINUTE"/> m till fulladdat</translation>
 <translation id="6359806961507272919">SMS från <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Operatör</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index ab296ff..998cef7 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Unaweza tu kuwa na hadi akaunti tatu zilizoingiwa kwa wakati mmoja</translation>
 <translation id="370649949373421643">Wezesha Wi-Fi</translation>
 <translation id="3626281679859535460">Ung'aavu</translation>
+<translation id="3621202678540785336">Ingizo</translation>
 <translation id="595202126637698455">Ufuatiliaji wa utendaji umewashwa</translation>
 <translation id="8054466585765276473">Inakokotoa muda wa betri.</translation>
 <translation id="7982789257301363584">Mtandao</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Treya ya hali</translation>
 <translation id="1661867754829461514">PIN inakosekana</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Inaunganisha...</translation>
+<translation id="40400351611212369">Hitilafu ya Kuanza Kutumia Mtandao</translation>
 <translation id="4237016987259239829">Hitilafu ya Muunganisho wa Mtandao</translation>
 <translation id="2946640296642327832">Wezesha Bluetooth</translation>
 <translation id="6459472438155181876">Inapanua skrini kwenye <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Inashiriki udhibiti wa skrini yako na <ph name="HELPER_NAME"/> kupitia Hangouts.</translation>
 <translation id="7864539943188674973">Lemaza Bluetooth</translation>
 <translation id="939252827960237676">Imeshindwa kuhifadhi picha ya skrini</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Anzisha upya ili kusasisha</translation>
 <translation id="2268813581635650749">Ondoa wote</translation>
 <translation id="735745346212279324">VPN imekatwa muunganisho</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Geuza lugha na uingizaji kukufaa...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Nafasi ya rafu</translation>
-<translation id="2903907270192926896">INGIZO</translation>
 <translation id="8676770494376880701">Chaja ya nguvu ya chini imeunganishwa</translation>
 <translation id="7170041865419449892">Nje ya eneo</translation>
 <translation id="4804818685124855865">Tenganisha</translation>
@@ -77,18 +79,23 @@
 Bonyeza Shift + Alt ili kubadili.</translation>
 <translation id="2562916301614567480">Mtandao Binafsi</translation>
 <translation id="6549021752953852991">Hakuna mtandao wa simu za mkononi unaopatikana</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Mpendwa Kionyeshi, hali sio nzuri kati yetu. (Kionyeshi hiki hakiwezi kutumiwa)</translation>
 <translation id="6426039856985689743">Lemaza data ya simu</translation>
 <translation id="3087734570205094154">Chini</translation>
 <translation id="3742055079367172538">Picha ya skrini imepigwa</translation>
 <translation id="8878886163241303700">Kuongeza skrini</translation>
 <translation id="5271016907025319479">VPN haijasanidiwa.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Uwezo wa kupiga picha za skrini umezimwa na msimamizi wako.</translation>
 <translation id="372094107052732682">Bofya Ctrl + Shift + Q mara mbili ili kuacha.</translation>
 <translation id="6803622936009808957">Haikuweza kuakisi maonyesho kwa kuwa hakuna misongo inayoweza kutumiwa iliyopatikana. Badala yake imeingia eneo-kazi lililopanuliwa.</translation>
 <translation id="1480041086352807611">Modi ya kuonyesha</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% inayobaki</translation>
 <translation id="9089416786594320554">Mbinu Ingizo</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Kuanza kutumia '<ph name="NAME"/>' kunahitaji muunganisho kwa mtandao.</translation>
+<translation id="3963445509666917109">Spika (Ya ndani)</translation>
 <translation id="2825619548187458965">Rafu</translation>
 <translation id="2614835198358683673">Chromebook yako huenda isichaji ikiwa imewashwa. Fikiria kutumia chaja rasmi.</translation>
 <translation id="1895658205118569222">Funga</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Inatafuta mitandao ya simu za mkononi...</translation>
 <translation id="583281660410589416">Siojulikana</translation>
 <translation id="1383876407941801731">Tafuta</translation>
-<translation id="7468789844759750875">Tembelea tovuti kuu ya kuwezesha ya <ph name="NAME"/> ili ununue data zaidi.</translation>
 <translation id="3901991538546252627">Inaunganisha kwenye <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Maelezo ya Mtandao</translation>
 <translation id="1621499497873603021">Muda unaosalia mpaka betri inapoisha, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Maliza Ugeni</translation>
 <translation id="8308637677604853869">Menyu ya awali</translation>
 <translation id="4666297444214622512">Huwezi kuingia katika akaunti nyingine.</translation>
+<translation id="3625258641415618104">Picha za skrini zimezimwa</translation>
 <translation id="1346748346194534595">Kulia</translation>
 <translation id="1773212559869067373">Cheti cha uthibitishaji kimekataliwa kindani</translation>
 <translation id="8528322925433439945">Simu ya mkononi ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Kushindwa kwa uamilishaji</translation>
 <translation id="5097002363526479830">Imeshindwa kuunganisha kwenye mtandao '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi imezimwa.</translation>
+<translation id="2966449113954629791">Huenda ulitumia kiwango chako chote cha data. Tembelea <ph name="NAME"/> kituo cha uwezeshaji ili ununue data zaidi.</translation>
 <translation id="8132793192354020517">Imeunganishwa kwenye <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Weka Mandhari...</translation>
 <translation id="8678698760965522072">Hali ya mtandaoni</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Rejesha</translation>
 <translation id="4274292172790327596">Hitilafu Isiyotambulika</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Vipokea sauti</translation>
 <translation id="225680501294068881">Inatambazaa vifaa...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Maikrofoni (Ya Ndani)</translation>
 <translation id="4448844063988177157">Inatafuta mitandao ya Wi-Fi…</translation>
 <translation id="8401662262483418323">Ilishindwa kuunganisha kwenye ' <ph name="NAME"/> ': <ph name="DETAILS"/> 
 Ujumbe wa seza: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Hitilafu imetokea</translation>
 <translation id="7229570126336867161">Inahitaji EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> ni kipindi cha kila mtu kinachodhibitiwa na <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Imeshindwa kuunganisha kwenye mtandao: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Toka kwenye kipindi</translation>
 <translation id="8454013096329229812">Wi-Fi imewashwa.</translation>
 <translation id="4872237917498892622">Alt + Utafutaji au Hama</translation>
 <translation id="9201131092683066720">Betri imejaa <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Mipangilio...</translation>
+<translation id="3871838685472846647">Simu ya Mkononi Imewashwa</translation>
 <translation id="1195412055398077112">angalia kwa ujumla:</translation>
-<translation id="1717216362413677834">Hali ya kufungwa</translation>
 <translation id="112308213915226829">Ficha rafu kiotomatiki</translation>
+<translation id="7573962313813535744">Hali ya kituo</translation>
 <translation id="8927026611342028580">Muunganisho Umeombwa</translation>
 <translation id="8300849813060516376">OTASP imeshindikana</translation>
 <translation id="2792498699870441125">Alt + Utafutaji</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Betri imejaa <ph name="PERCENTAGE"/>% na inachaji.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Inaanza kutumia...</translation>
 <translation id="4895488851634969361">Betri imejaa.</translation>
-<translation id="1391854757121130358">Inawezekana umemaliza mgawo wako wa data ya simu ya mkononi.</translation>
 <translation id="5947494881799873997">Rejesha</translation>
 <translation id="7593891976182323525">Utafutaji au Hama</translation>
 <translation id="7649070708921625228">Usaidizi</translation>
+<translation id="747833637904845037">Chromebook yako itaendelea kukaa huku imeunganishwa kwenye onyesho la nje, hata kama kifuniko kimefungwa.</translation>
 <translation id="3050422059534974565">CAPS LOCK imeamilishwa. 
 Bonyeza Alt + Utafutaji au Hama ili kughairi.</translation>
 <translation id="397105322502079400">Inakokotoa...</translation>
 <translation id="158849752021629804">Inahitaji mtandao wa nyumbani</translation>
 <translation id="6857811139397017780">Amilisha <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Mwonekano wa DHCP umeshindikana</translation>
-<translation id="5812035014844949013">TOWE</translation>
 <translation id="6692173217867674490">Kaulisiri mbovu</translation>
 <translation id="6165508094623778733">Pata maelezo zaidi</translation>
 <translation id="9046895021617826162">Muunganisho umeshindikana</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Betri inaisha (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Kubali</translation>
 <translation id="5102001756192215136">Imesalia <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Towe</translation>
 <translation id="520760366042891468">Kushiriki udhibiti wa skrini yako kupitia Hangouts.</translation>
 <translation id="8000066093800657092">Hakuna mtandao</translation>
 <translation id="4015692727874266537">Ingia katika akaunti nyingine...</translation>
 <translation id="5941711191222866238">Punguza</translation>
 <translation id="6911468394164995108">Jiunge na mwingine...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Hongera! Huduma yako ya data ya '<ph name="NAME"/>' imeanza kutumika na iko tayari kwa matumizi.</translation>
 <translation id="412065659894267608">Saa<ph name="HOUR"/> dakika<ph name="MINUTE"/> ili ijae</translation>
 <translation id="6359806961507272919">SMS kutoka <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Mtoa huduma</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index 097fe33..99e1544 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">பல உள்நுழைவில் மூன்று கணக்குகள் வரை மட்டுமே வைத்திருக்கலாம்.</translation>
 <translation id="370649949373421643">Wi-fi ஐ இயக்கு</translation>
 <translation id="3626281679859535460">ஒளிர்வு</translation>
+<translation id="3621202678540785336">உள்ளீடு</translation>
 <translation id="595202126637698455">செயல்திறனைத் தடமறிதல் இயக்கப்பட்டுள்ளது</translation>
 <translation id="8054466585765276473">பேட்டரி நேரத்தைக் கணக்கிடுகிறது.</translation>
 <translation id="7982789257301363584">நெட்வொர்க்</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">நிலைத் தட்டு</translation>
 <translation id="1661867754829461514">PIN இல்லை</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: இணைக்கிறது...</translation>
+<translation id="40400351611212369">பிணைய செயலாக்கத்தின் பிழை</translation>
 <translation id="4237016987259239829">பிணைய இணைப்புப் பிழை</translation>
 <translation id="2946640296642327832">Bluetooth ஐ இயக்கு</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/> க்கு திரை விரிவாக்கப்படுகிறது</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Hangouts வழியாக <ph name="HELPER_NAME"/> உடன் உங்கள் திரையின் கட்டுப்பாட்டைப் பகிர்கிறது.</translation>
 <translation id="7864539943188674973">Bluetooth ஐ முடக்கு</translation>
 <translation id="939252827960237676">ஸ்கிரீன் ஷாட்டை சேமிப்பதில் தோல்வி</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">புதுப்பிக்க மீண்டும் தொடங்குக</translation>
 <translation id="2268813581635650749">அனைவரையும் வெளியேற்று</translation>
 <translation id="735745346212279324">VPN துண்டிக்கப்பட்டது</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">மொழிகள் மற்றும்  உள்ளீடைத் தனிப்பயனாக்கு...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">அடுக்கின் நிலை</translation>
-<translation id="2903907270192926896">உள்ளீடு</translation>
 <translation id="8676770494376880701">குறைந்த சக்தியிலான சார்ஜர் இணைக்கப்பட்டுள்ளது</translation>
 <translation id="7170041865419449892">வரம்புக்கு வெளியே</translation>
 <translation id="4804818685124855865">தொடர்பைத் துண்டி</translation>
@@ -77,18 +79,23 @@
 மாற்ற Shift + Alt ஐ அழுத்தவும்.</translation>
 <translation id="2562916301614567480">தனிப்பட்ட நெட்வொர்க்</translation>
 <translation id="6549021752953852991">செல்லுலார் நெட்வொர்க் இல்லை</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">அந்த மானிட்டர் ஆதரிக்கப்படவில்லை.</translation>
 <translation id="6426039856985689743">மொபைல் தரவை முடக்கு</translation>
 <translation id="3087734570205094154">கீழே</translation>
 <translation id="3742055079367172538">ஸ்கிரீன் ஷாட் எடுக்கப்பட்டது</translation>
 <translation id="8878886163241303700">திரையை விரிவாக்குகிறது</translation>
 <translation id="5271016907025319479">VPN உள்ளமைக்கப்படவில்லை.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">ஸ்கிரீன் ஷாட்டுகள் எடுக்கும் திறனை உங்கள் நிர்வாகி முடக்கியுள்ளார்.</translation>
 <translation id="372094107052732682">வெளியேற Ctrl+Shift+Q ஐ இருமுறை அழுத்தவும்.</translation>
 <translation id="6803622936009808957">ஆதரிக்கும் தெளிவுகள் கிடைக்காததால் காட்சிகளைப் பிரதிபலிக்க முடியவில்லை. பதிலாக நீட்டிக்கப்பட்ட டெஸ்க்டாப்பிற்குச் சென்றது.</translation>
 <translation id="1480041086352807611">டெமோ பயன்முறை</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% மீதமுள்ளது</translation>
 <translation id="9089416786594320554">உள்ளீட்டு முறைகள்</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' ஐச் செயல்படுத்துவதற்கு பிணைய இணைப்பு அவசியம்.</translation>
+<translation id="3963445509666917109">ஸ்பீக்கர் (உட்புறம்)</translation>
 <translation id="2825619548187458965">அடுக்கு</translation>
 <translation id="2614835198358683673">உங்கள் Chromebook இயக்கத்தில் இருக்கும்போது சார்ஜ் செய்ய முடியாது. அதிகாரப்பூர்வ சார்ஜரைப் பயன்படுத்தவும்.</translation>
 <translation id="1895658205118569222">நிறுத்தம்</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">செல்லுலார் நெட்வொர்க்குகளைத் தேடுகிறது...</translation>
 <translation id="583281660410589416">அறியப்படாத</translation>
 <translation id="1383876407941801731">தேடு</translation>
-<translation id="7468789844759750875">கூடுதல் தரவை வாங்குவதற்கு <ph name="NAME"/> செயல்படுத்தல் போர்ட்டலைப் பார்வையிடவும்.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> க்கு இணைக்கிறது</translation>
 <translation id="2204305834655267233">பிணைய தகவல்</translation>
 <translation id="1621499497873603021">இன்னும் <ph name="TIME_LEFT"/> இல் பேட்டரி காலியாகிவிடும்</translation>
 <translation id="5980301590375426705">விருந்தினரிலிருந்து வெளியேறவும்</translation>
 <translation id="8308637677604853869">முந்தைய மெனு</translation>
 <translation id="4666297444214622512">இன்னொரு கணக்கில் உள்நுழைய முடியாது.</translation>
+<translation id="3625258641415618104">ஸ்கிரீன்ஷாட்கள் முடக்கப்பட்டன</translation>
 <translation id="1346748346194534595">வலது</translation>
 <translation id="1773212559869067373">அங்கீகரிப்புச் சான்றிதழ் உள்ளிடையாக நிராகரிக்கப்பட்டது</translation>
 <translation id="8528322925433439945">மொபைல் ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">செயலாக்கம் தோல்வி</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>' நெட்வொர்க்குடன் இணைப்பதில் தோல்வி: <ph name="DETAILS"/> </translation>
 <translation id="1850504506766569011">Wi-Fi முடக்கத்தில் உள்ளது.</translation>
+<translation id="2966449113954629791">உங்கள் மொபைல் தரவுப் படியை, நீங்கள் பயன்படுத்தியிருக்கலாம். கூடுதல் தரவை வாங்க, <ph name="NAME"/> செயல்பாடு போர்ட்டலைப் பார்வையிடவும்.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/> உடன் இணைக்கப்பட்டது</translation>
 <translation id="7052914147756339792">வால்பேப்பரை அமை...</translation>
 <translation id="8678698760965522072">ஆன்லைன் நிலை</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">மீட்டமை</translation>
 <translation id="4274292172790327596">அறியப்படாத பிழை</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ஹெட்ஃபோன்</translation>
 <translation id="225680501294068881">சாதனங்களைக் கண்டறிகிறது...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">மைக்ரோஃபோன் (உட்புறம்)</translation>
 <translation id="4448844063988177157">Wi-Fi பிணையங்களைத் தேடுகிறது...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>' உடன் இணைக்கத் தவறியது: <ph name="DETAILS"/>
 சேவையகச் செய்தி: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">ஒரு பிழை ஏற்பட்டது</translation>
 <translation id="7229570126336867161">EVDO தேவை</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> ஆனது <ph name="DOMAIN"/> ஆல் நிர்வகிக்கப்படும் பொது அமர்வாகும்</translation>
+<translation id="9044646465488564462">பிணையத்துடன் இணைப்பதில் தோல்வி: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">அமர்விலிருந்து வெளியேறவும்</translation>
 <translation id="8454013096329229812">Wi-Fi இயக்கத்தில் உள்ளது.</translation>
 <translation id="4872237917498892622">Alt+Search அல்லது Shift</translation>
 <translation id="9201131092683066720">பேட்டரி <ph name="PERCENTAGE"/>% நிரம்பியது.</translation>
 <translation id="2983818520079887040">அமைப்புகள்...</translation>
+<translation id="3871838685472846647">செல்லுலர் செயல்படுத்தப்பட்டது</translation>
 <translation id="1195412055398077112">ஓவர்ஸ்கேன்</translation>
-<translation id="1717216362413677834">டாக் பயன்முறை</translation>
 <translation id="112308213915226829">அடுக்கைத் தானாக மறை</translation>
+<translation id="7573962313813535744">டாக் செய்யப்பட்ட பயன்முறை</translation>
 <translation id="8927026611342028580">இணைக்க கோரப்பட்டது</translation>
 <translation id="8300849813060516376">OTASP தோல்வியுற்றது</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">பேட்டரி <ph name="PERCENTAGE"/>% நிரம்பியது, மேலும் சார்ஜ் ஆகிறது.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: செயல்படுத்துகிறது...</translation>
 <translation id="4895488851634969361">பேட்டரி நிரம்பியது.</translation>
-<translation id="1391854757121130358">உங்களின் அனுமதிக்கப்பட்ட மொபைல் தரவை நீங்கள் பயன்படுத்தி இருக்கலாம்.</translation>
 <translation id="5947494881799873997">மாற்றியமை</translation>
 <translation id="7593891976182323525">Search அல்லது Shift</translation>
 <translation id="7649070708921625228">உதவி</translation>
+<translation id="747833637904845037">உங்கள் Chromebook வெளிப்புறக் காட்சியுடன் இணைக்கப்படும்போது, மூடப்பட்ட மூடியுடன் இருக்கும்போதும் இயக்கத்தில் இருக்கும்.</translation>
 <translation id="3050422059534974565">CAPS LOCK இயக்கத்தில் உள்ளது.
 ரத்துசெய்ய Search அல்லது Shift ஐ அழுத்தவும்.</translation>
 <translation id="397105322502079400">கணக்கிடுகிறது...</translation>
 <translation id="158849752021629804">உள்ளூர் பிணையம் தேவை</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/> ஐ செயல்படுத்து</translation>
 <translation id="5864471791310927901">DHCP பார்வையிடுதல் தோல்வி</translation>
-<translation id="5812035014844949013">வெளியீடு</translation>
 <translation id="6692173217867674490">மோசமான கடவுச்சொற்றொடர்</translation>
 <translation id="6165508094623778733">மேலும் அறிக</translation>
 <translation id="9046895021617826162">இணைப்பு தோல்வியடைந்தது</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">பேட்டரி குறைவு (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">ஏற்கிறேன்</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> உள்ளது</translation>
+<translation id="3009178788565917040">வெளியீடு</translation>
 <translation id="520760366042891468">Hangouts மூலமாக உங்கள் திரையின் கட்டுப்பாட்டைப் பகிர்கிறது.</translation>
 <translation id="8000066093800657092">நெட்வொர்க் இல்லை</translation>
 <translation id="4015692727874266537">இன்னொரு கணக்கில் உள்நுழைக...</translation>
 <translation id="5941711191222866238">சிறிதாக்கு</translation>
 <translation id="6911468394164995108">மற்றொன்றில் சேர்...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">வாழ்த்துகள்! உங்கள் '<ph name="NAME"/>' தரவு சேவை செயல்படுத்தப்பட்டது, அது பயன்படுத்துவதற்கு தயாராக உள்ளது.</translation>
 <translation id="412065659894267608">முழுவதும் சார்ஜ் ஆகும் நேரம் - <ph name="HOUR"/>ம <ph name="MINUTE"/>நி</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> என்ற எண்ணிலிருந்து வந்த SMS</translation>
 <translation id="1244147615850840081">சேவை வழங்குநர்</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 5bac372..1b62983 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">మీరు బహుళ సైన్-ఇన్‌లో గరిష్టంగా మూడు ఖాతాలను మాత్రమే కలిగి ఉండవచ్చు.</translation>
 <translation id="370649949373421643">Wi-fiని ప్రారంభించు</translation>
 <translation id="3626281679859535460">ప్రకాశం</translation>
+<translation id="3621202678540785336">ఇన్‌పుట్</translation>
 <translation id="595202126637698455">పనితీరుని గుర్తించడం ప్రారంభించబడింది</translation>
 <translation id="8054466585765276473">బ్యాటరీ సమయాన్ని లెక్కిస్తోంది.</translation>
 <translation id="7982789257301363584">నెట్‌వర్క్</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">స్థితి ట్రే</translation>
 <translation id="1661867754829461514">PIN లేదు</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: కనెక్ట్ అవుతోంది...</translation>
+<translation id="40400351611212369">నెట్‌వర్క్‌ను సక్రియం చేయడంలో లోపం</translation>
 <translation id="4237016987259239829">నెట్‌వర్క్ కనెక్షన్ లోపం</translation>
 <translation id="2946640296642327832">Bluetoothని ప్రారంభించు</translation>
 <translation id="6459472438155181876"><ph name="DISPLAY_NAME"/>కు స్క్రీన్‌ను విస్తరిస్తోంది</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">మీ స్క్రీన్ యొక్క నియంత్రణ Hangouts ద్వారా <ph name="HELPER_NAME"/>తో భాగస్వామ్యం చేయబడుతోంది.</translation>
 <translation id="7864539943188674973">Bluetoothని నిలిపివేయి</translation>
 <translation id="939252827960237676">స్క్రీన్‌షాట్‌ను సేవ్ చేయడంలో విఫలమైంది</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">నవీకరించడానికి పునఃప్రారంభించండి</translation>
 <translation id="2268813581635650749">అందరినీ సైన్ అవుట్ చేయి</translation>
 <translation id="735745346212279324">VPN డిస్‌కనెక్ట్ చేయబడింది</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">భాషలను అనుకూలీకరించి, ఇన్‌పుట్ చెయ్యి...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">అర స్థానం</translation>
-<translation id="2903907270192926896">ఇన్‌పుట్</translation>
 <translation id="8676770494376880701">తక్కువ-పవర్ గల ఛార్జర్ కనెక్ట్ చేయబడింది</translation>
 <translation id="7170041865419449892">పరిధిని దాటింది</translation>
 <translation id="4804818685124855865">డిస్‌కనెక్ట్ చెయ్యి</translation>
@@ -77,18 +79,23 @@
 మారడానికి Shift + Altను నొక్కండి.</translation>
 <translation id="2562916301614567480">ప్రైవేట్ నెట్‌వర్క్</translation>
 <translation id="6549021752953852991">సెల్యులార్ నెట్‌వర్క్ అందుబాటులో లేదు</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">ప్రియమైన మానిటర్, ఇది మన మధ్య పని చేయడం లేదు. (ఆ మానిటర్‌కు మద్దతు లేదు)</translation>
 <translation id="6426039856985689743">మొబైల్ డేటాను నిలిపివేయి</translation>
 <translation id="3087734570205094154">దిగువ</translation>
 <translation id="3742055079367172538">స్క్రీన్‌షాట్ తీసినప్పుడు</translation>
 <translation id="8878886163241303700">స్క్రీన్ విస్తరించబడుతోంది</translation>
 <translation id="5271016907025319479">VPN కాన్ఫిగర్ చేయబడలేదు.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (బ్లూటూత్)</translation>
+<translation id="3967919079500697218">మీ నిర్వాహకులు స్క్రీన్‌షాట్‌లను తీయగల సామర్థ్యాన్ని నిలిపివేసారు.</translation>
 <translation id="372094107052732682">నిష్క్రమించడానికి రెండుసార్లు Ctrl+Shift+Q నొక్కండి.</translation>
 <translation id="6803622936009808957">మద్దతు ఉన్న రిజల్యూషన్‌లు కనుగొనబడనందున ప్రదర్శనలను ప్రతిబింబించడం సాధ్యపడలేదు. దానికి బదులుగా విస్తారిత డెస్క్‌టాప్‌కు మారారు.</translation>
 <translation id="1480041086352807611">డెమో మోడ్</translation>
 <translation id="3626637461649818317"><ph name="PERCENTAGE"/>% మిగిలి ఉంది</translation>
 <translation id="9089416786594320554">ఇన్‌పుట్ పద్ధతులు</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>'ను సక్రియం చేయడానికి నెట్‌వర్క్ కనెక్షన్ అవసరం.</translation>
+<translation id="3963445509666917109">స్పీకర్ (అంతర్గతం)</translation>
 <translation id="2825619548187458965">అర</translation>
 <translation id="2614835198358683673">మీ Chromebook ప్రారంభించబడినప్పుడు ఛార్జ్ కాకపోవచ్చు. అధికారిక ఛార్జర్‌ను ఉపయోగించడానికి ప్రయత్నించండి.</translation>
 <translation id="1895658205118569222">షట్‌డౌన్</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">సెల్యులార్ నెట్‌వర్క్‌ల కోసం శోధిస్తోంది...</translation>
 <translation id="583281660410589416">తెలియనిది</translation>
 <translation id="1383876407941801731">శోధన</translation>
-<translation id="7468789844759750875">మరింత డేటాను కొనుగోలు చేయడానికి <ph name="NAME"/> సక్రియ పోర్టల్‌ను సందర్శించండి.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/>కి కనెక్ట్ చేస్తోంది</translation>
 <translation id="2204305834655267233">నెట్‌వర్క్ సమాచారం</translation>
 <translation id="1621499497873603021">బ్యాటరీ ఖాళీ కావడానికి మిగిలి ఉన్న సమయం, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">అతిథిగా నిష్క్రమించు</translation>
 <translation id="8308637677604853869">మునుపటి మెను</translation>
 <translation id="4666297444214622512">మరో ఖాతాకు సైన్ ఇన్ చేయలేరు.</translation>
+<translation id="3625258641415618104">స్క్రీన్‌షాట్‌లు నిలిపివేయబడ్డాయి</translation>
 <translation id="1346748346194534595">కుడి</translation>
 <translation id="1773212559869067373">ప్రామాణీకరణ ప్రమాణపత్రం స్థానికంగా తిరస్కరించబడింది</translation>
 <translation id="8528322925433439945">మొబైల్ ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">సక్రియా విఫలం</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>'కు నెట్‌వర్క్‌కు కనెక్ట్ చేయడానికి విఫలమైంది: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi నిలిపివేయబడింది.</translation>
+<translation id="2966449113954629791">మీకు అనుమతించిన మొబైల్ డేటాను మీరు ఉపయోగించి ఉండవచ్చు. మరింత డేటాను కొనుగోలు చేయడానికి <ph name="NAME"/> సక్రియ పోర్టల్‌ను సందర్శించండి.</translation>
 <translation id="8132793192354020517"><ph name="NAME"/>కు కనెక్ట్ చేయబడింది</translation>
 <translation id="7052914147756339792">వాల్‌పేపర్‌ను సెట్ చేయి...</translation>
 <translation id="8678698760965522072">ఆన్‌లైన్ స్థితి</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">పునరుద్ధరించు</translation>
 <translation id="4274292172790327596">గుర్తించబడని లోపం</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">హెడ్‌ఫోన్</translation>
 <translation id="225680501294068881">పరికరాల కోసం స్కాన్ చేస్తోంది...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">మైక్రోఫోన్ (అంతర్గతం)</translation>
 <translation id="4448844063988177157">Wi-Fi నెట్‌వర్క్‌ల కోసం శోధిస్తోంది...</translation>
 <translation id="8401662262483418323">'<ph name="NAME"/>'కు కనెక్ట్ చేయడంలో విఫలమైంది: <ph name="DETAILS"/>
 సర్వర్ సందేశం: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">ఒక లోపం సంభవించింది</translation>
 <translation id="7229570126336867161">EVDO అవసరం</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> అనేది <ph name="DOMAIN"/> ద్వారా నిర్వహించబడుతున్న పబ్లిక్ సెషన్</translation>
+<translation id="9044646465488564462">నెట్‌వర్క్‌కు కనెక్ట్ చేయడంలో విఫలమైంది: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">సెషన్‌ని నిష్క్రమించు</translation>
 <translation id="8454013096329229812">Wi-Fi ప్రారంభించబడింది.</translation>
 <translation id="4872237917498892622">Alt+Search లేదా Shift</translation>
 <translation id="9201131092683066720">బ్యాటరీ <ph name="PERCENTAGE"/>% నిండింది.</translation>
 <translation id="2983818520079887040">సెట్టింగ్‌లు...</translation>
+<translation id="3871838685472846647">సెల్యులార్ సక్రియం చేయబడింది</translation>
 <translation id="1195412055398077112">ఓవర్‌స్కాన్</translation>
-<translation id="1717216362413677834">డాక్ మోడ్</translation>
 <translation id="112308213915226829">అరను స్వయంచాలకంగా దాచు</translation>
+<translation id="7573962313813535744">డాక్ చేయబడిన మోడ్</translation>
 <translation id="8927026611342028580">కనెక్ట్ చేయడం అభ్యర్థించబడింది</translation>
 <translation id="8300849813060516376">OTASP విఫలమైంది</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">బ్యాటరీ <ph name="PERCENTAGE"/>% నిండింది మరియు ఛార్జ్ అవుతోంది.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: సక్రియం చేస్తోంది...</translation>
 <translation id="4895488851634969361">బ్యాటరీ నిండింది.</translation>
-<translation id="1391854757121130358">మీరు మీ మొబైల్ డేటా కేటాయింపును ఉపయోగించి ఉండవచ్చు.</translation>
 <translation id="5947494881799873997">తిరిగి పూర్వ స్థితికి మార్చు</translation>
 <translation id="7593891976182323525">Search లేదా Shift</translation>
 <translation id="7649070708921625228">సహాయం</translation>
+<translation id="747833637904845037">మీ Chromebook బాహ్య డిస్‌ప్లేకి కనెక్ట్ చేయబడినప్పుడు మూత మూసివేసి ఉన్నప్పటికీ కూడా అలాగే ఆన్‌లో ఉంటుంది.</translation>
 <translation id="3050422059534974565">CAPS LOCK ఆన్‌లో ఉంది.
 రద్దు చేయడానికి Search లేదా Shiftని నొక్కండి.</translation>
 <translation id="397105322502079400">గణిస్తోంది...</translation>
 <translation id="158849752021629804"> హోమ్  నెట్‌వర్క్ అవసరం</translation>
 <translation id="6857811139397017780"><ph name="NETWORKSERVICE"/>ని సక్రియం చెయ్యి</translation>
 <translation id="5864471791310927901">DHCP లుక్‌అప్ విఫలమైంది</translation>
-<translation id="5812035014844949013">అవుట్‌పుట్</translation>
 <translation id="6692173217867674490">తప్పుడు పాస్‌ఫ్రేజ్</translation>
 <translation id="6165508094623778733">మరింత తెలుసుకోండి</translation>
 <translation id="9046895021617826162">కనెక్ట్ విఫలమైంది</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">బ్యాటరీ తక్కువగా ఉంది (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">ఆమోదించు</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> మిగిలి ఉంది</translation>
+<translation id="3009178788565917040">అవుట్‌పుట్</translation>
 <translation id="520760366042891468">మీ స్క్రీన్ యొక్క నియంత్రణ Hangouts ద్వారా భాగస్వామ్యం చేయబడుతోంది.</translation>
 <translation id="8000066093800657092">ఏ నెట్‌వర్క్ లేదు</translation>
 <translation id="4015692727874266537">మరో ఖాతాతో సైన్ ఇన్ చేయి...</translation>
 <translation id="5941711191222866238">కనిష్టీకరించు</translation>
 <translation id="6911468394164995108">మరొక దానిలో చేరండి...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">అభినందనలు! మీ '<ph name="NAME"/>' డేటా సేవ సక్రియం చేయబడింది మరియు పని చేయడానికి సిద్ధంగా ఉంది.</translation>
 <translation id="412065659894267608">నిండే వరకు <ph name="HOUR"/>h <ph name="MINUTE"/>m అవుతుంది</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> నుండి SMS</translation>
 <translation id="1244147615850840081">కారియర్</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index c0d786c..da6b8f8 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">คุณสามารถมีได้มากสุดสามบัญชีเท่านั้นในการลงชื่อเข้าสู่ระบบพร้อมกันหลายบัญชี</translation>
 <translation id="370649949373421643">เปิดใช้งาน Wi-Fi</translation>
 <translation id="3626281679859535460">ความสว่าง</translation>
+<translation id="3621202678540785336">อินพุต</translation>
 <translation id="595202126637698455">เปิดใช้งานการติดตามการปฏิบัติงานแล้ว</translation>
 <translation id="8054466585765276473">กำลังคำนวณเวลาใช้งานแบตเตอรี่</translation>
 <translation id="7982789257301363584">เครือข่าย</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">ถาดสถานะ</translation>
 <translation id="1661867754829461514">ไม่พบ PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: กำลังเชื่อมต่อ...</translation>
+<translation id="40400351611212369">ข้อผิดพลาดการเปิดใช้งานเครือข่าย</translation>
 <translation id="4237016987259239829">ข้อผิดพลาดการเชื่อมต่อเครือข่าย</translation>
 <translation id="2946640296642327832">เปิดใช้งานบลูทูธ</translation>
 <translation id="6459472438155181876">ขยายหน้าจอไปยัง <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">กำลังแชร์การควบคุมหน้าจอของคุณด้วย <ph name="HELPER_NAME"/> ผ่านแฮงเอาท์</translation>
 <translation id="7864539943188674973">ปิดใช้งานบลูทูธ</translation>
 <translation id="939252827960237676">ไม่สามารถบันทึกภาพหน้าจอ</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">รีสตาร์ทเพื่ออัปเดต</translation>
 <translation id="2268813581635650749">ออกจากระบบทั้งหมด</translation>
 <translation id="735745346212279324">ยกเลิกการเชื่อมต่อ VPN แล้ว</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">กำหนดค่าภาษาและการป้อนข้อมูล... </translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">ตำแหน่งของชั้นวาง</translation>
-<translation id="2903907270192926896">อินพุต</translation>
 <translation id="8676770494376880701">เชื่อมต่อกับที่ชาร์จพลังงานต่ำ</translation>
 <translation id="7170041865419449892">อยู่นอกระยะสัญญาณ</translation>
 <translation id="4804818685124855865">ตัดการเชื่อมต่อ</translation>
@@ -77,18 +79,23 @@
 กด Shift + Alt เพื่อสลับ</translation>
 <translation id="2562916301614567480">เครือข่ายส่วนบุคคล</translation>
 <translation id="6549021752953852991">ไม่มีเครือข่ายมือถือที่ใช้งานได้</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">จอภาพเอ๋ย เราร่วมงานกันไม่ได้ (จอภาพนั้นไม่ได้รับการสนับสนุน)</translation>
 <translation id="6426039856985689743">ปิดการใช้งานข้อมูลมือถือ</translation>
 <translation id="3087734570205094154">ด้านล่าง</translation>
 <translation id="3742055079367172538">ภาพหน้าจอที่บันทึก</translation>
 <translation id="8878886163241303700">กำลังขยายหน้าจอ</translation>
 <translation id="5271016907025319479">ไม่ได้กำหนดค่า VPN</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (บลูทูธ)</translation>
+<translation id="3967919079500697218">ความสามารถในการบันทึกภาพหน้าจอถูกปิดใช้โดยผู้ดูแลระบบ</translation>
 <translation id="372094107052732682">กด Ctrl+Shift+Q สองครั้งเพื่อออก</translation>
 <translation id="6803622936009808957">ไม่สามารถแสดงผลคู่ขนานได้เนื่องจากไม่พบความละเอียดที่สนับสนุน เข้าสู่เดสก์ท็อปแบบขยายแทน</translation>
 <translation id="1480041086352807611">โหมดสาธิต</translation>
 <translation id="3626637461649818317">เหลืออีก <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">วิธีการป้อนข้อมูล</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">การเปิดใช้งานของ &quot;<ph name="NAME"/>&quot; จำเป็นต้องมีการเชื่อมต่อเครือข่าย</translation>
+<translation id="3963445509666917109">ลำโพง (ภายใน)</translation>
 <translation id="2825619548187458965">ชั้นวาง</translation>
 <translation id="2614835198358683673">Chromebook ของคุณอาจไม่ได้ชาร์จในขณะที่เปิดอยู่ ลองใช้ที่ชาร์จมาตรฐาน</translation>
 <translation id="1895658205118569222">ปิด</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">กำลังค้นหาเครือข่ายโทรศัพท์มือถือ...</translation>
 <translation id="583281660410589416">ไม่รู้จัก</translation>
 <translation id="1383876407941801731">เครื่องมือค้นหา</translation>
-<translation id="7468789844759750875">ไปที่พอร์ทัลการเปิดใช้งาน <ph name="NAME"/> เพื่อซื้อข้อมูลเพิ่มเติม</translation>
 <translation id="3901991538546252627">กำลังเชื่อมต่อกับ <ph name="NAME"/></translation>
 <translation id="2204305834655267233">ข้อมูลเครือข่าย</translation>
 <translation id="1621499497873603021">เวลาที่เหลือกว่าแบตเตอรี่จะหมด, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">ออกจากเซสชันผู้มาเยือน</translation>
 <translation id="8308637677604853869">เมนูก่อนหน้า</translation>
 <translation id="4666297444214622512">ไม่สามารถลงชื่อเข้าใช้บัญชีอื่น</translation>
+<translation id="3625258641415618104">ปิดใช้การจับภาพหน้าจอ</translation>
 <translation id="1346748346194534595">ขวา</translation>
 <translation id="1773212559869067373">ใบรับรองการตรวจสอบสิทธิ์ได้รับการปฏิเสธในท้องถิ่น</translation>
 <translation id="8528322925433439945">มือถือ ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">การเปิดใช้งานล้มเหลว</translation>
 <translation id="5097002363526479830">ไม่สามารถเชื่อมต่อเครือข่าย &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">WiFi ปิดอยู่</translation>
+<translation id="2966449113954629791">คุณอาจใช้ข้อมูลมือถือตามปริมาณที่อนุญาตหมดแล้ว ไปที่พอร์ทัลการเปิดใช้งาน <ph name="NAME"/> เพื่อซื้อข้อมูลเพิ่มเติม</translation>
 <translation id="8132793192354020517">เชื่อมต่อกับ <ph name="NAME"/></translation>
 <translation id="7052914147756339792">ตั้งค่าวอลเปเปอร์...</translation>
 <translation id="8678698760965522072">สถานะออนไลน์</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">คืนค่า</translation>
 <translation id="4274292172790327596">ข้อผิดพลาดที่ไม่รู้จัก</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">ชุดหูฟัง</translation>
 <translation id="225680501294068881">กำลังสแกนหาอุปกรณ์...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">ไมโครโฟน (ภายใน)</translation>
 <translation id="4448844063988177157">กำลังค้นหาเครือข่าย Wi-Fi...</translation>
 <translation id="8401662262483418323">การเชื่อมต่อกับ &quot;<ph name="NAME"/>&quot; ล้มเหลว: <ph name="DETAILS"/>
 ข้อความเซิร์ฟเวอร์: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">มีข้อผิดพลาดเกิดขึ้น</translation>
 <translation id="7229570126336867161">ต้องใช้ EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> เป็นเซสชันสาธารณะซึ่งจัดการโดย <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">ไม่สามารถเชื่อมต่อเครือข่าย: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">ออกจากเซสชัน</translation>
 <translation id="8454013096329229812">WiFi เปิดอยู่</translation>
 <translation id="4872237917498892622">Alt+ค้นหา หรือ Shift</translation>
 <translation id="9201131092683066720">มีแบตเตอรี่ <ph name="PERCENTAGE"/>%</translation>
 <translation id="2983818520079887040">การตั้งค่า...</translation>
+<translation id="3871838685472846647">เปิดใช้งานโทรศัพท์มือถือแล้ว</translation>
 <translation id="1195412055398077112">โอเวอร์สแกน</translation>
-<translation id="1717216362413677834">โหมดแท่นชาร์จ</translation>
 <translation id="112308213915226829">ซ่อนชั้นวางโดยอัตโนมัติ</translation>
+<translation id="7573962313813535744">โหมดเชื่อมต่อแท่นชาร์จ</translation>
 <translation id="8927026611342028580">ขอเชื่อมต่อ</translation>
 <translation id="8300849813060516376">OTASP ล้มเหลว</translation>
 <translation id="2792498699870441125">Alt+ค้นหา</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">มีแบตเตอรี่ <ph name="PERCENTAGE"/>% และกำลังชาร์จ</translation>
 <translation id="6267036997247669271"><ph name="NAME"/> กำลังเปิดใช้งาน...</translation>
 <translation id="4895488851634969361">แบตเตอรี่เต็ม</translation>
-<translation id="1391854757121130358">คุณอาจใช้ข้อมูลมือถือถึงขีดจำกัดแล้ว</translation>
 <translation id="5947494881799873997">ย้อนกลับ</translation>
 <translation id="7593891976182323525">ค้นหาหรือ Shift</translation>
 <translation id="7649070708921625228">ช่วยเหลือ</translation>
+<translation id="747833637904845037">Chromebook ของคุณจะยังคงเปิดอยู่ขณะเชื่อมต่อจอภาพภายนอก แม้จะปิดฝาอยู่</translation>
 <translation id="3050422059534974565">CAPS LOCK เปิดอยู่
 กด &quot;ค้นหา&quot; หรือ Shift เพื่อยกเิลิก</translation>
 <translation id="397105322502079400">กำลังคำนวณ...</translation>
 <translation id="158849752021629804">ต้องใช้เครือข่ายในประเทศ</translation>
 <translation id="6857811139397017780">เปิดใช้งาน <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">การค้นหา DHCP ล้มเหลว</translation>
-<translation id="5812035014844949013">เอาต์พุต</translation>
 <translation id="6692173217867674490">ข้อความรหัสผ่านไม่ถูกต้อง</translation>
 <translation id="6165508094623778733">เรียนรู้เพิ่มเติม</translation>
 <translation id="9046895021617826162">การเชื่อมต่อล้มเหลว</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">แบตเตอรี่ต่ำ (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">ยอมรับ</translation>
 <translation id="5102001756192215136">เหลืออีก <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">เอาต์พุต</translation>
 <translation id="520760366042891468">กำลังแชร์การควบคุมหน้าจอผ่านแฮงเอาท์</translation>
 <translation id="8000066093800657092">ไม่มีเครือข่าย</translation>
 <translation id="4015692727874266537">ลงชื่อเข้าใช้บัญชีอื่น...</translation>
 <translation id="5941711191222866238">ย่อ</translation>
 <translation id="6911468394164995108">เชื่อมต่อเครือข่ายอื่น...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">ขอแสดงความยินดี! บริการข้อมูล &quot;<ph name="NAME"/>&quot; ของคุณได้เปิดใช้งานและพร้อมใช้งานแล้ว</translation>
 <translation id="412065659894267608">อีก <ph name="HOUR"/>ชม. <ph name="MINUTE"/>นาทีจึงจะเต็ม</translation>
 <translation id="6359806961507272919">SMS จาก <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">ผู้ให้บริการ</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index afc2efc..06842a7 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Çoklu oturum açmada en fazla üç hesabınız olabilir.</translation>
 <translation id="370649949373421643">Kablosuzu Etkinleştir</translation>
 <translation id="3626281679859535460">Parlaklık</translation>
+<translation id="3621202678540785336">Giriş</translation>
 <translation id="595202126637698455">Performans izleme etkin</translation>
 <translation id="8054466585765276473">Pilin süresi hesaplanıyor.</translation>
 <translation id="7982789257301363584">Ağ</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Durum tepsisi</translation>
 <translation id="1661867754829461514">PIN eksik</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Bağlanıyor...</translation>
+<translation id="40400351611212369">Ağ Etkinleştirme Hatası</translation>
 <translation id="4237016987259239829">Ağ Bağlantısı Hatası</translation>
 <translation id="2946640296642327832">Bluetooth'u etkinleştir</translation>
 <translation id="6459472438155181876">Ekran şuraya genişletiliyor: <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Ekranınızın denetimi Hangouts üzerinden <ph name="HELPER_NAME"/> ile paylaşılıyor.</translation>
 <translation id="7864539943188674973">Bluetooth'u devre dışı bırak</translation>
 <translation id="939252827960237676">Ekran görüntüsü kaydedilemedi</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Güncellemek için yeniden başlat</translation>
 <translation id="2268813581635650749">Tüm kullanıcıların oturumunu kapat</translation>
 <translation id="735745346212279324">VPN bağlantısı kesildi</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Dilleri ve girişi özelleştir...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Raf konumu</translation>
-<translation id="2903907270192926896">GİRİŞ</translation>
 <translation id="8676770494376880701">Düşük güçlü şarj cihazı bağlandı</translation>
 <translation id="7170041865419449892">Aralık dışında</translation>
 <translation id="4804818685124855865">Bağlantıyı kes</translation>
@@ -77,18 +79,23 @@
 Geçiş yapmak için ÜstKrktr + Alt tuşlarına basın.</translation>
 <translation id="2562916301614567480">Özel Ağ</translation>
 <translation id="6549021752953852991">Kullanılabilir hücresel ağ yok</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Sevgili Monitör, aramızdaki bu ilişki yürümüyor. (Bu monitör desteklenmiyor)</translation>
 <translation id="6426039856985689743">Mobil verileri devre dışı bırak</translation>
 <translation id="3087734570205094154">Alt</translation>
 <translation id="3742055079367172538">Ekran görüntüsü alındı</translation>
 <translation id="8878886163241303700">Genişletilmiş ekran</translation>
 <translation id="5271016907025319479">VPN yapılandırılmadı.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Ekran görüntüsü alabilme işlevi yöneticiniz tarafından devre dışı bırakılmıştır.</translation>
 <translation id="372094107052732682">Çıkmak için Ctrl+ÜstKrktr+Q tuşlarına iki kez basın.</translation>
 <translation id="6803622936009808957">Desteklenen bir çözünürlük bulunamadığı için ekranlar yansıtılamıyor. Bunun yerine genişletilmiş masaüstüne geçiliyor.</translation>
 <translation id="1480041086352807611">Demo modu</translation>
 <translation id="3626637461649818317">%<ph name="PERCENTAGE"/> kaldı</translation>
 <translation id="9089416786594320554">Giriş yöntemleri</translation>
 <translation id="6247708409970142803">%<ph name="PERCENTAGE"/></translation>
+<translation id="2670531586141364277">'<ph name="NAME"/>' ağının etkinleştirilmesi için ağ bağlantısı gereklidir.</translation>
+<translation id="3963445509666917109">Hoparlör (Dahili)</translation>
 <translation id="2825619548187458965">Raf</translation>
 <translation id="2614835198358683673">Chromebook'unuz açıkken şarj edilemeyebilir. Orijinal şarj cihazını kullanmayı düşünün.</translation>
 <translation id="1895658205118569222">Kapat</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Hücresel ağlar aranıyor...</translation>
 <translation id="583281660410589416">Bilinmiyor</translation>
 <translation id="1383876407941801731">Arama</translation>
-<translation id="7468789844759750875">Daha fazla veri satın almak için <ph name="NAME"/> etkinleştirme portalını ziyaret edin.</translation>
 <translation id="3901991538546252627"><ph name="NAME"/> ağına bağlanılıyor</translation>
 <translation id="2204305834655267233">Ağ Bilgisi</translation>
 <translation id="1621499497873603021">Pilin boşalması için kalan süre, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Misafir oturumundan çık</translation>
 <translation id="8308637677604853869">Önceki menü</translation>
 <translation id="4666297444214622512">Başka bir hesapta oturum açılamıyor.</translation>
+<translation id="3625258641415618104">Ekran görüntüleri devre dışı</translation>
 <translation id="1346748346194534595">Sağa</translation>
 <translation id="1773212559869067373">Kimlik doğrulama sertifikası yerel olarak reddedildi</translation>
 <translation id="8528322925433439945">Mobile...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Etkinleştirme hatası</translation>
 <translation id="5097002363526479830">'<ph name="NAME"/>' ağına bağlanamadı: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Kablosuz kapalı.</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>
 <translation id="8132793192354020517"><ph name="NAME"/> ağına bağlanıldı</translation>
 <translation id="7052914147756339792">Duvar kağıdını ayarla...</translation>
 <translation id="8678698760965522072">Çevrimiçi durumu</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Geri yükle</translation>
 <translation id="4274292172790327596">Tanınmayan hata</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Kulaklık</translation>
 <translation id="225680501294068881">Cihazlar taranıyor...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Mikrofon (Dahili)</translation>
 <translation id="4448844063988177157">Kablosuz ağlar aranıyor...</translation>
 <translation id="8401662262483418323">Şununla bağlantı kurulamadı: &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Sunucu mesajı: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Bir hata oluştu</translation>
 <translation id="7229570126336867161">EVDO gerekli</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/>, <ph name="DOMAIN"/> tarafından yönetilen herkese açık bir oturumdur</translation>
+<translation id="9044646465488564462">Şu ağa bağlanamadı: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Oturumdan çık</translation>
 <translation id="8454013096329229812">Kablosuz açık.</translation>
 <translation id="4872237917498892622">Alt+Arama veya Üst Karakter</translation>
 <translation id="9201131092683066720">Pil %<ph name="PERCENTAGE"/> dolu.</translation>
 <translation id="2983818520079887040">Ayarlar...</translation>
+<translation id="3871838685472846647">Cep Telefonu Etkinleştirildi</translation>
 <translation id="1195412055398077112">fazla tarama</translation>
-<translation id="1717216362413677834">Yuva modu</translation>
 <translation id="112308213915226829">Rafı otomatik gizle</translation>
+<translation id="7573962313813535744">Yuva modu</translation>
 <translation id="8927026611342028580">Bağlantı İstendi</translation>
 <translation id="8300849813060516376">OTASP başarısız oldu</translation>
 <translation id="2792498699870441125">Alt+Arama</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Pil %<ph name="PERCENTAGE"/> dolu ve şarj oluyor.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Etkinleştiriliyor...</translation>
 <translation id="4895488851634969361">Pil dolu.</translation>
-<translation id="1391854757121130358">Mobil veri hakkınızı bitirmiş olabilirsiniz.</translation>
 <translation id="5947494881799873997">Geri döndür</translation>
 <translation id="7593891976182323525">Arama veya Üst Karakter</translation>
 <translation id="7649070708921625228">Yardım</translation>
+<translation id="747833637904845037">Chromebook'unuz harici bir ekrana bağlıyken (kapak kapalı olsa da) açık kalır.</translation>
 <translation id="3050422059534974565">CAPS LOCK açık.
 İptal için Arama veya Üst Karakter tuşlarına basın.</translation>
 <translation id="397105322502079400">Hesaplanııyor...</translation>
 <translation id="158849752021629804">Ev ağı gerekli</translation>
 <translation id="6857811139397017780">Şunu etkinleştir: <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP araması başarısız oldu</translation>
-<translation id="5812035014844949013">ÇIKIŞ</translation>
 <translation id="6692173217867674490">Hatalı parola</translation>
 <translation id="6165508094623778733">Daha fazla bilgi edinin</translation>
 <translation id="9046895021617826162">Bağlantı başarısız oldu</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Pil gücü az (%<ph name="PERCENTAGE"/>)</translation>
 <translation id="4918086044614829423">Kabul et</translation>
 <translation id="5102001756192215136"><ph name="HOUR"/>:<ph name="MINUTE"/> kaldı</translation>
+<translation id="3009178788565917040">Çıkış</translation>
 <translation id="520760366042891468">Ekranınızın denetimi Hangouts üzerinden paylaşılıyor.</translation>
 <translation id="8000066093800657092">Ağ yok</translation>
 <translation id="4015692727874266537">Başka bir hesapta oturum açın...</translation>
 <translation id="5941711191222866238">Simge durumuna küçült</translation>
 <translation id="6911468394164995108">Başka ağa katıl...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Tebrikler! '<ph name="NAME"/>' veri hizmetiniz etkinleştirildi ve kullanıma hazır.</translation>
 <translation id="412065659894267608">Tam dolana kadar <ph name="HOUR"/> sa <ph name="MINUTE"/> dk var</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> numaradan SMS alındı</translation>
 <translation id="1244147615850840081">Operatör</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 298cd93..9e7fc04 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Паралельно можна входити не більше ніж у три облікові записи.</translation>
 <translation id="370649949373421643">Увімкнути Wi-Fi</translation>
 <translation id="3626281679859535460">Яскравість</translation>
+<translation id="3621202678540785336">Вхід</translation>
 <translation id="595202126637698455">Відстеження ефективності ввімкнено</translation>
 <translation id="8054466585765276473">Обчислення часу роботи акумулятора.</translation>
 <translation id="7982789257301363584">Мережа</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Контейтер стану</translation>
 <translation id="1661867754829461514">Відсутній PIN-код</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Під’єднання…</translation>
+<translation id="40400351611212369">Помилка активації мережі</translation>
 <translation id="4237016987259239829">Помилка з'єднання з мережею</translation>
 <translation id="2946640296642327832">Увімкнути Bluetooth</translation>
 <translation id="6459472438155181876">Розширення екрана на <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Спільний доступ до екрана для користувача <ph name="HELPER_NAME"/> через Hangouts.</translation>
 <translation id="7864539943188674973">Вимкнути Bluetooth</translation>
 <translation id="939252827960237676">Не вдалося зберегти знімок екрана</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Перезапустіть, щоб оновити</translation>
 <translation id="2268813581635650749">Вийти з усіх облікових записів</translation>
 <translation id="735745346212279324">VPN від’єднано</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Налаштувати мови та введення тексту...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Розташування полиці</translation>
-<translation id="2903907270192926896">ВХІД</translation>
 <translation id="8676770494376880701">Зарядний пристрій низької потужності підключено</translation>
 <translation id="7170041865419449892">За межами досяжності</translation>
 <translation id="4804818685124855865">Від'єднатися</translation>
@@ -77,18 +79,23 @@
 Щоб переключитися, натисніть Shift + Alt.</translation>
 <translation id="2562916301614567480">Приватна мережа</translation>
 <translation id="6549021752953852991">Мобільна мережа недоступна</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Прикро, але контакту з монітором немає. (Цей монітор не підтримується)</translation>
 <translation id="6426039856985689743">Вимкнути передавання мобільних даних</translation>
 <translation id="3087734570205094154">Низ</translation>
 <translation id="3742055079367172538">Знімок екрана зроблено</translation>
 <translation id="8878886163241303700">Розширення екрана</translation>
 <translation id="5271016907025319479">VPN не налаштовано.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Можливість робити знімки екрана вимкнено адміністратором.</translation>
 <translation id="372094107052732682">Двічі натисніть комбінацію клавіш Ctrl+Shift+Q, щоб вийти.</translation>
 <translation id="6803622936009808957">Не вдалося дублювати зображення екранів, оскільки не знайдено підтримувані значення роздільної здатності. Натомість запущено режим розширеного робочого столу.</translation>
 <translation id="1480041086352807611">Демонстраційний режим</translation>
 <translation id="3626637461649818317">Залишилося <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Методи введення</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Для активації &quot;<ph name="NAME"/>&quot; потрібне з’єднання з мережею.</translation>
+<translation id="3963445509666917109">Динамік (внутрішній)</translation>
 <translation id="2825619548187458965">Полиця</translation>
 <translation id="2614835198358683673">Ваш Chromebook може не заряджатися, якщо ввімкнений. Спробуйте скористатися офіційним зарядним пристроєм.</translation>
 <translation id="1895658205118569222">Завершення роботи</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Пошук мобільних мереж…</translation>
 <translation id="583281660410589416">Невідомо</translation>
 <translation id="1383876407941801731">Пошук</translation>
-<translation id="7468789844759750875">Перейти на портал активації <ph name="NAME"/>, щоб придбати більший обсяг даних.</translation>
 <translation id="3901991538546252627">Під’єднання до <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Інформація про мережу</translation>
 <translation id="1621499497873603021">До розрядження акумулятора залишилося <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Завершити сеанс у режимі гостя</translation>
 <translation id="8308637677604853869">Попереднє меню</translation>
 <translation id="4666297444214622512">Неможливо ввійти в інший обліковий запис.</translation>
+<translation id="3625258641415618104">Знімки екрана вимкнено</translation>
 <translation id="1346748346194534595">Праворуч</translation>
 <translation id="1773212559869067373">Сертифікат автентифікації відхилений локально</translation>
 <translation id="8528322925433439945">Мобільні ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Помилка активації</translation>
 <translation id="5097002363526479830">Не вдалося під’єднатися до мережі &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi вимкнено.</translation>
+<translation id="2966449113954629791">Можливо, ви використали свій ліміт мобільного передавання даних. Перейдіть на портал активації <ph name="NAME"/>, щоб придбати більший обсяг даних.</translation>
 <translation id="8132793192354020517">З'єднано з <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Установити фоновий малюнок...</translation>
 <translation id="8678698760965522072">Статус онлайн</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Відновити</translation>
 <translation id="4274292172790327596">Нерозпізнана помилка</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Навушники</translation>
 <translation id="225680501294068881">Пошук пристроїв...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Мікрофон (внутрішній)</translation>
 <translation id="4448844063988177157">Пошук Wi-Fi мереж...</translation>
 <translation id="8401662262483418323">Помилка під’єднання до мережі &quot;<ph name="NAME"/>&quot;: <ph name="DETAILS"/>
 Повідомлення сервера: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Сталася помилка</translation>
 <translation id="7229570126336867161">Потрібна мережа EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> – загальнодоступний сеанс, керований доменом <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Помилка під’єднання до мережі: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Завершити сеанс</translation>
 <translation id="8454013096329229812">Wi-Fi увімкнено.</translation>
 <translation id="4872237917498892622">Alt+клавіша пошуку або Shift</translation>
 <translation id="9201131092683066720">Акумулятор заряджений на <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Налаштування...</translation>
+<translation id="3871838685472846647">Мобільне з’єднання активовано</translation>
 <translation id="1195412055398077112">облямівка екрана</translation>
-<translation id="1717216362413677834">Режим док-станції</translation>
 <translation id="112308213915226829">Автоматично ховати полицю</translation>
+<translation id="7573962313813535744">Режим док-станції</translation>
 <translation id="8927026611342028580">Подано запит на під’єднання</translation>
 <translation id="8300849813060516376">Помилка OTASP</translation>
 <translation id="2792498699870441125">Alt+клавіша пошуку</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Акумулятор заряджений на <ph name="PERCENTAGE"/>% і заряджається.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: активація…</translation>
 <translation id="4895488851634969361">Акумулятор заряджений.</translation>
-<translation id="1391854757121130358">Можливо, ви використали свій ліміт мобільного передавання даних.</translation>
 <translation id="5947494881799873997">Повернути</translation>
 <translation id="7593891976182323525">Клавіша пошуку або Shift</translation>
 <translation id="7649070708921625228">Довідка</translation>
+<translation id="747833637904845037">Під час під’єднання до зовнішнього екрана Chromebook залишатиметься ввімкненим, навіть якщо кришку закрито.</translation>
 <translation id="3050422059534974565">Клавішу CAPS LOCK увімкнено.
 Натисніть клавішу пошуку або Shift, щоб скасувати.</translation>
 <translation id="397105322502079400">Обчислення...</translation>
 <translation id="158849752021629804">Потрібна домашня мережа</translation>
 <translation id="6857811139397017780">Активувати <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Помилка пошуку DHCP</translation>
-<translation id="5812035014844949013">ВИХІД</translation>
 <translation id="6692173217867674490">Погана парольна фраза</translation>
 <translation id="6165508094623778733">Докладніше</translation>
 <translation id="9046895021617826162">Помилка з'єднання</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Низький заряд акумулятора (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Прийняти</translation>
 <translation id="5102001756192215136">Залишилося <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Вихід</translation>
 <translation id="520760366042891468">Спільний доступ до екрана через Hangouts.</translation>
 <translation id="8000066093800657092">Немає мережі</translation>
 <translation id="4015692727874266537">Увійти в інший обліковий запис…</translation>
 <translation id="5941711191222866238">Зменшити</translation>
 <translation id="6911468394164995108">Під’єднатися до іншої...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Вітаємо! Вашу службу передавання даних &quot;<ph name="NAME"/>&quot; активовано. Нею можна користуватися.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/> год. <ph name="MINUTE"/> хв. до повного зарядження</translation>
 <translation id="6359806961507272919">SMS-повідомлення від <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Постачальник</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 5285511..2a52e53 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">Bạn chỉ có thể có tối đa ba tài khoản khi đăng nhập nhiều tài khoản.</translation>
 <translation id="370649949373421643">Bật Wi-Fi</translation>
 <translation id="3626281679859535460">Độ sáng</translation>
+<translation id="3621202678540785336">Thiết bị vào</translation>
 <translation id="595202126637698455">Đã bật theo dõi hoạt động</translation>
 <translation id="8054466585765276473">Đang tính toán thời lượng pin.</translation>
 <translation id="7982789257301363584">Mạng</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">Khay trạng thái</translation>
 <translation id="1661867754829461514">Thiếu PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>: Đang kết nối...</translation>
+<translation id="40400351611212369">Lỗi kích hoạt mạng</translation>
 <translation id="4237016987259239829">Lỗi Kết nối Mạng</translation>
 <translation id="2946640296642327832">Bật bluetooth</translation>
 <translation id="6459472438155181876">Đang mở rộng màn hình tới <ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">Chia sẻ quyền kiểm soát màn hình của bạn với <ph name="HELPER_NAME"/> qua Hangouts.</translation>
 <translation id="7864539943188674973">Tắt bluetooth</translation>
 <translation id="939252827960237676">Không lưu được ảnh chụp màn hình</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">Khởi động lại để cập nhật</translation>
 <translation id="2268813581635650749">Đăng xuất tất cả</translation>
 <translation id="735745346212279324">Đã ngắt kết nối VPN</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">Tùy chỉnh ngôn ngữ và dữ liệu nhập...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">Vị trí giá</translation>
-<translation id="2903907270192926896">ĐẦU VÀO</translation>
 <translation id="8676770494376880701">Đã kết nối bộ sạc công suất thấp</translation>
 <translation id="7170041865419449892">Ngoài vùng phủ sóng</translation>
 <translation id="4804818685124855865">Ngắt kết nối</translation>
@@ -77,18 +79,23 @@
 Nhấn Shift + Alt để chuyển đổi.</translation>
 <translation id="2562916301614567480">Mạng riêng</translation>
 <translation id="6549021752953852991">Không có mạng di động nào</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Rất tiếc, hệ thống không hoạt động giữa hai màn hình. (Màn hình đó không được hỗ trợ)</translation>
 <translation id="6426039856985689743">Tắt dữ liệu di động</translation>
 <translation id="3087734570205094154">Bên dưới</translation>
 <translation id="3742055079367172538">Ảnh màn hình đã chụp</translation>
 <translation id="8878886163241303700">Mở rộng màn hình</translation>
 <translation id="5271016907025319479">Mạng riêng ảo không được định cấu hình.</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (Bluetooth)</translation>
+<translation id="3967919079500697218">Quản trị viên của bạn đã tắt tính năng chụp ảnh màn hình.</translation>
 <translation id="372094107052732682">Nhấn Ctrl+Shift+Q hai lần để thoát.</translation>
 <translation id="6803622936009808957">Không thể phản chiếu màn hình do không tìm thấy độ phân giải được hỗ trợ. Thay vào đó, đã chuyển sang chế độ màn hình mở rộng.</translation>
 <translation id="1480041086352807611">Chế độ trình diễn</translation>
 <translation id="3626637461649818317">Còn lại <ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">Phương thức nhập</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">Cần phải có kết nối mạng để kích hoạt '<ph name="NAME"/>'</translation>
+<translation id="3963445509666917109">Loa (Bên trong)</translation>
 <translation id="2825619548187458965">Giá</translation>
 <translation id="2614835198358683673">Chromebook của bạn có thể không sạc khi đang bật. Hãy xem xét sử dụng bộ sạc chính thức.</translation>
 <translation id="1895658205118569222">Tắt</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">Đang tìm kiếm mạng di động...</translation>
 <translation id="583281660410589416">Không biết</translation>
 <translation id="1383876407941801731">Tìm kiếm</translation>
-<translation id="7468789844759750875">Truy cập cổng kích hoạt <ph name="NAME"/> để mua thêm dữ liệu.</translation>
 <translation id="3901991538546252627">Đang kết nối với <ph name="NAME"/></translation>
 <translation id="2204305834655267233">Thông tin mạng</translation>
 <translation id="1621499497873603021">Thời gian còn lại cho đến khi pin hết, <ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">Thoát khỏi phiên khách</translation>
 <translation id="8308637677604853869">Trình đơn trước</translation>
 <translation id="4666297444214622512">Không thể đăng nhập tài khoản khác.</translation>
+<translation id="3625258641415618104">Đã tắt chụp ảnh màn hình</translation>
 <translation id="1346748346194534595">Phải</translation>
 <translation id="1773212559869067373">Chứng chỉ xác thực bị từ chối cục bộ</translation>
 <translation id="8528322925433439945">Di động ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">Lỗi kích hoạt</translation>
 <translation id="5097002363526479830">Không thể kết nối với mạng '<ph name="NAME"/>': <ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi đang tắt.</translation>
+<translation id="2966449113954629791">Bạn có thể đã sử dụng hết dung lượng dữ liệu di động cho phép. Hãy truy cập cổng kích hoạt <ph name="NAME"/> để mua thêm dữ liệu.</translation>
 <translation id="8132793192354020517">Đã kết nối với <ph name="NAME"/></translation>
 <translation id="7052914147756339792">Đặt hình nền...</translation>
 <translation id="8678698760965522072">Trạng thái trực tuyến</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">Khôi phục</translation>
 <translation id="4274292172790327596">Lỗi chưa được xác định</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">Tai nghe</translation>
 <translation id="225680501294068881">Đang quét tìm thiết bị...</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY"/>, <ph name="DATE"/></translation>
+<translation id="737451040872859086">Micrô (Bên trong)</translation>
 <translation id="4448844063988177157">Đang tìm kiếm mạng Wi-Fi...</translation>
 <translation id="8401662262483418323">Không kết nối được với '<ph name="NAME"/>': <ph name="DETAILS"/>
 Thông báo máy chủ: <ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">Đã xảy ra lôi</translation>
 <translation id="7229570126336867161">Cần có EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> là phiên công khai được quản lý bởi <ph name="DOMAIN"/></translation>
+<translation id="9044646465488564462">Không kết nối được với mạng: <ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">Thoát khỏi phiên</translation>
 <translation id="8454013096329229812">Wi-Fi đang bật.</translation>
 <translation id="4872237917498892622">Alt+Search hoặc Shift</translation>
 <translation id="9201131092683066720">Pin đầy <ph name="PERCENTAGE"/>%.</translation>
 <translation id="2983818520079887040">Cài đặt...</translation>
+<translation id="3871838685472846647">Đã kích hoạt di động</translation>
 <translation id="1195412055398077112">quét quá mức</translation>
-<translation id="1717216362413677834">Chế độ gắn đế</translation>
 <translation id="112308213915226829">Tự động ẩn giá</translation>
+<translation id="7573962313813535744">Chế độ được gắn đế</translation>
 <translation id="8927026611342028580">Yêu cầu kết nối</translation>
 <translation id="8300849813060516376">OTASP không thành công</translation>
 <translation id="2792498699870441125">Alt+Search</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">Pin đầy <ph name="PERCENTAGE"/>% và đang sạc.</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>: Đang kích hoạt...</translation>
 <translation id="4895488851634969361">Pin đầy.</translation>
-<translation id="1391854757121130358">Có thể bạn đã sử dụng hết dữ liệu di động được phép.</translation>
 <translation id="5947494881799873997">Hoàn nguyên</translation>
 <translation id="7593891976182323525">Search hoặc Shift</translation>
 <translation id="7649070708921625228">Trợ giúp</translation>
+<translation id="747833637904845037">Chromebook của bạn sẽ vẫn bật trong khi được kết nối với màn hình bên ngoài cho dù nắp bị đóng.</translation>
 <translation id="3050422059534974565">CAPS LOCK đang bật.
 Nhấn Search hoặc Shift để hủy.</translation>
 <translation id="397105322502079400">Đang tính...</translation>
 <translation id="158849752021629804">Cần mạng gia đình</translation>
 <translation id="6857811139397017780">Kích hoạt <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">Không thể tra cứu DHCP</translation>
-<translation id="5812035014844949013">ĐẦU RA</translation>
 <translation id="6692173217867674490">Cụm mật khẩu sai</translation>
 <translation id="6165508094623778733">Tìm hiểu thêm</translation>
 <translation id="9046895021617826162">Kết nối không thành công</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">Pin yếu (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">Chấp nhận</translation>
 <translation id="5102001756192215136">Còn lại <ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">Thiết bị ra</translation>
 <translation id="520760366042891468">Chia sẻ quyền kiểm soát màn hình của bạn qua Hangouts.</translation>
 <translation id="8000066093800657092">Không có mạng nào</translation>
 <translation id="4015692727874266537">Đăng nhập tài khoản khác...</translation>
 <translation id="5941711191222866238">Thu nhỏ</translation>
 <translation id="6911468394164995108">Tham gia mạng khác...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>: <ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">Xin chúc mừng! Dịch vụ dữ liệu '<ph name="NAME"/>' của bạn đã được kích hoạt và sẵn sàng sử dụng.</translation>
 <translation id="412065659894267608"><ph name="HOUR"/>g <ph name="MINUTE"/>p cho đến khi đầy</translation>
 <translation id="6359806961507272919">SMS từ <ph name="PHONE_NUMBER"/></translation>
 <translation id="1244147615850840081">Nhà cung cấp</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 18ab670..e16b741 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">使用多帐户登录时,最多只能有 3 个帐户。</translation>
 <translation id="370649949373421643">启用 Wi-Fi</translation>
 <translation id="3626281679859535460">亮度</translation>
+<translation id="3621202678540785336">输入</translation>
 <translation id="595202126637698455">已启用性能跟踪</translation>
 <translation id="8054466585765276473">正在计算续航时间。</translation>
 <translation id="7982789257301363584">网络</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">状态栏</translation>
 <translation id="1661867754829461514">缺少 PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>:正在连接...</translation>
+<translation id="40400351611212369">网络激活错误</translation>
 <translation id="4237016987259239829">网络连接错误</translation>
 <translation id="2946640296642327832">启用蓝牙</translation>
 <translation id="6459472438155181876">正在将屏幕扩展到<ph name="DISPLAY_NAME"/></translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">通过环聊与<ph name="HELPER_NAME"/>共享您屏幕的控制权。</translation>
 <translation id="7864539943188674973">停用蓝牙</translation>
 <translation id="939252827960237676">无法保存屏幕截图</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">重新启动以进行更新</translation>
 <translation id="2268813581635650749">全部退出</translation>
 <translation id="735745346212279324">VPN 连接已断开</translation>
@@ -52,8 +55,7 @@
 <translation id="3294437725009624529">访客</translation>
 <translation id="8190698733819146287">自定义语言和输入法...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/>(<ph name="ANNOTATION"/>)</translation>
-<translation id="2942516765047364088">底栏的放置</translation>
-<translation id="2903907270192926896">输入</translation>
+<translation id="2942516765047364088">任务栏位置</translation>
 <translation id="8676770494376880701">已连接低功率充电器</translation>
 <translation id="7170041865419449892">超出范围</translation>
 <translation id="4804818685124855865">断开连接</translation>
@@ -77,19 +79,24 @@
 按 Shift + Alt 键可进行切换。</translation>
 <translation id="2562916301614567480">专用网</translation>
 <translation id="6549021752953852991">没有可用的蜂窝网络</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">嗨!显示器,咱们合不来。(系统不支持该显示器)</translation>
 <translation id="6426039856985689743">停用移动数据</translation>
 <translation id="3087734570205094154">底部</translation>
 <translation id="3742055079367172538">已完成屏幕截图</translation>
 <translation id="8878886163241303700">正在扩展屏幕</translation>
 <translation id="5271016907025319479">未配置 VPN。</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/>(蓝牙)</translation>
+<translation id="3967919079500697218">您的管理员已停用屏幕截图功能。</translation>
 <translation id="372094107052732682">连按两次 Ctrl+Shift+Q 即可退出。</translation>
 <translation id="6803622936009808957">找不到系统支持的分辨率,因此无法镜像显示屏。已改为进入扩展桌面。</translation>
 <translation id="1480041086352807611">演示模式</translation>
 <translation id="3626637461649818317">剩余电量:<ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">输入法</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
-<translation id="2825619548187458965">底栏</translation>
+<translation id="2670531586141364277">激活“<ph name="NAME"/>”需要连接网络。</translation>
+<translation id="3963445509666917109">扬声器(内部)</translation>
+<translation id="2825619548187458965">任务栏</translation>
 <translation id="2614835198358683673">您的 Chromebook 在开启期间可能无法充电。建议您使用产品原装的充电器。</translation>
 <translation id="1895658205118569222">关闭</translation>
 <translation id="4430019312045809116">音量</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">正在搜索蜂窝网络...</translation>
 <translation id="583281660410589416">未知</translation>
 <translation id="1383876407941801731">搜索</translation>
-<translation id="7468789844759750875">访问“<ph name="NAME"/>”激活门户网站,购买更多数据。</translation>
 <translation id="3901991538546252627">正在连接:<ph name="NAME"/></translation>
 <translation id="2204305834655267233">网络信息</translation>
 <translation id="1621499497873603021">电池电量将在 <ph name="TIME_LEFT"/>后耗尽</translation>
 <translation id="5980301590375426705">退出访客模式</translation>
 <translation id="8308637677604853869">上一菜单</translation>
 <translation id="4666297444214622512">无法登录到其他帐户。</translation>
+<translation id="3625258641415618104">已停用屏幕截图</translation>
 <translation id="1346748346194534595">向右</translation>
 <translation id="1773212559869067373">身份验证证书遭到本地拒绝</translation>
 <translation id="8528322925433439945">移动...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">激活失败</translation>
 <translation id="5097002363526479830">无法连接到网络“<ph name="NAME"/>”:<ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi 已关闭。</translation>
+<translation id="2966449113954629791">您的移动数据量可能已用完。请访问“<ph name="NAME"/>”激活门户网站,购买更多数据。</translation>
 <translation id="8132793192354020517">已连接到 <ph name="NAME"/></translation>
 <translation id="7052914147756339792">设置壁纸...</translation>
 <translation id="8678698760965522072">“在线”状态</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">恢复</translation>
 <translation id="4274292172790327596">未识别的错误</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">耳机</translation>
 <translation id="225680501294068881">正在查找设备...</translation>
 <translation id="5597451508971090205"><ph name="DATE"/><ph name="SHORT_WEEKDAY"/></translation>
+<translation id="737451040872859086">麦克风(内部)</translation>
 <translation id="4448844063988177157">正在搜索 Wi-Fi 网络...</translation>
 <translation id="8401662262483418323">无法连接到“<ph name="NAME"/>”:<ph name="DETAILS"/>
 服务器消息:<ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">出现错误</translation>
 <translation id="7229570126336867161">需要 EVDO</translation>
 <translation id="2999742336789313416">“<ph name="DISPLAY_NAME"/>”是由 <ph name="DOMAIN"/> 管理的公开会话</translation>
+<translation id="9044646465488564462">无法连接到网络:<ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">退出会话</translation>
 <translation id="8454013096329229812">Wi-Fi 已打开。</translation>
 <translation id="4872237917498892622">Alt + 搜索键或 Shift</translation>
 <translation id="9201131092683066720">电池电量为<ph name="PERCENTAGE"/>%。</translation>
 <translation id="2983818520079887040">设置...</translation>
+<translation id="3871838685472846647">蜂窝网络已激活</translation>
 <translation id="1195412055398077112">过扫描</translation>
-<translation id="1717216362413677834">基座模式</translation>
-<translation id="112308213915226829">自动隐藏底栏</translation>
+<translation id="112308213915226829">自动隐藏任务栏</translation>
+<translation id="7573962313813535744">停靠模式</translation>
 <translation id="8927026611342028580">连接请求已发送</translation>
 <translation id="8300849813060516376">OTASP 失败</translation>
 <translation id="2792498699870441125">Alt + 搜索键</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">电池电量为<ph name="PERCENTAGE"/>%(正在充电)。</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>:正在激活…</translation>
 <translation id="4895488851634969361">电池电量已满。</translation>
-<translation id="1391854757121130358">您可能已用尽移动数据配额。</translation>
 <translation id="5947494881799873997">还原</translation>
 <translation id="7593891976182323525">搜索键或 Shift</translation>
 <translation id="7649070708921625228">帮助</translation>
+<translation id="747833637904845037">连接到外部显示器后,即使合上盖子,您的 Chromebook 仍会保持开启状态。</translation>
 <translation id="3050422059534974565">CAPS LOCK 已开启。
 按搜索键或 Shift 可取消。</translation>
 <translation id="397105322502079400">正在计算...</translation>
 <translation id="158849752021629804">需要家庭网络</translation>
 <translation id="6857811139397017780">激活 <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP 查找失败</translation>
-<translation id="5812035014844949013">输出</translation>
 <translation id="6692173217867674490">密码错误</translation>
 <translation id="6165508094623778733">了解详情</translation>
 <translation id="9046895021617826162">连接失败</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">电池电量不足 (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">接受</translation>
 <translation id="5102001756192215136">可用时长:<ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">输出</translation>
 <translation id="520760366042891468">通过环聊共享您屏幕的控制权。</translation>
 <translation id="8000066093800657092">未连接任何网络</translation>
 <translation id="4015692727874266537">登录其他帐户…</translation>
 <translation id="5941711191222866238">最小化</translation>
 <translation id="6911468394164995108">连接其他...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>:<ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">恭喜!“<ph name="NAME"/>”数据服务已激活,您可以开始使用了。</translation>
 <translation id="412065659894267608">还需要 <ph name="HOUR"/> 小时 <ph name="MINUTE"/> 分钟才能充满电</translation>
 <translation id="6359806961507272919"><ph name="PHONE_NUMBER"/> 发来的短信</translation>
 <translation id="1244147615850840081">运营商</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index ac3d090..2de7ad8 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -14,6 +14,7 @@
 <translation id="3775358506042162758">多帳戶登入功能一次只能登入最多 3 個帳戶。</translation>
 <translation id="370649949373421643">啟用 Wi-Fi</translation>
 <translation id="3626281679859535460">亮度</translation>
+<translation id="3621202678540785336">輸入</translation>
 <translation id="595202126637698455">效能追蹤已啟用</translation>
 <translation id="8054466585765276473">正在計算電池使用時間。</translation>
 <translation id="7982789257301363584">網路</translation>
@@ -26,6 +27,7 @@
 <translation id="2297568595583585744">狀態匣</translation>
 <translation id="1661867754829461514">找不到 PIN</translation>
 <translation id="4508225577814909926"><ph name="NAME"/>:正在連線...</translation>
+<translation id="40400351611212369">網路啟用錯誤</translation>
 <translation id="4237016987259239829">網路連線錯誤</translation>
 <translation id="2946640296642327832">啟用藍牙</translation>
 <translation id="6459472438155181876">正在擴充 <ph name="DISPLAY_NAME"/> 畫面</translation>
@@ -44,6 +46,7 @@
 <translation id="4628814525959230255">透過 Hangouts 與 <ph name="HELPER_NAME"/> 分享螢幕控制權。</translation>
 <translation id="7864539943188674973">停用藍牙</translation>
 <translation id="939252827960237676">無法儲存螢幕擷取畫面</translation>
+<translation id="1969011864782743497"><ph name="DEVICE_NAME"/> (USB)</translation>
 <translation id="3126069444801937830">重新啟用即可更新</translation>
 <translation id="2268813581635650749">登出所有使用者</translation>
 <translation id="735745346212279324">已中斷 VPN 連線</translation>
@@ -53,7 +56,6 @@
 <translation id="8190698733819146287">自訂語言與輸入法...</translation>
 <translation id="1279938420744323401"><ph name="DISPLAY_NAME"/> (<ph name="ANNOTATION"/>)</translation>
 <translation id="2942516765047364088">檔案櫃位置</translation>
-<translation id="2903907270192926896">輸入</translation>
 <translation id="8676770494376880701">已連接低功率充電器</translation>
 <translation id="7170041865419449892">超出範圍</translation>
 <translation id="4804818685124855865">中斷連線</translation>
@@ -77,18 +79,23 @@
 按下 Shift + Alt 鍵即可切換。</translation>
 <translation id="2562916301614567480">私人網路</translation>
 <translation id="6549021752953852991">沒有可用的行動網路</translation>
+<translation id="2982222131142145681"><ph name="DEVICE_NAME"/> (HDMI)</translation>
 <translation id="4379753398862151997">Dear Monitor, it's not working out between us. (系統無法支援該顯示器)</translation>
 <translation id="6426039856985689743">停用行動數據</translation>
 <translation id="3087734570205094154">置底</translation>
 <translation id="3742055079367172538">已拍攝螢幕擷取畫面</translation>
 <translation id="8878886163241303700">延伸螢幕</translation>
 <translation id="5271016907025319479">尚未設定 VPN。</translation>
+<translation id="3105990244222795498"><ph name="DEVICE_NAME"/> (藍牙)</translation>
+<translation id="3967919079500697218">您的管理員已停用拍攝螢幕擷取畫面功能。</translation>
 <translation id="372094107052732682">按兩下 Ctrl+Shift+Q 鍵即可結束。</translation>
 <translation id="6803622936009808957">找不到系統支援的解析度,因此無法顯示鏡像。已改為進入延伸桌面。</translation>
 <translation id="1480041086352807611">示範模式</translation>
 <translation id="3626637461649818317">剩餘電量:<ph name="PERCENTAGE"/>%</translation>
 <translation id="9089416786594320554">輸入法</translation>
 <translation id="6247708409970142803"><ph name="PERCENTAGE"/>%</translation>
+<translation id="2670531586141364277">必須連上網路才能啟用「<ph name="NAME"/>」。</translation>
+<translation id="3963445509666917109">喇叭 (內部)</translation>
 <translation id="2825619548187458965">檔案櫃</translation>
 <translation id="2614835198358683673">您的 Chromebook 可能無法在開機時充電。建議您使用官方提供的充電器。</translation>
 <translation id="1895658205118569222">關閉</translation>
@@ -98,13 +105,13 @@
 <translation id="7874779702599364982">正在搜尋行動網路...</translation>
 <translation id="583281660410589416">不明</translation>
 <translation id="1383876407941801731">搜尋</translation>
-<translation id="7468789844759750875">造訪 <ph name="NAME"/> 啟用入口網站即可購買更多數據量。</translation>
 <translation id="3901991538546252627">正在連線至:<ph name="NAME"/></translation>
 <translation id="2204305834655267233">網路資訊</translation>
 <translation id="1621499497873603021">電池剩餘使用時間:<ph name="TIME_LEFT"/></translation>
 <translation id="5980301590375426705">結束訪客工作階段</translation>
 <translation id="8308637677604853869">前一個選單</translation>
 <translation id="4666297444214622512">無法登入其他帳戶。</translation>
+<translation id="3625258641415618104">已停用螢幕擷取畫面</translation>
 <translation id="1346748346194534595">向右</translation>
 <translation id="1773212559869067373">本機已拒絕驗證憑證</translation>
 <translation id="8528322925433439945">行動服務 ...</translation>
@@ -133,6 +140,7 @@
 <translation id="1512064327686280138">啟用失敗</translation>
 <translation id="5097002363526479830">無法連線至「<ph name="NAME"/>」:<ph name="DETAILS"/></translation>
 <translation id="1850504506766569011">Wi-Fi 已關閉。</translation>
+<translation id="2966449113954629791">您可能已用盡行動數據配額。造訪 <ph name="NAME"/> 啟用入口網站即可購買更多數據量。</translation>
 <translation id="8132793192354020517">已連線至 <ph name="NAME"/></translation>
 <translation id="7052914147756339792">設定桌布...</translation>
 <translation id="8678698760965522072">線上狀態</translation>
@@ -149,22 +157,26 @@
 <translation id="3157931365184549694">還原</translation>
 <translation id="4274292172790327596">不明錯誤</translation>
 <translation id="4032485810211612751"><ph name="HOURS"/>:<ph name="MINUTES"/>:<ph name="SECONDS"/></translation>
+<translation id="5977415296283489383">耳機</translation>
 <translation id="225680501294068881">正在掃描裝置...</translation>
 <translation id="5597451508971090205"><ph name="DATE"/><ph name="SHORT_WEEKDAY"/></translation>
+<translation id="737451040872859086">麥克風 (內部)</translation>
 <translation id="4448844063988177157">正在搜尋 Wi-Fi 網路...</translation>
 <translation id="8401662262483418323">無法連線至「<ph name="NAME"/>」:<ph name="DETAILS"/>
 伺服器訊息:<ph name="SERVER_MSG"/></translation>
 <translation id="2475982808118771221">發生錯誤</translation>
 <translation id="7229570126336867161">需要 EVDO</translation>
 <translation id="2999742336789313416"><ph name="DISPLAY_NAME"/> 是受 <ph name="DOMAIN"/> 管理的公開工作階段</translation>
+<translation id="9044646465488564462">無法連線至網路:<ph name="DETAILS"/></translation>
 <translation id="7029814467594812963">結束工作階段</translation>
 <translation id="8454013096329229812">Wi-Fi 已開啟。</translation>
 <translation id="4872237917498892622">Alt + 搜尋鍵或 Shift 鍵</translation>
 <translation id="9201131092683066720">電池電量為 <ph name="PERCENTAGE"/>%。</translation>
 <translation id="2983818520079887040">設定...</translation>
+<translation id="3871838685472846647">行動網路已啟用</translation>
 <translation id="1195412055398077112">遮視區域</translation>
-<translation id="1717216362413677834">座架模式</translation>
 <translation id="112308213915226829">自動隱藏檔案櫃</translation>
+<translation id="7573962313813535744">停駐模式</translation>
 <translation id="8927026611342028580">已要求連線</translation>
 <translation id="8300849813060516376">OTASP 失敗</translation>
 <translation id="2792498699870441125">Alt + 搜尋鍵</translation>
@@ -176,17 +188,16 @@
 <translation id="6785414152754474415">電池電量為 <ph name="PERCENTAGE"/>% (充電中)。</translation>
 <translation id="6267036997247669271"><ph name="NAME"/>:正在啟用...</translation>
 <translation id="4895488851634969361">電池電量已滿。</translation>
-<translation id="1391854757121130358">您可能已用盡行動數據配額。</translation>
 <translation id="5947494881799873997">還原</translation>
 <translation id="7593891976182323525">搜尋鍵或 Shift 鍵</translation>
 <translation id="7649070708921625228">說明</translation>
+<translation id="747833637904845037">連接外部顯示器之後,Chromebook 將會保持開啟 (即使將上蓋闔上)。</translation>
 <translation id="3050422059534974565">大寫鍵已啟用。
 按下搜尋鍵或 Shift 鍵即可取消。</translation>
 <translation id="397105322502079400">計算中…</translation>
 <translation id="158849752021629804">需要家用網路</translation>
 <translation id="6857811139397017780">啟用 <ph name="NETWORKSERVICE"/></translation>
 <translation id="5864471791310927901">DHCP 查閱失敗</translation>
-<translation id="5812035014844949013">輸出</translation>
 <translation id="6692173217867674490">通關密語有誤</translation>
 <translation id="6165508094623778733">瞭解詳情</translation>
 <translation id="9046895021617826162">連線失敗</translation>
@@ -202,12 +213,14 @@
 <translation id="8940956008527784070">電池電量不足 (<ph name="PERCENTAGE"/>%)</translation>
 <translation id="4918086044614829423">接受</translation>
 <translation id="5102001756192215136">電量剩餘時間:<ph name="HOUR"/>:<ph name="MINUTE"/></translation>
+<translation id="3009178788565917040">輸出</translation>
 <translation id="520760366042891468">透過 Hangouts 分享螢幕控制權。</translation>
 <translation id="8000066093800657092">沒有網路</translation>
 <translation id="4015692727874266537">使用其他帳戶登入...</translation>
 <translation id="5941711191222866238">縮到最小</translation>
 <translation id="6911468394164995108">加入其他網路...</translation>
 <translation id="3678715477168044796"><ph name="DISPLAY_NAME"/>:<ph name="ANNOTATION"/></translation>
+<translation id="2563856802393254086">恭喜您!您的「<ph name="NAME"/>」數據服務已啟用,隨時可供使用。</translation>
 <translation id="412065659894267608">尚需 <ph name="HOUR"/> 小時 <ph name="MINUTE"/> 分鐘才能充滿電</translation>
 <translation id="6359806961507272919">來自 <ph name="PHONE_NUMBER"/> 的簡訊</translation>
 <translation id="1244147615850840081">通訊業者</translation>
diff --git a/ash/system/chromeos/network/network_state_list_detailed_view.cc b/ash/system/chromeos/network/network_state_list_detailed_view.cc
index f79f515..ffd8ad5 100644
--- a/ash/system/chromeos/network/network_state_list_detailed_view.cc
+++ b/ash/system/chromeos/network/network_state_list_detailed_view.cc
@@ -56,9 +56,6 @@
 
 namespace {
 
-// Height of the list of networks in the popup.
-const int kNetworkListHeight = 203;
-
 // Delay between scan requests.
 const int kRequestScanDelaySeconds = 10;
 
diff --git a/ash/system/chromeos/power/power_status_view.cc b/ash/system/chromeos/power/power_status_view.cc
index 5323f5c..9cb2072 100644
--- a/ash/system/chromeos/power/power_status_view.cc
+++ b/ash/system/chromeos/power/power_status_view.cc
@@ -24,15 +24,8 @@
 namespace ash {
 namespace internal {
 
-namespace {
-
-// Top/bottom padding of the text items.
-const int kPaddingVertical = 10;
-// Specify min width of status label for layout.
-const int kLabelMinWidth = 120;
 // Padding between battery status text and battery icon on default view.
 const int kPaddingBetweenBatteryStatusAndIcon = 3;
-}  // namespace
 
 PowerStatusView::PowerStatusView(ViewType view_type,
                                  bool default_view_right_align)
diff --git a/ash/system/chromeos/power/tray_power.cc b/ash/system/chromeos/power/tray_power.cc
index b52f1dd..75ac669 100644
--- a/ash/system/chromeos/power/tray_power.cc
+++ b/ash/system/chromeos/power/tray_power.cc
@@ -36,10 +36,6 @@
 namespace internal {
 
 namespace {
-// Top/bottom padding of the text items.
-const int kPaddingVertical = 10;
-// Specify min width of status label for layout.
-const int kLabelMinWidth = 120;
 // Notification times.
 const int kCriticalSeconds = 5 * 60;
 const int kLowPowerSeconds = 15 * 60;
diff --git a/ash/system/chromeos/tray_display.cc b/ash/system/chromeos/tray_display.cc
index 9f7d593..9e1cdc9 100644
--- a/ash/system/chromeos/tray_display.cc
+++ b/ash/system/chromeos/tray_display.cc
@@ -162,9 +162,9 @@
         IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING_NO_INTERNAL);
   }
 
-  int64 first_id = display_manager->first_display_id();
+  int64 primary_id = Shell::GetScreen()->GetPrimaryDisplay().id();
   if (display_manager->HasInternalDisplay() &&
-      !display_manager->IsInternalDisplayId(first_id)) {
+      !display_manager->IsInternalDisplayId(primary_id)) {
     if (additional_message_out) {
       *additional_message_out = l10n_util::GetStringUTF16(
           IDS_ASH_STATUS_TRAY_DISPLAY_DOCKED_DESCRIPTION);
@@ -178,10 +178,10 @@
 void OpenSettings() {
   user::LoginStatus login_status =
       Shell::GetInstance()->system_tray_delegate()->GetUserLoginStatus();
-  if (login_status == ash::user::LOGGED_IN_USER ||
-      login_status == ash::user::LOGGED_IN_OWNER ||
-      login_status == ash::user::LOGGED_IN_GUEST) {
-    ash::Shell::GetInstance()->system_tray_delegate()->ShowDisplaySettings();
+  if (login_status == user::LOGGED_IN_USER ||
+      login_status == user::LOGGED_IN_OWNER ||
+      login_status == user::LOGGED_IN_GUEST) {
+    Shell::GetInstance()->system_tray_delegate()->ShowDisplaySettings();
   }
 }
 
@@ -189,17 +189,16 @@
 
 const char TrayDisplay::kNotificationId[] = "chrome://settings/display";
 
-class DisplayView : public ash::internal::ActionableView {
+class DisplayView : public internal::ActionableView {
  public:
   explicit DisplayView() {
     SetLayoutManager(new views::BoxLayout(
         views::BoxLayout::kHorizontal,
-        ash::kTrayPopupPaddingHorizontal, 0,
-        ash::kTrayPopupPaddingBetweenItems));
+        kTrayPopupPaddingHorizontal, 0,
+        kTrayPopupPaddingBetweenItems));
 
     ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
-    image_ =
-        new ash::internal::FixedSizedImageView(0, ash::kTrayPopupItemHeight);
+    image_ = new internal::FixedSizedImageView(0, kTrayPopupItemHeight);
     image_->SetImage(
         bundle.GetImageNamed(IDR_AURA_UBER_TRAY_DISPLAY).ToImageSkia());
     AddChildView(image_);
diff --git a/ash/system/date/tray_date.cc b/ash/system/date/tray_date.cc
index af23ebf..466cf50 100644
--- a/ash/system/date/tray_date.cc
+++ b/ash/system/date/tray_date.cc
@@ -81,6 +81,7 @@
     help_->SetTooltipText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_HELP));
     view->AddButton(help_);
 
+#if !defined(OS_WIN)
     if (login != ash::user::LOGGED_IN_LOCKED &&
         login != ash::user::LOGGED_IN_RETAIL_MODE) {
       shutdown_ = new ash::internal::TrayPopupHeaderButton(this,
@@ -105,6 +106,7 @@
           l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_LOCK));
       view->AddButton(lock_);
     }
+#endif  // !defined(OS_WIN)
   }
 
   virtual ~DateDefaultView() {}
diff --git a/ash/system/locale/locale_notification_controller.cc b/ash/system/locale/locale_notification_controller.cc
index ab6f691..7d66d5b 100644
--- a/ash/system/locale/locale_notification_controller.cc
+++ b/ash/system/locale/locale_notification_controller.cc
@@ -112,9 +112,9 @@
   scoped_ptr<Notification> notification(new Notification(
       message_center::NOTIFICATION_TYPE_SIMPLE,
       kLocaleChangeNotificationId,
+      base::string16()  /* title */,
       l10n_util::GetStringFUTF16(
           IDS_ASH_STATUS_TRAY_LOCALE_CHANGE_MESSAGE, from, to),
-      base::string16()  /* message */,
       bundle.GetImageNamed(IDR_AURA_UBER_TRAY_LOCALE),
       base::string16()  /* display_source */,
       message_center::NotifierId(system_notifier::NOTIFIER_LOCALE),
diff --git a/ash/system/tray_accessibility.cc b/ash/system/tray_accessibility.cc
index 933a567..6297d5c 100644
--- a/ash/system/tray_accessibility.cc
+++ b/ash/system/tray_accessibility.cc
@@ -29,7 +29,6 @@
 namespace internal {
 
 namespace {
-const int kPaddingAroundBottomRow = 5;
 
 enum AccessibilityState {
   A11Y_NONE             = 0,
diff --git a/ash/system/user/tray_user.cc b/ash/system/user/tray_user.cc
index 830f995..ba62612 100644
--- a/ash/system/user/tray_user.cc
+++ b/ash/system/user/tray_user.cc
@@ -70,7 +70,6 @@
 
 const int kUserDetailsVerticalPadding = 5;
 const int kUserCardVerticalPadding = 10;
-const int kInactiveUserCardVerticalPadding = 4;
 const int kProfileRoundedCornerRadius = 2;
 const int kUserIconSize = 27;
 const int kUserIconLargeSize = 32;
@@ -124,7 +123,7 @@
       ash::Shell::GetInstance()->session_state_delegate();
   ash::MultiProfileUMA::RecordSwitchActiveUser(
       ash::MultiProfileUMA::SWITCH_ACTIVE_USER_BY_TRAY);
-  delegate->SwitchActiveUser(delegate->GetUserEmail(user_index));
+  delegate->SwitchActiveUser(delegate->GetUserID(user_index));
 }
 
 }  // namespace
diff --git a/ash/system/user/tray_user_unittest.cc b/ash/system/user/tray_user_unittest.cc
index 5f4cbe1..f969344 100644
--- a/ash/system/user/tray_user_unittest.cc
+++ b/ash/system/user/tray_user_unittest.cc
@@ -229,10 +229,12 @@
   aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
   ShowTrayMenu(&generator);
 
-  // Switch to a new user.
+  // Switch to a new user - which has a capitalized name.
   ClickUserItem(&generator, 1);
-
-  EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserEmail(1));
+  EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(1));
+  // Since the name is capitalized, the email should be different then the
+  // user_id.
+  EXPECT_NE(delegate()->get_activated_user(), delegate()->GetUserEmail(1));
   tray()->CloseSystemBubble();
 }
 
@@ -285,7 +287,7 @@
 
   generator.MoveMouseTo(point.x(), point.y());
   generator.ClickLeftButton();
-  EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserEmail(2));
+  EXPECT_EQ(delegate()->get_activated_user(), delegate()->GetUserID(2));
 }
 
 #endif
diff --git a/ash/system/web_notification/web_notification_tray.cc b/ash/system/web_notification/web_notification_tray.cc
index ce8ad98..70e2b5b 100644
--- a/ash/system/web_notification/web_notification_tray.cc
+++ b/ash/system/web_notification/web_notification_tray.cc
@@ -59,7 +59,6 @@
 
 // Menu commands
 const int kToggleQuietMode = 0;
-const int kEnableQuietModeHour = 1;
 const int kEnableQuietModeDay = 2;
 
 }
diff --git a/ash/test/launcher_test_api.cc b/ash/test/launcher_test_api.cc
index e92625f..77724c7 100644
--- a/ash/test/launcher_test_api.cc
+++ b/ash/test/launcher_test_api.cc
@@ -16,8 +16,8 @@
 LauncherTestAPI::~LauncherTestAPI() {
 }
 
-internal::LauncherView* LauncherTestAPI::launcher_view() {
-  return launcher_->launcher_view_;
+internal::ShelfView* LauncherTestAPI::shelf_view() {
+  return launcher_->shelf_view_;
 }
 
 }  // namespace test
diff --git a/ash/test/launcher_test_api.h b/ash/test/launcher_test_api.h
index 57424af..ea6b613 100644
--- a/ash/test/launcher_test_api.h
+++ b/ash/test/launcher_test_api.h
@@ -12,7 +12,7 @@
 class Launcher;
 
 namespace internal {
-class LauncherView;
+class ShelfView;
 }
 
 namespace test {
@@ -24,8 +24,8 @@
 
   ~LauncherTestAPI();
 
-  // An accessor for |launcher_view|.
-  internal::LauncherView* launcher_view();
+  // An accessor for |shelf_view|.
+  internal::ShelfView* shelf_view();
 
  private:
   Launcher* launcher_;
@@ -36,4 +36,4 @@
 }  // namespace test
 }  // namespace ash
 
-#endif  // ASH_TEST_LAUNCHER_VIEW_TEST_API_H_
+#endif  // ASH_TEST_LAUNCHER_TEST_API_H_
diff --git a/ash/test/launcher_view_test_api.cc b/ash/test/launcher_view_test_api.cc
deleted file mode 100644
index fa1be56..0000000
--- a/ash/test/launcher_view_test_api.cc
+++ /dev/null
@@ -1,104 +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 "ash/test/launcher_view_test_api.h"
-
-#include "ash/launcher/launcher_button.h"
-#include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
-#include "ash/shelf/overflow_button.h"
-#include "base/message_loop/message_loop.h"
-#include "ui/views/animation/bounds_animator.h"
-#include "ui/views/view_model.h"
-
-namespace {
-
-// A class used to wait for animations.
-class TestAPIAnimationObserver : public views::BoundsAnimatorObserver {
- public:
-  TestAPIAnimationObserver() {}
-  virtual ~TestAPIAnimationObserver() {}
-
-  // views::BoundsAnimatorObserver overrides:
-  virtual void OnBoundsAnimatorProgressed(
-      views::BoundsAnimator* animator) OVERRIDE {}
-  virtual void OnBoundsAnimatorDone(views::BoundsAnimator* animator) OVERRIDE {
-    base::MessageLoop::current()->Quit();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(TestAPIAnimationObserver);
-};
-
-}  // namespace
-
-namespace ash {
-namespace test {
-
-LauncherViewTestAPI::LauncherViewTestAPI(internal::LauncherView* launcher_view)
-    : launcher_view_(launcher_view) {
-}
-
-LauncherViewTestAPI::~LauncherViewTestAPI() {
-}
-
-int LauncherViewTestAPI::GetButtonCount() {
-  return launcher_view_->view_model_->view_size();
-}
-
-internal::LauncherButton* LauncherViewTestAPI::GetButton(int index) {
-  // App list button is not a LauncherButton.
-  if (launcher_view_->model_->items()[index].type == ash::TYPE_APP_LIST)
-    return NULL;
-
-  return static_cast<internal::LauncherButton*>(
-      launcher_view_->view_model_->view_at(index));
-}
-
-int LauncherViewTestAPI::GetLastVisibleIndex() {
-  return launcher_view_->last_visible_index_;
-}
-
-bool LauncherViewTestAPI::IsOverflowButtonVisible() {
-  return launcher_view_->overflow_button_->visible();
-}
-
-void LauncherViewTestAPI::ShowOverflowBubble() {
-  if (!launcher_view_->IsShowingOverflowBubble())
-    launcher_view_->ToggleOverflowBubble();
-}
-
-const gfx::Rect& LauncherViewTestAPI::GetBoundsByIndex(int index) {
-  return launcher_view_->view_model_->view_at(index)->bounds();
-}
-
-const gfx::Rect& LauncherViewTestAPI::GetIdealBoundsByIndex(int index) {
-  return launcher_view_->view_model_->ideal_bounds(index);
-}
-
-void LauncherViewTestAPI::SetAnimationDuration(int duration_ms) {
-  launcher_view_->bounds_animator_->SetAnimationDuration(duration_ms);
-}
-
-void LauncherViewTestAPI::RunMessageLoopUntilAnimationsDone() {
-  if (!launcher_view_->bounds_animator_->IsAnimating())
-    return;
-
-  scoped_ptr<TestAPIAnimationObserver> observer(new TestAPIAnimationObserver());
-  launcher_view_->bounds_animator_->AddObserver(observer.get());
-
-  // This nested loop will quit when TestAPIAnimationObserver's
-  // OnBoundsAnimatorDone is called.
-  base::MessageLoop::current()->Run();
-
-  launcher_view_->bounds_animator_->RemoveObserver(observer.get());
-}
-
-bool LauncherViewTestAPI::SameDragType(LauncherItemType typea,
-                                       LauncherItemType typeb) const {
-  return launcher_view_->SameDragType(typea, typeb);
-}
-
-}  // namespace test
-}  // namespace ash
diff --git a/ash/test/shelf_view_test_api.cc b/ash/test/shelf_view_test_api.cc
new file mode 100644
index 0000000..a234e37
--- /dev/null
+++ b/ash/test/shelf_view_test_api.cc
@@ -0,0 +1,104 @@
+// 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 "ash/test/shelf_view_test_api.h"
+
+#include "ash/launcher/launcher_button.h"
+#include "ash/launcher/launcher_model.h"
+#include "ash/shelf/overflow_button.h"
+#include "ash/shelf/shelf_view.h"
+#include "base/message_loop/message_loop.h"
+#include "ui/views/animation/bounds_animator.h"
+#include "ui/views/view_model.h"
+
+namespace {
+
+// A class used to wait for animations.
+class TestAPIAnimationObserver : public views::BoundsAnimatorObserver {
+ public:
+  TestAPIAnimationObserver() {}
+  virtual ~TestAPIAnimationObserver() {}
+
+  // views::BoundsAnimatorObserver overrides:
+  virtual void OnBoundsAnimatorProgressed(
+      views::BoundsAnimator* animator) OVERRIDE {}
+  virtual void OnBoundsAnimatorDone(views::BoundsAnimator* animator) OVERRIDE {
+    base::MessageLoop::current()->Quit();
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(TestAPIAnimationObserver);
+};
+
+}  // namespace
+
+namespace ash {
+namespace test {
+
+ShelfViewTestAPI::ShelfViewTestAPI(internal::ShelfView* shelf_view)
+    : shelf_view_(shelf_view) {
+}
+
+ShelfViewTestAPI::~ShelfViewTestAPI() {
+}
+
+int ShelfViewTestAPI::GetButtonCount() {
+  return shelf_view_->view_model_->view_size();
+}
+
+internal::LauncherButton* ShelfViewTestAPI::GetButton(int index) {
+  // App list button is not a LauncherButton.
+  if (shelf_view_->model_->items()[index].type == ash::TYPE_APP_LIST)
+    return NULL;
+
+  return static_cast<internal::LauncherButton*>(
+      shelf_view_->view_model_->view_at(index));
+}
+
+int ShelfViewTestAPI::GetLastVisibleIndex() {
+  return shelf_view_->last_visible_index_;
+}
+
+bool ShelfViewTestAPI::IsOverflowButtonVisible() {
+  return shelf_view_->overflow_button_->visible();
+}
+
+void ShelfViewTestAPI::ShowOverflowBubble() {
+  if (!shelf_view_->IsShowingOverflowBubble())
+    shelf_view_->ToggleOverflowBubble();
+}
+
+const gfx::Rect& ShelfViewTestAPI::GetBoundsByIndex(int index) {
+  return shelf_view_->view_model_->view_at(index)->bounds();
+}
+
+const gfx::Rect& ShelfViewTestAPI::GetIdealBoundsByIndex(int index) {
+  return shelf_view_->view_model_->ideal_bounds(index);
+}
+
+void ShelfViewTestAPI::SetAnimationDuration(int duration_ms) {
+  shelf_view_->bounds_animator_->SetAnimationDuration(duration_ms);
+}
+
+void ShelfViewTestAPI::RunMessageLoopUntilAnimationsDone() {
+  if (!shelf_view_->bounds_animator_->IsAnimating())
+    return;
+
+  scoped_ptr<TestAPIAnimationObserver> observer(new TestAPIAnimationObserver());
+  shelf_view_->bounds_animator_->AddObserver(observer.get());
+
+  // This nested loop will quit when TestAPIAnimationObserver's
+  // OnBoundsAnimatorDone is called.
+  base::MessageLoop::current()->Run();
+
+  shelf_view_->bounds_animator_->RemoveObserver(observer.get());
+}
+
+bool ShelfViewTestAPI::SameDragType(LauncherItemType typea,
+                                    LauncherItemType typeb) const {
+  return shelf_view_->SameDragType(typea, typeb);
+}
+
+}  // namespace test
+}  // namespace ash
diff --git a/ash/test/launcher_view_test_api.h b/ash/test/shelf_view_test_api.h
similarity index 65%
rename from ash/test/launcher_view_test_api.h
rename to ash/test/shelf_view_test_api.h
index 0162f7f..d8920ac 100644
--- a/ash/test/launcher_view_test_api.h
+++ b/ash/test/shelf_view_test_api.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 ASH_TEST_LAUNCHER_VIEW_TEST_API_H_
-#define ASH_TEST_LAUNCHER_VIEW_TEST_API_H_
+#ifndef ASH_TEST_SHELF_VIEW_TEST_API_H_
+#define ASH_TEST_SHELF_VIEW_TEST_API_H_
 
 #include "ash/launcher/launcher_types.h"
 #include "base/basictypes.h"
@@ -16,16 +16,16 @@
 
 namespace internal {
 class LauncherButton;
-class LauncherView;
+class ShelfView;
 }
 
 namespace test {
 
-// Use the api in this class to test LauncherView.
-class LauncherViewTestAPI {
+// Use the api in this class to test ShelfView.
+class ShelfViewTestAPI {
  public:
-  explicit LauncherViewTestAPI(internal::LauncherView* launcher_view);
-  ~LauncherViewTestAPI();
+  explicit ShelfViewTestAPI(internal::ShelfView* shelf_view);
+  ~ShelfViewTestAPI();
 
   // Number of icons displayed.
   int GetButtonCount();
@@ -43,7 +43,7 @@
   // Returns true if overflow button is visible.
   bool IsOverflowButtonVisible();
 
-  // Makes launcher view show its overflow bubble.
+  // Makes shelf view show its overflow bubble.
   void ShowOverflowBubble();
 
   // Sets animation duration in milliseconds for test.
@@ -52,19 +52,19 @@
   // Runs message loop and waits until all add/remove animations are done.
   void RunMessageLoopUntilAnimationsDone();
 
-  // An accessor for |launcher_view|.
-  internal::LauncherView* launcher_view() { return launcher_view_; }
+  // An accessor for |shelf_view|.
+  internal::ShelfView* shelf_view() { return shelf_view_; }
 
-  // Wrapper for LauncherView::SameDragType.
+  // Wrapper for ShelfView::SameDragType.
   bool SameDragType(LauncherItemType typea, LauncherItemType typeb) const;
 
  private:
-  internal::LauncherView* launcher_view_;
+  internal::ShelfView* shelf_view_;
 
-  DISALLOW_COPY_AND_ASSIGN(LauncherViewTestAPI);
+  DISALLOW_COPY_AND_ASSIGN(ShelfViewTestAPI);
 };
 
 }  // namespace test
 }  // namespace ash
 
-#endif  // ASH_TEST_LAUNCHER_VIEW_TEST_API_H_
+#endif  // ASH_TEST_SHELF_VIEW_TEST_API_H_
diff --git a/ash/test/test_session_state_delegate.cc b/ash/test/test_session_state_delegate.cc
index abed8e6..e18f7d1 100644
--- a/ash/test/test_session_state_delegate.cc
+++ b/ash/test/test_session_state_delegate.cc
@@ -4,10 +4,25 @@
 
 #include "ash/test/test_session_state_delegate.h"
 
+#include <algorithm>
+#include <string>
+
 #include "ash/shell.h"
 #include "ash/system/user/login_status.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// The the "canonicalized" user ID from a given |email| address.
+std::string GetUserIDFromEmail(const std::string& email) {
+  std::string user_id = email;
+  std::transform(user_id.begin(), user_id.end(), user_id.begin(), ::tolower);
+  return user_id;
+}
+
+}  // namespace
 
 namespace ash {
 namespace test {
@@ -99,13 +114,18 @@
 const std::string TestSessionStateDelegate::GetUserEmail(
     MultiProfileIndex index) const {
   switch (index) {
-    case 0: return "first@tray";
-    case 1: return "second@tray";
+    case 0: return "First@tray";  // This is intended to be capitalized.
+    case 1: return "Second@tray";  // This is intended to be capitalized.
     case 2: return "third@tray";
     default: return "someone@tray";
   }
 }
 
+const std::string TestSessionStateDelegate::GetUserID(
+    MultiProfileIndex index) const {
+  return GetUserIDFromEmail(GetUserEmail(index));
+}
+
 const gfx::ImageSkia& TestSessionStateDelegate::GetUserImage(
     MultiProfileIndex index) const {
   return null_image_;
@@ -114,8 +134,10 @@
 void TestSessionStateDelegate::GetLoggedInUsers(UserIdList* users) {
 }
 
-void TestSessionStateDelegate::SwitchActiveUser(const std::string& email) {
-  activated_user_ = email;
+void TestSessionStateDelegate::SwitchActiveUser(const std::string& user_id) {
+  // Make sure this is a user id and not an email address.
+  EXPECT_EQ(user_id, GetUserIDFromEmail(user_id));
+  activated_user_ = user_id;
 }
 
 void TestSessionStateDelegate::SwitchActiveUserToNext() {
diff --git a/ash/test/test_session_state_delegate.h b/ash/test/test_session_state_delegate.h
index 585521c..105c0b1 100644
--- a/ash/test/test_session_state_delegate.h
+++ b/ash/test/test_session_state_delegate.h
@@ -35,10 +35,12 @@
       ash::MultiProfileIndex index) const OVERRIDE;
   virtual const std::string GetUserEmail(
       ash::MultiProfileIndex index) const OVERRIDE;
+  virtual const std::string GetUserID(
+      ash::MultiProfileIndex index) const OVERRIDE;
   virtual const gfx::ImageSkia& GetUserImage(
       ash::MultiProfileIndex index) const OVERRIDE;
   virtual void GetLoggedInUsers(UserIdList* users) OVERRIDE;
-  virtual void SwitchActiveUser(const std::string& email) OVERRIDE;
+  virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE;
   virtual void SwitchActiveUserToNext() OVERRIDE;
   virtual void AddSessionStateObserver(
       ash::SessionStateObserver* observer) OVERRIDE;
diff --git a/ash/test/test_shell_delegate.cc b/ash/test/test_shell_delegate.cc
index f22847a..8dfff8e 100644
--- a/ash/test/test_shell_delegate.cc
+++ b/ash/test/test_shell_delegate.cc
@@ -68,12 +68,6 @@
 void TestShellDelegate::NewWindow(bool incognito) {
 }
 
-void TestShellDelegate::ToggleMaximized() {
-  wm::WindowState* window_state = wm::GetActiveWindowState();
-  if (window_state)
-    window_state->ToggleMaximized();
-}
-
 void TestShellDelegate::ToggleFullscreen() {
 }
 
diff --git a/ash/test/test_shell_delegate.h b/ash/test/test_shell_delegate.h
index 1b6bb9e..c4c8332 100644
--- a/ash/test/test_shell_delegate.h
+++ b/ash/test/test_shell_delegate.h
@@ -39,7 +39,6 @@
   virtual void NewTab() OVERRIDE;
   virtual void NewWindow(bool incognito) OVERRIDE;
   virtual void ToggleFullscreen() OVERRIDE;
-  virtual void ToggleMaximized() OVERRIDE;
   virtual void OpenFileManager() OVERRIDE;
   virtual void OpenCrosh() OVERRIDE;
   virtual void RestoreTab() OVERRIDE;
diff --git a/ash/wm/app_list_controller.h b/ash/wm/app_list_controller.h
index 3475697..f47c7a4 100644
--- a/ash/wm/app_list_controller.h
+++ b/ash/wm/app_list_controller.h
@@ -66,6 +66,9 @@
   // Returns app list window or NULL if it is not visible.
   aura::Window* GetWindow();
 
+  // Returns app list view or NULL if it is not visible.
+  app_list::AppListView* GetView() { return view_; }
+
  private:
   friend class test::AppListControllerTestApi;
 
diff --git a/ash/wm/custom_frame_view_ash.cc b/ash/wm/custom_frame_view_ash.cc
index a606f01..f03026c 100644
--- a/ash/wm/custom_frame_view_ash.cc
+++ b/ash/wm/custom_frame_view_ash.cc
@@ -5,12 +5,11 @@
 #include "ash/wm/custom_frame_view_ash.h"
 
 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h"
-#include "ash/wm/frame_painter.h"
+#include "ash/wm/frame_border_hit_test_controller.h"
+#include "ash/wm/header_painter.h"
 #include "grit/ash_resources.h"
-#include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/font.h"
-#include "ui/gfx/image/image.h"
 #include "ui/gfx/rect.h"
 #include "ui/gfx/size.h"
 #include "ui/views/widget/native_widget_aura.h"
@@ -35,18 +34,12 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // CustomFrameViewAsh, public:
-CustomFrameViewAsh::CustomFrameViewAsh()
-    : frame_(NULL),
+CustomFrameViewAsh::CustomFrameViewAsh(views::Widget* frame)
+    : frame_(frame),
       caption_button_container_(NULL),
-      frame_painter_(new ash::FramePainter) {
-}
-
-CustomFrameViewAsh::~CustomFrameViewAsh() {
-}
-
-void CustomFrameViewAsh::Init(views::Widget* frame) {
-  frame_ = frame;
-
+      header_painter_(new ash::HeaderPainter),
+      frame_border_hit_test_controller_(
+          new FrameBorderHitTestController(frame_)) {
   // Unfortunately, there is no views::WidgetDelegate::CanMinimize(). Assume
   // that the window frame can be minimized if it can be maximized.
   FrameCaptionButtonContainerView::MinimizeAllowed minimize_allowed =
@@ -57,26 +50,29 @@
       minimize_allowed);
   AddChildView(caption_button_container_);
 
-  frame_painter_->Init(frame_, NULL, caption_button_container_);
+  header_painter_->Init(frame_, this, NULL, caption_button_container_);
+}
+
+CustomFrameViewAsh::~CustomFrameViewAsh() {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // CustomFrameViewAsh, views::NonClientFrameView overrides:
 gfx::Rect CustomFrameViewAsh::GetBoundsForClientView() const {
   int top_height = NonClientTopBorderHeight();
-  return frame_painter_->GetBoundsForClientView(top_height,
-                                                bounds());
+  return HeaderPainter::GetBoundsForClientView(top_height, bounds());
 }
 
 gfx::Rect CustomFrameViewAsh::GetWindowBoundsForClientBounds(
     const gfx::Rect& client_bounds) const {
   int top_height = NonClientTopBorderHeight();
-  return frame_painter_->GetWindowBoundsForClientBounds(top_height,
-                                                        client_bounds);
+  return HeaderPainter::GetWindowBoundsForClientBounds(top_height,
+                                                       client_bounds);
 }
 
 int CustomFrameViewAsh::NonClientHitTest(const gfx::Point& point) {
-  return frame_painter_->NonClientHitTest(this, point);
+  return FrameBorderHitTestController::NonClientHitTest(this,
+      header_painter_.get(), point);
 }
 
 void CustomFrameViewAsh::GetWindowMask(const gfx::Size& size,
@@ -92,7 +88,7 @@
 }
 
 void CustomFrameViewAsh::UpdateWindowTitle() {
-  frame_painter_->SchedulePaintForTitle(GetTitleFont());
+  header_painter_->SchedulePaintForTitle(GetTitleFont());
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -107,7 +103,8 @@
 
 void CustomFrameViewAsh::Layout() {
   // Use the shorter maximized layout headers.
-  frame_painter_->LayoutHeader(this, true);
+  header_painter_->LayoutHeader(true);
+  header_painter_->set_header_height(NonClientTopBorderHeight());
 }
 
 void CustomFrameViewAsh::OnPaint(gfx::Canvas* canvas) {
@@ -121,21 +118,20 @@
 
   bool paint_as_active = ShouldPaintAsActive();
   int theme_image_id = 0;
-  if (frame_painter_->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_NO))
+  if (header_painter_->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_NO))
     theme_image_id = IDR_AURA_WINDOW_HEADER_BASE_MINIMAL;
   else if (paint_as_active)
     theme_image_id = IDR_AURA_WINDOW_HEADER_BASE_ACTIVE;
   else
     theme_image_id = IDR_AURA_WINDOW_HEADER_BASE_INACTIVE;
 
-  frame_painter_->PaintHeader(
-      this,
+  header_painter_->PaintHeader(
       canvas,
-      paint_as_active ? FramePainter::ACTIVE : FramePainter::INACTIVE,
+      paint_as_active ? HeaderPainter::ACTIVE : HeaderPainter::INACTIVE,
       theme_image_id,
       0);
-  frame_painter_->PaintTitleBar(this, canvas, GetTitleFont());
-  frame_painter_->PaintHeaderContentSeparator(this, canvas);
+  header_painter_->PaintTitleBar(canvas, GetTitleFont());
+  header_painter_->PaintHeaderContentSeparator(canvas);
   canvas->Restore();
 }
 
@@ -144,11 +140,15 @@
 }
 
 gfx::Size CustomFrameViewAsh::GetMinimumSize() {
-  return frame_painter_->GetMinimumSize(this);
+  gfx::Size min_client_view_size(frame_->client_view()->GetMinimumSize());
+  return gfx::Size(
+      std::max(header_painter_->GetMinimumHeaderWidth(),
+               min_client_view_size.width()),
+      NonClientTopBorderHeight() + min_client_view_size.height());
 }
 
 gfx::Size CustomFrameViewAsh::GetMaximumSize() {
-  return frame_painter_->GetMaximumSize(this);
+  return frame_->client_view()->GetMaximumSize();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -161,7 +161,7 @@
   // Reserve enough space to see the buttons, including any offset from top and
   // reserving space for the separator line.
   return caption_button_container_->bounds().bottom() +
-      frame_painter_->HeaderContentSeparatorSize();
+      header_painter_->HeaderContentSeparatorSize();
 }
 
 }  // namespace ash
diff --git a/ash/wm/custom_frame_view_ash.h b/ash/wm/custom_frame_view_ash.h
index 8628e25..9593abb 100644
--- a/ash/wm/custom_frame_view_ash.h
+++ b/ash/wm/custom_frame_view_ash.h
@@ -7,17 +7,16 @@
 
 #include "ash/ash_export.h"
 #include "base/memory/scoped_ptr.h"
-#include "ui/views/controls/button/button.h"  // ButtonListener
 #include "ui/views/window/non_client_view.h"
 
 namespace ash {
-class FramePainter;
+class FrameBorderHitTestController;
+class HeaderPainter;
 }
 namespace gfx {
 class Font;
 }
 namespace views {
-class ImageButton;
 class Widget;
 }
 
@@ -25,10 +24,6 @@
 
 class FrameCaptionButtonContainerView;
 
-namespace test {
-class CustomFrameViewAshTest;
-}
-
 // A NonClientFrameView used for dialogs and other non-browser windows.
 // See also views::CustomFrameView and BrowserNonClientFrameViewAsh.
 class ASH_EXPORT CustomFrameViewAsh : public views::NonClientFrameView {
@@ -36,11 +31,9 @@
   // Internal class name.
   static const char kViewClassName[];
 
-  CustomFrameViewAsh();
+  explicit CustomFrameViewAsh(views::Widget* frame);
   virtual ~CustomFrameViewAsh();
 
-  void Init(views::Widget* frame);
-
   // views::NonClientFrameView overrides:
   virtual gfx::Rect GetBoundsForClientView() const OVERRIDE;
   virtual gfx::Rect GetWindowBoundsForClientBounds(
@@ -70,7 +63,11 @@
   // View which contains the window controls.
   FrameCaptionButtonContainerView* caption_button_container_;
 
-  scoped_ptr<FramePainter> frame_painter_;
+  // Helper class for painting the header.
+  scoped_ptr<HeaderPainter> header_painter_;
+
+  // Updates the hittest bounds overrides based on the window show type.
+  scoped_ptr<FrameBorderHitTestController> frame_border_hit_test_controller_;
 
   DISALLOW_COPY_AND_ASSIGN(CustomFrameViewAsh);
 };
diff --git a/ash/wm/dock/docked_window_layout_manager.cc b/ash/wm/dock/docked_window_layout_manager.cc
index e878608..e30a94b 100644
--- a/ash/wm/dock/docked_window_layout_manager.cc
+++ b/ash/wm/dock/docked_window_layout_manager.cc
@@ -22,7 +22,7 @@
 #include "base/command_line.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/aura/client/activation_client.h"
-#include "ui/aura/focus_manager.h"
+#include "ui/aura/client/focus_client.h"
 #include "ui/aura/root_window.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_delegate.h"
@@ -39,10 +39,9 @@
 const int DockedWindowLayoutManager::kMinDockWidth = 200;
 // static
 const int DockedWindowLayoutManager::kMinDockGap = 2;
-//static
+// static
 const int DockedWindowLayoutManager::kIdealWidth = 250;
-//static
-const int kMaxVisibleWindows = 2;
+const int kMinimumHeight = 250;
 const int kSlideDurationMs = 120;
 const int kFadeDurationMs = 720;
 
@@ -104,6 +103,79 @@
           !IsPopupOrTransient(window));
 }
 
+void UndockWindow(aura::Window* window) {
+  aura::Window* focused =
+      aura::client::GetFocusClient(window)->GetFocusedWindow();
+  bool had_focus = window == focused || window->Contains(focused);
+  window->Hide();
+  window->layer()->GetAnimator()->StopAnimating();
+  gfx::Rect previous_bounds = window->bounds();
+  aura::Window* previous_parent = window->parent();
+  window->SetDefaultParentByRootWindow(window->GetRootWindow(), gfx::Rect());
+  if (window->parent() != previous_parent)
+    wm::ReparentTransientChildrenOfChild(window->parent(), window);
+  // Animate maximize animation from previous window bounds.
+  if (wm::GetWindowState(window)->IsMaximized())
+    window->layer()->SetBounds(previous_bounds);
+  window->Show();
+  // Restore focus if the window had it before.
+  if (had_focus && !wm::GetWindowState(window)->IsFullscreen())
+    focused->Focus();
+}
+
+// Returns width that is as close as possible to |target_width| while being
+// consistent with docked min and max restrictions and respects the |window|'s
+// minimum and maximum size.
+int GetWindowWidthCloseTo(const aura::Window* window, int target_width) {
+  if (!wm::GetWindowState(window)->CanResize()) {
+    DCHECK_LE(window->bounds().width(),
+              DockedWindowLayoutManager::kMaxDockWidth);
+    return window->bounds().width();
+  }
+  int width = std::max(DockedWindowLayoutManager::kMinDockWidth,
+                       std::min(target_width,
+                                DockedWindowLayoutManager::kMaxDockWidth));
+  if (window->delegate()) {
+    if (window->delegate()->GetMinimumSize().width() != 0)
+      width = std::max(width, window->delegate()->GetMinimumSize().width());
+    if (window->delegate()->GetMaximumSize().width() != 0)
+      width = std::min(width, window->delegate()->GetMaximumSize().width());
+  }
+  DCHECK_LE(width, DockedWindowLayoutManager::kMaxDockWidth);
+  return width;
+}
+
+// Returns height that is as close as possible to |target_height| while
+// respecting the |window|'s minimum and maximum size.
+int GetWindowHeightCloseTo(const aura::Window* window, int target_height) {
+  if (!wm::GetWindowState(window)->CanResize())
+    return window->bounds().height();
+  int minimum_height = kMinimumHeight;
+  int maximum_height = 0;
+  const aura::WindowDelegate* delegate(window->delegate());
+  if (delegate) {
+    if (delegate->GetMinimumSize().height() != 0) {
+      minimum_height = std::max(kMinimumHeight,
+                                delegate->GetMinimumSize().height());
+    }
+    if (delegate->GetMaximumSize().height() != 0)
+      maximum_height = delegate->GetMaximumSize().height();
+  }
+  if (minimum_height)
+    target_height = std::max(target_height, minimum_height);
+  if (maximum_height)
+    target_height = std::min(target_height, maximum_height);
+  return target_height;
+}
+
+// A functor used to sort the windows in order of their minimum height.
+struct CompareMinimumHeight {
+  bool operator()(WindowWithHeight win1, WindowWithHeight win2) {
+    return GetWindowHeightCloseTo(win1.window(), 0) <
+        GetWindowHeightCloseTo(win2.window(), 0);
+  }
+};
+
 // A functor used to sort the windows in order of their center Y position.
 // |delta| is a pre-calculated distance from the bottom of one window to the top
 // of the next. Its value can be positive (gap) or negative (overlap).
@@ -114,13 +186,18 @@
       : dragged_window_(dragged_window),
         delta_(delta / 2) {}
 
-  bool operator()(aura::Window* win1, aura::Window* win2) {
+  bool operator()(WindowWithHeight window_with_height1,
+                  WindowWithHeight window_with_height2) {
     // Use target coordinates since animations may be active when windows are
     // reordered.
-    const gfx::Rect win1_bounds = ScreenAsh::ConvertRectToScreen(
+    aura::Window* win1(window_with_height1.window());
+    aura::Window* win2(window_with_height2.window());
+    gfx::Rect win1_bounds = ScreenAsh::ConvertRectToScreen(
         win1->parent(), win1->GetTargetBounds());
-    const gfx::Rect win2_bounds = ScreenAsh::ConvertRectToScreen(
+    gfx::Rect win2_bounds = ScreenAsh::ConvertRectToScreen(
         win2->parent(), win2->GetTargetBounds());
+    win1_bounds.set_height(window_with_height1.height_);
+    win2_bounds.set_height(window_with_height2.height_);
     // If one of the windows is the |dragged_window_| attempt to make an
     // earlier swap between the windows than just based on their centers.
     // This is possible if the dragged window is at least as tall as the other
@@ -177,7 +254,6 @@
       in_fullscreen_(workspace_controller_->GetWindowState() ==
           WORKSPACE_WINDOW_STATE_FULL_SCREEN),
       docked_width_(0),
-      max_visible_windows_(kMaxVisibleWindows),
       alignment_(DOCKED_ALIGNMENT_NONE),
       last_active_window_(NULL),
       background_widget_(new DockedBackgroundWidget(dock_container_)) {
@@ -229,13 +305,13 @@
 
 void DockedWindowLayoutManager::DockDraggedWindow(aura::Window* window) {
   DCHECK(!IsPopupOrTransient(window));
-  OnWindowDocked(window);
+  OnDraggedWindowDocked(window);
   Relayout();
 }
 
 void DockedWindowLayoutManager::UndockDraggedWindow() {
   DCHECK(!IsPopupOrTransient(dragged_window_));
-  OnWindowUndocked();
+  OnDraggedWindowUndocked();
   Relayout();
   UpdateDockBounds(DockedWindowLayoutManagerObserver::CHILD_CHANGED);
   is_dragged_from_dock_ = false;
@@ -245,7 +321,7 @@
   DCHECK(dragged_window_);
   DCHECK(!IsPopupOrTransient(dragged_window_));
   if (is_dragged_window_docked_)
-    OnWindowUndocked();
+    OnDraggedWindowUndocked();
   DCHECK (!is_dragged_window_docked_);
   // Stop observing a window unless it is docked container's child in which
   // case it needs to keep being observed after the drag completes.
@@ -321,6 +397,9 @@
     return false;
   // If a window is wide and cannot be resized down to maximum width allowed
   // then it cannot be docked.
+  // TODO(varkha). Prevent windows from changing size programmatically while
+  // they are docked. The size will take effect only once a window is undocked.
+  // See http://crbug.com/307792.
   if (window->bounds().width() > kMaxDockWidth &&
       (!wm::GetWindowState(window)->CanResize() ||
        (window->delegate() &&
@@ -328,6 +407,14 @@
         window->delegate()->GetMinimumSize().width() > kMaxDockWidth))) {
     return false;
   }
+  // If a window is tall and cannot be resized down to maximum height allowed
+  // then it cannot be docked.
+  const gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(dock_container_).work_area();
+  if (GetWindowHeightCloseTo(window, work_area.height() - 2 * kMinDockGap) >
+      work_area.height() - 2 * kMinDockGap) {
+    return false;
+  }
   // Cannot dock on the other size from an existing dock.
   const DockedAlignment alignment = CalculateAlignment();
   if ((edge == SNAP_LEFT && alignment == DOCKED_ALIGNMENT_RIGHT) ||
@@ -348,6 +435,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // DockLayoutManager, aura::LayoutManager implementation:
 void DockedWindowLayoutManager::OnWindowResized() {
+  MaybeMinimizeChildrenExcept(dragged_window_);
   Relayout();
   // When screen resizes update the insets even when dock width or alignment
   // does not change.
@@ -417,6 +505,7 @@
 void DockedWindowLayoutManager::OnDisplayWorkAreaInsetsChanged() {
   Relayout();
   UpdateDockBounds(DockedWindowLayoutManagerObserver::DISPLAY_INSETS_CHANGED);
+  MaybeMinimizeChildrenExcept(dragged_window_);
 }
 
 void DockedWindowLayoutManager::OnFullscreenStateChanged(
@@ -429,9 +518,11 @@
   {
     // prevent Relayout from getting called multiple times during this
     base::AutoReset<bool> auto_reset_in_layout(&in_layout_, true);
-    for (aura::Window::Windows::const_iterator iter =
-             dock_container_->children().begin();
-         iter != dock_container_->children().end(); ++iter) {
+    // Use a copy of children array because a call to MinimizeDockedWindow or
+    // RestoreDockedWindow can change order.
+    aura::Window::Windows children(dock_container_->children());
+    for (aura::Window::Windows::const_iterator iter = children.begin();
+         iter != children.end(); ++iter) {
       aura::Window* window(*iter);
       if (IsPopupOrTransient(window))
         continue;
@@ -492,18 +583,7 @@
   } else if (window_state->IsMaximizedOrFullscreen()) {
     // Reparenting changes the source bounds for the animation if a window is
     // visible so hide it here and show later when it is already in the desktop.
-    if (window_state->IsMaximized())
-      window->Hide();
-    gfx::Rect previous_bounds = window->bounds();
-    aura::Window* previous_parent = window->parent();
-    window->SetDefaultParentByRootWindow(window->GetRootWindow(), gfx::Rect());
-    if (window->parent() != previous_parent)
-      wm::ReparentTransientChildrenOfChild(window->parent(), window);
-    if (window_state->IsMaximized()) {
-      // Animate maximize animation from previous window bounds.
-      SetChildBoundsDirect(window, previous_bounds);
-      window->Show();
-    }
+    UndockWindow(window);
   } else {
     RestoreDockedWindow(window_state);
   }
@@ -570,15 +650,23 @@
 
 void DockedWindowLayoutManager::MaybeMinimizeChildrenExcept(
     aura::Window* child) {
-  // Account for the |child| by initializing to 1.
-  int child_index = 1;
+  // Minimize any windows that don't fit without overlap.
+  const gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(dock_container_).work_area();
+  int available_room = work_area.height() - kMinDockGap;
+  if (child)
+    available_room -= (GetWindowHeightCloseTo(child, 0) + kMinDockGap);
+  // Use a copy of children array because a call to Minimize can change order.
   aura::Window::Windows children(dock_container_->children());
   aura::Window::Windows::const_reverse_iterator iter = children.rbegin();
   while (iter != children.rend()) {
     aura::Window* window(*iter++);
     if (window == child || !IsUsedByLayout(window))
       continue;
-    if (++child_index > max_visible_windows_)
+    int room_needed = GetWindowHeightCloseTo(window, 0) + kMinDockGap;
+    if (available_room > room_needed)
+      available_room -= room_needed;
+    else
       wm::GetWindowState(window)->Minimize();
   }
 }
@@ -601,6 +689,12 @@
   gfx::Display display = Shell::GetScreen()->GetDisplayNearestWindow(
       dock_container_);
   const gfx::Rect work_area = display.work_area();
+
+  // Evict the window if it can no longer be docked because of its height.
+  if (!CanDockWindow(window, SNAP_NONE)) {
+    UndockWindow(window);
+    return;
+  }
   gfx::Rect bounds(window->bounds());
   bounds.set_y(work_area.y() - bounds.height());
   window->SetBounds(bounds);
@@ -608,7 +702,7 @@
   MaybeMinimizeChildrenExcept(window);
 }
 
-void DockedWindowLayoutManager::OnWindowDocked(aura::Window* window) {
+void DockedWindowLayoutManager::OnDraggedWindowDocked(aura::Window* window) {
   DCHECK(!is_dragged_window_docked_);
   is_dragged_window_docked_ = true;
 
@@ -617,7 +711,7 @@
     alignment_ = DOCKED_ALIGNMENT_NONE;
 }
 
-void DockedWindowLayoutManager::OnWindowUndocked() {
+void DockedWindowLayoutManager::OnDraggedWindowUndocked() {
   // If this is the first window getting docked - update alignment.
   if (!IsAnyWindowDocked())
     alignment_ = GetAlignmentOfWindow(dragged_window_);
@@ -630,24 +724,6 @@
   return CalculateAlignment() != DOCKED_ALIGNMENT_NONE;
 }
 
-// static
-int DockedWindowLayoutManager::GetWindowWidthCloseTo(aura::Window* window,
-                                                     int target_width) {
-  if (!wm::GetWindowState(window)->CanResize()) {
-    DCHECK_LE(window->bounds().width(), kMaxDockWidth);
-    return window->bounds().width();
-  }
-  int width = std::max(kMinDockWidth, std::min(target_width, kMaxDockWidth));
-  if (window->delegate()) {
-    if (window->delegate()->GetMinimumSize().width() != 0)
-      width = std::max(width, window->delegate()->GetMinimumSize().width());
-    if (window->delegate()->GetMaximumSize().width() != 0)
-      width = std::min(width, window->delegate()->GetMaximumSize().width());
-  }
-  DCHECK_LE(width, kMaxDockWidth);
-  return width;
-}
-
 void DockedWindowLayoutManager::Relayout() {
   if (in_layout_)
     return;
@@ -657,7 +733,7 @@
 
   gfx::Rect dock_bounds = dock_container_->GetBoundsInScreen();
   aura::Window* active_window = NULL;
-  aura::Window::Windows visible_windows;
+  std::vector<WindowWithHeight> visible_windows;
   for (size_t i = 0; i < dock_container_->children().size(); ++i) {
     aura::Window* window(dock_container_->children()[i]);
 
@@ -678,26 +754,65 @@
       DCHECK(!active_window);
       active_window = window;
     }
-    visible_windows.push_back(window);
+    visible_windows.push_back(WindowWithHeight(window));
   }
-
   // Consider docked dragged_window_ when fanning out other child windows.
   if (is_dragged_window_docked_) {
-    visible_windows.push_back(dragged_window_);
+    visible_windows.push_back(WindowWithHeight(dragged_window_));
     DCHECK(!active_window);
     active_window = dragged_window_;
   }
 
-  // Calculate free space or overlap.
-  gfx::Display display = Shell::GetScreen()->GetDisplayNearestWindow(
-      dock_container_);
-  const gfx::Rect work_area = display.work_area();
-  int available_room = work_area.height();
+  // Position docked windows as well as the window being dragged.
+  const gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(dock_container_).work_area();
+  int available_room = CalculateWindowHeightsAndRemainingRoom(work_area,
+                                                              &visible_windows);
+  FanOutChildren(work_area,
+                 CalculateIdealWidth(visible_windows),
+                 available_room,
+                 &visible_windows);
+
+  // After the first Relayout allow the windows to change their order easier
+  // since we know they are docked.
+  is_dragged_from_dock_ = true;
+  UpdateStacking(active_window);
+}
+
+int DockedWindowLayoutManager::CalculateWindowHeightsAndRemainingRoom(
+    const gfx::Rect work_area,
+    std::vector<WindowWithHeight>* visible_windows) {
+  int available_room = work_area.height() - kMinDockGap;
+  int remaining_windows = visible_windows->size();
+
+  // Sort windows by their minimum heights and calculate target heights.
+  std::sort(visible_windows->begin(), visible_windows->end(),
+            CompareMinimumHeight());
+  // Distribute the free space among the docked windows. Since the windows are
+  // sorted (tall windows first) we can now assume that any window which
+  // required more space than the current window will have already been
+  // accounted for previously in this loop, so we can safely give that window
+  // its proportional share of the remaining space.
+  for (std::vector<WindowWithHeight>::reverse_iterator iter =
+           visible_windows->rbegin();
+      iter != visible_windows->rend(); ++iter) {
+    iter->height_ = GetWindowHeightCloseTo(
+        iter->window(), available_room / remaining_windows - kMinDockGap);
+    available_room -= (iter->height_ + kMinDockGap);
+    remaining_windows--;
+  }
+  return available_room;
+}
+
+int DockedWindowLayoutManager::CalculateIdealWidth(
+    const std::vector<WindowWithHeight>& visible_windows) {
+  // Calculate ideal width for the docked area adjusting the dragged window
+  // or other windows as necessary.
   int ideal_docked_width = 0;
-  for (aura::Window::Windows::const_iterator iter = visible_windows.begin();
-      iter != visible_windows.end(); ++iter) {
-    aura::Window* window = *iter;
-    available_room -= window->bounds().height();
+  for (std::vector<WindowWithHeight>::const_iterator iter =
+           visible_windows.begin();
+       iter != visible_windows.end(); ++iter) {
+    const aura::Window* window = iter->window();
 
     // Adjust the dragged window to the dock. If that is not possible then
     // other docked windows area adjusted to the one that is being dragged.
@@ -722,29 +837,40 @@
     ideal_docked_width = std::max(std::min(ideal_docked_width, kMaxDockWidth),
                                   kMinDockWidth);
   }
-  const int num_windows = visible_windows.size();
-  const float delta = (float)available_room /
+  return ideal_docked_width;
+}
+
+void DockedWindowLayoutManager::FanOutChildren(
+    const gfx::Rect& work_area,
+    int ideal_docked_width,
+    int available_room,
+    std::vector<WindowWithHeight>* visible_windows) {
+  gfx::Rect dock_bounds = dock_container_->GetBoundsInScreen();
+
+  // Calculate initial vertical offset and the gap or overlap between windows.
+  const int num_windows = visible_windows->size();
+  const float delta = kMinDockGap + (float)available_room /
       ((available_room > 0 || num_windows <= 1) ?
           num_windows + 1 : num_windows - 1);
-  float y_pos = work_area.y() + ((available_room > 0) ? delta : 0);
+  float y_pos = work_area.y() + ((delta > 0) ? delta : kMinDockGap);
 
   // Docked area is shown only if there is at least one non-dragged visible
   // docked window.
   docked_width_ = ideal_docked_width;
-  if (visible_windows.empty() ||
-      (visible_windows.size() == 1 && visible_windows[0] == dragged_window_)) {
+  if (visible_windows->empty() ||
+      (visible_windows->size() == 1 &&
+          (*visible_windows)[0].window() == dragged_window_)) {
     docked_width_ = 0;
   }
 
   // Sort windows by their center positions and fan out overlapping
   // windows.
-  std::sort(visible_windows.begin(),
-            visible_windows.end(),
+  std::sort(visible_windows->begin(), visible_windows->end(),
             CompareWindowPos(is_dragged_from_dock_ ? dragged_window_ : NULL,
-                             delta));
-  for (aura::Window::Windows::const_iterator iter = visible_windows.begin();
-      iter != visible_windows.end(); ++iter) {
-    aura::Window* window = *iter;
+                delta));
+  for (std::vector<WindowWithHeight>::iterator iter = visible_windows->begin();
+      iter != visible_windows->end(); ++iter) {
+    aura::Window* window = iter->window();
     gfx::Rect bounds = ScreenAsh::ConvertRectToScreen(
         window->parent(), window->GetTargetBounds());
     // A window is extended or shrunk to be as close as possible to the docked
@@ -765,6 +891,7 @@
     }
 
     // Fan out windows evenly distributing the overlap or remaining free space.
+    bounds.set_height(iter->height_);
     bounds.set_y(std::max(work_area.y(),
                           std::min(work_area.bottom() - bounds.height(),
                                    static_cast<int>(y_pos + 0.5))));
@@ -802,8 +929,6 @@
       SetChildBoundsDirect(window, bounds);
     }
   }
-  is_dragged_from_dock_ = true;
-  UpdateStacking(active_window);
 }
 
 void DockedWindowLayoutManager::UpdateDockBounds(
diff --git a/ash/wm/dock/docked_window_layout_manager.h b/ash/wm/dock/docked_window_layout_manager.h
index eab6910..29979d7 100644
--- a/ash/wm/dock/docked_window_layout_manager.h
+++ b/ash/wm/dock/docked_window_layout_manager.h
@@ -19,6 +19,7 @@
 #include "base/observer_list.h"
 #include "ui/aura/client/activation_change_observer.h"
 #include "ui/aura/layout_manager.h"
+#include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
 #include "ui/gfx/rect.h"
 #include "ui/keyboard/keyboard_controller_observer.h"
@@ -44,6 +45,16 @@
 class ShelfLayoutManager;
 class WorkspaceController;
 
+struct WindowWithHeight {
+  explicit WindowWithHeight(aura::Window* window) :
+    window_(window),
+    height_(window->bounds().height()) { }
+  aura::Window* window() { return window_; }
+  const aura::Window* window() const { return window_; }
+  aura::Window* window_;
+  int height_;
+};
+
 // DockedWindowLayoutManager is responsible for organizing windows when they are
 // docked to the side of a screen. It is associated with a specific container
 // window (i.e. kShellWindowId_DockContainer) and controls the layout of any
@@ -67,6 +78,9 @@
   // Maximum width of the docked windows area.
   static const int kMaxDockWidth;
 
+  // Minimum width of the docked windows area.
+  static const int kMinDockWidth;
+
   DockedWindowLayoutManager(aura::Window* dock_container,
                             WorkspaceController* workspace_controller);
   virtual ~DockedWindowLayoutManager();
@@ -149,29 +163,9 @@
                                  aura::Window* lost_active) OVERRIDE;
 
  private:
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, AttachTryDetach);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, AttachTwoWindowsDetachOne);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, AttachWindowMaximizeOther);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, AttachOneTestSticky);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, ResizeTwoWindows);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowResizerTest, DragToShelf);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest, AddOneWindow);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest, AutoPlacingLeft);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest, AutoPlacingRight);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest,
-                           AutoPlacingRightSecondScreen);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest, TwoWindowsWidthNew);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest,
-                           TwoWindowsWidthNonResizableSecond);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest, ThreeWindowsDragging);
-  FRIEND_TEST_ALL_PREFIXES(DockedWindowLayoutManagerTest,
-                           ThreeWindowsDraggingSecondScreen);
   friend class DockedWindowLayoutManagerTest;
   friend class DockedWindowResizerTest;
 
-  // Minimum width of the docked windows area.
-  static const int kMinDockWidth;
-
   // Width of the gap between the docked windows and a workspace.
   static const int kMinDockGap;
 
@@ -187,22 +181,38 @@
   void RestoreDockedWindow(wm::WindowState* window_state);
 
   // Updates docked layout state when a window gets inside the dock.
-  void OnWindowDocked(aura::Window* window);
+  void OnDraggedWindowDocked(aura::Window* window);
 
   // Updates docked layout state when a window gets outside the dock.
-  void OnWindowUndocked();
+  void OnDraggedWindowUndocked();
 
   // Returns true if there are any windows currently docked.
   bool IsAnyWindowDocked();
 
-  // Returns width that is as close as possible to |target_width| while being
-  // consistent with docked min and max restrictions and respects the |window|'s
-  // minimum and maximum size.
-  static int GetWindowWidthCloseTo(aura::Window* window, int target_width);
-
   // Called whenever the window layout might change.
   void Relayout();
 
+  // Calculates target heights (and fills it in |visible_windows| array) such
+  // that the vertical space is fairly distributed among the windows taking
+  // into account their minimum and maximum size. Returns free vertical space
+  // (positive value) that remains after resizing all windows or deficit
+  // (negative value) if not all the windows fit.
+  int CalculateWindowHeightsAndRemainingRoom(
+      const gfx::Rect work_area,
+      std::vector<WindowWithHeight>* visible_windows);
+
+  // Calculate ideal width for the docked area. It will get used to adjust the
+  // dragged window or other windows as necessary.
+  int CalculateIdealWidth(const std::vector<WindowWithHeight>& visible_windows);
+
+  // Fan out windows evenly distributing the overlap or remaining free space.
+  // Adjust the widths of the windows trying to make them all same. If this
+  // is not possible, center the windows in the docked area.
+  void FanOutChildren(const gfx::Rect& work_area,
+                      int ideal_docked_width,
+                      int available_room,
+                      std::vector<WindowWithHeight>* visible_windows);
+
   // Updates |docked_bounds_| and workspace insets when bounds of docked windows
   // area change. Passing |reason| to observers allows selectively skipping
   // notifications.
@@ -244,10 +254,6 @@
   // Current width of the dock.
   int docked_width_;
 
-  // How many docked windows are allowed to be shown.
-  // TODO(varkha): Make this dynamic based on windows heights.
-  int max_visible_windows_;
-
   // Last bounds that were sent to observers.
   gfx::Rect docked_bounds_;
 
diff --git a/ash/wm/dock/docked_window_layout_manager_unittest.cc b/ash/wm/dock/docked_window_layout_manager_unittest.cc
index df93031..6ec585f 100644
--- a/ash/wm/dock/docked_window_layout_manager_unittest.cc
+++ b/ash/wm/dock/docked_window_layout_manager_unittest.cc
@@ -5,7 +5,6 @@
 #include "ash/wm/dock/docked_window_layout_manager.h"
 
 #include "ash/ash_switches.h"
-#include "ash/display/display_controller.h"
 #include "ash/launcher/launcher.h"
 #include "ash/launcher/launcher_model.h"
 #include "ash/root_window_controller.h"
@@ -17,7 +16,7 @@
 #include "ash/shell_window_ids.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/test/shell_test_api.h"
 #include "ash/test/test_launcher_delegate.h"
 #include "ash/wm/coordinate_conversion.h"
@@ -55,9 +54,9 @@
     UpdateDisplay("600x600");
     ASSERT_TRUE(test::TestLauncherDelegate::instance());
 
-    launcher_view_test_.reset(new test::LauncherViewTestAPI(
-        test::LauncherTestAPI(Launcher::ForPrimaryDisplay()).launcher_view()));
-    launcher_view_test_->SetAnimationDuration(1);
+    shelf_view_test_.reset(new test::ShelfViewTestAPI(
+        test::LauncherTestAPI(Launcher::ForPrimaryDisplay()).shelf_view()));
+    shelf_view_test_->SetAnimationDuration(1);
   }
 
  protected:
@@ -67,6 +66,12 @@
     DOCKED_EDGE_RIGHT,
   };
 
+  int min_dock_gap() const { return DockedWindowLayoutManager::kMinDockGap; }
+  int ideal_width() const { return DockedWindowLayoutManager::kIdealWidth; }
+  int docked_width(const DockedWindowLayoutManager* layout_manager) const {
+    return layout_manager->docked_width_;
+  }
+
   aura::Window* CreateTestWindow(const gfx::Rect& bounds) {
     aura::Window* window = CreateTestWindowInShellWithDelegateAndType(
         NULL, window_type_, 0, bounds);
@@ -212,7 +217,7 @@
 
  private:
   scoped_ptr<WindowResizer> resizer_;
-  scoped_ptr<test::LauncherViewTestAPI> launcher_view_test_;
+  scoped_ptr<test::ShelfViewTestAPI> shelf_view_test_;
   aura::client::WindowType window_type_;
 
   // Location at start of the drag in |window->parent()|'s coordinates.
@@ -235,7 +240,7 @@
   // Its width should shrink or grow to ideal width.
   EXPECT_EQ(window->GetRootWindow()->bounds().right(),
             window->GetBoundsInScreen().right());
-  EXPECT_EQ(DockedWindowLayoutManager::kIdealWidth, window->bounds().width());
+  EXPECT_EQ(ideal_width(), window->bounds().width());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id());
 }
 
@@ -266,9 +271,9 @@
   window1->Show();
   // |window1| should be centered in work area.
   EXPECT_EQ(base::IntToString(
-      manager->docked_width_ + DockedWindowLayoutManager::kMinDockGap +
-      (desktop_area.width() - manager->docked_width_ -
-       DockedWindowLayoutManager::kMinDockGap - window1->bounds().width()) / 2)+
+      docked_width(manager) + min_dock_gap() +
+      (desktop_area.width() - docked_width(manager) -
+       min_dock_gap() - window1->bounds().width()) / 2) +
       ",32 231x320", window1->bounds().ToString());
 
   scoped_ptr<aura::Window> window2(CreateTestWindowInShellWithId(2));
@@ -281,8 +286,7 @@
 
   // |window1| should be flush left and |window2| flush right.
   EXPECT_EQ(
-      base::IntToString(
-          manager->docked_width_ + DockedWindowLayoutManager::kMinDockGap) +
+      base::IntToString(docked_width(manager) + min_dock_gap()) +
       ",32 231x320", window1->bounds().ToString());
   EXPECT_EQ(
       base::IntToString(
@@ -318,8 +322,8 @@
 
   // |window1| should be centered in work area.
   EXPECT_EQ(base::IntToString(
-      (desktop_area.width() - manager->docked_width_ -
-       DockedWindowLayoutManager::kMinDockGap - window1->bounds().width()) / 2)+
+      (desktop_area.width() - docked_width(manager) -
+       min_dock_gap() - window1->bounds().width()) / 2) +
       ",32 231x320", window1->bounds().ToString());
 
   scoped_ptr<aura::Window> window2(CreateTestWindowInShellWithId(2));
@@ -335,7 +339,7 @@
   EXPECT_EQ(
       base::IntToString(
           desktop_area.width() - window2->bounds().width() -
-          manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap) +
+          docked_width(manager) - min_dock_gap()) +
       ",48 256x512", window2->bounds().ToString());
 }
 
@@ -373,8 +377,8 @@
 
   // |window1| should be centered in work area.
   EXPECT_EQ(base::IntToString(
-      600 + (desktop_area.width() - manager->docked_width_ -
-       DockedWindowLayoutManager::kMinDockGap - window1->bounds().width()) / 2)+
+      600 + (desktop_area.width() - docked_width(manager) -
+          min_dock_gap() - window1->bounds().width()) / 2) +
       ",32 231x320", window1->GetBoundsInScreen().ToString());
 
   bounds = gfx::Rect(632, 48, 256, 512);
@@ -391,7 +395,7 @@
   EXPECT_EQ(
       base::IntToString(
           600 + desktop_area.width() - window2->bounds().width() -
-          manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap) +
+          docked_width(manager) - min_dock_gap()) +
       ",48 256x512", window2->GetBoundsInScreen().ToString());
 }
 
@@ -414,13 +418,14 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
 
   // Test that the gaps differ at most by a single pixel.
+  gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
   int gap1 = w1->GetBoundsInScreen().y();
   int gap2 = w2->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
-  int gap3 = ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get()).bottom() -
-      w2->GetBoundsInScreen().bottom();
-  EXPECT_LE(abs(gap1 - gap2), 1);
-  EXPECT_LE(abs(gap2 - gap3), 1);
-  EXPECT_LE(abs(gap3 - gap1), 1);
+  int gap3 = work_area.bottom() - w2->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
 }
 
 // Adds two non-overlapping windows and tests layout after a drag.
@@ -443,33 +448,32 @@
 
   // Drag w2 above w1.
   ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromwindowOrigin(w2.get(), 0, 20));
-  DragMove(0, w1->bounds().y() - w2->bounds().y() + 20);
+  DragMove(0, -w2->bounds().height() / 2 - min_dock_gap() - 1);
   DragEnd();
 
   // Test the new windows order and that the gaps differ at most by a pixel.
-  int gap1 = w2->GetBoundsInScreen().y();
+  gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
+  int gap1 = w2->GetBoundsInScreen().y() - work_area.y();
   int gap2 = w1->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
-  int gap3 = ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get()).bottom() -
-      w1->GetBoundsInScreen().bottom();
-  EXPECT_LE(abs(gap1 - gap2), 1);
-  EXPECT_LE(abs(gap2 - gap3), 1);
-  EXPECT_LE(abs(gap3 - gap1), 1);
+  int gap3 = work_area.bottom() - w1->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
 }
 
 // Adds three overlapping windows and tests layout after a drag.
 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsDragging) {
   if (!SupportsHostWindowResize())
     return;
+  UpdateDisplay("600x1000");
 
-  scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
+  scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 310)));
   DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
-  DockedWindowLayoutManager* manager = static_cast<DockedWindowLayoutManager*>(
-      w1->parent()->layout_manager());
-  manager->max_visible_windows_ = 3;
-  scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
-  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200);
-  scoped_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 204)));
-  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 300);
+  scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 310)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 500);
+  scoped_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 310)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 600);
 
   // All windows should be attached and snapped to the right side of the screen.
   EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
@@ -483,39 +487,42 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w3->parent()->id());
 
   // Test that the top and bottom windows are clamped in work area and
-  // that the overlaps between the windows differ at most by a pixel.
-  int overlap1 = w1->GetBoundsInScreen().y();
-  int overlap2 = w1->GetBoundsInScreen().bottom() - w2->GetBoundsInScreen().y();
-  int overlap3 = w2->GetBoundsInScreen().bottom() - w3->GetBoundsInScreen().y();
-  int overlap4 =
-      ScreenAsh::GetDisplayWorkAreaBoundsInParent(w3.get()).bottom() -
-      w3->GetBoundsInScreen().bottom();
-  EXPECT_EQ(0, overlap1);
-  EXPECT_LE(abs(overlap2 - overlap3), 1);
-  EXPECT_EQ(0, overlap4);
+  // that the gaps between the windows differ at most by a pixel.
+  gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
+  int gap1 = w1->GetBoundsInScreen().y() - work_area.y();
+  int gap2 = w2->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
+  int gap3 = w3->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
+  int gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
+  EXPECT_NEAR(gap4, min_dock_gap(), 1);
 
   // Drag w1 below the point where w1 and w2 would swap places. This point is
-  // half way between the tops of those two windows. Add 1 because w2 is taller.
+  // half way between the tops of those two windows.
+  // A bit more vertical drag is needed to account for a window bounds changing
+  // to its restore bounds during the drag.
   ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromwindowOrigin(w1.get(), 0, 20));
-  DragMove(0, (w2->bounds().y() - w1->bounds().y()) / 2 + 1);
+  DragMove(0, min_dock_gap() + w2->bounds().height() / 2 + 10);
 
   // During the drag the windows get rearranged and the top and the bottom
-  // should be clamped by the work area.
-  EXPECT_EQ(0, w2->GetBoundsInScreen().y());
+  // should be limited by the work area + |kMinDockGap|.
+  EXPECT_EQ(min_dock_gap(), w2->GetBoundsInScreen().y());
   EXPECT_GT(w1->GetBoundsInScreen().y(), w2->GetBoundsInScreen().y());
-  EXPECT_EQ(ScreenAsh::GetDisplayWorkAreaBoundsInParent(w3.get()).bottom(),
-            w3->GetBoundsInScreen().bottom());
+  EXPECT_EQ(min_dock_gap(),
+            work_area.bottom() - w3->GetBoundsInScreen().bottom());
   DragEnd();
 
-  // Test the new windows order and that the overlaps differ at most by a pixel.
-  overlap1 = w2->GetBoundsInScreen().y();
-  overlap2 = w2->GetBoundsInScreen().bottom() - w1->GetBoundsInScreen().y();
-  overlap3 = w1->GetBoundsInScreen().bottom() - w3->GetBoundsInScreen().y();
-  overlap4 = ScreenAsh::GetDisplayWorkAreaBoundsInParent(w3.get()).bottom() -
-      w3->GetBoundsInScreen().bottom();
-  EXPECT_EQ(0, overlap1);
-  EXPECT_LE(abs(overlap2 - overlap3), 1);
-  EXPECT_EQ(0, overlap4);
+  // Test the new windows order and that the gaps differ at most by a pixel.
+  gap1 = w2->GetBoundsInScreen().y() - work_area.y();
+  gap2 = w1->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
+  gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
+  gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
+  EXPECT_NEAR(gap4, min_dock_gap(), 1);
 }
 
 // Adds three windows in bottom display and tests layout after a drag.
@@ -524,22 +531,19 @@
     return;
 
   // Create two screen vertical layout.
-  UpdateDisplay("600x600,600x600");
+  UpdateDisplay("600x1000,600x1000");
   // Layout the secondary display to the bottom of the primary.
   DisplayLayout layout(DisplayLayout::BOTTOM, 0);
   ASSERT_GT(Shell::GetScreen()->GetNumDisplays(), 1);
-  Shell::GetInstance()->display_controller()->
+  Shell::GetInstance()->display_manager()->
       SetLayoutForCurrentDisplays(layout);
 
-  scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 600, 201, 201)));
-  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 600 + 20);
-  DockedWindowLayoutManager* manager = static_cast<DockedWindowLayoutManager*>(
-      w1->parent()->layout_manager());
-  manager->max_visible_windows_ = 3;
-  scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 600, 210, 202)));
-  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 600 + 200);
-  scoped_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 600, 220, 204)));
-  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 600 + 300);
+  scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 1000, 201, 310)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 1000 + 20);
+  scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 1000, 210, 310)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 1000 + 500);
+  scoped_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 1000, 220, 310)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 1000 + 600);
 
   // All windows should be attached and snapped to the right side of the screen.
   EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
@@ -556,34 +560,39 @@
       Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
   // Test that the top and bottom windows are clamped in work area and
   // that the overlaps between the windows differ at most by a pixel.
-  int overlap1 = w1->GetBoundsInScreen().y() - work_area.y();
-  int overlap2 = w1->GetBoundsInScreen().bottom() - w2->GetBoundsInScreen().y();
-  int overlap3 = w2->GetBoundsInScreen().bottom() - w3->GetBoundsInScreen().y();
-  int overlap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
-  EXPECT_EQ(0, overlap1);
-  EXPECT_LE(abs(overlap2 - overlap3), 1);
-  EXPECT_EQ(0, overlap4);
+  int gap1 = w1->GetBoundsInScreen().y() - work_area.y();
+  int gap2 = w2->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
+  int gap3 = w3->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
+  int gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
+  EXPECT_NEAR(gap4, min_dock_gap(), 1);
 
   // Drag w1 below the point where w1 and w2 would swap places. This point is
-  // half way between the tops of those two windows. Add 1 because w2 is taller.
+  // half way between the tops of those two windows.
+  // A bit more vertical drag is needed to account for a window bounds changing
+  // to its restore bounds during the drag.
   ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromwindowOrigin(w1.get(), 0, 20));
-  DragMove(0, (w2->bounds().y() - w1->bounds().y()) / 2 + 1);
+  DragMove(0, min_dock_gap() + w2->bounds().height() / 2 + 10);
 
   // During the drag the windows get rearranged and the top and the bottom
-  // should be clamped by the work area.
-  EXPECT_EQ(work_area.y(), w2->GetBoundsInScreen().y());
+  // should be limited by the work area + |kMinDockGap|.
+  EXPECT_EQ(work_area.y() + min_dock_gap(), w2->GetBoundsInScreen().y());
   EXPECT_GT(w1->GetBoundsInScreen().y(), w2->GetBoundsInScreen().y());
-  EXPECT_EQ(work_area.bottom(), w3->GetBoundsInScreen().bottom());
+  EXPECT_EQ(min_dock_gap(),
+            work_area.bottom() - w3->GetBoundsInScreen().bottom());
   DragEnd();
 
   // Test the new windows order and that the overlaps differ at most by a pixel.
-  overlap1 = w2->GetBoundsInScreen().y() - work_area.y();
-  overlap2 = w2->GetBoundsInScreen().bottom() - w1->GetBoundsInScreen().y();
-  overlap3 = w1->GetBoundsInScreen().bottom() - w3->GetBoundsInScreen().y();
-  overlap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
-  EXPECT_EQ(0, overlap1);
-  EXPECT_LE(abs(overlap2 - overlap3), 1);
-  EXPECT_EQ(0, overlap4);
+  gap1 = w2->GetBoundsInScreen().y() - work_area.y();
+  gap2 = w1->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
+  gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
+  gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
+  EXPECT_NEAR(gap1, min_dock_gap(), 1);
+  EXPECT_NEAR(gap2, min_dock_gap(), 1);
+  EXPECT_NEAR(gap3, min_dock_gap(), 1);
+  EXPECT_NEAR(gap4, min_dock_gap(), 1);
 }
 
 // Tests that a second window added to the dock is resized to match.
@@ -595,11 +604,11 @@
   scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202)));
   DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
   // The first window should get resized to ideal width.
-  EXPECT_EQ(DockedWindowLayoutManager::kIdealWidth, w1->bounds().width());
+  EXPECT_EQ(ideal_width(), w1->bounds().width());
 
   DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
   // The second window should get resized to the existing dock.
-  EXPECT_EQ(DockedWindowLayoutManager::kIdealWidth, w2->bounds().width());
+  EXPECT_EQ(ideal_width(), w2->bounds().width());
 }
 
 // Tests that a first non-resizable window added to the dock is not resized.
@@ -629,7 +638,7 @@
   w2->SetProperty(aura::client::kCanResizeKey, false);
   DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
   // The first window should get resized to ideal width.
-  EXPECT_EQ(DockedWindowLayoutManager::kIdealWidth, w1->bounds().width());
+  EXPECT_EQ(ideal_width(), w1->bounds().width());
 
   DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
   // The second window should not get resized.
@@ -664,7 +673,7 @@
   EXPECT_EQ(w1->bounds().CenterPoint().x(), w2->bounds().CenterPoint().x());
 }
 
-// Test that restrictions on minimum and maximum width of windows are honored.
+// Test that restrictions on minimum width of windows are honored.
 TEST_P(DockedWindowLayoutManagerTest, WidthMoreThanMax) {
   if (!SupportsHostWindowResize())
     return;
@@ -710,9 +719,99 @@
 
   // The first window should get minimized but parented by the dock container.
   EXPECT_TRUE(wm::GetWindowState(w1.get())->IsMinimized());
+  EXPECT_TRUE(wm::GetWindowState(w2.get())->IsNormalShowState());
+  EXPECT_TRUE(wm::GetWindowState(w3.get())->IsNormalShowState());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
 }
 
+// Docks up to three windows and tests that they split vertical space.
+TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsSplitHeightEvenly) {
+  if (!SupportsHostWindowResize())
+    return;
+
+  UpdateDisplay("600x1000");
+  scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
+  scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200);
+
+  // The two windows should be attached and snapped to the right edge.
+  EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
+            w1->GetBoundsInScreen().right());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
+  EXPECT_EQ(w2->GetRootWindow()->bounds().right(),
+            w2->GetBoundsInScreen().right());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
+
+  // The two windows should be same size vertically and almost 1/2 of work area.
+  gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
+  EXPECT_NEAR(w1->GetBoundsInScreen().height(),
+              w2->GetBoundsInScreen().height(),
+              1);
+  EXPECT_NEAR(work_area.height() / 2, w1->GetBoundsInScreen().height(),
+              min_dock_gap() * 2);
+
+  // Create and dock the third window.
+  scoped_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 204)));
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 300);
+
+  // All three windows should be docked and snapped to the right edge.
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w3->parent()->id());
+
+  // All windows should be near same size vertically and about 1/3 of work area.
+  EXPECT_NEAR(w1->GetBoundsInScreen().height(),
+              w2->GetBoundsInScreen().height(),
+              1);
+  EXPECT_NEAR(w2->GetBoundsInScreen().height(),
+              w3->GetBoundsInScreen().height(),
+              1);
+  EXPECT_NEAR(work_area.height() / 3, w1->GetBoundsInScreen().height(),
+              min_dock_gap() * 2);
+}
+
+// Docks two windows and tests that restrictions on vertical size are honored.
+TEST_P(DockedWindowLayoutManagerTest, TwoWindowsHeightRestrictions) {
+  if (!SupportsHostWindowResize())
+    return;
+
+  // The first window is fixed height.
+  aura::test::TestWindowDelegate delegate1;
+  delegate1.set_minimum_size(gfx::Size(0, 300));
+  delegate1.set_maximum_size(gfx::Size(0, 300));
+  scoped_ptr<aura::Window> w1(CreateTestWindowWithDelegate(
+      gfx::Rect(0, 0, 201, 300), &delegate1));
+  // The second window has maximum height.
+  aura::test::TestWindowDelegate delegate2;
+  delegate2.set_maximum_size(gfx::Size(0, 100));
+  scoped_ptr<aura::Window> w2(CreateTestWindowWithDelegate(
+      gfx::Rect(0, 0, 280, 90), &delegate2));
+
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
+  DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200);
+
+  // The two windows should be attached and snapped to the right edge.
+  EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
+            w1->GetBoundsInScreen().right());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
+  EXPECT_EQ(w2->GetRootWindow()->bounds().right(),
+            w2->GetBoundsInScreen().right());
+  EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
+
+  // The two windows should have their heights restricted.
+  EXPECT_EQ(300, w1->GetBoundsInScreen().height());
+  EXPECT_EQ(100, w2->GetBoundsInScreen().height());
+
+  // w1 should be more than half of the work area height (even with a margin).
+  // w2 should be less than half of the work area height (even with a margin).
+  gfx::Rect work_area =
+      Shell::GetScreen()->GetDisplayNearestWindow(w1.get()).work_area();
+  EXPECT_GT(w1->GetBoundsInScreen().height(), work_area.height() / 2 + 10);
+  EXPECT_LT(w2->GetBoundsInScreen().height(), work_area.height() / 2 - 10);
+}
+
 // Tests run twice - on both panels and normal windows
 INSTANTIATE_TEST_CASE_P(NormalOrPanel,
                         DockedWindowLayoutManagerTest,
diff --git a/ash/wm/dock/docked_window_resizer_unittest.cc b/ash/wm/dock/docked_window_resizer_unittest.cc
index 7b17e0b..3d2cd77 100644
--- a/ash/wm/dock/docked_window_resizer_unittest.cc
+++ b/ash/wm/dock/docked_window_resizer_unittest.cc
@@ -64,6 +64,15 @@
     DOCKED_EDGE_RIGHT,
   };
 
+  int ideal_width() const { return DockedWindowLayoutManager::kIdealWidth; }
+  int min_dock_gap() const { return DockedWindowLayoutManager::kMinDockGap; }
+  int max_width() const { return DockedWindowLayoutManager::kMaxDockWidth; }
+  int docked_width(const DockedWindowLayoutManager* layout_manager) const {
+    return layout_manager->docked_width_;
+  }
+  int docked_alignment(const DockedWindowLayoutManager* layout_manager) const {
+    return layout_manager->alignment_;
+  }
   aura::Window* CreateTestWindow(const gfx::Rect& bounds) {
     aura::Window* window = CreateTestWindowInShellWithDelegateAndType(
         &delegate_,
@@ -368,15 +377,14 @@
     return;
 
   scoped_ptr<aura::Window> window(CreateTestWindow(
-      gfx::Rect(0, 0, DockedWindowLayoutManager::kIdealWidth + 10, 201)));
+      gfx::Rect(0, 0, ideal_width() + 10, 201)));
   DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
 
   // The window should be attached and docked at the right edge.
   // Its width should shrink to ideal width.
   EXPECT_EQ(window->GetRootWindow()->bounds().right(),
             window->GetBoundsInScreen().right());
-  EXPECT_EQ(DockedWindowLayoutManager::kIdealWidth,
-            window->GetBoundsInScreen().width());
+  EXPECT_EQ(ideal_width(), window->GetBoundsInScreen().width());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id());
 
   // Try to detach by dragging left less than kSnapToDockDistance.
@@ -651,6 +659,7 @@
 TEST_P(DockedWindowResizerTest, AttachTwoWindowsDetachOne) {
   if (!SupportsHostWindowResize())
     return;
+  UpdateDisplay("600x600");
 
   scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
   scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
@@ -665,8 +674,8 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   DockedWindowLayoutManager* manager =
       static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_RIGHT, w2.get(), 0, 100);
   // Both windows should now be attached and snapped to the right edge.
@@ -674,9 +683,9 @@
             w2->GetBoundsInScreen().right());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
   // Dock width should be set to a wider window.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
-            manager->docked_width_);
+            docked_width(manager));
 
   // Try to detach by dragging left a bit (should not get undocked).
   // This would normally detach a single docked window but since we have another
@@ -715,8 +724,8 @@
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
   // Dock width should be set to remaining single docked window.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 }
 
 // Dock one of the windows. Maximize other testing desktop resizing.
@@ -737,8 +746,8 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   DockedWindowLayoutManager* manager =
       static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromwindowOrigin(w2.get(), 25, 5));
   DragMove(w2->GetRootWindow()->bounds().right()
@@ -759,11 +768,11 @@
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
   // Dock width should be set to remaining single docked window.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // Desktop work area should now shrink.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 
   // Maximize the second window - Maximized area should be shrunk.
@@ -771,23 +780,23 @@
   wm::WindowState* w2_state = wm::GetWindowState(w2.get());
   w2_state->Maximize();
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             w2->bounds().width());
 
   // Detach the first window (this should require very little drag).
   ASSERT_NO_FATAL_FAILURE(DragStart(w1.get()));
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   DragMove(-35, 10);
   // Alignment is set to "NONE" when drag starts.
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
   // Release the mouse and the window should be no longer attached to the edge.
   DragEnd();
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
   // Dock should get shrunk and desktop should get expanded.
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
-  EXPECT_EQ(0, manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
+  EXPECT_EQ(0, docked_width(manager));
   // The second window should now get resized and take up the whole screen.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(),
             w2->bounds().width());
@@ -798,18 +807,18 @@
   // Drag left to get pointer touching the screen edge.
   DragMove(-w1->bounds().x() - 10, 0);
   // Alignment set to "NONE" during the drag of the window when none are docked.
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
   // Release the mouse and the window should be now attached to the edge.
   DragEnd();
   // Dock should get expanded and desktop should get shrunk.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // Second window should still be in the desktop.
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
   // Maximized window should be shrunk.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             w2->bounds().width());
 
   // Unmaximize the second window.
@@ -841,14 +850,14 @@
             w1->GetBoundsInScreen().x());
   // Dock width should be set to that of a single docked window.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   // Position second window in the desktop 20px to the right of the docked w1.
   DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_LEFT,
                                        w2.get(),
                                        20 + 25 -
-                                       DockedWindowLayoutManager::kMinDockGap,
+                                       min_dock_gap(),
                                        50);
   // The second window should be floating on the desktop.
   EXPECT_EQ(w2->GetRootWindow()->bounds().x() + (w1->bounds().right() + 20),
@@ -856,19 +865,19 @@
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
   // Dock width should be set to that of a single docked window.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   // Drag w2 almost to the dock, the mouse pointer not quite reaching the dock.
   ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromwindowOrigin(w2.get(), 10, 0));
-  DragMove(1 + manager->docked_width_ - w2->bounds().x(), 0);
+  DragMove(1 + docked_width(manager) - w2->bounds().x(), 0);
   // Alignment set to "LEFT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
   // Release the mouse and the window should not be attached to the edge.
   DragEnd();
   // Dock should still have only one window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // The second window should still be in the desktop.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
@@ -880,14 +889,14 @@
   // Window should not actually move.
   EXPECT_EQ(start_x, w2->bounds().x());
   // Alignment set to "LEFT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
   // Release the mouse and the window should not be attached to the edge.
   DragEnd();
   // Window should be still where it was before the last drag started.
   EXPECT_EQ(start_x, w2->bounds().x());
   // Dock should still have only one window in it
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // The second window should still be in the desktop
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
@@ -898,19 +907,19 @@
   // Window should actually move.
   EXPECT_NE(start_x, w2->bounds().x());
   // Alignment set to "LEFT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
   // Release the mouse and the window should be attached to the edge.
   DragEnd();
   // Both windows are docked now.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
   // Dock should get expanded and desktop should get shrunk.
-  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
   EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
-            manager->docked_width_);
+            docked_width(manager));
   // Desktop work area should now shrink by dock width.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 }
 
@@ -921,7 +930,7 @@
     return;
 
   // Wider display to start since panels are limited to half the display width.
-  UpdateDisplay("1000x400");
+  UpdateDisplay("1000x600");
   scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
   scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
   // Work area should cover the whole screen.
@@ -935,8 +944,8 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   DockedWindowLayoutManager* manager =
       static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_RIGHT, w2.get(), 0, 100);
   // Both windows should now be attached and snapped to the right edge.
@@ -944,9 +953,9 @@
             w2->GetBoundsInScreen().right());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
   // Dock width should be set to a wider window.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
-            manager->docked_width_);
+            docked_width(manager));
 
   // Resize the first window left by a bit and test that the dock expands.
   int previous_width = w1->bounds().width();
@@ -956,20 +965,20 @@
                                                               HTLEFT));
   DragMove(-kResizeSpan1, 0);
   // Alignment set to "RIGHT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // Release the mouse and the window should be attached to the edge.
   DragEnd();
   // Dock should still have both windows in it.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // w1 is now wider than w2 and the dock should expand and be as wide as w1.
   EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width());
   EXPECT_GT(w1->bounds().width(), w2->bounds().width());
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // Desktop work area should shrink.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 
   // Resize the first window left by more than the dock maximum width.
@@ -981,21 +990,21 @@
                                                               HTLEFT));
   DragMove(-kResizeSpan2, 0);
   // Alignment set to "RIGHT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // Release the mouse and the window should be attached to the edge.
   DragEnd();
   // Dock should still have both windows in it.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // w1 is now as wide as the maximum dock width and the dock should get
   // resized to the maximum width.
-  EXPECT_EQ(DockedWindowLayoutManager::kMaxDockWidth, w1->bounds().width());
+  EXPECT_EQ(max_width(), w1->bounds().width());
   EXPECT_GT(w1->bounds().width(), w2->bounds().width());
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // Desktop work area should shrink.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 
   // Resize the first window right to get it completely inside the docked area.
@@ -1006,20 +1015,20 @@
                                                               HTLEFT));
   DragMove(kResizeSpan3, 0);
   // Alignment set to "RIGHT" during the drag because dock has a window in it.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // Release the mouse and the window should be attached to the edge.
   DragEnd();
   // Dock should still have both windows in it.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // w1 is still wider than w2 so the dock should expand and be as wide as w1.
   EXPECT_EQ(previous_width - kResizeSpan3, w1->bounds().width());
   EXPECT_GT(w1->bounds().width(), w2->bounds().width());
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // Desktop work area should shrink.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 
   // Resize the first window left to be overhang again.
@@ -1032,27 +1041,27 @@
   EXPECT_EQ(previous_width + kResizeSpan3, w1->bounds().width());
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   // Docked area should be as wide as possible (maximum) and same as w1.
-  EXPECT_EQ(DockedWindowLayoutManager::kMaxDockWidth, manager->docked_width_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(max_width(), docked_width(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   // Undock the second window. Docked area should shrink to its minimum size.
   ASSERT_NO_FATAL_FAILURE(DragStart(w2.get()));
   // Drag up as well to avoid attaching panels to launcher shelf.
   DragMove(-(400 - 201), -100);
   // Alignment set to "RIGHT" since we have another window docked.
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
   // Release the mouse and the window should be no longer attached to the edge.
   DragEnd();
   EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
   // Dock should be as wide as w1 (and same as maximum width).
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(DockedWindowLayoutManager::kMaxDockWidth, manager->docked_width_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(max_width(), docked_width(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
   // The first window should be still docked.
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   // Desktop work area should be inset.
   EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() -
-            manager->docked_width_ - DockedWindowLayoutManager::kMinDockGap,
+            docked_width(manager) - min_dock_gap(),
             ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
 }
 
@@ -1074,17 +1083,17 @@
   EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
   DockedWindowLayoutManager* manager =
       static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
-  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, manager->alignment_);
-  EXPECT_EQ(w1->bounds().width(), manager->docked_width_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
+  EXPECT_EQ(w1->bounds().width(), docked_width(manager));
 
   // Detach and drag down to shelf.
   ASSERT_NO_FATAL_FAILURE(DragStart(w1.get()));
   DragMove(-40, 0);
   // Alignment is set to "NONE" when drag starts.
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
   // Release the mouse and the window should be no longer attached to the edge.
   DragEnd();
-  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, manager->alignment_);
+  EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
 
   // Drag down almost to shelf. A panel will snap, a regular window won't.
   ShelfWidget* shelf = Launcher::ForPrimaryDisplay()->shelf_widget();
diff --git a/ash/wm/frame_border_hit_test_controller.cc b/ash/wm/frame_border_hit_test_controller.cc
new file mode 100644
index 0000000..28a5726
--- /dev/null
+++ b/ash/wm/frame_border_hit_test_controller.cc
@@ -0,0 +1,109 @@
+// 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 "ash/wm/frame_border_hit_test_controller.h"
+
+#include "ash/ash_constants.h"
+#include "ash/wm/header_painter.h"
+#include "ash/wm/window_state.h"
+#include "ui/aura/env.h"
+#include "ui/aura/window.h"
+#include "ui/base/hit_test.h"
+#include "ui/views/widget/widget.h"
+#include "ui/views/widget/widget_delegate.h"
+#include "ui/views/window/non_client_view.h"
+
+namespace ash {
+
+FrameBorderHitTestController::FrameBorderHitTestController(views::Widget* frame)
+    : frame_window_(frame->GetNativeWindow()) {
+  gfx::Insets mouse_outer_insets(-kResizeOutsideBoundsSize,
+                                 -kResizeOutsideBoundsSize,
+                                 -kResizeOutsideBoundsSize,
+                                 -kResizeOutsideBoundsSize);
+  gfx::Insets touch_outer_insets = mouse_outer_insets.Scale(
+      kResizeOutsideBoundsScaleForTouch);
+  // Ensure we get resize cursors for a few pixels outside our bounds.
+  frame_window_->SetHitTestBoundsOverrideOuter(mouse_outer_insets,
+                                               touch_outer_insets);
+  // Ensure we get resize cursors just inside our bounds as well.
+  UpdateHitTestBoundsOverrideInner();
+
+  frame_window_->AddObserver(this);
+  ash::wm::GetWindowState(frame_window_)->AddObserver(this);
+}
+
+FrameBorderHitTestController::~FrameBorderHitTestController() {
+  if (frame_window_) {
+    frame_window_->RemoveObserver(this);
+    ash::wm::GetWindowState(frame_window_)->RemoveObserver(this);
+  }
+}
+
+// static
+int FrameBorderHitTestController::NonClientHitTest(
+    views::NonClientFrameView* view,
+    HeaderPainter* header_painter,
+    const gfx::Point& point) {
+  gfx::Rect expanded_bounds = view->bounds();
+  int outside_bounds = kResizeOutsideBoundsSize;
+
+  if (aura::Env::GetInstance()->is_touch_down())
+    outside_bounds *= kResizeOutsideBoundsScaleForTouch;
+  expanded_bounds.Inset(-outside_bounds, -outside_bounds);
+
+  if (!expanded_bounds.Contains(point))
+    return HTNOWHERE;
+
+  // Check the frame first, as we allow a small area overlapping the contents
+  // to be used for resize handles.
+  views::Widget* frame = view->GetWidget();
+  bool can_ever_resize = frame->widget_delegate()->CanResize();
+  // Don't allow overlapping resize handles when the window is maximized or
+  // fullscreen, as it can't be resized in those states.
+  int resize_border =
+      frame->IsMaximized() || frame->IsFullscreen() ? 0 :
+      kResizeInsideBoundsSize;
+  int frame_component = view->GetHTComponentForFrame(point,
+                                                     resize_border,
+                                                     resize_border,
+                                                     kResizeAreaCornerSize,
+                                                     kResizeAreaCornerSize,
+                                                     can_ever_resize);
+  if (frame_component != HTNOWHERE)
+    return frame_component;
+
+  int client_component = frame->client_view()->NonClientHitTest(point);
+  if (client_component != HTNOWHERE)
+    return client_component;
+
+  return header_painter->NonClientHitTest(point);
+}
+
+void FrameBorderHitTestController::UpdateHitTestBoundsOverrideInner() {
+  // Maximized and fullscreen windows don't want resize handles overlapping the
+  // content area, because when the user moves the cursor to the right screen
+  // edge we want them to be able to hit the scroll bar.
+  if (wm::GetWindowState(frame_window_)->IsMaximizedOrFullscreen()) {
+    frame_window_->set_hit_test_bounds_override_inner(gfx::Insets());
+  } else {
+    frame_window_->set_hit_test_bounds_override_inner(
+        gfx::Insets(kResizeInsideBoundsSize, kResizeInsideBoundsSize,
+                    kResizeInsideBoundsSize, kResizeInsideBoundsSize));
+  }
+}
+
+void FrameBorderHitTestController::OnWindowShowTypeChanged(
+    wm::WindowState* window_state,
+    wm::WindowShowType old_type) {
+  UpdateHitTestBoundsOverrideInner();
+}
+
+void FrameBorderHitTestController::OnWindowDestroying(aura::Window* window) {
+  frame_window_->RemoveObserver(this);
+  ash::wm::GetWindowState(frame_window_)->RemoveObserver(this);
+  frame_window_ = NULL;
+}
+
+}  // namespace ash
diff --git a/ash/wm/frame_border_hit_test_controller.h b/ash/wm/frame_border_hit_test_controller.h
new file mode 100644
index 0000000..21fe9cf
--- /dev/null
+++ b/ash/wm/frame_border_hit_test_controller.h
@@ -0,0 +1,60 @@
+// 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 ASH_WM_FRAME_BORDER_HITTEST_CONTROLLER_H_
+#define ASH_WM_FRAME_BORDER_HITTEST_CONTROLLER_H_
+
+#include "ash/ash_export.h"
+#include "ash/wm/window_state_observer.h"
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "ui/aura/window_observer.h"
+
+namespace gfx {
+class Point;
+}
+
+namespace views {
+class NonClientFrameView;
+class Widget;
+}
+
+namespace ash {
+class HeaderPainter;
+
+// Class which manages the hittest override bounds for |frame|. The override
+// bounds are used to ensure that the resize cursors are shown when the user
+// hovers over |frame|'s edges.
+class ASH_EXPORT FrameBorderHitTestController : public wm::WindowStateObserver,
+                                                public aura::WindowObserver {
+ public:
+  explicit FrameBorderHitTestController(views::Widget* frame);
+  virtual ~FrameBorderHitTestController();
+
+  // Does the non client hit test on behalf of |view|. |point| must be in the
+  // coordinates of |view|'s widget.
+  static int NonClientHitTest(views::NonClientFrameView* view,
+                              HeaderPainter* header_painter,
+                              const gfx::Point& point);
+
+ private:
+  // Updates the size of the region inside of |window_| in which the resize
+  // handles are shown based on |window_|'s show type.
+  void UpdateHitTestBoundsOverrideInner();
+
+  // WindowStateObserver override:
+  virtual void OnWindowShowTypeChanged(wm::WindowState* window_state,
+                                       wm::WindowShowType old_type) OVERRIDE;
+  // WindowObserver override:
+  virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
+
+  // The window whose hittest override bounds are being managed.
+  aura::Window* frame_window_;
+
+  DISALLOW_COPY_AND_ASSIGN(FrameBorderHitTestController);
+};
+
+}  // namespace ash
+
+#endif  // ASH_WM_FRAME_BORDER_HITTEST_CONTROLLER_H_
diff --git a/ash/wm/frame_painter.cc b/ash/wm/header_painter.cc
similarity index 74%
rename from ash/wm/frame_painter.cc
rename to ash/wm/header_painter.cc
index 42c6b3f..99f8515 100644
--- a/ash/wm/frame_painter.cc
+++ b/ash/wm/header_painter.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// 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 "ash/wm/frame_painter.h"
+#include "ash/wm/header_painter.h"
 
 #include <vector>
 
@@ -42,9 +42,6 @@
 using views::Widget;
 
 namespace {
-// TODO(jamescook): Border is specified to be a single pixel overlapping
-// the web content and may need to be built into the shadow layers instead.
-const int kBorderThickness = 0;
 // Space between left edge of window and popup window icon.
 const int kIconOffsetX = 9;
 // Height and width of window icon.
@@ -199,18 +196,20 @@
 namespace ash {
 
 // static
-int FramePainter::kActiveWindowOpacity = 255;  // 1.0
-int FramePainter::kInactiveWindowOpacity = 255;  // 1.0
-int FramePainter::kSoloWindowOpacity = 77;  // 0.3
+int HeaderPainter::kActiveWindowOpacity = 255;  // 1.0
+int HeaderPainter::kInactiveWindowOpacity = 255;  // 1.0
+int HeaderPainter::kSoloWindowOpacity = 77;  // 0.3
 
 ///////////////////////////////////////////////////////////////////////////////
-// FramePainter, public:
+// HeaderPainter, public:
 
-FramePainter::FramePainter()
+HeaderPainter::HeaderPainter()
     : frame_(NULL),
+      header_view_(NULL),
       window_icon_(NULL),
       caption_button_container_(NULL),
       window_(NULL),
+      header_height_(0),
       top_left_corner_(NULL),
       top_edge_(NULL),
       top_right_corner_(NULL),
@@ -223,7 +222,7 @@
       crossfade_theme_frame_overlay_id_(0),
       crossfade_opacity_(0) {}
 
-FramePainter::~FramePainter() {
+HeaderPainter::~HeaderPainter() {
   // Sometimes we are destroyed before the window closes, so ensure we clean up.
   if (window_) {
     window_->RemoveObserver(this);
@@ -231,14 +230,17 @@
   }
 }
 
-void FramePainter::Init(
+void HeaderPainter::Init(
     views::Widget* frame,
+    views::View* header_view,
     views::View* window_icon,
     FrameCaptionButtonContainerView* caption_button_container) {
   DCHECK(frame);
+  DCHECK(header_view);
   // window_icon may be NULL.
   DCHECK(caption_button_container);
   frame_ = frame;
+  header_view_ = header_view;
   window_icon_ = window_icon;
   caption_button_container_ = caption_button_container;
 
@@ -256,135 +258,82 @@
       rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_RIGHT).ToImageSkia();
 
   window_ = frame->GetNativeWindow();
-  gfx::Insets mouse_outer_insets(-kResizeOutsideBoundsSize,
-                                 -kResizeOutsideBoundsSize,
-                                 -kResizeOutsideBoundsSize,
-                                 -kResizeOutsideBoundsSize);
-  gfx::Insets touch_outer_insets = mouse_outer_insets.Scale(
-      kResizeOutsideBoundsScaleForTouch);
-  // Ensure we get resize cursors for a few pixels outside our bounds.
-  window_->SetHitTestBoundsOverrideOuter(mouse_outer_insets,
-                                         touch_outer_insets);
-  // Ensure we get resize cursors just inside our bounds as well.
-  UpdateHitTestBoundsOverrideInner();
 
-  // Watch for maximize/restore/fullscreen state changes.  Observer removes
-  // itself in OnWindowDestroying() below, or in the destructor if we go away
-  // before the window.
+  // Observer removes itself in OnWindowDestroying() below, or in the destructor
+  // if we go away before the window.
   window_->AddObserver(this);
   wm::GetWindowState(window_)->AddObserver(this);
 
-  // Solo-window header updates are handled by the workspace controller when
+  // Solo-window header updates are handled by the WorkspaceLayoutManager when
   // this window is added to the desktop.
 }
 
 // static
-void FramePainter::SetSoloWindowHeadersEnabled(bool enabled) {
+void HeaderPainter::SetSoloWindowHeadersEnabled(bool enabled) {
   solo_window_header_enabled = enabled;
 }
 
 // static
-void FramePainter::UpdateSoloWindowHeader(RootWindow* root_window) {
-  // Use a separate function here so callers outside of FramePainter don't need
+void HeaderPainter::UpdateSoloWindowHeader(RootWindow* root_window) {
+  // Use a separate function here so callers outside of HeaderPainter don't need
   // to know about "ignorable_window".
   UpdateSoloWindowInRoot(root_window, NULL /* ignorable_window */);
 }
 
-gfx::Rect FramePainter::GetBoundsForClientView(
-    int top_height,
-    const gfx::Rect& window_bounds) const {
-  return gfx::Rect(
-      kBorderThickness,
-      top_height,
-      std::max(0, window_bounds.width() - (2 * kBorderThickness)),
-      std::max(0, window_bounds.height() - top_height - kBorderThickness));
+// static
+gfx::Rect HeaderPainter::GetBoundsForClientView(
+    int header_height,
+    const gfx::Rect& window_bounds) {
+  gfx::Rect client_bounds(window_bounds);
+  client_bounds.Inset(0, header_height, 0, 0);
+  return client_bounds;
 }
 
-gfx::Rect FramePainter::GetWindowBoundsForClientBounds(
-    int top_height,
-    const gfx::Rect& client_bounds) const {
-  return gfx::Rect(std::max(0, client_bounds.x() - kBorderThickness),
-                   std::max(0, client_bounds.y() - top_height),
-                   client_bounds.width() + (2 * kBorderThickness),
-                   client_bounds.height() + top_height + kBorderThickness);
+// static
+gfx::Rect HeaderPainter::GetWindowBoundsForClientBounds(
+      int header_height,
+      const gfx::Rect& client_bounds) {
+  gfx::Rect window_bounds(client_bounds);
+  window_bounds.Inset(0, -header_height, 0, 0);
+  if (window_bounds.y() < 0)
+    window_bounds.set_y(0);
+  return window_bounds;
 }
 
-int FramePainter::NonClientHitTest(views::NonClientFrameView* view,
-                                   const gfx::Point& point) {
-  gfx::Rect expanded_bounds = view->bounds();
-  int outside_bounds = kResizeOutsideBoundsSize;
-
-  if (aura::Env::GetInstance()->is_touch_down())
-    outside_bounds *= kResizeOutsideBoundsScaleForTouch;
-  expanded_bounds.Inset(-outside_bounds, -outside_bounds);
-
-  if (!expanded_bounds.Contains(point))
+int HeaderPainter::NonClientHitTest(const gfx::Point& point) const {
+  gfx::Point point_in_header_view(point);
+  views::View::ConvertPointFromWidget(header_view_, &point_in_header_view);
+  if (!GetHeaderLocalBounds().Contains(point_in_header_view))
     return HTNOWHERE;
-
-  // Check the frame first, as we allow a small area overlapping the contents
-  // to be used for resize handles.
-  bool can_ever_resize = frame_->widget_delegate() ?
-      frame_->widget_delegate()->CanResize() :
-      false;
-  // Don't allow overlapping resize handles when the window is maximized or
-  // fullscreen, as it can't be resized in those states.
-  int resize_border =
-      frame_->IsMaximized() || frame_->IsFullscreen() ? 0 :
-      kResizeInsideBoundsSize;
-  int frame_component = view->GetHTComponentForFrame(point,
-                                                     resize_border,
-                                                     resize_border,
-                                                     kResizeAreaCornerSize,
-                                                     kResizeAreaCornerSize,
-                                                     can_ever_resize);
-  if (frame_component != HTNOWHERE)
-    return frame_component;
-
-  int client_component = frame_->client_view()->NonClientHitTest(point);
-  if (client_component != HTNOWHERE)
-    return client_component;
-
   if (caption_button_container_->visible()) {
     gfx::Point point_in_caption_button_container(point);
-    views::View::ConvertPointToTarget(view, caption_button_container_,
+    views::View::ConvertPointFromWidget(caption_button_container_,
         &point_in_caption_button_container);
-    client_component = caption_button_container_->NonClientHitTest(
+    int component = caption_button_container_->NonClientHitTest(
         point_in_caption_button_container);
-    if (client_component != HTNOWHERE)
-      return client_component;
+    if (component != HTNOWHERE)
+      return component;
   }
-
   // Caption is a safe default.
   return HTCAPTION;
 }
 
-gfx::Size FramePainter::GetMinimumSize(views::NonClientFrameView* view) {
-  gfx::Size min_size = frame_->client_view()->GetMinimumSize();
-  // Ensure we can display the top of the caption area.
-  gfx::Rect client_bounds = view->GetBoundsForClientView();
-  min_size.Enlarge(0, client_bounds.y());
-  // Ensure we have enough space for the window icon and buttons.  We allow
+int HeaderPainter::GetMinimumHeaderWidth() const {
+  // Ensure we have enough space for the window icon and buttons. We allow
   // the title string to collapse to zero width.
-  int title_width = GetTitleOffsetX() +
+  return GetTitleOffsetX() +
       caption_button_container_->GetMinimumSize().width();
-  if (title_width > min_size.width())
-    min_size.set_width(title_width);
-  return min_size;
 }
 
-gfx::Size FramePainter::GetMaximumSize(views::NonClientFrameView* view) {
-  return frame_->client_view()->GetMaximumSize();
-}
-
-int FramePainter::GetRightInset() const {
+int HeaderPainter::GetRightInset() const {
   return caption_button_container_->GetPreferredSize().width();
 }
 
-int FramePainter::GetThemeBackgroundXInset() const {
+int HeaderPainter::GetThemeBackgroundXInset() const {
   return kThemeFrameImageInsetX;
 }
 
-bool FramePainter::ShouldUseMinimalHeaderStyle(Themed header_themed) const {
+bool HeaderPainter::ShouldUseMinimalHeaderStyle(Themed header_themed) const {
   // Use the minimalistic header style whenever |frame_| is maximized or
   // fullscreen EXCEPT:
   // - If the user has installed a theme with custom images for the header.
@@ -395,11 +344,10 @@
       wm::GetWindowState(frame_->GetNativeWindow())->tracked_by_workspace();
 }
 
-void FramePainter::PaintHeader(views::NonClientFrameView* view,
-                               gfx::Canvas* canvas,
-                               HeaderMode header_mode,
-                               int theme_frame_id,
-                               int theme_frame_overlay_id) {
+void HeaderPainter::PaintHeader(gfx::Canvas* canvas,
+                                HeaderMode header_mode,
+                                int theme_frame_id,
+                                int theme_frame_overlay_id) {
   bool initial_paint = (previous_theme_frame_id_ == 0);
   if (!initial_paint &&
       (previous_theme_frame_id_ != theme_frame_id ||
@@ -437,7 +385,6 @@
     theme_frame_overlay = theme_provider->GetImageSkiaNamed(
         theme_frame_overlay_id);
   }
-  header_frame_bounds_ = gfx::Rect(0, 0, view->width(), theme_frame->height());
 
   int corner_radius = GetHeaderCornerRadius();
   SkPaint paint;
@@ -469,7 +416,7 @@
                                   crossfade_theme_frame,
                                   crossfade_theme_frame_overlay,
                                   paint,
-                                  header_frame_bounds_,
+                                  GetHeaderLocalBounds(),
                                   corner_radius,
                                   GetThemeBackgroundXInset());
 
@@ -484,7 +431,7 @@
                               theme_frame,
                               theme_frame_overlay,
                               paint,
-                              header_frame_bounds_,
+                              GetHeaderLocalBounds(),
                               corner_radius,
                               GetThemeBackgroundXInset());
 
@@ -502,21 +449,22 @@
     return;
 
   // Draw the top corners and edge.
+  int top_left_width = top_left_corner_->width();
   int top_left_height = top_left_corner_->height();
   canvas->DrawImageInt(*top_left_corner_,
-                       0, 0, top_left_corner_->width(), top_left_height,
-                       0, 0, top_left_corner_->width(), top_left_height,
+                       0, 0, top_left_width, top_left_height,
+                       0, 0, top_left_width, top_left_height,
                        false);
   canvas->TileImageInt(*top_edge_,
-      top_left_corner_->width(),
+      top_left_width,
       0,
-      view->width() - top_left_corner_->width() - top_right_corner_->width(),
+      header_view_->width() - top_left_width - top_right_corner_->width(),
       top_edge_->height());
   int top_right_height = top_right_corner_->height();
   canvas->DrawImageInt(*top_right_corner_,
                        0, 0,
                        top_right_corner_->width(), top_right_height,
-                       view->width() - top_right_corner_->width(), 0,
+                       header_view_->width() - top_right_corner_->width(), 0,
                        top_right_corner_->width(), top_right_height,
                        false);
 
@@ -529,7 +477,7 @@
   // Header right edge.
   int header_right_height = theme_frame->height() - top_right_height;
   canvas->TileImageInt(*header_right_edge_,
-                       view->width() - header_right_edge_->width(),
+                       header_view_->width() - header_right_edge_->width(),
                        top_right_height,
                        header_right_edge_->width(),
                        header_right_height);
@@ -538,24 +486,20 @@
   // to the edge of the window.
 }
 
-void FramePainter::PaintHeaderContentSeparator(views::NonClientFrameView* view,
-                                               gfx::Canvas* canvas) {
-  // Paint the line just above the content area.
-  gfx::Rect client_bounds = view->GetBoundsForClientView();
-  canvas->FillRect(gfx::Rect(client_bounds.x(),
-                             client_bounds.y() - kHeaderContentSeparatorSize,
-                             client_bounds.width(),
+void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas) {
+  canvas->FillRect(gfx::Rect(0,
+                             header_height_ - kHeaderContentSeparatorSize,
+                             header_view_->width(),
                              kHeaderContentSeparatorSize),
                    kHeaderContentSeparatorColor);
 }
 
-int FramePainter::HeaderContentSeparatorSize() const {
+int HeaderPainter::HeaderContentSeparatorSize() const {
   return kHeaderContentSeparatorSize;
 }
 
-void FramePainter::PaintTitleBar(views::NonClientFrameView* view,
-                                 gfx::Canvas* canvas,
-                                 const gfx::Font& title_font) {
+void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas,
+                                  const gfx::Font& title_font) {
   // The window icon is painted by its own views::View.
   views::WidgetDelegate* delegate = frame_->widget_delegate();
   if (delegate && delegate->ShouldShowWindowTitle()) {
@@ -565,7 +509,7 @@
     canvas->DrawStringInt(delegate->GetWindowTitle(),
                           title_font,
                           title_color,
-                          view->GetMirroredXForRect(title_bounds),
+                          header_view_->GetMirroredXForRect(title_bounds),
                           title_bounds.y(),
                           title_bounds.width(),
                           title_bounds.height(),
@@ -573,8 +517,7 @@
   }
 }
 
-void FramePainter::LayoutHeader(views::NonClientFrameView* view,
-                                bool shorter_layout) {
+void HeaderPainter::LayoutHeader(bool shorter_layout) {
   caption_button_container_->set_header_style(shorter_layout ?
       FrameCaptionButtonContainerView::HEADER_STYLE_SHORT :
       FrameCaptionButtonContainerView::HEADER_STYLE_TALL);
@@ -583,7 +526,7 @@
   gfx::Size caption_button_container_size =
       caption_button_container_->GetPreferredSize();
   caption_button_container_->SetBounds(
-      view->width() - caption_button_container_size.width(),
+      header_view_->width() - caption_button_container_size.width(),
       0,
       caption_button_container_size.width(),
       caption_button_container_size.height());
@@ -597,11 +540,11 @@
   }
 }
 
-void FramePainter::SchedulePaintForTitle(const gfx::Font& title_font) {
-  frame_->non_client_view()->SchedulePaintInRect(GetTitleBounds(title_font));
+void HeaderPainter::SchedulePaintForTitle(const gfx::Font& title_font) {
+  header_view_->SchedulePaintInRect(GetTitleBounds(title_font));
 }
 
-void FramePainter::OnThemeChanged() {
+void HeaderPainter::OnThemeChanged() {
   // We do not cache the images for |previous_theme_frame_id_| and
   // |previous_theme_frame_overlay_id_|. Changing the theme changes the images
   // returned from ui::ThemeProvider for |previous_theme_frame_id_|
@@ -612,30 +555,25 @@
 
   if (crossfade_animation_.get() && crossfade_animation_->is_animating()) {
     crossfade_animation_.reset();
-    frame_->non_client_view()->SchedulePaintInRect(header_frame_bounds_);
+    header_view_->SchedulePaintInRect(GetHeaderLocalBounds());
   }
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 // WindowStateObserver overrides:
-void FramePainter::OnTrackedByWorkspaceChanged(wm::WindowState* window_state,
-                                               bool old) {
+void HeaderPainter::OnTrackedByWorkspaceChanged(wm::WindowState* window_state,
+                                                bool old) {
   // When 'TrackedByWorkspace' changes, we are going to paint the header
   // differently. Schedule a paint to ensure everything is updated correctly.
   if (window_state->tracked_by_workspace())
-    frame_->non_client_view()->SchedulePaint();
-}
-
-void FramePainter::OnWindowShowTypeChanged(wm::WindowState* window_state,
-                                           wm::WindowShowType old_type) {
-  UpdateHitTestBoundsOverrideInner();
+    header_view_->SchedulePaint();
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 // aura::WindowObserver overrides:
 
-void FramePainter::OnWindowVisibilityChanged(aura::Window* window,
-                                             bool visible) {
+void HeaderPainter::OnWindowVisibilityChanged(aura::Window* window,
+                                              bool visible) {
   // OnWindowVisibilityChanged can be called for the child windows of |window_|.
   if (window != window_)
     return;
@@ -645,7 +583,7 @@
   UpdateSoloWindowInRoot(window_->GetRootWindow(), visible ? NULL : window_);
 }
 
-void FramePainter::OnWindowDestroying(aura::Window* destroying) {
+void HeaderPainter::OnWindowDestroying(aura::Window* destroying) {
   DCHECK_EQ(window_, destroying);
 
   // Must be removed here and not in the destructor, as the aura::Window is
@@ -660,7 +598,7 @@
   window_ = NULL;
 }
 
-void FramePainter::OnWindowBoundsChanged(aura::Window* window,
+void HeaderPainter::OnWindowBoundsChanged(aura::Window* window,
                                          const gfx::Rect& old_bounds,
                                          const gfx::Rect& new_bounds) {
   // TODO(sky): this isn't quite right. What we really want is a method that
@@ -672,13 +610,13 @@
   }
 }
 
-void FramePainter::OnWindowAddedToRootWindow(aura::Window* window) {
+void HeaderPainter::OnWindowAddedToRootWindow(aura::Window* window) {
   // Needs to trigger the window appearance change if the window moves across
   // root windows and a solo window is already in the new root.
   UpdateSoloWindowInRoot(window->GetRootWindow(), NULL /* ignore_window */);
 }
 
-void FramePainter::OnWindowRemovingFromRootWindow(aura::Window* window) {
+void HeaderPainter::OnWindowRemovingFromRootWindow(aura::Window* window) {
   // Needs to trigger the window appearance change if the window moves across
   // root windows and only one window is left in the previous root.  Because
   // |window| is not yet moved, |window| has to be ignored.
@@ -688,25 +626,29 @@
 ///////////////////////////////////////////////////////////////////////////////
 // gfx::AnimationDelegate overrides:
 
-void FramePainter::AnimationProgressed(const gfx::Animation* animation) {
-  frame_->non_client_view()->SchedulePaintInRect(header_frame_bounds_);
+void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) {
+  header_view_->SchedulePaintInRect(GetHeaderLocalBounds());
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-// FramePainter, private:
+// HeaderPainter, private:
 
-int FramePainter::GetTitleOffsetX() const {
+gfx::Rect HeaderPainter::GetHeaderLocalBounds() const {
+  return gfx::Rect(header_view_->width(), header_height_);
+}
+
+int HeaderPainter::GetTitleOffsetX() const {
   return window_icon_ ?
       window_icon_->bounds().right() + kTitleIconOffsetX :
       kTitleNoIconOffsetX;
 }
 
-int FramePainter::GetCaptionButtonContainerCenterY() const {
+int HeaderPainter::GetCaptionButtonContainerCenterY() const {
   return caption_button_container_->y() +
       caption_button_container_->height() / 2;
 }
 
-int FramePainter::GetHeaderCornerRadius() const {
+int HeaderPainter::GetHeaderCornerRadius() const {
   // Use square corners for maximized and fullscreen windows when they are
   // tracked by the workspace code. (Windows which are not tracked by the
   // workspace code are used for tab dragging.)
@@ -716,7 +658,7 @@
   return square_corners ? 0 : kCornerRadius;
 }
 
-int FramePainter::GetHeaderOpacity(
+int HeaderPainter::GetHeaderOpacity(
     HeaderMode header_mode,
     int theme_frame_id,
     int theme_frame_overlay_id) const {
@@ -742,7 +684,7 @@
   return kInactiveWindowOpacity;
 }
 
-bool FramePainter::UseSoloWindowHeader() const {
+bool HeaderPainter::UseSoloWindowHeader() const {
   if (!solo_window_header_enabled)
     return false;
   // Don't use transparent headers for panels, pop-ups, etc.
@@ -755,7 +697,7 @@
 }
 
 // static
-bool FramePainter::UseSoloWindowHeaderInRoot(RootWindow* root_window,
+bool HeaderPainter::UseSoloWindowHeaderInRoot(RootWindow* root_window,
                                              Window* ignore_window) {
   int visible_window_count = 0;
   std::vector<Window*> windows = GetWindowsForSoloHeaderUpdate(root_window);
@@ -780,7 +722,7 @@
 }
 
 // static
-void FramePainter::UpdateSoloWindowInRoot(RootWindow* root,
+void HeaderPainter::UpdateSoloWindowInRoot(RootWindow* root,
                                           Window* ignore_window) {
 #if defined(OS_WIN)
   // Non-Ash Windows doesn't do solo-window counting for transparency effects,
@@ -810,28 +752,15 @@
   }
 }
 
-void FramePainter::UpdateHitTestBoundsOverrideInner() {
-  // Maximized and fullscreen windows don't want resize handles overlapping the
-  // content area, because when the user moves the cursor to the right screen
-  // edge we want them to be able to hit the scroll bar.
-  if (wm::GetWindowState(window_)->IsMaximizedOrFullscreen()) {
-    window_->set_hit_test_bounds_override_inner(gfx::Insets());
-  } else {
-    window_->set_hit_test_bounds_override_inner(
-        gfx::Insets(kResizeInsideBoundsSize, kResizeInsideBoundsSize,
-                    kResizeInsideBoundsSize, kResizeInsideBoundsSize));
-  }
-}
-
-void FramePainter::SchedulePaintForHeader() {
+void HeaderPainter::SchedulePaintForHeader() {
   int top_left_height = top_left_corner_->height();
   int top_right_height = top_right_corner_->height();
-  frame_->non_client_view()->SchedulePaintInRect(
-      gfx::Rect(0, 0, frame_->non_client_view()->width(),
+  header_view_->SchedulePaintInRect(
+      gfx::Rect(0, 0, header_view_->width(),
                 std::max(top_left_height, top_right_height)));
 }
 
-gfx::Rect FramePainter::GetTitleBounds(const gfx::Font& title_font) {
+gfx::Rect HeaderPainter::GetTitleBounds(const gfx::Font& title_font) {
   int title_x = GetTitleOffsetX();
   // Center the text with respect to the caption button container. This way it
   // adapts to the caption button height and aligns exactly with the window
diff --git a/ash/wm/frame_painter.h b/ash/wm/header_painter.h
similarity index 64%
rename from ash/wm/frame_painter.h
rename to ash/wm/header_painter.h
index 49b3398..0d6c3d8 100644
--- a/ash/wm/frame_painter.h
+++ b/ash/wm/header_painter.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// 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 ASH_WM_FRAME_PAINTER_H_
-#define ASH_WM_FRAME_PAINTER_H_
+#ifndef ASH_WM_HEADER_PAINTER_H_
+#define ASH_WM_HEADER_PAINTER_H_
 
 #include "ash/ash_export.h"
 #include "ash/wm/window_state_observer.h"
@@ -28,7 +28,6 @@
 class SlideAnimation;
 }
 namespace views {
-class NonClientFrameView;
 class View;
 class Widget;
 }
@@ -36,12 +35,10 @@
 namespace ash {
 class FrameCaptionButtonContainerView;
 
-// Helper class for painting window frames.  Exists to share code between
-// various implementations of views::NonClientFrameView.  Canonical source of
-// layout constants for Ash window frames.
-class ASH_EXPORT FramePainter : public aura::WindowObserver,
-                                public gfx::AnimationDelegate,
-                                public wm::WindowStateObserver {
+// Helper class for painting the window header.
+class ASH_EXPORT HeaderPainter : public aura::WindowObserver,
+                                 public gfx::AnimationDelegate,
+                                 public wm::WindowStateObserver {
  public:
   // Opacity values for the window header in various states, from 0 to 255.
   static int kActiveWindowOpacity;
@@ -58,17 +55,12 @@
     THEMED_NO
   };
 
-  // What happens when the |size_button_| is pressed.
-  enum SizeButtonBehavior {
-    SIZE_BUTTON_MINIMIZES,
-    SIZE_BUTTON_MAXIMIZES
-  };
+  HeaderPainter();
+  virtual ~HeaderPainter();
 
-  FramePainter();
-  virtual ~FramePainter();
-
-  // |frame| and buttons are used for layout and are not owned.
+  // None of the parameters are owned.
   void Init(views::Widget* frame,
+            views::View* header_view,
             views::View* window_icon,
             FrameCaptionButtonContainerView* caption_button_container);
 
@@ -79,16 +71,28 @@
   // using frame painters in |root_window|.
   static void UpdateSoloWindowHeader(aura::RootWindow* root_window);
 
-  // Helpers for views::NonClientFrameView implementations.
-  gfx::Rect GetBoundsForClientView(int top_height,
-                                   const gfx::Rect& window_bounds) const;
-  gfx::Rect GetWindowBoundsForClientBounds(
-      int top_height,
-      const gfx::Rect& client_bounds) const;
-  int NonClientHitTest(views::NonClientFrameView* view,
-                       const gfx::Point& point);
-  gfx::Size GetMinimumSize(views::NonClientFrameView* view);
-  gfx::Size GetMaximumSize(views::NonClientFrameView* view);
+  // Returns the bounds of the client view for a window with |header_height|
+  // and |window_bounds|. The return value and |window_bounds| are in the
+  // views::NonClientView's coordinates.
+  static gfx::Rect GetBoundsForClientView(int header_height,
+                                          const gfx::Rect& window_bounds);
+
+  // Returns the bounds of the window given |header_height| and |client_bounds|.
+  // The return value and |client_bounds| are in the views::NonClientView's
+  // coordinates.
+  static gfx::Rect GetWindowBoundsForClientBounds(
+      int header_height,
+      const gfx::Rect& client_bounds);
+
+  // Determines the window HT* code at |point|. Returns HTNOWHERE if |point| is
+  // not within the top |header_height_| of |header_view_|. |point| is in the
+  // coordinates of |header_view_|'s widget. The client view must be hittested
+  // before calling this method because a browser's tabs are in the top
+  // |header_height_| of |header_view_|.
+  int NonClientHitTest(const gfx::Point& point) const;
+
+  // Returns the header's minimum width.
+  int GetMinimumHeaderWidth() const;
 
   // Returns the inset from the right edge.
   int GetRightInset() const;
@@ -99,32 +103,34 @@
   // Returns true if the header should be painted using a minimalistic style.
   bool ShouldUseMinimalHeaderStyle(Themed header_themed) const;
 
-  // Paints the frame header.
+  // Paints the header.
   // |theme_frame_overlay_id| is 0 if no overlay image should be used.
-  void PaintHeader(views::NonClientFrameView* view,
-                   gfx::Canvas* canvas,
+  void PaintHeader(gfx::Canvas* canvas,
                    HeaderMode header_mode,
                    int theme_frame_id,
                    int theme_frame_overlay_id);
 
-  // Paints the header/content separator line.  Exists as a separate function
+  // Paints the header/content separator line. Exists as a separate function
   // because some windows with complex headers (e.g. browsers with tab strips)
   // need to draw their own line.
-  void PaintHeaderContentSeparator(views::NonClientFrameView* view,
-                                   gfx::Canvas* canvas);
+  void PaintHeaderContentSeparator(gfx::Canvas* canvas);
 
   // Returns size of the header/content separator line in pixels.
   int HeaderContentSeparatorSize() const;
 
   // Paint the title bar, primarily the title string.
-  void PaintTitleBar(views::NonClientFrameView* view,
-                     gfx::Canvas* canvas,
-                     const gfx::Font& title_font);
+  void PaintTitleBar(gfx::Canvas* canvas, const gfx::Font& title_font);
 
   // Performs layout for the header based on whether we want the shorter
   // appearance. |shorter_layout| is typically used for maximized windows, but
   // not always.
-  void LayoutHeader(views::NonClientFrameView* view, bool shorter_layout);
+  void LayoutHeader(bool shorter_layout);
+
+  // Sets the height of the header. The height of the header affects painting,
+  // and non client hit tests. It does not affect layout.
+  void set_header_height(int header_height) {
+    header_height_ = header_height;
+  }
 
   // Schedule a re-paint of the entire title.
   void SchedulePaintForTitle(const gfx::Font& title_font);
@@ -142,30 +148,33 @@
   virtual void OnWindowAddedToRootWindow(aura::Window* window) OVERRIDE;
   virtual void OnWindowRemovingFromRootWindow(aura::Window* window) OVERRIDE;
 
-  // ash::WindowStateObserver overrides:
+  // ash::WindowStateObserver override:
   virtual void OnTrackedByWorkspaceChanged(wm::WindowState* window_state,
                                            bool old) OVERRIDE;
-  virtual void OnWindowShowTypeChanged(wm::WindowState* window_state,
-                                       wm::WindowShowType old_type) OVERRIDE;
 
   // Overridden from gfx::AnimationDelegate
   virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE;
 
  private:
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, CreateAndDeleteSingleWindow);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeader);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderWithApp);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderWithPanel);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderModal);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderConstrained);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderNotDrawn);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, UseSoloWindowHeaderMultiDisplay);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, GetHeaderOpacity);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, TitleIconAlignment);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest, ChildWindowVisibility);
-  FRIEND_TEST_ALL_PREFIXES(FramePainterTest,
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, CreateAndDeleteSingleWindow);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeader);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderWithApp);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderWithPanel);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderModal);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderConstrained);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderNotDrawn);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, UseSoloWindowHeaderMultiDisplay);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, GetHeaderOpacity);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, TitleIconAlignment);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, ChildWindowVisibility);
+  FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest,
                            NoCrashShutdownWithAlwaysOnTopWindow);
 
+  // Returns the header bounds in the coordinates of |header_view_|. The header
+  // is assumed to be positioned at the top left corner of |header_view_| and to
+  // have the same width as |header_view_|.
+  gfx::Rect GetHeaderLocalBounds() const;
+
   // Returns the offset between window left edge and title string.
   int GetTitleOffsetX() const;
 
@@ -200,10 +209,6 @@
   static void UpdateSoloWindowInRoot(aura::RootWindow* root_window,
                                      aura::Window* ignore_window);
 
-  // Updates the size of the region inside of |window_| in which the resize
-  // handles are shown based on |window_|'s show type.
-  void UpdateHitTestBoundsOverrideInner();
-
   // Schedules a paint for the header. Used when transitioning from no header to
   // a header (or other way around).
   void SchedulePaintForHeader();
@@ -214,10 +219,14 @@
 
   // Not owned
   views::Widget* frame_;
+  views::View* header_view_;
   views::View* window_icon_;  // May be NULL.
   FrameCaptionButtonContainerView* caption_button_container_;
   aura::Window* window_;
 
+  // The height of the header.
+  int header_height_;
+
   // Window frame header/caption parts.
   const gfx::ImageSkia* top_left_corner_;
   const gfx::ImageSkia* top_edge_;
@@ -235,12 +244,11 @@
   int crossfade_theme_frame_overlay_id_;
   int crossfade_opacity_;
 
-  gfx::Rect header_frame_bounds_;
   scoped_ptr<gfx::SlideAnimation> crossfade_animation_;
 
-  DISALLOW_COPY_AND_ASSIGN(FramePainter);
+  DISALLOW_COPY_AND_ASSIGN(HeaderPainter);
 };
 
 }  // namespace ash
 
-#endif  // ASH_WM_FRAME_PAINTER_H_
+#endif  // ASH_WM_HEADER_PAINTER_H_
diff --git a/ash/wm/frame_painter_unittest.cc b/ash/wm/header_painter_unittest.cc
similarity index 80%
rename from ash/wm/frame_painter_unittest.cc
rename to ash/wm/header_painter_unittest.cc
index 006358e..4691911 100644
--- a/ash/wm/frame_painter_unittest.cc
+++ b/ash/wm/header_painter_unittest.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// 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 "ash/wm/frame_painter.h"
+#include "ash/wm/header_painter.h"
 
 #include "ash/ash_constants.h"
 #include "ash/root_window_settings.h"
@@ -27,7 +27,7 @@
 #include "ui/views/widget/widget_observer.h"
 #include "ui/views/window/non_client_view.h"
 
-using ash::FramePainter;
+using ash::HeaderPainter;
 using views::NonClientFrameView;
 using views::Widget;
 
@@ -90,19 +90,19 @@
  public:
   ScopedOpacityConstantModifier()
       : initial_active_window_opacity_(
-            ash::FramePainter::kActiveWindowOpacity),
+            ash::HeaderPainter::kActiveWindowOpacity),
         initial_inactive_window_opacity_(
-            ash::FramePainter::kInactiveWindowOpacity),
-        initial_solo_window_opacity_(ash::FramePainter::kSoloWindowOpacity) {
-    ash::FramePainter::kActiveWindowOpacity = 100;
-    ash::FramePainter::kInactiveWindowOpacity = 120;
-    ash::FramePainter::kSoloWindowOpacity = 140;
+            ash::HeaderPainter::kInactiveWindowOpacity),
+        initial_solo_window_opacity_(ash::HeaderPainter::kSoloWindowOpacity) {
+    ash::HeaderPainter::kActiveWindowOpacity = 100;
+    ash::HeaderPainter::kInactiveWindowOpacity = 120;
+    ash::HeaderPainter::kSoloWindowOpacity = 140;
   }
   ~ScopedOpacityConstantModifier() {
-    ash::FramePainter::kActiveWindowOpacity = initial_active_window_opacity_;
-    ash::FramePainter::kInactiveWindowOpacity =
+    ash::HeaderPainter::kActiveWindowOpacity = initial_active_window_opacity_;
+    ash::HeaderPainter::kInactiveWindowOpacity =
         initial_inactive_window_opacity_;
-    ash::FramePainter::kSoloWindowOpacity = initial_solo_window_opacity_;
+    ash::HeaderPainter::kSoloWindowOpacity = initial_solo_window_opacity_;
   }
 
  private:
@@ -113,9 +113,9 @@
   DISALLOW_COPY_AND_ASSIGN(ScopedOpacityConstantModifier);
 };
 
-// Creates a new FramePainter with empty buttons. Caller owns the memory.
-FramePainter* CreateTestPainter(Widget* widget) {
-  FramePainter* painter = new FramePainter();
+// Creates a new HeaderPainter with empty buttons. Caller owns the memory.
+HeaderPainter* CreateTestPainter(Widget* widget) {
+  HeaderPainter* painter = new HeaderPainter();
   NonClientFrameView* frame_view = widget->non_client_view()->frame_view();
   ash::FrameCaptionButtonContainerView* container =
       new ash::FrameCaptionButtonContainerView(
@@ -124,42 +124,42 @@
   // Add the container to the widget's non-client frame view so that it will be
   // deleted when the widget is destroyed.
   frame_view->AddChildView(container);
-  painter->Init(widget, NULL, container);
+  painter->Init(widget, frame_view, NULL, container);
   return painter;
 }
 
 // Self-owned manager of the frame painter which deletes the painter and itself
 // when its widget is closed.
-class FramePainterOwner : views::WidgetObserver {
+class HeaderPainterOwner : views::WidgetObserver {
  public:
-  explicit FramePainterOwner(Widget* widget)
-      : frame_painter_(CreateTestPainter(widget)) {
+  explicit HeaderPainterOwner(Widget* widget)
+      : header_painter_(CreateTestPainter(widget)) {
     widget->AddObserver(this);
   }
 
-  virtual ~FramePainterOwner() {}
+  virtual ~HeaderPainterOwner() {}
 
-  FramePainter* frame_painter() { return frame_painter_.get(); }
+  HeaderPainter* header_painter() { return header_painter_.get(); }
 
  private:
   virtual void OnWidgetDestroying(Widget* widget) OVERRIDE {
     widget->RemoveObserver(this);
-    // Do not delete directly here, since the task of FramePainter causing
+    // Do not delete directly here, since the task of HeaderPainter causing
     // the crash of crbug.com/273310 may run after this class handles this
     // event.
     base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
   }
 
-  scoped_ptr<FramePainter> frame_painter_;
+  scoped_ptr<HeaderPainter> header_painter_;
 
-  DISALLOW_COPY_AND_ASSIGN(FramePainterOwner);
+  DISALLOW_COPY_AND_ASSIGN(HeaderPainterOwner);
 };
 
 }  // namespace
 
 namespace ash {
 
-class FramePainterTest : public ash::test::AshTestBase {
+class HeaderPainterTest : public ash::test::AshTestBase {
  public:
   // Creates a test widget that owns its native widget.
   Widget* CreateTestWidget() {
@@ -204,13 +204,13 @@
   }
 };
 
-TEST_F(FramePainterTest, CreateAndDeleteSingleWindow) {
+TEST_F(HeaderPainterTest, CreateAndDeleteSingleWindow) {
   // Ensure that creating/deleting a window works well and doesn't cause
   // crashes.  See crbug.com/155634
   aura::RootWindow* root = Shell::GetTargetRootWindow();
 
   scoped_ptr<Widget> widget(CreateTestWidget());
-  scoped_ptr<FramePainter> painter(CreateTestPainter(widget.get()));
+  scoped_ptr<HeaderPainter> painter(CreateTestPainter(widget.get()));
   widget->Show();
 
   // We only have one window, so it should use a solo header.
@@ -229,10 +229,10 @@
   EXPECT_TRUE(internal::GetRootWindowSettings(root)->solo_window_header);
 }
 
-TEST_F(FramePainterTest, UseSoloWindowHeader) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeader) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // We only have one window, so it should use a solo header.
@@ -240,7 +240,7 @@
 
   // Create a second widget and painter.
   scoped_ptr<Widget> w2(CreateTestWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->Show();
 
   // Now there are two windows, so we should not use solo headers. This only
@@ -266,7 +266,7 @@
 
   // Open an always-on-top widget (which lives in a different container).
   scoped_ptr<Widget> w3(CreateAlwaysOnTopWidget());
-  scoped_ptr<FramePainter> p3(CreateTestPainter(w3.get()));
+  scoped_ptr<HeaderPainter> p3(CreateTestPainter(w3.get()));
   w3->Show();
   EXPECT_FALSE(p3->UseSoloWindowHeader());
 
@@ -277,10 +277,10 @@
 
 // An open V2 app window should cause browser windows not to use the
 // solo window header.
-TEST_F(FramePainterTest, UseSoloWindowHeaderWithApp) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeaderWithApp) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // We only have one window, so it should use a solo header.
@@ -305,10 +305,10 @@
 
 // Panels should not "count" for computing solo window headers, and the panel
 // itself should always have an opaque header.
-TEST_F(FramePainterTest, UseSoloWindowHeaderWithPanel) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeaderWithPanel) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // We only have one window, so it should use a solo header.
@@ -316,7 +316,7 @@
 
   // Create a panel and a painter for it.
   scoped_ptr<Widget> w2(CreatePanelWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->Show();
 
   // Despite two windows, the first window should still be considered "solo"
@@ -333,10 +333,10 @@
 }
 
 // Modal dialogs should not use solo headers.
-TEST_F(FramePainterTest, UseSoloWindowHeaderModal) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeaderModal) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // We only have one window, so it should use a solo header.
@@ -344,7 +344,7 @@
 
   // Create a fake modal window.
   scoped_ptr<Widget> w2(CreateTestWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->GetNativeWindow()->SetProperty(aura::client::kModalKey,
                                      ui::MODAL_TYPE_WINDOW);
   w2->Show();
@@ -358,10 +358,10 @@
 }
 
 // Constrained windows should not use solo headers.
-TEST_F(FramePainterTest, UseSoloWindowHeaderConstrained) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeaderConstrained) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // We only have one window, so it should use a solo header.
@@ -369,7 +369,7 @@
 
   // Create a fake constrained window.
   scoped_ptr<Widget> w2(CreateTestWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->GetNativeWindow()->SetProperty(ash::kConstrainedWindowKey, true);
   w2->Show();
 
@@ -382,10 +382,10 @@
 }
 
 // Non-drawing windows should not affect the solo computation.
-TEST_F(FramePainterTest, UseSoloWindowHeaderNotDrawn) {
+TEST_F(HeaderPainterTest, UseSoloWindowHeaderNotDrawn) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> widget(CreateTestWidget());
-  scoped_ptr<FramePainter> painter(CreateTestPainter(widget.get()));
+  scoped_ptr<HeaderPainter> painter(CreateTestPainter(widget.get()));
   widget->Show();
 
   // We only have one window, so it should use a solo header.
@@ -413,7 +413,7 @@
         UseSoloWindowHeaderMultiDisplay
 #endif
 
-TEST_F(FramePainterTest, MAYBE_UseSoloWindowHeaderMultiDisplay) {
+TEST_F(HeaderPainterTest, MAYBE_UseSoloWindowHeaderMultiDisplay) {
   if (!SupportsMultipleDisplays())
     return;
 
@@ -421,12 +421,12 @@
 
   // Create two widgets and painters for them.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->SetBounds(gfx::Rect(0, 0, 100, 100));
   w1->Show();
   WindowRepaintChecker checker1(w1->GetNativeWindow());
   scoped_ptr<Widget> w2(CreateTestWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->SetBounds(gfx::Rect(0, 0, 100, 100));
   w2->Show();
   WindowRepaintChecker checker2(w2->GetNativeWindow());
@@ -447,11 +447,11 @@
 
   // Open two more windows in the primary display.
   scoped_ptr<Widget> w3(CreateTestWidget());
-  scoped_ptr<FramePainter> p3(CreateTestPainter(w3.get()));
+  scoped_ptr<HeaderPainter> p3(CreateTestPainter(w3.get()));
   w3->SetBounds(gfx::Rect(0, 0, 100, 100));
   w3->Show();
   scoped_ptr<Widget> w4(CreateTestWidget());
-  scoped_ptr<FramePainter> p4(CreateTestPainter(w4.get()));
+  scoped_ptr<HeaderPainter> p4(CreateTestPainter(w4.get()));
   w4->SetBounds(gfx::Rect(0, 0, 100, 100));
   w4->Show();
 
@@ -507,10 +507,10 @@
   EXPECT_TRUE(checker1.IsPaintScheduledAndReset());
 }
 
-TEST_F(FramePainterTest, GetHeaderOpacity) {
+TEST_F(HeaderPainterTest, GetHeaderOpacity) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // Modify the values of the opacity constants so that they each have a
@@ -518,93 +518,96 @@
   ScopedOpacityConstantModifier opacity_constant_modifier;
 
   // Solo active window has solo window opacity.
-  EXPECT_EQ(FramePainter::kSoloWindowOpacity,
-            p1->GetHeaderOpacity(FramePainter::ACTIVE,
+  EXPECT_EQ(HeaderPainter::kSoloWindowOpacity,
+            p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 
   // Create a second widget and painter.
   scoped_ptr<Widget> w2(CreateTestWidget());
-  scoped_ptr<FramePainter> p2(CreateTestPainter(w2.get()));
+  scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
   w2->Show();
 
   // Active window has active window opacity.
-  EXPECT_EQ(FramePainter::kActiveWindowOpacity,
-            p2->GetHeaderOpacity(FramePainter::ACTIVE,
+  EXPECT_EQ(HeaderPainter::kActiveWindowOpacity,
+            p2->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 
   // Inactive window has inactive window opacity.
-  EXPECT_EQ(FramePainter::kInactiveWindowOpacity,
-            p2->GetHeaderOpacity(FramePainter::INACTIVE,
+  EXPECT_EQ(HeaderPainter::kInactiveWindowOpacity,
+            p2->GetHeaderOpacity(HeaderPainter::INACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_INACTIVE,
                                  0));
 
   // Regular maximized windows are fully opaque.
   wm::GetWindowState(w1->GetNativeWindow())->Maximize();
   EXPECT_EQ(255,
-            p1->GetHeaderOpacity(FramePainter::ACTIVE,
+            p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 }
 
 // Test that the minimal header style is used in the proper situations.
-TEST_F(FramePainterTest, MinimalHeaderStyle) {
+TEST_F(HeaderPainterTest, MinimalHeaderStyle) {
   // Create a widget and a painter for it.
   scoped_ptr<Widget> w(CreateTestWidget());
-  scoped_ptr<FramePainter> p(CreateTestPainter(w.get()));
+  scoped_ptr<HeaderPainter> p(CreateTestPainter(w.get()));
   w->Show();
 
   // Regular non-maximized windows should not use the minimal header style.
-  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_NO));
+  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_NO));
 
   // Regular maximized windows should use the minimal header style.
   w->Maximize();
-  EXPECT_TRUE(p->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_NO));
+  EXPECT_TRUE(p->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_NO));
 
   // Test cases where the maximized window should not use the minimal header
   // style.
-  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_YES));
+  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_YES));
 
   wm::GetWindowState(w->GetNativeWindow())->SetTrackedByWorkspace(false);
-  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_NO));
+  EXPECT_FALSE(p->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_NO));
   wm::GetWindowState(w->GetNativeWindow())->SetTrackedByWorkspace(true);
 }
 
 // Ensure the title text is vertically aligned with the window icon.
-TEST_F(FramePainterTest, TitleIconAlignment) {
+TEST_F(HeaderPainterTest, TitleIconAlignment) {
   scoped_ptr<Widget> w(CreateTestWidget());
-  FramePainter p;
+  HeaderPainter p;
   ash::FrameCaptionButtonContainerView container(w.get(),
       ash::FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
   views::View window_icon;
   window_icon.SetBounds(0, 0, 16, 16);
-  p.Init(w.get(), &window_icon, &container);
+  p.Init(w.get(),
+         w->non_client_view()->frame_view(),
+         &window_icon,
+         &container);
   w->SetBounds(gfx::Rect(0, 0, 500, 500));
   w->Show();
 
   // Title and icon are aligned when shorter_header is false.
-  p.LayoutHeader(w->non_client_view()->frame_view(), false);
+  p.LayoutHeader(false);
   gfx::Font default_font;
   gfx::Rect large_header_title_bounds = p.GetTitleBounds(default_font);
   EXPECT_EQ(window_icon.bounds().CenterPoint().y(),
             large_header_title_bounds.CenterPoint().y());
 
   // Title and icon are aligned when shorter_header is true.
-  p.LayoutHeader(w->non_client_view()->frame_view(), true);
+  p.LayoutHeader(true);
   gfx::Rect short_header_title_bounds = p.GetTitleBounds(default_font);
   EXPECT_EQ(window_icon.bounds().CenterPoint().y(),
             short_header_title_bounds.CenterPoint().y());
 }
 
-TEST_F(FramePainterTest, ChildWindowVisibility) {
+TEST_F(HeaderPainterTest, ChildWindowVisibility) {
   scoped_ptr<Widget> w1(CreateTestWidget());
-  scoped_ptr<FramePainter> p1(CreateTestPainter(w1.get()));
+  scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
   w1->Show();
 
   // Solo active window has solo window opacity.
-  EXPECT_EQ(FramePainter::kSoloWindowOpacity,
-            p1->GetHeaderOpacity(FramePainter::ACTIVE,
+  EXPECT_EQ(HeaderPainter::kSoloWindowOpacity,
+            p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 
@@ -617,20 +620,20 @@
   w2->Show();
 
   // Still has solo header if child window is added.
-  EXPECT_EQ(FramePainter::kSoloWindowOpacity,
-            p1->GetHeaderOpacity(FramePainter::ACTIVE,
+  EXPECT_EQ(HeaderPainter::kSoloWindowOpacity,
+            p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 
   // Change the visibility of w2 and verifies w1 still has solo header.
   w2->Hide();
-  EXPECT_EQ(FramePainter::kSoloWindowOpacity,
-            p1->GetHeaderOpacity(FramePainter::ACTIVE,
+  EXPECT_EQ(HeaderPainter::kSoloWindowOpacity,
+            p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
                                  IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
                                  0));
 }
 
-TEST_F(FramePainterTest, NoCrashShutdownWithAlwaysOnTopWindow) {
+TEST_F(HeaderPainterTest, NoCrashShutdownWithAlwaysOnTopWindow) {
   // Create normal window and an always-on-top window, and leave it as is
   // and finish the test, then verify it doesn't cause a crash. See
   // crbug.com/273310.  Note that those widgets will be deleted at
@@ -639,8 +642,8 @@
   Widget::InitParams params1;
   params1.context = CurrentContext();
   w1->Init(params1);
-  FramePainterOwner* o1 = new FramePainterOwner(w1);
-  FramePainter* p1 = o1->frame_painter();
+  HeaderPainterOwner* o1 = new HeaderPainterOwner(w1);
+  HeaderPainter* p1 = o1->header_painter();
   w1->SetBounds(gfx::Rect(0, 0, 100, 100));
   w1->Show();
   EXPECT_TRUE(p1->UseSoloWindowHeader());
@@ -650,8 +653,8 @@
   params2.context = CurrentContext();
   params2.keep_on_top = true;
   w2->Init(params2);
-  FramePainterOwner* o2 = new FramePainterOwner(w2);
-  FramePainter* p2 = o2->frame_painter();
+  HeaderPainterOwner* o2 = new HeaderPainterOwner(w2);
+  HeaderPainter* p2 = o2->header_painter();
   w2->Show();
   EXPECT_FALSE(p1->UseSoloWindowHeader());
   EXPECT_FALSE(p2->UseSoloWindowHeader());
diff --git a/ash/wm/overview/window_overview.cc b/ash/wm/overview/window_overview.cc
index a805c7d..03d973c 100644
--- a/ash/wm/overview/window_overview.cc
+++ b/ash/wm/overview/window_overview.cc
@@ -295,9 +295,10 @@
     for (size_t i = 0; i < kSwitchableWindowContainerIdsLength; ++i) {
       aura::Window* container = Shell::GetContainer(*root_iter,
           kSwitchableWindowContainerIds[i]);
-      for (aura::Window::Windows::const_iterator iter =
-           container->children().begin(); iter != container->children().end();
-           ++iter) {
+      // Copy the children list as it can change during iteration.
+      aura::Window::Windows children(container->children());
+      for (aura::Window::Windows::const_iterator iter = children.begin();
+           iter != children.end(); ++iter) {
         if (GetTargetedWindow(*iter) || !(*iter)->IsVisible())
           continue;
         ui::ScopedLayerAnimationSettings settings(
diff --git a/ash/wm/overview/window_selector_unittest.cc b/ash/wm/overview/window_selector_unittest.cc
index eda6a8a..a2bd8ea 100644
--- a/ash/wm/overview/window_selector_unittest.cc
+++ b/ash/wm/overview/window_selector_unittest.cc
@@ -9,7 +9,7 @@
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/test/shell_test_api.h"
 #include "ash/test/test_launcher_delegate.h"
 #include "ash/wm/mru_window_tracker.h"
@@ -58,9 +58,9 @@
     test::AshTestBase::SetUp();
     ASSERT_TRUE(test::TestLauncherDelegate::instance());
 
-    launcher_view_test_.reset(new test::LauncherViewTestAPI(
-        test::LauncherTestAPI(Launcher::ForPrimaryDisplay()).launcher_view()));
-    launcher_view_test_->SetAnimationDuration(1);
+    shelf_view_test_.reset(new test::ShelfViewTestAPI(
+        test::LauncherTestAPI(Launcher::ForPrimaryDisplay()).shelf_view()));
+    shelf_view_test_->SetAnimationDuration(1);
   }
 
   aura::Window* CreateWindow(const gfx::Rect& bounds) {
@@ -79,7 +79,7 @@
     aura::Window* window = CreateTestWindowInShellWithDelegateAndType(
         NULL, aura::client::WINDOW_TYPE_PANEL, 0, bounds);
     test::TestLauncherDelegate::instance()->AddLauncherItem(window);
-    launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+    shelf_view_test()->RunMessageLoopUntilAnimationsDone();
     return window;
   }
 
@@ -155,14 +155,14 @@
         Shell::GetPrimaryRootWindow())->GetFocusedWindow();
   }
 
-  test::LauncherViewTestAPI* launcher_view_test() {
-    return launcher_view_test_.get();
+  test::ShelfViewTestAPI* shelf_view_test() {
+    return shelf_view_test_.get();
   }
 
  private:
   aura::test::TestWindowDelegate delegate_;
   NonActivatableActivationDelegate non_activatable_activation_delegate_;
-  scoped_ptr<test::LauncherViewTestAPI> launcher_view_test_;
+  scoped_ptr<test::ShelfViewTestAPI> shelf_view_test_;
 
   DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest);
 };
@@ -351,6 +351,20 @@
   EXPECT_TRUE(wm::IsActiveWindow(panel1.get()));
 }
 
+// Tests the visibility of panel windows during cycling.
+TEST_F(WindowSelectorTest, CyclePanelVisibility) {
+  gfx::Rect bounds(0, 0, 400, 400);
+  scoped_ptr<aura::Window> window1(CreateWindow(bounds));
+  scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
+  wm::ActivateWindow(panel1.get());
+  wm::ActivateWindow(window1.get());
+
+  Cycle(WindowSelector::FORWARD);
+  FireOverviewStartTimer();
+  EXPECT_EQ(1.0f, panel1->layer()->GetTargetOpacity());
+  StopCycling();
+}
+
 // Tests cycles between panel and normal windows.
 TEST_F(WindowSelectorTest, CyclePanelsDestroyed) {
   gfx::Rect bounds(0, 0, 400, 400);
diff --git a/ash/wm/panels/panel_frame_view.cc b/ash/wm/panels/panel_frame_view.cc
index 2b99b2a..0a6bce5 100644
--- a/ash/wm/panels/panel_frame_view.cc
+++ b/ash/wm/panels/panel_frame_view.cc
@@ -5,17 +5,13 @@
 #include "ash/wm/panels/panel_frame_view.h"
 
 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h"
-#include "ash/wm/frame_painter.h"
+#include "ash/wm/frame_border_hit_test_controller.h"
+#include "ash/wm/header_painter.h"
 #include "grit/ash_resources.h"
-#include "third_party/skia/include/core/SkPaint.h"
-#include "ui/base/cursor/cursor.h"
 #include "ui/base/hit_test.h"
 #include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/animation/throb_animation.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/font.h"
-#include "ui/gfx/image/image.h"
 #include "ui/views/controls/image_view.h"
 #include "ui/views/widget/native_widget_aura.h"
 #include "ui/views/widget/widget.h"
@@ -30,9 +26,11 @@
     : frame_(frame),
       caption_button_container_(NULL),
       window_icon_(NULL),
-      title_font_(gfx::Font(views::NativeWidgetAura::GetWindowTitleFont())) {
+      title_font_(gfx::Font(views::NativeWidgetAura::GetWindowTitleFont())),
+      frame_border_hit_test_controller_(
+          new FrameBorderHitTestController(frame_)) {
   if (frame_type != FRAME_NONE)
-    InitFramePainter();
+    InitHeaderPainter();
 }
 
 PanelFrameView::~PanelFrameView() {
@@ -42,8 +40,8 @@
   return kViewClassName;
 }
 
-void PanelFrameView::InitFramePainter() {
-  frame_painter_.reset(new FramePainter);
+void PanelFrameView::InitHeaderPainter() {
+  header_painter_.reset(new HeaderPainter);
 
   caption_button_container_ = new FrameCaptionButtonContainerView(frame_,
       FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
@@ -54,27 +52,32 @@
     AddChildView(window_icon_);
   }
 
-  frame_painter_->Init(frame_, window_icon_, caption_button_container_);
+  header_painter_->Init(frame_, this, window_icon_, caption_button_container_);
 }
 
 int PanelFrameView::NonClientTopBorderHeight() const {
-  if (!frame_painter_)
+  if (!header_painter_)
     return 0;
   // Reserve enough space to see the buttons and the separator line.
   return caption_button_container_->bounds().bottom() +
-      frame_painter_->HeaderContentSeparatorSize();
+      header_painter_->HeaderContentSeparatorSize();
 }
 
 gfx::Size PanelFrameView::GetMinimumSize() {
-  if (!frame_painter_)
+  if (!header_painter_)
     return gfx::Size();
-  return frame_painter_->GetMinimumSize(this);
+  gfx::Size min_client_view_size(frame_->client_view()->GetMinimumSize());
+  return gfx::Size(
+      std::max(header_painter_->GetMinimumHeaderWidth(),
+               min_client_view_size.width()),
+      NonClientTopBorderHeight() + min_client_view_size.height());
 }
 
 void PanelFrameView::Layout() {
-  if (!frame_painter_)
+  if (!header_painter_)
     return;
-  frame_painter_->LayoutHeader(this, true);
+  header_painter_->LayoutHeader(true);
+  header_painter_->set_header_height(NonClientTopBorderHeight());
 }
 
 void PanelFrameView::ResetWindowControls() {
@@ -91,9 +94,9 @@
 }
 
 void PanelFrameView::UpdateWindowTitle() {
-  if (!frame_painter_)
+  if (!header_painter_)
     return;
-  frame_painter_->SchedulePaintForTitle(title_font_);
+  header_painter_->SchedulePaintForTitle(title_font_);
 }
 
 void PanelFrameView::GetWindowMask(const gfx::Size&, gfx::Path*) {
@@ -101,45 +104,45 @@
 }
 
 int PanelFrameView::NonClientHitTest(const gfx::Point& point) {
-  if (!frame_painter_)
+  if (!header_painter_)
     return HTNOWHERE;
-  return frame_painter_->NonClientHitTest(this, point);
+  return FrameBorderHitTestController::NonClientHitTest(this,
+      header_painter_.get(), point);
 }
 
 void PanelFrameView::OnPaint(gfx::Canvas* canvas) {
-  if (!frame_painter_)
+  if (!header_painter_)
     return;
   bool paint_as_active = ShouldPaintAsActive();
   int theme_frame_id = 0;
-  if (frame_painter_->ShouldUseMinimalHeaderStyle(FramePainter::THEMED_NO))
+  if (header_painter_->ShouldUseMinimalHeaderStyle(HeaderPainter::THEMED_NO))
     theme_frame_id = IDR_AURA_WINDOW_HEADER_BASE_MINIMAL;
   else if (paint_as_active)
     theme_frame_id = IDR_AURA_WINDOW_HEADER_BASE_ACTIVE;
   else
     theme_frame_id = IDR_AURA_WINDOW_HEADER_BASE_INACTIVE;
 
-  frame_painter_->PaintHeader(
-      this,
+  header_painter_->PaintHeader(
       canvas,
-      paint_as_active ? FramePainter::ACTIVE : FramePainter::INACTIVE,
+      paint_as_active ? HeaderPainter::ACTIVE : HeaderPainter::INACTIVE,
       theme_frame_id,
       0);
-  frame_painter_->PaintTitleBar(this, canvas, title_font_);
-  frame_painter_->PaintHeaderContentSeparator(this, canvas);
+  header_painter_->PaintTitleBar(canvas, title_font_);
+  header_painter_->PaintHeaderContentSeparator(canvas);
 }
 
 gfx::Rect PanelFrameView::GetBoundsForClientView() const {
-  if (!frame_painter_)
+  if (!header_painter_)
     return bounds();
-  return frame_painter_->GetBoundsForClientView(
+  return HeaderPainter::GetBoundsForClientView(
       NonClientTopBorderHeight(), bounds());
 }
 
 gfx::Rect PanelFrameView::GetWindowBoundsForClientBounds(
     const gfx::Rect& client_bounds) const {
-  if (!frame_painter_)
+  if (!header_painter_)
     return client_bounds;
-  return frame_painter_->GetWindowBoundsForClientBounds(
+  return HeaderPainter::GetWindowBoundsForClientBounds(
       NonClientTopBorderHeight(), client_bounds);
 }
 
diff --git a/ash/wm/panels/panel_frame_view.h b/ash/wm/panels/panel_frame_view.h
index 436ba4a..6bb27f5 100644
--- a/ash/wm/panels/panel_frame_view.h
+++ b/ash/wm/panels/panel_frame_view.h
@@ -7,20 +7,18 @@
 
 #include "ash/ash_export.h"
 #include "base/basictypes.h"
-#include "ui/aura/aura_export.h"
 #include "ui/gfx/font.h"
-#include "ui/views/controls/button/button.h"  // ButtonListener
 #include "ui/views/window/non_client_view.h"
 
 namespace views {
-class ImageButton;
 class ImageView;
 }
 
 namespace ash {
 
 class FrameCaptionButtonContainerView;
-class FramePainter;
+class FrameBorderHitTestController;
+class HeaderPainter;
 
 class ASH_EXPORT PanelFrameView : public views::NonClientFrameView {
  public:
@@ -39,7 +37,7 @@
   virtual const char* GetClassName() const OVERRIDE;
 
  private:
-  void InitFramePainter();
+  void InitHeaderPainter();
 
   // Height from top of window to top of client area.
   int NonClientTopBorderHeight() const;
@@ -62,13 +60,18 @@
 
   // Child View class describing the panel's title bar behavior
   // and buttons, owned by the view hierarchy
-  scoped_ptr<FramePainter> frame_painter_;
   views::Widget* frame_;
   FrameCaptionButtonContainerView* caption_button_container_;
   views::ImageView* window_icon_;
   gfx::Rect client_view_bounds_;
   const gfx::Font title_font_;
 
+  // Helper class for painting the header.
+  scoped_ptr<HeaderPainter> header_painter_;
+
+  // Updates the hittest bounds overrides based on the window show type.
+  scoped_ptr<FrameBorderHitTestController> frame_border_hit_test_controller_;
+
   DISALLOW_COPY_AND_ASSIGN(PanelFrameView);
 };
 
diff --git a/ash/wm/panels/panel_layout_manager.cc b/ash/wm/panels/panel_layout_manager.cc
index fc654fe..c646679 100644
--- a/ash/wm/panels/panel_layout_manager.cc
+++ b/ash/wm/panels/panel_layout_manager.cc
@@ -14,7 +14,6 @@
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
-#include "ash/wm/frame_painter.h"
 #include "ash/wm/window_animations.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
@@ -25,7 +24,7 @@
 #include "third_party/skia/include/core/SkPaint.h"
 #include "third_party/skia/include/core/SkPath.h"
 #include "ui/aura/client/activation_client.h"
-#include "ui/aura/focus_manager.h"
+#include "ui/aura/client/focus_client.h"
 #include "ui/aura/root_window.h"
 #include "ui/aura/window.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
@@ -39,8 +38,6 @@
 namespace internal {
 
 namespace {
-const int kPanelMarginEdge = 4;
-const int kPanelMarginMiddle = 8;
 const int kPanelIdealSpacing = 4;
 
 const float kMaxHeightFactor = .80f;
diff --git a/ash/wm/panels/panel_layout_manager_unittest.cc b/ash/wm/panels/panel_layout_manager_unittest.cc
index ae305e9..7c61f73 100644
--- a/ash/wm/panels/panel_layout_manager_unittest.cc
+++ b/ash/wm/panels/panel_layout_manager_unittest.cc
@@ -8,17 +8,17 @@
 #include "ash/launcher/launcher.h"
 #include "ash/launcher/launcher_button.h"
 #include "ash/launcher/launcher_model.h"
-#include "ash/launcher/launcher_view.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_ash.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_types.h"
+#include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/launcher_test_api.h"
-#include "ash/test/launcher_view_test_api.h"
+#include "ash/test/shelf_view_test_api.h"
 #include "ash/test/shell_test_api.h"
 #include "ash/test/test_launcher_delegate.h"
 #include "ash/wm/window_util.h"
@@ -50,9 +50,9 @@
     test::AshTestBase::SetUp();
     ASSERT_TRUE(test::TestLauncherDelegate::instance());
 
-    launcher_view_test_.reset(new test::LauncherViewTestAPI(
-        GetLauncherView(Launcher::ForPrimaryDisplay())));
-    launcher_view_test_->SetAnimationDuration(1);
+    shelf_view_test_.reset(new test::ShelfViewTestAPI(
+        GetShelfView(Launcher::ForPrimaryDisplay())));
+    shelf_view_test_->SetAnimationDuration(1);
   }
 
   aura::Window* CreateNormalWindow(const gfx::Rect& bounds) {
@@ -72,7 +72,7 @@
         static_cast<PanelLayoutManager*>(GetPanelContainer(window)->
                                          layout_manager());
     manager->Relayout();
-    launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+    shelf_view_test()->RunMessageLoopUntilAnimationsDone();
     return window;
   }
 
@@ -109,8 +109,8 @@
   }
 
   void PanelsNotOverlapping(aura::Window* panel1, aura::Window* panel2) {
-    // Waits until all launcher view animations are done.
-    launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+    // Waits until all shelf view animations are done.
+    shelf_view_test()->RunMessageLoopUntilAnimationsDone();
     gfx::Rect window1_bounds = panel1->GetBoundsInRootWindow();
     gfx::Rect window2_bounds = panel2->GetBoundsInRootWindow();
 
@@ -120,8 +120,8 @@
   // TODO(dcheng): This should be const, but GetScreenBoundsOfItemIconForWindow
   // takes a non-const Window. We can probably fix that.
   void IsPanelAboveLauncherIcon(aura::Window* panel) {
-    // Waits until all launcher view animations are done.
-    launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+    // Waits until all shelf view animations are done.
+    shelf_view_test()->RunMessageLoopUntilAnimationsDone();
 
     Launcher* launcher =
         RootWindowController::ForLauncher(panel)->shelf()->launcher();
@@ -211,15 +211,15 @@
     return widget->IsVisible();
   }
 
-  test::LauncherViewTestAPI* launcher_view_test() {
-    return launcher_view_test_.get();
+  test::ShelfViewTestAPI* shelf_view_test() {
+    return shelf_view_test_.get();
   }
 
-  // Clicks the launcher items on |launcher_view| that is
+  // Clicks the launcher items on |shelf_view| that is
   /// associated with given |window|.
-  void ClickLauncherItemForWindow(LauncherView* launcher_view,
+  void ClickLauncherItemForWindow(ShelfView* shelf_view,
                                   aura::Window* window) {
-    test::LauncherViewTestAPI test_api(launcher_view);
+    test::ShelfViewTestAPI test_api(shelf_view);
     test_api.SetAnimationDuration(1);
     test_api.RunMessageLoopUntilAnimationsDone();
     LauncherModel* model =
@@ -252,8 +252,8 @@
         RootWindowController::ForWindow(window)->shelf()->
         shelf_layout_manager();
     shelf->SetAutoHideBehavior(behavior);
-    LauncherView* launcher_view = GetLauncherView(Launcher::ForWindow(window));
-    test::LauncherViewTestAPI test_api(launcher_view);
+    ShelfView* shelf_view = GetShelfView(Launcher::ForWindow(window));
+    test::ShelfViewTestAPI test_api(shelf_view);
     test_api.RunMessageLoopUntilAnimationsDone();
   }
 
@@ -265,12 +265,12 @@
     shelf->SetState(visibility_state);
   }
 
-  internal::LauncherView* GetLauncherView(Launcher* launcher) {
-    return test::LauncherTestAPI(launcher).launcher_view();
+  internal::ShelfView* GetShelfView(Launcher* launcher) {
+    return test::LauncherTestAPI(launcher).shelf_view();
   }
 
  private:
-  scoped_ptr<test::LauncherViewTestAPI> launcher_view_test_;
+  scoped_ptr<test::ShelfViewTestAPI> shelf_view_test_;
 
   bool IsHorizontal(ShelfAlignment alignment) {
     return alignment == SHELF_ALIGNMENT_BOTTOM ||
@@ -384,12 +384,12 @@
 
   // Changing the active window should update the stacking order.
   wm::ActivateWindow(w1.get());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(WindowIsAbove(w1.get(), w2.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w3.get()));
 
   wm::ActivateWindow(w2.get());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(WindowIsAbove(w1.get(), w3.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w3.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w1.get()));
@@ -415,12 +415,12 @@
 
   // Changing the active window should update the stacking order.
   wm::ActivateWindow(w1.get());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(WindowIsAbove(w1.get(), w2.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w3.get()));
 
   wm::ActivateWindow(w2.get());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(WindowIsAbove(w1.get(), w3.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w3.get()));
   EXPECT_TRUE(WindowIsAbove(w2.get(), w1.get()));
@@ -436,7 +436,7 @@
   scoped_ptr<aura::Window> w2(CreatePanelWindow(bounds));
   scoped_ptr<aura::Window> w3(CreatePanelWindow(bounds));
   scoped_ptr<aura::Window> w4(CreateNormalWindow(gfx::Rect()));
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   EXPECT_TRUE(IsPanelCalloutVisible(w1.get()));
   EXPECT_TRUE(IsPanelCalloutVisible(w2.get()));
   EXPECT_TRUE(IsPanelCalloutVisible(w3.get()));
@@ -462,7 +462,7 @@
 
   // At this point, windows should be stacked with 1 < 2 < 3
   wm::ActivateWindow(w1.get());
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   // Now, windows should be stacked 1 > 2 > 3
   w1.reset();
   EXPECT_NO_FATAL_FAILURE(IsPanelAboveLauncherIcon(w2.get()));
@@ -545,7 +545,7 @@
   scoped_ptr<aura::Window> w2(CreatePanelWindow(bounds));
   scoped_ptr<aura::Window> w3(CreatePanelWindow(bounds));
 
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   int window_x1 = w1->GetBoundsInRootWindow().CenterPoint().x();
   int window_x2 = w2->GetBoundsInRootWindow().CenterPoint().x();
   int window_x3 = w3->GetBoundsInRootWindow().CenterPoint().x();
@@ -564,7 +564,7 @@
   scoped_ptr<aura::Window> w2(CreatePanelWindow(large_bounds));
   scoped_ptr<aura::Window> w3(CreatePanelWindow(small_bounds));
 
-  launcher_view_test()->RunMessageLoopUntilAnimationsDone();
+  shelf_view_test()->RunMessageLoopUntilAnimationsDone();
   int window_x1 = w1->GetBoundsInRootWindow().CenterPoint().x();
   int window_x2 = w2->GetBoundsInRootWindow().CenterPoint().x();
   int window_x3 = w3->GetBoundsInRootWindow().CenterPoint().x();
@@ -610,10 +610,9 @@
   scoped_ptr<aura::Window> p1_d2(CreatePanelWindow(gfx::Rect(600, 0, 50, 50)));
   scoped_ptr<aura::Window> p2_d2(CreatePanelWindow(gfx::Rect(600, 0, 50, 50)));
 
-  LauncherView* launcher_view_1st =
-      GetLauncherView(Launcher::ForPrimaryDisplay());
-  LauncherView* launcher_view_2nd =
-      GetLauncherView(Launcher::ForWindow(root_windows[1]));
+  ShelfView* shelf_view_1st = GetShelfView(Launcher::ForPrimaryDisplay());
+  ShelfView* shelf_view_2nd =
+      GetShelfView(Launcher::ForWindow(root_windows[1]));
 
   EXPECT_EQ(root_windows[0], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
@@ -627,7 +626,7 @@
 
   // Test a panel on 1st display.
   // Clicking on the same display has no effect.
-  ClickLauncherItemForWindow(launcher_view_1st, p1_d1.get());
+  ClickLauncherItemForWindow(shelf_view_1st, p1_d1.get());
   EXPECT_EQ(root_windows[0], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
   EXPECT_EQ(root_windows[1], p1_d2->GetRootWindow());
@@ -637,7 +636,7 @@
 
   // Test if clicking on another display moves the panel to
   // that display.
-  ClickLauncherItemForWindow(launcher_view_2nd, p1_d1.get());
+  ClickLauncherItemForWindow(shelf_view_2nd, p1_d1.get());
   EXPECT_EQ(root_windows[1], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
   EXPECT_EQ(root_windows[1], p1_d2->GetRootWindow());
@@ -647,7 +646,7 @@
 
   // Test a panel on 2nd display.
   // Clicking on the same display has no effect.
-  ClickLauncherItemForWindow(launcher_view_2nd, p1_d2.get());
+  ClickLauncherItemForWindow(shelf_view_2nd, p1_d2.get());
   EXPECT_EQ(root_windows[1], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
   EXPECT_EQ(root_windows[1], p1_d2->GetRootWindow());
@@ -657,7 +656,7 @@
 
   // Test if clicking on another display moves the panel to
   // that display.
-  ClickLauncherItemForWindow(launcher_view_1st, p1_d2.get());
+  ClickLauncherItemForWindow(shelf_view_1st, p1_d2.get());
   EXPECT_EQ(root_windows[1], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p1_d2->GetRootWindow());
@@ -667,7 +666,7 @@
 
   // Test if clicking on a previously moved window moves the
   // panel back to the original display.
-  ClickLauncherItemForWindow(launcher_view_1st, p1_d1.get());
+  ClickLauncherItemForWindow(shelf_view_1st, p1_d1.get());
   EXPECT_EQ(root_windows[0], p1_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p2_d1->GetRootWindow());
   EXPECT_EQ(root_windows[0], p1_d2->GetRootWindow());
diff --git a/ash/wm/resize_shadow_and_cursor_unittest.cc b/ash/wm/resize_shadow_and_cursor_unittest.cc
new file mode 100644
index 0000000..f60a030
--- /dev/null
+++ b/ash/wm/resize_shadow_and_cursor_unittest.cc
@@ -0,0 +1,229 @@
+// 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 "ash/ash_constants.h"
+#include "ash/shell.h"
+#include "ash/test/ash_test_base.h"
+#include "ash/test/cursor_manager_test_api.h"
+#include "ash/wm/custom_frame_view_ash.h"
+#include "ash/wm/resize_shadow.h"
+#include "ash/wm/resize_shadow_controller.h"
+#include "ash/wm/window_state.h"
+#include "base/bind.h"
+#include "ui/aura/root_window.h"
+#include "ui/aura/test/event_generator.h"
+#include "ui/base/cursor/cursor.h"
+#include "ui/base/hit_test.h"
+#include "ui/views/widget/widget.h"
+#include "ui/views/widget/widget_delegate.h"
+
+namespace ash {
+namespace test {
+
+namespace {
+
+// views::WidgetDelegate which uses ash::CustomFrameViewAsh.
+class TestWidgetDelegate : public views::WidgetDelegateView {
+ public:
+  TestWidgetDelegate() {}
+  virtual ~TestWidgetDelegate() {}
+
+  // views::WidgetDelegateView overrides:
+  virtual bool CanResize() const OVERRIDE {
+    return true;
+  }
+  virtual bool CanMaximize() const OVERRIDE {
+    return true;
+  }
+  virtual views::NonClientFrameView* CreateNonClientFrameView(
+      views::Widget* widget) OVERRIDE {
+    return new ash::CustomFrameViewAsh(widget);
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(TestWidgetDelegate);
+};
+
+}  // namespace
+
+// The test tests that the mouse cursor is changed and that the resize shadows
+// are shown when the mouse is hovered over the window edge.
+class ResizeShadowAndCursorTest : public AshTestBase {
+ public:
+  ResizeShadowAndCursorTest() {}
+  virtual ~ResizeShadowAndCursorTest() {}
+
+  // AshTestBase override:
+  virtual void SetUp() OVERRIDE {
+    AshTestBase::SetUp();
+
+    views::Widget* widget(views::Widget::CreateWindowWithContextAndBounds(
+        new TestWidgetDelegate(), CurrentContext(), gfx::Rect(0, 0, 100, 100)));
+    widget->Show();
+    window_ = widget->GetNativeView();
+
+    // Add a child window to |window_| in order to properly test that the resize
+    // handles and the resize shadows are shown when the mouse is
+    // ash::kResizeInsideBoundsSize inside of |window_|'s edges.
+    aura::Window* child = CreateTestWindowInShell(
+        SK_ColorWHITE, 0, gfx::Rect(0, 10, 100, 90));
+    window_->AddChild(child);
+  }
+
+  // Returns the hit test code if there is a resize shadow. Returns HTNOWHERE if
+  // there is no resize shadow.
+  int ResizeShadowHitTest() const {
+    ash::internal::ResizeShadow* resize_shadow =
+        ash::Shell::GetInstance()->resize_shadow_controller()->
+            GetShadowForWindowForTest(window_);
+    return resize_shadow ? resize_shadow->GetLastHitTestForTest() : HTNOWHERE;
+  }
+
+  // Returns true if there is a resize shadow.
+  bool HasResizeShadow() const {
+    return ResizeShadowHitTest() != HTNOWHERE;
+  }
+
+  // Returns the current cursor type.
+  int GetCurrentCursorType() const {
+    CursorManagerTestApi test_api(ash::Shell::GetInstance()->cursor_manager());
+    return test_api.GetCurrentCursor().native_type();
+  }
+
+  // Called for each step of a scroll sequence initiated at the bottom right
+  // corner of |window_|. Tests whether the resize shadow is shown.
+  void ProcessBottomRightResizeGesture(ui::EventType type,
+                                       const gfx::Vector2dF& delta) {
+    if (type == ui::ET_GESTURE_SCROLL_END) {
+      // After gesture scroll ends, there should be no resize shadow.
+      EXPECT_FALSE(HasResizeShadow());
+    } else {
+      EXPECT_EQ(HTBOTTOMRIGHT, ResizeShadowHitTest());
+    }
+  }
+
+  aura::Window* window() {
+    return window_;
+  }
+
+ private:
+  aura::Window* window_;
+
+  DISALLOW_COPY_AND_ASSIGN(ResizeShadowAndCursorTest);
+};
+
+// Test whether the resize shadows are visible and the cursor type based on the
+// mouse's position.
+TEST_F(ResizeShadowAndCursorTest, MouseHover) {
+  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
+  ASSERT_TRUE(ash::wm::GetWindowState(window())->IsNormalShowState());
+
+  generator.MoveMouseTo(50, 50);
+  EXPECT_FALSE(HasResizeShadow());
+  EXPECT_EQ(ui::kCursorNull, GetCurrentCursorType());
+
+  generator.MoveMouseTo(gfx::Point(50, 0));
+  EXPECT_EQ(HTTOP, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorNorthResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 50);
+  EXPECT_FALSE(HasResizeShadow());
+  EXPECT_EQ(ui::kCursorNull, GetCurrentCursorType());
+
+  generator.MoveMouseTo(100, 100);
+  EXPECT_EQ(HTBOTTOMRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorSouthEastResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 100);
+  EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorSouthResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 100 + ash::kResizeOutsideBoundsSize - 1);
+  EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorSouthResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 100 + ash::kResizeOutsideBoundsSize + 10);
+  EXPECT_FALSE(HasResizeShadow());
+  EXPECT_EQ(ui::kCursorNull, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 100 - ash::kResizeInsideBoundsSize);
+  EXPECT_EQ(HTBOTTOM, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorSouthResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(50, 100 - ash::kResizeInsideBoundsSize - 10);
+  EXPECT_FALSE(HasResizeShadow());
+  EXPECT_EQ(ui::kCursorNull, GetCurrentCursorType());
+}
+
+// Test that the resize shadows stay visible and that the cursor stays the same
+// as long as a user is resizing a window.
+TEST_F(ResizeShadowAndCursorTest, MouseDrag) {
+  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
+  ASSERT_TRUE(ash::wm::GetWindowState(window())->IsNormalShowState());
+  gfx::Size initial_size(window()->bounds().size());
+
+  generator.MoveMouseTo(100, 50);
+  generator.PressLeftButton();
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+
+  generator.MoveMouseTo(110, 50);
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+
+  generator.ReleaseLeftButton();
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+
+  gfx::Size new_size(window()->bounds().size());
+  EXPECT_NE(new_size.ToString(), initial_size.ToString());
+}
+
+// Test that the resize shadows stay visible while resizing a window via touch.
+TEST_F(ResizeShadowAndCursorTest, Touch) {
+  ASSERT_TRUE(ash::wm::GetWindowState(window())->IsNormalShowState());
+  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
+
+  int start = 100 + ash::kResizeOutsideBoundsSize - 1;
+  generator.GestureScrollSequenceWithCallback(
+      gfx::Point(start, start),
+      gfx::Point(start + 50, start + 50),
+      base::TimeDelta::FromMilliseconds(100),
+      3,
+      base::Bind(&ResizeShadowAndCursorTest::ProcessBottomRightResizeGesture,
+                 base::Unretained(this)));
+}
+
+// Test that the resize shadows are not visible and that the default cursor is
+// used when the window is maximized.
+TEST_F(ResizeShadowAndCursorTest, MaximizeRestore) {
+  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
+  ASSERT_TRUE(ash::wm::GetWindowState(window())->IsNormalShowState());
+
+  generator.MoveMouseTo(100, 50);
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+  generator.MoveMouseTo(100 - ash::kResizeInsideBoundsSize, 50);
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+
+  ash::wm::GetWindowState(window())->Maximize();
+  gfx::Rect bounds(window()->GetBoundsInRootWindow());
+  gfx::Point right_center(bounds.right() - 1,
+                          (bounds.y() + bounds.bottom()) / 2);
+  generator.MoveMouseTo(right_center);
+  EXPECT_FALSE(HasResizeShadow());
+  EXPECT_EQ(ui::kCursorNull, GetCurrentCursorType());
+
+  ash::wm::GetWindowState(window())->Restore();
+  generator.MoveMouseTo(100, 50);
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+  generator.MoveMouseTo(100 - ash::kResizeInsideBoundsSize, 50);
+  EXPECT_EQ(HTRIGHT, ResizeShadowHitTest());
+  EXPECT_EQ(ui::kCursorEastResize, GetCurrentCursorType());
+}
+
+}  // namespace test
+}  // namespace ash
diff --git a/ash/wm/system_background_controller.cc b/ash/wm/system_background_controller.cc
index 5880735..fd6e8ec 100644
--- a/ash/wm/system_background_controller.cc
+++ b/ash/wm/system_background_controller.cc
@@ -11,15 +11,6 @@
 namespace ash {
 namespace internal {
 
-namespace {
-
-#if defined(OS_CHROMEOS)
-// Background color used for the Chrome OS boot splash screen.
-const SkColor kChromeOsBootColor = SkColorSetARGB(0xff, 0xfe, 0xfe, 0xfe);
-#endif
-
-}  // namespace
-
 SystemBackgroundController::SystemBackgroundController(
     aura::RootWindow* root_window,
     SkColor color)
diff --git a/ash/wm/toplevel_window_event_handler.cc b/ash/wm/toplevel_window_event_handler.cc
index f76d33d..f6d5902 100644
--- a/ash/wm/toplevel_window_event_handler.cc
+++ b/ash/wm/toplevel_window_event_handler.cc
@@ -341,7 +341,7 @@
   if (move_source == aura::client::WINDOW_MOVE_SOURCE_TOUCH &&
       aura::Env::GetInstance()->is_touch_down()) {
     in_gesture_drag_ = true;
-    bool has_point = root_window->gesture_recognizer()->
+    bool has_point = ui::GestureRecognizer::Get()->
         GetLastTouchPointForTarget(source, &drag_location);
     DCHECK(has_point);
   } else {
diff --git a/ash/wm/toplevel_window_event_handler_unittest.cc b/ash/wm/toplevel_window_event_handler_unittest.cc
index 40acb41..99e7418 100644
--- a/ash/wm/toplevel_window_event_handler_unittest.cc
+++ b/ash/wm/toplevel_window_event_handler_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "ash/wm/toplevel_window_event_handler.h"
 
-#include "ash/ash_constants.h"
 #include "ash/root_window_controller.h"
 #include "ash/shell.h"
 #include "ash/shell_window_ids.h"
@@ -688,155 +687,8 @@
   }
 }
 
-// Test class for mouse and touch resize shadow tests.
-class ToplevelWindowEventHandlerResizeTest
-    : public ToplevelWindowEventHandlerTest {
- public:
-  ToplevelWindowEventHandlerResizeTest() : delegate_(NULL) {}
-  virtual ~ToplevelWindowEventHandlerResizeTest() {}
-
-  virtual void SetUp() OVERRIDE {
-    ToplevelWindowEventHandlerTest::SetUp();
-
-    delegate_ = new TestWindowDelegate(HTNOWHERE);
-    target_.reset(CreateTestWindowInShellWithDelegate(
-        delegate_, 0, gfx::Rect(0, 0, 100, 100)));
-
-    // Add a child window to |target_| in order to properly test that the resize
-    // shadows are shown when the mouse is ash::kResizeInsideBoundsSize inside
-    // |target_|'s edges.
-    aura::Window* child = CreateTestWindowInShell(
-        SK_ColorWHITE, 0, gfx::Rect(0, 10, 100, 90));
-    target_->AddChild(child);
-
-    gfx::Insets mouse_outer_insets(-ash::kResizeOutsideBoundsSize,
-                                   -ash::kResizeOutsideBoundsSize,
-                                   -ash::kResizeOutsideBoundsSize,
-                                   -ash::kResizeOutsideBoundsSize);
-    gfx::Insets touch_outer_insets =
-        mouse_outer_insets.Scale(ash::kResizeOutsideBoundsScaleForTouch);
-    target_->SetHitTestBoundsOverrideOuter(mouse_outer_insets,
-                                           touch_outer_insets);
-    target_->set_hit_test_bounds_override_inner(
-        gfx::Insets(ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize));
-  }
-
-  virtual void TearDown() OVERRIDE {
-    target_.reset();
-    ToplevelWindowEventHandlerTest::TearDown();
-  }
-
-  // Called on each scroll event. Checks if the correct resize shadow is shown.
-  void ProcessEvent(ui::EventType type, const gfx::Vector2dF& delta) {
-    if (type == ui::ET_GESTURE_SCROLL_END) {
-      // After gesture scroll ends, there should be no resize shadow.
-      EXPECT_FALSE(HasResizeShadow());
-    } else {
-      // Check if there is a resize shadow under the correct border.
-      ASSERT_TRUE(HasResizeShadow());
-      EXPECT_EQ(HTBOTTOMRIGHT, ResizeShadowLastHitTest());
-    }
-  }
-
- protected:
-  void SetHittestCode(int hittest_code) {
-    delegate_->set_window_component(hittest_code);
-  }
-
-  aura::Window* target() { return target_.get(); }
-
-  bool HasResizeShadow() const {
-    // There is no shadow if no ResizeShadow object is associated with the
-    // window or there is one but its hit test is set to HTNOWHERE. Since we
-    // don't want to tie tests to that implementation detail, both cases are
-    // considered here.
-    return ResizeShadow() && ResizeShadowLastHitTest() != HTNOWHERE;
-  }
-
-  int ResizeShadowLastHitTest() const {
-    return ResizeShadow()->GetLastHitTestForTest();
-  }
-
- private:
-  internal::ResizeShadow* ResizeShadow() const {
-    return Shell::GetInstance()->resize_shadow_controller()->
-        GetShadowForWindowForTest(target_.get());
-  }
-
-  TestWindowDelegate* delegate_;
-  scoped_ptr<aura::Window> target_;
-
-  DISALLOW_COPY_AND_ASSIGN(ToplevelWindowEventHandlerResizeTest);
-};
-
-// Tests resize shadows for touch resizing.
-TEST_F(ToplevelWindowEventHandlerResizeTest, TouchResizeShadows) {
-  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), target());
-
-  // Drag bottom right border of the window and check for the resize shadows.
-  // Shadows are checked in the callback function.
-  SetHittestCode(HTBOTTOMRIGHT);
-  generator.GestureScrollSequenceWithCallback(
-      gfx::Point(105, 105),
-      gfx::Point(150, 150),
-      base::TimeDelta::FromMilliseconds(100),
-      3,
-      base::Bind(&ToplevelWindowEventHandlerResizeTest::ProcessEvent,
-                 base::Unretained(this)));
-  RunAllPendingInMessageLoop();
-}
-
-// Tests resize shadows for mouse resizing.
-TEST_F(ToplevelWindowEventHandlerResizeTest, MouseResizeShadows) {
-  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), target());
-
-  // There should be no shadow at the beginning.
-  EXPECT_FALSE(HasResizeShadow());
-
-  // Move mouse over the right border. Shadows should appear.
-  SetHittestCode(HTRIGHT);
-  generator.MoveMouseTo(gfx::Point(100, 50));
-  ASSERT_TRUE(HasResizeShadow());
-  EXPECT_EQ(HTRIGHT, ResizeShadowLastHitTest());
-
-  // Move mouse over the bottom right border. Shadows should stay.
-  SetHittestCode(HTBOTTOMRIGHT);
-  generator.MoveMouseTo(100, 100);
-  ASSERT_TRUE(HasResizeShadow());
-  EXPECT_EQ(HTBOTTOMRIGHT, ResizeShadowLastHitTest());
-
-  // Move mouse into the window. Shadows should disappear.
-  SetHittestCode(HTCLIENT);
-  generator.MoveMouseTo(50, 50);
-  EXPECT_FALSE(HasResizeShadow());
-
-  // Move mouse over the bottom order. Shadows should reappear.
-  SetHittestCode(HTBOTTOM);
-  generator.MoveMouseTo(50, 100);
-  ASSERT_TRUE(HasResizeShadow());
-  EXPECT_EQ(HTBOTTOM, ResizeShadowLastHitTest());
-
-  // Move the mouse outside the bottom border but still within the window's
-  // resize area.
-  generator.MoveMouseTo(50, 100 + ash::kResizeOutsideBoundsSize - 1);
-  ASSERT_TRUE(HasResizeShadow());
-  EXPECT_EQ(HTBOTTOM, ResizeShadowLastHitTest());
-
-  // Move the mouse above the bottom border but still within the window's
-  // resize area.
-  generator.MoveMouseTo(50, 100 - ash::kResizeInsideBoundsSize);
-  ASSERT_TRUE(HasResizeShadow());
-  EXPECT_EQ(HTBOTTOM, ResizeShadowLastHitTest());
-
-  // Move mouse out of the window. Shadows should disappear.
-  generator.MoveMouseTo(150, 150);
-  EXPECT_FALSE(HasResizeShadow());
-
-  RunAllPendingInMessageLoop();
-}
+// Showing the resize shadows when the mouse is over the window edges is tested
+// in resize_shadow_and_cursor_test.cc
 
 }  // namespace test
 }  // namespace ash
diff --git a/ash/wm/window_modality_controller_unittest.cc b/ash/wm/window_modality_controller_unittest.cc
index d7def40..7e36669 100644
--- a/ash/wm/window_modality_controller_unittest.cc
+++ b/ash/wm/window_modality_controller_unittest.cc
@@ -287,23 +287,30 @@
 
 class TouchTrackerWindowDelegate : public aura::test::TestWindowDelegate {
  public:
-  TouchTrackerWindowDelegate() : received_touch_(false) {}
+  TouchTrackerWindowDelegate()
+      : received_touch_(false),
+        last_event_type_(ui::ET_UNKNOWN) {
+  }
   virtual ~TouchTrackerWindowDelegate() {}
 
   void reset() {
     received_touch_ = false;
+    last_event_type_ = ui::ET_UNKNOWN;
   }
 
   bool received_touch() const { return received_touch_; }
+  ui::EventType last_event_type() const { return last_event_type_; }
 
  private:
   // Overridden from aura::test::TestWindowDelegate.
   virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE {
     received_touch_ = true;
+    last_event_type_ = event->type();
     aura::test::TestWindowDelegate::OnTouchEvent(event);
   }
 
   bool received_touch_;
+  ui::EventType last_event_type_;
 
   DISALLOW_COPY_AND_ASSIGN(TouchTrackerWindowDelegate);
 };
@@ -316,6 +323,8 @@
   TouchTrackerWindowDelegate d11;
   scoped_ptr<aura::Window> w11(CreateTestWindowInShellWithDelegate(&d11,
       -11, gfx::Rect(20, 20, 50, 50)));
+  aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+                                       gfx::Point(10, 10));
 
   w1->AddTransientChild(w11.get());
   d1.reset();
@@ -323,25 +332,22 @@
 
   {
     // Clicking a point within w1 should activate that window.
-    aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
-                                         gfx::Point(10, 10));
     generator.PressMoveAndReleaseTouchTo(gfx::Point(10, 10));
     EXPECT_TRUE(wm::IsActiveWindow(w1.get()));
     EXPECT_TRUE(d1.received_touch());
     EXPECT_FALSE(d11.received_touch());
   }
 
-  w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
-  d1.reset();
-  d11.reset();
-
   {
-    // Clicking a point within w1 should activate w11.
-    aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
-                                         gfx::Point(10, 10));
-    generator.PressMoveAndReleaseTouchTo(gfx::Point(10, 10));
-    EXPECT_TRUE(wm::IsActiveWindow(w11.get()));
-    EXPECT_FALSE(d1.received_touch());
+    // Adding a modal window while a touch is down should fire a touch cancel.
+    generator.PressTouch();
+    generator.MoveTouch(gfx::Point(10, 10));
+    d1.reset();
+    d11.reset();
+
+    w11->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
+    EXPECT_TRUE(d1.received_touch());
+    EXPECT_EQ(ui::ET_TOUCH_CANCELLED, d1.last_event_type());
     EXPECT_FALSE(d11.received_touch());
   }
 }
diff --git a/ash/wm/window_state_observer.h b/ash/wm/window_state_observer.h
index 0a96713..75008a8 100644
--- a/ash/wm/window_state_observer.h
+++ b/ash/wm/window_state_observer.h
@@ -5,6 +5,7 @@
 #ifndef ASH_WM_WINDOW_STATE_OBSERVER_H_
 #define ASH_WM_WINDOW_STATE_OBSERVER_H_
 
+#include "ash/ash_export.h"
 #include "ash/wm/wm_types.h"
 
 namespace ash {
diff --git a/ash/wm/window_util.cc b/ash/wm/window_util.cc
index 48947b8..66a6243 100644
--- a/ash/wm/window_util.cc
+++ b/ash/wm/window_util.cc
@@ -92,6 +92,8 @@
   } else if (bounds->bottom() - min_height < 0) {
     bounds->set_y(min_height - bounds->height());
   }
+  if (bounds->y() < 0)
+    bounds->set_y(0);
 }
 
 bool MoveWindowToEventRoot(aura::Window* window, const ui::Event& event) {
diff --git a/ash/wm/window_util.h b/ash/wm/window_util.h
index b33df78..fd71a0b 100644
--- a/ash/wm/window_util.h
+++ b/ash/wm/window_util.h
@@ -50,14 +50,16 @@
 // Change the availability of animation to the fullscreen of the |window|.
 ASH_EXPORT void SetAnimateToFullscreen(aura::Window* window, bool animate);
 
-// Move the given bounds inside the given |visible_area|, including a
-// safety margin given by |kMinimumOnScreenArea|.
+// Move the given bounds inside the given |visible_area| in parent coordinates,
+// including a safety margin given by |kMinimumOnScreenArea|.
+// This also ensures that the top of the bounds is visible.
 ASH_EXPORT void AdjustBoundsToEnsureMinimumWindowVisibility(
     const gfx::Rect& visible_area,
     gfx::Rect* bounds);
 
-// Move the given bounds inside the given |visible_area|, including a
-// safety margin given by |min_width| and |min_height|.
+// Move the given bounds inside the given |visible_area| in parent coordinates,
+// including a safety margin given by |min_width| and |min_height|.
+// This also ensures that the top of the bounds is visible.
 ASH_EXPORT void AdjustBoundsToEnsureWindowVisibility(
     const gfx::Rect& visible_area,
     int min_width,
diff --git a/ash/wm/workspace/workspace_layout_manager.cc b/ash/wm/workspace/workspace_layout_manager.cc
index ec37586..cbc886b 100644
--- a/ash/wm/workspace/workspace_layout_manager.cc
+++ b/ash/wm/workspace/workspace_layout_manager.cc
@@ -11,14 +11,13 @@
 #include "ash/shell.h"
 #include "ash/wm/always_on_top_controller.h"
 #include "ash/wm/base_layout_manager.h"
-#include "ash/wm/frame_painter.h"
+#include "ash/wm/header_painter.h"
 #include "ash/wm/window_animations.h"
 #include "ash/wm/window_positioner.h"
 #include "ash/wm/window_properties.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
 #include "ui/aura/client/aura_constants.h"
-#include "ui/aura/root_window.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
 #include "ui/base/ui_base_types.h"
@@ -72,7 +71,7 @@
     : BaseLayoutManager(window->GetRootWindow()),
       shelf_(NULL),
       window_(window),
-      work_area_(ScreenAsh::GetDisplayWorkAreaBoundsInParent(
+      work_area_in_parent_(ScreenAsh::GetDisplayWorkAreaBoundsInParent(
           window->parent())) {
 }
 
@@ -104,10 +103,15 @@
 void WorkspaceLayoutManager::OnChildWindowVisibilityChanged(Window* child,
                                                             bool visible) {
   BaseLayoutManager::OnChildWindowVisibilityChanged(child, visible);
-  if (child->TargetVisibility())
+  if (child->TargetVisibility()) {
     WindowPositioner::RearrangeVisibleWindowOnShow(child);
-  else
+  } else {
+    if (wm::GetWindowState(child)->IsFullscreen()) {
+      ash::Shell::GetInstance()->NotifyFullscreenStateChange(
+          false, child->GetRootWindow());
+    }
     WindowPositioner::RearrangeVisibleWindowOnHideOrRemove(child);
+  }
   UpdateDesktopVisibility();
 }
 
@@ -123,9 +127,10 @@
   if (!SetMaximizedOrFullscreenBounds(wm::GetWindowState(child))) {
     // Non-maximized/full-screen windows have their size constrained to the
     // work-area.
-    child_bounds.set_width(std::min(work_area_.width(), child_bounds.width()));
+    child_bounds.set_width(std::min(work_area_in_parent_.width(),
+                                    child_bounds.width()));
     child_bounds.set_height(
-        std::min(work_area_.height(), child_bounds.height()));
+        std::min(work_area_in_parent_.height(), child_bounds.height()));
     SetChildBoundsDirect(child, child_bounds);
   }
   UpdateDesktopVisibility();
@@ -134,7 +139,7 @@
 void WorkspaceLayoutManager::OnDisplayWorkAreaInsetsChanged() {
   const gfx::Rect work_area(ScreenAsh::GetDisplayWorkAreaBoundsInParent(
       window_->parent()));
-  if (work_area != work_area_) {
+  if (work_area != work_area_in_parent_) {
     AdjustAllWindowsBoundsForWorkAreaChange(
         ADJUST_WINDOW_WORK_AREA_INSETS_CHANGED);
   }
@@ -199,7 +204,8 @@
 
 void WorkspaceLayoutManager::AdjustAllWindowsBoundsForWorkAreaChange(
     AdjustWindowReason reason) {
-  work_area_ = ScreenAsh::GetDisplayWorkAreaBoundsInParent(window_->parent());
+  work_area_in_parent_ =
+      ScreenAsh::GetDisplayWorkAreaBoundsInParent(window_->parent());
   BaseLayoutManager::AdjustAllWindowsBoundsForWorkAreaChange(reason);
 }
 
@@ -229,10 +235,11 @@
     case ADJUST_WINDOW_DISPLAY_SIZE_CHANGED:
       // The work area may be smaller than the full screen.  Put as much of the
       // window as possible within the display area.
-      bounds.AdjustToFit(work_area_);
+      bounds.AdjustToFit(work_area_in_parent_);
       break;
     case ADJUST_WINDOW_WORK_AREA_INSETS_CHANGED:
-      ash::wm::AdjustBoundsToEnsureMinimumWindowVisibility(work_area_, &bounds);
+      ash::wm::AdjustBoundsToEnsureMinimumWindowVisibility(
+          work_area_in_parent_, &bounds);
       break;
   }
   if (window_state->window()->bounds() != bounds)
@@ -263,8 +270,8 @@
   // be further shrunk by the docked area. The logic ensures 30%
   // visibility which should be enough to see where the window gets
   // moved.
-  gfx::Rect display_area =
-      Shell::GetScreen()->GetDisplayNearestWindow(window).bounds();
+  gfx::Rect display_area = ScreenAsh::GetDisplayBoundsInParent(window);
+
   ash::wm::AdjustBoundsToEnsureWindowVisibility(
       display_area, min_width, min_height, &bounds);
   if (window->bounds() != bounds)
@@ -274,7 +281,7 @@
 void WorkspaceLayoutManager::UpdateDesktopVisibility() {
   if (shelf_)
     shelf_->UpdateVisibilityState();
-  FramePainter::UpdateSoloWindowHeader(window_->GetRootWindow());
+  HeaderPainter::UpdateSoloWindowHeader(window_->GetRootWindow());
 }
 
 void WorkspaceLayoutManager::UpdateBoundsFromShowState(
@@ -292,13 +299,13 @@
       if (window_state->HasRestoreBounds()) {
         bounds_in_parent = window_state->GetRestoreBoundsInParent();
         ash::wm::AdjustBoundsToEnsureMinimumWindowVisibility(
-            work_area_, &bounds_in_parent);
+            work_area_in_parent_, &bounds_in_parent);
       } else {
         // Minimized windows have no restore bounds.
         // Use the current bounds instead.
         bounds_in_parent = window->bounds();
         ash::wm::AdjustBoundsToEnsureMinimumWindowVisibility(
-            work_area_, &bounds_in_parent);
+            work_area_in_parent_, &bounds_in_parent);
         // Don't start animation if the bounds didn't change.
         if (bounds_in_parent == window->bounds())
           bounds_in_parent.SetRect(0, 0, 0, 0);
diff --git a/ash/wm/workspace/workspace_layout_manager.h b/ash/wm/workspace/workspace_layout_manager.h
index d7dcae7..30a88f2 100644
--- a/ash/wm/workspace/workspace_layout_manager.h
+++ b/ash/wm/workspace/workspace_layout_manager.h
@@ -92,7 +92,7 @@
 
   // The work area. Cached to avoid unnecessarily moving windows during a
   // workspace switch.
-  gfx::Rect work_area_;
+  gfx::Rect work_area_in_parent_;
 
   DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManager);
 };
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc
index 13f2817..6194f1c 100644
--- a/ash/wm/workspace/workspace_layout_manager_unittest.cc
+++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -4,6 +4,8 @@
 
 #include "ash/wm/workspace/workspace_layout_manager.h"
 
+#include "ash/display/display_layout.h"
+#include "ash/display/display_manager.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_ash.h"
 #include "ash/shelf/shelf_layout_manager.h"
@@ -89,6 +91,28 @@
       Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds()));
 }
 
+TEST_F(WorkspaceLayoutManagerTest, KeepMinimumVisibilityInDisplays) {
+  if (!SupportsMultipleDisplays())
+    return;
+
+  UpdateDisplay("300x400,400x500");
+  Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
+
+  DisplayLayout layout(DisplayLayout::TOP, 0);
+  Shell::GetInstance()->display_manager()->
+      SetLayoutForCurrentDisplays(layout);
+  EXPECT_EQ("0,-500 400x500", root_windows[1]->GetBoundsInScreen().ToString());
+
+  scoped_ptr<aura::Window> window1(
+      CreateTestWindowInShellWithBounds(gfx::Rect(10, -400, 200, 200)));
+  EXPECT_EQ("10,-400 200x200", window1->GetBoundsInScreen().ToString());
+
+  // Make sure the caption is visible.
+  scoped_ptr<aura::Window> window2(
+      CreateTestWindowInShellWithBounds(gfx::Rect(10, -600, 200, 200)));
+  EXPECT_EQ("10,-500 200x200", window2->GetBoundsInScreen().ToString());
+}
+
 TEST_F(WorkspaceLayoutManagerTest, KeepRestoredWindowInDisplay) {
   if (!SupportsHostWindowResize())
     return;
@@ -102,7 +126,8 @@
   window_state->Restore();
   EXPECT_TRUE(
       Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds()));
-  EXPECT_EQ("-20,-30 30x40", window->bounds().ToString());
+  // Y bounds should not be negative.
+  EXPECT_EQ("-20,0 30x40", window->bounds().ToString());
 
   // Minimized -> Normal transition.
   window->SetBounds(gfx::Rect(-100, -100, 30, 40));
@@ -113,7 +138,8 @@
   window->Show();
   EXPECT_TRUE(
       Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds()));
-  EXPECT_EQ("-20,-30 30x40", window->bounds().ToString());
+  // Y bounds should not be negative.
+  EXPECT_EQ("-20,0 30x40", window->bounds().ToString());
 
   // Fullscreen -> Normal transition.
   window->SetBounds(gfx::Rect(0, 0, 30, 40));  // reset bounds.
@@ -124,7 +150,8 @@
   window_state->Restore();
   EXPECT_TRUE(
       Shell::GetPrimaryRootWindow()->bounds().Intersects(window->bounds()));
-  EXPECT_EQ("-20,-30 30x40", window->bounds().ToString());
+  // Y bounds should not be negative.
+  EXPECT_EQ("-20,0 30x40", window->bounds().ToString());
 }
 
 TEST_F(WorkspaceLayoutManagerTest, MaximizeInDisplayToBeRestored) {
diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc
index f591c97..7c9394b 100644
--- a/ash/wm/workspace/workspace_window_resizer.cc
+++ b/ash/wm/workspace/workspace_window_resizer.cc
@@ -436,7 +436,8 @@
   // is called, so it does not matter.
   if (window_state()->IsNormalShowState() &&
       (window()->type() != aura::client::WINDOW_TYPE_PANEL ||
-       !window_state()->panel_attached()) &&
+       !window_state()->panel_attached() ||
+       dock_layout_->is_dragged_window_docked()) &&
       (snap_type_ == SNAP_LEFT || snap_type_ == SNAP_RIGHT)) {
     if (!window_state()->HasRestoreBounds()) {
       gfx::Rect initial_bounds = ScreenAsh::ConvertRectToScreen(
diff --git a/ash/wm/workspace/workspace_window_resizer_unittest.cc b/ash/wm/workspace/workspace_window_resizer_unittest.cc
index 8451e83..9d6969b 100644
--- a/ash/wm/workspace/workspace_window_resizer_unittest.cc
+++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/ash_constants.h"
 #include "ash/ash_switches.h"
-#include "ash/display/display_controller.h"
+#include "ash/display/display_manager.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_ash.h"
 #include "ash/shelf/shelf_layout_manager.h"
@@ -190,19 +190,14 @@
     touch_resize_window_.reset(
         CreateTestWindowInShellWithDelegate(&touch_resize_delegate_, 0,
                                             bounds));
-    gfx::Insets mouse_outer_insets = gfx::Insets(-ash::kResizeOutsideBoundsSize,
-                                                 -ash::kResizeOutsideBoundsSize,
-                                                 -ash::kResizeOutsideBoundsSize,
-                                                -ash::kResizeOutsideBoundsSize);
+    gfx::Insets mouse_outer_insets(-ash::kResizeOutsideBoundsSize,
+                                   -ash::kResizeOutsideBoundsSize,
+                                   -ash::kResizeOutsideBoundsSize,
+                                   -ash::kResizeOutsideBoundsSize);
     gfx::Insets touch_outer_insets = mouse_outer_insets.Scale(
         ash::kResizeOutsideBoundsScaleForTouch);
     touch_resize_window_->SetHitTestBoundsOverrideOuter(mouse_outer_insets,
                                                         touch_outer_insets);
-    touch_resize_window_->set_hit_test_bounds_override_inner(
-        gfx::Insets(ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize,
-                    ash::kResizeInsideBoundsSize));
   }
 
   // Simulate running the animation.
@@ -723,7 +718,7 @@
       Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0));
 
   // Positions the secondary display at the bottom the primary display.
-  Shell::GetInstance()->display_controller()->SetLayoutForCurrentDisplays(
+  Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
       ash::DisplayLayout(ash::DisplayLayout::BOTTOM, 0));
 
   {