Merge from Chromium at DEPS revision r202854

This commit was generated by merge_to_master.py.

Change-Id: Idca323f71ef844a9e04f454d4f070b1e398f2deb
diff --git a/chrome/app/android/chrome_data_reduction_proxy_android.cc b/chrome/app/android/chrome_data_reduction_proxy_android.cc
new file mode 100644
index 0000000..63e63d9
--- /dev/null
+++ b/chrome/app/android/chrome_data_reduction_proxy_android.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 "chrome/app/android/chrome_data_reduction_proxy_android.h"
+
+#include "net/http/http_network_session.h"
+
+ChromeDataReductionProxyAndroid::ChromeDataReductionProxyAndroid() {
+}
+
+ChromeDataReductionProxyAndroid::~ChromeDataReductionProxyAndroid() {
+}
diff --git a/chrome/app/android/chrome_data_reduction_proxy_android.h b/chrome/app/android/chrome_data_reduction_proxy_android.h
new file mode 100644
index 0000000..9b32dff
--- /dev/null
+++ b/chrome/app/android/chrome_data_reduction_proxy_android.h
@@ -0,0 +1,23 @@
+// 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 CHROME_APP_ANDROID_CHROME_DATA_REDUCTION_PROXY_ANDROID_H_
+#define CHROME_APP_ANDROID_CHROME_DATA_REDUCTION_PROXY_ANDROID_H_
+
+#include "net/http/http_network_session.h"
+
+// Sets up state to interact with the data reduction proxy.
+class ChromeDataReductionProxyAndroid {
+ public:
+  static void Init(net::HttpNetworkSession* session);
+
+ protected:
+  ChromeDataReductionProxyAndroid();
+  virtual ~ChromeDataReductionProxyAndroid();
+
+
+  DISALLOW_COPY_AND_ASSIGN(ChromeDataReductionProxyAndroid);
+};
+
+#endif  // CHROME_APP_ANDROID_CHROME_DATA_REDUCTION_PROXY_ANDROID_H_
diff --git a/chrome/app/bookmarks_strings.grdp b/chrome/app/bookmarks_strings.grdp
index 8c24281..a103b12 100644
--- a/chrome/app/bookmarks_strings.grdp
+++ b/chrome/app/bookmarks_strings.grdp
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Bookmarks specific strings (included from generated_resources.grd). -->
 <grit-part>
-  <if expr="not pp_ifdef('android') and not pp_ifdef('ios') and pp_ifdef('use_titlecase')">
+  <if expr="not is_android and not pp_ifdef('ios') and pp_ifdef('use_titlecase')">
     <message name="IDS_BOOKMARK_BAR_FOLDER_NAME" desc="In Title Case: Name shown in the tree for the Bookmarks Bar folder.">
       Bookmarks Bar
     </message>
   </if>
-  <if expr="not pp_ifdef('android') and not pp_ifdef('ios') and not pp_ifdef('use_titlecase')">
+  <if expr="not is_android and not pp_ifdef('ios') and not pp_ifdef('use_titlecase')">
     <message name="IDS_BOOKMARK_BAR_FOLDER_NAME" desc="Name shown in the tree for the Bookmarks Bar folder.">
       Bookmarks bar
     </message>
@@ -61,7 +61,7 @@
       Show Apps Shortcut
     </message>
   </if>
-  <if expr="pp_ifdef('android')">
+  <if expr="is_android">
     <message name="IDS_BOOKMARK_BAR_FOLDER_NAME" desc="Mobile: Name shown in the tree for the desktop bookmarks folder">
       Desktop bookmarks
     </message>
@@ -114,6 +114,11 @@
     <message name="IDS_BOOKMARK_BAR_NEW_FOLDER" desc="Menu title for adding a new folder">
       Add &amp;folder...
     </message>
+    <if expr="not is_android">
+      <message name="IDS_SHOW_BOOKMARK_BAR" desc="The toggle to show the bookmark bar">
+        &amp;Show bookmarks bar
+      </message>
+    </if>
   </if>
   <if expr="pp_ifdef('use_titlecase')">
     <message name="IDS_BOOKMARK_BAR_OPEN_ALL" desc="In Title Case: Menu title for opening all urls in a bookmark folder">
@@ -149,10 +154,20 @@
     <message name="IDS_BOOKMARK_BAR_NEW_FOLDER" desc="In Title Case: Menu title for adding a new folder">
       Add &amp;Folder...
     </message>
+    <if expr="not is_android">
+      <message name="IDS_SHOW_BOOKMARK_BAR" desc="In Title Case: The toggle to show the bookmark bar">
+        &amp;Show Bookmarks Bar
+      </message>
+    </if>
   </if>
   <message name="IDS_BOOKMARK_BAR_SHOULD_OPEN_ALL" desc="Message in the message box shown if user asks to open a lot of bookmarks in a folder">
     Are you sure you want to open <ph name="TAB_COUNT">$1<ex>20</ex></ph> tabs?
   </message>
+  <if expr="is_android">
+    <message name="IDS_SHOW_BOOKMARK_BAR" desc="Mobile: The toggle to show the bookmark bar">
+      &amp;Always show bookmarks bar
+    </message>
+  </if>
   <!-- End of Bookmarks Bar Context Menu strings. -->
 
   <!-- Begin of Bookmarks Bubble strings. -->
@@ -191,7 +206,7 @@
     Name:
   </message>
   <message name="IDS_BOOKMARK_BAR_EDIT_FOLDER_LABEL" desc="Title of label before text field in edit folder dialog">
-   Name:
+    Name:
   </message>
   <message name="IDS_BOOKMARK_EDITOR_URL_LABEL" desc="Label shown before the URL.">
     URL:
@@ -295,7 +310,7 @@
       &amp;Bookmark Manager
     </message>
     <message name="IDS_BOOKMARK_MANAGER_SHOW_IN_FOLDER" desc="In Title Case: The label of the menu item in the bookmark manager context menu that changes the selection in the tree to match the folder of the selected item in the table.">
-     Show in Folder
+      Show in Folder
     </message>
     <message name="IDS_BOOKMARK_MANAGER_SORT" desc="In Title Case: The label of the menu item in the bookmark manager organize menu that alphabetizes the bookmarks/folders by title.">
       Reorder by Title
@@ -342,15 +357,18 @@
       Remove
     </message>
   </if>
+  <message name="IDS_EXPORT_BOOKMARKS_DEFAULT_FILENAME" desc="Filename that pre-populates the filename field when user attempts to export his bookmarks from Bookmark Manager.">
+    bookmarks_<ph name="DATESTAMP">$1<ex>02_11_11</ex></ph>.html
+  </message>
   <!-- End of Bookmarks Manager strings. -->
 
-  <!-- Begin of Bookmarks Menu (in the Wrench Menu) strings. -->
-  <message name="IDS_BOOKMARKS_MENU" desc="The title of the bookmarks menu in the wrench menu and in the mac menu bar">
+  <!-- Begin of Bookmarks Menu (in the Main Menu) strings. -->
+  <message name="IDS_BOOKMARKS_MENU" desc="The title of the Bookmarks menu in the Main menu and in the Mac menu bar.">
     &amp;Bookmarks
   </message>
   <if expr="not pp_ifdef('use_titlecase')">
     <message name="IDS_BOOKMARK_THIS_PAGE" desc="Title of the menu item that bookmarks the current page.">
-      Bookmark this page
+      Bookmark this page...
     </message>
   </if>
   <if expr="pp_ifdef('use_titlecase')">
@@ -358,7 +376,17 @@
       Bookmark This Page...
     </message>
   </if>
-  <!-- End of Bookmarks Menu (in the Wrench Menu) strings. -->
+  <if expr="not pp_ifdef('use_titlecase')">
+    <message name="IDS_BOOKMARK_OPEN_PAGES" desc="Title of the menu item that bookmarks all the pages opened in this window.">
+      Bookmark open pages...
+    </message>
+  </if>
+  <if expr="pp_ifdef('use_titlecase')">
+    <message name="IDS_BOOKMARK_OPEN_PAGES" desc="In Title Case: Title of the menu item that bookmarks all the pages opened in this window.">
+      Bookmark Open Pages...
+    </message>
+  </if>
+  <!-- End of Bookmarks Menu (in the Main Menu) strings. -->
 
   <!-- Being of Bookmark Star button strings. -->
   <message name="IDS_TOOLTIP_STAR" desc="The tooltip shown when you hover the star button in the right side of the location bar.">
@@ -369,7 +397,7 @@
   </message>
   <!-- End of Bookmark Star button strings. -->
 
-  <if expr="pp_ifdef('android')">
+  <if expr="is_android">
     <message name="IDS_BOOKMARK_EDIT_FOLDER" desc="Context menu item for editing a bookmark folder">
       Edit folder
     </message>
diff --git a/chrome/app/breakpad_mac.mm b/chrome/app/breakpad_mac.mm
index 3838f63..dff0e33 100644
--- a/chrome/app/breakpad_mac.mm
+++ b/chrome/app/breakpad_mac.mm
@@ -138,6 +138,24 @@
   DISALLOW_COPY_AND_ASSIGN(DumpHelper);
 };
 
+void SIGABRTHandler(int signal) {
+  // The OSX abort() (link below) masks all signals for the process,
+  // and all except SIGABRT for the thread.  SIGABRT will be masked
+  // when the SIGABRT is sent, which means at this point only SIGKILL
+  // and SIGSTOP can be delivered.  Unmask others so that the code
+  // below crashes as desired.
+  //
+  // http://www.opensource.apple.com/source/Libc/Libc-825.26/stdlib/FreeBSD/abort.c
+  sigset_t mask;
+  sigemptyset(&mask);
+  sigaddset(&mask, signal);
+  pthread_sigmask(SIG_SETMASK, &mask, NULL);
+
+  // Most interesting operations are not safe in a signal handler, just crash.
+  char* volatile death_ptr = NULL;
+  *death_ptr = '!';
+}
+
 }  // namespace
 
 bool IsCrashReporterEnabled() {
@@ -274,6 +292,14 @@
 
   logging::SetLogMessageHandler(&FatalMessageHandler);
   logging::SetDumpWithoutCrashingFunction(&DumpHelper::DumpWithoutCrashing);
+
+  // abort() sends SIGABRT, which breakpad does not intercept.
+  // Register a signal handler to crash in a way breakpad will
+  // intercept.
+  struct sigaction sigact;
+  memset(&sigact, 0, sizeof(sigact));
+  sigact.sa_handler = SIGABRTHandler;
+  CHECK(0 == sigaction(SIGABRT, &sigact, NULL));
 }
 
 void InitCrashProcessInfo() {
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index f9d77b9..2ada565 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -88,16 +88,12 @@
 
 base::LazyInstance<chrome::ChromeContentBrowserClient>
     g_chrome_content_browser_client = LAZY_INSTANCE_INITIALIZER;
-// TODO(scottmg): http://crbug.com/237249 This will have to be split out into
-// browser and child parts.
-#if !defined(CHROME_SPLIT_DLL)
 base::LazyInstance<chrome::ChromeContentRendererClient>
     g_chrome_content_renderer_client = LAZY_INSTANCE_INITIALIZER;
 base::LazyInstance<chrome::ChromeContentUtilityClient>
     g_chrome_content_utility_client = LAZY_INSTANCE_INITIALIZER;
 base::LazyInstance<chrome::ChromeContentPluginClient>
     g_chrome_content_plugin_client = LAZY_INSTANCE_INITIALIZER;
-#endif
 
 extern int NaClMain(const content::MainFunctionParams&);
 extern int ServiceProcessMain(const content::MainFunctionParams&);
@@ -636,7 +632,7 @@
       mac_relauncher::internal::RelauncherMain },
 #endif
     // TODO(scottmg): http://crbug.com/237249 NaCl -> child.
-#if !defined(DISABLE_NACL) && !defined(CHROME_SPLIT_DLL)
+#if !defined(DISABLE_NACL)
     { switches::kNaClLoaderProcess, NaClMain },
 #endif  // DISABLE_NACL
   };
@@ -712,31 +708,15 @@
 content::ContentPluginClient* ChromeMainDelegate::CreateContentPluginClient() {
   // TODO(scottmg): http://crbug.com/237249 This will have to be split out into
   // browser and child parts.
-#if defined(CHROME_SPLIT_DLL)
-  return NULL;
-#else
   return &g_chrome_content_plugin_client.Get();
-#endif
 }
 
 content::ContentRendererClient*
     ChromeMainDelegate::CreateContentRendererClient() {
-  // TODO(scottmg): http://crbug.com/237249 This will have to be split out into
-  // browser and child parts.
-#if defined(CHROME_SPLIT_DLL)
-  return NULL;
-#else
   return &g_chrome_content_renderer_client.Get();
-#endif
 }
 
 content::ContentUtilityClient*
     ChromeMainDelegate::CreateContentUtilityClient() {
-  // TODO(scottmg): http://crbug.com/237249 This will have to be split out into
-  // browser and child parts.
-#if defined(CHROME_SPLIT_DLL)
-  return NULL;
-#else
   return &g_chrome_content_utility_client.Get();
-#endif
 }
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 4d4ee09..f25e9fa 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -435,6 +435,9 @@
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_FEATURE_NAME" desc="Title close to icon shown on side of Google sign-in UI to create a locally managed user.">
     Locally managed user
   </message>
+  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_NO_MANAGER_TEXT" desc="Text shown when managed user can be created, but no users that can be manager exist.">
+    At least one account must exist on this device before creating a Limited user.
+  </message>
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_HTML" desc="Text with actual name shown on side of Google sign-in UI to create a locally managed user.">
     <ph name="LINK_START">$1<ex>&gt;a&lt;</ex></ph>Create managed user<ph name="LINK_END">$2<ex>&gt;/a&lt;</ex></ph> for this device.
   </message>
@@ -477,11 +480,11 @@
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_INSTRUCTIONS_TEXT" desc="Messsage indicating that instructions will be sent to manager's email.">
     To configure this profile, please check your email at <ph name="MANAGER_EMAIL">$1<ex>john.doe@example.com</ex></ph> for further instructions.
   </message>
-  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATE_USERNAME_ALREADY_EXISTS" desc="Error text shown in locally managed user creation dialog when local account with suggested name already exists on machine.">
-    User with name <ph name="USER_DISPLAY_NAME">$1<ex>John</ex></ph> already exists.
+  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATE_USERNAME_ALREADY_EXISTS" desc="Error text shown in locally managed user creation dialog when local account with suggested name already exists on a device.">
+    Whoops, this name is already in use!
   </message>
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATE_PASSWORD_MISMATCH_ERROR" desc="Error text shown in locally managed user creation dialog when typed passwords does not match.">
-    Passwords do not match.
+    Whoops, passwords do not match!
   </message>
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATE_PASSWORD_TOO_SHORT" desc="Error text shown in locally managed user creation dialog when typed password is too short.">
     Password is too short.
@@ -498,14 +501,11 @@
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_TPM_ERROR" desc="Text shown in a title when locally managed user creation has failed in case of TPM error">
     TPM error.
   </message>
-  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_NOT_CONNECTED" desc="Text shown in a title when locally managed user creation has failed in case when device is offline">
-    You need to have internet access to create locally managed user.
-  </message>
-  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_TIMED_OUT" desc="Text shown in a title when locally managed user creation has failed in case when network timed out">
-    Network timeout. Please check your internet connection and try again.
-  </message>
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_SERVER_ERROR" desc="Text shown in a title when locally managed user creation has failed in case when there was server error on a remote side">
-    Server error. Please try again later.
+    Server error.
+  </message>
+  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_TOKEN_WRITE_ERROR" desc="Text shown in a title when locally managed user creation has failed in case when there was an error during writing settings.">
+    Could not write settings for managed user.
   </message>
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_CANCEL_BUTTON_TITLE" desc="Text for button on an error reporting screen for locally managed user creation, that is used to abort whole operation">
     Cancel
@@ -513,6 +513,12 @@
   <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_ERROR_RETRY_BUTTON_TITLE" desc="Text for button on an error reporting screen for locally managed user creation, that is used to retry failed operation">
     Retry
   </message>
