oobe_screen_waiter.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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 48} // namespace chromeos 49 50#endif // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_OOBE_SCREEN_WAITER_H_ 51