| Index: chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
|
| diff --git a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
|
| index 2079a3dd24769b0459c18f78aa26bdcc38a1dee2..e6e87d2ba239169feae722d5a63114ae2a2b767e 100644
|
| --- a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
|
| +++ b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
|
| @@ -104,6 +104,7 @@ const int STYLED_LABEL_SECURITY_DETAILS = 1338;
|
| const int STYLED_LABEL_RESET_CERTIFICATE_DECISIONS = 1339;
|
| const int LINK_COOKIE_DIALOG = 1340;
|
| const int LINK_SITE_SETTINGS = 1341;
|
| +const int LINK_SHOW_ALL_PERMISSIONS = 1342;
|
|
|
| // The default, ui::kTitleFontSizeDelta, is too large for the website settings
|
| // bubble (e.g. +3). Use +1 to obtain a smaller font.
|
| @@ -402,6 +403,7 @@ WebsiteSettingsPopupView::WebsiteSettingsPopupView(
|
| cookies_view_(nullptr),
|
| cookie_dialog_link_(nullptr),
|
| permissions_view_(nullptr),
|
| + permission_link_(nullptr),
|
| weak_factory_(this) {
|
| g_shown_popup_type = POPUP_WEBSITE_SETTINGS;
|
| set_parent_window(parent_window);
|
| @@ -616,20 +618,12 @@ void WebsiteSettingsPopupView::SetCookieInfo(
|
| void WebsiteSettingsPopupView::SetPermissionInfo(
|
| const PermissionInfoList& permission_info_list,
|
| ChosenObjectInfoList chosen_object_info_list) {
|
| - // When a permission is changed, WebsiteSettings::OnSitePermissionChanged()
|
| - // calls this method with updated permissions. However, PermissionSelectorRow
|
| - // will have already updated its state, so it's already reflected in the UI.
|
| - // In addition, if a permission is set to the default setting, WebsiteSettings
|
| - // removes it from |permission_info_list|, but the button should remain.
|
| - if (permissions_view_)
|
| - return;
|
| + // Recreate the permissions view from the new info.
|
| + permissions_view_->RemoveAllChildViews(true);
|
|
|
| - permissions_view_ = new views::View();
|
| views::GridLayout* layout = new views::GridLayout(permissions_view_);
|
| permissions_view_->SetLayoutManager(layout);
|
|
|
| - site_settings_view_->AddChildView(permissions_view_);
|
| -
|
| const int content_column = 0;
|
| views::ColumnSet* column_set = layout->AddColumnSet(content_column);
|
| column_set->AddColumn(views::GridLayout::FILL,
|
| @@ -661,25 +655,17 @@ void WebsiteSettingsPopupView::SetPermissionInfo(
|
| }
|
|
|
| layout->Layout(permissions_view_);
|
| -
|
| - // Add site settings link.
|
| - views::Link* site_settings_link = new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_PAGE_INFO_SITE_SETTINGS_LINK));
|
| - site_settings_link->set_id(LINK_SITE_SETTINGS);
|
| - site_settings_link->set_listener(this);
|
| - views::View* link_section = new views::View();
|
| - const int kLinkMarginTop = 4;
|
| - link_section->SetLayoutManager(new views::BoxLayout(
|
| - views::BoxLayout::kHorizontal, 0, kLinkMarginTop, 0));
|
| - link_section->AddChildView(site_settings_link);
|
| - site_settings_view_->AddChildView(link_section);
|
| -
|
| SizeToContents();
|
| }
|
|
|
| void WebsiteSettingsPopupView::UpdatePermissionButton(
|
| WebsiteSettingsUI::VisiblePermissions visible_permissions) {
|
| - // TODO(crbug.com/657267)
|
| + permission_link_->SetText(GetPermissionButtonString(visible_permissions));
|
| + permission_link_->set_id(visible_permissions ==
|
| + WebsiteSettingsUI::VISIBLE_PERMISSIONS_ALL
|
| + ? LINK_SITE_SETTINGS
|
| + : LINK_SHOW_ALL_PERMISSIONS);
|
| + SizeToContents();
|
| }
|
|
|
| void WebsiteSettingsPopupView::SetIdentityInfo(
|
| @@ -715,6 +701,23 @@ views::View* WebsiteSettingsPopupView::CreateSiteSettingsView(int side_margin) {
|
| cookies_view_ = new views::View();
|
| site_settings_view->AddChildView(cookies_view_);
|
|
|
| + permissions_view_ = new views::View();
|
| + site_settings_view->AddChildView(permissions_view_);
|
| +
|
| + // Create permission link with wrapper, and keep a member reference to the
|
| + // link itself so we can change the title/behaviour later.
|
| + base::string16 permission_link_default_string =
|
| + GetPermissionButtonString(WebsiteSettingsUI::VISIBLE_PERMISSIONS_ALL);
|
| + permission_link_ = new views::Link(permission_link_default_string);
|
| + permission_link_->set_id(LINK_SITE_SETTINGS);
|
| + permission_link_->set_listener(this);
|
| + const int kLinkMarginTop = 4;
|
| + views::View* permission_link_wrapper = new views::View();
|
| + permission_link_wrapper->SetLayoutManager(new views::BoxLayout(
|
| + views::BoxLayout::kHorizontal, 0, kLinkMarginTop, 0));
|
| + permission_link_wrapper->AddChildView(permission_link_);
|
| + site_settings_view->AddChildView(permission_link_wrapper);
|
| +
|
| return site_settings_view;
|
| }
|
|
|
| @@ -723,6 +726,13 @@ void WebsiteSettingsPopupView::HandleLinkClickedAsync(views::Link* source) {
|
| if (web_contents() == nullptr || web_contents()->IsBeingDestroyed())
|
| return;
|
| switch (source->id()) {
|
| + case LINK_SHOW_ALL_PERMISSIONS:
|
| + // TODO(crbug.com/695670): Place this code in a cross-platform location.
|
| + DCHECK(presenter_);
|
| + presenter_->PresentAllSitePermissions();
|
| + presenter_->RecordWebsiteSettingsAction(
|
| + WebsiteSettings::WEBSITE_SETTINGS_SHOW_ALL_PERMISSIONS_PRESSED);
|
| + break;
|
| case LINK_SITE_SETTINGS:
|
| // TODO(crbug.com/655876): This opens the general Content Settings pane,
|
| // which is OK for now. But on Android, it opens a page specific to a
|
|
|