Load the bookmark manager extension at Chrome startup.

Review URL: http://codereview.chromium.org/660232

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40683 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc
index b2ea08a3..eb2520a 100644
--- a/chrome/browser/extensions/extensions_service_unittest.cc
+++ b/chrome/browser/extensions/extensions_service_unittest.cc
@@ -1684,3 +1684,42 @@
   EXPECT_EQ(profile_->GetDatabaseTracker()->GetDefaultQuota(), limited_quota);
   EXPECT_EQ(kint64max, unlimited_quota);
 }
+
+// Tests ExtensionsService::register_component_extension().
+TEST_F(ExtensionsServiceTest, ComponentExtensions) {
+  InitializeEmptyExtensionsService();
+
+  FilePath path;
+  ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path));
+  path = path.AppendASCII("extensions")
+      .AppendASCII("good")
+      .AppendASCII("Extensions")
+      .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
+      .AppendASCII("1.0.0.0");
+
+  std::string manifest;
+  ASSERT_TRUE(file_util::ReadFileToString(
+      path.Append(Extension::kManifestFilename), &manifest));
+
+  service_->register_component_extension(
+      ExtensionsService::ComponentExtensionInfo(manifest, path));
+  service_->Init();
+
+  // Note that we do not pump messages -- the extension should be loaded
+  // immediately.
+
+  EXPECT_EQ(0u, GetErrors().size());
+  ASSERT_EQ(1u, loaded_.size());
+  EXPECT_EQ(Extension::COMPONENT, loaded_[0]->location());
+  EXPECT_EQ(1u, service_->extensions()->size());
+
+  // Component extensions shouldn't get recourded in the prefs.
+  ValidatePrefKeyCount(0);
+
+  // Reload all extensions, and make sure it comes back.
+  std::string extension_id = service_->extensions()->at(0)->id();
+  loaded_.clear();
+  service_->ReloadExtensions();
+  ASSERT_EQ(1u, service_->extensions()->size());
+  EXPECT_EQ(extension_id, service_->extensions()->at(0)->id());
+}