Don't display external-extension alert for hosted apps.
BUG=115918
TEST=added unit tests
Review URL: https://chromiumcodereview.appspot.com/9477014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124215 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 7197d63..0880121a 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -31,6 +31,7 @@
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_creator.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
+#include "chrome/browser/extensions/extension_global_error.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_special_storage_policy.h"
#include "chrome/browser/extensions/extension_sync_data.h"
@@ -98,6 +99,7 @@
const char* const good1 = "hpiknbiabeeppbpihjehijgoemciehgk";
const char* const good2 = "bjafgdebaacbbbecmhlhpofkepfkgcpa";
const char* const good_crx = "ldnnhddmnhbkjipkidpdiheffobcpfmf";
+const char* const hosted_app = "kbmnembihfiondgfjekmnmcbddelicoi";
const char* const page_action = "obcimlgaoabeegjmmpldobjndiealpln";
const char* const theme_crx = "iamefpfkojoapidjnbafmgkgncegbkad";
const char* const theme2_crx = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf";
@@ -4826,3 +4828,42 @@
// because the extension is already installed.
ASSERT_FALSE(AddPendingSyncInstall());
}
+
+TEST_F(ExtensionServiceTest, AlertableExtensionHappyPath) {
+ InitializeEmptyExtensionService();
+ scoped_ptr<ExtensionGlobalError> extension_global_error(
+ new ExtensionGlobalError(service_));
+ MockExtensionProvider* provider =
+ new MockExtensionProvider(service_,
+ Extension::EXTERNAL_PREF,
+ 0);
+ AddMockExternalProvider(provider);
+
+ // Should return false, meaning there aren't any extensions that the user
+ // needs to know about.
+ ASSERT_FALSE(service_->PopulateExtensionGlobalError(
+ extension_global_error.get()));
+
+ // This is a normal extension, installed normally.
+ // This should NOT trigger an alert.
+ set_extensions_enabled(true);
+ FilePath path = data_dir_.AppendASCII("good.crx");
+ InstallCRX(path, INSTALL_NEW);
+
+ // Another normal extension, but installed externally.
+ // This SHOULD trigger an alert.
+ provider->UpdateOrAddExtension(page_action, "1.0.0.0",
+ data_dir_.AppendASCII("page_action.crx"));
+
+ // A hosted app, installed externally.
+ // This should NOT trigger an alert.
+ provider->UpdateOrAddExtension(hosted_app, "1.0.0.0",
+ data_dir_.AppendASCII("hosted_app.crx"));
+
+ service_->CheckForExternalUpdates();
+ loop_.RunAllPending();
+
+ ASSERT_TRUE(service_->PopulateExtensionGlobalError(
+ extension_global_error.get()));
+ ASSERT_EQ(1u, extension_global_error->get_external_extension_ids()->size());
+}