summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortommycli@chromium.org <tommycli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-08 14:17:00 +0000
committertommycli@chromium.org <tommycli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-08 14:17:00 +0000
commit6c0c9736ddcd8a677414f64a270b5a48a9bc5705 (patch)
tree2dd896a715fa55f90ed85f69f4b1b9f3274c5206
parent44c8cc8bc2a354669c80714ad1426d2a2156843c (diff)
downloadchromium_src-6c0c9736ddcd8a677414f64a270b5a48a9bc5705.zip
chromium_src-6c0c9736ddcd8a677414f64a270b5a48a9bc5705.tar.gz
chromium_src-6c0c9736ddcd8a677414f64a270b5a48a9bc5705.tar.bz2
Break some of the chrome/common dependencies in implementation by moving some paths and constants to the component.
Design doc: https://docs.google.com/document/d/1F76yNZCnPnGzgNXhI-sCFKlXulwx_s_OKTGbJS5NhbA/edit?usp=sharing BUG=371463 Review URL: https://codereview.chromium.org/334783002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281744 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/DEPS1
-rw-r--r--chrome/app/chrome_main_delegate.cc4
-rw-r--r--chrome/browser/component_updater/DEPS1
-rw-r--r--chrome/browser/component_updater/cld_component_installer.cc4
-rw-r--r--chrome/browser/component_updater/component_patcher_operation.cc1
-rw-r--r--chrome/browser/component_updater/component_updater_configurator.cc4
-rw-r--r--chrome/browser/component_updater/recovery_component_installer.cc9
-rw-r--r--chrome/browser/component_updater/swiftshader_component_installer.cc10
-rw-r--r--chrome/browser/component_updater/widevine_cdm_component_installer.cc2
-rw-r--r--chrome/chrome_browser.gypi1
-rw-r--r--chrome/chrome_common.gypi1
-rw-r--r--chrome/common/chrome_paths.cc11
-rw-r--r--chrome/common/chrome_paths.h3
-rw-r--r--chrome/common/chrome_switches.cc4
-rw-r--r--chrome/common/chrome_switches.h1
-rw-r--r--chrome/common/pref_names.cc8
-rw-r--r--chrome/common/pref_names.h2
-rw-r--r--chrome/test/base/chrome_unit_test_suite.cc5
-rw-r--r--components/component_updater.gypi26
-rw-r--r--components/component_updater/DEPS2
-rw-r--r--components/component_updater/component_updater_paths.cc50
-rw-r--r--components/component_updater/component_updater_paths.h29
-rw-r--r--components/component_updater/component_updater_switches.cc13
-rw-r--r--components/component_updater/component_updater_switches.h16
-rw-r--r--components/component_updater/pref_names.cc13
-rw-r--r--components/component_updater/pref_names.h14
-rw-r--r--components/components.gyp1
27 files changed, 189 insertions, 47 deletions
diff --git a/chrome/app/DEPS b/chrome/app/DEPS
index e47956c..ba43711 100644
--- a/chrome/app/DEPS
+++ b/chrome/app/DEPS
@@ -9,6 +9,7 @@ include_rules = [
"+chromeos/chromeos_paths.h",
"+chromeos/chromeos_switches.h",
"+components/breakpad",
+ "+components/component_updater",
"+components/nacl/common",
"+components/nacl/zygote",
"+components/startup_metric_utils",
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index 6dbb03a..ee5fce3 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -34,6 +34,7 @@
#include "chrome/plugin/chrome_content_plugin_client.h"
#include "chrome/renderer/chrome_content_renderer_client.h"
#include "chrome/utility/chrome_content_utility_client.h"
+#include "components/component_updater/component_updater_paths.h"
#include "components/nacl/common/nacl_switches.h"
#include "components/startup_metric_utils/startup_metric_utils.h"
#include "content/public/common/content_client.h"
@@ -424,6 +425,9 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exit_code) {
#if !defined(DISABLE_NACL) && defined(OS_LINUX)
nacl::RegisterPathProvider();
#endif
+ base::FilePath user_data;
+ if (PathService::Get(chrome::DIR_USER_DATA, &user_data))
+ component_updater::RegisterPathProvider(user_data);
// No support for ANDROID yet as DiagnosticsController needs wchar support.
// TODO(gspencer): That's not true anymore, or at least there are no w-string
diff --git a/chrome/browser/component_updater/DEPS b/chrome/browser/component_updater/DEPS
index 626a124..cb4f58d 100644
--- a/chrome/browser/component_updater/DEPS
+++ b/chrome/browser/component_updater/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/component_updater",
"+media/cdm/ppapi/supported_cdm_versions.h",
"+ppapi/thunk",
"+third_party/widevine"
diff --git a/chrome/browser/component_updater/cld_component_installer.cc b/chrome/browser/component_updater/cld_component_installer.cc
index a3e62ac..d63b2da 100644
--- a/chrome/browser/component_updater/cld_component_installer.cc
+++ b/chrome/browser/component_updater/cld_component_installer.cc
@@ -14,7 +14,7 @@
#include "base/logging.h"
#include "base/path_service.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/chrome_paths.h"
+#include "components/component_updater/component_updater_paths.h"
#include "components/translate/content/browser/data_file_browser_cld_data_provider.h"
#include "content/public/browser/browser_thread.h"
#include "net/ssl/ssl_config_service.h"
@@ -89,7 +89,7 @@ bool CldComponentInstallerTraits::VerifyInstallation(
base::FilePath CldComponentInstallerTraits::GetBaseDirectory() const {
base::FilePath result;
- PathService::Get(chrome::DIR_COMPONENT_CLD2, &result);
+ PathService::Get(DIR_COMPONENT_CLD2, &result);
return result;
}
diff --git a/chrome/browser/component_updater/component_patcher_operation.cc b/chrome/browser/component_updater/component_patcher_operation.cc
index eab5e42..137d573 100644
--- a/chrome/browser/component_updater/component_patcher_operation.cc
+++ b/chrome/browser/component_updater/component_patcher_operation.cc
@@ -16,7 +16,6 @@
#include "chrome/browser/component_updater/component_patcher.h"
#include "chrome/browser/component_updater/component_updater_service.h"
#include "chrome/common/chrome_utility_messages.h"
-#include "chrome/common/extensions/extension_constants.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/utility_process_host.h"
#include "courgette/courgette.h"
diff --git a/chrome/browser/component_updater/component_updater_configurator.cc b/chrome/browser/component_updater/component_updater_configurator.cc
index 34f7173..f9027e7 100644
--- a/chrome/browser/component_updater/component_updater_configurator.cc
+++ b/chrome/browser/component_updater/component_updater_configurator.cc
@@ -12,7 +12,7 @@
#include "base/compiler_specific.h"
#include "base/strings/string_util.h"
#include "build/build_config.h"
-#include "chrome/common/chrome_switches.h"
+#include "components/component_updater/component_updater_switches.h"
#include "net/url_request/url_request_context_getter.h"
#include "url/gurl.h"
@@ -208,7 +208,7 @@ bool ChromeConfigurator::UseBackgroundDownloader() const {
}
Configurator* MakeChromeComponentUpdaterConfigurator(
- const CommandLine* cmdline,
+ const base::CommandLine* cmdline,
net::URLRequestContextGetter* context_getter) {
return new ChromeConfigurator(cmdline, context_getter);
}
diff --git a/chrome/browser/component_updater/recovery_component_installer.cc b/chrome/browser/component_updater/recovery_component_installer.cc
index 4baa366..617cb88 100644
--- a/chrome/browser/component_updater/recovery_component_installer.cc
+++ b/chrome/browser/component_updater/recovery_component_installer.cc
@@ -20,9 +20,8 @@
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/component_updater/component_updater_service.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_version_info.h"
-#include "chrome/common/pref_names.h"
+#include "components/component_updater/component_updater_paths.h"
+#include "components/component_updater/pref_names.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
@@ -118,11 +117,11 @@ bool RecoveryComponentInstaller::Install(const base::DictionaryValue& manifest,
// Passed the basic tests. Copy the installation to a permanent directory.
base::FilePath path;
- if (!PathService::Get(chrome::DIR_RECOVERY_BASE, &path))
+ if (!PathService::Get(DIR_RECOVERY_BASE, &path))
return false;
path = path.AppendASCII(version.GetString());
if (base::PathExists(path) && !base::DeleteFile(path, true))
- return false;
+ return false;
if (!base::Move(unpack_path, path)) {
DVLOG(1) << "Recovery component move failed.";
return false;
diff --git a/chrome/browser/component_updater/swiftshader_component_installer.cc b/chrome/browser/component_updater/swiftshader_component_installer.cc
index e4c410a..96f5e9e 100644
--- a/chrome/browser/component_updater/swiftshader_component_installer.cc
+++ b/chrome/browser/component_updater/swiftshader_component_installer.cc
@@ -19,7 +19,7 @@
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/component_updater/component_updater_service.h"
-#include "chrome/common/chrome_paths.h"
+#include "components/component_updater/component_updater_paths.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/gpu_data_manager_observer.h"
@@ -46,9 +46,6 @@ const base::FilePath::CharType kSwiftShaderGlesName[] =
const char kSwiftShaderManifestName[] = "SwiftShader";
-const base::FilePath::CharType kSwiftShaderBaseDirectory[] =
- FILE_PATH_LITERAL("SwiftShader");
-
// If we don't have a SwiftShader component, this is the version we claim.
const char kNullVersion[] = "0.0.0.0";
@@ -56,8 +53,9 @@ const char kNullVersion[] = "0.0.0.0";
// <profile>\AppData\Local\Google\Chrome\User Data\SwiftShader\.
base::FilePath GetSwiftShaderBaseDirectory() {
base::FilePath result;
- PathService::Get(chrome::DIR_USER_DATA, &result);
- return result.Append(kSwiftShaderBaseDirectory);
+ if (!PathService::Get(DIR_SWIFT_SHADER, &result))
+ NOTREACHED() << "Couldn't get SwiftShader directory.";
+ return result;
}
// SwiftShader has version encoded in the path itself
diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
index 1445247..b3438f5 100644
--- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
+++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
@@ -24,8 +24,6 @@
#include "build/build_config.h"
#include "chrome/browser/component_updater/component_updater_service.h"
#include "chrome/browser/component_updater/default_component_installer.h"
-#include "chrome/browser/plugins/plugin_prefs.h"
-#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/widevine_cdm_constants.h"
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 8b60a6b..1ad7459 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2837,6 +2837,7 @@
'../components/components.gyp:captive_portal',
'../components/components.gyp:cloud_devices_common',
'../components/components.gyp:component_metrics_proto',
+ '../components/components.gyp:component_updater',
'../components/components.gyp:data_reduction_proxy_browser',
'../components/components.gyp:domain_reliability',
'../components/components.gyp:favicon_base',
diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi
index 4f334c3..11a1afc 100644
--- a/chrome/chrome_common.gypi
+++ b/chrome/chrome_common.gypi
@@ -302,6 +302,7 @@
'<(DEPTH)/chrome/chrome_resources.gyp:theme_resources',
'<(DEPTH)/chrome/common_constants.gyp:common_constants',
'<(DEPTH)/components/components.gyp:cloud_devices_common',
+ '<(DEPTH)/components/components.gyp:component_updater',
'<(DEPTH)/components/components.gyp:json_schema',
'<(DEPTH)/components/components.gyp:metrics',
'<(DEPTH)/components/components.gyp:policy_component_common',
diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
index 3fef012..6960bf3 100644
--- a/chrome/common/chrome_paths.cc
+++ b/chrome/common/chrome_paths.cc
@@ -352,12 +352,6 @@ bool PathProvider(int key, base::FilePath* result) {
#endif
cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
break;
- case chrome::DIR_RECOVERY_BASE:
- if (!PathService::Get(chrome::DIR_USER_DATA, &cur))
- return false;
- cur = cur.Append(FILE_PATH_LITERAL("recovery"));
- create_dir = true;
- break;
#if defined(OS_POSIX) && !defined(OS_MACOSX)
case chrome::FILE_O1D_PLUGIN:
if (!PathService::Get(base::DIR_MODULE, &cur))
@@ -370,11 +364,6 @@ bool PathProvider(int key, base::FilePath* result) {
cur = cur.Append(kGTalkPluginFileName);
break;
#endif
- case chrome::DIR_COMPONENT_CLD2:
- if (!PathService::Get(chrome::DIR_USER_DATA, &cur))
- return false;
- cur = cur.Append(FILE_PATH_LITERAL("CLD"));
- break;
#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
#if defined(WIDEVINE_CDM_IS_COMPONENT)
case chrome::DIR_COMPONENT_WIDEVINE_CDM:
diff --git a/chrome/common/chrome_paths.h b/chrome/common/chrome_paths.h
index 135b876..b7e3bef 100644
--- a/chrome/common/chrome_paths.h
+++ b/chrome/common/chrome_paths.h
@@ -94,8 +94,6 @@ enum {
FILE_O1D_PLUGIN, // Full path to the O1D Pepper plugin file.
FILE_EFFECTS_PLUGIN, // Full path to the Effects Pepper plugin file.
FILE_GTALK_PLUGIN, // Full path to the GTalk Pepper plugin file.
- DIR_COMPONENT_CLD2, // Directory that contains component-updated
- // Compact Language Detector files
DIR_COMPONENT_WIDEVINE_CDM, // Directory that contains component-updated
// Widevine CDM files.
FILE_WIDEVINE_CDM_ADAPTER, // Full path to the Widevine CDM adapter file.
@@ -103,7 +101,6 @@ enum {
// binary data (e.g., html files and images
// used by internal pages).
DIR_RESOURCES_EXTENSION, // Full path to extension resources.
- DIR_RECOVERY_BASE, // Full path to the dir for Recovery component.
#if defined(OS_CHROMEOS)
DIR_CHROMEOS_WALLPAPERS, // Directory where downloaded chromeos
// wallpapers reside.
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 14f9083..205f010 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -167,10 +167,6 @@ const char kCloudPrintJobTitle[] = "cloud-print-job-title";
// service or register proxy for autostart.
const char kCloudPrintSetupProxy[] = "cloud-print-setup-proxy";
-// Comma-separated options to troubleshoot the component updater. Only valid
-// for the browser process.
-const char kComponentUpdater[] = "component-updater";
-
// Comma-separated list of BrowserThreads that cause browser process to crash
// if the given browser thread is not responsive. UI,IO,DB,FILE,CACHE are the
// list of BrowserThreads that are supported.
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 86f6ff1..a2df4eb 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -60,7 +60,6 @@ extern const char kCloudPrintJobTitle[];
extern const char kCloudPrintFileType[];
extern const char kCloudPrintPrintTicket[];
extern const char kCloudPrintSetupProxy[];
-extern const char kComponentUpdater[];
extern const char kCrashOnHangThreads[];
extern const char kCreateBrowserOnStartupForTests[];
extern const char kCustomLauncherPage[];
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index cdfe003..18d3c94 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -2090,14 +2090,6 @@ const char kCustomHandlersEnabled[] = "custom_handlers.enabled";
// by the cloud policy subsystem.
const char kDevicePolicyRefreshRate[] = "policy.device_refresh_rate";
-// String that represents the recovery component last downloaded version. This
-// takes the usual 'a.b.c.d' notation.
-const char kRecoveryComponentVersion[] = "recovery_component.version";
-
-// String that stores the component updater last known state. This is used for
-// troubleshooting.
-const char kComponentUpdaterState[] = "component_updater.state";
-
// A boolean where true means that the browser has previously attempted to
// enable autoupdate and failed, so the next out-of-date browser start should
// not prompt the user to enable autoupdate, it should offer to reinstall Chrome
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 9e3c71d..0c18251 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -727,8 +727,6 @@ extern const char kMessageCenterShowedFirstRunBalloon[];
extern const char kMessageCenterShowIcon[];
extern const char kMessageCenterForcedOnTaskbar[];
-extern const char kRecoveryComponentVersion[];
-extern const char kComponentUpdaterState[];
extern const char kAttemptedToEnableAutoupdate[];
#if defined(OS_WIN)
diff --git a/chrome/test/base/chrome_unit_test_suite.cc b/chrome/test/base/chrome_unit_test_suite.cc
index 197f3e5..6d8b4ef 100644
--- a/chrome/test/base/chrome_unit_test_suite.cc
+++ b/chrome/test/base/chrome_unit_test_suite.cc
@@ -13,6 +13,7 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/utility/chrome_content_utility_client.h"
+#include "components/component_updater/component_updater_paths.h"
#include "components/omaha_query_params/omaha_query_params.h"
#include "content/public/common/content_paths.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -121,6 +122,10 @@ void ChromeUnitTestSuite::InitializeProviders() {
content::RegisterPathProvider();
ui::RegisterPathProvider();
+ base::FilePath user_data;
+ if (PathService::Get(chrome::DIR_USER_DATA, &user_data))
+ component_updater::RegisterPathProvider(user_data);
+
#if defined(OS_CHROMEOS)
chromeos::RegisterPathProvider();
#endif
diff --git a/components/component_updater.gypi b/components/component_updater.gypi
new file mode 100644
index 0000000..1cdfee4
--- /dev/null
+++ b/components/component_updater.gypi
@@ -0,0 +1,26 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'targets': [
+ {
+ 'target_name': 'component_updater',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'component_updater/component_updater_paths.cc',
+ 'component_updater/component_updater_paths.h',
+ 'component_updater/component_updater_switches.cc',
+ 'component_updater/component_updater_switches.h',
+ 'component_updater/pref_names.cc',
+ 'component_updater/pref_names.h',
+ ],
+ },
+ ],
+}
diff --git a/components/component_updater/DEPS b/components/component_updater/DEPS
new file mode 100644
index 0000000..48e8875
--- /dev/null
+++ b/components/component_updater/DEPS
@@ -0,0 +1,2 @@
+include_rules = [
+]
diff --git a/components/component_updater/component_updater_paths.cc b/components/component_updater/component_updater_paths.cc
new file mode 100644
index 0000000..62f484b
--- /dev/null
+++ b/components/component_updater/component_updater_paths.cc
@@ -0,0 +1,50 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/component_updater/component_updater_paths.h"
+
+#include "base/lazy_instance.h"
+#include "base/path_service.h"
+
+namespace component_updater {
+
+namespace {
+
+static base::LazyInstance<base::FilePath> g_components_root =
+ LAZY_INSTANCE_INITIALIZER;
+
+} // namespace
+
+bool PathProvider(int key, base::FilePath* result) {
+ DCHECK(!g_components_root.Get().empty());
+ base::FilePath cur = g_components_root.Get();
+ switch (key) {
+ case DIR_COMPONENT_CLD2:
+ cur = cur.Append(FILE_PATH_LITERAL("CLD"));
+ break;
+ case DIR_RECOVERY_BASE:
+ cur = cur.Append(FILE_PATH_LITERAL("recovery"));
+ break;
+ case DIR_SWIFT_SHADER:
+ cur = cur.Append(FILE_PATH_LITERAL("SwiftShader"));
+ break;
+ default:
+ return false;
+ }
+
+ *result = cur;
+ return true;
+}
+
+// This cannot be done as a static initializer sadly since Visual Studio will
+// eliminate this object file if there is no direct entry point into it.
+void RegisterPathProvider(const base::FilePath& components_root) {
+ DCHECK(g_components_root.Get().empty());
+ DCHECK(!components_root.empty());
+ g_components_root.Get() = components_root;
+
+ PathService::RegisterProvider(PathProvider, PATH_START, PATH_END);
+}
+
+} // namespace component_updater
diff --git a/components/component_updater/component_updater_paths.h b/components/component_updater/component_updater_paths.h
new file mode 100644
index 0000000..b251895
--- /dev/null
+++ b/components/component_updater/component_updater_paths.h
@@ -0,0 +1,29 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_PATHS_H_
+#define COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_PATHS_H_
+
+#include "base/files/file_path.h"
+
+namespace component_updater {
+
+enum {
+ PATH_START = 10000,
+ DIR_COMPONENT_CLD2 = PATH_START, // Directory that contains component-updated
+ // Compact Language Detector files.
+ DIR_RECOVERY_BASE, // Full path to the dir for Recovery
+ // component.
+ DIR_SWIFT_SHADER, // Path to the SwiftShader component.
+ PATH_END
+};
+
+// Call once to register the provider for the path keys defined above.
+// |components_root_key| is the path provider key defining where the
+// components should be installed.
+void RegisterPathProvider(const base::FilePath& components_root_key);
+
+} // namespace component_updater
+
+#endif // COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_PATHS_H_
diff --git a/components/component_updater/component_updater_switches.cc b/components/component_updater/component_updater_switches.cc
new file mode 100644
index 0000000..dc9de60
--- /dev/null
+++ b/components/component_updater/component_updater_switches.cc
@@ -0,0 +1,13 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/component_updater/component_updater_switches.h"
+
+namespace switches {
+
+// Comma-separated options to troubleshoot the component updater. Only valid
+// for the browser process.
+const char kComponentUpdater[] = "component-updater";
+
+} // namespace switches
diff --git a/components/component_updater/component_updater_switches.h b/components/component_updater/component_updater_switches.h
new file mode 100644
index 0000000..52f3bd5
--- /dev/null
+++ b/components/component_updater/component_updater_switches.h
@@ -0,0 +1,16 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_SWITCHES_H_
+#define COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_SWITCHES_H_
+
+namespace switches {
+
+// All switches in alphabetical order. The switches should be documented
+// alongside the definition of their values in the .cc file.
+extern const char kComponentUpdater[];
+
+} // namespace switches
+
+#endif // COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_SWITCHES_H_
diff --git a/components/component_updater/pref_names.cc b/components/component_updater/pref_names.cc
new file mode 100644
index 0000000..389100e
--- /dev/null
+++ b/components/component_updater/pref_names.cc
@@ -0,0 +1,13 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/component_updater/pref_names.h"
+
+namespace prefs {
+
+// String that represents the recovery component last downloaded version. This
+// takes the usual 'a.b.c.d' notation.
+const char kRecoveryComponentVersion[] = "recovery_component.version";
+
+} // namespace prefs
diff --git a/components/component_updater/pref_names.h b/components/component_updater/pref_names.h
new file mode 100644
index 0000000..aedc2b1
--- /dev/null
+++ b/components/component_updater/pref_names.h
@@ -0,0 +1,14 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_COMPONENT_UPDATER_PREF_NAMES_H_
+#define COMPONENTS_COMPONENT_UPDATER_PREF_NAMES_H_
+
+namespace prefs {
+
+extern const char kRecoveryComponentVersion[];
+
+} // namespace prefs
+
+#endif // COMPONENTS_COMPONENT_UPDATER_PREF_NAMES_H_
diff --git a/components/components.gyp b/components/components.gyp
index 9c2b35d..49254a2 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -17,6 +17,7 @@
'breakpad.gypi',
'captive_portal.gypi',
'cloud_devices.gypi',
+ 'component_updater.gypi',
'cronet.gypi',
'data_reduction_proxy.gypi',
'dom_distiller.gypi',