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

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: rebase 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/prefs/pref_service.h" 27 #include "components/prefs/pref_service.h"
28 #include "components/ui/chooser_controller/chooser_controller.h"
28 #include "components/url_formatter/elide_url.h" 29 #include "components/url_formatter/elide_url.h"
29 #include "ui/accessibility/ax_view_state.h" 30 #include "ui/accessibility/ax_view_state.h"
30 #include "ui/base/l10n/l10n_util.h" 31 #include "ui/base/l10n/l10n_util.h"
31 #include "ui/base/resource/resource_bundle.h" 32 #include "ui/base/resource/resource_bundle.h"
32 #include "ui/gfx/paint_vector_icon.h" 33 #include "ui/gfx/paint_vector_icon.h"
33 #include "ui/gfx/text_constants.h" 34 #include "ui/gfx/text_constants.h"
34 #include "ui/gfx/vector_icons_public.h" 35 #include "ui/gfx/vector_icons_public.h"
35 #include "ui/views/bubble/bubble_dialog_delegate.h" 36 #include "ui/views/bubble/bubble_dialog_delegate.h"
36 #include "ui/views/bubble/bubble_frame_view.h" 37 #include "ui/views/bubble/bubble_frame_view.h"
37 #include "ui/views/controls/styled_label.h" 38 #include "ui/views/controls/styled_label.h"
(...skipping 21 matching lines...) Expand all
59 class ChooserTableModel; 60 class ChooserTableModel;
60 61
61 /////////////////////////////////////////////////////////////////////////////// 62 ///////////////////////////////////////////////////////////////////////////////
62 // View implementation for the chooser bubble. 63 // View implementation for the chooser bubble.
63 class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView, 64 class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView,
64 public views::StyledLabelListener, 65 public views::StyledLabelListener,
65 public views::TableViewObserver { 66 public views::TableViewObserver {
66 public: 67 public:
67 ChooserBubbleUiViewDelegate(views::View* anchor_view, 68 ChooserBubbleUiViewDelegate(views::View* anchor_view,
68 views::BubbleBorder::Arrow anchor_arrow, 69 views::BubbleBorder::Arrow anchor_arrow,
69 ChooserBubbleController* controller); 70 ChooserController* controller);
70 ~ChooserBubbleUiViewDelegate() override; 71 ~ChooserBubbleUiViewDelegate() override;
71 72
72 // views::BubbleDialogDelegateView: 73 // views::BubbleDialogDelegateView:
73 bool ShouldShowWindowTitle() const override; 74 bool ShouldShowWindowTitle() const override;
74 base::string16 GetWindowTitle() const override; 75 base::string16 GetWindowTitle() const override;
75 base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; 76 base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
76 bool IsDialogButtonEnabled(ui::DialogButton button) const override; 77 bool IsDialogButtonEnabled(ui::DialogButton button) const override;
77 views::View* CreateFootnoteView() override; 78 views::View* CreateFootnoteView() override;
78 bool Accept() override; 79 bool Accept() override;
79 bool Cancel() override; 80 bool Cancel() override;
(...skipping 13 matching lines...) Expand all
93 views::BubbleBorder::Arrow anchor_arrow); 94 views::BubbleBorder::Arrow anchor_arrow);
94 95
95 // Called by ChooserBubbleUiView's destructor. When ChooserBubbleUiView object 96 // Called by ChooserBubbleUiView's destructor. When ChooserBubbleUiView object
96 // is destroyed, the |controller_| it passed to this class may not be used any 97 // is destroyed, the |controller_| it passed to this class may not be used any
97 // more since it may be destroyed too. 98 // more since it may be destroyed too.
98 void ControllerDestroying(); 99 void ControllerDestroying();
99 100
100 ChooserTableModel* chooser_table_model() const; 101 ChooserTableModel* chooser_table_model() const;
101 102
102 private: 103 private:
103 ChooserBubbleController* controller_; 104 ChooserController* controller_;
104 105
105 views::TableView* table_view_; 106 views::TableView* table_view_;
106 ChooserTableModel* chooser_table_model_; 107 ChooserTableModel* chooser_table_model_;
107 108
108 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate); 109 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate);
109 }; 110 };
110 111
111 ui::TableColumn ChooserTableColumn(int id, const std::string& title) { 112 ui::TableColumn ChooserTableColumn(int id, const std::string& title) {
112 ui::TableColumn column; 113 ui::TableColumn column;
113 column.id = id; 114 column.id = id;
114 column.title = base::ASCIIToUTF16(title.c_str()); 115 column.title = base::ASCIIToUTF16(title.c_str());
115 return column; 116 return column;
116 } 117 }
117 118
118 class ChooserTableModel : public ui::TableModel, 119 class ChooserTableModel : public ui::TableModel,
119 public ChooserBubbleController::Observer { 120 public ChooserController::Observer {
120 public: 121 public:
121 explicit ChooserTableModel(ChooserBubbleController* controller); 122 explicit ChooserTableModel(ChooserController* controller);
122 123
123 // ui::TableModel: 124 // ui::TableModel:
124 int RowCount() override; 125 int RowCount() override;
125 base::string16 GetText(int row, int column_id) override; 126 base::string16 GetText(int row, int column_id) override;
126 void SetObserver(ui::TableModelObserver* observer) override; 127 void SetObserver(ui::TableModelObserver* observer) override;
127 128
128 // ChooserBubbleController::Observer: 129 // ChooserController::Observer:
129 void OnOptionsInitialized() override; 130 void OnOptionsInitialized() override;
130 void OnOptionAdded(size_t index) override; 131 void OnOptionAdded(size_t index) override;
131 void OnOptionRemoved(size_t index) override; 132 void OnOptionRemoved(size_t index) override;
132 133
133 void Update(); 134 void Update();
134 135
135 private: 136 private:
136 ui::TableModelObserver* observer_; 137 ui::TableModelObserver* observer_;
137 ChooserBubbleController* controller_; 138 ChooserController* controller_;
138 }; 139 };
139 140
140 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate( 141 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate(
141 views::View* anchor_view, 142 views::View* anchor_view,
142 views::BubbleBorder::Arrow anchor_arrow, 143 views::BubbleBorder::Arrow anchor_arrow,
143 ChooserBubbleController* controller) 144 ChooserController* controller)
144 : views::BubbleDialogDelegateView(anchor_view, anchor_arrow), 145 : views::BubbleDialogDelegateView(anchor_view, anchor_arrow),
145 controller_(controller) { 146 controller_(controller) {
146 // ------------------------------------ 147 // ------------------------------------
147 // | Chooser bubble title | 148 // | Chooser bubble title |
148 // | -------------------------------- | 149 // | -------------------------------- |
149 // | | option 0 | | 150 // | | option 0 | |
150 // | | option 1 | | 151 // | | option 1 | |
151 // | | option 2 | | 152 // | | option 2 | |
152 // | | | | 153 // | | | |
153 // | | | | 154 // | | | |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 } 268 }
268 269
269 void ChooserBubbleUiViewDelegate::ControllerDestroying() { 270 void ChooserBubbleUiViewDelegate::ControllerDestroying() {
270 controller_ = nullptr; 271 controller_ = nullptr;
271 } 272 }
272 273
273 ChooserTableModel* ChooserBubbleUiViewDelegate::chooser_table_model() const { 274 ChooserTableModel* ChooserBubbleUiViewDelegate::chooser_table_model() const {
274 return chooser_table_model_; 275 return chooser_table_model_;
275 } 276 }
276 277
277 ChooserTableModel::ChooserTableModel(ChooserBubbleController* controller) 278 ChooserTableModel::ChooserTableModel(ChooserController* controller)
278 : observer_(nullptr), controller_(controller) { 279 : observer_(nullptr), controller_(controller) {
279 controller_->set_observer(this); 280 controller_->set_observer(this);
280 } 281 }
281 282
282 int ChooserTableModel::RowCount() { 283 int ChooserTableModel::RowCount() {
283 // When there are no devices, the table contains a message saying there 284 // When there are no devices, the table contains a message saying there
284 // are no devices, so the number of rows is always at least 1. 285 // are no devices, so the number of rows is always at least 1.
285 return std::max(static_cast<int>(controller_->NumOptions()), 1); 286 return std::max(static_cast<int>(controller_->NumOptions()), 1);
286 } 287 }
287 288
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 table_view->SetEnabled(false); 332 table_view->SetEnabled(false);
332 } else { 333 } else {
333 table_view->SetEnabled(true); 334 table_view->SetEnabled(true);
334 } 335 }
335 } 336 }
336 337
337 ////////////////////////////////////////////////////////////////////////////// 338 //////////////////////////////////////////////////////////////////////////////
338 // ChooserBubbleUiView 339 // ChooserBubbleUiView
339 340
340 ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser, 341 ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser,
341 ChooserBubbleController* controller) 342 ChooserController* controller)
342 : browser_(browser), 343 : browser_(browser),
343 controller_(controller), 344 controller_(controller),
344 chooser_bubble_ui_view_delegate_(nullptr) { 345 chooser_bubble_ui_view_delegate_(nullptr) {
345 DCHECK(browser_); 346 DCHECK(browser_);
346 DCHECK(controller_); 347 DCHECK(controller_);
347 } 348 }
348 349
349 ChooserBubbleUiView::~ChooserBubbleUiView() { 350 ChooserBubbleUiView::~ChooserBubbleUiView() {
350 if (chooser_bubble_ui_view_delegate_) 351 if (chooser_bubble_ui_view_delegate_)
351 chooser_bubble_ui_view_delegate_->ControllerDestroying(); 352 chooser_bubble_ui_view_delegate_->ControllerDestroying();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 return browser_view->exclusive_access_bubble()->GetView(); 385 return browser_view->exclusive_access_bubble()->GetView();
385 386
386 return browser_view->top_container(); 387 return browser_view->top_container();
387 } 388 }
388 389
389 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() { 390 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() {
390 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) 391 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
391 return views::BubbleBorder::TOP_LEFT; 392 return views::BubbleBorder::TOP_LEFT;
392 return views::BubbleBorder::NONE; 393 return views::BubbleBorder::NONE;
393 } 394 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698