Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1446)

Unified Diff: chrome/browser/extensions/extension_install_prompt.cc

Issue 501273002: Update extension install prompt to reflect withheld permissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added withheld permissions to install prompt Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_install_prompt.cc
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index dec1aa54f3b756b3d1ba147b74b8179e6c912cf0..c0810241116cb5e0d8572b5207c596169e58c435 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/extensions/bundle_installer.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extension_util.h"
+#include "chrome/browser/extensions/permissions_updater.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
@@ -219,16 +220,28 @@ ExtensionInstallPrompt::Prompt::~Prompt() {
}
void ExtensionInstallPrompt::Prompt::SetPermissions(
- const std::vector<base::string16>& permissions) {
- permissions_ = permissions;
+ const std::vector<base::string16>& permissions,
+ bool withheld) {
gpdavis 2014/08/29 01:12:16 Figured I'd add a parameter to these two methods,
+ if (withheld)
+ withheld_permissions_ = permissions;
+ else
+ permissions_ = permissions;
}
void ExtensionInstallPrompt::Prompt::SetPermissionsDetails(
- const std::vector<base::string16>& details) {
- details_ = details;
- is_showing_details_for_permissions_.clear();
- for (size_t i = 0; i < details.size(); ++i)
- is_showing_details_for_permissions_.push_back(false);
+ const std::vector<base::string16>& details,
+ bool withheld) {
+ if (withheld) {
+ withheld_details_ = details;
+ is_showing_details_for_withheld_permissions_.clear();
+ for (size_t i = 0; i < details.size(); ++i)
+ is_showing_details_for_withheld_permissions_.push_back(false);
+ } else {
+ details_ = details;
+ is_showing_details_for_permissions_.clear();
+ for (size_t i = 0; i < details.size(); ++i)
+ is_showing_details_for_permissions_.push_back(false);
+ }
}
void ExtensionInstallPrompt::Prompt::SetIsShowingDetails(
@@ -239,6 +252,9 @@ void ExtensionInstallPrompt::Prompt::SetIsShowingDetails(
case PERMISSIONS_DETAILS:
is_showing_details_for_permissions_[index] = is_showing_details;
break;
+ case WITHHELD_PERMISSIONS_DETAILS:
gpdavis 2014/08/29 01:12:16 This is necessary for the cocoa implementation, wh
+ is_showing_details_for_withheld_permissions_[index] = is_showing_details;
+ break;
case RETAINED_FILES_DETAILS:
is_showing_details_for_retained_files_ = is_showing_details;
break;
@@ -301,6 +317,10 @@ base::string16 ExtensionInstallPrompt::Prompt::GetHeading() const {
}
}
+base::string16 ExtensionInstallPrompt::Prompt::GetWithheldHeading() const {
+ return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WITHHELD);
+}
+
int ExtensionInstallPrompt::Prompt::GetDialogButtons() const {
if (type_ == POST_INSTALL_PERMISSIONS_PROMPT &&
ShouldDisplayRevokeFilesButton()) {
@@ -443,12 +463,36 @@ base::string16 ExtensionInstallPrompt::Prompt::GetPermissionsDetails(
return details_[index];
}
+size_t ExtensionInstallPrompt::Prompt::GetWithheldPermissionCount() const {
+ return withheld_permissions_.size();
+}
+
+size_t ExtensionInstallPrompt::Prompt::GetWithheldPermissionsDetailsCount()
+ const {
+ return withheld_details_.size();
+}
+
+base::string16 ExtensionInstallPrompt::Prompt::GetWithheldPermission(
+ size_t index) const {
+ CHECK_LT(index, withheld_permissions_.size());
+ return withheld_permissions_[index];
+}
+
+base::string16 ExtensionInstallPrompt::Prompt::GetWithheldPermissionsDetails(
+ size_t index) const {
+ CHECK_LT(index, withheld_details_.size());
+ return withheld_details_[index];
+}
+
bool ExtensionInstallPrompt::Prompt::GetIsShowingDetails(
DetailsType type, size_t index) const {
switch (type) {
case PERMISSIONS_DETAILS:
CHECK_LT(index, is_showing_details_for_permissions_.size());
return is_showing_details_for_permissions_[index];
+ case WITHHELD_PERMISSIONS_DETAILS:
+ CHECK_LT(index, is_showing_details_for_withheld_permissions_.size());
+ return is_showing_details_for_withheld_permissions_[index];
case RETAINED_FILES_DETAILS:
return is_showing_details_for_retained_files_;
}
@@ -747,10 +791,32 @@ void ExtensionInstallPrompt::ShowConfirmation() {
extension_ ? extension_->GetType() : Manifest::TYPE_UNKNOWN;
const extensions::PermissionMessageProvider* message_provider =
extensions::PermissionMessageProvider::Get();
+
+ // Initialize permissions so that withheld permissions don't end up in the
+ // install prompt.
+ if (extension_) {
+ extensions::PermissionsUpdater(install_ui_->profile())
+ .InitializePermissions(
+ extension_, extensions::PermissionsUpdater::INIT_FLAG_TRANSIENT);
+ permissions_ = extension_->permissions_data()->active_permissions();
+ }
prompt_->SetPermissions(
- message_provider->GetWarningMessages(permissions_.get(), type));
+ message_provider->GetWarningMessages(permissions_.get(), type),
+ false); // withheld
prompt_->SetPermissionsDetails(
- message_provider->GetWarningMessagesDetails(permissions_.get(), type));
+ message_provider->GetWarningMessagesDetails(permissions_.get(), type),
+ false); // withheld
+
+ scoped_refptr<const extensions::PermissionSet> withheld =
+ extension_->permissions_data()->withheld_permissions();
+ if (!withheld->IsEmpty()) {
+ prompt_->SetPermissions(
+ message_provider->GetWarningMessages(withheld.get(), type),
+ true); // withheld
+ prompt_->SetPermissionsDetails(
+ message_provider->GetWarningMessagesDetails(withheld.get(), type),
+ true); // withheld
+ }
}
switch (prompt_->type()) {

Powered by Google App Engine
This is Rietveld 408576698