Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5350)

Unified Diff: chrome/browser/extensions/extension_browsertests_misc.cc

Issue 165414: Disable an extension when it is upgraded to a version that requires more (Closed)
Patch Set: more comments Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_browsertests_misc.cc
diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc
index ae3ece795e435acccad7f0276916901607194b73..a630f52e88a4f5fa712eccbc086af94d2b2b0ac5 100644
--- a/chrome/browser/extensions/extension_browsertests_misc.cc
+++ b/chrome/browser/extensions/extension_browsertests_misc.cc
@@ -151,7 +151,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, Incognito) {
Browser::OpenURLOffTheRecord(browser()->profile(),
GURL(chrome::kChromeUIExtensionsURL));
- ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("good.crx")));
+ ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("good.crx"), 1));
UninstallExtension("ldnnhddmnhbkjipkidpdiheffobcpfmf");
}
@@ -415,3 +415,49 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MessagingContentScript) {
host->render_view_host(), L"", L"testDisconnectOnClose()", &result);
EXPECT_TRUE(result);
}
+
+// Tests the process of updating an extension to one that requires higher
+// permissions.
+IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UpdatePermissions) {
+ TabContents* contents = browser()->GetSelectedTabContents();
+ ASSERT_TRUE(contents);
+
+ // Install the initial version, which should happen just fine.
+ ASSERT_TRUE(InstallExtension(
+ test_data_dir_.AppendASCII("permissions-low-v1.crx"), 1));
+ DCHECK_EQ(0, contents->infobar_delegate_count());
+
+ // Upgrade to a version that wants more permissions. We should disable the
+ // extension and prompt the user to reenable.
+ ASSERT_TRUE(InstallExtension(
+ test_data_dir_.AppendASCII("permissions-high-v2.crx"), -1));
+ EXPECT_EQ(1, contents->infobar_delegate_count());
+
+ ExtensionsService* service = browser()->profile()->GetExtensionsService();
+ EXPECT_EQ(0u, service->extensions()->size());
+ ASSERT_EQ(1u, service->disabled_extensions()->size());
+
+ // Now try reenabling it, which should also dismiss the infobar.
+ service->EnableExtension(service->disabled_extensions()->at(0)->id());
+ EXPECT_EQ(0, contents->infobar_delegate_count());
+ EXPECT_EQ(1u, service->extensions()->size());
+ EXPECT_EQ(0u, service->disabled_extensions()->size());
+}
+
+// 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.
+ ASSERT_TRUE(InstallExtension(
+ test_data_dir_.AppendASCII("permissions-low-v1.crx"), 1));
+ ASSERT_TRUE(InstallExtension(
+ 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());
+
+ // Now try uninstalling it.
+ UninstallExtension(service->disabled_extensions()->at(0)->id());
+ EXPECT_EQ(0u, service->extensions()->size());
+ EXPECT_EQ(0u, service->disabled_extensions()->size());
+}
« no previous file with comments | « chrome/browser/extensions/extension_browsertest.cc ('k') | chrome/browser/extensions/extension_disabled_infobar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698