Home | History | Annotate | Download | only in login
      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