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

Side by Side Diff: ui/display/chromeos/configure_displays_task_unittest.cc

Issue 2540313002: Split //ui/display and create //ui/display/manager. (Closed)
Patch Set: Cleanup export header. Created 4 years 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 2014 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 <stddef.h>
6
7 #include "base/bind.h"
8 #include "base/macros.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/display/chromeos/configure_displays_task.h"
13 #include "ui/display/chromeos/test/action_logger_util.h"
14 #include "ui/display/chromeos/test/test_native_display_delegate.h"
15 #include "ui/display/fake_display_snapshot.h"
16
17 namespace ui {
18 namespace test {
19
20 namespace {
21
22 class ConfigureDisplaysTaskTest : public testing::Test {
23 public:
24 ConfigureDisplaysTaskTest()
25 : delegate_(&log_),
26 callback_called_(false),
27 status_(ConfigureDisplaysTask::ERROR),
28 small_mode_(gfx::Size(1366, 768), false, 60.0f),
29 big_mode_(gfx::Size(2560, 1600), false, 60.0f) {
30 displays_[0] = display::FakeDisplaySnapshot::Builder()
31 .SetId(123)
32 .SetNativeMode(small_mode_.Clone())
33 .SetCurrentMode(small_mode_.Clone())
34 .Build();
35
36 displays_[1] = display::FakeDisplaySnapshot::Builder()
37 .SetId(456)
38 .SetNativeMode(big_mode_.Clone())
39 .SetCurrentMode(big_mode_.Clone())
40 .AddMode(small_mode_.Clone())
41 .Build();
42 }
43 ~ConfigureDisplaysTaskTest() override {}
44
45 void ConfigureCallback(ConfigureDisplaysTask::Status status) {
46 callback_called_ = true;
47 status_ = status;
48 }
49
50 protected:
51 base::MessageLoop message_loop_;
52 ActionLogger log_;
53 TestNativeDisplayDelegate delegate_;
54
55 bool callback_called_;
56 ConfigureDisplaysTask::Status status_;
57
58 const DisplayMode small_mode_;
59 const DisplayMode big_mode_;
60
61 std::unique_ptr<DisplaySnapshot> displays_[2];
62
63 private:
64 DISALLOW_COPY_AND_ASSIGN(ConfigureDisplaysTaskTest);
65 };
66
67 } // namespace
68
69 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithNoDisplays) {
70 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
71 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
72
73 ConfigureDisplaysTask task(&delegate_, std::vector<DisplayConfigureRequest>(),
74 callback);
75
76 task.Run();
77
78 EXPECT_TRUE(callback_called_);
79 EXPECT_EQ(ConfigureDisplaysTask::SUCCESS, status_);
80 EXPECT_EQ(kNoActions, log_.GetActionsAndClear());
81 }
82
83 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithOneDisplay) {
84 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
85 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
86
87 std::vector<DisplayConfigureRequest> requests(
88 1,
89 DisplayConfigureRequest(displays_[0].get(), &small_mode_, gfx::Point()));
90 ConfigureDisplaysTask task(&delegate_, requests, callback);
91 task.Run();
92
93 EXPECT_TRUE(callback_called_);
94 EXPECT_EQ(ConfigureDisplaysTask::SUCCESS, status_);
95 EXPECT_EQ(GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()),
96 log_.GetActionsAndClear());
97 }
98
99 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithTwoDisplay) {
100 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
101 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
102
103 std::vector<DisplayConfigureRequest> requests;
104 for (size_t i = 0; i < arraysize(displays_); ++i) {
105 requests.push_back(DisplayConfigureRequest(
106 displays_[i].get(), displays_[i]->native_mode(), gfx::Point()));
107 }
108
109 ConfigureDisplaysTask task(&delegate_, requests, callback);
110 task.Run();
111
112 EXPECT_TRUE(callback_called_);
113 EXPECT_EQ(ConfigureDisplaysTask::SUCCESS, status_);
114 EXPECT_EQ(
115 JoinActions(
116 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(),
117 GetCrtcAction(*displays_[1], &big_mode_, gfx::Point()).c_str(),
118 nullptr),
119 log_.GetActionsAndClear());
120 }
121
122 TEST_F(ConfigureDisplaysTaskTest, DisableDisplayFails) {
123 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
124 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
125
126 delegate_.set_max_configurable_pixels(1);
127
128 std::vector<DisplayConfigureRequest> requests(
129 1, DisplayConfigureRequest(displays_[0].get(), nullptr, gfx::Point()));
130 ConfigureDisplaysTask task(&delegate_, requests, callback);
131 task.Run();
132
133 EXPECT_TRUE(callback_called_);
134 EXPECT_EQ(ConfigureDisplaysTask::ERROR, status_);
135 EXPECT_EQ(
136 JoinActions(GetCrtcAction(*displays_[0], nullptr, gfx::Point()).c_str(),
137 nullptr),
138 log_.GetActionsAndClear());
139 }
140
141 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithOneDisplayFails) {
142 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
143 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
144
145 delegate_.set_max_configurable_pixels(1);
146
147 std::vector<DisplayConfigureRequest> requests(
148 1, DisplayConfigureRequest(displays_[1].get(), &big_mode_, gfx::Point()));
149 ConfigureDisplaysTask task(&delegate_, requests, callback);
150 task.Run();
151
152 EXPECT_TRUE(callback_called_);
153 EXPECT_EQ(ConfigureDisplaysTask::ERROR, status_);
154 EXPECT_EQ(
155 JoinActions(
156 GetCrtcAction(*displays_[1], &big_mode_, gfx::Point()).c_str(),
157 GetCrtcAction(*displays_[1], &small_mode_, gfx::Point()).c_str(),
158 nullptr),
159 log_.GetActionsAndClear());
160 }
161
162 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithTwoDisplayFails) {
163 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
164 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
165
166 delegate_.set_max_configurable_pixels(1);
167
168 std::vector<DisplayConfigureRequest> requests;
169 for (size_t i = 0; i < arraysize(displays_); ++i) {
170 requests.push_back(DisplayConfigureRequest(
171 displays_[i].get(), displays_[i]->native_mode(), gfx::Point()));
172 }
173
174 ConfigureDisplaysTask task(&delegate_, requests, callback);
175 task.Run();
176
177 EXPECT_TRUE(callback_called_);
178 EXPECT_EQ(ConfigureDisplaysTask::ERROR, status_);
179 EXPECT_EQ(
180 JoinActions(
181 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(),
182 GetCrtcAction(*displays_[1], &big_mode_, gfx::Point()).c_str(),
183 GetCrtcAction(*displays_[1], &small_mode_, gfx::Point()).c_str(),
184 nullptr),
185 log_.GetActionsAndClear());
186 }
187
188 TEST_F(ConfigureDisplaysTaskTest, ConfigureWithTwoDisplaysPartialSuccess) {
189 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
190 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
191
192 delegate_.set_max_configurable_pixels(small_mode_.size().GetArea());
193
194 std::vector<DisplayConfigureRequest> requests;
195 for (size_t i = 0; i < arraysize(displays_); ++i) {
196 requests.push_back(DisplayConfigureRequest(
197 displays_[i].get(), displays_[i]->native_mode(), gfx::Point()));
198 }
199
200 ConfigureDisplaysTask task(&delegate_, requests, callback);
201 task.Run();
202
203 EXPECT_TRUE(callback_called_);
204 EXPECT_EQ(ConfigureDisplaysTask::PARTIAL_SUCCESS, status_);
205 EXPECT_EQ(
206 JoinActions(
207 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(),
208 GetCrtcAction(*displays_[1], &big_mode_, gfx::Point()).c_str(),
209 GetCrtcAction(*displays_[1], &small_mode_, gfx::Point()).c_str(),
210 nullptr),
211 log_.GetActionsAndClear());
212 }
213
214 TEST_F(ConfigureDisplaysTaskTest, AsyncConfigureWithTwoDisplaysPartialSuccess) {
215 ConfigureDisplaysTask::ResponseCallback callback = base::Bind(
216 &ConfigureDisplaysTaskTest::ConfigureCallback, base::Unretained(this));
217
218 delegate_.set_run_async(true);
219 delegate_.set_max_configurable_pixels(small_mode_.size().GetArea());
220
221 std::vector<DisplayConfigureRequest> requests;
222 for (size_t i = 0; i < arraysize(displays_); ++i) {
223 requests.push_back(DisplayConfigureRequest(
224 displays_[i].get(), displays_[i]->native_mode(), gfx::Point()));
225 }
226
227 ConfigureDisplaysTask task(&delegate_, requests, callback);
228 task.Run();
229
230 EXPECT_FALSE(callback_called_);
231 base::RunLoop().RunUntilIdle();
232
233 EXPECT_TRUE(callback_called_);
234 EXPECT_EQ(ConfigureDisplaysTask::PARTIAL_SUCCESS, status_);
235 EXPECT_EQ(
236 JoinActions(
237 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(),
238 GetCrtcAction(*displays_[1], &big_mode_, gfx::Point()).c_str(),
239 GetCrtcAction(*displays_[1], &small_mode_, gfx::Point()).c_str(),
240 nullptr),
241 log_.GetActionsAndClear());
242 }
243
244 } // namespace test
245 } // namespace ui
OLDNEW
« no previous file with comments | « ui/display/chromeos/configure_displays_task.cc ('k') | ui/display/chromeos/display_configurator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698