- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / lock_window.h
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_