OLD | NEW |
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 "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" | 5 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" |
6 | 6 |
7 #include "chrome/browser/chromeos/login/login_display_host_impl.h" | 7 #include "chrome/browser/chromeos/login/login_display_host_impl.h" |
8 #include "content/public/test/test_utils.h" | 8 #include "content/public/test/test_utils.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 namespace chromeos { | 11 namespace chromeos { |
12 | 12 |
13 OobeScreenWaiter::OobeScreenWaiter(OobeDisplay::Screen expected_screen) | 13 OobeScreenWaiter::OobeScreenWaiter(OobeDisplay::Screen expected_screen) |
14 : waiting_for_screen_(false), | 14 : waiting_for_screen_(false), |
15 expected_screen_(expected_screen) { | 15 expected_screen_(expected_screen) { |
16 } | 16 } |
17 | 17 |
18 OobeScreenWaiter::~OobeScreenWaiter() { | 18 OobeScreenWaiter::~OobeScreenWaiter() { |
19 if (waiting_for_screen_) { | 19 if (waiting_for_screen_) { |
20 GetOobeUI()->RemoveObserver(this); | 20 GetOobeUI()->RemoveObserver(this); |
21 } | 21 } |
22 } | 22 } |
23 | 23 |
24 void OobeScreenWaiter::Wait() { | 24 void OobeScreenWaiter::Wait() { |
25 if (GetOobeUI()->current_screen() == expected_screen_) { | 25 WaitNoAssertCurrentScreen(); |
| 26 |
| 27 ASSERT_EQ(expected_screen_, GetOobeUI()->current_screen()); |
| 28 } |
| 29 |
| 30 void OobeScreenWaiter::WaitNoAssertCurrentScreen() { |
| 31 if (GetOobeUI()->current_screen() == expected_screen_) |
26 return; | 32 return; |
27 } | |
28 | 33 |
29 waiting_for_screen_ = true; | 34 waiting_for_screen_ = true; |
30 GetOobeUI()->AddObserver(this); | 35 GetOobeUI()->AddObserver(this); |
31 | 36 |
32 runner_ = new content::MessageLoopRunner; | 37 runner_ = new content::MessageLoopRunner; |
33 runner_->Run(); | 38 runner_->Run(); |
34 ASSERT_EQ(expected_screen_, GetOobeUI()->current_screen()); | |
35 ASSERT_FALSE(waiting_for_screen_); | 39 ASSERT_FALSE(waiting_for_screen_); |
36 } | 40 } |
37 | 41 |
38 void OobeScreenWaiter::OnCurrentScreenChanged( | 42 void OobeScreenWaiter::OnCurrentScreenChanged( |
39 OobeDisplay::Screen current_screen, | 43 OobeDisplay::Screen current_screen, |
40 OobeDisplay::Screen new_screen) { | 44 OobeDisplay::Screen new_screen) { |
41 if (waiting_for_screen_ && new_screen == expected_screen_) { | 45 if (waiting_for_screen_ && new_screen == expected_screen_) { |
42 runner_->Quit(); | 46 runner_->Quit(); |
43 waiting_for_screen_ = false; | 47 waiting_for_screen_ = false; |
44 GetOobeUI()->RemoveObserver(this); | 48 GetOobeUI()->RemoveObserver(this); |
45 } | 49 } |
46 } | 50 } |
47 | 51 |
48 OobeUI* OobeScreenWaiter::GetOobeUI() { | 52 OobeUI* OobeScreenWaiter::GetOobeUI() { |
49 OobeUI* oobe_ui = static_cast<chromeos::LoginDisplayHostImpl*>( | 53 OobeUI* oobe_ui = static_cast<chromeos::LoginDisplayHostImpl*>( |
50 chromeos::LoginDisplayHostImpl::default_host())->GetOobeUI(); | 54 chromeos::LoginDisplayHostImpl::default_host())->GetOobeUI(); |
51 CHECK(oobe_ui); | 55 CHECK(oobe_ui); |
52 return oobe_ui; | 56 return oobe_ui; |
53 } | 57 } |
54 | 58 |
55 } // namespace chromeos | 59 } // namespace chromeos |
OLD | NEW |