1// Copyright (c) 2011 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_SCREEN_LOCKER_TESTER_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREEN_LOCKER_TESTER_H_ 7#pragma once 8 9#include <string> 10 11#include "base/basictypes.h" 12 13namespace views { 14class Button; 15class Textfield; 16class Widget; 17} // namespace views 18 19namespace chromeos { 20 21class ScreenLocker; 22 23namespace test { 24 25// ScreenLockerTester provides access to the private state/function 26// of ScreenLocker class. Used to implement unit tests. 27class ScreenLockerTester { 28 public: 29 // Returns true if the screen is locked. 30 bool IsLocked(); 31 32 // Injects MockAuthenticate that uses given |user| and |password|. 33 void InjectMockAuthenticator(const std::string& user, 34 const std::string& password); 35 36 // Sets the password text. 37 void SetPassword(const std::string& password); 38 39 // Gets the password text. 40 std::string GetPassword() const; 41 42 // Emulates entring a password. 43 void EnterPassword(const std::string& password); 44 45 // Emulates the ready message from window manager. 46 void EmulateWindowManagerReady(); 47 48 // Returns the widget for screen locker window. 49 views::Widget* GetWidget() const; 50 51 views::Widget* GetChildWidget() const; 52 53 private: 54 friend class chromeos::ScreenLocker; 55 56 ScreenLockerTester() {} 57 58 views::Textfield* GetPasswordField() const; 59 60 DISALLOW_COPY_AND_ASSIGN(ScreenLockerTester); 61}; 62 63} // namespace test 64 65} // namespace chromeos 66 67#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREEN_LOCKER_TESTER_H_ 68