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 10namespace views { 11class View; 12class Widget; 13} 14 15namespace chromeos { 16 17// This is the interface which lock windows used for the WebUI screen locker 18// implement. 19class 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