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

Side by Side Diff: chrome/browser/ui/views/extensions/chooser_dialog_view_unittest.cc

Issue 2171103002: Add test for WebBluetooth chooser spinner, status text and rescan button (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changed chooser_dialog_view_browsertest.cc to chooser_dialog_view_unittest.cc Created 4 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/extensions/chooser_dialog_view.h"
6
7 #include "base/macros.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/chooser_controller/mock_chooser_controller.h"
10 #include "chrome/browser/ui/views/chooser_content_view.h"
11 #include "chrome/grit/generated_resources.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
msw 2016/07/27 20:25:46 optional nit: not needed (included via views_test_
juncai 2016/07/27 21:36:09 Done.
14 #include "ui/base/l10n/l10n_util.h"
15 #include "ui/views/controls/button/label_button.h"
16 #include "ui/views/controls/table/table_view.h"
17 #include "ui/views/test/views_test_base.h"
18 #include "ui/views/widget/widget.h"
19 #include "ui/views/window/dialog_client_view.h"
20
21 class ChooserDialogViewTest : public views::ViewsTestBase {
22 public:
23 ChooserDialogViewTest() {}
24 ~ChooserDialogViewTest() override {}
25
26 // views::ViewsTestBase:
27 void SetUp() override {
28 views::ViewsTestBase::SetUp();
29 std::unique_ptr<MockChooserController> mock_chooser_controller(
30 new MockChooserController(nullptr));
31 mock_chooser_controller_ = mock_chooser_controller.get();
32 std::unique_ptr<ChooserDialogView> chooser_dialog_view(
33 new ChooserDialogView(std::move(mock_chooser_controller)));
34 chooser_dialog_view_ = chooser_dialog_view.get();
35 table_view_ = chooser_dialog_view_->chooser_content_view_for_test()
36 ->table_view_for_test();
37 ASSERT_TRUE(table_view_);
38 dialog_ = views::DialogDelegate::CreateDialogWidget(
39 chooser_dialog_view.release(), GetContext(), nullptr);
40 ok_button_ = chooser_dialog_view_->GetDialogClientView()->ok_button();
41 ASSERT_TRUE(ok_button_);
42 cancel_button_ =
43 chooser_dialog_view_->GetDialogClientView()->cancel_button();
44 ASSERT_TRUE(cancel_button_);
45 }
46
47 // views::ViewsTestBase:
48 void TearDown() override {
49 dialog_->CloseNow();
50 views::ViewsTestBase::TearDown();
51 }
52
53 protected:
54 MockChooserController* mock_chooser_controller_;
55 ChooserDialogView* chooser_dialog_view_;
56 views::TableView* table_view_;
57 views::LabelButton* ok_button_;
58 views::LabelButton* cancel_button_;
59 views::Widget* dialog_;
60
61 private:
62 DISALLOW_COPY_AND_ASSIGN(ChooserDialogViewTest);
63 };
64
65 TEST_F(ChooserDialogViewTest, InitialState) {
66 // OK button is disabled since there is no option.
67 EXPECT_FALSE(ok_button_->enabled());
68 // Cancel button is always enabled.
69 EXPECT_TRUE(cancel_button_->enabled());
70 EXPECT_EQ(
71 l10n_util::GetStringUTF16(IDS_USB_DEVICE_CHOOSER_CONNECT_BUTTON_TEXT),
72 ok_button_->GetText());
73 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_CANCEL_BUTTON_TEXT),
74 cancel_button_->GetText());
75 }
76
77 TEST_F(ChooserDialogViewTest, SelectAndDeselectAnOption) {
78 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
79 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
80 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
81 // OK button is disabled since no option is selected.
82 EXPECT_FALSE(ok_button_->enabled());
83 EXPECT_TRUE(cancel_button_->enabled());
84
85 // Select option 0.
86 table_view_->Select(0);
87 // OK button is enabled since an option is selected.
88 EXPECT_TRUE(ok_button_->enabled());
89 EXPECT_TRUE(cancel_button_->enabled());
90
91 // Unselect option 0.
92 table_view_->Select(-1);
93 // OK button is disabled since no option is selected.
94 EXPECT_FALSE(ok_button_->enabled());
95 EXPECT_TRUE(cancel_button_->enabled());
96
97 // Select option 1.
98 table_view_->Select(1);
99 // OK button is enabled since an option is selected.
100 EXPECT_TRUE(ok_button_->enabled());
101 EXPECT_TRUE(cancel_button_->enabled());
102
103 // Unselect option 1.
104 table_view_->Select(-1);
105 // OK button is disabled since no option is selected.
106 EXPECT_FALSE(ok_button_->enabled());
107 EXPECT_TRUE(cancel_button_->enabled());
108 }
109
110 TEST_F(ChooserDialogViewTest, SelectAnOptionAndThenSelectAnotherOption) {
111 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
112 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
113 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
114 EXPECT_FALSE(ok_button_->enabled());
115 EXPECT_TRUE(cancel_button_->enabled());
116
117 // Select option 0.
118 table_view_->Select(0);
119 EXPECT_TRUE(ok_button_->enabled());
120 EXPECT_TRUE(cancel_button_->enabled());
121
122 // Select option 1.
123 table_view_->Select(1);
124 EXPECT_TRUE(ok_button_->enabled());
125 EXPECT_TRUE(cancel_button_->enabled());
126
127 // Select option 2.
128 table_view_->Select(2);
129 EXPECT_TRUE(ok_button_->enabled());
130 EXPECT_TRUE(cancel_button_->enabled());
131 }
132
133 TEST_F(ChooserDialogViewTest, SelectAnOptionAndRemoveAnotherOption) {
134 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
135 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
136 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
137 EXPECT_FALSE(ok_button_->enabled());
138 EXPECT_TRUE(cancel_button_->enabled());
139
140 // Select option 1.
141 table_view_->Select(1);
142 EXPECT_TRUE(ok_button_->enabled());
143 EXPECT_TRUE(cancel_button_->enabled());
144
145 // Remove option 0, the list becomes: b c.
146 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
147 EXPECT_TRUE(ok_button_->enabled());
148 EXPECT_TRUE(cancel_button_->enabled());
149
150 // Remove option 1.
151 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
152 EXPECT_TRUE(ok_button_->enabled());
153 EXPECT_TRUE(cancel_button_->enabled());
154 }
155
156 TEST_F(ChooserDialogViewTest, SelectAnOptionAndRemoveTheSelectedOption) {
157 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
158 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
159 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
160 EXPECT_FALSE(ok_button_->enabled());
161 EXPECT_TRUE(cancel_button_->enabled());
162
163 // Select option 1.
164 table_view_->Select(1);
165 EXPECT_TRUE(ok_button_->enabled());
166 EXPECT_TRUE(cancel_button_->enabled());
167
168 // Remove option 1.
169 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
170 // OK button is disabled since the selected option is removed.
171 EXPECT_FALSE(ok_button_->enabled());
172 EXPECT_TRUE(cancel_button_->enabled());
173 }
174
175 TEST_F(ChooserDialogViewTest,
176 AddAnOptionAndSelectItAndRemoveTheSelectedOption) {
177 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
178 EXPECT_FALSE(ok_button_->enabled());
179 EXPECT_TRUE(cancel_button_->enabled());
180
181 // Select option 0.
182 table_view_->Select(0);
183 EXPECT_TRUE(ok_button_->enabled());
184 EXPECT_TRUE(cancel_button_->enabled());
185
186 // Remove option 0.
187 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
188 // There is no option shown now and the OK button is disabled.
189 EXPECT_FALSE(ok_button_->enabled());
190 EXPECT_TRUE(cancel_button_->enabled());
191 }
192
193 TEST_F(ChooserDialogViewTest, Accept) {
194 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(1);
195 chooser_dialog_view_->GetDialogClientView()->AcceptWindow();
196 }
197
198 TEST_F(ChooserDialogViewTest, Cancel) {
199 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1);
200 chooser_dialog_view_->GetDialogClientView()->CancelWindow();
201 }
202
203 TEST_F(ChooserDialogViewTest, Close) {
204 EXPECT_CALL(*mock_chooser_controller_, Close()).Times(1);
205 chooser_dialog_view_->GetDialogClientView()->GetWidget()->Close();
206 }
207
208 TEST_F(ChooserDialogViewTest, AdapterOnAndOffAndOn) {
209 mock_chooser_controller_->OnAdapterPresenceChanged(
210 content::BluetoothChooser::AdapterPresence::POWERED_ON);
211 EXPECT_FALSE(ok_button_->enabled());
212 EXPECT_TRUE(cancel_button_->enabled());
213
214 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
215 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
216 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
217 EXPECT_FALSE(ok_button_->enabled());
218 EXPECT_TRUE(cancel_button_->enabled());
219
220 table_view_->Select(1);
221 EXPECT_TRUE(ok_button_->enabled());
222 EXPECT_TRUE(cancel_button_->enabled());
223
224 mock_chooser_controller_->OnAdapterPresenceChanged(
225 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
226 // Since the adapter is turned off, the previously selected option
227 // becomes invalid, the OK button is disabled.
228 EXPECT_FALSE(ok_button_->enabled());
229 EXPECT_TRUE(cancel_button_->enabled());
230
231 mock_chooser_controller_->OnAdapterPresenceChanged(
232 content::BluetoothChooser::AdapterPresence::POWERED_ON);
233 EXPECT_FALSE(ok_button_->enabled());
234 EXPECT_TRUE(cancel_button_->enabled());
235 }
236
237 TEST_F(ChooserDialogViewTest, DiscoveringAndIdle) {
238 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
239 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
240 mock_chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
241 table_view_->Select(1);
242 EXPECT_TRUE(ok_button_->enabled());
243 EXPECT_TRUE(cancel_button_->enabled());
244
245 mock_chooser_controller_->OnDiscoveryStateChanged(
246 content::BluetoothChooser::DiscoveryState::DISCOVERING);
247 // OK button is disabled since the chooser is refreshing options.
248 EXPECT_FALSE(ok_button_->enabled());
249 EXPECT_TRUE(cancel_button_->enabled());
250
251 mock_chooser_controller_->OnDiscoveryStateChanged(
252 content::BluetoothChooser::DiscoveryState::IDLE);
253 // OK button is disabled since the chooser refreshed options.
254 EXPECT_FALSE(ok_button_->enabled());
255 EXPECT_TRUE(cancel_button_->enabled());
256 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698