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

Side by Side Diff: chrome/browser/ui/views/chooser_content_view_unittest.cc

Issue 2155743002: Add throbber and status text to WebBluetooth chooser UI on non-Mac desktops (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed compile error on Mac Created 4 years, 5 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 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 #include "chrome/browser/ui/views/chooser_content_view.h" 5 #include "chrome/browser/ui/views/chooser_content_view.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/chooser_controller/mock_chooser_controller.h" 11 #include "chrome/browser/chooser_controller/mock_chooser_controller.h"
12 #include "chrome/grit/generated_resources.h"
13 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/base/l10n/l10n_util.h"
16 #include "ui/views/controls/styled_label.h" 14 #include "ui/views/controls/styled_label.h"
17 #include "ui/views/controls/styled_label_listener.h"
18 #include "ui/views/controls/table/table_view.h" 15 #include "ui/views/controls/table/table_view.h"
19 #include "ui/views/controls/table/table_view_observer.h" 16 #include "ui/views/controls/table/table_view_observer.h"
20 17
21 namespace { 18 namespace {
22 19
20 const char kNoDevicesFound[] = "No devices found.";
msw 2016/07/19 22:08:11 nit: don't do this; use IDS_DEVICE_CHOOSER_NO_DEVI
juncai 2016/07/19 22:58:24 Done.
21
23 class MockTableViewObserver : public views::TableViewObserver { 22 class MockTableViewObserver : public views::TableViewObserver {
24 public: 23 public:
25 // views::TableViewObserver: 24 // views::TableViewObserver:
26 MOCK_METHOD0(OnSelectionChanged, void()); 25 MOCK_METHOD0(OnSelectionChanged, void());
27 }; 26 };
28 27
29 class MockStyledLabelListener : public views::StyledLabelListener {
30 public:
31 // views::StyledLabelListener:
32 MOCK_METHOD3(StyledLabelLinkClicked,
33 void(views::StyledLabel* label,
34 const gfx::Range& range,
35 int event_flags));
36 };
37
38 } // namespace 28 } // namespace
39 29
40 class ChooserContentViewTest : public testing::Test { 30 class ChooserContentViewTest : public testing::Test {
41 public: 31 public:
42 ChooserContentViewTest() {} 32 ChooserContentViewTest() {}
43 33
44 // testing::Test: 34 // testing::Test:
45 void SetUp() override { 35 void SetUp() override {
46 std::unique_ptr<MockChooserController> mock_chooser_controller( 36 std::unique_ptr<MockChooserController> mock_chooser_controller(
47 new MockChooserController(nullptr)); 37 new MockChooserController(nullptr));
48 mock_chooser_controller_ = mock_chooser_controller.get(); 38 mock_chooser_controller_ = mock_chooser_controller.get();
49 mock_table_view_observer_.reset(new MockTableViewObserver()); 39 mock_table_view_observer_.reset(new MockTableViewObserver());
50 chooser_content_view_.reset(new ChooserContentView( 40 chooser_content_view_.reset(new ChooserContentView(
51 mock_table_view_observer_.get(), std::move(mock_chooser_controller))); 41 mock_table_view_observer_.get(), std::move(mock_chooser_controller)));
52 table_view_ = chooser_content_view_->table_view_for_test(); 42 table_view_ = chooser_content_view_->table_view_for_test();
53 ASSERT_TRUE(table_view_); 43 ASSERT_TRUE(table_view_);
54 table_model_ = table_view_->model(); 44 table_model_ = table_view_->model();
55 ASSERT_TRUE(table_model_); 45 ASSERT_TRUE(table_model_);
56 mock_styled_label_listener_.reset(new MockStyledLabelListener()); 46 styled_label_.reset(chooser_content_view_->CreateFootnoteView());
57 styled_label_.reset(chooser_content_view_->CreateFootnoteView(
58 mock_styled_label_listener_.get()));
59 ASSERT_TRUE(styled_label_); 47 ASSERT_TRUE(styled_label_);
60 } 48 }
61 49
62 protected: 50 protected:
63 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_; 51 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_;
64 std::unique_ptr<ChooserContentView> chooser_content_view_; 52 std::unique_ptr<ChooserContentView> chooser_content_view_;
65 MockChooserController* mock_chooser_controller_; 53 MockChooserController* mock_chooser_controller_;
66 views::TableView* table_view_; 54 views::TableView* table_view_;
67 ui::TableModel* table_model_; 55 ui::TableModel* table_model_;
68 std::unique_ptr<MockStyledLabelListener> mock_styled_label_listener_;
69 std::unique_ptr<views::StyledLabel> styled_label_; 56 std::unique_ptr<views::StyledLabel> styled_label_;
70 57
71 private: 58 private:
72 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest); 59 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest);
73 }; 60 };
74 61
75 TEST_F(ChooserContentViewTest, InitialState) { 62 TEST_F(ChooserContentViewTest, InitialState) {
76 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 63 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
77 64
78 // Since "No devices found." needs to be displayed on the |table_view_|, 65 // Since "No devices found." needs to be displayed on the |table_view_|,
79 // the number of rows is 1. 66 // the number of rows is 1.
80 EXPECT_EQ(1, table_view_->RowCount()); 67 EXPECT_EQ(1, table_view_->RowCount());
81 EXPECT_EQ( 68 EXPECT_EQ(base::ASCIIToUTF16(kNoDevicesFound), table_model_->GetText(0, 0));
82 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
83 table_model_->GetText(0, 0));
84 // |table_view_| should be disabled since there is no option shown. 69 // |table_view_| should be disabled since there is no option shown.
85 EXPECT_FALSE(table_view_->enabled()); 70 EXPECT_FALSE(table_view_->enabled());
86 // No option selected. 71 // No option selected.
87 EXPECT_EQ(0, table_view_->SelectedRowCount()); 72 EXPECT_EQ(0, table_view_->SelectedRowCount());
88 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 73 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
89 } 74 }
90 75
91 TEST_F(ChooserContentViewTest, AddOption) { 76 TEST_F(ChooserContentViewTest, AddOption) {
92 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 77 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
93 78
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 EXPECT_EQ(1, table_view_->RowCount()); 129 EXPECT_EQ(1, table_view_->RowCount());
145 EXPECT_EQ(base::ASCIIToUTF16("a"), table_model_->GetText(0, 0)); 130 EXPECT_EQ(base::ASCIIToUTF16("a"), table_model_->GetText(0, 0));
146 EXPECT_TRUE(table_view_->enabled()); 131 EXPECT_TRUE(table_view_->enabled());
147 EXPECT_EQ(0, table_view_->SelectedRowCount()); 132 EXPECT_EQ(0, table_view_->SelectedRowCount());
148 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 133 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
149 134
150 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 135 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
151 // There is no option shown now. But since "No devices found." 136 // There is no option shown now. But since "No devices found."
152 // needs to be displayed on the |table_view_|, the number of rows is 1. 137 // needs to be displayed on the |table_view_|, the number of rows is 1.
153 EXPECT_EQ(1, table_view_->RowCount()); 138 EXPECT_EQ(1, table_view_->RowCount());
154 EXPECT_EQ( 139 EXPECT_EQ(base::ASCIIToUTF16(kNoDevicesFound), table_model_->GetText(0, 0));
155 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
156 table_model_->GetText(0, 0));
157 // |table_view_| should be disabled since all options are removed. 140 // |table_view_| should be disabled since all options are removed.
158 EXPECT_FALSE(table_view_->enabled()); 141 EXPECT_FALSE(table_view_->enabled());
159 EXPECT_EQ(0, table_view_->SelectedRowCount()); 142 EXPECT_EQ(0, table_view_->SelectedRowCount());
160 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 143 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
161 } 144 }
162 145
163 TEST_F(ChooserContentViewTest, AddAndRemoveOption) { 146 TEST_F(ChooserContentViewTest, AddAndRemoveOption) {
164 // Called from TableView::OnItemsRemoved(). 147 // Called from TableView::OnItemsRemoved().
165 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3); 148 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
166 149
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 // Select option 0. 272 // Select option 0.
290 table_view_->Select(0); 273 table_view_->Select(0);
291 EXPECT_EQ(1, table_view_->SelectedRowCount()); 274 EXPECT_EQ(1, table_view_->SelectedRowCount());
292 EXPECT_EQ(0, table_view_->FirstSelectedRow()); 275 EXPECT_EQ(0, table_view_->FirstSelectedRow());
293 276
294 // Remove option 0. 277 // Remove option 0.
295 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 278 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
296 // There is no option shown now. But since "No devices found." 279 // There is no option shown now. But since "No devices found."
297 // needs to be displayed on the |table_view_|, the number of rows is 1. 280 // needs to be displayed on the |table_view_|, the number of rows is 1.
298 EXPECT_EQ(1, table_view_->RowCount()); 281 EXPECT_EQ(1, table_view_->RowCount());
299 EXPECT_EQ( 282 EXPECT_EQ(base::ASCIIToUTF16(kNoDevicesFound), table_model_->GetText(0, 0));
300 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
301 table_model_->GetText(0, 0));
302 // |table_view_| should be disabled since all options are removed. 283 // |table_view_| should be disabled since all options are removed.
303 EXPECT_FALSE(table_view_->enabled()); 284 EXPECT_FALSE(table_view_->enabled());
304 // No option selected. 285 // No option selected.
305 EXPECT_EQ(0, table_view_->SelectedRowCount()); 286 EXPECT_EQ(0, table_view_->SelectedRowCount());
306 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 287 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
307 } 288 }
308 289
309 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) { 290 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) {
310 EXPECT_CALL(*mock_styled_label_listener_, 291 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1);
311 StyledLabelLinkClicked(styled_label_.get(), testing::_, 0))
312 .Times(1);
313 styled_label_->LinkClicked(nullptr, 0); 292 styled_label_->LinkClicked(nullptr, 0);
314 } 293 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698