| 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..707cfaf63a3c34e53e50ca0559a1c272104b2fbf 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();
|
| }
|
|
|
| @@ -47,11 +55,46 @@ TEST(ExtensionInstallPromptUnittest, PromptShowsPermissionWarnings) {
|
| ExtensionInstallPrompt prompt(NULL /* no web contents in this test */);
|
| base::RunLoop run_loop;
|
| prompt.set_callback_for_test(base::Bind(&VerifyPromptPermissionsCallback,
|
| - run_loop.QuitClosure()));
|
| + 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
|
|
|