oobe_screen_waiter.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_OOBE_SCREEN_WAITER_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_OOBE_SCREEN_WAITER_H_
7
8#include "base/basictypes.h"
9#include "chrome/browser/chromeos/login/oobe_display.h"
10#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
11
12namespace content {
13class MessageLoopRunner;
14}
15
16namespace chromeos {
17
18// A waiter that blocks until the expected oobe screen is reached.
19class OobeScreenWaiter : public OobeUI::Observer {
20 public:
21  explicit OobeScreenWaiter(OobeDisplay::Screen expected_screen);
22  virtual ~OobeScreenWaiter();
23
24  // Run message loop to wait for the expected_screen.
25  void Wait();
26
27  // Similar to Wait() but does not assert the current screen is
28  // expected_screen on exit. Use this when there are multiple screen changes
29  // during the wait and the screen to be waited is not the final one.
30  void WaitNoAssertCurrentScreen();
31
32  // OobeUI::Observer implementation:
33  virtual void OnCurrentScreenChanged(
34        OobeDisplay::Screen current_screen,
35        OobeDisplay::Screen new_screen) OVERRIDE;
36
37 private:
38  OobeUI* GetOobeUI();
39
40  bool waiting_for_screen_;
41  OobeDisplay::Screen expected_screen_;
42  scoped_refptr<content::MessageLoopRunner> runner_;
43
44  DISALLOW_COPY_AND_ASSIGN(OobeScreenWaiter);
45};
46
47}  // namespace chromeos
48
49#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_OOBE_SCREEN_WAITER_H_
50