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

Side by Side Diff: chrome/browser/ui/views/website_settings/permission_selector_row.cc

Issue 2272793007: Material Page Info (Views, 1/3): Rename {ChosenObject, PermissionSelector}View classes to {...}Row. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/website_settings/permission_selector_view.h" 5 #include "chrome/browser/ui/views/website_settings/permission_selector_row.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h " 10 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h "
11 #include "chrome/browser/ui/website_settings/permission_menu_model.h" 11 #include "chrome/browser/ui/website_settings/permission_menu_model.h"
12 #include "chrome/browser/ui/website_settings/website_settings_ui.h" 12 #include "chrome/browser/ui/website_settings/website_settings_ui.h"
13 #include "chrome/grit/generated_resources.h" 13 #include "chrome/grit/generated_resources.h"
14 #include "ui/accessibility/ax_view_state.h" 14 #include "ui/accessibility/ax_view_state.h"
15 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
(...skipping 30 matching lines...) Expand all
46 // Overridden from views::View. 46 // Overridden from views::View.
47 void GetAccessibleState(ui::AXViewState* state) override; 47 void GetAccessibleState(ui::AXViewState* state) override;
48 void OnNativeThemeChanged(const ui::NativeTheme* theme) override; 48 void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
49 49
50 private: 50 private:
51 // Overridden from views::MenuButtonListener. 51 // Overridden from views::MenuButtonListener.
52 void OnMenuButtonClicked(views::MenuButton* source, 52 void OnMenuButtonClicked(views::MenuButton* source,
53 const gfx::Point& point, 53 const gfx::Point& point,
54 const ui::Event* event) override; 54 const ui::Event* event) override;
55 55
56 PermissionMenuModel* menu_model_; // Owned by |PermissionSelectorView|. 56 PermissionMenuModel* menu_model_; // Owned by |PermissionSelectorRow|.
57 std::unique_ptr<views::MenuRunner> menu_runner_; 57 std::unique_ptr<views::MenuRunner> menu_runner_;
58 58
59 bool is_rtl_display_; 59 bool is_rtl_display_;
60 60
61 DISALLOW_COPY_AND_ASSIGN(PermissionMenuButton); 61 DISALLOW_COPY_AND_ASSIGN(PermissionMenuButton);
62 }; 62 };
63 63
64 /////////////////////////////////////////////////////////////////////////////// 64 ///////////////////////////////////////////////////////////////////////////////
65 // PermissionMenuButton 65 // PermissionMenuButton
66 /////////////////////////////////////////////////////////////////////////////// 66 ///////////////////////////////////////////////////////////////////////////////
67 67
68 PermissionMenuButton::PermissionMenuButton(const base::string16& text, 68 PermissionMenuButton::PermissionMenuButton(const base::string16& text,
69 PermissionMenuModel* model, 69 PermissionMenuModel* model,
70 bool show_menu_marker) 70 bool show_menu_marker)
71 : MenuButton(text, this, show_menu_marker), menu_model_(model) { 71 : MenuButton(text, this, show_menu_marker), menu_model_(model) {
72 // Update the themed border before the NativeTheme is applied. Usually this 72 // Update the themed border before the NativeTheme is applied. Usually this
73 // happens in a call to LabelButton::OnNativeThemeChanged(). However, if 73 // happens in a call to LabelButton::OnNativeThemeChanged(). However, if
74 // PermissionMenuButton called that from its override, the NativeTheme would 74 // PermissionMenuButton called that from its override, the NativeTheme would
75 // be available, and the button would get native GTK styling on Linux. 75 // be available, and the button would get native GTK styling on Linux.
76 UpdateThemedBorder(); 76 UpdateThemedBorder();
77 77
78 SetFocusForPlatform(); 78 SetFocusForPlatform();
79 set_request_focus_on_press(true); 79 set_request_focus_on_press(true);
80 is_rtl_display_ = 80 is_rtl_display_ =
81 base::i18n::RIGHT_TO_LEFT == base::i18n::GetStringDirection(text); 81 base::i18n::RIGHT_TO_LEFT == base::i18n::GetStringDirection(text);
82 } 82 }
83 83
84 PermissionMenuButton::~PermissionMenuButton() { 84 PermissionMenuButton::~PermissionMenuButton() {}
85 }
86 85
87 void PermissionMenuButton::GetAccessibleState(ui::AXViewState* state) { 86 void PermissionMenuButton::GetAccessibleState(ui::AXViewState* state) {
88 MenuButton::GetAccessibleState(state); 87 MenuButton::GetAccessibleState(state);
89 state->value = GetText(); 88 state->value = GetText();
90 } 89 }
91 90
92 void PermissionMenuButton::OnNativeThemeChanged(const ui::NativeTheme* theme) { 91 void PermissionMenuButton::OnNativeThemeChanged(const ui::NativeTheme* theme) {
93 SetTextColor(views::Button::STATE_NORMAL, theme->GetSystemColor( 92 SetTextColor(
94 ui::NativeTheme::kColorId_LabelEnabledColor)); 93 views::Button::STATE_NORMAL,
95 SetTextColor(views::Button::STATE_HOVERED, theme->GetSystemColor( 94 theme->GetSystemColor(ui::NativeTheme::kColorId_LabelEnabledColor));
96 ui::NativeTheme::kColorId_LabelEnabledColor)); 95 SetTextColor(
97 SetTextColor(views::Button::STATE_DISABLED, theme->GetSystemColor( 96 views::Button::STATE_HOVERED,
98 ui::NativeTheme::kColorId_LabelDisabledColor)); 97 theme->GetSystemColor(ui::NativeTheme::kColorId_LabelEnabledColor));
98 SetTextColor(
99 views::Button::STATE_DISABLED,
100 theme->GetSystemColor(ui::NativeTheme::kColorId_LabelDisabledColor));
99 } 101 }
100 102
101 void PermissionMenuButton::OnMenuButtonClicked(views::MenuButton* source, 103 void PermissionMenuButton::OnMenuButtonClicked(views::MenuButton* source,
102 const gfx::Point& point, 104 const gfx::Point& point,
103 const ui::Event* event) { 105 const ui::Event* event) {
104 menu_runner_.reset(new views::MenuRunner( 106 menu_runner_.reset(new views::MenuRunner(
105 menu_model_, 107 menu_model_,
106 views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::ASYNC)); 108 views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::ASYNC));
107 109
108 gfx::Point p(point); 110 gfx::Point p(point);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 Combobox::OnPaintBorder(canvas); 218 Combobox::OnPaintBorder(canvas);
217 } 219 }
218 220
219 void PermissionCombobox::OnPerformAction(Combobox* combobox) { 221 void PermissionCombobox::OnPerformAction(Combobox* combobox) {
220 model_->OnPerformAction(combobox->selected_index()); 222 model_->OnPerformAction(combobox->selected_index());
221 } 223 }
222 224
223 } // namespace internal 225 } // namespace internal
224 226
225 /////////////////////////////////////////////////////////////////////////////// 227 ///////////////////////////////////////////////////////////////////////////////
226 // PermissionSelectorView 228 // PermissionSelectorRow
227 /////////////////////////////////////////////////////////////////////////////// 229 ///////////////////////////////////////////////////////////////////////////////
228 230
229 PermissionSelectorView::PermissionSelectorView( 231 PermissionSelectorRow::PermissionSelectorRow(
230 const GURL& url, 232 const GURL& url,
231 const WebsiteSettingsUI::PermissionInfo& permission) 233 const WebsiteSettingsUI::PermissionInfo& permission)
232 : icon_(NULL), menu_button_(NULL), combobox_(NULL) { 234 : icon_(NULL), menu_button_(NULL), combobox_(NULL) {
233 views::GridLayout* layout = new views::GridLayout(this); 235 views::GridLayout* layout = new views::GridLayout(this);
234 SetLayoutManager(layout); 236 SetLayoutManager(layout);
235 const int column_set_id = 0; 237 const int column_set_id = 0;
236 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id); 238 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id);
237 column_set->AddColumn(views::GridLayout::FILL, 239 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
238 views::GridLayout::FILL, 240 views::GridLayout::FIXED, kPermissionIconColumnWidth,
239 1,
240 views::GridLayout::FIXED,
241 kPermissionIconColumnWidth,
242 0); 241 0);
243 column_set->AddPaddingColumn(0, kPermissionIconMarginLeft); 242 column_set->AddPaddingColumn(0, kPermissionIconMarginLeft);
244 column_set->AddColumn(views::GridLayout::FILL, 243 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
245 views::GridLayout::FILL, 244 views::GridLayout::USE_PREF, 0, 0);
246 1, 245 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
247 views::GridLayout::USE_PREF, 246 views::GridLayout::USE_PREF, 0, 0);
248 0,
249 0);
250 column_set->AddColumn(views::GridLayout::FILL,
251 views::GridLayout::FILL,
252 1,
253 views::GridLayout::USE_PREF,
254 0,
255 0);
256 247
257 layout->StartRow(1, column_set_id); 248 layout->StartRow(1, column_set_id);
258 // Create the permission icon. 249 // Create the permission icon.
259 icon_ = new views::ImageView(); 250 icon_ = new views::ImageView();
260 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission); 251 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission);
261 icon_->SetImage(image.ToImageSkia()); 252 icon_->SetImage(image.ToImageSkia());
262 layout->AddView(icon_, 253 layout->AddView(icon_, 1, 1, views::GridLayout::CENTER,
263 1,
264 1,
265 views::GridLayout::CENTER,
266 views::GridLayout::CENTER); 254 views::GridLayout::CENTER);
267 // Create the label that displays the permission type. 255 // Create the label that displays the permission type.
268 views::Label* label = new views::Label(l10n_util::GetStringFUTF16( 256 views::Label* label = new views::Label(l10n_util::GetStringFUTF16(
269 IDS_WEBSITE_SETTINGS_PERMISSION_TYPE, 257 IDS_WEBSITE_SETTINGS_PERMISSION_TYPE,
270 WebsiteSettingsUI::PermissionTypeToUIString(permission.type))); 258 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)));
271 layout->AddView(label, 259 layout->AddView(label, 1, 1, views::GridLayout::LEADING,
272 1,
273 1,
274 views::GridLayout::LEADING,
275 views::GridLayout::CENTER); 260 views::GridLayout::CENTER);
276 // Create the menu model. 261 // Create the menu model.
277 menu_model_.reset(new PermissionMenuModel( 262 menu_model_.reset(new PermissionMenuModel(
278 url, 263 url, permission, base::Bind(&PermissionSelectorRow::PermissionChanged,
279 permission, 264 base::Unretained(this))));
280 base::Bind(&PermissionSelectorView::PermissionChanged,
281 base::Unretained(this))));
282 265
283 // Create the permission menu button. 266 // Create the permission menu button.
284 #if defined(OS_MACOSX) 267 #if defined(OS_MACOSX)
285 bool use_real_combobox = true; 268 bool use_real_combobox = true;
286 #else 269 #else
287 bool use_real_combobox = 270 bool use_real_combobox =
288 ui::MaterialDesignController::IsSecondaryUiMaterial(); 271 ui::MaterialDesignController::IsSecondaryUiMaterial();
289 #endif 272 #endif
290 if (use_real_combobox) 273 if (use_real_combobox)
291 InitializeComboboxView(layout, permission); 274 InitializeComboboxView(layout, permission);
292 else 275 else
293 InitializeMenuButtonView(layout, permission); 276 InitializeMenuButtonView(layout, permission);
294 } 277 }
295 278
296 void PermissionSelectorView::AddObserver( 279 void PermissionSelectorRow::AddObserver(
297 PermissionSelectorViewObserver* observer) { 280 PermissionSelectorRowObserver* observer) {
298 observer_list_.AddObserver(observer); 281 observer_list_.AddObserver(observer);
299 } 282 }
300 283
301 void PermissionSelectorView::ChildPreferredSizeChanged(View* child) { 284 void PermissionSelectorRow::ChildPreferredSizeChanged(View* child) {
302 SizeToPreferredSize(); 285 SizeToPreferredSize();
303 // FIXME: The parent is only a plain |View| that is used as a 286 // FIXME: The parent is only a plain |View| that is used as a
304 // container/box/panel. The SizeToPreferredSize method of the parent is 287 // container/box/panel. The SizeToPreferredSize method of the parent is
305 // called here directly in order not to implement a custom |View| class with 288 // called here directly in order not to implement a custom |View| class with
306 // its own implementation of the ChildPreferredSizeChanged method. 289 // its own implementation of the ChildPreferredSizeChanged method.
307 parent()->SizeToPreferredSize(); 290 parent()->SizeToPreferredSize();
308 } 291 }
309 292
310 PermissionSelectorView::~PermissionSelectorView() { 293 PermissionSelectorRow::~PermissionSelectorRow() {
311 // Gross. On paper the Combobox and the ComboboxModelAdapter are both owned by 294 // Gross. On paper the Combobox and the ComboboxModelAdapter are both owned by
312 // this class, but actually, the Combobox is owned by View and will be 295 // this class, but actually, the Combobox is owned by View and will be
313 // destroyed in ~View(), which runs *after* ~PermissionSelectorView() is done, 296 // destroyed in ~View(), which runs *after* ~PermissionSelectorRow() is done,
314 // which means the Combobox gets destroyed after its ComboboxModel, which 297 // which means the Combobox gets destroyed after its ComboboxModel, which
315 // causes an explosion when the Combobox attempts to stop observing the 298 // causes an explosion when the Combobox attempts to stop observing the
316 // ComboboxModel. This hack ensures the Combobox is deleted before its 299 // ComboboxModel. This hack ensures the Combobox is deleted before its
317 // ComboboxModel. 300 // ComboboxModel.
318 // 301 //
319 // Technically, the MenuButton has the same problem, but MenuButton doesn't 302 // Technically, the MenuButton has the same problem, but MenuButton doesn't
320 // use its model in its destructor. 303 // use its model in its destructor.
321 if (combobox_) 304 if (combobox_)
322 RemoveChildView(combobox_); 305 RemoveChildView(combobox_);
323 } 306 }
324 307
325 void PermissionSelectorView::InitializeMenuButtonView( 308 void PermissionSelectorRow::InitializeMenuButtonView(
326 views::GridLayout* layout, 309 views::GridLayout* layout,
327 const WebsiteSettingsUI::PermissionInfo& permission) { 310 const WebsiteSettingsUI::PermissionInfo& permission) {
328 bool button_enabled = 311 bool button_enabled =
329 permission.source == content_settings::SETTING_SOURCE_USER; 312 permission.source == content_settings::SETTING_SOURCE_USER;
330 menu_button_ = new internal::PermissionMenuButton( 313 menu_button_ = new internal::PermissionMenuButton(
331 WebsiteSettingsUI::PermissionActionToUIString( 314 WebsiteSettingsUI::PermissionActionToUIString(
332 permission.type, permission.setting, permission.default_setting, 315 permission.type, permission.setting, permission.default_setting,
333 permission.source), 316 permission.source),
334 menu_model_.get(), button_enabled); 317 menu_model_.get(), button_enabled);
335 menu_button_->SetEnabled(button_enabled); 318 menu_button_->SetEnabled(button_enabled);
336 menu_button_->SetAccessibleName( 319 menu_button_->SetAccessibleName(
337 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)); 320 WebsiteSettingsUI::PermissionTypeToUIString(permission.type));
338 layout->AddView(menu_button_); 321 layout->AddView(menu_button_);
339 } 322 }
340 323
341 void PermissionSelectorView::InitializeComboboxView( 324 void PermissionSelectorRow::InitializeComboboxView(
342 views::GridLayout* layout, 325 views::GridLayout* layout,
343 const WebsiteSettingsUI::PermissionInfo& permission) { 326 const WebsiteSettingsUI::PermissionInfo& permission) {
344 bool button_enabled = 327 bool button_enabled =
345 permission.source == content_settings::SETTING_SOURCE_USER; 328 permission.source == content_settings::SETTING_SOURCE_USER;
346 combobox_model_adapter_.reset( 329 combobox_model_adapter_.reset(
347 new internal::ComboboxModelAdapter(menu_model_.get())); 330 new internal::ComboboxModelAdapter(menu_model_.get()));
348 combobox_ = new internal::PermissionCombobox( 331 combobox_ = new internal::PermissionCombobox(
349 WebsiteSettingsUI::PermissionActionToUIString( 332 WebsiteSettingsUI::PermissionActionToUIString(
350 permission.type, permission.setting, permission.default_setting, 333 permission.type, permission.setting, permission.default_setting,
351 permission.source), 334 permission.source),
352 combobox_model_adapter_.get(), button_enabled, 335 combobox_model_adapter_.get(), button_enabled, true);
353 true);
354 combobox_->SetEnabled(button_enabled); 336 combobox_->SetEnabled(button_enabled);
355 combobox_->SetAccessibleName( 337 combobox_->SetAccessibleName(
356 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)); 338 WebsiteSettingsUI::PermissionTypeToUIString(permission.type));
357 layout->AddView(combobox_); 339 layout->AddView(combobox_);
358 } 340 }
359 341
360 void PermissionSelectorView::PermissionChanged( 342 void PermissionSelectorRow::PermissionChanged(
361 const WebsiteSettingsUI::PermissionInfo& permission) { 343 const WebsiteSettingsUI::PermissionInfo& permission) {
362 // Change the permission icon to reflect the selected setting. 344 // Change the permission icon to reflect the selected setting.
363 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission); 345 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission);
364 icon_->SetImage(image.ToImageSkia()); 346 icon_->SetImage(image.ToImageSkia());
365 347
366 // Update the menu button text to reflect the new setting. 348 // Update the menu button text to reflect the new setting.
367 if (menu_button_) { 349 if (menu_button_) {
368 menu_button_->SetText(WebsiteSettingsUI::PermissionActionToUIString( 350 menu_button_->SetText(WebsiteSettingsUI::PermissionActionToUIString(
369 permission.type, permission.setting, permission.default_setting, 351 permission.type, permission.setting, permission.default_setting,
370 content_settings::SETTING_SOURCE_USER)); 352 content_settings::SETTING_SOURCE_USER));
371 menu_button_->SizeToPreferredSize(); 353 menu_button_->SizeToPreferredSize();
372 } else if (combobox_) { 354 } else if (combobox_) {
373 bool use_default = permission.setting == CONTENT_SETTING_DEFAULT; 355 bool use_default = permission.setting == CONTENT_SETTING_DEFAULT;
374 combobox_->UpdateSelectedIndex(use_default); 356 combobox_->UpdateSelectedIndex(use_default);
375 } 357 }
376 358
377 FOR_EACH_OBSERVER(PermissionSelectorViewObserver, 359 FOR_EACH_OBSERVER(PermissionSelectorRowObserver, observer_list_,
felt 2016/09/06 20:03:53 (is this change just a result of running git cl fo
lgarron 2016/09/07 06:55:26 (Ditto.)
378 observer_list_,
379 OnPermissionChanged(permission)); 360 OnPermissionChanged(permission));
380 } 361 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698