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

Side by Side Diff: chrome/browser/ui/views/chooser_content_view.h

Issue 2468403002: Make WebBluetooth chooser consistent on Android and desktops (desktop part) (Closed)
Patch Set: address comments Created 4 years, 1 month 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_ 6 #define CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/strings/string16.h" 11 #include "base/strings/string16.h"
12 #include "chrome/browser/chooser_controller/chooser_controller.h" 12 #include "chrome/browser/chooser_controller/chooser_controller.h"
13 #include "ui/base/models/table_model.h" 13 #include "ui/base/models/table_model.h"
14 #include "ui/views/controls/link_listener.h" 14 #include "ui/gfx/range/range.h"
15 #include "ui/views/controls/styled_label_listener.h" 15 #include "ui/views/controls/styled_label_listener.h"
16 #include "ui/views/view.h" 16 #include "ui/views/view.h"
17 17
18 namespace views { 18 namespace views {
19 class Link; 19 class Link;
20 class StyledLabel; 20 class StyledLabel;
21 class TableView; 21 class TableView;
22 class TableViewObserver; 22 class TableViewObserver;
23 class Throbber; 23 class Throbber;
24 } 24 }
25 25
26 // A bubble or dialog view for choosing among several options in a table. 26 // A bubble or dialog view for choosing among several options in a table.
27 // Used for WebUSB/WebBluetooth device selection for Chrome and extensions. 27 // Used for WebUSB/WebBluetooth device selection for Chrome and extensions.
28 // 28 //
29 // TODO(juncai): change ChooserContentView class name to be more specific. 29 // TODO(juncai): change ChooserContentView class name to be more specific.
30 // https://crbug.com/651568 30 // https://crbug.com/651568
31 class ChooserContentView : public views::View, 31 class ChooserContentView : public views::View,
32 public ui::TableModel, 32 public ui::TableModel,
33 public ChooserController::View, 33 public ChooserController::View,
34 public views::LinkListener,
35 public views::StyledLabelListener { 34 public views::StyledLabelListener {
36 public: 35 public:
37 ChooserContentView(views::TableViewObserver* table_view_observer, 36 ChooserContentView(views::TableViewObserver* table_view_observer,
38 std::unique_ptr<ChooserController> chooser_controller); 37 std::unique_ptr<ChooserController> chooser_controller);
39 ~ChooserContentView() override; 38 ~ChooserContentView() override;
40 39
41 // views::View: 40 // views::View:
42 gfx::Size GetPreferredSize() const override; 41 gfx::Size GetPreferredSize() const override;
43 void Layout() override; 42 void Layout() override;
44 43
45 // ui::TableModel: 44 // ui::TableModel:
46 int RowCount() override; 45 int RowCount() override;
47 base::string16 GetText(int row, int column_id) override; 46 base::string16 GetText(int row, int column_id) override;
48 void SetObserver(ui::TableModelObserver* observer) override; 47 void SetObserver(ui::TableModelObserver* observer) override;
49 gfx::ImageSkia GetIcon(int row) override; 48 gfx::ImageSkia GetIcon(int row) override;
50 49
51 // ChooserController::View: 50 // ChooserController::View:
52 void OnOptionsInitialized() override; 51 void OnOptionsInitialized() override;
53 void OnOptionAdded(size_t index) override; 52 void OnOptionAdded(size_t index) override;
54 void OnOptionRemoved(size_t index) override; 53 void OnOptionRemoved(size_t index) override;
55 void OnOptionUpdated(size_t index) override; 54 void OnOptionUpdated(size_t index) override;
56 void OnAdapterEnabledChanged(bool enabled) override; 55 void OnAdapterEnabledChanged(bool enabled) override;
57 void OnRefreshStateChanged(bool refreshing) override; 56 void OnRefreshStateChanged(bool refreshing) override;
58 57
59 // views::LinkListener:
60 void LinkClicked(views::Link* source, int event_flags) override;
61
62 // views::StyledLabelListener: 58 // views::StyledLabelListener:
63 void StyledLabelLinkClicked(views::StyledLabel* label, 59 void StyledLabelLinkClicked(views::StyledLabel* label,
64 const gfx::Range& range, 60 const gfx::Range& range,
65 int event_flags) override; 61 int event_flags) override;
66 62
67 base::string16 GetWindowTitle() const; 63 base::string16 GetWindowTitle() const;
68 base::string16 GetDialogButtonLabel(ui::DialogButton button) const; 64 base::string16 GetDialogButtonLabel(ui::DialogButton button) const;
69 bool IsDialogButtonEnabled(ui::DialogButton button) const; 65 bool IsDialogButtonEnabled(ui::DialogButton button) const;
70 // Ownership of the view is passed to the caller. 66 // Ownership of the view is passed to the caller.
71 views::Link* CreateExtraView();
72 // Ownership of the view is passed to the caller.
73 views::StyledLabel* CreateFootnoteView(); 67 views::StyledLabel* CreateFootnoteView();
74 void Accept(); 68 void Accept();
75 void Cancel(); 69 void Cancel();
76 void Close(); 70 void Close();
77 void UpdateTableView(); 71 void UpdateTableView();
78 72 void SetGetHelpAndReScanLink();
79 views::TableView* table_view_for_test() const { return table_view_; }
80 views::Throbber* throbber_for_test() const { return throbber_; }
81 views::StyledLabel* turn_adapter_off_help_for_test() const {
82 return turn_adapter_off_help_;
83 }
84 73
85 private: 74 private:
75 friend class ChooserContentViewTest;
76 friend class ChooserDialogViewTest;
77 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest, InitialState);
78 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest, AdapterOnAndOffAndOn);
79 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest,
80 DiscoveringAndNoOptionAddedAndIdle);
81 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest,
82 DiscoveringAndOneOptionAddedAndSelectedAndIdle);
83 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest, ClickRescanLink);
84 FRIEND_TEST_ALL_PREFIXES(ChooserContentViewTest, ClickGetHelpLink);
85
86 std::unique_ptr<ChooserController> chooser_controller_; 86 std::unique_ptr<ChooserController> chooser_controller_;
87 views::TableView* table_view_ = nullptr; // Weak. 87 views::TableView* table_view_ = nullptr; // Weak.
88 views::View* table_parent_ = nullptr; // Weak. 88 views::View* table_parent_ = nullptr; // Weak.
89 views::StyledLabel* turn_adapter_off_help_ = nullptr; // Weak. 89 views::StyledLabel* turn_adapter_off_help_ = nullptr; // Weak.
90 views::Throbber* throbber_ = nullptr; // Weak. 90 views::Throbber* throbber_ = nullptr; // Weak.
91 views::Link* discovery_state_ = nullptr; // Weak. 91 views::StyledLabel* footnote_link_ = nullptr; // Weak.
92 views::StyledLabel* help_link_ = nullptr; // Weak. 92 base::string16 help_text_;
93 base::string16 help_and_scanning_text_;
94 base::string16 help_and_re_scan_text_;
95 gfx::Range help_text_range_;
96 gfx::Range re_scan_text_range_;
93 97
94 DISALLOW_COPY_AND_ASSIGN(ChooserContentView); 98 DISALLOW_COPY_AND_ASSIGN(ChooserContentView);
95 }; 99 };
96 100
97 #endif // CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_ 101 #endif // CHROME_BROWSER_UI_VIEWS_CHOOSER_CONTENT_VIEW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698