+  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE" desc="Text shown next to progress indicator upon manager authentication.">
+    Authenticating...
+  </message>
+  <message name="IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_CREATION_PROGRESS_MESSAGE" desc="Text shown next to progress indicator upon managed user creation.">
+    Creating profile...
+  </message>
   <message name="IDS_USER_IS_LOCALLY_MANAGED_BY_NOTICE" desc="Text for notifications showing that this user is locally managed">
     This user is managed by <ph name="MANAGER_EMAIL">$1<ex>john.doe@example.com</ex></ph>. Device usage and history may be tracked.
   </message>
@@ -831,23 +837,47 @@
   <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_TAB_TITLE" desc="Title for the display settings tab.">
     Manage displays
   </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_OPTIONS" desc="The section title for general options for a selected display.">
+    Options:
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_RESOLUTION" desc="The section title for resolution option for a selected display.">
+    Resolution:
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_ORIENTATION" desc="The section title for display orientation option for a selected display.">
+    Orientation:
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_OVERSCAN" desc="The section title for overscan option for a selected display.">
+    Overscan:
+  </message>
   <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_START_MIRRORING" desc="Button label to start display mirroring.">
     Start mirroring
   </message>
   <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_STOP_MIRRORING" desc="Button label to stop display mirroring.">
     Stop mirroring
   </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_MIRRORING_DISPLAY_NAME" desc="The text shown at display name field when mirroring.">
+    Mirroring
+  </message>
   <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_SET_PRIMARY" desc="Button label to set a display primary.">
     Make primary
   </message>
-  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_APPLY_RESULT" desc="Button label to apply the current settings.">
-    Apply
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_RESOLUTION_ANNOTATION_BEST" desc="The text shown for resolution options to annotate this is the best resolution.">
+    (Best)
   </message>
-  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_RESOLUTION" desc="Label to describe the resolution of the currently selected display.">
-    Resolution:
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_STANDARD_ORIENTATION" desc="The default value of display orientation option item.">
+    Standard
   </message>
-  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_START_CALIBRATING_OVERSCAN" desc="Label to start calibrating the overscan preference.">
-    TV alignment
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_ORIENTATION_90" desc="The value of display orientation option item: 90-degree rotated">
+    90&#x00B0;
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_ORIENTATION_180" desc="The value of display orientation option item: 180-degree rotated">
+    180&#x00B0;
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_ORIENTATION_270" desc="The value of display orientation option item: 270-degree rotated">
+    270&#x00B0;
+  </message>
+  <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_START_CALIBRATING_OVERSCAN" desc="Button label to start calibrating the overscan preference.">
+    Adjust overscan...
   </message>
   <message name="IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_TAB_TITLE" desc="Title for the display overscan calibration tab.">
     TV alignment
@@ -3283,6 +3313,9 @@
   <message name="IDS_STATUSBAR_LAYOUT_ICELANDIC" desc="In the language menu button, this shows the input mode.">
     Icelandic keyboard
   </message>
+  <message name="IDS_STATUSBAR_LAYOUT_CANADIAN_MULTILINGUAL" desc="In the language menu button, this shows the input mode.">
+    Canadian Multilingual keyboard
+  </message>
   <message name="IDS_INPUT_METHOD_INFOLIST_WINDOW_TITLE" desc="The title of the infolist window where the meanings and the usages of words are displayed.">
     Information
   </message>
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd
index f440700..8f728d9 100644
--- a/chrome/app/chromium_strings.grd
+++ b/chrome/app/chromium_strings.grd
@@ -271,12 +271,6 @@
         <message name="IDS_SHORTCUT_NEW_WINDOW" desc="The text label of the New window shortcut context menu entry as of Windows 8">
           New window
         </message>
-        <message name="IDS_MISSING_WINDOWS_SYSTEM_FILES_TITLE" desc="Title string on an error dialog to notify that the system is missing some Windows system files">
-          Windows error detected
-        </message>
-        <message name="IDS_MISSING_WINDOWS_SYSTEM_FILES_MESSAGE" desc="Warning message on an error dialog to notify that the system is missing some Windows system files">
-          Your computer is missing some important Windows system files, so Chromium will be unable to function correctly.
-        </message>
       </if>
       <message name="IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2" desc="2nd paragraph of extra information for an unsafe common name in an X509 certificate">
         In this case, the address listed in the certificate does not match the address of the website your browser tried to go to. One possible reason for this is that your communications are being intercepted by an attacker who is presenting a certificate for a different website, which would cause a mismatch. Another possible reason is that the server is set up to return the same certificate for multiple websites, including the one you are attempting to visit, even though that certificate is not valid for all of those websites. Chromium can say for sure that you reached &lt;strong&gt;<ph name="DOMAIN2">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but cannot verify that that is the same site as &lt;strong&gt;<ph name="DOMAIN">$2<ex>www.paypal.com</ex></ph>&lt;/strong&gt; which you intended to reach. If you proceed, Chromium will not check for any further name mismatches.
@@ -478,12 +472,12 @@
       <message name="IDS_CRASH_RECOVERY_CONTENT" desc="Text content telling the user the browser has crashed.">
         Whoa! Chromium has crashed. Relaunch now?
       </message>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Info bar message to save a password">
           Do you want Chromium to save your password?
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Mobile: Info bar message to save a password">
           Do you want Chromium to save your password for this site?
         </message>
@@ -669,11 +663,6 @@
         Chromium is configured to automatically launch when you start your computer.
       </message>
 
-       <!-- Managed user settings page -->
-      <message name="IDS_SIGNIN_SYNC_ALLOWED" desc="A checkbox in the Managed User Settings dialog for enabling sign in and sync.">
-        Allow signing into Chromium.
-      </message>
-
       <!-- about:flags -->
       <if expr="not pp_ifdef('chromeos')">
         <message name="IDS_FLAGS_RELAUNCH_NOTICE" desc="Notifies the user that he needs to relaunch Chromium. Shown next to a button that says 'Relaunch Now'.">
@@ -690,19 +679,24 @@
       </if>
 
       <!-- Obsolete System info bar -->
-      <message name="IDS_SYSTEM_OBSOLETE_MESSAGE" desc="Message shown when your OS is no longer supported. This messages is followed by a 'Learn more' link.">
+      <message name="IDS_SYSTEM_OBSOLETE_MESSAGE" desc="Message shown when your OS is no longer supported. This message is followed by a 'Learn more' link.">
          Chromium has stopped updating and no longer supports this version of your operating system.
       </message>
 
+      <!-- Google API keys info bar -->
+      <message name="IDS_MISSING_GOOGLE_API_KEYS" desc="Message shown when Google API keys are missing. This message is followed by a 'Learn more' link.">
+        Google API keys are missing. Some functionality of Chromium will be disabled.
+      </message>
+
       <!-- about:memory -->
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Chromium and any other active browsers." translateable="false">
 Summary of memory used by currently active browsers. For browsers which use multiple processes, memory reflects aggregate memory used across all browser processes.
 
 For Chromium, processes used to display diagnostics information (such as this "about:memory") are excluded.
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Chromium." translateable="false">
 Summary of memory used by Chromium. Since Chromium uses multiple processes, memory reflects aggregate memory used across all browser processes.
 
@@ -903,11 +897,11 @@
           and deselect any proxies that have been selected.
         </message>
       </if>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Instructions for disabling use of a proxy server (leave empty for Android and iOS).">
         </message>
       </if>
-      <if expr="not pp_ifdef('chromeos') and is_posix and not is_macosx and not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not pp_ifdef('chromeos') and is_posix and not is_macosx and not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Linux instructions for disabling use of a proxy server.">
           Go to
           the Chromium menu &gt;
diff --git a/chrome/app/client_util.cc b/chrome/app/client_util.cc
index 6120cfb..4b8fe73 100644
--- a/chrome/app/client_util.cc
+++ b/chrome/app/client_util.cc
@@ -38,6 +38,7 @@
 
 // Gets chrome version according to the load path. |exe_path| must be the
 // backslash terminated directory of the current chrome.exe.
