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

Unified Diff: chrome/browser/ui/views/website_settings/permission_prompt_impl.cc

Issue 2258763002: Add a feature-controlled persistence checkbox to geolocation prompts on desktop Views platforms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission-infobardelegate-clean
Patch Set: Rebase, add dependent Created 4 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/ui/views/website_settings/permission_prompt_impl.cc
diff --git a/chrome/browser/ui/views/website_settings/permission_prompt_impl.cc b/chrome/browser/ui/views/website_settings/permission_prompt_impl.cc
index 5d24e00edf91a34ccdbf962a80a4ed3565fc2be3..a11aa3640292f3f11916aa10b5204aec62db30b7 100644
--- a/chrome/browser/ui/views/website_settings/permission_prompt_impl.cc
+++ b/chrome/browser/ui/views/website_settings/permission_prompt_impl.cc
@@ -179,6 +179,7 @@ class PermissionsBubbleDialogDelegateView
base::string16 display_origin_;
std::unique_ptr<PermissionMenuModel> menu_button_model_;
std::vector<PermissionCombobox*> customize_comboboxes_;
+ views::Checkbox* checkbox_;
DISALLOW_COPY_AND_ASSIGN(PermissionsBubbleDialogDelegateView);
};
@@ -188,7 +189,8 @@ PermissionsBubbleDialogDelegateView::PermissionsBubbleDialogDelegateView(
const std::vector<PermissionRequest*>& requests,
const std::vector<bool>& accept_state)
: owner_(owner),
- multiple_requests_(requests.size() > 1) {
+ multiple_requests_(requests.size() > 1),
+ checkbox_(nullptr) {
DCHECK(!requests.empty());
set_close_on_deactivate(false);
@@ -201,6 +203,7 @@ PermissionsBubbleDialogDelegateView::PermissionsBubbleDialogDelegateView(
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC);
ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
+ bool show_persistence_toggle = true;
for (size_t index = 0; index < requests.size(); index++) {
DCHECK(index < accept_state.size());
// The row is laid out containing a leading-aligned label area and a
@@ -237,6 +240,9 @@ PermissionsBubbleDialogDelegateView::PermissionsBubbleDialogDelegateView(
label_container->AddChildView(label);
row_layout->AddView(label_container);
+ // Only show the toggle if every request wants to show it.
+ show_persistence_toggle = show_persistence_toggle &&
+ requests[index]->ShouldShowPersistenceToggle();
if (requests.size() > 1) {
PermissionCombobox* combobox = new PermissionCombobox(
this, index, requests[index]->GetOrigin(),
@@ -247,6 +253,17 @@ PermissionsBubbleDialogDelegateView::PermissionsBubbleDialogDelegateView(
row_layout->AddView(new views::View());
}
+ // Run this once at the end of the loop over the requests.
+ if (index == (requests.size() - 1) && show_persistence_toggle) {
+ row_layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
+ row_layout->StartRow(0, 0);
+ checkbox_ = new views::Checkbox(
+ l10n_util::GetStringUTF16(IDS_PERMISSIONS_BUBBLE_PERSIST_TEXT));
+ checkbox_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ checkbox_->SetChecked(true);
+ row_layout->AddView(checkbox_);
+ }
raymes 2016/08/24 04:00:18 I'm no views expert so we should get someone with
dominickn 2016/08/24 06:30:57 Definitely - I didn't want to land this without a
+
AddChildView(row);
}
}
@@ -327,14 +344,20 @@ base::string16 PermissionsBubbleDialogDelegateView::GetDialogButtonLabel(
}
bool PermissionsBubbleDialogDelegateView::Cancel() {
- if (owner_)
+ if (owner_) {
+ bool persist = !checkbox_ || checkbox_->checked();
+ owner_->TogglePersist(persist);
owner_->Deny();
+ }
return true;
}
bool PermissionsBubbleDialogDelegateView::Accept() {
- if (owner_)
+ if (owner_) {
+ bool persist = !checkbox_ || checkbox_->checked();
+ owner_->TogglePersist(persist);
owner_->Accept();
+ }
return true;
}
@@ -346,7 +369,7 @@ bool PermissionsBubbleDialogDelegateView::Close() {
void PermissionsBubbleDialogDelegateView::PermissionSelectionChanged(
int index,
bool allowed) {
- owner_->Toggle(index, allowed);
+ owner_->ToggleAccept(index, allowed);
}
void PermissionsBubbleDialogDelegateView::UpdateAnchor(
@@ -446,11 +469,16 @@ void PermissionPromptImpl::Closing() {
delegate_->Closing();
}
-void PermissionPromptImpl::Toggle(int index, bool value) {
+void PermissionPromptImpl::ToggleAccept(int index, bool value) {
if (delegate_)
delegate_->ToggleAccept(index, value);
}
+void PermissionPromptImpl::TogglePersist(bool value) {
+ if (delegate_)
+ delegate_->TogglePersist(value);
+}
+
void PermissionPromptImpl::Accept() {
if (delegate_)
delegate_->Accept();

Powered by Google App Engine
This is Rietveld 408576698