Basic unit test for external install global error bubble.
BUG=229083
Review URL: https://chromiumcodereview.appspot.com/13831014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195579 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 10ca8e4..4bb9f97 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -148,6 +148,7 @@
const char* const theme2_crx = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf";
const char* const permissions_crx = "eagpmdpfmaekmmcejjbmjoecnejeiiin";
const char* const unpacked = "cbcdidchbppangcjoddlpdjlenngjldk";
+const char* const updates_from_webstore = "akjooamlhcgeopfifcmlggaebeocgokj";
struct ExtensionsOrder {
bool operator()(const Extension* a, const Extension* b) {
@@ -5870,8 +5871,38 @@
service_->EnableExtension(page_action);
EXPECT_TRUE(extensions::HasExternalInstallError(service_));
+ EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
service_->EnableExtension(theme_crx);
EXPECT_TRUE(extensions::HasExternalInstallError(service_));
+ EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
service_->EnableExtension(good_crx);
EXPECT_FALSE(extensions::HasExternalInstallError(service_));
+ EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
+}
+
+// Test that there is a bubble for external extensions that update
+// from the webstore.
+TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstore) {
+ FeatureSwitch::ScopedOverride prompt(
+ FeatureSwitch::prompt_for_external_extensions(), true);
+
+ InitializeEmptyExtensionService();
+
+ //base::ScopedTempDir temp_dir;
+ //ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
+ PackCRX(data_dir_.AppendASCII("update_from_webstore"),
+ data_dir_.AppendASCII("update_from_webstore.pem"),
+ crx_path);
+
+ MockExtensionProvider* provider =
+ new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
+ AddMockExternalProvider(provider);
+
+ provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
+ service_->CheckForExternalUpdates();
+ loop_.RunUntilIdle();
+ EXPECT_TRUE(extensions::HasExternalInstallError(service_));
+ EXPECT_TRUE(extensions::HasExternalInstallBubble(service_));
+ EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore));
}