summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-03 21:08:03 +0000
committerpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-03 21:08:03 +0000
commit36f5c5604d898b06763e0104980300c788e4ea48 (patch)
tree526c5345705e21b8fcc881e170b5f908cebdbd94 /chrome
parent7e0d664aad3baa2c8af840addc75e1cebae75702 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/extensions/extension_browsertests_misc.cc14
-rw-r--r--chrome/browser/extensions/extension_updater.cc2
-rw-r--r--chrome/browser/extensions/extension_updater_unittest.cc27
-rw-r--r--chrome/browser/extensions/extensions_service.h6
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.