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

Side by Side Diff: ash/system/tray/tray_info_label_unittest.cc

Issue 2957043002: Add a row in the network tray to inform users to turn Bluetooth on to enable Tether. (Closed)
Patch Set: changed message ids to actual string names Created 3 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
« no previous file with comments | « ash/system/tray/tray_info_label.cc ('k') | ash/system/tray/tray_popup_item_style.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 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 "ash/system/tray/tray_info_label.h"
6
7 #include "ash/strings/grit/ash_strings.h"
8 #include "ash/test/ash_test_base.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/accessibility/ax_node_data.h"
11
12 namespace ash {
13
14 namespace {
15
16 class TestClickEvent : public ui::Event {
17 public:
18 TestClickEvent() : ui::Event(ui::ET_MOUSE_PRESSED, base::TimeTicks(), 0) {}
19 };
20
21 class TestDelegate : public TrayInfoLabel::Delegate {
22 public:
23 TestDelegate() {}
24
25 const std::vector<int>& clicked_message_ids() { return clicked_message_ids_; }
26
27 void AddClickableMessageId(int message_id) {
28 clickable_message_ids_.insert(message_id);
29 }
30
31 // TrayInfoLabel::Delegate:
32 void OnLabelClicked(int message_id) override {
33 clicked_message_ids_.push_back(message_id);
34 }
35
36 bool IsLabelClickable(int message_id) const override {
37 return clickable_message_ids_.find(message_id) !=
38 clickable_message_ids_.end();
39 }
40
41 private:
42 std::unordered_set<int> clickable_message_ids_;
43 std::vector<int> clicked_message_ids_;
44 };
45
46 } // namespace
47
48 class TrayInfoLabelTest : public AshTestBase {
49 public:
50 void TearDown() override {
51 AshTestBase::TearDown();
52 label_.reset();
53 delegate_.reset();
54 }
55
56 void CreateLabel(bool use_delegate, int message_id) {
57 if (use_delegate)
58 delegate_ = base::MakeUnique<TestDelegate>();
59
60 label_ = base::MakeUnique<TrayInfoLabel>(delegate_.get(), message_id);
61 }
62
63 void ClickOnLabel(bool expect_click_was_handled) {
64 bool click_was_handled = label_->PerformAction(TestClickEvent());
65 EXPECT_EQ(expect_click_was_handled, click_was_handled);
66 }
67
68 void VerifyClickability(bool expected_clickable) {
69 EXPECT_EQ(expected_clickable, label_->IsClickable());
70
71 ui::AXNodeData node_data;
72 label_->GetAccessibleNodeData(&node_data);
73
74 if (expected_clickable)
75 EXPECT_EQ(ui::AX_ROLE_BUTTON, node_data.role);
76 else
77 EXPECT_EQ(ui::AX_ROLE_LABEL_TEXT, node_data.role);
78 }
79
80 void VerifyClicks(const std::vector<int>& expected_clicked_message_ids) {
81 if (!delegate_) {
82 EXPECT_TRUE(expected_clicked_message_ids.empty());
83 return;
84 }
85
86 EXPECT_EQ(expected_clicked_message_ids, delegate_->clicked_message_ids());
87 }
88
89 void VerifyNoClicks() { VerifyClicks(std::vector<int>()); }
90
91 protected:
92 std::unique_ptr<TrayInfoLabel> label_;
93 std::unique_ptr<TestDelegate> delegate_;
94 };
95
96 TEST_F(TrayInfoLabelTest, NoDelegate) {
97 CreateLabel(false /* use_delegate */, IDS_ASH_STATUS_TRAY_BLUETOOTH_ENABLED);
98 VerifyClickability(false /* expected_clickable */);
99
100 label_->Update(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED);
101 VerifyClickability(false /* expected_clickable */);
102
103 label_->Update(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING);
104 VerifyClickability(false /* expected_clickable */);
105 }
106
107 TEST_F(TrayInfoLabelTest, PerformAction) {
108 const int kClickableMessageId1 = IDS_ASH_STATUS_TRAY_BLUETOOTH_ENABLED;
109 const int kClickableMessageId2 = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED;
110 const int kNonClickableMessageId = IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING;
111
112 CreateLabel(true /* use_delegate */, kClickableMessageId1);
113 delegate_->AddClickableMessageId(kClickableMessageId1);
114 delegate_->AddClickableMessageId(kClickableMessageId2);
115 VerifyNoClicks();
116
117 VerifyClickability(true /* expected_clickable */);
118 ClickOnLabel(true /* expect_click_was_handled */);
119 VerifyClicks(std::vector<int>{kClickableMessageId1});
120
121 ClickOnLabel(true /* expect_click_was_handled */);
122 VerifyClicks(std::vector<int>{kClickableMessageId1, kClickableMessageId1});
123
124 label_->Update(kNonClickableMessageId);
125 VerifyClickability(false /* expected_clickable */);
126 ClickOnLabel(false /* expect_click_was_handled */);
127 VerifyClicks(std::vector<int>{kClickableMessageId1, kClickableMessageId1});
128
129 label_->Update(kClickableMessageId2);
130 VerifyClickability(true /* expected_clickable */);
131 ClickOnLabel(true /* expect_click_was_handled */);
132 VerifyClicks(std::vector<int>{kClickableMessageId1, kClickableMessageId1,
133 kClickableMessageId2});
134 }
135
136 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/tray/tray_info_label.cc ('k') | ash/system/tray/tray_popup_item_style.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698