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

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: 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 ///////////////////////////////////////////////////////////////////////////////
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 Combobox::OnPaintBorder(canvas); 216 Combobox::OnPaintBorder(canvas);
217 } 217 }
218 218
219 void PermissionCombobox::OnPerformAction(Combobox* combobox) { 219 void PermissionCombobox::OnPerformAction(Combobox* combobox) {
220 model_->OnPerformAction(combobox->selected_index()); 220 model_->OnPerformAction(combobox->selected_index());
221 } 221 }
222 222
223 } // namespace internal 223 } // namespace internal
224 224
225 /////////////////////////////////////////////////////////////////////////////// 225 ///////////////////////////////////////////////////////////////////////////////
226 // PermissionSelectorView 226 // PermissionSelectorRow
227 /////////////////////////////////////////////////////////////////////////////// 227 ///////////////////////////////////////////////////////////////////////////////
228 228
229 PermissionSelectorView::PermissionSelectorView( 229 PermissionSelectorRow::PermissionSelectorRow(
230 const GURL& url, 230 const GURL& url,
231 const WebsiteSettingsUI::PermissionInfo& permission) 231 const WebsiteSettingsUI::PermissionInfo& permission)
232 : icon_(NULL), menu_button_(NULL), combobox_(NULL) { 232 : icon_(NULL), menu_button_(NULL), combobox_(NULL) {
233 views::GridLayout* layout = new views::GridLayout(this); 233 views::GridLayout* layout = new views::GridLayout(this);
234 SetLayoutManager(layout); 234 SetLayoutManager(layout);
235 const int column_set_id = 0; 235 const int column_set_id = 0;
236 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id); 236 views::ColumnSet* column_set = layout->AddColumnSet(column_set_id);
237 column_set->AddColumn(views::GridLayout::FILL, 237 column_set->AddColumn(views::GridLayout::FILL,
238 views::GridLayout::FILL, 238 views::GridLayout::FILL,
239 1, 239 1,
(...skipping 30 matching lines...) Expand all
270 WebsiteSettingsUI::PermissionTypeToUIString(permission.type))); 270 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)));
271 layout->AddView(label, 271 layout->AddView(label,
272 1, 272 1,
273 1, 273 1,
274 views::GridLayout::LEADING, 274 views::GridLayout::LEADING,
275 views::GridLayout::CENTER); 275 views::GridLayout::CENTER);
276 // Create the menu model. 276 // Create the menu model.
277 menu_model_.reset(new PermissionMenuModel( 277 menu_model_.reset(new PermissionMenuModel(
278 url, 278 url,
279 permission, 279 permission,
280 base::Bind(&PermissionSelectorView::PermissionChanged, 280 base::Bind(&PermissionSelectorRow::PermissionChanged,
281 base::Unretained(this)))); 281 base::Unretained(this))));
282 282
283 // Create the permission menu button. 283 // Create the permission menu button.
284 #if defined(OS_MACOSX) 284 #if defined(OS_MACOSX)
285 bool use_real_combobox = true; 285 bool use_real_combobox = true;
286 #else 286 #else
287 bool use_real_combobox = 287 bool use_real_combobox =
288 ui::MaterialDesignController::IsSecondaryUiMaterial(); 288 ui::MaterialDesignController::IsSecondaryUiMaterial();
289 #endif 289 #endif
290 if (use_real_combobox) 290 if (use_real_combobox)
291 InitializeComboboxView(layout, permission); 291 InitializeComboboxView(layout, permission);
292 else 292 else
293 InitializeMenuButtonView(layout, permission); 293 InitializeMenuButtonView(layout, permission);
294 } 294 }
295 295
296 void PermissionSelectorView::AddObserver( 296 void PermissionSelectorRow::AddObserver(
297 PermissionSelectorViewObserver* observer) { 297 PermissionSelectorRowObserver* observer) {
298 observer_list_.AddObserver(observer); 298 observer_list_.AddObserver(observer);
299 } 299 }
300 300
301 void PermissionSelectorView::ChildPreferredSizeChanged(View* child) { 301 void PermissionSelectorRow::ChildPreferredSizeChanged(View* child) {
302 SizeToPreferredSize(); 302 SizeToPreferredSize();
303 // FIXME: The parent is only a plain |View| that is used as a 303 // FIXME: The parent is only a plain |View| that is used as a
304 // container/box/panel. The SizeToPreferredSize method of the parent is 304 // container/box/panel. The SizeToPreferredSize method of the parent is
305 // called here directly in order not to implement a custom |View| class with 305 // called here directly in order not to implement a custom |View| class with
306 // its own implementation of the ChildPreferredSizeChanged method. 306 // its own implementation of the ChildPreferredSizeChanged method.
307 parent()->SizeToPreferredSize(); 307 parent()->SizeToPreferredSize();
308 } 308 }
309 309
310 PermissionSelectorView::~PermissionSelectorView() { 310 PermissionSelectorRow::~PermissionSelectorRow() {
311 // Gross. On paper the Combobox and the ComboboxModelAdapter are both owned by 311 // 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 312 // this class, but actually, the Combobox is owned by View and will be
313 // destroyed in ~View(), which runs *after* ~PermissionSelectorView() is done, 313 // destroyed in ~View(), which runs *after* ~PermissionSelectorRow() is done,
314 // which means the Combobox gets destroyed after its ComboboxModel, which 314 // which means the Combobox gets destroyed after its ComboboxModel, which
315 // causes an explosion when the Combobox attempts to stop observing the 315 // causes an explosion when the Combobox attempts to stop observing the
316 // ComboboxModel. This hack ensures the Combobox is deleted before its 316 // ComboboxModel. This hack ensures the Combobox is deleted before its
317 // ComboboxModel. 317 // ComboboxModel.
318 // 318 //
319 // Technically, the MenuButton has the same problem, but MenuButton doesn't 319 // Technically, the MenuButton has the same problem, but MenuButton doesn't
320 // use its model in its destructor. 320 // use its model in its destructor.
321 if (combobox_) 321 if (combobox_)
322 RemoveChildView(combobox_); 322 RemoveChildView(combobox_);
323 } 323 }
324 324
325 void PermissionSelectorView::InitializeMenuButtonView( 325 void PermissionSelectorRow::InitializeMenuButtonView(
326 views::GridLayout* layout, 326 views::GridLayout* layout,
327 const WebsiteSettingsUI::PermissionInfo& permission) { 327 const WebsiteSettingsUI::PermissionInfo& permission) {
328 bool button_enabled = 328 bool button_enabled =
329 permission.source == content_settings::SETTING_SOURCE_USER; 329 permission.source == content_settings::SETTING_SOURCE_USER;
330 menu_button_ = new internal::PermissionMenuButton( 330 menu_button_ = new internal::PermissionMenuButton(
331 WebsiteSettingsUI::PermissionActionToUIString( 331 WebsiteSettingsUI::PermissionActionToUIString(
332 permission.type, permission.setting, permission.default_setting, 332 permission.type, permission.setting, permission.default_setting,
333 permission.source), 333 permission.source),
334 menu_model_.get(), button_enabled); 334 menu_model_.get(), button_enabled);
335 menu_button_->SetEnabled(button_enabled); 335 menu_button_->SetEnabled(button_enabled);
336 menu_button_->SetAccessibleName( 336 menu_button_->SetAccessibleName(
337 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)); 337 WebsiteSettingsUI::PermissionTypeToUIString(permission.type));
338 layout->AddView(menu_button_); 338 layout->AddView(menu_button_);
339 } 339 }
340 340
341 void PermissionSelectorView::InitializeComboboxView( 341 void PermissionSelectorRow::InitializeComboboxView(
342 views::GridLayout* layout, 342 views::GridLayout* layout,
343 const WebsiteSettingsUI::PermissionInfo& permission) { 343 const WebsiteSettingsUI::PermissionInfo& permission) {
344 bool button_enabled = 344 bool button_enabled =
345 permission.source == content_settings::SETTING_SOURCE_USER; 345 permission.source == content_settings::SETTING_SOURCE_USER;
346 combobox_model_adapter_.reset( 346 combobox_model_adapter_.reset(
347 new internal::ComboboxModelAdapter(menu_model_.get())); 347 new internal::ComboboxModelAdapter(menu_model_.get()));
348 combobox_ = new internal::PermissionCombobox( 348 combobox_ = new internal::PermissionCombobox(
349 WebsiteSettingsUI::PermissionActionToUIString( 349 WebsiteSettingsUI::PermissionActionToUIString(
350 permission.type, permission.setting, permission.default_setting, 350 permission.type, permission.setting, permission.default_setting,
351 permission.source), 351 permission.source),
352 combobox_model_adapter_.get(), button_enabled, 352 combobox_model_adapter_.get(), button_enabled,
353 true); 353 true);
354 combobox_->SetEnabled(button_enabled); 354 combobox_->SetEnabled(button_enabled);
355 combobox_->SetAccessibleName( 355 combobox_->SetAccessibleName(
356 WebsiteSettingsUI::PermissionTypeToUIString(permission.type)); 356 WebsiteSettingsUI::PermissionTypeToUIString(permission.type));
357 layout->AddView(combobox_); 357 layout->AddView(combobox_);
358 } 358 }
359 359
360 void PermissionSelectorView::PermissionChanged( 360 void PermissionSelectorRow::PermissionChanged(
361 const WebsiteSettingsUI::PermissionInfo& permission) { 361 const WebsiteSettingsUI::PermissionInfo& permission) {
362 // Change the permission icon to reflect the selected setting. 362 // Change the permission icon to reflect the selected setting.
363 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission); 363 const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission);
364 icon_->SetImage(image.ToImageSkia()); 364 icon_->SetImage(image.ToImageSkia());
365 365
366 // Update the menu button text to reflect the new setting. 366 // Update the menu button text to reflect the new setting.
367 if (menu_button_) { 367 if (menu_button_) {
368 menu_button_->SetText(WebsiteSettingsUI::PermissionActionToUIString( 368 menu_button_->SetText(WebsiteSettingsUI::PermissionActionToUIString(
369 permission.type, permission.setting, permission.default_setting, 369 permission.type, permission.setting, permission.default_setting,
370 content_settings::SETTING_SOURCE_USER)); 370 content_settings::SETTING_SOURCE_USER));
371 menu_button_->SizeToPreferredSize(); 371 menu_button_->SizeToPreferredSize();
372 } else if (combobox_) { 372 } else if (combobox_) {
373 bool use_default = permission.setting == CONTENT_SETTING_DEFAULT; 373 bool use_default = permission.setting == CONTENT_SETTING_DEFAULT;
374 combobox_->UpdateSelectedIndex(use_default); 374 combobox_->UpdateSelectedIndex(use_default);
375 } 375 }
376 376
377 FOR_EACH_OBSERVER(PermissionSelectorViewObserver, 377 FOR_EACH_OBSERVER(PermissionSelectorRowObserver,
378 observer_list_, 378 observer_list_,
379 OnPermissionChanged(permission)); 379 OnPermissionChanged(permission));
380 } 380 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698