Index: chrome/browser/extensions/extension_management_browsertest.cc |
diff --git a/chrome/browser/extensions/extension_management_browsertest.cc b/chrome/browser/extensions/extension_management_browsertest.cc |
index 41031e128087f6a2e7538f4f63b6af5f424c2462..221f347ec3bdf45a7a037cb51c012055212bce8e 100644 |
--- a/chrome/browser/extensions/extension_management_browsertest.cc |
+++ b/chrome/browser/extensions/extension_management_browsertest.cc |
@@ -68,17 +68,18 @@ class ExtensionManagementTest : public ExtensionBrowserTest { |
size_t size_before = service->extensions()->size(); |
// Install the initial version, which should happen just fine. |
- if (!InstallExtension( |
- test_data_dir_.AppendASCII("permissions-low-v1.crx"), 1)) |
+ const Extension* extension = InstallExtension( |
+ test_data_dir_.AppendASCII("permissions-low-v1.crx"), 1); |
+ if (!extension) |
+ return false; |
+ if (service->extensions()->size() != size_before + 1) |
return false; |
// Upgrade to a version that wants more permissions. We should disable the |
// extension and prompt the user to reenable. |
- if (service->extensions()->size() != size_before + 1) |
- return false; |
- if (!UpdateExtension( |
- service->extensions()->at(size_before)->id(), |
- test_data_dir_.AppendASCII("permissions-high-v2.crx"), -1)) |
+ if (UpdateExtension( |
+ extension->id(), |
+ test_data_dir_.AppendASCII("permissions-high-v2.crx"), -1)) |
return false; |
EXPECT_EQ(size_before, service->extensions()->size()); |
if (service->disabled_extensions()->size() != 1u) |
@@ -96,56 +97,55 @@ class ExtensionManagementTest : public ExtensionBrowserTest { |
// Tests that installing the same version overwrites. |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, MAYBE_InstallSameVersion) { |
- ExtensionService* service = browser()->profile()->GetExtensionService(); |
- const size_t size_before = service->extensions()->size(); |
- ASSERT_TRUE(InstallExtension( |
- test_data_dir_.AppendASCII("install/install.crx"), 1)); |
- FilePath old_path = service->extensions()->back()->path(); |
+ const Extension* extension = InstallExtension( |
+ test_data_dir_.AppendASCII("install/install.crx"), 1); |
+ ASSERT_TRUE(extension); |
+ FilePath old_path = extension->path(); |
// Install an extension with the same version. The previous install should be |
// overwritten. |
- ASSERT_TRUE(InstallExtension( |
- test_data_dir_.AppendASCII("install/install_same_version.crx"), 0)); |
- FilePath new_path = service->extensions()->back()->path(); |
+ extension = InstallExtension( |
+ test_data_dir_.AppendASCII("install/install_same_version.crx"), 0); |
+ ASSERT_TRUE(extension); |
+ FilePath new_path = extension->path(); |
- EXPECT_FALSE(IsExtensionAtVersion(service->extensions()->at(size_before), |
- "1.0")); |
+ EXPECT_FALSE(IsExtensionAtVersion(extension, "1.0")); |
EXPECT_NE(old_path.value(), new_path.value()); |
} |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, InstallOlderVersion) { |
- ExtensionService* service = browser()->profile()->GetExtensionService(); |
- const size_t size_before = service->extensions()->size(); |
- ASSERT_TRUE(InstallExtension( |
- test_data_dir_.AppendASCII("install/install.crx"), 1)); |
- ASSERT_TRUE(InstallExtension( |
+ const Extension* extension = InstallExtension( |
+ test_data_dir_.AppendASCII("install/install.crx"), 1); |
+ ASSERT_TRUE(extension); |
+ ASSERT_FALSE(InstallExtension( |
test_data_dir_.AppendASCII("install/install_older_version.crx"), 0)); |
- EXPECT_TRUE(IsExtensionAtVersion(service->extensions()->at(size_before), |
- "1.0")); |
+ EXPECT_TRUE(IsExtensionAtVersion(extension, "1.0")); |
} |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, InstallThenCancel) { |
- ExtensionService* service = browser()->profile()->GetExtensionService(); |
- const size_t size_before = service->extensions()->size(); |
- ASSERT_TRUE(InstallExtension( |
- test_data_dir_.AppendASCII("install/install.crx"), 1)); |
+ const Extension* extension = InstallExtension( |
+ test_data_dir_.AppendASCII("install/install.crx"), 1); |
+ ASSERT_TRUE(extension); |
// Cancel this install. |
- StartInstallButCancel(test_data_dir_.AppendASCII("install/install_v2.crx")); |
- EXPECT_TRUE(IsExtensionAtVersion(service->extensions()->at(size_before), |
- "1.0")); |
+ ASSERT_FALSE(StartInstallButCancel( |
+ test_data_dir_.AppendASCII("install/install_v2.crx"))); |
+ EXPECT_TRUE(IsExtensionAtVersion(extension, "1.0")); |
} |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, InstallRequiresConfirm) { |
- // Installing the extension without an auto confirming UI should fail |
- // since good.crx has permissions that require approval. |
- ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("good.crx"), 0)); |
- UninstallExtension("ldnnhddmnhbkjipkidpdiheffobcpfmf"); |
+ // Installing the extension without an auto confirming UI should result in |
+ // it being disabled, since good.crx has permissions that require approval. |
+ ExtensionService* service = browser()->profile()->GetExtensionService(); |
+ std::string id = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; |
+ ASSERT_FALSE(InstallExtension(test_data_dir_.AppendASCII("good.crx"), 0)); |
+ ASSERT_TRUE(service->GetExtensionById(id, true)); |
+ UninstallExtension(id); |
// And the install should succeed when the permissions are accepted. |
ASSERT_TRUE(InstallExtensionWithUIAutoConfirm( |
test_data_dir_.AppendASCII("good.crx"), 1, browser()->profile())); |
- UninstallExtension("ldnnhddmnhbkjipkidpdiheffobcpfmf"); |
+ UninstallExtension(id); |
} |
// Tests the process of updating an extension to one that requires higher |
@@ -156,7 +156,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, UpdatePermissions) { |
const size_t size_before = service->extensions()->size(); |
// Now try reenabling it. |
- service->EnableExtension(service->disabled_extensions()->at(0)->id()); |
+ const std::string id = (*service->disabled_extensions()->begin())->id(); |
+ service->EnableExtension(id); |
EXPECT_EQ(size_before + 1, service->extensions()->size()); |
EXPECT_EQ(0u, service->disabled_extensions()->size()); |
} |
@@ -173,7 +174,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, UpdatePermissionsAndUninstall) { |
// Uninstall, and check that the infobar went away. |
ExtensionService* service = browser()->profile()->GetExtensionService(); |
- std::string id = service->disabled_extensions()->at(0)->id(); |
+ std::string id = (*service->disabled_extensions()->begin())->id(); |
UninstallExtension(id); |
ASSERT_EQ(0U, infobar_helper->infobar_count()); |
@@ -194,7 +195,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, UninstallDisabled) { |
const size_t size_before = service->extensions()->size(); |
// Now try uninstalling it. |
- UninstallExtension(service->disabled_extensions()->at(0)->id()); |
+ UninstallExtension((*service->disabled_extensions()->begin())->id()); |
EXPECT_EQ(size_before, service->extensions()->size()); |
EXPECT_EQ(0u, service->disabled_extensions()->size()); |
} |
@@ -314,13 +315,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, AutoUpdate) { |
ExtensionService* service = browser()->profile()->GetExtensionService(); |
const size_t size_before = service->extensions()->size(); |
ASSERT_TRUE(service->disabled_extensions()->empty()); |
- ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v1.crx"), 1)); |
+ const Extension* extension = |
+ InstallExtension(basedir.AppendASCII("v1.crx"), 1); |
+ ASSERT_TRUE(extension); |
listener1.WaitUntilSatisfied(); |
- const ExtensionList* extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", |
- extensions->at(size_before)->id()); |
- ASSERT_EQ("1.0", extensions->at(size_before)->VersionString()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id()); |
+ ASSERT_EQ("1.0", extension->VersionString()); |
// We don't want autoupdate blacklist checks. |
service->updater()->set_blacklist_checks_enabled(false); |
@@ -330,11 +331,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, AutoUpdate) { |
service->updater()->CheckNow(); |
ASSERT_TRUE(WaitForExtensionInstall()); |
listener2.WaitUntilSatisfied(); |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", |
- extensions->at(size_before)->id()); |
- ASSERT_EQ("2.0", extensions->at(size_before)->VersionString()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ extension = service->GetExtensionById( |
+ "ogjcoiohnmldgjemafoockdghcjciccf", false); |
+ ASSERT_TRUE(extension); |
+ ASSERT_EQ("2.0", extension->VersionString()); |
ASSERT_TRUE(notification_listener.started()); |
ASSERT_TRUE(notification_listener.finished()); |
ASSERT_TRUE(ContainsKey(notification_listener.updates(), |
@@ -356,11 +357,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, AutoUpdate) { |
"ogjcoiohnmldgjemafoockdghcjciccf")); |
// Make sure the extension state is the same as before. |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", |
- extensions->at(size_before)->id()); |
- ASSERT_EQ("2.0", extensions->at(size_before)->VersionString()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ extension = service->GetExtensionById( |
+ "ogjcoiohnmldgjemafoockdghcjciccf", false); |
+ ASSERT_TRUE(extension); |
+ ASSERT_EQ("2.0", extension->VersionString()); |
} |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalUrlUpdate) { |
@@ -398,10 +399,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalUrlUpdate) { |
// Run autoupdate and make sure version 2 of the extension was installed. |
service->updater()->CheckNow(); |
ASSERT_TRUE(WaitForExtensionInstall()); |
- const ExtensionList* extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- ASSERT_EQ(kExtensionId, extensions->at(size_before)->id()); |
- ASSERT_EQ("2.0", extensions->at(size_before)->VersionString()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ const Extension* extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
+ ASSERT_EQ("2.0", extension->VersionString()); |
// Uninstalling the extension should set a pref that keeps the extension from |
// being installed again the next time external_extensions.json is read. |
@@ -483,14 +484,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalPolicyRefresh) { |
// Check if the extension got installed. |
ASSERT_TRUE(WaitForExtensionInstall()); |
- const ExtensionList* extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- ASSERT_EQ(kExtensionId, extensions->at(size_before)->id()); |
- EXPECT_EQ("2.0", extensions->at(size_before)->VersionString()); |
- EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, |
- extensions->at(size_before)->location()); |
- |
- // Try to disable and unstall the extension which should fail. |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ const Extension* extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
+ ASSERT_EQ("2.0", extension->VersionString()); |
+ EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); |
+ |
+ // Try to disable and uninstall the extension which should fail. |
service->DisableExtension(kExtensionId); |
EXPECT_EQ(size_before + 1, service->extensions()->size()); |
EXPECT_EQ(0u, service->disabled_extensions()->size()); |
@@ -498,7 +498,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalPolicyRefresh) { |
EXPECT_EQ(size_before + 1, service->extensions()->size()); |
EXPECT_EQ(0u, service->disabled_extensions()->size()); |
- // Now try to disable it through the management api. |
+ // Now try to disable it through the management api, again failing. |
ExtensionTestMessageListener listener1("ready", false); |
ASSERT_TRUE(LoadExtension( |
test_data_dir_.AppendASCII("management/uninstall_extension"))); |
@@ -510,10 +510,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalPolicyRefresh) { |
{ |
prefs->ClearPref(prefs::kExtensionInstallForceList); |
} |
- EXPECT_EQ(size_before + 1, extensions->size()); |
- ExtensionList::const_iterator i; |
- for (i = extensions->begin(); i != extensions->end(); ++i) |
- EXPECT_NE(kExtensionId, (*i)->id()); |
+ EXPECT_EQ(size_before + 1, service->extensions()->size()); |
+ EXPECT_FALSE(service->GetExtensionById(kExtensionId, true)); |
} |
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, PolicyOverridesUserInstall) { |
@@ -541,10 +539,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, PolicyOverridesUserInstall) { |
// User install of the extension. |
ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1)); |
- const ExtensionList* extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- const Extension* extension = extensions->at(size_before); |
- ASSERT_EQ(kExtensionId, extension->id()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ const Extension* extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
EXPECT_EQ(Extension::INTERNAL, extension->location()); |
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); |
@@ -557,10 +554,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, PolicyOverridesUserInstall) { |
std::string(kExtensionId) + ";http://localhost/autoupdate/manifest")); |
} |
ASSERT_TRUE(WaitForExtensionInstall()); |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- extension = extensions->at(size_before); |
- ASSERT_EQ(kExtensionId, extension->id()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); |
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); |
@@ -574,24 +570,23 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, PolicyOverridesUserInstall) { |
ASSERT_TRUE(!forcelist->empty()); |
forcelist->Clear(); |
} |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before, extensions->size()); |
+ ASSERT_EQ(size_before, service->extensions()->size()); |
extension = service->GetExtensionById(kExtensionId, true); |
- EXPECT_TRUE(extension == NULL); |
+ EXPECT_FALSE(extension); |
// User install again, but have it disabled too before setting the policy. |
ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1)); |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- extension = extensions->at(size_before); |
- ASSERT_EQ(kExtensionId, extension->id()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
EXPECT_EQ(Extension::INTERNAL, extension->location()); |
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); |
EXPECT_TRUE(service->disabled_extensions()->empty()); |
service->DisableExtension(kExtensionId); |
EXPECT_EQ(1u, service->disabled_extensions()->size()); |
- EXPECT_EQ(kExtensionId, service->disabled_extensions()->at(0)->id()); |
+ extension = service->GetExtensionById(kExtensionId, true); |
+ EXPECT_TRUE(extension); |
EXPECT_FALSE(service->IsExtensionEnabled(kExtensionId)); |
// Install the policy again. It should overwrite the extension's location, |
@@ -604,10 +599,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, PolicyOverridesUserInstall) { |
std::string(kExtensionId) + ";http://localhost/autoupdate/manifest")); |
} |
ASSERT_TRUE(WaitForExtensionInstall()); |
- extensions = service->extensions(); |
- ASSERT_EQ(size_before + 1, extensions->size()); |
- extension = extensions->at(size_before); |
- ASSERT_EQ(kExtensionId, extension->id()); |
+ ASSERT_EQ(size_before + 1, service->extensions()->size()); |
+ extension = service->GetExtensionById(kExtensionId, false); |
+ ASSERT_TRUE(extension); |
EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); |
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); |
EXPECT_TRUE(service->disabled_extensions()->empty()); |