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_LOCK_WINDOW_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WINDOW_H_ 7 8 #include "base/basictypes.h" 9 10 namespace views { 11 class Widget; 12 } 13 14 namespace chromeos { 15 16 // This is the interface which lock windows used for the WebUI screen locker 17 // implement. 18 class LockWindow { 19 public: 20 // This class provides an interface for the lock window to notify an observer 21 // about its status. 22 class Observer { 23 public: 24 // This method will be called when the lock window has finished all 25 // initialization. 26 virtual void OnLockWindowReady() = 0; 27 }; 28 29 LockWindow(); 30 31 // Attempt to grab inputs on the webview, the actual view displaying the lock 32 // screen WebView. 33 virtual void Grab() = 0; 34 35 // Returns the actual widget for the lock window. 36 virtual views::Widget* GetWidget() = 0; 37 38 // Sets the observer class which is notified on lock window events. 39 void set_observer(Observer* observer) { 40 observer_ = observer; 41 } 42 43 // Creates an instance of the platform specific lock window. 44 static LockWindow* Create(); 45 46 protected: 47 // The observer's OnLockWindowReady method will be called when the lock 48 // window has finished all initialization. 49 Observer* observer_; 50 51 DISALLOW_COPY_AND_ASSIGN(LockWindow); 52 }; 53 54 } // namespace chromeos 55 56 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WINDOW_H_ 57