Index: chrome/common/extensions/extension.h |
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h |
index 9004094dfd5535d7f0a0b649d45581a6f4362a8d..216cd37364690d20edc653098ca8fdd902cc5493 100644 |
--- a/chrome/common/extensions/extension.h |
+++ b/chrome/common/extensions/extension.h |
@@ -25,7 +25,6 @@ |
#include "chrome/common/extensions/extension_icon_set.h" |
#include "chrome/common/extensions/manifest.h" |
#include "chrome/common/extensions/permissions/api_permission.h" |
-#include "chrome/common/extensions/permissions/api_permission_set.h" |
#include "chrome/common/extensions/permissions/permission_message.h" |
#include "chrome/common/extensions/user_script.h" |
#include "extensions/common/install_warning.h" |
@@ -53,6 +52,7 @@ FORWARD_DECLARE_TEST(TabStripModelTest, Apps); |
namespace extensions { |
struct ActionInfo; |
+class APIPermissionSet; |
class PermissionSet; |
// Represents a Chrome extension. |
@@ -529,6 +529,11 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
const PermissionSet* required_permission_set() const { |
return required_permission_set_.get(); |
} |
+ // Returns the temporary APIPermissionSet used in initialization. |
+ // (NULL after initialization is completed.) |
+ APIPermissionSet* initial_api_permissions() { |
+ return initial_api_permissions_.get(); |
+ } |
// Appends |new_warning[s]| to install_warnings_. |
void AddInstallWarning(const InstallWarning& new_warning); |
void AddInstallWarnings(const std::vector<InstallWarning>& new_warnings); |
@@ -642,8 +647,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
// The following are helpers for InitFromValue to load various features of the |
// extension from the manifest. |
- bool LoadAppIsolation(const APIPermissionSet& api_permissions, |
- string16* error); |
+ bool LoadAppIsolation(string16* error); |
bool LoadRequiredFeatures(string16* error); |
bool LoadName(string16* error); |
@@ -658,8 +662,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
bool LoadLaunchContainer(string16* error); |
bool LoadLaunchURL(string16* error); |
- bool LoadSharedFeatures(const APIPermissionSet& api_permissions, |
- string16* error); |
+ bool LoadSharedFeatures(string16* error); |
bool LoadDescription(string16* error); |
bool LoadManifestVersion(string16* error); |
bool LoadIcons(string16* error); |
@@ -671,22 +674,15 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
bool LoadOfflineEnabled(string16* error); |
bool LoadBackgroundScripts(string16* error); |
bool LoadBackgroundScripts(const std::string& key, string16* error); |
- bool LoadBackgroundPage(const APIPermissionSet& api_permissions, |
- string16* error); |
+ bool LoadBackgroundPage(string16* error); |
bool LoadBackgroundPage(const std::string& key, |
- const APIPermissionSet& api_permissions, |
string16* error); |
- bool LoadBackgroundPersistent( |
- const APIPermissionSet& api_permissions, |
- string16* error); |
- bool LoadBackgroundAllowJSAccess( |
- const APIPermissionSet& api_permissions, |
- string16* error); |
- bool LoadExtensionFeatures(APIPermissionSet* api_permissions, |
- string16* error); |
+ bool LoadBackgroundPersistent(string16* error); |
+ bool LoadBackgroundAllowJSAccess(string16* error); |
+ bool LoadExtensionFeatures(string16* error); |
bool LoadContentScripts(string16* error); |
bool LoadBrowserAction(string16* error); |
- bool LoadSystemIndicator(APIPermissionSet* api_permissions, string16* error); |
+ bool LoadSystemIndicator(string16* error); |
bool LoadTextToSpeechVoices(string16* error); |
bool LoadIncognitoMode(string16* error); |
bool LoadContentSecurityPolicy(string16* error); |
@@ -729,7 +725,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
// Checks whether the host |pattern| is allowed for this extension, given API |
// permissions |permissions|. |
bool CanSpecifyHostPermission(const URLPattern& pattern, |
- const APIPermissionSet& permissions) const; |
+ const APIPermissionSet& permissions) const; |
bool CheckMinimumChromeVersion(string16* error) const; |
@@ -777,6 +773,10 @@ class Extension : public base::RefCountedThreadSafe<Extension> { |
mutable base::Lock runtime_data_lock_; |
mutable RuntimeData runtime_data_; |
+ // The API permission set; used during extension initialization. |
+ // Cleared after permissions are finalized by SetActivePermissions. |
+ scoped_ptr<APIPermissionSet> initial_api_permissions_; |
+ |
// The set of permissions the extension can request at runtime. |
scoped_refptr<const PermissionSet> optional_permission_set_; |