Index: chrome/browser/extensions/extension_install_prompt_unittest.cc |
diff --git a/chrome/browser/extensions/extension_install_prompt_unittest.cc b/chrome/browser/extensions/extension_install_prompt_unittest.cc |
index d43e46b9603a828422c711e0c20d20242b6122aa..3150737fd31a562fdb4b3a2cc2e1c2a61983659e 100644 |
--- a/chrome/browser/extensions/extension_install_prompt_unittest.cc |
+++ b/chrome/browser/extensions/extension_install_prompt_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "extensions/common/extension.h" |
#include "extensions/common/extension_builder.h" |
+#include "extensions/common/feature_switch.h" |
#include "extensions/common/permissions/api_permission.h" |
#include "extensions/common/permissions/api_permission_set.h" |
#include "extensions/common/permissions/manifest_permission_set.h" |
@@ -21,11 +22,18 @@ namespace extensions { |
void VerifyPromptPermissionsCallback( |
const base::Closure& quit_closure, |
+ size_t regular_permissions_count, |
+ size_t withheld_permissions_count, |
const ExtensionInstallPrompt::ShowParams& params, |
ExtensionInstallPrompt::Delegate* delegate, |
scoped_refptr<ExtensionInstallPrompt::Prompt> install_prompt) { |
ASSERT_TRUE(install_prompt.get()); |
- EXPECT_EQ(1u, install_prompt->GetPermissionCount()); |
+ EXPECT_EQ(regular_permissions_count, |
+ install_prompt->GetPermissionCount( |
+ ExtensionInstallPrompt::REGULAR_PERMISSIONS)); |
+ EXPECT_EQ(withheld_permissions_count, |
+ install_prompt->GetPermissionCount( |
+ ExtensionInstallPrompt::WITHHELD_PERMISSIONS)); |
quit_closure.Run(); |
} |
@@ -46,12 +54,48 @@ TEST(ExtensionInstallPromptUnittest, PromptShowsPermissionWarnings) { |
.Set("description", "Random Ext")).Build(); |
ExtensionInstallPrompt prompt(NULL /* no web contents in this test */); |
base::RunLoop run_loop; |
- prompt.set_callback_for_test(base::Bind(&VerifyPromptPermissionsCallback, |
- run_loop.QuitClosure())); |
+ prompt.set_callback_for_test( |
+ base::Bind(&VerifyPromptPermissionsCallback, |
+ run_loop.QuitClosure(), |
+ 1u, // |regular_permissions_count|. |
+ 0u)); // |withheld_permissions_count|. |
prompt.ConfirmPermissions(NULL, // no delegate |
extension.get(), |
permission_set.get()); |
run_loop.Run(); |
} |
+TEST(ExtensionInstallPromptUnittest, PromptShowsWithheldPermissions) { |
+ content::TestBrowserThreadBundle thread_bundle; |
+ |
+ // Enable consent flag so that <all_hosts> permissions get withheld. |
+ FeatureSwitch::ScopedOverride enable_scripts_switch( |
+ FeatureSwitch::scripts_require_action(), true); |
+ |
+ ListBuilder permissions; |
+ permissions.Append("http://*/*"); |
+ permissions.Append("http://www.google.com/"); |
+ permissions.Append("tabs"); |
+ scoped_refptr<const Extension> extension = |
+ ExtensionBuilder().SetManifest( |
+ DictionaryBuilder().Set("name", "foo") |
+ .Set("version", "1.0") |
+ .Set("manifest_version", 2) |
+ .Set("description", "Random Ext") |
+ .Set("permissions", permissions)).Build(); |
+ ExtensionInstallPrompt prompt(NULL /* no web contents in this test */); |
+ base::RunLoop run_loop; |
+ |
+ // We expect <all_hosts> to be withheld, but http://www.google.com/ and tabs |
+ // permissions should be granted as regular permissions. |
+ prompt.ConfirmInstall( |
+ NULL, |
+ extension.get(), |
+ base::Bind(&VerifyPromptPermissionsCallback, |
+ run_loop.QuitClosure(), |
+ 2u, // |regular_permissions_count|. |
+ 1u)); // |withheld_permissions_count|. |
+ run_loop.Run(); |
+} |
+ |
} // namespace extensions |