Auto-acknowledge extensions with EXTERNAL_POLICY_DOWNLOAD location.

BUG=113855
TEST=added


Review URL: http://codereview.chromium.org/9464035

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123881 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index b5d25fa3..7197d63 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -2889,6 +2889,40 @@
   EXPECT_TRUE(service_->GetExtensionById(good_crx, false));
 }
 
+TEST_F(ExtensionServiceTest, ExternalExtensionAutoAcknowledgement) {
+  InitializeEmptyExtensionService();
+  set_extensions_enabled(true);
+
+  {
+    // Register and install an external extension.
+    MockExtensionProvider* provider =
+        new MockExtensionProvider(service_, Extension::EXTERNAL_PREF, 0);
+    AddMockExternalProvider(provider);
+    provider->UpdateOrAddExtension(good_crx, "1.0.0.0",
+                                   data_dir_.AppendASCII("good.crx"));
+  }
+  {
+    // Have policy force-install an extension.
+    MockExtensionProvider* provider =
+        new MockExtensionProvider(service_,
+                                  Extension::EXTERNAL_POLICY_DOWNLOAD);
+    AddMockExternalProvider(provider);
+    provider->UpdateOrAddExtension(page_action, "1.0.0.0",
+                                   data_dir_.AppendASCII("page_action.crx"));
+  }
+
+  // Providers are set up. Let them run.
+  service_->CheckForExternalUpdates();
+  loop_.RunAllPending();
+
+  ASSERT_EQ(2u, service_->extensions()->size());
+  EXPECT_TRUE(service_->GetExtensionById(good_crx, false));
+  EXPECT_TRUE(service_->GetExtensionById(page_action, false));
+  ExtensionPrefs* prefs = service_->extension_prefs();
+  ASSERT_TRUE(!prefs->IsExternalExtensionAcknowledged(good_crx));
+  ASSERT_TRUE(prefs->IsExternalExtensionAcknowledged(page_action));
+}
+
 // Tests disabling extensions
 TEST_F(ExtensionServiceTest, DisableExtension) {
   InitializeEmptyExtensionService();