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