| Index: extensions/common/permissions/permissions_data.cc
|
| diff --git a/extensions/common/permissions/permissions_data.cc b/extensions/common/permissions/permissions_data.cc
|
| index 693a39e2d32ba4f448a00521fa40dc526d670da8..2b33f0c366c4aa0a54dd4fbe4ddc45c686b737c7 100644
|
| --- a/extensions/common/permissions/permissions_data.cc
|
| +++ b/extensions/common/permissions/permissions_data.cc
|
| @@ -10,6 +10,7 @@
|
| #include "extensions/common/error_utils.h"
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/extensions_client.h"
|
| +#include "extensions/common/manifest.h"
|
| #include "extensions/common/manifest_constants.h"
|
| #include "extensions/common/manifest_handlers/permissions_parser.h"
|
| #include "extensions/common/permissions/permission_message_provider.h"
|
| @@ -65,6 +66,21 @@ bool PermissionsData::CanExecuteScriptEverywhere(const Extension* extension) {
|
| whitelist.end();
|
| }
|
|
|
| +// static
|
| +bool PermissionsData::ScriptsMayRequireActionForExtension(
|
| + const Extension* extension,
|
| + const PermissionSet* permissions) {
|
| + // An extension may require user action to execute scripts iff the extension
|
| + // shows up in chrome:extensions (so the user can grant withheld permissions),
|
| + // is not part of chrome or corporate policy, not on the scripting whitelist,
|
| + // and requires enough permissions that we should withhold them.
|
| + return extension->ShouldDisplayInExtensionSettings() &&
|
| + !Manifest::IsPolicyLocation(extension->location()) &&
|
| + !Manifest::IsComponentLocation(extension->location()) &&
|
| + !CanExecuteScriptEverywhere(extension) &&
|
| + permissions->ShouldWarnAllHosts();
|
| +}
|
| +
|
| bool PermissionsData::ShouldSkipPermissionWarnings(
|
| const std::string& extension_id) {
|
| // See http://b/4946060 for more details.
|
|
|