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