summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/component_loader_unittest.cc
diff options
context:
space:
mode:
authortapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-21 01:16:25 +0000
committertapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-21 01:16:25 +0000
commitae4c37e92410ecac0983171b35a3fd5a331075b5 (patch)
treea40f6c3f9af759dc509fcd7cd549851201e341f7 /chrome/browser/extensions/component_loader_unittest.cc
parent38afc5413a07c3101bd1d85aba1adbef08e360b1 (diff)
downloadchromium_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.cc49
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());