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));
 }