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

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

Issue 1724183005: Change ChooserBubbleDelegate class name to ChooserBubbleController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merged changes from master, resolved conflicts and updated related files Created 4 years, 10 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/strings/string16.h" 14 #include "base/strings/string16.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/ui/browser.h" 16 #include "chrome/browser/ui/browser.h"
17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h" 17 #include "chrome/browser/ui/views/exclusive_access_bubble_views.h"
18 #include "chrome/browser/ui/views/frame/browser_view.h" 18 #include "chrome/browser/ui/views/frame/browser_view.h"
19 #include "chrome/browser/ui/views/frame/top_container_view.h" 19 #include "chrome/browser/ui/views/frame/top_container_view.h"
20 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" 20 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
21 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" 21 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
22 #include "chrome/browser/ui/website_settings/chooser_bubble_delegate.h" 22 #include "chrome/browser/ui/website_settings/chooser_bubble_controller.h"
23 #include "chrome/common/pref_names.h" 23 #include "chrome/common/pref_names.h"
24 #include "chrome/grit/generated_resources.h" 24 #include "chrome/grit/generated_resources.h"
25 #include "components/prefs/pref_service.h" 25 #include "components/prefs/pref_service.h"
26 #include "ui/accessibility/ax_view_state.h" 26 #include "ui/accessibility/ax_view_state.h"
27 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
28 #include "ui/base/resource/resource_bundle.h" 28 #include "ui/base/resource/resource_bundle.h"
29 #include "ui/gfx/paint_vector_icon.h" 29 #include "ui/gfx/paint_vector_icon.h"
30 #include "ui/gfx/text_constants.h" 30 #include "ui/gfx/text_constants.h"
31 #include "ui/gfx/vector_icons_public.h" 31 #include "ui/gfx/vector_icons_public.h"
32 #include "ui/views/bubble/bubble_delegate.h" 32 #include "ui/views/bubble/bubble_delegate.h"
(...skipping 12 matching lines...) Expand all
45 namespace { 45 namespace {
46 46
47 // Chooser permission bubble width 47 // Chooser permission bubble width
48 const int kChooserPermissionBubbleWidth = 300; 48 const int kChooserPermissionBubbleWidth = 300;
49 49
50 // Chooser permission bubble height 50 // Chooser permission bubble height
51 const int kChooserPermissionBubbleHeight = 200; 51 const int kChooserPermissionBubbleHeight = 200;
52 52
53 } // namespace 53 } // namespace
54 54
55 scoped_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() { 55 scoped_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
56 return make_scoped_ptr(new ChooserBubbleUiView(browser_, this)); 56 return make_scoped_ptr(new ChooserBubbleUiView(browser_, this));
57 } 57 }
58 58
59 class ChooserTableModel; 59 class ChooserTableModel;
60 60
61 /////////////////////////////////////////////////////////////////////////////// 61 ///////////////////////////////////////////////////////////////////////////////
62 // View implementation for the chooser bubble. 62 // View implementation for the chooser bubble.
63 class ChooserBubbleUiViewDelegate : public views::BubbleDelegateView, 63 class ChooserBubbleUiViewDelegate : public views::BubbleDelegateView,
64 public views::ButtonListener, 64 public views::ButtonListener,
65 public views::StyledLabelListener, 65 public views::StyledLabelListener,
66 public views::TableViewObserver { 66 public views::TableViewObserver {
67 public: 67 public:
68 ChooserBubbleUiViewDelegate(views::View* anchor_view, 68 ChooserBubbleUiViewDelegate(views::View* anchor_view,
69 views::BubbleBorder::Arrow anchor_arrow, 69 views::BubbleBorder::Arrow anchor_arrow,
70 ChooserBubbleUiView* owner, 70 ChooserBubbleUiView* owner,
71 ChooserBubbleDelegate* chooser_bubble_delegate); 71 ChooserBubbleController* controller);
72 ~ChooserBubbleUiViewDelegate() override; 72 ~ChooserBubbleUiViewDelegate() override;
73 73
74 void Close(); 74 void Close();
75 75
76 // views::BubbleDelegateView: 76 // views::BubbleDelegateView:
77 bool ShouldShowWindowTitle() const override; 77 bool ShouldShowWindowTitle() const override;
78 base::string16 GetWindowTitle() const override; 78 base::string16 GetWindowTitle() const override;
79 void OnWidgetDestroying(views::Widget* widget) override; 79 void OnWidgetDestroying(views::Widget* widget) override;
80 80
81 // views::ButtonListener: 81 // views::ButtonListener:
82 void ButtonPressed(views::Button* button, const ui::Event& event) override; 82 void ButtonPressed(views::Button* button, const ui::Event& event) override;
83 83
84 // views::StyledLabelListener: 84 // views::StyledLabelListener:
85 void StyledLabelLinkClicked(views::StyledLabel* label, 85 void StyledLabelLinkClicked(views::StyledLabel* label,
86 const gfx::Range& range, 86 const gfx::Range& range,
87 int event_flags) override; 87 int event_flags) override;
88 88
89 // views::TableViewObserver: 89 // views::TableViewObserver:
90 void OnSelectionChanged() override; 90 void OnSelectionChanged() override;
91 91
92 // Updates the anchor's arrow and view. Also repositions the bubble so it's 92 // Updates the anchor's arrow and view. Also repositions the bubble so it's
93 // displayed in the correct location. 93 // displayed in the correct location.
94 void UpdateAnchor(views::View* anchor_view, 94 void UpdateAnchor(views::View* anchor_view,
95 views::BubbleBorder::Arrow anchor_arrow); 95 views::BubbleBorder::Arrow anchor_arrow);
96 96
97 private: 97 private:
98 friend ChooserBubbleUiView; 98 friend ChooserBubbleUiView;
99 99
100 ChooserBubbleUiView* owner_; 100 ChooserBubbleUiView* owner_;
101 ChooserBubbleDelegate* chooser_bubble_delegate_; 101 ChooserBubbleController* controller_;
102 102
103 views::LabelButton* connect_button_; 103 views::LabelButton* connect_button_;
104 views::TableView* table_view_; 104 views::TableView* table_view_;
105 ChooserTableModel* chooser_table_model_; 105 ChooserTableModel* chooser_table_model_;
106 bool button_pressed_; 106 bool button_pressed_;
107 107
108 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate); 108 DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate);
109 }; 109 };
110 110
111 ui::TableColumn ChooserTableColumn(int id, const std::string& title) { 111 ui::TableColumn ChooserTableColumn(int id, const std::string& title) {
112 ui::TableColumn column; 112 ui::TableColumn column;
113 column.id = id; 113 column.id = id;
114 column.title = base::ASCIIToUTF16(title.c_str()); 114 column.title = base::ASCIIToUTF16(title.c_str());
115 return column; 115 return column;
116 } 116 }
117 117
118 class ChooserTableModel : public ui::TableModel, 118 class ChooserTableModel : public ui::TableModel,
119 public ChooserBubbleDelegate::Observer { 119 public ChooserBubbleController::Observer {
120 public: 120 public:
121 explicit ChooserTableModel(ChooserBubbleDelegate* chooser_bubble_delegate); 121 explicit ChooserTableModel(ChooserBubbleController* controller);
122 122
123 // ui::TableModel: 123 // ui::TableModel:
124 int RowCount() override; 124 int RowCount() override;
125 base::string16 GetText(int row, int column_id) override; 125 base::string16 GetText(int row, int column_id) override;
126 void SetObserver(ui::TableModelObserver* observer) override; 126 void SetObserver(ui::TableModelObserver* observer) override;
127 127
128 // ChooserBubbleDelegate::Observer: 128 // ChooserBubbleController::Observer:
129 void OnOptionsInitialized() override; 129 void OnOptionsInitialized() override;
130 void OnOptionAdded(size_t index) override; 130 void OnOptionAdded(size_t index) override;
131 void OnOptionRemoved(size_t index) override; 131 void OnOptionRemoved(size_t index) override;
132 132
133 void Update(); 133 void Update();
134 void SetConnectButton(views::LabelButton* connect_button); 134 void SetConnectButton(views::LabelButton* connect_button);
135 135
136 private: 136 private:
137 ui::TableModelObserver* observer_; 137 ui::TableModelObserver* observer_;
138 ChooserBubbleDelegate* chooser_bubble_delegate_; 138 ChooserBubbleController* controller_;
139 views::LabelButton* connect_button_; 139 views::LabelButton* connect_button_;
140 }; 140 };
141 141
142 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate( 142 ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate(
143 views::View* anchor_view, 143 views::View* anchor_view,
144 views::BubbleBorder::Arrow anchor_arrow, 144 views::BubbleBorder::Arrow anchor_arrow,
145 ChooserBubbleUiView* owner, 145 ChooserBubbleUiView* owner,
146 ChooserBubbleDelegate* chooser_bubble_delegate) 146 ChooserBubbleController* controller)
147 : views::BubbleDelegateView(anchor_view, anchor_arrow), 147 : views::BubbleDelegateView(anchor_view, anchor_arrow),
148 owner_(owner), 148 owner_(owner),
149 chooser_bubble_delegate_(chooser_bubble_delegate), 149 controller_(controller),
150 button_pressed_(false) { 150 button_pressed_(false) {
151 // TODO(juncai): try using DialogClientView to build the chooser UI view since 151 // TODO(juncai): try using DialogClientView to build the chooser UI view since
152 // they look similar. 152 // they look similar.
153 // https://crbug.com/587545 153 // https://crbug.com/587545
154 // ------------------------------------ 154 // ------------------------------------
155 // | Chooser bubble title | 155 // | Chooser bubble title |
156 // | -------------------------------- | 156 // | -------------------------------- |
157 // | | option 0 | | 157 // | | option 0 | |
158 // | | option 1 | | 158 // | | option 1 | |
159 // | | option 2 | | 159 // | | option 2 | |
(...skipping 11 matching lines...) Expand all
171 171
172 views::ColumnSet* column_set = layout->AddColumnSet(0); 172 views::ColumnSet* column_set = layout->AddColumnSet(0);
173 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, 173 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
174 views::GridLayout::USE_PREF, 0, 0); 174 views::GridLayout::USE_PREF, 0, 0);
175 175
176 // Lay out the table view. 176 // Lay out the table view.
177 layout->StartRow(0, 0); 177 layout->StartRow(0, 0);
178 std::vector<ui::TableColumn> table_columns; 178 std::vector<ui::TableColumn> table_columns;
179 table_columns.push_back(ChooserTableColumn( 179 table_columns.push_back(ChooserTableColumn(
180 0, "" /* Empty string makes the column title invisible */)); 180 0, "" /* Empty string makes the column title invisible */));
181 chooser_table_model_ = new ChooserTableModel(chooser_bubble_delegate_); 181 chooser_table_model_ = new ChooserTableModel(controller_);
182 table_view_ = new views::TableView(chooser_table_model_, table_columns, 182 table_view_ = new views::TableView(chooser_table_model_, table_columns,
183 views::TEXT_ONLY, true); 183 views::TEXT_ONLY, true);
184 table_view_->set_select_on_remove(false); 184 table_view_->set_select_on_remove(false);
185 chooser_table_model_->SetObserver(table_view_); 185 chooser_table_model_->SetObserver(table_view_);
186 table_view_->SetObserver(this); 186 table_view_->SetObserver(this);
187 table_view_->SetEnabled(chooser_bubble_delegate_->NumOptions() > 0); 187 table_view_->SetEnabled(controller_->NumOptions() > 0);
188 layout->AddView(table_view_->CreateParentIfNecessary(), 1, 1, 188 layout->AddView(table_view_->CreateParentIfNecessary(), 1, 1,
189 views::GridLayout::FILL, views::GridLayout::FILL, 189 views::GridLayout::FILL, views::GridLayout::FILL,
190 kChooserPermissionBubbleWidth, 190 kChooserPermissionBubbleWidth,
191 kChooserPermissionBubbleHeight); 191 kChooserPermissionBubbleHeight);
192 192
193 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 193 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
194 194
195 // Lay out the Connect/Cancel buttons. 195 // Lay out the Connect/Cancel buttons.
196 layout->StartRow(0, 0); 196 layout->StartRow(0, 0);
197 views::View* button_row = new views::View(); 197 views::View* button_row = new views::View();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 240
241 ChooserBubbleUiViewDelegate::~ChooserBubbleUiViewDelegate() { 241 ChooserBubbleUiViewDelegate::~ChooserBubbleUiViewDelegate() {
242 RemoveAllChildViews(true); 242 RemoveAllChildViews(true);
243 if (owner_) 243 if (owner_)
244 owner_->Close(); 244 owner_->Close();
245 chooser_table_model_->SetObserver(nullptr); 245 chooser_table_model_->SetObserver(nullptr);
246 } 246 }
247 247
248 void ChooserBubbleUiViewDelegate::Close() { 248 void ChooserBubbleUiViewDelegate::Close() {
249 if (!button_pressed_) 249 if (!button_pressed_)
250 chooser_bubble_delegate_->Close(); 250 controller_->Close();
251 owner_ = nullptr; 251 owner_ = nullptr;
252 GetWidget()->Close(); 252 GetWidget()->Close();
253 } 253 }
254 254
255 bool ChooserBubbleUiViewDelegate::ShouldShowWindowTitle() const { 255 bool ChooserBubbleUiViewDelegate::ShouldShowWindowTitle() const {
256 return true; 256 return true;
257 } 257 }
258 258
259 base::string16 ChooserBubbleUiViewDelegate::GetWindowTitle() const { 259 base::string16 ChooserBubbleUiViewDelegate::GetWindowTitle() const {
260 return l10n_util::GetStringUTF16(IDS_CHOOSER_BUBBLE_PROMPT); 260 return l10n_util::GetStringUTF16(IDS_CHOOSER_BUBBLE_PROMPT);
261 } 261 }
262 262
263 void ChooserBubbleUiViewDelegate::OnWidgetDestroying(views::Widget* widget) { 263 void ChooserBubbleUiViewDelegate::OnWidgetDestroying(views::Widget* widget) {
264 views::BubbleDelegateView::OnWidgetDestroying(widget); 264 views::BubbleDelegateView::OnWidgetDestroying(widget);
265 if (owner_) { 265 if (owner_) {
266 owner_->Close(); 266 owner_->Close();
267 owner_ = nullptr; 267 owner_ = nullptr;
268 } 268 }
269 } 269 }
270 270
271 void ChooserBubbleUiViewDelegate::ButtonPressed(views::Button* button, 271 void ChooserBubbleUiViewDelegate::ButtonPressed(views::Button* button,
272 const ui::Event& event) { 272 const ui::Event& event) {
273 button_pressed_ = true; 273 button_pressed_ = true;
274 274
275 if (button == connect_button_) 275 if (button == connect_button_)
276 chooser_bubble_delegate_->Select(table_view_->selection_model().active()); 276 controller_->Select(table_view_->selection_model().active());
277 else 277 else
278 chooser_bubble_delegate_->Cancel(); 278 controller_->Cancel();
279 279
280 if (owner_) { 280 if (owner_) {
281 owner_->Close(); 281 owner_->Close();
282 owner_ = nullptr; 282 owner_ = nullptr;
283 } 283 }
284 } 284 }
285 285
286 void ChooserBubbleUiViewDelegate::StyledLabelLinkClicked( 286 void ChooserBubbleUiViewDelegate::StyledLabelLinkClicked(
287 views::StyledLabel* label, 287 views::StyledLabel* label,
288 const gfx::Range& range, 288 const gfx::Range& range,
289 int event_flags) { 289 int event_flags) {
290 chooser_bubble_delegate_->OpenHelpCenterUrl(); 290 controller_->OpenHelpCenterUrl();
291 } 291 }
292 292
293 void ChooserBubbleUiViewDelegate::OnSelectionChanged() { 293 void ChooserBubbleUiViewDelegate::OnSelectionChanged() {
294 connect_button_->SetEnabled(!table_view_->selection_model().empty()); 294 connect_button_->SetEnabled(!table_view_->selection_model().empty());
295 } 295 }
296 296
297 void ChooserBubbleUiViewDelegate::UpdateAnchor( 297 void ChooserBubbleUiViewDelegate::UpdateAnchor(
298 views::View* anchor_view, 298 views::View* anchor_view,
299 views::BubbleBorder::Arrow anchor_arrow) { 299 views::BubbleBorder::Arrow anchor_arrow) {
300 if (GetAnchorView() == anchor_view && arrow() == anchor_arrow) 300 if (GetAnchorView() == anchor_view && arrow() == anchor_arrow)
301 return; 301 return;
302 302
303 set_arrow(anchor_arrow); 303 set_arrow(anchor_arrow);
304 304
305 // Update the border in the bubble: will either add or remove the arrow. 305 // Update the border in the bubble: will either add or remove the arrow.
306 views::BubbleFrameView* frame = 306 views::BubbleFrameView* frame =
307 views::BubbleDelegateView::GetBubbleFrameView(); 307 views::BubbleDelegateView::GetBubbleFrameView();
308 views::BubbleBorder::Arrow adjusted_arrow = anchor_arrow; 308 views::BubbleBorder::Arrow adjusted_arrow = anchor_arrow;
309 if (base::i18n::IsRTL()) 309 if (base::i18n::IsRTL())
310 adjusted_arrow = views::BubbleBorder::horizontal_mirror(adjusted_arrow); 310 adjusted_arrow = views::BubbleBorder::horizontal_mirror(adjusted_arrow);
311 frame->SetBubbleBorder(scoped_ptr<views::BubbleBorder>( 311 frame->SetBubbleBorder(scoped_ptr<views::BubbleBorder>(
312 new views::BubbleBorder(adjusted_arrow, shadow(), color()))); 312 new views::BubbleBorder(adjusted_arrow, shadow(), color())));
313 313
314 // Reposition the bubble based on the updated arrow and view. 314 // Reposition the bubble based on the updated arrow and view.
315 SetAnchorView(anchor_view); 315 SetAnchorView(anchor_view);
316 } 316 }
317 317
318 ChooserTableModel::ChooserTableModel( 318 ChooserTableModel::ChooserTableModel(ChooserBubbleController* controller)
319 ChooserBubbleDelegate* chooser_bubble_delegate) 319 : observer_(nullptr), controller_(controller) {
320 : observer_(nullptr), chooser_bubble_delegate_(chooser_bubble_delegate) { 320 controller_->set_observer(this);
321 chooser_bubble_delegate_->set_observer(this);
322 } 321 }
323 322
324 int ChooserTableModel::RowCount() { 323 int ChooserTableModel::RowCount() {
325 // When there are no devices, the table contains a message saying there 324 // When there are no devices, the table contains a message saying there
326 // are no devices, so the number of rows is always at least 1. 325 // are no devices, so the number of rows is always at least 1.
327 return std::max(static_cast<int>(chooser_bubble_delegate_->NumOptions()), 1); 326 return std::max(static_cast<int>(controller_->NumOptions()), 1);
328 } 327 }
329 328
330 base::string16 ChooserTableModel::GetText(int row, int column_id) { 329 base::string16 ChooserTableModel::GetText(int row, int column_id) {
331 int num_options = static_cast<int>(chooser_bubble_delegate_->NumOptions()); 330 int num_options = static_cast<int>(controller_->NumOptions());
332 if (num_options == 0) { 331 if (num_options == 0) {
333 DCHECK_EQ(0, row); 332 DCHECK_EQ(0, row);
334 return l10n_util::GetStringUTF16( 333 return l10n_util::GetStringUTF16(
335 IDS_CHOOSER_BUBBLE_NO_DEVICES_FOUND_PROMPT); 334 IDS_CHOOSER_BUBBLE_NO_DEVICES_FOUND_PROMPT);
336 } 335 }
337 336
338 DCHECK_GE(row, 0); 337 DCHECK_GE(row, 0);
339 DCHECK_LT(row, num_options); 338 DCHECK_LT(row, num_options);
340 return chooser_bubble_delegate_->GetOption(static_cast<size_t>(row)); 339 return controller_->GetOption(static_cast<size_t>(row));
341 } 340 }
342 341
343 void ChooserTableModel::SetObserver(ui::TableModelObserver* observer) { 342 void ChooserTableModel::SetObserver(ui::TableModelObserver* observer) {
344 observer_ = observer; 343 observer_ = observer;
345 } 344 }
346 345
347 void ChooserTableModel::OnOptionsInitialized() { 346 void ChooserTableModel::OnOptionsInitialized() {
348 if (observer_) { 347 if (observer_) {
349 observer_->OnModelChanged(); 348 observer_->OnModelChanged();
350 Update(); 349 Update();
(...skipping 10 matching lines...) Expand all
361 void ChooserTableModel::OnOptionRemoved(size_t index) { 360 void ChooserTableModel::OnOptionRemoved(size_t index) {
362 if (observer_) { 361 if (observer_) {
363 observer_->OnItemsRemoved(static_cast<int>(index), 1); 362 observer_->OnItemsRemoved(static_cast<int>(index), 1);
364 Update(); 363 Update();
365 } 364 }
366 } 365 }
367 366
368 void ChooserTableModel::Update() { 367 void ChooserTableModel::Update() {
369 views::TableView* table_view = static_cast<views::TableView*>(observer_); 368 views::TableView* table_view = static_cast<views::TableView*>(observer_);
370 369
371 if (chooser_bubble_delegate_->NumOptions() == 0) { 370 if (controller_->NumOptions() == 0) {
372 observer_->OnModelChanged(); 371 observer_->OnModelChanged();
373 table_view->SetEnabled(false); 372 table_view->SetEnabled(false);
374 } else { 373 } else {
375 table_view->SetEnabled(true); 374 table_view->SetEnabled(true);
376 } 375 }
377 } 376 }
378 377
379 void ChooserTableModel::SetConnectButton(views::LabelButton* connect_button) { 378 void ChooserTableModel::SetConnectButton(views::LabelButton* connect_button) {
380 connect_button_ = connect_button; 379 connect_button_ = connect_button;
381 } 380 }
382 381
383 ////////////////////////////////////////////////////////////////////////////// 382 //////////////////////////////////////////////////////////////////////////////
384 // ChooserBubbleUiView 383 // ChooserBubbleUiView
385 384
386 ChooserBubbleUiView::ChooserBubbleUiView( 385 ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser,
387 Browser* browser, 386 ChooserBubbleController* controller)
388 ChooserBubbleDelegate* chooser_bubble_delegate)
389 : browser_(browser), 387 : browser_(browser),
390 chooser_bubble_delegate_(chooser_bubble_delegate), 388 controller_(controller),
391 chooser_bubble_ui_view_delegate_(nullptr) { 389 chooser_bubble_ui_view_delegate_(nullptr) {
392 DCHECK(browser_); 390 DCHECK(browser_);
393 DCHECK(chooser_bubble_delegate_); 391 DCHECK(controller_);
394 } 392 }
395 393
396 ChooserBubbleUiView::~ChooserBubbleUiView() {} 394 ChooserBubbleUiView::~ChooserBubbleUiView() {}
397 395
398 void ChooserBubbleUiView::Show(BubbleReference bubble_reference) { 396 void ChooserBubbleUiView::Show(BubbleReference bubble_reference) {
399 chooser_bubble_ui_view_delegate_ = new ChooserBubbleUiViewDelegate( 397 chooser_bubble_ui_view_delegate_ = new ChooserBubbleUiViewDelegate(
400 GetAnchorView(), GetAnchorArrow(), this, chooser_bubble_delegate_); 398 GetAnchorView(), GetAnchorArrow(), this, controller_);
401 399
402 // Set |parent_window| because some valid anchors can become hidden. 400 // Set |parent_window| because some valid anchors can become hidden.
403 views::Widget* widget = views::Widget::GetWidgetForNativeWindow( 401 views::Widget* widget = views::Widget::GetWidgetForNativeWindow(
404 browser_->window()->GetNativeWindow()); 402 browser_->window()->GetNativeWindow());
405 chooser_bubble_ui_view_delegate_->set_parent_window(widget->GetNativeView()); 403 chooser_bubble_ui_view_delegate_->set_parent_window(widget->GetNativeView());
406 404
407 views::BubbleDelegateView::CreateBubble(chooser_bubble_ui_view_delegate_) 405 views::BubbleDelegateView::CreateBubble(chooser_bubble_ui_view_delegate_)
408 ->Show(); 406 ->Show();
409 407
410 chooser_bubble_ui_view_delegate_->chooser_table_model_->Update(); 408 chooser_bubble_ui_view_delegate_->chooser_table_model_->Update();
(...skipping 23 matching lines...) Expand all
434 return browser_view->exclusive_access_bubble()->GetView(); 432 return browser_view->exclusive_access_bubble()->GetView();
435 433
436 return browser_view->top_container(); 434 return browser_view->top_container();
437 } 435 }
438 436
439 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() { 437 views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() {
440 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) 438 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
441 return views::BubbleBorder::TOP_LEFT; 439 return views::BubbleBorder::TOP_LEFT;
442 return views::BubbleBorder::NONE; 440 return views::BubbleBorder::NONE;
443 } 441 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698