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

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

Issue 1984923002: Refactor ChooserBubbleController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updated README for ChooserController Created 4 years, 7 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/chooser_bubble_ui_view.h" 5 #include "chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
19 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" 19 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h"
20 #include "chrome/browser/ui/views/frame/browser_view.h" 20 #include "chrome/browser/ui/views/frame/browser_view.h"
21 #include "chrome/browser/ui/views/frame/top_container_view.h" 21 #include "chrome/browser/ui/views/frame/top_container_view.h"
22 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" 22 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
23 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" 23 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
24 #include "chrome/browser/ui/website_settings/chooser_bubble_controller.h" 24 #include "chrome/browser/ui/website_settings/chooser_bubble_controller.h"
25 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
26 #include "chrome/grit/generated_resources.h" 26 #include "chrome/grit/generated_resources.h"
27 #include "components/chooser_controller/chooser_controller.h"
27 #include "components/prefs/pref_service.h" 28 #include "components/prefs/pref_service.h"
28 #include "ui/accessibility/ax_view_state.h" 29 #include "ui/accessibility/ax_view_state.h"
29 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/resource/resource_bundle.h" 31 #include "ui/base/resource/resource_bundle.h"
31 #include "ui/gfx/paint_vector_icon.h" 32 #include "ui/gfx/paint_vector_icon.h"
32 #include "ui/gfx/text_constants.h" 33 #include "ui/gfx/text_constants.h"
33 #include "ui/gfx/vector_icons_public.h" 34 #include "ui/gfx/vector_icons_public.h"
34 #include "ui/views/bubble/bubble_dialog_delegate.h" 35 #include "ui/views/bubble/bubble_dialog_delegate.h"
35 #include "ui/views/bubble/bubble_frame_view.h" 36 #include "ui/views/bubble/bubble_frame_view.h"
36 #include "ui/views/controls/styled_label.h" 37 #include "ui/views/controls/styled_label.h"
(...skipping 21 matching lines...) Expand all
58 class ChooserTableModel; 59 class ChooserTableModel;
59 60
60 /////////////////////////////////////////////////////////////////////////////// 61 ///////////////////////////////////////////////////////////////////////////////
61 // View implementation for the chooser bubble. 62 // View implementation for the chooser bubble.
62 class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView, 63 class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView,
63 public views::StyledLabelListener, 64 public views::StyledLabelListener,
64 public views::TableViewObserver { 65 public views::TableViewObserver {
65 public: 66 public:
66 ChooserBubbleUiViewDelegate(views::View* anchor_view, 67 ChooserBubbleUiViewDelegate(views::View* anchor_view,
67 views::BubbleBorder::Arrow anchor_arrow, 68 views::BubbleBorder::Arrow anchor_arrow,
68 ChooserBubbleController* controller); 69 ChooserController* controller);
69 ~ChooserBubbleUiViewDelegate() override; 70 ~ChooserBubbleUiViewDelegate() override;
70 71
71 // views::BubbleDialogDelegateView: 72 // views::BubbleDialogDelegateView:
72 bool ShouldShowWindowTitle() const override; 73 bool ShouldShowWindowTitle() const override;
73 base::string16 GetWindowTitle() const override; 74 base::string16 GetWindowTitle() const override;
74 base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; 75 base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
75 bool IsDialogButtonEnabled(ui::DialogButton button) const override; 76 bool IsDialogButtonEnabled(ui::DialogButton button) const override;
76 views::View* CreateFootnoteView() override; 77 views::View* CreateFootnoteView() override;
77 bool Accept() override; 78 bool Accept() override;
78 bool Cancel() override; 79 bool Cancel() override;
(...skipping 13 matching lines...) Expand all
92 views::BubbleBorder::Arrow anchor_arrow); 93 views::BubbleBorder::Arrow anchor_arrow);
93 94
94 // Called by ChooserBubbleUiView's destructor. When ChooserBubbleUiView object 95 // Called by ChooserBubbleUiView's destructor. When ChooserBubbleUiView object
95 // is destroyed, the |controller_| it passed to this class may not be used any 96 // is destroyed, the |controller_| it passed to this class may not be used any
96 // more since it may be destroyed too. 97 // more since it may be destroyed too.
97 void ControllerDestroying(); 98 void ControllerDestroying();
98 99
99 ChooserTableModel* chooser_table_model() const; 100 ChooserTableModel* chooser_table_model() const;
100 101
101 private: 102 private:
102 ChooserBubbleController* controller_; 103 ChooserController* controller_;
103 104
104 views::TableView* table_view_; 105 views::TableView* table_view_;
105 ChooserTableModel* chooser_table_model_; 106 ChooserTableModel* chooser_table_model_;
106 107
107 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate); 108 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate);
108 }; 109 };
109 110
110 ui::TableColumn ChooserTableColumn(int id, const std::string& title) { 111 ui::TableColumn ChooserTableColumn(int id, const std::string& title) {
111 ui::TableColumn column; 112 ui::TableColumn column;
112 column.id = id; 113 column.id = id;
113 column.title = base::ASCIIToUTF16(title.c_str()); 114 column.title = base::ASCIIToUTF16(title.c_str());
114 return column; 115 return column;
115 } 116 }
116 117
117 class ChooserTableModel : public ui::TableModel, 118 class ChooserTableModel : public ui::TableModel,
118 public ChooserBubbleController::Observer { 119 public ChooserController::Observer {
119 public: 120 public:
120 explicit ChooserTableModel(ChooserBubbleController* controller); 121 explicit ChooserTableModel(ChooserController* controller);
121 122
122 // ui::TableModel: 123 // ui::TableModel:
123 int RowCount() override; 124 int RowCount() override;
124 base::string16 GetText(int row, int column_id) override; 125 base::string16 GetText(int row, int column_id) override;
125 void SetObserver(ui::TableModelObserver* observer) override; 126 void SetObserver(ui::TableModelObserver* observer) override;
126 127
127 // ChooserBubbleController::Observer: 128 // ChooserController::Observer:
128 void OnOptionsInitialized() override; 129 void OnOptionsInitialized() override;
129 void OnOptionAdded(size_t index) override; 130 void OnOptionAdded(size_t index) override;
130 void OnOptionRemoved(size_t index) override; 131 void OnOptionRemoved(size_t index) override;
131 132
132 void Update(); 133 void Update();
133 134
134 private: 135 private:
135 ui::TableModelObserver* observer_; 136 ui::TableModelObserver* observer_;
136 ChooserBubbleController* controller_; 137 ChooserController* controller_;
137 }; 138 };
138 139
139 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate( 140 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate(
140 views::View* anchor_view, 141 views::View* anchor_view,
141 views::BubbleBorder::Arrow anchor_arrow, 142 views::BubbleBorder::Arrow anchor_arrow,
142 ChooserBubbleController* controller) 143 ChooserController* controller)
143 : views::BubbleDialogDelegateView(anchor_view, anchor_arrow), 144 : views::BubbleDialogDelegateView(anchor_view, anchor_arrow),
144 controller_(controller) { 145 controller_(controller) {
145 // ------------------------------------ 146 // ------------------------------------
146 // | Chooser bubble title | 147 // | Chooser bubble title |
147 // | -------------------------------- | 148 // | -------------------------------- |
148 // | | option 0 | | 149 // | | option 0 | |
149 // | | option 1 | | 150 // | | option 1 | |
150 // | | option 2 | | 151 // | | option 2 | |
151 // | | | | 152 // | | | |
152 // | | | | 153 // | | | |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 } 265 }
265 266
266 void ChooserBubbleUiViewDelegate::ControllerDestroying() { 267 void ChooserBubbleUiViewDelegate::ControllerDestroying() {
267 controller_ = nullptr; 268 controller_ = nullptr;
268 } 269 }
269 270
270 ChooserTableModel* ChooserBubbleUiViewDelegate::chooser_table_model() const { 271 ChooserTableModel* ChooserBubbleUiViewDelegate::chooser_table_model() const {
271 return chooser_table_model_; 272 return chooser_table_model_;
272 } 273 }
273 274
274 ChooserTableModel::ChooserTableModel(ChooserBubbleController* controller) 275 ChooserTableModel::ChooserTableModel(ChooserController* controller)
275 : observer_(nullptr), controller_(controller) { 276 : observer_(nullptr), controller_(controller) {
276 controller_->set_observer(this); 277 controller_->set_observer(this);
277 } 278 }
278 279
279 int ChooserTableModel::RowCount() { 280 int ChooserTableModel::RowCount() {
280 // When there are no devices, the table contains a message saying there 281 // When there are no devices, the table contains a message saying there
281 // are no devices, so the number of rows is always at least 1. 282 // are no devices, so the number of rows is always at least 1.
282 return std::max(static_cast<int>(controller_->NumOptions()), 1); 283 return std::max(static_cast<int>(controller_->NumOptions()), 1);
283 } 284 }
284 285
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 table_view->SetEnabled(false); 329 table_view->SetEnabled(false);
329 } else { 330 } else {
330 table_view->SetEnabled(true); 331 table_view->SetEnabled(true);
331 } 332 }
332 } 333 }
333 334
334 ////////////////////////////////////////////////////////////////////////////// 335 //////////////////////////////////////////////////////////////////////////////
335 // ChooserBubbleUiView 336 // ChooserBubbleUiView
336 337
337 ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser, 338 ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser,
338 ChooserBubbleController* controller) 339 ChooserController* controller)
339 : browser_(browser), 340 : browser_(browser),
340 controller_(controller), 341 controller_(controller),
341 chooser_bubble_ui_view_delegate_(nullptr) { 342 chooser_bubble_ui_view_delegate_(nullptr) {
342 DCHECK(browser_); 343 DCHECK(browser_);
343 DCHECK(controller_); 344 DCHECK(controller_);
344 } 345 }
345 346
346 ChooserBubbleUiView::~ChooserBubbleUiView() { 347 ChooserBubbleUiView::~ChooserBubbleUiView() {
347 if (chooser_bubble_ui_view_delegate_) 348 if (chooser_bubble_ui_view_delegate_)
348 chooser_bubble_ui_view_delegate_->ControllerDestroying(); 349 chooser_bubble_ui_view_delegate_->ControllerDestroying();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 return browser_view->exclusive_access_bubble()->GetView(); 382 return browser_view->exclusive_access_bubble()->GetView();
382 383
383 return browser_view->top_container(); 384 return browser_view->top_container();
384 } 385 }
385 386
386 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() { 387 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() {
387 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) 388 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
388 return views::BubbleBorder::TOP_LEFT; 389 return views::BubbleBorder::TOP_LEFT;
389 return views::BubbleBorder::NONE; 390 return views::BubbleBorder::NONE;
390 } 391 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698