diff options
author | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-03 21:08:03 +0000 |
---|---|---|
committer | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-03 21:08:03 +0000 |
commit | 36f5c5604d898b06763e0104980300c788e4ea48 (patch) | |
tree | 526c5345705e21b8fcc881e170b5f908cebdbd94 /chrome | |
parent | 7e0d664aad3baa2c8af840addc75e1cebae75702 (diff) | |
download | chromium_src-36f5c5604d898b06763e0104980300c788e4ea48.zip chromium_src-36f5c5604d898b06763e0104980300c788e4ea48.tar.gz chromium_src-36f5c5604d898b06763e0104980300c788e4ea48.tar.bz2 |
Don't ping for extension blacklist when no extensions are installed.
BUG=24168
TEST=covered by unit tests
Review URL: http://codereview.chromium.org/466012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33720 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
4 files changed, 44 insertions, 5 deletions
diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc index 6a6d88a..cf7fd9b 100644 --- a/chrome/browser/extensions/extension_browsertests_misc.cc +++ b/chrome/browser/extensions/extension_browsertests_misc.cc @@ -619,19 +619,23 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UpdatePermissions) { // Tests that we can uninstall a disabled extension. IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UninstallDisabled) { // Install and upgrade, so that we have a disabled extension. + ExtensionsService* service = browser()->profile()->GetExtensionsService(); + ASSERT_FALSE(service->HasInstalledExtensions()); ASSERT_TRUE(InstallExtension( test_data_dir_.AppendASCII("permissions-low-v1.crx"), 1)); + ASSERT_TRUE(service->HasInstalledExtensions()); ASSERT_TRUE(UpdateExtension("pgdpcfcocojkjfbgpiianjngphoopgmo", test_data_dir_.AppendASCII("permissions-high-v2.crx"), -1)); - ExtensionsService* service = browser()->profile()->GetExtensionsService(); EXPECT_EQ(0u, service->extensions()->size()); ASSERT_EQ(1u, service->disabled_extensions()->size()); + ASSERT_TRUE(service->HasInstalledExtensions()); // Now try uninstalling it. UninstallExtension(service->disabled_extensions()->at(0)->id()); EXPECT_EQ(0u, service->extensions()->size()); EXPECT_EQ(0u, service->disabled_extensions()->size()); + ASSERT_FALSE(service->HasInstalledExtensions()); } // Tests that disabling and re-enabling an extension works. @@ -641,6 +645,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DisableEnable) { browser()->profile()->GetExtensionProcessManager(); // Load an extension, expect the toolstrip to be available. + ASSERT_FALSE(service->HasInstalledExtensions()); ASSERT_TRUE(LoadExtension( test_data_dir_.AppendASCII("good").AppendASCII("Extensions") .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa") @@ -648,18 +653,21 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DisableEnable) { EXPECT_EQ(1u, service->extensions()->size()); EXPECT_EQ(0u, service->disabled_extensions()->size()); EXPECT_TRUE(FindHostWithPath(manager, "/toolstrip.html", 1)); + ASSERT_TRUE(service->HasInstalledExtensions()); // After disabling, the toolstrip should go away. service->DisableExtension("bjafgdebaacbbbecmhlhpofkepfkgcpa"); EXPECT_EQ(0u, service->extensions()->size()); EXPECT_EQ(1u, service->disabled_extensions()->size()); EXPECT_FALSE(FindHostWithPath(manager, "/toolstrip.html", 0)); + ASSERT_TRUE(service->HasInstalledExtensions()); // And bring it back. service->EnableExtension("bjafgdebaacbbbecmhlhpofkepfkgcpa"); EXPECT_EQ(1u, service->extensions()->size()); EXPECT_EQ(0u, service->disabled_extensions()->size()); EXPECT_TRUE(FindHostWithPath(manager, "/toolstrip.html", 1)); + ASSERT_TRUE(service->HasInstalledExtensions()); } // Helper function for common code shared by the 3 WindowOpen tests below. @@ -803,9 +811,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, AutoUpdate) { basedir.AppendASCII("v2.crx")); // Install version 1 of the extension. - ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v1.crx"), 1)); ExtensionsService* service = browser()->profile()->GetExtensionsService(); + ASSERT_FALSE(service->HasInstalledExtensions()); + ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v1.crx"), 1)); const ExtensionList* extensions = service->extensions(); + ASSERT_TRUE(service->HasInstalledExtensions()); ASSERT_EQ(1u, extensions->size()); ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extensions->at(0)->id()); ASSERT_EQ("1.0", extensions->at(0)->VersionString()); diff --git a/chrome/browser/extensions/extension_updater.cc b/chrome/browser/extensions/extension_updater.cc index f79dc7d..f2412b2 100644 --- a/chrome/browser/extensions/extension_updater.cc +++ b/chrome/browser/extensions/extension_updater.cc @@ -520,7 +520,7 @@ void ExtensionUpdater::CheckNow() { // Generate a set of update urls for loaded extensions. std::set<GURL> urls; - if (blacklist_checks_enabled_) { + if (blacklist_checks_enabled_ && service_->HasInstalledExtensions()) { urls.insert(GetBlacklistUpdateUrl( prefs_->GetString(kExtensionBlacklistUpdateVersion))); } diff --git a/chrome/browser/extensions/extension_updater_unittest.cc b/chrome/browser/extensions/extension_updater_unittest.cc index e8cb256..3f8a2c9 100644 --- a/chrome/browser/extensions/extension_updater_unittest.cc +++ b/chrome/browser/extensions/extension_updater_unittest.cc @@ -61,6 +61,11 @@ class MockService : public ExtensionUpdateService { const std::vector<std::string>& blacklist) { EXPECT_TRUE(false); } + + virtual bool HasInstalledExtensions() { + EXPECT_TRUE(false); + return false; + } private: DISALLOW_COPY_AND_ASSIGN(MockService); }; @@ -116,7 +121,7 @@ void CreateTestExtensions(int count, ExtensionList *list, class ServiceForManifestTests : public MockService { public: - ServiceForManifestTests() {} + ServiceForManifestTests() : has_installed_extensions_(false) {} virtual ~ServiceForManifestTests() {} @@ -136,8 +141,17 @@ class ServiceForManifestTests : public MockService { extensions_ = extensions; } + virtual bool HasInstalledExtensions() { + return has_installed_extensions_; + } + + void set_has_installed_extensions(bool value) { + has_installed_extensions_ = value; + } + private: ExtensionList extensions_; + bool has_installed_extensions_; }; class ServiceForDownloadTests : public MockService { @@ -316,9 +330,18 @@ class ExtensionUpdaterTest : public testing::Test { // Tell the updater that it's time to do update checks. SimulateTimerFired(updater.get()); - // Get the url our mock fetcher was asked to fetch. + // No extensions installed, so nothing should have been fetched. TestURLFetcher* fetcher = factory.GetFetcherByID(ExtensionUpdater::kManifestFetcherId); + EXPECT_TRUE(fetcher == NULL); + + // Try again with an extension installed. + service.set_has_installed_extensions(true); + SimulateTimerFired(updater.get()); + + // Get the url our mock fetcher was asked to fetch. + fetcher = factory.GetFetcherByID(ExtensionUpdater::kManifestFetcherId); + ASSERT_FALSE(fetcher == NULL); const GURL& url = fetcher->original_url(); EXPECT_FALSE(url.is_empty()); diff --git a/chrome/browser/extensions/extensions_service.h b/chrome/browser/extensions/extensions_service.h index a7332ba..910a396 100644 --- a/chrome/browser/extensions/extensions_service.h +++ b/chrome/browser/extensions/extensions_service.h @@ -49,6 +49,7 @@ class ExtensionUpdateService { bool include_disabled) = 0; virtual void UpdateExtensionBlacklist( const std::vector<std::string>& blacklist) = 0; + virtual bool HasInstalledExtensions() = 0; }; // Manages installed and running Chromium extensions. @@ -86,6 +87,11 @@ class ExtensionsService return &disabled_extensions_; } + // Returns true if any extensions are installed. + virtual bool HasInstalledExtensions() { + return !(extensions_.empty() && disabled_extensions_.empty()); + } + const FilePath& install_directory() const { return install_directory_; } // Initialize and start all installed extensions. |