+// TODO(cpu): This is now only used to support metro_driver, remove it.
 bool GetChromeVersion(const wchar_t* exe_dir, const wchar_t* key_path,
                       string16* version) {
   HKEY reg_root = InstallUtil::IsPerUserInstall(exe_dir) ? HKEY_CURRENT_USER :
@@ -46,10 +47,6 @@
 
   base::win::RegKey key(reg_root, key_path, KEY_QUERY_VALUE);
   if (key.Valid()) {
-    // If 'new_chrome.exe' is present it means chrome was auto-updated while
-    // running. We need to consult the opv value so we can load the old dll.
-    // TODO(cpu) : This is solving the same problem as the environment variable
-    // so one of them will eventually be deprecated.
     string16 new_chrome_exe(exe_dir);
     new_chrome_exe.append(installer::kChromeNewExe);
     if (::PathFileExistsW(new_chrome_exe.c_str()) &&
@@ -65,23 +62,11 @@
   return success;
 }
 
-// Not generic, we only handle strings up to 128 chars.
-bool EnvQueryStr(const wchar_t* key_name, string16* value) {
-  wchar_t out[128];
-  DWORD count = sizeof(out)/sizeof(out[0]);
-  DWORD rv = ::GetEnvironmentVariableW(key_name, out, count);
-  if ((rv == 0) || (rv >= count))
-    return false;
-  *value = out;
-  return true;
-}
-
 // Expects that |dir| has a trailing backslash. |dir| is modified so it
 // contains the full path that was tried. Caller must check for the return
 // value not being null to determine if this path contains a valid dll.
 HMODULE LoadChromeWithDirectory(string16* dir) {
   ::SetCurrentDirectoryW(dir->c_str());
-  const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
   dir->append(installer::kChromeDll);
 
   return ::LoadLibraryExW(dir->c_str(), NULL,
@@ -98,6 +83,18 @@
   GoogleUpdateSettings::UpdateDidRunState(false, system_level);
 }
 
+#if defined(CHROME_SPLIT_DLL)
+// Deferred initialization entry point for chrome1.dll.
+typedef BOOL (__stdcall *DoDeferredCrtInitFunc)(HINSTANCE hinstance);
+
+bool InitSplitChromeDll(HMODULE mod) {
+  if (!mod)
+    return false;
+  DoDeferredCrtInitFunc init = reinterpret_cast<DoDeferredCrtInitFunc>(
+      ::GetProcAddress(mod, "_DoDeferredCrtInit@4"));
+  return (init(mod) == TRUE);
+}
+#endif
 }  // namespace
 
 string16 GetExecutablePath() {
@@ -128,68 +125,59 @@
 // to the latest version. This is the expected path for the first chrome.exe
 // browser instance in an installed build.
 HMODULE MainDllLoader::Load(string16* out_version, string16* out_file) {
+  const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
   const string16 dir(GetExecutablePath());
   *out_file = dir;
   HMODULE dll = LoadChromeWithDirectory(out_file);
-  if (dll)
-    return dll;
+  if (!dll) {
+    // Loading from same directory (for developers) failed.
+    string16 version_string;
+    Version version;
+    if (cmd_line.HasSwitch(switches::kChromeVersion)) {
+      // This is used to support Chrome Frame, see http://crbug.com/88589.
+      version_string = cmd_line.GetSwitchValueNative(switches::kChromeVersion);
+      version = Version(WideToASCII(version_string));
 
-  string16 version_string;
-  Version version;
-  const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
-  if (cmd_line.HasSwitch(switches::kChromeVersion)) {
-    version_string = cmd_line.GetSwitchValueNative(switches::kChromeVersion);
-    version = Version(WideToASCII(version_string));
+      if (!version.IsValid()) {
+        // If a bogus command line flag was given, then abort.
+        LOG(ERROR) << "Invalid command line version: " << version_string;
+        return NULL;
+      }
+    }
+
+    // If no version on the command line, then look at the version resource in
+    // the current module and try loading that.
+    if (!version.IsValid()) {
+      scoped_ptr<FileVersionInfo> file_version_info(
+          FileVersionInfo::CreateFileVersionInfoForCurrentModule());
+      if (file_version_info.get()) {
+        version_string = file_version_info->file_version();
+        version = Version(WideToASCII(version_string));
+      }
+    }
 
     if (!version.IsValid()) {
-      // If a bogus command line flag was given, then abort.
-      LOG(ERROR) << "Invalid command line version: " << version_string;
+      LOG(ERROR) << "No valid Chrome version found";
+      return NULL;
+    }
+
+    *out_file = dir;
+    *out_version = version_string;
+    out_file->append(*out_version).append(1, L'\\');
+    dll = LoadChromeWithDirectory(out_file);
+    if (!dll) {
+      LOG(ERROR) << "Failed to load Chrome DLL from " << *out_file;
       return NULL;
     }
   }
 
-  // If no version on the command line, then look at the version resource in
-  // the current module and try loading that.
-  if (!version.IsValid()) {
-    scoped_ptr<FileVersionInfo> file_version_info(
-        FileVersionInfo::CreateFileVersionInfoForCurrentModule());
-    if (file_version_info.get()) {
-      version_string = file_version_info->file_version();
-      version = Version(WideToASCII(version_string));
-    }
-  }
-
-  // TODO(robertshield): in theory, these next two checks (env and registry)
-  // should never be needed. Remove them when I become 100% certain this is
-  // also true in practice.
-
-  // If no version in the current module, then look in the environment.
-  if (!version.IsValid()) {
-    if (EnvQueryStr(ASCIIToWide(chrome::kChromeVersionEnvVar).c_str(),
-                    &version_string)) {
-      version = Version(WideToASCII(version_string));
-      LOG_IF(ERROR, !version.IsValid()) << "Invalid environment version: "
-                                        << version_string;
-    }
-  }
-
-  // If no version in the environment, then look in the registry.
-  if (!version.IsValid()) {
-    version_string = GetVersion();
-    if (version_string.empty()) {
-      LOG(ERROR) << "Could not get Chrome DLL version.";
-      return NULL;
-    }
-  }
-
-  *out_file = dir;
-  *out_version = version_string;
-  out_file->append(*out_version).append(1, L'\\');
-  dll = LoadChromeWithDirectory(out_file);
-  if (!dll) {
-    LOG(ERROR) << "Failed to load Chrome DLL from " << *out_file;
-    return NULL;
-  }
+#if defined(CHROME_SPLIT_DLL)
+  // In split dlls mode, we need to manually initialize both DLLs because
+  // the circular dependencies between them make the loader not call the
+  // Dllmain for DLL_PROCESS_ATTACH.
+  InitSplitChromeDll(dll);
+  InitSplitChromeDll(::GetModuleHandleA("chrome1.dll"));
+#endif
 
   return dll;
 }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 4146ca3..bf33041 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -113,7 +113,7 @@
 
     <!-- On Android, output some strings into Android's xml string format.
          These strings are tagged with formatter_data="android_java" -->
-    <if expr="pp_ifdef('android')">
+    <if expr="is_android">
       <output filename="java/res/values-am/generated_resources.xml" lang="am" type="android" context="android_java" />
       <output filename="java/res/values-ar/generated_resources.xml" lang="ar" type="android" context="android_java" />
       <output filename="java/res/values-bg/generated_resources.xml" lang="bg" type="android" context="android_java" />
@@ -1418,21 +1418,6 @@
       </if>
 
       <!-- App menu -->
-      <if expr="pp_ifdef('android')">
-        <message name="IDS_SHOW_BOOKMARK_BAR" desc="Mobile: The toggle to show the bookmark bar">
-          &amp;Always show bookmarks bar
-        </message>
-      </if>
-      <if expr="not pp_ifdef('android') and pp_ifdef('use_titlecase')">
-        <message name="IDS_SHOW_BOOKMARK_BAR" desc="In Title Case: The toggle to show the bookmark bar">
-          &amp;Show Bookmarks Bar
-        </message>
-      </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('use_titlecase')">
-        <message name="IDS_SHOW_BOOKMARK_BAR" desc="The toggle to show the bookmark bar">
-          &amp;Show bookmarks bar
-        </message>
-      </if>
       <message name="IDS_TOGGLE_REQUEST_TABLET_SITE" desc="The toggle to request tablet site on a touch dev.">
         Request tablet site
       </message>
@@ -2879,7 +2864,7 @@
       <message name="IDS_DOWNLOAD_UNCONFIRMED_PREFIX" desc="The prefix used in the unconfirmed download file.">
         Unconfirmed
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_PROMPT_DANGEROUS_DOWNLOAD"
                  desc="Mobile: Message shown to the user to validate the download of a dangerous file.">
           This type of file can harm your mobile device. Do you want to keep <ph name="FILE_NAME">$1<ex>malware.exe</ex></ph> anyway?
@@ -2889,7 +2874,7 @@
           Extensions, apps, and themes can harm your mobile device. Are you sure you want to continue?
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_PROMPT_DANGEROUS_DOWNLOAD"
                  desc="Message shown to the user to validate the download of a dangerous file.">
           This type of file can harm your computer. Do you want to keep <ph name="FILE_NAME">$1<ex>malware.exe</ex></ph> anyway?
@@ -3310,12 +3295,12 @@
       <message name="IDS_CERT_ERROR_EXTRA_INFO_TITLE" desc="The title for the extra information section displayed when a page contains a certificate error">
         Help me understand
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_CERT_ERROR_EXTRA_INFO_1" desc="Mobile: 1st paragraph of extra information for any certificate error">
           When you connect to a secure website, the server hosting that site presents your browser with something called a "certificate" to verify its identity. This certificate contains identity information, such as the address of the website, which is verified by a third party that your mobile device trusts. By checking that the address in the certificate matches the address of the website, it is possible to verify that you are securely communicating with the website you intended, and not a third party (such as an attacker on your network).
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_CERT_ERROR_EXTRA_INFO_1" desc="1st paragraph of extra information for any certificate error">
           When you connect to a secure website, the server hosting that site presents your browser with something called a "certificate" to verify its identity. This certificate contains identity information, such as the address of the website, which is verified by a third party that your computer trusts. By checking that the address in the certificate matches the address of the website, it is possible to verify that you are securely communicating with the website you intended, and not a third party (such as an attacker on your network).
         </message>
@@ -3353,17 +3338,17 @@
       <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_TITLE" desc="Title for an X509 certificate with an invalid authority">
         The site's security certificate is not trusted!
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_EXTRA_INFO_2" desc="Mobile: 2nd paragraph of extra information for a X509 certificate with an invalid authority">
           In this case, the certificate has not been verified by a third party that your mobile device trusts. Anyone can create a certificate claiming to be whatever website they choose, which is why it must be verified by a trusted third party. Without that verification, the identity information in the certificate is meaningless. It is therefore not possible to verify that you are communicating with <ph name="DOMAIN">&lt;strong&gt;$1<ex>paypal.com</ex>&lt;/strong&gt;</ph> instead of an attacker who generated his own certificate claiming to be <ph name="DOMAIN2">&lt;strong&gt;$2<ex>paypal.com</ex>&lt;/strong&gt;</ph>. You should not proceed past this point.
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_EXTRA_INFO_3" desc="Mobile: 3rd paragraph of extra information for a X509 certificate with an invalid authority">
           If, however, you work in an organization that generates its own certificates, and you are trying to connect to an internal website of that organization using such a certificate, you may be able to solve this problem securely. You can import your organization's root certificate as a "root certificate", and then certificates issued or verified by your organization will be trusted and you will not see this error next time you try to connect to an internal website. Contact your organization's help staff for assistance in adding a new root certificate to your mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_EXTRA_INFO_2" desc="2nd paragraph of extra information for a X509 certificate with an invalid authority">
           In this case, the certificate has not been verified by a third party that your computer trusts. Anyone can create a certificate claiming to be whatever website they choose, which is why it must be verified by a trusted third party. Without that verification, the identity information in the certificate is meaningless. It is therefore not possible to verify that you are communicating with <ph name="DOMAIN">&lt;strong&gt;$1<ex>paypal.com</ex>&lt;/strong&gt;</ph> instead of an attacker who generated his own certificate claiming to be <ph name="DOMAIN2">&lt;strong&gt;$2<ex>paypal.com</ex>&lt;/strong&gt;</ph>. You should not proceed past this point.
         </message>
@@ -4914,9 +4899,6 @@
       <message name="IDS_APP_DISABLED_ERROR_LABEL" desc="Text displayed when an app was disabled due to a new upgrade requiring an explicit permission check from the user.">
         The newest version of the app "<ph name="APP_NAME">$1<ex>Pandora</ex></ph>" requires more permissions, so it has been disabled.
       </message>
-      <message name="IDS_EXTENSION_DISABLED_ERROR_ENABLE_BUTTON" desc="Text displayed on the button to show the re-enable dialog for the disabled extension or app.">
-        Review permissions...
-      </message>
       <message name="IDS_EXTENSION_DISABLED_ERROR_TITLE" desc="Title of the notification that an extension or app was disabled due to a new upgrade requiring an explicit permission check from the user.">
         <ph name="EXTENSION_NAME">$1<ex>Adblock</ex></ph> requires new permissions
       </message>
@@ -5036,12 +5018,12 @@
         On your <ph name="ACCOUNT_EMAIL">$1<ex>user@example.com</ex></ph> account, it could:
       </message>
 
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS" desc="Mobile: Permission string for full access to the mobile device and all websites.">
           Access all data on your mobile device and the websites you visit
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS" desc="Permission string for full access to the computer and all websites.">
           Access all data on your computer and the websites you visit
         </message>
@@ -5106,14 +5088,14 @@
       <message name="IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_DEVICE" desc="Permission string for access to a specific Bluetooth device.">
         Access the Bluetooth device "<ph name="DEVICE_NAME">$1<ex>Galaxy Nexus</ex></ph>".
       </message>
-      <message name="IDS_EXTENSION_PROMPT_WARNING_UNKNOWN_USB_VENDOR" desc="Description used within IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE when a vendor cannot be established for a USB device.">
-        Unknown Company
-      </message>
-      <message name="IDS_EXTENSION_PROMPT_WARNING_UNKNOWN_USB_PRODUCT" desc="Description used within IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE when a product cannot be established for a USB device.">
-        Unknown Device
-      </message>
       <message name="IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE" desc="Permission string for access to a specific USB device.">
-        Access the USB device "<ph name="PRODUCT_NAME">$1<ex>SoundKnob</ex></ph> (<ph name="VENDOR_NAME">$2<ex>Griffin Technology</ex></ph>)".
+        Access the USB device <ph name="PRODUCT_NAME">$1<ex>SoundKnob</ex></ph> from <ph name="VENDOR_NAME">$2<ex>Griffin Technology</ex></ph>.
+      </message>
+      <message name="IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_VENDOR" desc="Permission string for access to a specific USB device when a vendor name cannot be established for a USB device.">
+        Access the USB device.
+      </message>
+      <message name="IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_PRODUCT" desc="Permission string for access to a specific USB device when a product name cannot be established for a USB device.">
+        Access the USB device from <ph name="VENDOR_NAME">$1<ex>Griffin Technology</ex></ph>.
       </message>
       <message name="IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE" desc="Permission string for access to audio capture devices.">
         Use your microphone
@@ -5450,6 +5432,12 @@
       <message name="IDS_APPS_DEVTOOL_EXTENSIONS_INSTALLED" desc="Text for the word 'Extensions'.">
         Extensions
       </message>
+      <message name="IDS_APPS_DEVTOOL_NO_UNPACKED_INSTALLED" desc="Text that lets the user know that no unpacked apps or extensions are installed.">
+        No unpacked applications or extensions.
+      </message>
+      <message name="IDS_APPS_DEVTOOL_UNPACKED_INSTALLED" desc="Text for the word 'Unpacked' (unpacked app or extension).">
+        Unpacked
+      </message>
       <message name="IDS_EXTENSIONS_NONE_INSTALLED_SUGGEST_GALLERY" desc="Text on next line after IDS_EXTENSIONS_NONE_INSTALLED that suggests the user look in the gallery for extensions to install.">
         Want to <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>browse the gallery<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph> instead?
       </message>
@@ -5510,12 +5498,6 @@
       <message name="IDS_EXTENSIONS_RESTART" desc="The link for restarting apps.">
         Restart
       </message>
-      <message name="IDS_EXTENSIONS_LOCK_BUTTON" desc="The button to lock the extensions for a managed user.">
-        Lock
-      </message>
-      <message name="IDS_EXTENSIONS_UNLOCK_BUTTON" desc="The button to unlock the extensions for a managed user.">
-        Unlock
-      </message>
       <if expr="is_macosx">
         <message name="IDS_EXTENSIONS_RELOAD_UNPACKED" desc="The link for reloading unpacked extensions.">
           Reload (⌘R)
@@ -6116,7 +6098,7 @@
       <message name="IDS_POLICY_SCOPE_USER" desc="Text displayed in the Applies to column when a policy applies to the current user only.">
         Current user
       </message>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('chromeos')">
+      <if expr="not is_android and not pp_ifdef('chromeos')">
         <message name="IDS_POLICY_SCOPE_DEVICE" desc="Text displayed in the Applies to column when a policy applies to everyone on the machine.">
           Machine
         </message>
@@ -6126,7 +6108,7 @@
           Device
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_POLICY_SCOPE_DEVICE" desc="Mobile: Text displayed in the Applies To column when a policy applies to everyone on the mobile device.">
           Mobile device
         </message>
@@ -6154,6 +6136,12 @@
       <message name="IDS_FLAGS_NO_EXPERIMENTS_AVAILABLE" desc="Shown if no experiments are available">
         Aww, it looks like there are currently no experiments available.
       </message>
+      <message name="IDS_FLAGS_UNSUPPORTED_TABLE_TITLE" desc="Title for the unsupported experiments table on the about:flags page. It lists all experiments that are not available on the current platform.">
+        Unavailable Experiments
+      </message>
+      <message name="IDS_FLAGS_NO_UNSUPPORTED_EXPERIMENTS" desc="Show if there are no unavailable experiments.">
+        All experiments are available on your platform!
+      </message>
       <message name="IDS_FLAGS_NOT_AVAILABLE" desc="Shown instead of the Enable/Disable link, to let the user know that an experiment is not available on the current platform.">
         Sorry, this experiment is not available on your platform.
       </message>
@@ -6194,12 +6182,12 @@
       <message name="IDS_FLAGS_ENABLE_NACL_NAME" desc="Name of the 'Enable Native Client' lab.">
         Native Client
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FLAGS_ENABLE_NACL_DESCRIPTION" desc="Mobile: Description of the 'Enable Native Client' lab.">
           Enable support for Native Client.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_FLAGS_ENABLE_NACL_DESCRIPTION" desc="Description of the 'Enable Native Client' lab.">
           Enable Native Client for all web applications, even those that were not installed from the Chrome Web Store.
         </message>
@@ -6237,12 +6225,12 @@
       <message name="IDS_FLAGS_CLOUD_PRINT_CONNECTOR_NAME" desc="Title of the Cloud Print Connector lab">
         Cloud Print Connector
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FLAGS_CLOUD_PRINT_CONNECTOR_DESCRIPTION" desc="Mobile: Description of the Cloud Print Connector lab">
           Enables a background service that connects the Google Cloud Print service to any printers installed on this mobile device. Once this lab is enabled, you can turn the Google Cloud Print Connector on by logging in with your Google account in the Under the Hood section of Settings.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_FLAGS_CLOUD_PRINT_CONNECTOR_DESCRIPTION" desc="Description of the Cloud Print Connector lab">
           Enables a background service that connects the Google Cloud Print service to any printers installed on this computer. Once this lab is enabled, you can turn the Google Cloud Print Connector on by logging in with your Google account in the Under the Hood section of Settings.
         </message>
@@ -6457,12 +6445,12 @@
       <message name="IDS_FLAGS_EXPERIMENTAL_LOCATION_FEATURES_NAME" desc="Name of the 'Enable experimental location features' lab.">
         Experimental location features
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FLAGS_EXPERIMENTAL_LOCATION_FEATURES_DESCRIPTION" desc="Mobile: Description of the 'Enable experimental location features' lab.">
           Enables experimental extensions to the geolocation feature. Includes using operating system location APIs (where available), and sending additional local network configuration data to the Google location service to provide higher accuracy positioning.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_FLAGS_EXPERIMENTAL_LOCATION_FEATURES_DESCRIPTION" desc="Description of the 'Enable experimental location features' lab.">
           Enables experimental extensions to the geolocation feature to use operating system location APIs (where available).
         </message>
@@ -6594,7 +6582,7 @@
       <message name="IDS_FLAGS_SYNC_KEYSTORE_ENCRYPTION_DESCRIPTION" desc="Description for the flag to enable sync's keystore encryption options">
         Switch to sync's new server supported encryption schema. Warning: this will modify your sync data, possibly making it unreadable to other clients.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FLAGS_SYNC_TYPED_URLS_NAME" desc="Mobile: Title for the flag to enable syncing the TypedUrl datatype">
           Enable syncing typed URLs
         </message>
@@ -6602,7 +6590,7 @@
           Enable typed URLs in the sync settings. This allows syncing your typed URL history to other clients to assist in omnibox auto-completion.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_FLAGS_SYNC_TYPED_URLS_NAME" desc="Title for the flag to enable syncing the TypedUrl datatype">
           Enable syncing History
         </message>
@@ -6664,6 +6652,12 @@
       <message name="IDS_FLAGS_DISABLE_WEBRTC_DESCRIPTION" desc="Description for the flag to disable WebRTC.">
         Enabling this option prevents web applications from accessing the WebRTC API.
       </message>
+      <message name="IDS_FLAGS_ENABLE_SCTP_DATA_CHANNELS_NAME" desc="Name of about:flags option to turn on SCTP data channels support">
+        Enable SCTP Data Channels
+      </message>
+      <message name="IDS_FLAGS_ENABLE_SCTP_DATA_CHANNELS_DESCRIPTION" desc="Description of about:flags option to turn on SCTP data channels support">
+        When enabled, DataChannels created by WebRTC will use the SCTP wire protocol.
+      </message>
       <message name="IDS_FLAGS_ENABLE_WEBAUDIO_NAME" desc="Name of the 'Enable WebAudio' lab.">
         Enable WebAudio
       </message>
@@ -6685,18 +6679,18 @@
       <message name="IDS_FLAGS_COMPOSITING_FOR_FIXED_POSITION_HIGH_DPI" desc="Description of the 'Compositing for fixed position elements on high DPI' experiment.">
         Enabled only for high-DPI displays
       </message>
+      <message name="IDS_FLAGS_COMPOSITING_FOR_TRANSITION_NAME" desc="Name of the 'Compositing for RenderLayers with transitions' lab.">
+        Compositing for RenderLayers with transitions.
+      </message>
+      <message name="IDS_FLAGS_COMPOSITING_FOR_TRANSITION_DESCRIPTION" desc="Description for the flag to make RenderLayers with transitions become composited layers.">
+        Enabling this option will make RenderLayers with a transition on opacity, transform, or filter have their own composited layer.
+      </message>
       <message name="IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_NAME" desc="Name of the 'Enable deferred image decoding' lab.">
         Enable deferred image decoding.
       </message>
       <message name="IDS_FLAGS_ENABLE_DEFERRED_IMAGE_DECODING_DESCRIPTION" desc="Description for the flag to defer image decoding in WebKit.">
         Defer image decoding operations in WebKit until painting.
       </message>
-      <message name="IDS_FLAGS_ENABLE_SPDY4A1_NAME" desc="Title for the flag to enable SPDY/4 alpha 1">
-        Enable SPDY/4 alpha 1
-      </message>
-      <message name="IDS_FLAGS_ENABLE_SPDY4A1_DESCRIPTION" desc="Description for the flag to enable SPDY/4 alpha 1.">
-        Enable experimental SPDY/4 alpha 1. Note that this also enables SPDY/3.1.
-      </message>
       <message name="IDS_FLAGS_ENABLE_ASYNC_DNS_NAME" desc="Title for the flag to enable asynchronous DNS client.">
         Built-in Asynchronous DNS
       </message>
@@ -6794,11 +6788,11 @@
       <message name="IDS_FLAGS_ENABLE_MEMORY_MONITOR_DESCRIPTION" desc="Title for the flag to enable advanced gestures.">
         Enables visual memory monitor in status area.
       </message>
-      <message name="IDS_FLAGS_ASH_DISABLE_NEW_NETWORK_STATUS_AREA_NAME" desc="Title for the flag to enable using the new network handlers.">
-        Disable new network handlers in the status area
+      <message name="IDS_FLAGS_CHROMEOS_USE_NEW_NETWORK_CONFIGURATION_HANDLERS_NAME" desc="Title for the flag to enable using the new network configuration handlers.">
+        Enable new network configuration handlers
       </message>
-      <message name="IDS_FLAGS_ASH_DISABLE_NEW_NETWORK_STATUS_AREA_DESCRIPTION" desc="Title for the flag to enable using the new Network State Handler.">
-        Disables the new network handlers which handle Shill communication without using NetworkLibrary for the status area.
+      <message name="IDS_FLAGS_CHROMEOS_USE_NEW_NETWORK_CONFIGURATION_HANDLERS_DESCRIPTION" desc="Description for the flag to enable using the new network configuration handlers.">
+        Enable the new network configuration handlers which handle Shill connection requests without using NetworkLibrary.
       </message>
       <message name="IDS_FLAGS_ASH_ENABLE_NEW_AUDIO_HANDLER_NAME" desc="Title for the flag to enable using the new audio handler.">
         Enables new audio handler
@@ -6830,6 +6824,12 @@
       <message name="IDS_FLAGS_ENABLE_WEBP_IN_ACCEPT_HEADER_DESCRIPTION" desc="Description for the flag to enable 'image/webp' in accept header.">
         Enables 'image/webp' accept header in HTTP requests for images, to denote WebP image support.
       </message>
+      <message name="IDS_FLAGS_ENABLE_RESET_PROFILE_SETTINGS_NAME" desc="Title for the flag to enable a feature to reset profile settings that are often modified by malware.">
+        Enable reset profile settings
+      </message>
+      <message name="IDS_FLAGS_ENABLE_RESET_PROFILE_SETTINGS_DESCRIPTION" desc="Description for the flag to enable a feature to reset profile settings that are often modified by malware.">
+        Enables the option in chrome://settings to reset settings in your profile that are often modified by malware.
+      </message>
 
       <message name="IDS_GENERIC_EXPERIMENT_CHOICE_AUTOMATIC" desc="Generic 'Automatic' experiment choice option name.">
         Automatic
@@ -6972,17 +6972,11 @@
       <message name="IDS_FLAGS_ENABLE_PINCH_SCALE_DESCRIPTION" desc="Description of the flag to turn on experiental pinch to scale.">
         Enables experimental support for scale using pinch.
       </message>
-      <message name="IDS_FLAGS_PINCH_ZOOM_SCROLLBARS_NAME" desc="Name for the Pinch Zoom Scrollbars feature.">
-        Enable overlay pinch-zoom scrollbars.
+      <message name="IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_NAME" desc="Name of the flag to turn on experimental pinch virtual viewport.">
+        Enable pinch virtual viewport.
       </message>
-      <message name="IDS_FLAGS_PINCH_ZOOM_SCROLLBARS_DESCRIPTION" desc="Description for the Pinch Zoom Scrollbars feature.">
-        While zoomed in, overlay scrollbars will be visible during scrolling.
-      </message>
-      <message name="IDS_FLAGS_ENABLE_APP_LIST_SHOW_APPS_ONLY_NAME" desc="Name of the flag to show only apps in app list search.">
-        Enable apps only search for app list.
-      </message>
-      <message name="IDS_FLAGS_ENABLE_APP_LIST_SHOW_APPS_ONLY_DESCRIPTION" desc="Description of the flag to show only apps in app list search.">
-        Shows only apps in app list search.
+      <message name="IDS_FLAGS_ENABLE_PINCH_VIRTUAL_VIEWPORT_DESCRIPTION" desc="Description of the flag to turn on experimental pinch virtual viewport.">
+        When zoomed in, fixed-position elements and scaled scrollbars attach to this viewport.
       </message>
       <message name="IDS_FLAGS_NEW_DIALOG_STYLE_NAME" desc="Name of the flag to use the classic or new dialog style.">
         New Dialog Style.
@@ -7022,24 +7016,6 @@
         <message name="IDS_FLAGS_DISABLE_BOOT_ANIMATION_DESCRIPTION" desc="Description for the flag to disable wallpaper boot animation (except for OOBE).">
           Disables wallpaper boot animation (except for OOBE case).
         </message>
-        <message name="IDS_FLAGS_DISABLE_BOOT_ANIMATION2" desc="Name for the flag to go back to wallpaper boot animation v1.">
-          Disable boot animation v2 (go back to v1).
-        </message>
-        <message name="IDS_FLAGS_DISABLE_BOOT_ANIMATION2_DESCRIPTION" desc="Description for the flag to go back to wallpaper boot animation v2.">
-          Disables wallpaper boot animation v2 - goes back to v1 (except for OOBE case) i.e. login UI is not shown till animation is complete.
-        </message>
-        <message name="IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION" desc="Name for the flag to switch wallpaper boot animation function.">
-          Boot animation function.
-        </message>
-        <message name="IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION_DESCRIPTION" desc="Description for the flag to switch wallpaper boot animation function.">
-          Change boot animation function.
-        </message>
-        <message name="IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION2" desc="Description for the option of boot animation function.">
-          EASE_OUT_2
-        </message>
-        <message name="IDS_FLAGS_ASH_BOOT_ANIMATION_FUNCTION3" desc="Description for the option of boot animation function.">
-          EASE_OUT_3
-        </message>
         <message name="IDS_FLAGS_CAPTIVE_PORTAL_DETECTOR_NAME" desc="Name for the flag to set to enable Chrome Captive Portal detector.">
           Captive Portal detector.
         </message>
@@ -7067,11 +7043,11 @@
         <message name="IDS_FLAGS_DISABLE_FULLSCREEN_APP_DESCRIPTION" desc="Description for the flag to disable auto run kiosk applications in full screen.">
           Disables making kiosk applications run in full screen automatically..
         </message>
-        <message name="IDS_FLAGS_ENABLE_EXPERIMENTAL_BLUETOOTH_NAME" desc="Name for the flag to enable experimental Bluetooth features.">
-          Enable experimental Bluetooth features.
+        <message name="IDS_FLAGS_ENABLE_KIOSK_APP_SETTINGS_NAME" desc="Name for the flag to enable kiosk app settings UI.">
+          Enable kiosk app settings UI.
         </message>
-        <message name="IDS_FLAGS_ENABLE_EXPERIMENTAL_BLUETOOTH_DESCRIPTION" desc="Description for the flag to enable experimental Bluetooth features.">
-          Enable experimental Bluetooth features.
+        <message name="IDS_FLAGS_ENABLE_KIOSK_APP_SETTINGS_DESCRIPTION" desc="Description for the flag to enable kiosk app settings UI.">
+          Enable kiosk app management in settings.
         </message>
       </if>
       <message name="IDS_FLAGS_FULL_HISTORY_SYNC_NAME" desc="Name of the flag to disable full history sync.">
@@ -7140,7 +7116,7 @@
       <message name="IDS_FLAGS_ENABLE_APPS_DEVTOOL_APP_DESCRIPTION" desc="Description of flag to enable apps-devtools app.">
         An app to develop apps / extensions.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FLAGS_ENABLE_SPDY_PROXY_AUTH_NAME" desc="Name of the flag to enable data compression proxy.">
           Enable Data Compression Proxy
         </message>
@@ -7229,6 +7205,21 @@
       <message name="IDS_FLAGS_ENABLE_SYNC_DIRECTORY_OPERATION_DESCRIPTION" desc="Description of the flag to enable syncfs directory support.">
         Enables directory support for sync filesystem.
       </message>
+      <message name="IDS_FLAGS_ENABLE_DRAGGABLE_MENU_BUTTON_NAME" desc="Title for the flag to enable draggable menu button.">
+        Enable draggable menu button.
+      </message>
+      <message name="IDS_FLAGS_ENABLE_DRAGGABLE_MENU_BUTTON_DESCRIPTION" desc="Description for the flag to enable draggable menu button.">
+        Make the menu button touch-draggable so that users can execute a menu item (e.g., New Tab, Settings,...) by a single touch.
+        If the popup list is too long to display at once, touch-dragging at the top or the bottom scrolls the list.
+      </message>
+      <if expr="is_macosx">
+        <message name="IDS_FLAGS_ENABLE_APP_LIST_SHIM_NAME" desc="Name of the flag to enable the app launcher app bundle.">
+          Enable App Launcher OSX app bundle.
+        </message>
+        <message name="IDS_FLAGS_ENABLE_APP_LIST_SHIM_DESCRIPTION" desc="Description of the flag to enable the app launcher app bundle.">
+          Enable to ensure an OSX app bundle for the App Launcher exists under the Applications folder.
+        </message>
+      </if>
 
       <!-- Crashes -->
       <message name="IDS_CRASHES_TITLE" desc="Title for the chrome://crashes page.">
@@ -7431,12 +7422,12 @@
       </message>
 
       <!-- Pepper Broker Info bar -->
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_PEPPER_BROKER_MESSAGE" desc="Mobile: Message shown when a pepper plugin wants to launch its broker. This message is followed by a 'Learn more' link.">
           <ph name="PEPPER_PLUGIN_NAME">$1<ex>Shockwave Flash</ex></ph> on <ph name="PEPPER_PLUGIN_DOMAIN">$2<ex>example.com</ex></ph> wants to access your mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_PEPPER_BROKER_MESSAGE" desc="Message shown when a pepper plugin wants to launch its broker. This message is followed by a 'Learn more' link.">
           <ph name="PEPPER_PLUGIN_NAME">$1<ex>Shockwave Flash</ex></ph> on <ph name="PEPPER_PLUGIN_DOMAIN">$2<ex>example.com</ex></ph> wants to access your computer.
         </message>
@@ -7483,17 +7474,17 @@
           Load unsafe script
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and pp_ifdef('use_titlecase')">
+      <if expr="not is_android and pp_ifdef('use_titlecase')">
         <message name="IDS_BLOCK_INSECURE_CONTENT_BUTTON" desc="Button to prevent insecure content from being displayed">
           Don't Load (Recommended)
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('use_titlecase')">
+      <if expr="not is_android and not pp_ifdef('use_titlecase')">
         <message name="IDS_BLOCK_INSECURE_CONTENT_BUTTON" desc="Button to prevent insecure content from being displayed">
           Don't load (recommended)
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_BLOCK_INSECURE_CONTENT_BUTTON" desc="Mobile: Button to prevent insecure content from being displayed">
           Don't load
         </message>
@@ -7961,7 +7952,7 @@
       </message>
 
       <!-- Password Manager -->
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_BUTTON" desc="Save button text for password manager">
           Save password
         </message>
@@ -7969,7 +7960,7 @@
           Never for this site
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_BUTTON" desc="Mobile: Button text for the 'Save Password' infobar's 'Remember password' option">
           Yes
         </message>
@@ -8249,96 +8240,25 @@
       <message name="IDS_UNLOCK_PASSPHRASE_BUTTON" desc="A button for unlocking the managed user settings page.">
         Unlock
       </message>
-      <message name="IDS_LOCK_MANAGED_USER_BUTTON" desc="A button for locking the managed user settings page.">
-        Lock
-      </message>
       <message name="IDS_INCORRECT_PASSPHRASE_WARNING" desc="A warning for the passphrase page if the incorrect passphrase was entered.">
         The passphrase you entered is incorrect.
       </message>
 
-      <!-- Managed User Settings dialog data -->
-      <message name="IDS_OPTIONS_MANAGED_USERS_SECTION_TITLE" desc="Title for the Managed User section">
-        Managed User
-      </message>
-      <message name="IDS_MANAGED_USER_SETTINGS_TITLE" desc="Title for the Managed User Settings dialog.">
-        Managed User Settings
-      </message>
-      <message name="IDS_CONTENT_PACKS_TAB_LABEL" desc="Label for installed whitelists on the Managed User Settings dialog.">
-        Content packs
-      </message>
-      <message name="IDS_MANUAL_EXCEPTION_HEADER" desc="Header for the manual exception management page on Managed User Settings dialog">
-        Manual exceptions
-      </message>
-      <message name="IDS_MANUAL_EXCEPTION_TAB_TITLE" desc="Title for the manual exception management page on Managed User Settings dialog">
-        Manual exceptions
-      </message>
-      <message name="IDS_GET_CONTENT_PACKS_BUTTON" desc="The text for the button that opens the webstore, Content pack section.">
-        Get Content Packs
-      </message>
-      <message name="IDS_CONTENT_PACK_SETTINGS_LABEL" desc="Label that explains the three options associated with installed whitelists on the Managed User Settings dialog.">
-        When a managed user tries to access a site that is not in any content pack:
-      </message>
-      <message name="IDS_OUTSIDE_CONTENT_PACKS_ALLOW_RADIO" desc="A radio button in the Managed User Settings dialog for allowing a managed user to view sites that do not belong to the installed whitelists.">
-        Allow
-      </message>
-      <message name="IDS_OUTSIDE_CONTENT_PACKS_WARN_RADIO" desc="A radio button in the Managed User Settings dialog for warning a managed user whenever they try to view sites that do not belong to the installed whitelist.">
-        Warn
-      </message>
-      <message name="IDS_OUTSIDE_CONTENT_PACKS_BLOCK_RADIO" desc="A radio button in the Managed User Settings dialog for blocking a managed user to view sites that do not belong to the installed whitelist.">
-        Block
-      </message>
-      <message name="IDS_ADVANCED_MANAGED_USER_LABEL" desc="A label in the Managed User Settings dialog for other managed user settings.">
-        Advanced settings
-      </message>
-       <message name="IDS_SAFE_SEARCH_ENABLED" desc="A checkbox in the Managed User Settings dialog for enabling SafeSearch.">
-        Enable Google's SafeSearch
-      </message>
-      <message name="IDS_HISTORY_DELETION_DISABLED" desc="A checkbox in the Managed User Settings dialog for tracking history of managed user.">
-        Disable incognito windows and deleting history
-      </message>
-      <message name="IDS_USE_PASSPHRASE_LABEL" desc="A checkbox in the Managed User Settings dialog to set whether to ask for a passphrase to access other profiles.">
-        Require a passphrase to modify the settings for this managed user
-      </message>
-      <message name="IDS_SET_PASSPHRASE_BUTTON" desc="A button in the Managed User Settings dialog to set the passphrase to access other profiles.">
-        Change passphrase...
-      </message>
-      <message name="IDS_SET_PASSPHRASE_TITLE" desc="A title for the Managed User Set Passphrase dialog.">
-        Set a passphrase
-      </message>
-      <message name="IDS_SET_PASSPHRASE_INSTRUCTIONS" desc="Text describing the set passphrase dialog.">
-        Enter a passphrase to change this user's settings later.
-      </message>
-      <message name="IDS_ENTER_PASSPHRASE_LABEL" desc="A label for entering a passphrase to save.">
-        Enter a passphrase:
-      </message>
-      <message name="IDS_CONFIRM_PASSPHRASE_LABEL" desc="A label for re-entering a passphrase to save.">
-        Confirm the passphrase:
-      </message>
-      <message name="IDS_PASSPHRASE_MISMATCH" desc="A warning message which is displayed when the passphrase entered as confirmation does not match the passphrase.">
-        The passphrases do not match.
-      </message>
-      <message name="IDS_SAVE_PASSPHRASE_BUTTON" desc="A button label for saving the passhrase to lock a managed mode user.">
-        Save
-      </message>
-
       <!-- Managed Mode Block Interstitial data -->
       <message name="IDS_BLOCK_INTERSTITIAL_TITLE" desc="A title for the managed mode block interstitial page.">
-        Sad Robot
+        Page blocked
       </message>
       <message name="IDS_BLOCK_INTERSTITIAL_MESSAGE" desc="A message for the user when they attempt to visit a site outside of any content pack.">
-        Sorry, you're not allowed to access the following page:
+        This page has been blocked.
       </message>
       <message name="IDS_BACK_BUTTON" desc="A button for going back to the last safe url after being blocked.">
         Go back
       </message>
-      <message name="IDS_CONTENT_PACKS_SECTION_BUTTON" desc="A button for going to the content pack starting page.">
-        Content Packs
+      <message name="IDS_BLOCK_INTERSTITIAL_REQUEST_ACCESS_BUTTON" desc="A button for requesting access to blocked sites.">
+        Request access
       </message>
-      <message name="IDS_BYPASS_BLOCK_MESSAGE" desc="A label for allowing custodians to allow a blocked site.">
-        Custodians can also allow this site.
-      </message>
-      <message name="IDS_BYPASS_BLOCK_BUTTON" desc="A button for allowing blocked site.">
-        Preview
+      <message name="IDS_BLOCK_INTERSTITIAL_REQUEST_SENT_MESSAGE" desc="The text that tells the user that a request has been sent. This is followed by the manager's name">
+        A request to access this site has been sent to <ph name="NAME">$1<ex>John Doe</ex></ph>.
       </message>
 
       <!-- Content Settings dialog data -->
@@ -8772,12 +8692,12 @@
       <message name="IDS_CLOUD_PRINT_SETUP_SHARING_EXPLAIN" desc="Explanation about printer management.">
         Share and control access to your printers with any Google account.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_CLOUD_PRINT_SETUP_DONE" desc="Mobile: Message on completed set up of cloud print.">
           <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> has registered the printers on this mobile device with &lt;b&gt;<ph name="EMAIL_ADDRESSES">$2<ex>foo@example.com</ex></ph>&lt;/b&gt;.  You can now print to your printers from any <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> enabled web or mobile app!
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_CLOUD_PRINT_SETUP_DONE" desc="Message on completed set up of cloud print.">
           <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> has registered the printers on this machine with &lt;b&gt;<ph name="EMAIL_ADDRESSES">$2<ex>foo@example.com</ex></ph>&lt;/b&gt;.  You can now print to your printers from any <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> enabled web or mobile app!
         </message>
@@ -9266,7 +9186,7 @@
       <message name="IDS_ERRORPAGES_BUTTON_RELOAD" desc="Label for the button on an error page to reload the page">
         Reload
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_ERRORPAGES_BUTTON_SETTINGS" desc="Mobile: Label for the button on an error page to launch system settings menu">
           Settings
         </message>
@@ -9304,14 +9224,14 @@
       <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_CONFIG_HEADER" desc="When a webpage fails to load, in some cases we suggest checking the proxy server configuration, or disabling the proxy server.  This is a header above some details.">
         If you use a proxy server...
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_CONFIG_BODY" desc="When a webpage fails to load, in some cases we suggest checking the proxy server configuration, or disabling the proxy server.  These are instructions below a header.">
           Check your proxy settings or contact your network administrator to
           make sure the proxy server is working.
           <ph name="PLATFORM_TEXT">$1<ex>Goto the wrench menu and choose Fix It.</ex></ph>
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_CONFIG_BODY" desc="When a webpage fails to load, in some cases we suggest checking the proxy server configuration, or disabling the proxy server.  These are instructions below a header.">
           Check your proxy settings or contact your network administrator to
           make sure the proxy server is working. If you don't believe you should
@@ -9361,12 +9281,12 @@
       <message name="IDS_ERRORPAGES_HEADING_PROXY_CONNECTION_FAILED" desc="Heading in the error page when the proxy server connection failed.">
         Unable to connect to the proxy server
       </message>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_ERRORPAGES_HEADING_INTERNET_DISCONNECTED" desc="Heading of the error page when the network connection failed.">
           Unable to connect to the Internet
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_ERRORPAGES_HEADING_INTERNET_DISCONNECTED" desc="Mobile: Heading of the error page when the network connection failed.">
           You are offline.
         </message>
@@ -9447,7 +9367,7 @@
       <message name="IDS_ERRORPAGES_SUMMARY_FILE_ACCESS_DENIED" desc="Summary in the error page when we can't open a file.">
         The file at <ph name="URL">&lt;strong jscontent="failedUrl"&gt;&lt;/strong&gt;<ex>http://www.google.com/</ex></ph> is not readable.  It may have been removed, moved, or file permissions may be preventing access.
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_NETWORK_ACCESS_DENIED" desc="Mobile: Summary in the error page when we're not being allowed to access the network.">
           <ph name="PRODUCT_NAME">&lt;span jscontent="productName"&gt;&lt;/span&gt;<ex>Google Chrome</ex></ph>
           is having trouble accessing the network.
@@ -9468,7 +9388,7 @@
           The page can be loaded once you connect to a network.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_NETWORK_ACCESS_DENIED" desc="Summary in the error page when we're not being allowed to access the network.">
           <ph name="PRODUCT_NAME">&lt;span jscontent="productName"&gt;&lt;/span&gt;<ex>Google Chrome</ex></ph>
           is having trouble accessing the network.
@@ -9557,7 +9477,7 @@
         If the problem persists, try clearing the cache.  In some cases, this
         can also be a symptom of hardware starting to fail.
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_NETWORK_IO_SUSPENDED" desc="Mobile: Summary in the error page when a page load failed due to the mobile device entering sleep/suspend mode.">
           Unable to load the webpage because your mobile device entered sleep or
           hibernate mode.  When this happens, network connections are shut
@@ -9565,7 +9485,7 @@
           resolve this.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_NETWORK_IO_SUSPENDED" desc="Summary in the error page when a page load failed due to the computer entering sleep/suspend mode.">
           Unable to load the webpage because your computer entered sleep or
           hibernate mode.  When this happens, network connections are shut
@@ -9576,7 +9496,7 @@
       <message name="IDS_ERRORPAGES_SUMMARY_NOT_FOUND" desc="Summary in the error page when the server returns a 404.">
         No webpage was found for the web address: <ph name="URL">&lt;strong jscontent="failedUrl"&gt;&lt;/strong&gt;</ph>
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_TOO_MANY_REDIRECTS" desc="Mobile: Summary in the error page when there are too many URL redirects.">
           The webpage at <ph name="URL">&lt;strong jscontent="failedUrl"&gt;&lt;/strong&gt;</ph> has resulted in
           too many redirects.  Clearing your cookies for this site or allowing third-party cookies may fix the problem.  If
@@ -9584,7 +9504,7 @@
           mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUMMARY_TOO_MANY_REDIRECTS" desc="Summary in the error page when there are too many URL redirects.">
           The webpage at <ph name="URL">&lt;strong jscontent="failedUrl"&gt;&lt;/strong&gt;</ph> has resulted in
           too many redirects.  Clearing your cookies for this site or allowing third-party cookies may fix the problem.  If
@@ -10173,7 +10093,7 @@
       </if>
 
       <!-- Android First-run messages -->
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_FIRSTRUN_TAKE_TOUR" desc="Button or link to begin a product tour of Chrome">
           Take a tour
         </message>
@@ -10464,12 +10384,12 @@
       <message name="IDS_OPTIONS_DEFAULTBROWSER_SXS" desc="The text displayed when Chrome is installed in side-by-side mode, which does not support setting as the default browser.">
         This is a secondary installation of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, and cannot be made your default browser.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_AUTOLAUNCH_TEXT" desc="Mobile: The text displayed in settings to explain whether Chrome is set to auto-launch on startup or not.">
           Launch <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> automatically when I start my mobile device
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_AUTOLAUNCH_TEXT" desc="The text displayed in settings to explain whether Chrome is set to auto-launch on startup or not.">
           Launch <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> automatically when I start my computer
         </message>
@@ -10692,6 +10612,9 @@
       <message name="IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR" desc="Text explaining there has been an Autocheckout error and the user must finish checking out themselves.">
         Oops. Auto-Checkout cannot complete this form. You'll have to the finish this transaction from here.
       </message>
+      <message name="IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_SUCCESS" desc="Text explaining Autocheckout succeeded but the user must confirm the transaction.">
+        You're almost done. After you close this window, confirm this transaction on the merchant's site and look forward to receiving your new purchase.
+      </message>
       <message name="IDS_AUTOFILL_DIALOG_VERIFY_CVV" desc="Text explaining a user must enter their CVV to continuing submitting for security purposes (while using Google Wallet).">
         For your security, please verify your card details.
       </message>
@@ -10718,6 +10641,9 @@
       <message name="IDS_AUTOFILL_DIALOG_USING_BILLING_FOR_SHIPPING" desc="Text that is shown when the billing info will also be used for shipping.">
         Same as billing
       </message>
+      <message name="IDS_AUTOFILL_DIALOG_CONTINUE_BUTTON" desc="Button text for confirmation of successful completion of an Autocheckout flow.">
+        Continue
+      </message>
       <message name="IDS_AUTOFILL_DIALOG_SUBMIT_BUTTON" desc="Button text for confirmation of user details.">
         Submit
       </message>
@@ -10777,6 +10703,10 @@
         The <ph name="LEGAL_DOC_LINK_TEXT_1">$1<ex>Google Wallet Terms Of Service</ex></ph>, <ph name="LEGAL_DOC_LINK_TEXT_2">$2<ex>Privacy Policy</ex></ph>, and <ph name="LEGAL_DOC_LINK_TEXT_3">$3<ex>Terms Of Use</ex></ph> have been updated. By clicking Submit you verify that you accept these changes.
       </message>
 
+      <!-- Autofill dialog: validation messages -->
+      <message name="IDS_AUTOFILL_DIALOG_VALIDATION_WALLET_REQUIRES_TWO_NAMES" desc="Message displayed to user when card holder name validation for Wallet fails.">
+        Google Wallet requires at least a first and last name.
+      </message>
 
       <!-- Autocheckout bubble -->
       <message name="IDS_AUTOCHECKOUT_BUBBLE_PROMPT_SIGNED_IN" desc="Text for prompting a Google user to start an Autocheckout flow.">
@@ -10816,12 +10746,12 @@
         Get themes
       </message>
 
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_OPTIONS_SYSTEM_PROXIES_LABEL" desc="Mobile: The info label for the 'Proxy settings' button when managed by the system.">
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is using your mobile device's system proxy settings to connect to the network.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_OPTIONS_SYSTEM_PROXIES_LABEL" desc="The info label for the 'Proxy settings' button when managed by the system.">
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is using your computer's system proxy settings to connect to the network.
         </message>
@@ -10836,12 +10766,12 @@
       <message name="IDS_OPTIONS_CURRENT_USER_ONLY" desc="In the multi profiles user list, the tooltip text noticing that only the current user can modify these settings.">
         You can only edit settings for the current user. Switch to this user to edit settings for it.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_LABEL" desc="Mobile: The label of the cloud print setup button when it hasn't been set up yet.">
           <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> lets you access this mobile device's printers from anywhere. Click to enable.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_LABEL" desc="The label of the cloud print setup button when it hasn't been set up yet.">
           <ph name="CLOUD_PRINT_NAME">$1<ex>Google Cloud Print</ex></ph> lets you access this computer's printers from anywhere. Click to enable.
         </message>
@@ -10915,6 +10845,14 @@
         These settings are enforced by an extension.
       </message>
 
+      <!-- Extension install location strings -->
+      <message name="IDS_OPTIONS_INSTALL_LOCATION_UNKNOWN" desc="The text explaining the the installation location is unknown.">
+        Not from Chrome Web Store.
+      </message>
+      <message name="IDS_OPTIONS_INSTALL_LOCATION_3RD_PARTY" desc="The text explaining the the installation came from a 3rd party app.">
+        Installed by a third party.
+      </message>
+
       <!-- Options search page strings. -->
       <message name="IDS_OPTIONS_SEARCH_PAGE_TITLE" desc="Title of the settings search page.">
         Search results
@@ -10933,7 +10871,7 @@
       </message>
 
       <!-- Android welcome page strings -->
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_WELCOME_PAGE_SEARCH_BUBBLE" desc="The message displayed on the search bubble on the welcome page">
           Search the web directly
         </message>
@@ -11020,12 +10958,12 @@
           Sign in
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not is_android and not pp_ifdef('ios')">
         <message name="IDS_AUTOLOGIN_INFOBAR_CANCEL_BUTTON" desc="The string used in the infobar button that the user presses to never see this infobar again.">
           Never offer to sign me in
         </message>
       </if>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_AUTOLOGIN_INFOBAR_CANCEL_BUTTON" desc="Mobile: The string used in the autologin infobar button that the user presses to close the infobar without logging in.">
           Cancel
         </message>
@@ -11245,13 +11183,13 @@
       </message>
 
       <!-- New Tab -->
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_NEW_TAB_TITLE"
             desc="Mobile: For mobile devices. Do not use title case. Title of the new tab page, this is only shown while loading, then the title comes from the page.">
           New tab
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_NEW_TAB_TITLE"
             desc="Title of the new tab page, this is only shown while loading, then the title comes from the page">
           New Tab
@@ -11324,7 +11262,7 @@
                desc="In the 'Other Sessions' menu on the New Tab Page, the label for the command to expand (uncollapse) the list of windows and tabs in a session.">
         Expand list
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_NEW_TAB_OTR_MESSAGE_MOBILE"
                  desc="Mobile: Used when a person opens an OTR tab">
           <ph name="BEGIN_BOLD">&lt;strong&gt;</ph>You've gone incognito.<ph name="END_BOLD">&lt;/strong&gt;</ph>
@@ -11350,7 +11288,7 @@
           <ph name="BEGIN_LINK">&lt;a href="$1"&gt;</ph>Learn more<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph> about incognito browsing.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_NEW_TAB_OTR_MESSAGE"
                  desc="Used when a person opens an OTR window">
           <ph name="BEGIN_BOLD">&lt;strong&gt;</ph>You've gone incognito<ph name="END_BOLD">"&lt;/strong&gt;</ph>. Pages you view in this window won't appear in your browser history or search history, and they won't leave other traces, like cookies, on your computer after you close &lt;strong&gt;all&lt;/strong&gt; open incognito windows. Any files you download or bookmarks you create will be preserved, however.
@@ -11371,7 +11309,7 @@
         Because <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> does not control how extensions handle your personal data, all extensions have been disabled for incognito windows. You can reenable them individually in the
         <ph name="BEGIN_LINK">&lt;a href="$2"&gt;</ph>extensions manager<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_NEW_TAB_GUEST_SESSION_MESSAGE"
             desc="Mobile: Used when a person enters Guest Session">
             <ph name="BEGIN_BOLD">&lt;strong&gt;</ph>You're browsing as a Guest<ph name="END_BOLD">&lt;/strong&gt;</ph>. Pages you view in this tab won't appear in the browser history or search history, and they won't leave other traces, like cookies, on the mobile device after you sign out. Files you download and bookmarks you create won't be preserved.
@@ -11379,7 +11317,7 @@
           <ph name="BEGIN_LINK">&lt;a href="$1"&gt;</ph>Learn more<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph> about Guest browsing.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_NEW_TAB_GUEST_SESSION_MESSAGE"
             desc="Used when a person enters Guest Session">
             <ph name="BEGIN_BOLD">&lt;strong&gt;</ph>You're browsing as a Guest<ph name="END_BOLD">&lt;/strong&gt;</ph>. Pages you view in this window won't appear in the browser history or search history, and they won't leave other traces, like cookies, on the computer after you sign out. Files you download and bookmarks you create won't be preserved.
@@ -11513,7 +11451,7 @@
         </message>
       </if>
 
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_EDIT_SIMPLE" desc="Generic word 'edit', as opposed to the menu items which have ampersands">
           Edit
         </message>
@@ -11734,12 +11672,12 @@
       <message name="IDS_SYNC_LOGIN_NAME_PROHIBITED" desc="The error message shown when the user tries to sign in to sync using a name that is not allowed by the admin policy">
         Signing in with this username has been disabled by your administrator.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_USER_NAME_IN_USE_ERROR" desc="Mobile: An error message shown when a user tries to sign in to sync using a user name that's already in use by another profile.">
           This account is already being used on this mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SYNC_USER_NAME_IN_USE_ERROR" desc="An error message shown when a user tries to sign in to sync using a user name that's already in use by another profile.">
           This account is already being used on this computer.
         </message>
@@ -11766,7 +11704,7 @@
       <message name="IDS_SAFE_BROWSING_MALWARE_V2_DESCRIPTION1_SUBRESOURCE" desc="SafeBrowsing Malware HTML v2 description, first line, when the malware is on a subresource of the page">
         <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> has blocked access to this page on <ph name="HOST_NAME">$2<ex>landing.com</ex></ph>.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SAFE_BROWSING_MALWARE_V2_DESCRIPTION2" desc="Mobile: SafeBrowsing Malware HTML v2 description, second line">
           Even if you have visited this website safely in the past, visiting it now is very likely to infect your mobile device with malware.
         </message>
@@ -11782,7 +11720,7 @@
           Content from <ph name="ELEMENTS_HOST_NAME">$1<ex>evil.com</ex></ph>, a known malware distributor, has been inserted into this web page. Visiting this page now is very likely to infect your Mac with malware.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not is_macosx">
+      <if expr="not is_android and not is_macosx">
         <message name="IDS_SAFE_BROWSING_MALWARE_V2_DESCRIPTION2" desc="SafeBrowsing Malware HTML v2 description, second line">
           Even if you have visited this website safely in the past, visiting it now is very likely to infect your computer with malware.
         </message>
@@ -11853,12 +11791,12 @@
       <message name="IDS_SAFE_BROWSING_MULTI_THREAT_TITLE" desc="SafeBrowsing Multi threat HTML title">
         Malware and phishing Detected!
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_THREAT_DESCRIPTION1" desc="Mobile: SafeBrowsing multiple threat HTML description, first line">
           The website at <ph name="HOST_NAME">&lt;strong&gt;$1<ex>www.malware.com</ex>&lt;/strong&gt;</ph> contains elements from sites which appear to host malware – software that can hurt your mobile device or otherwise operate without your consent.  Just visiting a site that hosts malware can infect your mobile device. The website also hosts contents from sites that have been reported as a “phishing” sites.  Phishing sites trick users into disclosing personal or financial information, often by pretending to represent trusted institutions, such as banks.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_THREAT_DESCRIPTION1" desc="SafeBrowsing multiple threat HTML description, first line">
           The website at <ph name="HOST_NAME">&lt;strong&gt;$1<ex>www.malware.com</ex>&lt;/strong&gt;</ph> contains elements from sites which appear to host malware – software that can hurt your computer or otherwise operate without your consent.  Just visiting a site that hosts malware can infect your computer. The website also hosts contents from sites that have been reported as a “phishing” sites.  Phishing sites trick users into disclosing personal or financial information, often by pretending to represent trusted institutions, such as banks.
         </message>
@@ -11866,12 +11804,12 @@
       <message name="IDS_SAFE_BROWSING_MULTI_THREAT_DESCRIPTION2" desc="SafeBrowsing multiple threat HTML description, second line">
         Below is a list of all the unsafe elements for the page. Click on the Diagnostic link for more information on the malware thread for a specific resource. If you know that a resource has been erroneously reported as phishing, click the 'Report error' link.
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_MALWARE_DESCRIPTION1" desc="Mobile: SafeBrowsing Malware HTML description, first line for case of several malicious subresource">
           The website at <ph name="HOST_NAME">&lt;strong&gt;$1<ex>www.goodsite.com</ex>&lt;/strong&gt;</ph> contains elements from sites which appear to host malware – software that can hurt your mobile device or otherwise operate without your consent.  Just visiting a site that contains malware can infect your mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_MALWARE_DESCRIPTION1" desc="SafeBrowsing Malware HTML description, first line for case of several malicious subresource">
           The website at <ph name="HOST_NAME">&lt;strong&gt;$1<ex>www.goodsite.com</ex>&lt;/strong&gt;</ph> contains elements from sites which appear to host malware – software that can hurt your computer or otherwise operate without your consent.  Just visiting a site that contains malware can infect your computer.
         </message>
@@ -11891,12 +11829,12 @@
       <message name="IDS_SAFE_BROWSING_MALWARE_LABEL" desc="SafeBrowsing multiple threats, malware label in the table showing the reported threats.">
         Malware
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_MALWARE_DESCRIPTION_AGREE" desc="Mobile: SafeBrowsing Malware, agree checkbox text">
           I understand that visiting this site may harm my mobile device.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SAFE_BROWSING_MULTI_MALWARE_DESCRIPTION_AGREE" desc="SafeBrowsing Malware, agree checkbox text">
           I understand that visiting this site may harm my computer.
         </message>
@@ -13239,12 +13177,12 @@
       <message name="IDS_SYNC_OPTIONS_GROUP_NAME" desc="The name of the sync group in the options dialog.">
         Sign in
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_OVERVIEW" desc="Mobile: The message that appears in the options dialog when sync has not been set up by the user.">
           Sign in to <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph> with your Google Account to save your personalized browser features to the web and access them from <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph> on any mobile device. You'll also be automatically signed in to your favorite Google services.
         </message>
       </if>
-      <if expr="not pp_ifdef('android') and not pp_ifdef('chromeos')">
+      <if expr="not is_android and not pp_ifdef('chromeos')">
         <message name="IDS_SYNC_OVERVIEW" desc="The message that appears in the options dialog when sync has not been set up by the user.">
           Sign in to <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph> with your Google Account to save your personalized browser features to the web and access them from <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph> on any computer. You'll also be automatically signed in to your favorite Google services.
         </message>
@@ -13252,11 +13190,9 @@
       <message name="IDS_SYNC_START_SYNC_BUTTON_LABEL" desc="The label that appears on the sync button in the options dialog when sync has not been set up by the user.">
         Sign in to <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph>
       </message>
-      <if expr="pp_ifdef('chromeos')">
-        <message name="IDS_SYNC_SETUP_BUTTON_LABEL" desc="The label that appears on the sync setup button in the options dialog when sync has been disabled by the user on Chrome OS.">
-          Set up Sync
-        </message>
-      </if>
+      <message name="IDS_SYNC_SETUP_BUTTON_LABEL" desc="The label that appears on the sync setup button in the options dialog when sync has been disabled by the user.">
+        Set up sync...
+      </message>
       <message name="IDS_SYNC_SETUP_ERROR" desc="The message displayed when an unspecified but unrecoverable error occurs during sync setup.">
         An error occurred while trying to set up sync.
       </message>
@@ -13266,8 +13202,8 @@
       <message name="IDS_SIGNED_IN_WITH_SYNC_DISABLED" desc="The message that appears in the options dialog indicating that user is signed in with the given email address, but sync is not enabled.">
         Signed in as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>. Sync is disabled by your administrator.
       </message>
-      <message name="IDS_SIGNED_IN_WITH_SYNC_SUPPRESSED" desc="The message that appears in the options dialog indicating that user is signed in with the given email address, but sync was stopped via the Google Dashboard.">
-        Signed in as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>. Sync has been stopped via the Google Dashboard.
+      <message name="IDS_SIGNED_IN_WITH_SYNC_SUPPRESSED" desc="The message that appears in the options dialog indicating that user is signed in with the given email address, but sync has been stopped.">
+        Signed in as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>. Sync has been stopped on this device.
       </message>
       <message name="IDS_SYNC_ACCOUNT_SYNCING_TO_USER" desc="The message that appears in the options dialog indicating that account is syncing to a user with the given email address.">
         Signed in as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>.
@@ -13364,12 +13300,12 @@
       <message name="IDS_SYNC_STOP_SYNCING_DIALOG_TITLE" desc="The title of the dialog that explains what 'stop syncing' means.">
         Disconnect your Google Account
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_STOP_SYNCING_EXPLANATION_LABEL" desc="Mobile: The text to display below the 'Stop syncing this account' button on the options pane, explaining what the button does.">
           By disconnecting your Google Account from <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph>, your data will remain on this mobile device but changes will no longer be synced to your Google Account. Data already stored in your Google Account will remain there until you remove it using <ph name="BEGIN_LINK">&lt;a href="$2" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$2" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SYNC_STOP_SYNCING_EXPLANATION_LABEL" desc="The text to display below the 'Stop syncing this account' button on the options pane, explaining what the button does.">
           By disconnecting your Google Account from <ph name="PRODUCT_NAME">$1<ex>Chrome</ex></ph>, your data will remain on this computer but changes will no longer be synced to your Google Account. Data already stored in your Google Account will remain there until you remove it using <ph name="BEGIN_LINK">&lt;a href="$2" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$2" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
         </message>
@@ -13404,7 +13340,7 @@
       <message name="IDS_SYNC_NTP_SYNCED_TO" desc="The message to display in the New Tab Page sync section when the user is in sync.">
         Synced as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_NTP_OPEN_TABS_LAST_SYNCED" desc="The message to display in front of the time of a last synced foreign tab">
             Last synced
         </message>
@@ -13459,12 +13395,15 @@
       <message name="IDS_SYNC_CHOOSE_DATATYPES_INSTRUCTIONS" desc="Text explaining the 'Choose Datatypes' dialog.">
         <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> securely syncs your data with your Google account. Keep everything synced or customize synced data types and encryption settings.
       </message>
-      <message name="IDS_SYNC_EVERYTHING" desc="A radio button for users who want to sync all data types.">
+      <message name="IDS_SYNC_EVERYTHING" desc="A drop-down menu item for users who want to sync all data types.">
         Sync everything
       </message>
-      <message name="IDS_SYNC_CHOOSE_DATATYPES" desc="A radio button for users who want to select some datatypes to sync">
+      <message name="IDS_SYNC_CHOOSE_DATATYPES" desc="A drop-down menu item for users who want to select some datatypes to sync.">
         Choose what to sync
       </message>
+      <message name="IDS_SYNC_NOTHING" desc="A drop-down menu item for users who want to remain signed in to Chrome, but not sync any datatypes.">
+        Sync nothing
+      </message>
       <message name="IDS_SYNC_ZERO_DATA_TYPES_ERROR" desc="Error message if you try to sync, but uncheck all the data type choices.">
         You must select at least one data type to sync.
       </message>
@@ -13589,13 +13528,13 @@
       </message>
 
       <!-- Login dialog strings -->
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_LOGIN_INTRODUCTION" desc="Mobile: The message to display at the top of the login dialog">
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> sync makes it easy to share your data (such as bookmarks and settings) between your computers and mobile devices.
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> synchronizes your data by storing it online with Google when you sign in with your Google Account.
         </message>
       </if>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_SYNC_LOGIN_INTRODUCTION" desc="The message to display at the top of the login dialog">
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> sync makes it easy to share your data (such as bookmarks and settings) between your computers.
           <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> synchronizes your data by storing it online with Google when you sign in with your Google Account.
@@ -13816,7 +13755,7 @@
       <message name="IDS_SYNC_PROMO_NOT_SIGNED_IN_STATUS_LINK" desc="The linkified portion of the sync sign in promo on the NTP. Clicking this text allows the user to sign in to sync.">
         sign in
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_SYNC_PROMO_V_BACKUP_BODY" desc="Mobile: Verbose sync promo. Body of the backup message.">
           All your <ph name="SHORT_PRODUCT_NAME">$1<ex>Chrome</ex></ph> settings are safe in case anything happens to your mobile device.
         </message>
@@ -13844,7 +13783,7 @@
       <message name="IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE" desc="Message that page is in specified language and ask if should translate">
         This page is in<ph name="original_language">$1<ex>French</ex></ph>Would you like to translate it?
       </message>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_MOBILE" desc="Mobile: Message that page is in specified language and ask if should translate.">
           Translate from <ph name="original_language">$1<ex>French</ex></ph> to <ph name="target_language">$2<ex>English</ex></ph>?
         </message>
@@ -13867,7 +13806,10 @@
       <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE" desc="Message that page has been translated from one language to another">
         This page has been translated from<ph name="original_language">$1<ex>French</ex></ph>to<ph name="language_language">$2<ex>German</ex></ph>
       </message>
-      <if expr="pp_ifdef('android')">
+      <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE_AUTODETERMINED_SOURCE_LANGUAGE" desc="Message that page has been translated to another with server side auto language detection">
+        This page has been translated to <ph name="target_language">$1<ex>German</ex></ph>
+      </message>
+      <if expr="is_android">
       <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE_MOBILE" desc="Mobile: Message that page has been translated from one language to another">
         This page has been translated to <ph name="target_language">$1<ex>German</ex></ph>
       </message>
@@ -13893,7 +13835,7 @@
       <message name="IDS_TRANSLATE_INFOBAR_UNSUPPORTED_PAGE_LANGUAGE" desc="Error message shown when the translate server translated the page and returned the page was in a language the browser does not know.">
         This page has been translated from an unknown language to <ph name="language_language">$1<ex>English</ex></ph>
       </message>
-       <if expr="pp_ifdef('android')">
+      <if expr="is_android">
       <message name="IDS_TRANSLATE_INFOBAR_ERROR_MOBILE" desc="Mobile: Translate Error message">
         The translation to <ph name="target_language">$1<ex>German</ex></ph> failed.
       </message>
@@ -14339,14 +14281,14 @@
     </message>
 
     <!-- Geolocation messages -->
-    <if expr="not pp_ifdef('android')">
+    <if expr="not is_android">
       <message name="IDS_GEOLOCATION_INFOBAR_QUESTION" desc="Question asked on the info bar whenever URL wants to access the user's physical location">
         <ph name="URL">
           $1<ex>maps.google.com</ex>
         </ph> wants to use your computer's location.
       </message>
     </if>
-    <if expr="pp_ifdef('android')">
+    <if expr="is_android">
       <message name="IDS_GEOLOCATION_INFOBAR_QUESTION" desc="Mobile: Question asked on the info bar whenever URL wants to access the user's physical location">
         <ph name="URL">
           $1<ex>maps.google.com</ex>
@@ -14472,12 +14414,12 @@
     </if>
 
     <!-- File Selection Dialog Policy - Infobar -->
-    <if expr="pp_ifdef('android')">
+    <if expr="is_android">
       <message name="IDS_FILE_SELECTION_DIALOG_INFOBAR" desc="Mobile: Infobar message on disallowed file selection dialog.">
         Access to local files on your mobile device is disabled by your administrator.
       </message>
     </if>
-    <if expr="not pp_ifdef('android')">
+    <if expr="not is_android">
       <message name="IDS_FILE_SELECTION_DIALOG_INFOBAR" desc="Infobar message on disallowed file selection dialog.">
         Access to local files on your machine is disabled by your administrator.
       </message>
@@ -14801,9 +14743,6 @@
     <message name="IDS_READER_OUT_OF_DATE_BLOCKING_PAGE_CANCEL" desc="Cancel button text of the Adobe Reader out of date blocking page.">
       Cancel
     </message>
-    <message name="IDS_EXPORT_BOOKMARKS_DEFAULT_FILENAME" desc="Filename that pre-populates the filename field when user clicks attempts to export his bookmarks.">
-      bookmarks_<ph name="DATESTAMP">$1<ex>02_11_11</ex></ph>.html
-    </message>
 
     <!-- Media Capture messages -->
     <message name="IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO" desc="Question asked on the info bar whenever a web page requests access to the computer's microphone and camera.">
@@ -14843,7 +14782,7 @@
     </message>
 
     <!-- Quota messages -->
-    <if expr="pp_ifdef('android')">
+    <if expr="is_android">
       <message name="IDS_REQUEST_QUOTA_INFOBAR_QUESTION" desc="Mobile: For mobile device. Question asked on the info bar whenever webapp requests new (larger) quota to persistently store data on the mobile device (e.g. for persistent-type filesystem).">
         <ph name="URL">
           $1<ex>html5rocks.com</ex>
@@ -14855,7 +14794,7 @@
         </ph> wants to permanently store large data on your mobile device.
       </message>
     </if>
-    <if expr="not pp_ifdef('android')">
+    <if expr="not is_android">
       <message name="IDS_REQUEST_QUOTA_INFOBAR_QUESTION" desc="Question asked on the info bar whenever webapp requests new (larger) quota to persistently store data on the user's local computer (e.g. for persistent-type filesystem).">
         <ph name="URL">
           $1<ex>html5rocks.com</ex>
@@ -14881,9 +14820,6 @@
     <message name="IDS_PROFILES_MANAGE_DUPLICATE_NAME_ERROR" desc="error bubble displayed when the user is attempting to rename a profile to a name that is used.">
       Whoops, this name is already in use!
     </message>
-    <message name="IDS_PROFILES_MANAGE_MANAGED_USER_SETTINGS_BUTTON" desc="Label for button to open managed user settings in the manage profile dialog.">
-      Managed user settings...
-    </message>
 
     <!-- Delete Profile Dialog -->
     <message name="IDS_PROFILES_DELETE_TITLE" desc="Title of the delete profile dialog">
@@ -14892,12 +14828,12 @@
     <message name="IDS_PROFILES_DELETE_OK_BUTTON_LABEL" desc="The text to display on the button to confirm deleting the profile.">
       Delete
     </message>
-    <if expr="pp_ifdef('android')">
+    <if expr="is_android">
       <message name="IDS_PROFILES_DELETE_MESSAGE" desc="Mobile: Message explaining to the user what will happen if they delete this profile">
         Are you sure you want to delete "<ph name="PROFILE_NAME">$1<ex>New User</ex></ph>" and all the data associated with it from this mobile device? This cannot be undone!
       </message>
     </if>
-    <if expr="not pp_ifdef('android')">
+    <if expr="not is_android">
       <message name="IDS_PROFILES_DELETE_MESSAGE" desc="Message explaining to the user what will happen if they delete this profile">
         Are you sure you want to delete "<ph name="PROFILE_NAME">$1<ex>New User</ex></ph>" and all the data associated with it from this computer? This cannot be undone!
       </message>
@@ -14919,14 +14855,36 @@
     <message name="IDS_PROFILES_CREATE_CONFIRM" desc="Create button confirmation">
       Create
     </message>
-    <message name="IDS_PROFILES_CREATE_MANAGED_CHECKBOX" desc="Label for the 'Managed user' checkbox in the create profile dialog">
-      Managed user
+    <message name="IDS_PROFILES_CREATE_LIMITED_SIGNED_IN_LABEL" desc="Label for the 'Limited user' checkbox in the create-profile dialog when the current user is signed in. This will be followed by a 'Learn more' link.">
+      This is a limited user managed by <ph name="CUSTODIAN_EMAIL">$1<ex>user@gmail.com</ex>.</ph>
+    </message>
+    <message name="IDS_PROFILES_CREATE_LIMITED_NOT_SIGNED_IN_LABEL" desc="Label for the (disabled) 'Limited user' checkbox in the create-profile dialog when the current user is not signed in. This will be followed by a 'Sign in now' link.">
+      This is a limited user who will be managed by another user.
+You need to be signed in to use this feature.
+    </message>
+    <message name="IDS_PROFILES_CREATE_LIMITED_NOT_SIGNED_IN_LINK" desc="Text for the sign-in promo link, shown after the (disabled) 'Limited user' checkbox in the create-profile dialog when the current user is not signed in.">
+      Sign in now
     </message>
     <message name="IDS_PROFILES_CREATE_SHORTCUT" desc="Create Shortcut checkbox/button">
-      Add desktop shortcut
+      Create a desktop shortcut for this user
     </message>
     <message name="IDS_PROFILES_REMOVE_SHORTCUT" desc="Remove Shortcut button">
-      Remove desktop shortcut
+      Remove the desktop shortcut for this user
+    </message>
+
+    <!-- Limited-user creation wizard dialogs -->
+    <message name="IDS_NEW_LIMITED_USER_LEARN_MORE_TITLE" desc="Title for the 'Learn more' dialog for the limited user feature.">
+      What is a limited user?
+    </message>
+    <message name="IDS_NEW_LIMITED_USER_LEARN_MORE_TEXT" desc="Informative text describing the 'limited user' feature in detail, shown when the 'Learn more' link is clicked in the 'Create User' dialog.">
+      By creating a limited user, you can provide a managed environment for another user to explore the web.
+
+As the manager of a limited user in Chrome on this device, you can determine the sites you wish to allow or restrict, review past visits, and manage other settings. A limited user is not a Google account &#8212; it applies only to this device.
+
+First, create a limited user in Chrome on this device. You can then configure the limited user's settings online anytime, from any device.
+    </message>
+    <message name="IDS_NEW_LIMITED_USER_LEARN_MORE_DONE_BUTTON" desc="The text of the 'OK' button on the 'Learn more' dialog for the limited user feature.">
+      OK, got it!
     </message>
 
     <!-- Aura strings -->
@@ -15318,15 +15276,6 @@
     <message name="IDS_MANAGED_MODE_GO_BACK_ACTION" desc="Label for the button that goes back to a 'safe' page.">
       Take me back!
     </message>
-    <message name="IDS_MANAGED_MODE_PREVIEW_MESSAGE" desc="Text of the infobar shown while a website is previewed.">
-      Do you want to add this website to the whitelist?
-    </message>
-    <message name="IDS_MANAGED_MODE_PREVIEW_ACCEPT" desc="Label for the button that adds the website to the manual whitelist.">
-      Add to whitelist
-    </message>
-    <message name="IDS_MANAGED_MODE_ALREADY_ADDED_MESSAGE" desc="Text of the message that indicates that the website was already on one of the whitelists.">
-      This website was already on the whitelist so it was not added again.
-    </message>
 
     <!-- Password generation strings -->
     <message name="IDS_PASSWORD_GENERATION_BUBBLE_TITLE" desc="The title of the bubble asking users if they would like Chrome to generate a password for them on an account creation page.">
@@ -15336,6 +15285,47 @@
       Try it
     </message>
 
+    <!-- Reset Profile Settings strings -->
+    <message name="IDS_RESET_PROFILE_SETTINGS_SECTION_TITLE" desc="The title of the section in chrome://settings that allows resetting some settings in a profile">
+      Reset
+    </message>
+    <message name="IDS_RESET_PROFILE_SETTINGS_DESCRIPTION" desc="A label describing the purpose of the 'reset profile settings' feature">
+      Things got out of control? Revert your Chrome profile to a clean, post install state.
+    </message>
+    <message name="IDS_RESET_PROFILE_SETTINGS_BUTTON" desc="The text on the button in chrome://settings that allows resetting some settings in a profile">
+      Reset profile settings...
+    </message>
+    <message name="IDS_RESET_PROFILE_SETTINGS_TITLE" desc="Dialog title">
+      Reset profile settings
+    </message>
+    <message name="IDS_RESET_PROFILE_SETTINGS_LABEL" desc="Label at the top of the client area of the dialog">
+      What would you like to reset?
+    </message>
+    <message name="IDS_RESET_PROFILE_DEFAULT_SEARCH_ENGINE_CHECKBOX" desc="Checkbox of the Reset Profile Settings dialog">
+      Default Search Engine
+    </message>
+    <message name="IDS_RESET_PROFILE_HOMEPAGE_CHECKBOX" desc="Checkbox of the Reset Profile Settings dialog">
+      Homepage
+    </message>
+    <message name="IDS_RESET_PROFILE_CONTENT_SETTINGS_CHECKBOX" desc="Checkbox of the Reset Profile Settings dialog">
+      Content settings
+    </message>
+    <message name="IDS_RESET_PROFILE_COOKIES_CHECKBOX" desc="Checkbox of the Reset Profile Settings dialog">
+      Cookies and site data
+    </message>
+    <message name="IDS_RESET_PROFILE_EXTENSIONS_CHECKBOX" desc="Checkbox of the Reset Profile Settings dialog">
+      Extensions, new tab page and themes
+    </message>
+    <message name="IDS_RESET_PROFILE_EXTENSIONS_DISABLE" desc="Listbox item of the Reset Profile Settings dialog, indicating how to handle extensions">
+      Disable
+    </message>
+    <message name="IDS_RESET_PROFILE_EXTENSIONS_UNINSTALL" desc="Listbox item of the Reset Profile Settings dialog, indicating how to handle extensions">
+      Uninstall
+    </message>
+    <message name="IDS_RESET_PROFILE_SETTINGS_COMMIT_BUTTON" desc="Checkbox of the Reset Profile Settings dialog">
+      Reset
+    </message>
+
     </messages>
 
     <structures fallback_to_english="true">
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd
index 0ecf074..3142ad5 100644
--- a/chrome/app/google_chrome_strings.grd
+++ b/chrome/app/google_chrome_strings.grd
@@ -194,12 +194,6 @@
         <message name="IDS_SHORTCUT_NEW_WINDOW" desc="The text label of the New window shortcut context menu entry as of Windows 8">
           New window
         </message>
-        <message name="IDS_MISSING_WINDOWS_SYSTEM_FILES_TITLE" desc="Title string on an error dialog to notify that the system is missing some Windows system files">
-          Windows error detected
-        </message>
-        <message name="IDS_MISSING_WINDOWS_SYSTEM_FILES_MESSAGE" desc="Warning message on an error dialog to notify that the system is missing some Windows system files">
-          Your computer is missing some important Windows system files, so Chrome will be unable to function correctly.
-        </message>
       </if>
       <message name="IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2" desc="2nd paragraph of extra information for an unsafe common name in an X509 certificate">
         In this case, the address listed in the certificate does not match the address of the website your browser tried to go to. One possible reason for this is that your communications are being intercepted by an attacker who is presenting a certificate for a different website, which would cause a mismatch. Another possible reason is that the server is set up to return the same certificate for multiple websites, including the one you are attempting to visit, even though that certificate is not valid for all of those websites. Google Chrome can say for sure that you reached &lt;strong&gt;<ph name="DOMAIN2">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but cannot verify that that is the same site as &lt;strong&gt;<ph name="DOMAIN">$2<ex>www.paypal.com</ex></ph>&lt;/strong&gt; which you intended to reach. If you proceed, Chrome will not check for any further name mismatches.
@@ -401,12 +395,12 @@
       <message name="IDS_CRASH_RECOVERY_CONTENT" desc="Text content telling the user the browser has crashed.">
         Whoa! Google Chrome has crashed. Relaunch now?
       </message>
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Info bar message to save a password">
           Do you want Google Chrome to save your password?
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Mobile: Info bar message to save a password">
           Do you want Google Chrome to save your password for this site?
         </message>
@@ -593,11 +587,6 @@
         Google Chrome is configured to automatically launch when you start your computer.
       </message>
 
-      <!-- Managed user settings page -->
-      <message name="IDS_SIGNIN_SYNC_ALLOWED" desc="A checkbox in the Managed User Settings dialog for enabling sign in and sync.">
-        Allow signing into Chrome.
-      </message>
-
       <!-- about:flags -->
       <if expr="not pp_ifdef('chromeos')">
         <message name="IDS_FLAGS_RELAUNCH_NOTICE" desc="Notifies the user that he needs to relaunch Chrome. Shown next to a button that says 'Relaunch Now'.">
@@ -614,19 +603,24 @@
       </if>
 
       <!-- Obsolete System info bar -->
-      <message name="IDS_SYSTEM_OBSOLETE_MESSAGE" desc="Message shown when your OS is no longer supported. This messages is followed by a 'Learn more' link.">
+      <message name="IDS_SYSTEM_OBSOLETE_MESSAGE" desc="Message shown when your OS is no longer supported. This message is followed by a 'Learn more' link.">
          Google Chrome has stopped updating and no longer supports this version of your operating system.
       </message>
 
+      <!-- Google API keys info bar -->
+      <message name="IDS_MISSING_GOOGLE_API_KEYS" desc="Message shown when Google API keys are missing. This message is followed by a 'Learn more' link.">
+        Google API keys are missing. Some functionality of Google Chrome will be disabled.
+      </message>
+
       <!-- about:memory -->
-      <if expr="not pp_ifdef('android')">
+      <if expr="not is_android">
         <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Google Chrome and any other active browsers." translateable="false">
 Summary of memory used by currently active browsers. For browsers which use multiple processes, memory reflects aggregate memory used across all browser processes.
 
 For Google Chrome, processes used to display diagnostics information (such as this "about:memory") are excluded.
         </message>
       </if>
-      <if expr="pp_ifdef('android')">
+      <if expr="is_android">
         <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Google Chrome." translateable="false">
 Summary of memory used by Google Chrome. Since Google Chrome uses multiple processes, memory reflects aggregate memory used across all browser processes.
 
@@ -827,11 +821,11 @@
           and deselect any proxies that have been selected.
         </message>
       </if>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Instructions for disabling use of a proxy server (leave empty for Android and iOS).">
         </message>
       </if>
-      <if expr="not pp_ifdef('chromeos') and is_posix and not is_macosx and not pp_ifdef('android') and not pp_ifdef('ios')">
+      <if expr="not pp_ifdef('chromeos') and is_posix and not is_macosx and not is_android and not pp_ifdef('ios')">
         <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Linux instructions for disabling use of a proxy server.">
           Go to
           the Chrome menu &gt;
diff --git a/chrome/app/nibs/OneClickSigninBubble.xib b/chrome/app/nibs/OneClickSigninBubble.xib
index 8f5e193..2571828 100644
--- a/chrome/app/nibs/OneClickSigninBubble.xib
+++ b/chrome/app/nibs/OneClickSigninBubble.xib
@@ -46,7 +46,7 @@
 					<object class="NSTextField" id="183093009">
 						<reference key="NSNextResponder" ref="1005"/>
 						<int key="NSvFlags">264</int>
-						<string key="NSFrame">{{5, 36}, {377, 20}}</string>
+						<string key="NSFrame">{{5, 36}, {148, 20}}</string>
 						<reference key="NSSuperview" ref="1005"/>
 						<reference key="NSWindow"/>
 						<reference key="NSNextKeyView" ref="622132191"/>
diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_templates.json
index 09faee6..e03c30a 100644
--- a/chrome/app/policy/policy_templates.json
+++ b/chrome/app/policy/policy_templates.json
@@ -112,7 +112,7 @@
 #   persistent IDs for all fields (but not for groups!) are needed. These are
 #   specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
 #   because doing so would break the deployed wire format!
-#   For your editing convenience: highest ID currently used: 207
+#   For your editing convenience: highest ID currently used: 209
 #
 # Placeholders:
 #   The following placeholder strings are automatically substituted:
@@ -661,7 +661,7 @@
 
       If you disable this setting, Safe Browsing is never active.
 
-      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.
+      If you enable or disable this setting, users cannot change or override the "Enable phishing and malware protection" setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.
 
       If this policy is left not set, this will be enabled but the user will be able to change it.''',
     },
@@ -873,7 +873,7 @@
       'name': 'SigninAllowed',
       'type': 'main',
       'schema': { 'type': 'boolean' },
-      'supported_on': ['chrome.*:26-'],
+      'supported_on': ['chrome.*:27-'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -995,7 +995,7 @@
       'name': 'ClearSiteDataOnExit',
       'type': 'main',
       'schema': { 'type': 'boolean' },
-      'supported_on': ['chrome.*:11-', 'chrome_os:0.11-'],
+      'supported_on': ['chrome.*:11-29', 'chrome_os:0.11-0.29'],
       'features': {
         'can_be_recommended': True,
         'dynamic_refresh': True,
@@ -1005,13 +1005,7 @@
       'example_value': True,
       'id': 65,
       'caption': '''Clear site data on browser shutdown (deprecated)''',
-      'desc': '''This policy is an override for the "Clear cookies and other site data when I close my browser" content settings option that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> supported prior to version 21.
-
-      This policy exists only for backward-compatibility and will go away in the future. The recommended way to clear site data on exit on version 21 and later is to configure the DefaultCookiesSetting policy to session-only.
-
-      If this policy is enabled it will be translated to the appropriate policy setting for the DefaultCookiesSetting policy, setting it to session-only if the DefaultCookiesSetting policy is not configured or set to Allow.
-
-      If this policy is disabled or left unconfigured the policy for storing site data is determined by the DefaultCookiesSetting policy.''',
+      'desc': '''This policy has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29.''',
       'label': '''Clear site data on browser shutdown (deprecated)''',
     },
     {
@@ -3011,7 +3005,7 @@
       'name': 'EnterpriseWebStoreURL',
       'type': 'string',
       'schema': { 'type': 'string' },
-      'supported_on': ['chrome.*:17-', 'chrome_os:0.17-'],
+      'supported_on': ['chrome.*:17-29', 'chrome_os:0.17-0.29'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -3019,18 +3013,14 @@
       'deprecated': True,
       'example_value': 'http://company-intranet/chromeapps',
       'id': 112,
-      'caption': '''Enterprise web store URL''',
-      'desc': '''Specifies the URL for the enterprise web store. When this setting is enabled, an app will appear on the new tab page which, when clicked, will take the user to the specified URL. To actually allow extension installation from the configured website, the ExtensionInstallSources policy must be configured to allow installation from the appropriate extension download URLs. If this policy is set, the EnterpriseWebStoreName setting should also be set.
-
-      If this setting is disabled, no enterprise web store app will appear on the new tab page.
-
-      This setting is deprecated as of version 27 and will be removed for future versions. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
+      'caption': '''Enterprise web store URL (deprecated)''',
+      'desc': '''This setting has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
     },
     {
       'name': 'EnterpriseWebStoreName',
       'type': 'string',
       'schema': { 'type': 'string' },
-      'supported_on': ['chrome.*:17-', 'chrome_os:0.17-'],
+      'supported_on': ['chrome.*:17-29', 'chrome_os:0.17-0.29'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -3038,12 +3028,8 @@
       'deprecated': True,
       'example_value': 'WidgCo Chrome Apps',
       'id': 113,
-      'caption': '''Enterprise web store name''',
-      'desc': '''The name of the enterprise web store, which will appear underneath the app icon on the new tab page. This setting has no effect if EnterpriseWebStoreURL is not set.
-
-      If this setting is disabled, the enterprise web store app (if it exists) will be labeled with its URL.
-
-      This setting is deprecated as of version 27 and will be removed for future versions. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
+      'caption': '''Enterprise web store name (deprecated)''',
+      'desc': '''This setting has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
     },
     {
       'name': 'EnableOriginBoundCerts',
@@ -3793,38 +3779,88 @@
       'supported_on': ['chrome.*:25-', 'chrome_os:0.23-'],
       'features': {
         'dynamic_refresh': True,
-        'per_profile': False,
+        'per_profile': True,
       },
       'example_value': False,
       'id': 160,
       'caption': '''Allow or deny audio capture''',
       'desc': '''Allow or deny audio capture.
 
-      When this policy is disabled, audio capture will not be available.  If enabled, audio capture will always be allowed.
-      If the policy is not configured (default), the user will be prompted for audio capture device access.
+      If enabled or not configured (default), the user will be prompted for
+      audio capture access except for URLs configured in the
+      AudioCaptureAllowedUrls list which will be granted access without prompting.
+
+      When this policy is disabled, the user will never be prompted and audio
+      capture only be available to URLs configured in AudioCaptureAllowedUrls.
 
       This policy affects all types of audio inputs and not only the built-in microphone.''',
     },
     {
+      'name': 'AudioCaptureAllowedUrls',
+      'type': 'list',
+      'schema': {
+        'type': 'array',
+        'items': { 'type': 'string' },
+      },
+      'supported_on': ['chrome.*:29-', 'chrome_os:0.29-'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True,
+      },
+      'example_value': ['http://www.example.com/', 'http://[*.]example.edu/'],
+      'id': 208,
+      'caption': '''URLs that will be granted access to audio capture devices without prompt.''',
+      'desc': '''Patterns in this list will be matched against the security
+      origin of the requesting URL.  If a match is found, access to audio
+      capture devices will be granted without prompt.
+
+      NOTE: This policy is currently only supported when running in Kiosk mode.''',
+    },
+    {
       'name': 'VideoCaptureAllowed',
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome.*:25-', 'chrome_os:0.25-'],
       'features': {
         'dynamic_refresh': True,
-        'per_profile': False,
+        'per_profile': True,
       },
       'example_value': False,
       'id': 167,
       'caption': '''Allow or deny video capture''',
       'desc': '''Allow or deny video capture.
 
-      When this policy is disabled, video capture devices will not be available.  If enabled, video capture will always be allowed.
-      If the policy is not configured (default), the user will be prompted for video device access.
+      If enabled or not configured (default), the user will be prompted for
+      video capture access except for URLs configured in the
+      VideoCaptureAllowedUrls list which will be granted access without prompting.
+
+      When this policy is disabled, the user will never be prompted and video
+      capture only be available to URLs configured in VideoCaptureAllowedUrls.
 
       This policy affects all types of video inputs and not only the built-in camera.''',
     },
     {
+      'name': 'VideoCaptureAllowedUrls',
+      'type': 'list',
+      'schema': {
+        'type': 'array',
+        'items': { 'type': 'string' },
+      },
+      'supported_on': ['chrome.*:29-', 'chrome_os:0.29-'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True,
+      },
+      'example_value': ['http://www.example.com/', 'http://[*.]example.edu/'],
+      'id': 209,
+      'caption': '''URLs that will be granted access to video capture devices without prompt.''',
+      'desc': '''Patterns in this list will be matched against the security
+      origin of the requesting URL.  If a match is found, access to audio
+      capture devices will be granted without prompt.
+
+      NOTE: This policy is currently only supported when running in Kiosk mode.''',
+    },
+    {
       'name': 'DisableScreenshots',
       'type': 'main',
       'schema': { 'type': 'boolean' },
diff --git a/chrome/app/resources/locale_settings.grd b/chrome/app/resources/locale_settings.grd
index 41cfe4e..e58c636 100644
--- a/chrome/app/resources/locale_settings.grd
+++ b/chrome/app/resources/locale_settings.grd
@@ -340,11 +340,6 @@
         https://chrome.google.com/webstore?hl=[GRITLANGCODE]&amp;category=theme
       </message>
 
-      <!-- The URL for the content packs gallery. -->
-      <message name="IDS_GET_CONTENT_PACKS_URL" translateable="false">
-        https://chrome.google.com/webstore?hl=[GRITLANGCODE]
-      </message>
-
       <!-- The URL for the webstore. -->
       <message name="IDS_WEBSTORE_URL" translateable="false">
         https://chrome.google.com/webstore?hl=[GRITLANGCODE]
@@ -355,7 +350,7 @@
       <message name="IDS_CHROME_WELCOME_URL" translateable="false">
         http://www.google.com/chrome/intl/[GRITLANGCODE]/welcome.html
       </message>
-      <if expr="pp_ifdef('android') or pp_ifdef('ios')">
+      <if expr="is_android or pp_ifdef('ios')">
         <message name="IDS_MOBILE_WELCOME_URL" translateable="false">
           chrome://welcome
         </message>
diff --git a/chrome/app/theme/chrome_unscaled_resources.grd b/chrome/app/theme/chrome_unscaled_resources.grd
index bb7f999..affd632 100644
--- a/chrome/app/theme/chrome_unscaled_resources.grd
+++ b/chrome/app/theme/chrome_unscaled_resources.grd
@@ -79,6 +79,13 @@
         <include name="IDR_PROFILE_AVATAR_2X_24" file="default_200_percent/profile_avatar_note.png" type="BINDATA" />
         <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/profile_avatar_sun_cloud.png" type="BINDATA" />
       </if>
+      <if expr="is_macosx and pp_ifdef('enable_app_list')">
+        <!-- App Launcher icons for .app shim, dock icon. Unscaled, and chromium
+             only, until the resource loader is updated to support multiple icon
+             scales, and shortcut creation properly handles smaller icon sizes.
+             See http://crbug.com/167408 and http://crbug.com/241304 -->
+         <include name="IDR_APP_LIST_128" file="chromium/app_list_128.png" type="BINDATA" />
+      </if>
     </includes>
   </release>
 </grit>
diff --git a/chrome/app/theme/chromium/app_list_128.png b/chrome/app/theme/chromium/app_list_128.png
new file mode 100644
index 0000000..eb418f1
--- /dev/null
+++ b/chrome/app/theme/chromium/app_list_128.png
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/error_managed_mode_blocked_page.png b/chrome/app/theme/default_100_percent/common/error_managed_mode_blocked_page.png
similarity index 100%
rename from chrome/app/theme/default_100_percent/error_managed_mode_blocked_page.png
rename to chrome/app/theme/default_100_percent/common/error_managed_mode_blocked_page.png
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/keyword_hint_tab.png b/chrome/app/theme/default_100_percent/common/omnibox_keyword_hint_tab.png
similarity index 100%
rename from chrome/app/theme/default_100_percent/common/keyword_hint_tab.png
rename to chrome/app/theme/default_100_percent/common/omnibox_keyword_hint_tab.png
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/web-intents_center.png b/chrome/app/theme/default_100_percent/common/web-intents_center.png
deleted file mode 100644
index 2fccece..0000000
--- a/chrome/app/theme/default_100_percent/common/web-intents_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/web-intents_left.png b/chrome/app/theme/default_100_percent/common/web-intents_left.png
deleted file mode 100644
index 3664f2f..0000000
--- a/chrome/app/theme/default_100_percent/common/web-intents_left.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/web-intents_right.png b/chrome/app/theme/default_100_percent/common/web-intents_right.png
deleted file mode 100644
index be470e3..0000000
--- a/chrome/app/theme/default_100_percent/common/web-intents_right.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_100_percent/mac/keyword_hint_tab.png b/chrome/app/theme/default_100_percent/mac/omnibox_keyword_hint_tab.png
similarity index 100%
rename from chrome/app/theme/default_100_percent/mac/keyword_hint_tab.png
rename to chrome/app/theme/default_100_percent/mac/omnibox_keyword_hint_tab.png
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/error_managed_mode_blocked_page.png b/chrome/app/theme/default_200_percent/common/error_managed_mode_blocked_page.png
similarity index 100%
rename from chrome/app/theme/default_200_percent/error_managed_mode_blocked_page.png
rename to chrome/app/theme/default_200_percent/common/error_managed_mode_blocked_page.png
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/keyword_hint_tab.png b/chrome/app/theme/default_200_percent/common/omnibox_keyword_hint_tab.png
similarity index 100%
rename from chrome/app/theme/default_200_percent/common/keyword_hint_tab.png
rename to chrome/app/theme/default_200_percent/common/omnibox_keyword_hint_tab.png
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/web-intents_center.png b/chrome/app/theme/default_200_percent/common/web-intents_center.png
deleted file mode 100644
index e0273be..0000000
--- a/chrome/app/theme/default_200_percent/common/web-intents_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/web-intents_left.png b/chrome/app/theme/default_200_percent/common/web-intents_left.png
deleted file mode 100644
index 277a863..0000000
--- a/chrome/app/theme/default_200_percent/common/web-intents_left.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/web-intents_right.png b/chrome/app/theme/default_200_percent/common/web-intents_right.png
deleted file mode 100644
index 96e7c72..0000000
--- a/chrome/app/theme/default_200_percent/common/web-intents_right.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/mac/keyword_hint_tab.png b/chrome/app/theme/default_200_percent/mac/omnibox_keyword_hint_tab.png
similarity index 100%
rename from chrome/app/theme/default_200_percent/mac/keyword_hint_tab.png
rename to chrome/app/theme/default_200_percent/mac/omnibox_keyword_hint_tab.png
Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
index 55d242f..f8bc298 100644
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -425,12 +425,6 @@
         <structure type="chrome_scaled_image" name="IDR_LOCATIONBG_R" file="common/browser_omnibox_right.png" />
         <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_BORDER" file="common/browser_omnibox_border.png" />
       </if>
-      <if expr="is_macosx">
-        <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_KEYWORD_HINT_TAB" file="mac/keyword_hint_tab.png" />
-      </if>
-      <if expr="not is_macosx">
-        <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_KEYWORD_HINT_TAB" file="common/keyword_hint_tab.png" />
-      </if>
       <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_SELECTED_KEYWORD_BACKGROUND_C" file="common/keyword_search_bubble_center.png" />
       <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_SELECTED_KEYWORD_BACKGROUND_L" file="common/keyword_search_bubble_left.png" />
       <structure type="chrome_scaled_image" name="IDR_LOCATION_BAR_SELECTED_KEYWORD_BACKGROUND_R" file="common/keyword_search_bubble_right.png" />
@@ -522,9 +516,6 @@
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EV_BUBBLE_BACKGROUND_C" file="common/ev_bubble_center.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EV_BUBBLE_BACKGROUND_L" file="common/ev_bubble_left.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EV_BUBBLE_BACKGROUND_R" file="common/ev_bubble_right.png" />
-      <structure type="chrome_scaled_image" name="IDR_OMNIBOX_WI_BUBBLE_BACKGROUND_C" file="common/web-intents_center.png" />
-      <structure type="chrome_scaled_image" name="IDR_OMNIBOX_WI_BUBBLE_BACKGROUND_L" file="common/web-intents_left.png" />
-      <structure type="chrome_scaled_image" name="IDR_OMNIBOX_WI_BUBBLE_BACKGROUND_R" file="common/web-intents_right.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EXTENSION_APP" file="common/omnibox_extension_app.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EXTENSION_APP_DARK" file="common/omnibox_extension_app_dark.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_EXTENSION_APP_SELECTED" file="common/omnibox_extension_app_selected.png" />
@@ -535,6 +526,12 @@
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_HTTPS_WARNING" file="common/omnibox_https_warning.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_HTTP_DARK" file="common/omnibox_http_dark.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_HTTP_SELECTED" file="common/omnibox_http_selected.png" />
+      <if expr="is_macosx">
+        <structure type="chrome_scaled_image" name="IDR_OMNIBOX_KEYWORD_HINT_TAB" file="mac/omnibox_keyword_hint_tab.png" />
+      </if>
+      <if expr="not is_macosx">
+        <structure type="chrome_scaled_image" name="IDR_OMNIBOX_KEYWORD_HINT_TAB" file="common/omnibox_keyword_hint_tab.png" />
+      </if>
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_PDF_ICON" file="pdf.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_SEARCH" file="common/omnibox_search.png" />
       <structure type="chrome_scaled_image" name="IDR_OMNIBOX_SEARCH_DARK" file="common/omnibox_search_dark.png" />
diff --git a/chrome/app/theme/touch_100_percent/common/web-intents_center.png b/chrome/app/theme/touch_100_percent/common/web-intents_center.png
deleted file mode 100644
index 64e0311..0000000
--- a/chrome/app/theme/touch_100_percent/common/web-intents_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_100_percent/common/web-intents_left.png b/chrome/app/theme/touch_100_percent/common/web-intents_left.png
deleted file mode 100644
index 0f6a918..0000000
--- a/chrome/app/theme/touch_100_percent/common/web-intents_left.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_100_percent/common/web-intents_right.png b/chrome/app/theme/touch_100_percent/common/web-intents_right.png
deleted file mode 100644
index 33d830a..0000000
--- a/chrome/app/theme/touch_100_percent/common/web-intents_right.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_140_percent/common/web-intents_center.png b/chrome/app/theme/touch_140_percent/common/web-intents_center.png
deleted file mode 100644
index 0ab314a..0000000
--- a/chrome/app/theme/touch_140_percent/common/web-intents_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_140_percent/common/web-intents_left.png b/chrome/app/theme/touch_140_percent/common/web-intents_left.png
deleted file mode 100644
index c9e8210..0000000
--- a/chrome/app/theme/touch_140_percent/common/web-intents_left.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_140_percent/common/web-intents_right.png b/chrome/app/theme/touch_140_percent/common/web-intents_right.png
deleted file mode 100644
index f8ff299..0000000
--- a/chrome/app/theme/touch_140_percent/common/web-intents_right.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_180_percent/common/web-intents_center.png b/chrome/app/theme/touch_180_percent/common/web-intents_center.png
deleted file mode 100644
index c04d8b0..0000000
--- a/chrome/app/theme/touch_180_percent/common/web-intents_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_180_percent/common/web-intents_left.png b/chrome/app/theme/touch_180_percent/common/web-intents_left.png
deleted file mode 100644
index 119a7ea..0000000
--- a/chrome/app/theme/touch_180_percent/common/web-intents_left.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/touch_180_percent/common/web-intents_right.png b/chrome/app/theme/touch_180_percent/common/web-intents_right.png
deleted file mode 100644
index 7f6a861..0000000
--- a/chrome/app/theme/touch_180_percent/common/web-intents_right.png
+++ /dev/null
Binary files differ