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. |