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

Side by Side Diff: ash/display/resolution_notification_controller_unittest.cc

Issue 224113005: Eliminate ash::internal namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/display/resolution_notification_controller.h" 5 #include "ash/display/resolution_notification_controller.h"
6 6
7 #include "ash/display/display_manager.h" 7 #include "ash/display/display_manager.h"
8 #include "ash/screen_util.h" 8 #include "ash/screen_util.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "grit/ash_strings.h" 13 #include "grit/ash_strings.h"
14 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
15 #include "ui/gfx/size.h" 15 #include "ui/gfx/size.h"
16 #include "ui/message_center/message_center.h" 16 #include "ui/message_center/message_center.h"
17 #include "ui/message_center/notification.h" 17 #include "ui/message_center/notification.h"
18 #include "ui/message_center/notification_list.h" 18 #include "ui/message_center/notification_list.h"
19 19
20 namespace ash { 20 namespace ash {
21 namespace internal {
22
23 namespace { 21 namespace {
24 22
25 base::string16 ExpectedNotificationMessage(int64 display_id, 23 base::string16 ExpectedNotificationMessage(int64 display_id,
26 const gfx::Size& new_resolution) { 24 const gfx::Size& new_resolution) {
27 return l10n_util::GetStringFUTF16( 25 return l10n_util::GetStringFUTF16(
28 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 26 IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED,
29 base::UTF8ToUTF16( 27 base::UTF8ToUTF16(
30 Shell::GetInstance()->display_manager()->GetDisplayNameForId( 28 Shell::GetInstance()->display_manager()->GetDisplayNameForId(
31 display_id)), 29 display_id)),
32 base::UTF8ToUTF16(new_resolution.ToString())); 30 base::UTF8ToUTF16(new_resolution.ToString()));
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest); 150 DISALLOW_COPY_AND_ASSIGN(ResolutionNotificationControllerTest);
153 }; 151 };
154 152
155 // Basic behaviors and verifies it doesn't cause crashes. 153 // Basic behaviors and verifies it doesn't cause crashes.
156 TEST_F(ResolutionNotificationControllerTest, Basic) { 154 TEST_F(ResolutionNotificationControllerTest, Basic) {
157 if (!SupportsMultipleDisplays()) 155 if (!SupportsMultipleDisplays())
158 return; 156 return;
159 157
160 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60"); 158 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
161 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 159 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
162 ash::internal::DisplayManager* display_manager = 160 ash::DisplayManager* display_manager =
163 ash::Shell::GetInstance()->display_manager(); 161 ash::Shell::GetInstance()->display_manager();
164 ASSERT_EQ(0, accept_count()); 162 ASSERT_EQ(0, accept_count());
165 EXPECT_FALSE(IsNotificationVisible()); 163 EXPECT_FALSE(IsNotificationVisible());
166 164
167 // Changes the resolution and apply the result. 165 // Changes the resolution and apply the result.
168 SetDisplayResolutionAndNotify( 166 SetDisplayResolutionAndNotify(
169 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 167 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
170 EXPECT_TRUE(IsNotificationVisible()); 168 EXPECT_TRUE(IsNotificationVisible());
171 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 169 EXPECT_FALSE(controller()->DoesNotificationTimeout());
172 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)), 170 EXPECT_EQ(ExpectedNotificationMessage(id2, gfx::Size(200, 200)),
(...skipping 12 matching lines...) Expand all
185 EXPECT_EQ("250x250", mode.size.ToString()); 183 EXPECT_EQ("250x250", mode.size.ToString());
186 EXPECT_EQ(59.0, mode.refresh_rate); 184 EXPECT_EQ(59.0, mode.refresh_rate);
187 } 185 }
188 186
189 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) { 187 TEST_F(ResolutionNotificationControllerTest, ClickMeansAccept) {
190 if (!SupportsMultipleDisplays()) 188 if (!SupportsMultipleDisplays())
191 return; 189 return;
192 190
193 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60"); 191 UpdateDisplay("300x300#300x300%57|200x200%58,250x250#250x250%59|200x200%60");
194 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 192 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
195 ash::internal::DisplayManager* display_manager = 193 ash::DisplayManager* display_manager =
196 ash::Shell::GetInstance()->display_manager(); 194 ash::Shell::GetInstance()->display_manager();
197 ASSERT_EQ(0, accept_count()); 195 ASSERT_EQ(0, accept_count());
198 EXPECT_FALSE(IsNotificationVisible()); 196 EXPECT_FALSE(IsNotificationVisible());
199 197
200 // Changes the resolution and apply the result. 198 // Changes the resolution and apply the result.
201 SetDisplayResolutionAndNotify( 199 SetDisplayResolutionAndNotify(
202 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 200 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
203 EXPECT_TRUE(IsNotificationVisible()); 201 EXPECT_TRUE(IsNotificationVisible());
204 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 202 EXPECT_FALSE(controller()->DoesNotificationTimeout());
205 DisplayMode mode; 203 DisplayMode mode;
206 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode)); 204 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode));
207 EXPECT_EQ("200x200", mode.size.ToString()); 205 EXPECT_EQ("200x200", mode.size.ToString());
208 EXPECT_EQ(60.0, mode.refresh_rate); 206 EXPECT_EQ(60.0, mode.refresh_rate);
209 207
210 // Click the revert button, which reverts the resolution. 208 // Click the revert button, which reverts the resolution.
211 ClickOnNotification(); 209 ClickOnNotification();
212 RunAllPendingInMessageLoop(); 210 RunAllPendingInMessageLoop();
213 EXPECT_FALSE(IsNotificationVisible()); 211 EXPECT_FALSE(IsNotificationVisible());
214 EXPECT_EQ(1, accept_count()); 212 EXPECT_EQ(1, accept_count());
215 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode)); 213 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode));
216 EXPECT_EQ("200x200", mode.size.ToString()); 214 EXPECT_EQ("200x200", mode.size.ToString());
217 EXPECT_EQ(60.0, mode.refresh_rate); 215 EXPECT_EQ(60.0, mode.refresh_rate);
218 } 216 }
219 217
220 TEST_F(ResolutionNotificationControllerTest, AcceptButton) { 218 TEST_F(ResolutionNotificationControllerTest, AcceptButton) {
221 if (!SupportsMultipleDisplays()) 219 if (!SupportsMultipleDisplays())
222 return; 220 return;
223 221
224 ash::internal::DisplayManager* display_manager = 222 ash::DisplayManager* display_manager =
225 ash::Shell::GetInstance()->display_manager(); 223 ash::Shell::GetInstance()->display_manager();
226 224
227 UpdateDisplay("300x300#300x300%59|200x200%60"); 225 UpdateDisplay("300x300#300x300%59|200x200%60");
228 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay(); 226 const gfx::Display& display = ash::Shell::GetScreen()->GetPrimaryDisplay();
229 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 227 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
230 EXPECT_TRUE(IsNotificationVisible()); 228 EXPECT_TRUE(IsNotificationVisible());
231 229
232 // If there's a single display only, it will have timeout and the first button 230 // If there's a single display only, it will have timeout and the first button
233 // becomes accept. 231 // becomes accept.
234 EXPECT_TRUE(controller()->DoesNotificationTimeout()); 232 EXPECT_TRUE(controller()->DoesNotificationTimeout());
(...skipping 20 matching lines...) Expand all
255 EXPECT_EQ("300x300", mode.size.ToString()); 253 EXPECT_EQ("300x300", mode.size.ToString());
256 EXPECT_EQ(59.0f, mode.refresh_rate); 254 EXPECT_EQ(59.0f, mode.refresh_rate);
257 } 255 }
258 256
259 TEST_F(ResolutionNotificationControllerTest, Close) { 257 TEST_F(ResolutionNotificationControllerTest, Close) {
260 if (!SupportsMultipleDisplays()) 258 if (!SupportsMultipleDisplays())
261 return; 259 return;
262 260
263 UpdateDisplay("100x100,150x150#150x150%59|200x200%60"); 261 UpdateDisplay("100x100,150x150#150x150%59|200x200%60");
264 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 262 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
265 ash::internal::DisplayManager* display_manager = 263 ash::DisplayManager* display_manager =
266 ash::Shell::GetInstance()->display_manager(); 264 ash::Shell::GetInstance()->display_manager();
267 ASSERT_EQ(0, accept_count()); 265 ASSERT_EQ(0, accept_count());
268 EXPECT_FALSE(IsNotificationVisible()); 266 EXPECT_FALSE(IsNotificationVisible());
269 267
270 // Changes the resolution and apply the result. 268 // Changes the resolution and apply the result.
271 SetDisplayResolutionAndNotify( 269 SetDisplayResolutionAndNotify(
272 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 270 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
273 EXPECT_TRUE(IsNotificationVisible()); 271 EXPECT_TRUE(IsNotificationVisible());
274 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 272 EXPECT_FALSE(controller()->DoesNotificationTimeout());
275 DisplayMode mode; 273 DisplayMode mode;
(...skipping 18 matching lines...) Expand all
294 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200)); 292 SetDisplayResolutionAndNotify(display, gfx::Size(200, 200));
295 293
296 for (int i = 0; i < ResolutionNotificationController::kTimeoutInSec; ++i) { 294 for (int i = 0; i < ResolutionNotificationController::kTimeoutInSec; ++i) {
297 EXPECT_TRUE(IsNotificationVisible()) << "notification is closed after " 295 EXPECT_TRUE(IsNotificationVisible()) << "notification is closed after "
298 << i << "-th timer tick"; 296 << i << "-th timer tick";
299 TickTimer(); 297 TickTimer();
300 RunAllPendingInMessageLoop(); 298 RunAllPendingInMessageLoop();
301 } 299 }
302 EXPECT_FALSE(IsNotificationVisible()); 300 EXPECT_FALSE(IsNotificationVisible());
303 EXPECT_EQ(0, accept_count()); 301 EXPECT_EQ(0, accept_count());
304 ash::internal::DisplayManager* display_manager = 302 ash::DisplayManager* display_manager =
305 ash::Shell::GetInstance()->display_manager(); 303 ash::Shell::GetInstance()->display_manager();
306 DisplayMode mode; 304 DisplayMode mode;
307 EXPECT_TRUE( 305 EXPECT_TRUE(
308 display_manager->GetSelectedModeForDisplayId(display.id(), &mode)); 306 display_manager->GetSelectedModeForDisplayId(display.id(), &mode));
309 EXPECT_EQ("300x300", mode.size.ToString()); 307 EXPECT_EQ("300x300", mode.size.ToString());
310 EXPECT_EQ(59.0f, mode.refresh_rate); 308 EXPECT_EQ(59.0f, mode.refresh_rate);
311 } 309 }
312 310
313 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) { 311 TEST_F(ResolutionNotificationControllerTest, DisplayDisconnected) {
314 if (!SupportsMultipleDisplays()) 312 if (!SupportsMultipleDisplays())
315 return; 313 return;
316 314
317 UpdateDisplay("300x300#300x300%56|200x200%57," 315 UpdateDisplay("300x300#300x300%56|200x200%57,"
318 "200x200#250x250%58|200x200%59|100x100%60"); 316 "200x200#250x250%58|200x200%59|100x100%60");
319 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 317 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
320 ash::internal::DisplayManager* display_manager = 318 ash::DisplayManager* display_manager =
321 ash::Shell::GetInstance()->display_manager(); 319 ash::Shell::GetInstance()->display_manager();
322 SetDisplayResolutionAndNotify( 320 SetDisplayResolutionAndNotify(
323 ScreenUtil::GetSecondaryDisplay(), gfx::Size(100, 100)); 321 ScreenUtil::GetSecondaryDisplay(), gfx::Size(100, 100));
324 ASSERT_TRUE(IsNotificationVisible()); 322 ASSERT_TRUE(IsNotificationVisible());
325 323
326 // Disconnects the secondary display and verifies it doesn't cause crashes. 324 // Disconnects the secondary display and verifies it doesn't cause crashes.
327 UpdateDisplay("300x300#300x300%56|200x200%57"); 325 UpdateDisplay("300x300#300x300%56|200x200%57");
328 RunAllPendingInMessageLoop(); 326 RunAllPendingInMessageLoop();
329 EXPECT_FALSE(IsNotificationVisible()); 327 EXPECT_FALSE(IsNotificationVisible());
330 EXPECT_EQ(0, accept_count()); 328 EXPECT_EQ(0, accept_count());
331 DisplayMode mode; 329 DisplayMode mode;
332 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode)); 330 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode));
333 gfx::Size resolution; 331 gfx::Size resolution;
334 EXPECT_EQ("200x200", mode.size.ToString()); 332 EXPECT_EQ("200x200", mode.size.ToString());
335 EXPECT_EQ(59.0f, mode.refresh_rate); 333 EXPECT_EQ(59.0f, mode.refresh_rate);
336 } 334 }
337 335
338 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) { 336 TEST_F(ResolutionNotificationControllerTest, MultipleResolutionChange) {
339 if (!SupportsMultipleDisplays()) 337 if (!SupportsMultipleDisplays())
340 return; 338 return;
341 339
342 UpdateDisplay("300x300#300x300%56|200x200%57," 340 UpdateDisplay("300x300#300x300%56|200x200%57,"
343 "250x250#250x250%58|200x200%59"); 341 "250x250#250x250%58|200x200%59");
344 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 342 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
345 ash::internal::DisplayManager* display_manager = 343 ash::DisplayManager* display_manager =
346 ash::Shell::GetInstance()->display_manager(); 344 ash::Shell::GetInstance()->display_manager();
347 345
348 SetDisplayResolutionAndNotify( 346 SetDisplayResolutionAndNotify(
349 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200)); 347 ScreenUtil::GetSecondaryDisplay(), gfx::Size(200, 200));
350 EXPECT_TRUE(IsNotificationVisible()); 348 EXPECT_TRUE(IsNotificationVisible());
351 EXPECT_FALSE(controller()->DoesNotificationTimeout()); 349 EXPECT_FALSE(controller()->DoesNotificationTimeout());
352 DisplayMode mode; 350 DisplayMode mode;
353 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode)); 351 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode));
354 EXPECT_EQ("200x200", mode.size.ToString()); 352 EXPECT_EQ("200x200", mode.size.ToString());
355 EXPECT_EQ(59.0f, mode.refresh_rate); 353 EXPECT_EQ(59.0f, mode.refresh_rate);
(...skipping 18 matching lines...) Expand all
374 EXPECT_EQ(58.0f, mode.refresh_rate); 372 EXPECT_EQ(58.0f, mode.refresh_rate);
375 } 373 }
376 374
377 TEST_F(ResolutionNotificationControllerTest, Fallback) { 375 TEST_F(ResolutionNotificationControllerTest, Fallback) {
378 if (!SupportsMultipleDisplays()) 376 if (!SupportsMultipleDisplays())
379 return; 377 return;
380 378
381 UpdateDisplay("300x300#300x300%56|200x200%57," 379 UpdateDisplay("300x300#300x300%56|200x200%57,"
382 "250x250#250x250%58|220x220%59|200x200%60"); 380 "250x250#250x250%58|220x220%59|200x200%60");
383 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 381 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
384 ash::internal::DisplayManager* display_manager = 382 ash::DisplayManager* display_manager =
385 ash::Shell::GetInstance()->display_manager(); 383 ash::Shell::GetInstance()->display_manager();
386 ASSERT_EQ(0, accept_count()); 384 ASSERT_EQ(0, accept_count());
387 EXPECT_FALSE(IsNotificationVisible()); 385 EXPECT_FALSE(IsNotificationVisible());
388 386
389 // Changes the resolution and apply the result. 387 // Changes the resolution and apply the result.
390 SetDisplayResolutionAndNotifyWithResolution( 388 SetDisplayResolutionAndNotifyWithResolution(
391 ScreenUtil::GetSecondaryDisplay(), 389 ScreenUtil::GetSecondaryDisplay(),
392 gfx::Size(220, 220), 390 gfx::Size(220, 220),
393 gfx::Size(200, 200)); 391 gfx::Size(200, 200));
394 EXPECT_TRUE(IsNotificationVisible()); 392 EXPECT_TRUE(IsNotificationVisible());
(...skipping 10 matching lines...) Expand all
405 // Click the revert button, which reverts to the best resolution. 403 // Click the revert button, which reverts to the best resolution.
406 ClickOnNotificationButton(0); 404 ClickOnNotificationButton(0);
407 RunAllPendingInMessageLoop(); 405 RunAllPendingInMessageLoop();
408 EXPECT_FALSE(IsNotificationVisible()); 406 EXPECT_FALSE(IsNotificationVisible());
409 EXPECT_EQ(0, accept_count()); 407 EXPECT_EQ(0, accept_count());
410 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode)); 408 EXPECT_TRUE(display_manager->GetSelectedModeForDisplayId(id2, &mode));
411 EXPECT_EQ("250x250", mode.size.ToString()); 409 EXPECT_EQ("250x250", mode.size.ToString());
412 EXPECT_EQ(58.0f, mode.refresh_rate); 410 EXPECT_EQ(58.0f, mode.refresh_rate);
413 } 411 }
414 412
415 } // namespace internal
416 } // namespace ash 413 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/resolution_notification_controller.cc ('k') | ash/display/root_window_transformers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698