Chromium Code Reviews| 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 f5d7232f4827c8ec4fb22a083c491189fb46eb11..8e9682b2e880522a3b6f8821c97a8d798997e7b7 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 |
| @@ -474,35 +474,6 @@ gfx::Size WebsiteSettingsPopupView::GetPreferredSize() const { |
| void WebsiteSettingsPopupView::SetCookieInfo( |
| const CookieInfoList& cookie_info_list) { |
| - site_data_content_->RemoveAllChildViews(true); |
| - |
| - views::GridLayout* layout = new views::GridLayout(site_data_content_); |
| - site_data_content_->SetLayoutManager(layout); |
| - |
| - const int site_data_content_column = 0; |
| - views::ColumnSet* column_set = |
| - layout->AddColumnSet(site_data_content_column); |
| - column_set->AddColumn(views::GridLayout::FILL, |
| - views::GridLayout::FILL, |
| - 1, |
| - views::GridLayout::FIXED, |
| - kSiteDataIconColumnWidth, |
| - 0); |
| - column_set->AddPaddingColumn(0, kIconMarginLeft); |
| - column_set->AddColumn(views::GridLayout::FILL, |
| - views::GridLayout::FILL, |
| - 1, |
| - views::GridLayout::USE_PREF, |
| - 0, |
| - 0); |
| - // No padding. This third column is for |third_party_label_text| (see below), |
| - // and the text needs to flow naturally from the |first_party_label_text| |
| - // link. |
| - column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, |
| - views::GridLayout::USE_PREF, 0, 0); |
| - |
| - layout->AddPaddingRow(1, 5); |
| - |
| // |cookie_info_list| should only ever have 2 items: first- and third-party |
| // cookies. |
| DCHECK_EQ(cookie_info_list.size(), 2u); |
| @@ -520,26 +491,55 @@ void WebsiteSettingsPopupView::SetCookieInfo( |
| } |
| } |
| - cookie_dialog_link_ = new views::Link(first_party_label_text); |
| - cookie_dialog_link_->set_listener(this); |
| - |
| - layout->StartRow(1, site_data_content_column); |
| - WebsiteSettingsUI::PermissionInfo info; |
| - info.type = CONTENT_SETTINGS_TYPE_COOKIES; |
| - info.setting = CONTENT_SETTING_ALLOW; |
| - views::ImageView* icon = new views::ImageView(); |
| - const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(info); |
| - icon->SetImage(image.ToImageSkia()); |
| - layout->AddView(icon, 1, 1, views::GridLayout::CENTER, |
| - views::GridLayout::CENTER); |
| - layout->AddView(cookie_dialog_link_, 1, 1, views::GridLayout::CENTER, |
| - views::GridLayout::CENTER); |
| - base::string16 comma = base::ASCIIToUTF16(", "); |
| + if (!cookie_dialog_link_) { |
| + cookie_dialog_link_ = new views::Link(first_party_label_text); |
| + cookie_dialog_link_->set_listener(this); |
| + } else { |
| + cookie_dialog_link_->SetText(first_party_label_text); |
|
felt
2015/09/28 20:47:40
So this has the effect of updating the text, even
palmer
2015/09/28 21:02:51
That's right. Previously, we blew away all the chi
|
| + } |
| - layout->AddView(new views::Label(comma + third_party_label_text), 1, 1, |
| - views::GridLayout::LEADING, views::GridLayout::CENTER); |
| + views::GridLayout* layout = |
| + static_cast<views::GridLayout*>(site_data_content_->GetLayoutManager()); |
| + if (!layout) { |
| + layout = new views::GridLayout(site_data_content_); |
| + site_data_content_->SetLayoutManager(layout); |
| + |
| + const int site_data_content_column = 0; |
| + views::ColumnSet* column_set = |
| + layout->AddColumnSet(site_data_content_column); |
| + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, |
| + views::GridLayout::FIXED, kSiteDataIconColumnWidth, |
| + 0); |
| + column_set->AddPaddingColumn(0, kIconMarginLeft); |
| + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, |
| + views::GridLayout::USE_PREF, 0, 0); |
| + // No padding. This third column is for |third_party_label_text| (see |
| + // below), |
| + // and the text needs to flow naturally from the |first_party_label_text| |
| + // link. |
| + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, |
| + views::GridLayout::USE_PREF, 0, 0); |
| + |
| + layout->AddPaddingRow(1, 5); |
| + |
| + layout->StartRow(1, site_data_content_column); |
| + WebsiteSettingsUI::PermissionInfo info; |
| + info.type = CONTENT_SETTINGS_TYPE_COOKIES; |
| + info.setting = CONTENT_SETTING_ALLOW; |
| + views::ImageView* icon = new views::ImageView(); |
| + const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(info); |
| + icon->SetImage(image.ToImageSkia()); |
| + layout->AddView(icon, 1, 1, views::GridLayout::CENTER, |
| + views::GridLayout::CENTER); |
| + layout->AddView(cookie_dialog_link_, 1, 1, views::GridLayout::CENTER, |
| + views::GridLayout::CENTER); |
| + base::string16 comma = base::ASCIIToUTF16(", "); |
| - layout->AddPaddingRow(1, 6); |
| + layout->AddView(new views::Label(comma + third_party_label_text), 1, 1, |
| + views::GridLayout::LEADING, views::GridLayout::CENTER); |
| + |
| + layout->AddPaddingRow(1, 6); |
| + } |
| layout->Layout(site_data_content_); |
| SizeToContents(); |