diff options
author | tapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-21 01:16:25 +0000 |
---|---|---|
committer | tapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-21 01:16:25 +0000 |
commit | ae4c37e92410ecac0983171b35a3fd5a331075b5 (patch) | |
tree | a40f6c3f9af759dc509fcd7cd549851201e341f7 /chrome/browser/extensions/component_loader_unittest.cc | |
parent | 38afc5413a07c3101bd1d85aba1adbef08e360b1 (diff) | |
download | chromium_src-ae4c37e92410ecac0983171b35a3fd5a331075b5.zip chromium_src-ae4c37e92410ecac0983171b35a3fd5a331075b5.tar.gz chromium_src-ae4c37e92410ecac0983171b35a3fd5a331075b5.tar.bz2 |
Do not load extension system in the Profile import process.
Also, defer loading component extensions with background pages until
the import process is complete, so that the renderer host does not
compete for the database lock.
This also adds a regression test for http://crbug.com/163925.
BUG=163925,107636
TEST=Test first-run flows and profile import after uninstalling chrome and removing AppData/Local/Google/Chrome directory
Review URL: https://chromiumcodereview.appspot.com/11572036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174302 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/component_loader_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/component_loader_unittest.cc | 49 |
1 files changed, 37 insertions, 12 deletions
diff --git a/chrome/browser/extensions/component_loader_unittest.cc b/chrome/browser/extensions/component_loader_unittest.cc index 2bce857..fa64fd4 100644 --- a/chrome/browser/extensions/component_loader_unittest.cc +++ b/chrome/browser/extensions/component_loader_unittest.cc @@ -193,10 +193,10 @@ TEST_F(ComponentLoaderTest, Remove) { component_loader_.Remove(extension_path_); EXPECT_EQ(0u, extension_service_.extensions()->size()); - // Try adding and removing before LoadAll() is called. + // Try adding and removing before BulkLoadAll() is called. component_loader_.Add(manifest_contents_, extension_path_); component_loader_.Remove(extension_path_); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); EXPECT_EQ(0u, extension_service_.extensions()->size()); // Load an extension, and check that it's unloaded when Remove() is called. @@ -207,8 +207,8 @@ TEST_F(ComponentLoaderTest, Remove) { component_loader_.Remove(extension_path_); EXPECT_EQ(0u, extension_service_.extensions()->size()); - // And after calling LoadAll(), it shouldn't get loaded. - component_loader_.LoadAll(); + // And after calling BulkLoadAll(), it shouldn't get loaded. + component_loader_.BulkLoadAll(); EXPECT_EQ(0u, extension_service_.extensions()->size()); } @@ -216,26 +216,51 @@ TEST_F(ComponentLoaderTest, LoadAll) { extension_service_.set_ready(false); // No extensions should be loaded if none were added. - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); EXPECT_EQ(0u, extension_service_.extensions()->size()); - // Use LoadAll() to load the default extensions. + // Use BulkLoadAll() to load the default extensions. component_loader_.AddDefaultComponentExtensions(false); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); unsigned int default_count = extension_service_.extensions()->size(); // Clear the list of loaded extensions, and reload with one more. extension_service_.clear_extensions(); component_loader_.Add(manifest_contents_, extension_path_); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); } +TEST_F(ComponentLoaderTest, BulkLoadDeferred) { + extension_service_.set_ready(false); + + // Use BulkLoadDeferBackgroundPages to get a baseline of extensions with + // background pages. + component_loader_.AddDefaultComponentExtensions(false); + component_loader_.BulkLoadDeferBackgroundPages(); + unsigned int default_count_no_bg = extension_service_.extensions()->size(); + component_loader_.BulkLoadDeferred(); + unsigned int default_count_bg = extension_service_.extensions()->size(); + + // Clear and reload with one more, which is known to have a background page. + extension_service_.clear_extensions(); + component_loader_.Add(manifest_contents_, extension_path_); + component_loader_.BulkLoadDeferBackgroundPages(); + + // Count should not change, since the load will be deferred. + EXPECT_EQ(default_count_no_bg, extension_service_.extensions()->size()); + + // After loading deferred there should be one more than previously. + component_loader_.BulkLoadDeferred(); + EXPECT_EQ(default_count_bg + 1, extension_service_.extensions()->size()); +} + TEST_F(ComponentLoaderTest, RemoveAll) { extension_service_.set_ready(true); EXPECT_EQ(0u, extension_service_.extensions()->size()); - // Use LoadAll() to load the default extensions. + // Add all the default extensions. Since the extension service is ready, they + // will be loaded immediately. component_loader_.AddDefaultComponentExtensions(false); unsigned int default_count = extension_service_.extensions()->size(); @@ -251,7 +276,7 @@ TEST_F(ComponentLoaderTest, RemoveAll) { TEST_F(ComponentLoaderTest, EnterpriseWebStore) { component_loader_.AddDefaultComponentExtensions(false); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); unsigned int default_count = extension_service_.extensions()->size(); // Set the pref, and it should get loaded automatically. @@ -265,7 +290,7 @@ TEST_F(ComponentLoaderTest, EnterpriseWebStore) { extension_service_.clear_extensions(); component_loader_.ClearAllRegistered(); component_loader_.AddDefaultComponentExtensions(false); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); // Number of loaded extensions should be the same after changing the pref. @@ -293,7 +318,7 @@ TEST_F(ComponentLoaderTest, AddOrReplace) { component_loader_.registered_extensions_count()); extension_service_.set_ready(true); - component_loader_.LoadAll(); + component_loader_.BulkLoadAll(); EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); EXPECT_EQ(0u, extension_service_.unloaded_count()); |