Index: chrome/browser/extensions/extension_install_prompt.h |
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h |
index 54fa47ee81ca1b27736357dbdec3facab34f05e3..655962ea69c09af0e7b29d9f4d37e7f689321076 100644 |
--- a/chrome/browser/extensions/extension_install_prompt.h |
+++ b/chrome/browser/extensions/extension_install_prompt.h |
@@ -80,9 +80,16 @@ class ExtensionInstallPrompt |
enum DetailsType { |
PERMISSIONS_DETAILS = 0, |
+ WITHHELD_PERMISSIONS_DETAILS, |
RETAINED_FILES_DETAILS, |
}; |
+ enum PermissionsType { |
+ REGULAR_PERMISSIONS = 0, |
+ WITHHELD_PERMISSIONS, |
+ ALL_PERMISSIONS, |
+ }; |
+ |
static std::string PromptTypeToString(PromptType type); |
// Extra information needed to display an installation or uninstallation |
@@ -96,9 +103,11 @@ class ExtensionInstallPrompt |
explicit Prompt(PromptType type); |
// Sets the permission list for this prompt. |
- void SetPermissions(const std::vector<base::string16>& permissions); |
+ void SetPermissions(const std::vector<base::string16>& permissions, |
+ PermissionsType permissions_type); |
// Sets the permission list details for this prompt. |
- void SetPermissionsDetails(const std::vector<base::string16>& details); |
+ void SetPermissionsDetails(const std::vector<base::string16>& details, |
+ PermissionsType permissions_type); |
void SetIsShowingDetails(DetailsType type, |
size_t index, |
bool is_showing_details); |
@@ -119,7 +128,8 @@ class ExtensionInstallPrompt |
base::string16 GetAcceptButtonLabel() const; |
bool HasAbortButtonLabel() const; |
base::string16 GetAbortButtonLabel() const; |
- base::string16 GetPermissionsHeading() const; |
+ base::string16 GetPermissionsHeading( |
+ PermissionsType permissions_type) const; |
base::string16 GetRetainedFilesHeading() const; |
bool ShouldShowPermissions() const; |
@@ -136,10 +146,13 @@ class ExtensionInstallPrompt |
void AppendRatingStars(StarAppender appender, void* data) const; |
base::string16 GetRatingCount() const; |
base::string16 GetUserCount() const; |
- size_t GetPermissionCount() const; |
- size_t GetPermissionsDetailsCount() const; |
- base::string16 GetPermission(size_t index) const; |
- base::string16 GetPermissionsDetails(size_t index) const; |
+ size_t GetPermissionCount(PermissionsType permissions_type) const; |
+ size_t GetPermissionsDetailsCount(PermissionsType permissions_type) const; |
+ base::string16 GetPermission(size_t index, |
+ PermissionsType permissions_type) const; |
+ base::string16 GetPermissionsDetails( |
+ size_t index, |
+ PermissionsType permissions_type) const; |
bool GetIsShowingDetails(DetailsType type, size_t index) const; |
size_t GetRetainedFileCount() const; |
base::string16 GetRetainedFile(size_t index) const; |
@@ -176,6 +189,15 @@ class ExtensionInstallPrompt |
private: |
friend class base::RefCountedThreadSafe<Prompt>; |
+ struct InstallPromptPermissions { |
+ InstallPromptPermissions(); |
+ ~InstallPromptPermissions(); |
+ |
+ std::vector<base::string16> permissions; |
+ std::vector<base::string16> details; |
+ std::vector<bool> is_showing_details; |
+ }; |
+ |
virtual ~Prompt(); |
bool ShouldDisplayRevokeFilesButton() const; |
@@ -184,9 +206,10 @@ class ExtensionInstallPrompt |
// Permissions that are being requested (may not be all of an extension's |
// permissions if only additional ones are being requested) |
- std::vector<base::string16> permissions_; |
- std::vector<base::string16> details_; |
- std::vector<bool> is_showing_details_for_permissions_; |
+ InstallPromptPermissions prompt_permissions_; |
+ // Permissions that will be withheld upon install. |
+ InstallPromptPermissions withheld_prompt_permissions_; |
+ |
bool is_showing_details_for_retained_files_; |
// The extension or bundle being installed. |
@@ -405,8 +428,9 @@ class ExtensionInstallPrompt |
// The bundle we are showing the UI for, if type BUNDLE_INSTALL_PROMPT. |
const extensions::BundleInstaller* bundle_; |
- // The permissions being prompted for. |
- scoped_refptr<const extensions::PermissionSet> permissions_; |
+ // A custom set of permissions to show in the install prompt instead of the |
+ // extension's active permissions. |
+ scoped_refptr<const extensions::PermissionSet> custom_permissions_; |
// The object responsible for doing the UI specific actions. |
scoped_ptr<ExtensionInstallUI> install_ui_; |